课前回顾
仿真事件队列指的是计算机按照一定的顺序执行我们的代码,设计工程师知道一些有关概念,出现了错误能够理解
VCS是一个编译型的仿真器,编译得到了二进制可执行文件
1.VCS的Debug
PPT1 课程目标
Unit Objectives
After completing this unit, you should be able to:
- Describe three methods of debugging Verilog code using VCS
- Invoke UCLI debugger
- Debug Verilog designs using UCLI
PPT2 VCS Debug Support
专业的Debug工具 Verdi(Linux) Debusy(Windows)
开始关注的功能,工程的时候要考虑
- 速度(开关选项会影响,消耗波形资源,什么级别的仿真,速度上:行为级>RTL级>门级)
- 可见性和可追踪性(医生询问病人,咨询问题,根据回答定位问题出在哪儿)
- 可用性, 命令行去Debug比较麻烦,DVE比较方便
PPT3 Debug系统函数
- display是赋值前的值,monitor是赋值后的值,在的不同区,前者在active区,后者在monitor区
- time是仿真的时间,仿真时间和CPU执行时间
- readmemh读RAM 读ROM 读FIFO,等效为一个数组,将初始化的数据写在一个文件里,读取16进制. readmemb读取二进制的
PPT4 嵌入系统函数
包括DUT, DUT的例化,监视输出信号,激励的生成,结果的验证,完成测试(finish,stop)
- stop相当于一个断点,点run继续往下跑
- finish相当于仿真已经结束
2.通过命令行(不推荐)
PPT1
PPT2 编译调用UCLI Debug
$vcs sorce.v -debug|debug_all|debug_pp -R -ucli # 一步走
# 其他的
VCS的安装目录下有相应的手册
PPT3
PPT4
老的命令和新的命令的对比
PPT5
PPT6 使用UCLI的例子
总结:这样的方法太笨拙了
3.仿真时出现的问题
PPT1
出现卡死 杀死进程,发现卡死的仿真时间和对应的代码
编译时候加上`debug-all`选项