VCS工具

  1. 一、工作过程

参考:

VCS仿真基础

这个专栏还有覆盖率的介绍,可以看看

Code Coverage

Icer_Newer博客园 PS: 也有许多验证的知识分享,虽然大部分知识点重合。

VCS编译选项,网上很多,随便贴几个吧,如下:

VCS常用仿真选项开关及步骤总结

VCS和UVM常用编译选项

一、工作过程

  1. 读取所有的 initial、always 、assgin 等语句,按照空间顺序放在队列里面。首先执行没有延时的语句(如变量的初始化赋值等)
  2. 执行完没有延时的语句之后,将时间 t 设为 0,称之为 current time。
  3. 然后,首先进入 active region。
    在该区域内,VCS执行的操作包括:
    ① 原语(或门、非门、CMOS逻辑、PMOS逻辑、上拉、下拉 …);
    ② $display;
    ③ 不包含任何延时信息的 assgin 语句;
    ④ 阻塞赋值( = );
    ⑤ 非阻塞赋值( <= )只计算右边的表达式,不进行赋值操作
  4. 进入 inactive region
    执行带有 #0 的语句。
    虽然没有延时,但是对于VCS而言,这种语句会比没有使用 # 设置延时的语句的执行时间晚一些。
  5. 进入 Nonblocking assgin region
    对非阻塞赋值语句进行赋值操作
  6. monitor region
    monitor 系统函数是只有在变量发生变化的时候才会执行。
  7. future region
    执行其他语句

仿真事件队列

详细工作流程

(1)将 Verilog/SV 翻译为 C 语言中间文件
(2)将 C 语言文件编译为对象文件(.o)
(3)连接后形成可执行文件

举例说明:

编译过程

针对宏的编译:

针对宏的编译需要加命令


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
github