栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

iverilog搭建简易仿真平台

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

iverilog搭建简易仿真平台

iverilog搭建简易仿真平台

对于xsim和modelsim这种仿真测试平台,对操作系统要求过于严格,为了实现远程verilog编译仿真调试,我选择了linux+iverilog+gtkwave来搭建一个lite版的Verilog仿真环境。

由于之前对树莓派做了内网穿透,大致目标是在树莓派上搭建相应环境,通过iverilog编译生成仿真执行文件,运行后将得到的波形数据通过ssh X11转发到远程,即可查看生成波型。但树莓派的X11转发始终没有成功,初步怀疑是ssh远程时xorg服务没有默认输出显示器。由于最近时间较紧,只好取折中办法,通过远程到树莓派vnc服务器,从而在vnc界面上打开gtkwave。

软件安装

Debian环境安装

sudo apt install iverilog
sudo apt install gtkwave

安装完成之后可以上手

选取一个之前写好的vga显示程序

修改testbench文件:

在initial块插入如下代码:

    $dumpfile("tb.vcd");
    $dumpvars(0, tb_vga);

dumpfile表示写入波形的文件(这里注意文件扩展名,否则gtkwave不支持)

dumpvars设置指定层次数为0,即为tb_vga顶层模块及其下面各层次的所有信号将被记录

`timescale 1ns / 1ps
module tb_vga();
reg              clk;
reg              rst_n;
wire             u_vga_hs;
wire             u_vga_vs;
wire [11:0]            u_vga_rgb;

vga_board u_vga_board(
    .clk(clk),
    .rst_n(rst_n),
    .vga_hs(u_vga_hs),
    .vga_vs(u_vga_vs),
    .vga_rgb(u_vga_rgb)
);
    

always #5 clk = ~clk;

initial begin 
    $dumpfile("tb.vcd");
    $dumpvars(0, tb_vga);
    rst_n = 1;
    clk = 1;
    #100;
    rst_n = 0;
    #100;
    rst_n = 1;    
end
endmodule

iverilog执行

-y:指定绝对路径

后接空格,指定仿真文件(不得绝对路径后跟testbench文件)

iverilog -y ~/iverilog/iverilog_module/module/vga/ tb_vga.v 

如果不指明编译文件名称,则会自动生成一个a.out文件(这一点和gcc编译方式很像)

执行文件

➜  vga git:(master) ✗ ./a.out                                                       
VCD info: dumpfile tb.vcd opened for output.

需要终止仿真则ctrl+c

➜  vga git:(master) ✗ ./a.out
VCD info: dumpfile tb.vcd opened for output.
^C** VVP Stop(0) **
** Flushing output streams.
** Current simulation time is 2364130000 ticks.
> 

等待下一步指示

可选命令如下:

Commands can be from the following table of base commands,
or can be invocations of system tasks/functions.

cd       - Synonym for push.
cont     - Resume (continue) the simulation
finish   - Finish the simulation.
help     - Get help.
list     - List items in the current scope.
load     - Load a VPI module, a la vvp -m.
ls       - Shorthand for "list".
pop      - Pop one scope from the scope stack.
push     - Descend into the named scope.
step     - Single-step the scheduler for 1 event.
time     - Print the current simulation time.
trace    - Control statement tracing (on/off) when the code is instrumented.
where    - Show current scope, and scope hierarchy stack.

If the command name starts with a '$' character, it
is taken to be the name of a system task, and a call is
built up and executed.

直接finish结束仿真

远程vnc到服务器

➜  ~ gtkwave ~/verilog_project/module/vga/tb.vcd

即可通过gtkwave查看波形。

测试后,对于大型文件,仿真速度还是差点意思,但是作为四年前的arm芯片,不做过多要求。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/511766.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号