数字验证——VCS使用

发布时间 2023-04-07 00:42:09作者: Haowen_Zhao

一,基础介绍

VCS用来编译仿真verilog/systemverilog,先将HDL源文件转化为C文件,在linux下编译和链接生成可执行文件,运行可执行文件即可得到仿真结果。

  • 编译命令格式 :vcs sourcefile [compile_time_option] (编译选项用来控制编译过程)
  • 执行仿真命令格式:./simv [run_time_option] (simv为可执行文件)

常用编译选项(更详细参考 VCS 编译选项 - 知乎 (zhihu.com)):

  • +neg_tchk:使能时序检查中的负延时
  • +notimingcheck:不进行时序检查
  • +sdf_nocheck_celltype:SDF反标时不检查SDF文件中的celltype的一致性
  • +v2k:支持Verilog-2001标准
  • -f <filename>:指定文件列表的文件名,文件中可包括源代码文件的路径和名称,也可以包括编译选项参数
  • -R:在编译之后立即执行产生的可执行文件
  • -v <filename>:指定verilog库文件
  • -l <filename>:指定记录VCS编译和运行信息的log文件名
  • -o <name>:指定编译生成的可执行文件的名称,默认是simv
  • -gui:仿真开始后启动DVE图形界面
  • -verdi:使用verdi图形界面
  • -debug_all:用于产生debug所需的文件

在复杂设计的VCS使用中,经常将需要编译的源文件写进一个verilog.f文件,然后用-f选项指定文件进行编译。

同时,也可以把编译过程写成makefile脚本,提高程序的复用性,提高效率:

#一种参考运行vcs的makefile脚本
.PHONY:com sim clean OUTPUT
= adder_top VCS = vcs -sverilog +v2k -timescale=1ns/1ns \ -debug_all \ -o ${OUTPUT} \ -l compile.log \ SIM = ./${OUTPUT} -l run.log com: ${VCS} -f verilog_file.f sim: ${SIM} clean: rm -rf ./csrc *.daidir *.log simv* *.key

执行make com、make sim、make clean即可执行编译、仿真、清除指令。

二,VCS testbench搭建

简单的testbench常常是initial给波形,always给时钟,然后使能信号看输出,但这种方法效率很低,目前通用的是uvm(Universal Verification Method,通用验证方法学)。对于个人开发者或者学生而言,需要快速搭建testbench用于vcs对自己的设计进行验证。

1,verilog testbench基本语法

完整的testbench测试文件结构为:

`timescale 仿真单位/仿真精度

module Test_bench();//通常无输入无输出

信号或变量声明定义
逻辑设计中输入对应 reg 型
逻辑设计中输出对应 wire 型
使用 initialalways 语句产生激励
例化待测试模块
监控和比较输出响应

endmodule