第二课
UCLI
- VCS Debugging Support
三种方式:1.System Task Call 2.VCS UCLI 3.VCS DVE(GUI)
DVE用的情况较多,但现在用的更多的是verdi,verdi不用做编译和仿真,只用作debug。
四个需要考虑的因素:
1.simulation speed
取决于电脑本身的性能,代码的质量,开关选项以及仿真的级别。一般来说仿真速度是行为级>RTL级>网表
2.signal visibility 第二点与第三点相辅相成
3.signal tractability
4.usability UCLI命令行的可用性比DVE要差一些
**$time显示的是仿真时间不是系统时间
**$readmemh,readmemb指在用到存储单元(如RAM、ROM、FIFO)时,若要初始化大量数组,可以将初始化的数据放到文件当中,利用系统函数$readmemh,readmemb把文件里的数据读入存储单元中。readmdmh读取16进制文件,readmemb读取二进制文件,其它用法完全相同。
- Compile and invoke UCLI debugger
$vcs source.v -debug/debug_all -R -ucli
几个debug选项的区别:-debug只打开一部分开关;-debug_pp保证打开足够多开关的情况下,性能保持最好,对仿真影响最小;debug_all打开所有开关。
-l log_filename; -i input_filename; -k key_filename
- Probelms in simulation
如果写出延迟为0的循环则有可能陷入死循环,此时按ctrl+c可以强制退出仿真,也可以找出进程号(PID),使用 "kill PID" 关闭程序。
建议:开发过程中在循环语句里插入$display信息,可以帮助判断循环进程。
DVE
- 模式介绍
软件本身自带的参考文件:
两种模式:(1)Interactive 实时 (2)post-simulation analysis 后处理
图形界面可以通过右键调出菜单,也可以拖拽。
两种以Interactive模式打开dve的方式:
$vcs source.v -R -gui -debug_all
$simv -gui
以Post-Process Mode打开dve:
$dve &
$dve -vpd <filename>
打开database(后缀为vcd/vpd)即可以查看波形文件,波形文件一般会比较大。
补充:Verdi的波形文件以fsdb为后缀。
- 操作介绍
step icon在遇到task或者function的时候会进入模块中一条一条执行,但是next icon会直接将task和function语句当作一条完整的语句执行。
查找功能:
比较功能:
*delta cycle; list window
打开断言(assertion)的选项:-debug -assert dve
C文件编译选项:-g ;PLI Call:$ZeroMinder(hour_sig,min_sig,sec_sig);
verilog的缺点在于没有数据结构或者说缺少复杂的数据结构(例如二叉树),因此有些复杂的数据结构模型就需要利用DPI或PLI界面调用C语言。
追踪功能:
- 实际操作
波形界面中调试状态机时,可以用“State Name”以状态名显示波形
可以使用搜索功能,搜索某一个信号是否出现了特定值
***DPI/PLI接口
先写一个简单的C程序
然后在verilog中通过DPI接口调用这个文件
编译时需要将 -sverilog 的选项打开