NC-Verilog仿真详解 下载本文

ncverilog仿真详解

发表在 ASIC/FPGA/汇编, 学习笔记, 编程开发 | 由 阿布 | 十一月 26, 2011 | 0 标签: ncverilog, 仿真

数位IC工具简介——Simulator 工具 ModelSim

ModelSim是Mentor公司所推出的软体, 主要用来当作VHDL的模拟器, 也是目前CIC在VHDL方面的主要的模拟软体;但ModelSim不仅支援VHDL的模拟,同样也可用来当Verilog的模拟器, 更进一步的, ModelSim也支援VHD&Verilog的混合模拟, 这对於单晶片系统(SoC)的发展上, 矽智产(IP)是来源来自不同的地方, 有些矽智产是采用VHDL描述, 有些是Verilog描述, 因此这是不可或缺的功能. 所以CIC引进ModelSim这一套软体. NCSim

NC-SIM 为 Cadence 公司之 VHDL与Verilog混合模拟的模拟器 (simulator),可以帮助 IC 设计者验证及模拟其所用VHDL与Verilog混合计设的 IC功能. NCVerilog

NC-Verilog 为 Cadence 公司之 Verilog 硬体描述语言模拟器 (simulator),可以帮助 IC 设计者验证及模拟所设计 IC 的功能.使用 NC-Verilog软体,使用者必须使用 Verilog 硬体描述语言的语法来描述所要设计的电路. VCS

VCS 为 Synopsys 公司之 Verilog 硬体描述语言模拟器 (simulator),可以帮助IC设计者验证及模拟所设计 IC 的功能.使用 VCS 软体,使用者必须使用Verilog 硬体描述语言的语法来描述所要设计的电路.

ncverilog使用

ncverilog是shell版的,nclaunch是以图形界面为基础的,二者调用相同内核; ncverilog的执行有三步模式和单步模式,在nclaunch中对应multiple step和single step

ncverilog的三步模式为:ncvlog(编译) ncelab(建立snapshot文件) ncsim(对snapshot文件进行仿真) 基于shell的ncverilog操作(尤其是单步模式)更适合于大批量操作

ncverilog的波形查看配套软件是simvision,其中包含原理图、波形、信号流等查看方式

三命令模式: ncvlog -f run.f ncelab tb -access wrc ncsim tb -gui

第一个命令中,run.f是整个的RTL代码的列表,值得注意的是,我们需要把tb文件放在首位,这样可以避免出现提示timescale的错误

注意:ncvlog执行以后将产生一个名为INCA_libs的目录和一个名为worklib的目录

第二个命令中,access选项是确定读取文件的权限。其中的tb是你的tb文件内的模块名字。

注意:ncelab要选择tb文件的module,会在snapshot文件夹下生成snapshot的module文件 第三个命令中,gui选项是加上图形界面

在这种模式下仿真,是用― – ‖的。而下边要说的ncverilog是采用― + ‖的 三命令模式下GUI界面较好用,其对应的命令会在console window中显示

注意:选择snapshot文件夹下生成的module文件进行仿真

单命令模式:

ncverilog +access+wrc rtl +gui

在这里,各参数与三命令模式相同。注意― + ‖

通常都使用单命令模式来跑仿真,但要配置好一些文件

单命令模式下文件的配置:

目录下有源文件、测试台文件、file、run四个文件 在linux下执行source run后再执行simvision来查看 run文件内容: ncverilog +access+rw -f file file文件内容: cnt_tb.v(注意把tb文件放在前) cnt.v tb文件中应该包含: initial begin

$shm_open(―wave.shm‖); //打开波形保存文件wave.shm $shm_probe(cnt_tb,‖AS‖); //设置探针 end

A — signals of the specific scope 为当前层信号设置探针

S — Ports of the specified scope and below, excluding library cells C — Ports of the specified scope and below, including library cells

AS — Signals of the specified scope and below, excluding library cells 为当前层以以下层信号都设置探针,这是最常用的设置方法

AC — Signals of the specified scope and below, including library cells

在simvison中,左边窗口是当前设计的层次化显示,右边窗口是左边选中模块中包含的信号

查看结果时可以在source schemic wave register四个窗口同时查看

保存波形信号的方法:

1.SHM数据库可以记录在设计仿真过程中信号的变化. 它只在probes有效的时间内记录你set probe on的信号的变化.

2.VCD数据库也可以记录在设计仿真过程中信号的变化. 它只记录你选择的信号的变化. $dumpfile(―filename‖); //打开数据库 $dumpvars; //depth = all scope = all $dumpvars(0); //depth = all scope = current $dumpvars(1, top.u1); //depth = 1 scope = top.u1 $dumpoff //暂停记录数据改变,信号变化不写入库文件中 $dumpon //重新恢复记录

3.Debussy fsdb数据库也可以记录信号的变化,它的优势是可以跟debussy结合,方便调试. 如果要在ncverilog仿真时,记录信号, 首先要设置debussy:

a. setenv LD_LIBRARY_PATH :$LD_LIBRARY_PATH(path for debpli.so file (/share/PLI/nc_xl//nc_loadpli1)) b. while invoking ncverilog use the +ncloadpli1 option. ncverilog -f run.f +debug +ncloadpli1=debpli:deb_PLIPtr fsdb数据库文件的记录方法,是使用$fsdbDumpfile和$fsdbDumpvars系统函数,使用方法参见VCD 注意: 在用ncverilog的时候,为了正确地记录波形,要使用参数: ―+access+rw‖, 否则没有读写权限

学习心得

本人刚开始学习NCVerilog和Debussy, 有一点小小的心得与大家分享。 工作环境是sun服务器。

假定我的设计文件为alu.v, alu_test.v(第二个是testbench). 1、在alu_test.v中加入如下代码 initial begin

$fsdbDumpfile(―alu.fsdb‖); // 创建fsdb文件供Debussy调用,这样就可以观察波形了,名称自定义 。 $fsdbDumpvars(0,alu_test); // alu_test为alu_test.v中的顶层模块名 end

2、ncverilog +access+r alu.v alu_test.v 3、debussy alu.v alu_test.v &

这样就可以在debussy中打开fsdb文件来看波形了。

Ncverilog 常用命令使用详解

我们知道,由于NC-Verilog使用了Native Compile Code 的技术来加强电路模拟的效率,因此在进行模拟时必须经过compile(ncvlog 命令)以及elaborate(ncelab命令)的步骤。编译之后,针对每一个HDL设计单元会产生中间表达。接着elaborate命令会建立整个电路的结构,产生可以用来模拟的资料。最后使用ncsim命令来进行模拟。 三命令模式命令如下:

ncvlog -f run.f

ncealb tb -access wrc ncsim tb -gui

第一个命令中,run.f是整个的RTL代码的列表,值得注意的是,我们需要把tb文件放在首位,这样可以避免出现提示timescale的错误。 第二个命令中,access选项是确定读取文件的权限。其中的tb是你的tb文件内的模块名字。

第三个命令中,gui选项是加上图形界面

值得注意的是,在这种模式下仿真,是用“ - ”的。而下边要说的ncverilog是采用“ + ”的。 单命令模式

ncverilog +access+wrc rtl +gui

在这里,各参数与三命令模式相同。注意“ + ”。

在本文里将详细讲述ncverilog 的各种常用的参数,对于三命令模式,请读者自己查看资料。

+cdslib+... 设定你所仿真的库所在

+define+macro ... 预编译宏的设定

+errormax+整数 当错误大于设定时退出仿真

+incdir+path 设定include的路径

+linedebug 允许在代码中设定line breakpoint

+log+logfile 输出到名为logfile的文件中

+status 显示内存和CPU的使用情况

+work 工作库

+access+w/r/c 读取对象的权限,缺省为无读(-w)无写(-r)无连接(-c)

+gui 显示图形交互界面

+input script_file 输入脚本文件

+licqueque 如无licence等待licence

+run 如果在GUI交互界面下, 启动后将自动开始仿真

+loadpli1=... 动态加入PLI

+timescale 设定仿真单位和精度

+nocopyright 不显示版权信息