1、基础知识
使用命令行进行debug。
使用VCS进行debug的三种方式:专门做debug的工具目前最好的是Verdi
1、系统函数的调用
2、通过命令行的方式
3、使用DVE(GUI)
debug需要注意的因素:
1、仿真速度(开关选项(command_time\run_time)打开越多,越消耗资源,仿真速度越慢)
2、信号可视性,便于观察分析
3、信号可追踪性,便于后期对错误的定位等等
4、可用性
调用系统函数进行debug:
使用示例:
-ucli :表示使用命令行进行仿真,但是建议使用DVE,因为有GUI便于观察,舒服。
-debug \ -debug_all \ -debug_pp :debug只打开部分的开关选项,debug_all打开全部使用到的开关选项,debug_pp是在不影响性能的情况下打开必要的开关项,仿真速度应该是最快的,效果也比较不错。
代码中的$stop相当于一个断点。
怎样退出零延时的死循环:ctrl+c
或者实在不行只能杀死进程:kill+进程号
并且建议在变量中使用$display来打印信息,这样可以观察到哪里进入了死循环。如下
在interactive模式下,编译和运行:
在post-process模式下,编译和运行:
注意:
当命令行前出现了$符号时,表明此时处于普通用户模式;出现#号,说明处在管理员模式
DVE中相关图标含义操作:
verilog中调用C语言:
C语言程序
verilog中调用:
调用task是,编译器默认task中的变量是动态的,无法显示,可以通过$display()函数进行显示
编译执行过程以及显示结果: