VCS课时2:VCS的Debug和UCLI

时间:2024-03-17 16:19:01

课前回顾

仿真事件队列指的是计算机按照一定的顺序执行我们的代码,设计工程师知道一些有关概念,出现了错误能够理解

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系统函数

  1. display是赋值前的值,monitor是赋值后的值,在的不同区,前者在active区,后者在monitor区
  2. time是仿真的时间,仿真时间和CPU执行时间
  3. readmemh读RAM 读ROM 读FIFO,等效为一个数组,将初始化的数据写在一个文件里,读取16进制. readmemb读取二进制的

PPT4 嵌入系统函数

包括DUT, DUT的例化,监视输出信号,激励的生成,结果的验证,完成测试(finish,stop)

  1. stop相当于一个断点,点run继续往下跑
  2. 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`选项

PPT2

4.利用命令行进行仿真的实验