【芯片设计- RTL 数字逻辑设计入门 2 - vcs 及 verdi 使用介绍】

文章目录

    • 1.1 VCS 编译环境
      • 1.1.1 Complie Design
      • 1.1.2 simv 仿真
    • 1.2 VCS 波形生成及查看
      • 1.2.1 verdi 命令介绍
      • 1.2.2 verdi 波形查看

上篇文章:芯片设计- RTL 数字逻辑设计入门 1- Linux 环境下 VCS与 Verdi 联合仿真

1.1 VCS 编译环境

VCS 全称是 Verilog Compiler Simulator,是 Synopsys 公司的,类似于windows环境下的 questasim 或 modelsim,只不过 vcs 是 linux 环境下的工具。编译之前首先检查编译环境是否准备完善,一般是通过 module list 命令来检查,module 常见的一些指令如下:

module help               # 显示帮助信息
module avail              # 显示已经安装的软件环境
module load               # 导入相应的软件环境
module unload             # 删除相应的软件环境
module list               # 列出已经导入的软件环境
module purge              # 清除所有已经导入的软件环境
module switch [mod1] mod2 # 删除mod1并导入mod2

可以通过 module list 检查是否 load 了 vcsverdi,如果没有,可以通过 module load xxx/xxx 进行加载。
【芯片设计- RTL 数字逻辑设计入门 2 - vcs 及 verdi 使用介绍】_第1张图片

1.1.1 Complie Design

首先是编译,主要完成语法检查和文件联编,并生成可执行的仿真文件
可直接在 Linux 终端执行,格式如下:

vcs [选项] [文件]

其中选项是可选的,下面给出一些常用选项

  • -full64: 支持64位系统;
  • -l [文件名]: 创建文件,用于记录编译日志;
  • -f [文件名]: 在某文件中索引要编译的文件路径,以及其他编译选项;
  • -o [文件名]: 重命名仿真文件;
  • -debug_acc+all: 支持UCLI调试;
  • +incdir+[目录]: 为`include指定索引目录;
  • +define+[宏]: 宏定义;
  • -notice: 更加冗长的编译信息,便于调试;
  • -timescale=1ns/1ps:时间单位和时间精度;
  • +v2k: 开启verilog 2001架构;
  • -sverilog: 开启systemverilog 架构。

编译完成后生成的文件如下:
在这里插入图片描述

1.1.2 simv 仿真

上图中 文件 simv 就是用于仿真的文件,生成 simv 文件之后就可以使用 DVE 进行仿真了

命令格式

simv [选项]

选项如下
-l [文件]: 仿真日志;
-gui: 开启GUI界面,否则就在 linux 终端显示 transcript 的内容;
-ucli: 在 linux 终端使用 TCL 控制仿真进程;
-i [文件名].tcl: 启动DVE后,在 UCLI 要启动的 TCL 命令;

1.2 VCS 波形生成及查看

VCS 对应的 waveform 工具有 DVEVerdi, DVE 因为是原生的,所以 VCS 对 DVE 非常友好。但 DVE 已经过时了,其对 uvm 等新 feature 支持的不好。

Verdi 是 Debussy 公司的产品,已 Synopsy 收购并, 如果要支持 Verdi,需要设置好 NOVAS_LIB_PATH 的环境变量,并且在命令行中添加 -kdb 的 option,knowledge database(kdb)是VCS支持Verdi时的重要概念。另外,VCS 支持 VPD 和 FSDB 两个格式的 dump wave, fsdb 的文件相对比较小。

若想用 Verdi 观察波形,需要在仿真时生成 fsdb 文件,而 fsdb 在 vcs 或者 modelsim 中的生成是通过两个系统调用 $fsdbDumpfile $fsdbDumpvars 来实现的。而这两个系统调用并不是 Verilog 中规定的,是 Verdi 以 PLI(Programming Language Interface)的方式实现的。这就需要让 vcs 编译时能找到相应的库。首先在 testbench 中需加入以下语句:

`ifdef DUMP_FSDB
    initialbegin
        //$fsdbDumpon;		打开波形保存功能
        //$fsdbDumpoff;		关闭波形保存功能
        $fsdbDumpfile("test.fsdb"); // 指定波形文件名为test.fsdb
        $fsdbDumpvars;
    end
`endif

DUMP_FSDB 编译开关在 vcs 编译时加入+define+DUMP_FSDB 选项就可以打开(也可以在 define.v 文件中定义 DUMP_FSDB 这个宏), 生成的 fsdb 文件如上图中 test.fsdb 文件。

1.2.1 verdi 命令介绍

verdi 的命令可直接在 Linux 终端执行,格式如下:

verdi [选项] [文件]

其中选项是可选的,下面给出一些常用选项:

  • -f [文件名]: 在某文件中索引工程包含的文件路径;
  • -top [名称]: 工程名称,后接的是tb文件的 Module 名字;
  • -nologo: 无欢迎界面;
  • -ssf [文件名].fsdb: 指定已有的波形文件。

1.2.2 verdi 波形查看

verid 波形查看命令:

bsub verdi -elab ./simv.daidir/kdb.elab++ -ssf test.fsdb

【芯片设计- RTL 数字逻辑设计入门 2 - vcs 及 verdi 使用介绍】_第2张图片
关于 bsub 的使用请参考:https://blog.csdn.net/sinat_32960911/article/details/129976200

上篇文章:芯片设计- RTL 数字逻辑设计入门 1- Linux 环境下 VCS与 Verdi 联合仿真

推荐阅读
http://www.taodudu.cc/news/show-5437615.html
https://download.csdn.net/download/dxydxzsxzg/11216049

你可能感兴趣的:(芯片设计,RTL,数字逻辑设计扫盲,fpga开发,verdi,DUMP_FSDB,vcs,fsdb,fsdbDumpvars)