VCS基础操作

 

VCS是由Synopsys公司开发的,由于其具备全套的功能验证环境,以及出色的内存管理功能,故被广泛应用于工业界。

本文主要介绍怎么对testbench以及待测设计test.v文件进行debug, 并最终得到code coverage的情况。

首先我们会使用vlogan -full64 -sverilog -timescale=1ps/1ps -l comp.log test.v tb_test.v 进行初步编译

  • -full64是指定vcs的版本为64位
  • -sverilog指定编译语言,这里是system verilog,由于system verilog兼容了verilog,所以对于编译verilog文件照样适用
  • -timescale=1ps/1ps:在这里指定模块中的时间单位与时间精度分别位1ps
  • -l comp.log:编译生成的log文件,里面记录了编译过程,包括错误。
  • test.v tb_test.v分别为待测设计test.v与测试用的tb_test.v。

注意:一般是在编译的时候指定timescale,而不是在模块中指定;这里的vlogan过程相当于直接对一些代码中的语法进行检查, 并给出编译错误,但是并未生成任何文件。

然后我们使用vcs -full64 -cm cond+fsm+line+tgl+branch -debug_access+all -l elab.log -sim_res=1ps -top tbModuleName -o tbModuleName.simv 进行进一步编译,并生成.simv文件。

  • -full64 与前面vlogan中的一致
  • -cm cond+fsm+line+tgl+branch 表明在编译的时候会分别检查condition,fsm,line,toggle,branch对于的coverage情况。
  • -debug_access+all 在这里应该是打开vcs里面的所有debug权限
  • -l elab.log 跟上面的-l comp.log一致,都是记录编译过程。
  • -sim_res=1ps 跟前面的timescale使用一致,都是指定时间精度

    For example, if you pass -sim_res=1fs, then the timescale for elab module is “1fs/1fs”. Also, the overall simulator resolution is “1fs”.

注意:这一步的目的是进行模块间的链接性检查,也是一个debug的过程,并且会在生成的.simv文件中包含code coverage的情况。

最后运行通过testbenchModuleName.simv -cm cond+fsm+line+tgl+branch -l run.log -gui & 可以直接在VCS中打开对应模拟仿真文件。


day2.