目标:
- 了解ncverilog、irun、xrun之间的关系
- 了解indago和simvision之间的关系
- 学习Cadence仿真工具和波形查看工具的基本使用
1. Cadence仿真工具:
① IUS(cadence以前的仿真工具,功能略弱。代表工具,ncverilog):
Cadence仿真模式:单步仿真模式、多步仿真模式
多步仿真模式:使用ncvlog(ncsc,ncvhdl),ncelab,ncsim命令来实现仿真。
- ncvlog(ncsc,ncvhdl),编译源代码(systemC使用ncsc工具编译;VHDL使用ncvhdl工具编译;Verilog使用ncvlog工具编译)
- ncelab,对编译的结果,进行描述elaborate,建立snapshot文件
- ncsim,对snapshot文件进行仿真
示例:
1. ncvlog -f run.f
2. ncelab tb -access wrc
3. ncsim tb –gui
//第一个命令,run.f是整个RTL代码列表, ncvlog执行以后将生成一个名为INCA_libs的目录和一个名为worklib的目录。
//第二个命令,-access选项是确定读取文件的权限,其中的tb是tb文件内的顶层模块名字。ncelba要选择tb文件的顶层module,elaborate之后,会生成snapshot。
//第三个命令,选择snapshot进行仿真,-gui启动图形化界面。
单步仿真模式:早期的IUS,使用ncverilog进行单步仿真模式,ncverilog,内部会自动调用ncvlog,ncelab,ncsim工具进行仿真。从IUS8.1开始,ncverilog命令被替换成irun命令,使用ncverilog,将直接调用irun命令。而irun工具,内部也会自动调用ncvlog,ncelab,ncsim工具进行仿真。
② IES(cadence较早的仿真工具,功能强大。代表工具,irun):
irun是一个脚本,irun支持各种源程序文件输入(verilog,systemverilog,VHDL,verilog AMS,VHDL AMS,specman e,和其他语言程序编写的文件如C,C++),并且使用合适的编译器对其进行编译(.v文件,使用ncvlog;.sv文件,使用ncvlog;.vhd文件,使用ncvhdl;.e文件,使用sn_compile.sh脚本)。当输入的文件都编译完毕后,irun自动启动ncelab,去elaborate,产生snapshot,最后启动ncsim仿真器去仿真snapshot。irun启动后,会在生成目录,自动创建INCA_libs文件夹。
irun常用选项:
选项 | 说明 |
---|---|
-64bit | 使用64bit irun模式 |
-f | 指定file list |
-vlog_ext | 修改verilog文件的默认后缀,如 -vlog_ext .vvv,.vv ,修改verilog的默认后缀为.vvv和.vv |
-c | 只生成snapshot,不仿真 |
-access | 设置访问权限 |
-nclibdirpath | 指定 INCA_libs 目录 |
-R | 只仿真,需要有提前生成的snapshot |
-sv | 支持systemverilog语言 |
-uvm | 开启uvm,自动编译uvm库 |
-uvmhome | 指定uvm库位置,CDNS-1.2 默认IES中的uvm-1.2版本 |
-uvmnoautocompile | 不自动编译uvm库 |
-clean | 在run执行之前,删除INCA_libs文件夹 |
-l | 指定输出log文件 |
-seed | 指定随机种子数 |
-top | 指定顶层模块 |
-hdlvar | 指定 hdl.var文件(定义了工具的一些变量) |
-cdslib | 指定cds.lib文件(定义逻辑库名称和物理存储位置的映射关系) |
-loadpli1 | 指定读取外部读取的库文件 |
-prep | 打开prep mode,不仿真,生成多步仿真的脚本文件。生成4个文件:ncvlog_ver.args: ncvlog工具的参数文件、ncelab.args ncelab工具的参数文件、ncsim.args: ncsim工具的参数文件、RUN_NC: 仿真的脚本文件,调用ncvlog,ncelab,ncsim。 |
-checkargs | 检查irun的输入参数,是否有误 |
-helpargs | 打印每个输入参数的作用 |
-helpall | 打印帮助信息 |
+xxx=yyy | 向验证环境传递仿真参数xxx,值为yyy |
③ Xcelium(cadence现在的仿真工具,Incisive(irun)的升级版本。代表工具,xrun):
xrun默认是单步仿真
1. xrun add.v //自动comp、elab、sim
xrun设置多步仿真
1. comp:
2. xrun -compile add.v
3. elab:
4. xrun -elaborate add.v //生成snapshot
5. sim:
6. xrun -R //自动识别snapshot
xrun常用选项:
选项 | 说明 |
---|---|
-64bit | 64bit仿真 |
-sv | 识别systemverilog语法 |
-f <.f .list> | 识别文件列表 |
-access +rwc | 在查看波形时,对代码权限设置 |
-top <> | 指定仿真的顶层 |
-l <.log> | 指定仿真log信息目录和名字 |
-history_file <.history> | 指定仿真记录的目录及名字 |
-q or -Q | 不在log中打印仿真总结信息 |
-noupdate | 强制comp和elab必须重新执行 |
-clean | 先清除当前目录下的Xcelium.d再跑仿真 |
-seed | 指定随机数 |
-licqueue | 指定当没有license时,等待 |
-errormax n | n个error后强制结束仿真 |
-coverage all | 生成覆盖率 |
-covoverwrite | 自动覆盖当前覆盖率 |
-parseinfo include | 打印出使用`include包含的文件具体信息 |
-mcl | 轻量级的多core仿真 |
-notimingcheck | 不检查时序 |
-nospecify | specify部分不起作用 |
-sdf_verbose | 展示反标详细信息 |
-ntc_verbose | 负延时信息展示 |
注:cadence的很多工具,带有nc作为前缀。nc,指native compile,将不同的HDL code转化成一种中间语言(native language),然后统一仿真,为了实现混合语言仿真。
2. Candence的波形查看工具:SimVision
indago是cadence推出的一系列debug工具:Debug analyzer app、Embedded software debug app(简称eswd工具)、Protocol debug app、Simvision。(不确定是否正确)
2.1 SimVision的基本使用
前言:NCverilog 有 shell 和 GUI 两种版本,GUI 版本的叫做 NClaunch,二者调用相同内核;ncverilog的执行有三步模式和单步模式,在nclaunch中对应multiple step和single step。基于shell的ncverilog操作(尤其是单步模式)更适合于大批量操作。ncverilog的波形查看配套软件是simvision。
在shell版本下完成仿真后,再打开一个终端输入simvision将会打开 simvision 界面,点击左上角的 File -> Open Database 选择生成的 .shm 文件,点击 Open 即可打开波形。(当更改设计或仿真文件后可以点击左上角 File->Reload Database 重新加载波形)
在GUI版本下,启动(终端输入nclaunch,启动图形化界面,通过file>switch to single step切换单步或者多步模式。file>set design directory设置工作目录)、编译(选中在设计时建立的Verilog文件,按下编译器按钮,编译完成后NC-Verilog将产生一个叫INCA_libs的目录以及一个叫worklib的目录。所有设计中的模块都将编译在worklib目录下面)、描述(展开库worklib,选择顶层top-level的单元,然后选择描述按钮
) 、仿真(展开Snapshots文件夹,选中你想要仿真的snapshot,按下仿真按钮
,设计浏览器和控制窗口就会出现,此时进入simvision界面)
五种基本窗口:Design Browser(设计浏览器窗口)、Console(控制窗口)、Waveform(波形窗口)、Schematic Tracer(原理图窗口)、Source Broswer(源浏览器窗口)
基本使用:
1.点击Waveform
按钮,可以让选中信号在波形窗口(waveform)中显示
2.点击Schematic
按钮,可以查看信号流向原理图
3.点击Source
按钮,可以查看选中信号的设计代码
3. xrun+simvision仿真环境搭建的makefile示例
见数字IC学习之语言篇:makefile
参考资料: