modelsim和NCverilog的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Modelsim和NCverilog的比较
集成电路的发展趋势是,单位面积集成的晶体管的数目越来越多,可靠性越来越越高、稳定性越来越好。

现在芯片集成度已经超出可人们的想象,有的芯片内部集成了数百万的晶体管,已经远远超出了人的大脑可以分析的范围。

这就对EDA工具提出了更高的要求,不管是设计、仿真、综合软件的发展,都给集成电路工程师带来了巨大的便利。

modelsim是Mentor graphics公司推出的HDL代码仿真工具,也是业界最流行的HDL仿真工具之一。

支持图形界面操作和脚本操作,常见的图形界面操作相对直观,但是由于重复性操作几率高、处理效率低、工程的非保存性,对于大规模的代码仿真不推荐使用;脚本操作完全可以克服以上的缺点,把常见的命令,比如库文件和RTL加载、仿真、波形显示等命令编辑成.do脚本文件,只需要让Modelsim运行.do文件即可以完成仿真,智能化程度高。

NCverilog是candence公司推出的Verilog HDL的仿真工具。

NC-Verilog是Verilog-XL的升级版, 它采用Native-Compiled技术, 无论仿真速度, 处理庞大设计能力, 编辑能力, 记忆体容量和侦错环境都以倍数升级。

C-Verilog是一个编译仿真器,它把Verilog代码编译成Verilog程序的定制仿真器。

也就是它把Verilog 代码转换成一个C程序,然后再把该C程序编译成仿真器。

因此它启动得稍微慢一些,但这样生成的编译仿真器运行得要比Verilog-XL的解释仿真器快很多。

Ncverilog是shell版的,nclaunch是以图形界面为基础的,二者调用相同内核;Ncverilog的执行有三步模式和单步模式,在nclaunch中对应multiple step和single step;Ncverilog的三步模式为:ncvlog(编译) ncelab(建立snapshot文件) ncsim(对snapshot文件进行仿真)基于shell的ncverilog操作(尤其是单步模式)更适合于大批量操作,hncverilog的波形查看配套软件是simvision,其中包含原理图、波形、信号流等查看方式。

Ncverilog命令使用库文件或库目录
ex). ncverilog -f run.f -v lib/lib.v -y lib2 +libext+.v //一般编译文件在run.f 中, 库文件在lib.v中,lib2目录中的.v文件系统自动搜索使用库文件或库目录,只编译需要的模块而不必全部编译。

Verilog Testbench信号记录的系统任务:
1). SHM数据库可以记录在设计仿真过程中信号的变化. 它只在probes有效的时间内记录你set probe on的信号的变化。

ex). $shm_open("waves.shm"); //打开波形数据库
$shm_probe(top, "AS"); // set probe on "top"
第二个参数: A -- signals of the specific scrope
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。

还有一个M ,表示当前scope的memories, 可以跟上面的结合使用, "AM" "AMS" "AMC"什么都不加表示当前scope的ports;$shm_close //关闭数据库
2). VCD数据库也可以记录在设计仿真过程中信号的变化. 它只记录你选择的信号的变化。

ex). $dumpfile("filename"); //打开数据库
$dumpvars(1, top.u1); //scope = top.u1, depth = 1
第一个参数表示深度, 为0时记录所有深度; 第二个参数表示scope,省略时表当前的scope。

$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系统函数。

注意: 在用ncverilog的时候,为了正确地记录波形,要使用参数: "+access+rw", 否则没有读写权限。

ncverilog编译的顺序: ncverilog file2 file1 ....
有时候这些文件存在依存关系,如在file2中要用到在file1中定义的变量,这时候就要注意其编译的顺序是从后到前,就先编译file2然后才是file1。

信号的强制赋值force
首先, force语句只能在过程语句中出现,即要在initial 或者always 中间,去除force 用release 语句。

initial begin force sig1 = 1'b1; ... ; release sig1; end;
force可以对wire赋值,这时整个net都被赋值,也可以对reg赋值。

Modelsim的仿真命令和库文件
Modelsim的仿真界面非常的便利,设计者可以根据modelsim自己的程序设计流程,来设置自己的仿真需要,可以来说是很容易使用的。

但是在编译和仿真的大的程序时,所需的时间相对来说比较长。

Modelsim还支持数据流的追踪模式,是一个入门学习Verilog的不错的软件。

设计流程是,首先建立一个物理库(modelsim库),之后建立工程文件,之后向工程中添加我们自己所需的工程子文件,之后运行编译系统,编译通过后可以运行仿真器。

在运行仿真器时,可以指定时间的精度和仿真时间的长度。

等到仿真结束之后我们可以查看输入输出信号的波形。

这只是modelsim的最基本的功能,其中modelsim还可以波形追踪和代码覆盖等高级的功能。

相关文档
最新文档