modelsim和NCverilog的区别

合集下载

VHDL仿真,Verilog HDL仿真入门--ModelSim使用简介

VHDL仿真,Verilog HDL仿真入门--ModelSim使用简介

VHDL仿真,Verilog HDL仿真入门--ModelSim使用简介学硬件描述语言当然得实践,就得用软件仿真。

入门其实就是讲下仿真软件怎么用,是很简单的一件事,但是对于刚学的人来说可能有点无从下手。

我之前就有点迷茫,所以写这个入门当自己的笔记,也希望能给自学的新手有所帮助。

仿真VHDL和V erilog HDL并没有什么区别,一般的软件两种语言也都支持,仿真的步骤和方法也都是一样的。

常用的软件有Model Sim和Quartus II。

Quartus II功能很强大!实际的工作经常用它,它提供了功能仿真和时序仿真两种方式,但是作为学习HDL 并不方便,因为它compile编译的时候很慢,对于复杂的逻辑更是要很长时间。

好的一点是,Quartus II 编译后可以清楚的看到它使用了芯片的多少资源,各信号不同的延时等等。

另外,Quartus II编译后也可以调用第三方的仿真工具,如Model Sim进行仿真。

而Model Sim只完成逻辑功能的仿真,并不考虑具体使用什么器件,学习HDL或者设计逻辑的时候compile 一次所用的时间很短,便于调试找出逻辑的错误。

所以初学仿真推荐使用Model Sim。

本文也只讲下用Model Sim仿真逻辑的方法。

以下部分基本是参照软件帮助简写的,只是原来是英文的而且说的比较繁琐一些,也更详细内容更多。

详见Model Sim菜单Help--SE PDF Documentation--tutorial。

仿真有两种方法。

一种是Basic Simulation,就是直接建立库,然后编译源文件。

另一种是通过建立Project 来仿真,建立Project时软件会为它建立一个库,然后的仿真是一样的。

Basic Simulation的流程图如下下面详细写一个例子的步骤1. 建立库。

选择菜单File>New>Library。

建立新库就选a new library and a mapping to it,library name 和library physical name 都填work(当然其它名也行)。

NModelSim 工具介绍

NModelSim 工具介绍

2.1键入新工作文件夹所在盘区和名称
2.2在ModelSim环境下切换至新建文件夹
3.在新建文件夹下创建一个工作库
3.1在Create a New Library窗口内Click ok
4.在ModelSim环境下编写HDL源程序
4.1 打开 source 文件编辑窗口
4.2 选择source 文件类型
114进程窗口进程窗口显示了仿真中用到的所有进程的列表如果在该窗口中选择viewactive命令那么在窗口中将显示当前工程中的全部进程如果选择viewinregion命令那么在窗口中只显示当前层次中包含的进程这里的层次通过结构窗口来指定
1.ModelSim 工具简介
ModelSim仿真器由Model Technology 公司开发,它是基于事件 驱动的(有些是时钟驱动的),它可以用来仿真Verilog和VHDL 语 言,同时也支持两种语言的混合仿真。 在整个设计流程中,完成了设计输入并成功地进行了编译,只能 说明设计符合一定的语法规范,并不能保证设计可以获得所期望 的功能,这时就需要通过仿真对设计进行验证。仿真可以分为功 能仿真和时序仿真。功能仿真又称为行为仿真或前仿真,是在不 考虑器件延时的理想情况下对源代码直接进行逻辑功能的验证。 时序仿真又称后仿真或布局布线后仿真,是在考虑了器件延时的 情况下对布局布线后的网表进行的一种仿真,这种仿真中器件延 时信息是通过时序标注的方法来实现的。
1.1.1主窗口
菜单条
工具条
脚本区 工作区 视图 状态栏
主窗口分为工作区和脚本区(也叫命令控制台),通过工作区可以 方便地对当前工程的工作库进行控制;脚本区可以在ModelSim 的提示符下输入所有ModelSim的各种命令,并且可以将命令执 行后的信息反馈回来,便于用户了解命令的执行情况。

Ncverilog命令使用详解

Ncverilog命令使用详解

Ncverilog命令使用详解NCVerilog是一种用于模拟、调试和分析Verilog和SystemVerilog 代码的命令行工具。

以下是对NCVerilog命令使用的详细解释。

1. `ncverilog`命令:启动NCVerilog编译器。

语法如下:```ncverilog [options] <file_list>```- `options`:附加的编译选项,例如`-sv`表示编译SystemVerilog 代码。

- `file_list`:包含要编译的源文件的列表。

2. `+access+r`选项:允许模拟工具读取源代码中的注释。

这对于调试和分析时非常有用。

3. `+define+<macro>`选项:定义一个宏。

这可以用于在模拟期间改变代码的行为。

例如:```+define+DEBUG```4. `+incdir+<dir>`选项:指定包含库文件的目录。

这对于使用外部库或模块时非常有用。

5. `+define+<macro>={value}`选项:为宏指定一个值。

例如:```+define+WIDTH=8```6. `+libext+<ext>`选项:指定库文件的扩展名。

可以用于指定Verilog或SystemVerilog库文件的不同扩展名。

``````8. `+vcs`选项:指定使用VCS编译器的系统Verilog代码。

这对于一些特定的系统Verilog代码可能是必需的。

9. `-y <dir>`选项:指定一个目录,其中包含其他用户定义的Verilog或SystemVerilog库文件。

10. `-v <file>`选项:指定一个要编译的单独的库文件。

11. `-f <file>`选项:指定一个包含文件列表的文件。

这可以用于指定要编译的多个源文件。

12. `-fsmdebug`选项:在编译期间为FSM(有限状态机)创建调试信息。

ncverilog使用

ncverilog使用

Ncverilog 使用在NC自带的帮助Cadence NC-Verilog Simulator Help中都可以找到。

以下整理自网络,有点乱 :(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 filefile文件内容: cnt_tb.v(注意把tb文件放在前)cnt.vtb文件中应该包含:initialbegin$shm_open("wave.shm"); //打开波形保存文件wave.shm$shm_probe(cnt_tb,"AS"); //设置探针endA -- signals of the specific scope 为当前层信号设置探针S -- Ports of the specified scope and below, excluding library cellsC -- Ports of the specified scope and below, including library cellsAS -- 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 //关闭数据库查看结果时可以在source schemic wave register四个窗口同时查看保存波形信号的方法:1.SHM数据库可以记录在设计仿真过程中信号的变化. 它只在probes有效的时间内记录你setprobe 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_PLIPtrfsdb数据库文件的记录方法,是使用$fsdbDumpfile和$fsdbDumpvars系统函数,使用方法参见VCD注意: 在用ncverilog的时候,为了正确地记录波形,要使用参数: "+access+rw", 否则没有读写权限产生FSDB波形文件的若干技巧:/bbs/viewthread.php?tid=2539&;extra=page%3D1下载:/bbs/viewthread.php?tid=3357&;extra=page%3D1ncverilog编译的顺序: ncverilog file1 file2 ....有时候这些文件存在依存关系,如在file2中要用到在file1中定义的变量,这时候就要注意其编译的顺序是从后到前,就先编译file2然后才是file2.,信号的强制赋值force:首先, force语句只能在过程语句中出现,即要在initial 或者 always 中间. 去除force 用release 语句.;initial begin force sig1 = 1'b1; ... ; release sig1; end, force可以对wire赋值,这时整个net都被赋值; 也可以对reg赋值.Verilog和Ncverilog命令使用库文件或库目录ex). ncverilog -f run.f -v lib/lib.v -y lib2 +libext+.v //一般编译文件在run.f中, 库文件在lib.v中,lib2目录中的.v文件系统自动搜索,使用库文件或库目录,只编译需要的模块而不必全部编译Q:我的files里面只有一个help文件夹,里面是一个叫ncprotect文件,没有你所说的hdl.var文件啊A:1、NC-VERILOG在创建工程时会生成两个文件:cds.lib和hdl.var。

modelsim仿真工具的一些使用心得

modelsim仿真工具的一些使用心得

3. 之前的使用方法

在ISE中安装modelsim, 嵌套使用仿真工具

优点---使用方便,易于入手
缺点---不能做系统级别的仿真,仿真效率 很低, 处理modelsim与ISE不兼容的问题

4. 新使用方法

最大特点:不需要和ISE结合使用 方法步骤: 导入仿真库文件 建立工程,利用命令行编写do文件 执行仿真程序
关于Modelsim仿真工具的 一些心得
1.Moelsim版本



ModelSim分几种不同的版本:SE、PE、LE和 OEM,其中SE是最高级的版本。而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等 FPGA厂商设计工具中的均是其OEM版本。 MODELSIM SE是主要版本号,也是功能最强 大的版本,支持对Verilog和VHDL语言的混合 SE版和OEM版在功能和性能方面 有较大差别 仿真。对于代码少于40000行的设计, ModelSim SE 比ModelSim XE要快10倍;对于 代码超过40000行的设计,ModelSim SE要比 ModelSim XE快近40倍。
第二步:在modelsim.ini中添加如下 标准库



simprim_ver = G:/EDA/Xilinx/simprim_ver(库的路 径,以下同) unisim_ver = G:/EDA/Xilinx/unisim_ver xilinxcorelib_ver = G:/EDA/Xilinx/xilinxcorelib_ver
第三步. 综合

之前都是使用ISE自带综合工具 缺点:综合速度慢,单线程综合 推荐使用Synplify pro(我这里用9.6版本) 仿真工具 优点:四线程综合,仿真速度提高四倍

modelsim工程后缀

modelsim工程后缀

modelsim工程后缀Modelsim是一种常用的硬件描述语言仿真软件,它可以模拟数字电路制作的过程。

在使用Modelsim进行工程制作时,为了便于管理和使用,每个工程都会有一个特定的后缀名。

那么,这些工程后缀名有哪些呢?首先,我们需要知道,在使用Modelsim时,一个设计文件会有多个文件组成,包括vhdl文件、verilog文件、testbench文件以及某些外部库文件等。

这些文件需要被综合和仿真,才能进行后面的设计工作。

因此,我们需要对这些文件进行整合,并将它们存储在一个文件夹中,我们称之为Modelsim工程。

Modelsim的工程后缀比较多,根据不同的功能和版本,可能会有所不同。

在Modelsim中,常用的工程后缀名包括:1. .mpf:这是Modelsim 6.0及以下版本所支持的工程后缀名,它是一种简单的工程格式,可以保存整个工程的信息。

2. .msim:这是Modelsim 6.1及以上版本所支持的工程后缀名。

与.mpf相比,它所包含的信息更加详细,能够保存整个工程的设计和仿真流程,更加方便工程管理。

3. .do :这是Modelsim的脚本文件,也是一种工程后缀名,它可以将常用的命令保存在一个文本文件中,方便用户进行快速调用。

在.do文件中可以定义仿真参数、lib库路径、编译选项等。

这种工程后缀名同时也可以用来控制仿真输出结果的显示,化繁为简,提高仿真效率。

4. .ini:这是Modelsim的引导文件,它定义了Modelsim的工作环境、显示格式和仿真选项等。

在工程中使用.ini后缀名,则为一个工程定义了一个特定的工作环境,使工程能够保存自己的仿真选项。

通过上述介绍我们可以看到,针对不同的应用场合和版本,Modelsim工程后缀名的应用也不尽相同。

选择适合自己应用场合的工程后缀名,是Modelsim工程设计的重要一步。

MODELSIM系统函数总结

MODELSIM系统函数总结

篇一:modelsim仿真小结modelsim仿真小结modelsim的基本仿真流程大致分以下几个步骤:建库、编译工程、前后仿真、调试等。

modelsim 仿真既可以在modelsim界面操作,也可以用do文件实现,这里结合学习的教程、网上看到的资料,和实际遇到的一些问题,分别做一整理小结。

1. 建库建库包括altera 库和xilinx库,同时都包括verilog和vhdl。

这里只建了verilog库,vhdl和verilog步骤相同。

对于altera库主要包括lpm元件库、mega_function库atera_mf、altera原语库altera_primitive和各器件系列模型库。

前三种是调用altera模块的必备库,第四种是进行综合后功能仿真和布线后时序仿真需要的库,和器件系列有关,只选对应系列即可。

altera库创建和编译步骤如下:a) 在modelsim安装目录下新建文件夹,命名altera_lib,以存放编译后的库文件,可以在altera_lib 下新建verilog和vhdl两个子文件夹,分别存放verilog和vhdl库。

b) 打开modelsim,新建library,file -&gt;new-&gt;library ..c) 如下图,创建lpm库,路径e:\modeltech_10.1a\altera_lib\verilog\lpm到此,lpm库建立完毕。

e) 同理,建立altera_mf库添加 altera_mf.v ,建立primitive库添加altera_primitive.v建立各系列的模型库,命名可用系列名加_ver“xxx_ver”,也可随意吧,添加各系列的xxx_atoms.v。

这里,也可以把以上库放在一个文件夹,这样做简单,一次就搞定,分开也就是条理清楚,没人去看,所以没必要。

f) 修改modelsim.ini文件,为的是让modelsim能自动map到已经编译的这些库上。

10_软件篇_Modelsim软件的使用_联合仿真

10_软件篇_Modelsim软件的使用_联合仿真
后仿真
后仿真也称为时序仿真或者布局布线后仿真,是指电路已经 映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟 的影响,验证电路能否在一定时序条件下满足设计构想的过程, 能较好地反映芯片的实际工作情况。
目录
2 Modelsim联合仿真(自动仿真)
目录
3 Modelsim手动仿真
《手把手教你学FPGA》
《手把手教你学FPGA》
M1 Modelsim简介 2 Modelsim联合仿真(自动仿真) 3 Modelsim手动仿真
目录
1
Modelsim简介
Modelsim简介
ModelSim是Mentor Graphics公司的仿真软件,该软件可 以用来实现对设计的硬件描述语言VHDL、Verilog HDL 或是两 种语言混合的程序进行仿真。
Modelsim无论是从使用界面和调试环境,还是从仿真速度 和效果上看,都可以算的上是业界比较优秀的HDL语言仿真软 件。它还提供了最友好的调试环境,具有个性化的图形界面和 用户接口,为用户加快调试提供强有力的手段,它是 FPGA/ASIC设计的首选仿真软件。
Modelsim简介
前仿真
前仿真也称为功能仿真,主旨在于验证电路的功能是否符合 设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电 路与理想情况是否一致。
  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还可以波形追踪和代码覆盖等高级的功能。

相关文档
最新文档