modelsim使用 + 前仿真 + 后仿真 + verilog
ModelSim使用的一点心得- -
ModelSim使用的一点心得- -1、至今还没有弄明白为什么要用ModelSim,因为看波形Quartus II自带的工具就可以了啊。
2、我刚刚接触modelsim,我想大多数菜鸟跟我一样,看过如何使用ModelSim的介绍,说句实话,那些介绍写的都太过简单,仿佛大家都不屑写上一些比较“弱智”的步骤,恰恰就是这些看似累赘的步走,难为我好久。
教程上都写道,modelsim的简单使用方法如下:建立库- 影射库到物理目录- 编译代码- 启动仿真。
首先建立库就叫我头晕。
库的概念用在这儿实在不合适,把我吓坏了,也就没心思看下一步了。
在我看来,教程应该这么写:<1> 建立一个目录modelsimStudy。
用任何文本编辑器编辑一个简单的例子程序,比如计数器counter.vhd。
有clk、ena、reset输入,cnt作为输出。
<2> 打开Modelsim,首先create project,工程名随意取了,比如命名为test,目录设在modelsimStudy下,默认的库work不变(这样就不用管什么建立库之类的东西了)。
然后add existing file,把counter.vhd加入当前工程。
<3> 编译这个文件,通过之后,work下面会出现counter这个实体。
然后选中它,右键,simulate(左键双击也可)。
<4> ModelSim有很多窗口(新手就怕这个),一开始只要选择view下面的objects 和wave窗口就行了。
旧版的signal窗口在6.0的版本改名为Objects(这个我是摸索了好久才发现的,是不是太笨了?)。
wave窗口刚打开时是空的,需要在objects窗口的add -> wave -> signals in region。
这时,wave上就有clk\ ena \ reset等信号了。
<5> 我们给clk来个输入激励,在object窗口中选中clk,右键选clock,给它定义个时钟。
Modelsim ae 仿真方法
Modelsim ae 仿真/?_c11_BlogPart_BlogPart=blogview&_c =BlogPart&partqs=cat%3DModelsim仿真验证是CPLD/FPGA设计中的重要一环,QuartusII软件本身带有仿真功能,但是无法使用testbench,而且功能相对简单,对于复杂的设计,画波形图显然不是明智的选择,一般选择Mentor Graphics Corporation的modelsim作为仿真工具。
仿真一般分为功能仿真,前仿真与后仿真。
根据设计需要,编写完代码(Verilog hdl,Vhdl,system Verilog )后,首先进行功能仿真,验证所写代码是否能完成设计功能;前仿真又称为综合后仿真,即在QuartusII完成综合后,验证设计的功能;后仿真又称为时序仿真活布局布线后仿真,是加入延时后的仿真。
对于编译时间较短的小规模设计,一般只进行功能仿真与后仿真。
modelsim有很多版本,ae,pe,le,xe,se等,其中se功能最为强大,见下图:其中ae版本是altera的定制版本,已经包含了altera元器件的编译库,对于altera公司的器件仿真,使用比较简单。
下面以一个设计实例介绍modelsim的仿真过程,工具版本:QuartusII8.1,Modelsim Altera6.1g p1,设计语言使用verilog。
NativeLink 技术在 Quartus II 软件和其它 EDA 工具之间无缝地传送信息,并允许在 Quartus II 软件中自动运行 EDA 工具,所以有两种方式进行QuartusII 与 modelsim的联合设计仿真:QuartusII 软件直接调用modelsim仿真,这种方式步骤简单,但是不方便调试;QuartusII产生modelsim仿真所需要的.vo,.sdo文件,运用 modelsim仿真,这种方式比较麻烦,但是便于调试过程中程序,testbench的更改,一般推荐采用这种方式。
ModelSim的前后仿真(Quartus)
利用Quartus5.0实现功能仿真1)打开一个工程文件。
2)打开Settings设置栏,选择Fitting Settings下的Simulator栏。
在右边出现的设置栏中将“Simulation Mode”的下拉菜单选择“Functional”,即可以实现软件下的功能仿真。
(下拉菜单中有“Functional”、“Timing”和“Timing using Fast Timing Model”,分别代表可以在Quartus软件下实现功能仿真,时序仿真和快速时序仿真。
最后一项一般不选,如果在Settings->Timing Requirement->More Settings下“Report Combined Fast/Slow Timing”选项设为“On”,就可以选择最后一项。
编译的报告里也会分别列出最快和最慢的时序报告。
)3)选择“Processing”菜单下的“Generate Functional Simulation Netlist”命令,否则将无法启动仿真。
4)新建一个波形仿真文件,文件后缀名为.vwf。
选择File菜单下的New->Other Files->VectorWaveform File。
如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。
波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。
将新建的波形仿真文件保存下来。
5)将需要仿真的信号加入波形编辑窗口。
在列表区任一位置双击或者点击右键选择“InsertNode or Bus…”,弹出的对话框点击“Node Finder”按钮。
在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。
如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。
Modelsim NC-Verilog仿真理解
Modelsim/NC-Verilog仿真理解仿真(Simulation),也称为模拟,是对所有集成电路或系统的一种检测方法。
用户可以在设计过程中对整个系统和部分模块进行仿真,即在计算机上用仿真软件验证功能是否正确、各部分的时序配合是否正确。
如果有问题可以随时进行修改,从而避免逻辑错误。
高级的仿真软件还可以整个系统设计性能进行评估。
设计规模越大就越需要进行仿真。
仿真包括功能仿真和时序仿真。
在设计输入阶段按进行仿真,不考虑信号延时等因素成为功能仿真,又称前仿真;时序仿真又称为后仿真,他在选择了具体器件并完成了布局布线以后进行的含定时关系的仿真。
由于不同器件的内部延时不同,不同的布局、布局方案也给延时造成了很大的影响,因此在设计实现后,对网络和逻辑块进行延时仿真,分析定时关系,估计设计性能非常有必要。
要进行电路仿真必须有仿真器的支持。
常用的Verilog仿真器有:ModelSim、Verilog-XL、NC-Verilog和VCS等。
下面我们简单介绍下我们常用到的ModelSim、NC-Verilog两款仿真软件特点、区别。
一、ModelSimModelSim是Mentor Graphics子公司ModelSim Technology的产品,是业界优秀的HDL 语言仿真软件之一,它是编译型的VerilogHDL/VHDL混合仿真器。
MoselSim可以在同一设计中单独或混合使用Verilog HDL和VHDL,允许Verilog HDL模块调用VHDL的实体,或用VHDL模块调用Verilog HDL的实体。
由于ModelSim是编译型仿真器,使用编译后的HDL 库进行仿真,因此在进行仿真前,必须所有待仿真的HDL文件编译成为HDL仿真库,在编译时使源文件获得优化,提高了仿真速度。
Model Sim只完成逻辑功能的仿真,并不考虑具体使用什么器件,学习HDL或者设计逻辑的时候compile一次所用的时间很短,便于调试找出逻辑的错误。
xinlinx ModelSim,synplify,ISE后仿真流程
ModelSim,synplify,ISE后仿真流程首先,我把我用到的软件说明一下。
如果你发现根据我的操作,你还是解决不了ModelSim 后仿真的问题,那就可能是软件版本的问题。
1, ModelSim Se 6.1b2, Synplify Pro 7.5.13, ISE 5.2i (这个是老了点)4, WindowsXP(这个应该没有多大的关系)还有就是我使用的是verilog,我想VHDL的方法与verilog是差不多的,最多也就是在建库方面有点差别而已。
下面的这些方法,是我这3天搞出来的。
当然也参考了一些文章。
如果谁有更方便的方法,欢迎指出来。
我的邮箱是vf1983cs@。
有空大家多交流。
一、为modelsim生成3个库。
首先,介绍一下这三个库。
Simprim_ver:用于布局布线后的仿真。
Unisim_ver :如果要做综合后的仿真,还要编译这个库。
Xilinxcorelib_ver:如果设计中调用了CoreGen产生的核,则还需要编译这个库。
我们要为modelsim生成的是标准库。
所谓的标准库就是modelsim运行后,会自动加载的库。
不过这方面我还不是很肯定。
因为我在后仿真时,还是要为仿真指定库的路径,不然modelsim找不到。
第一步:在modelsim环境下,新建工程,工程的路径与你想把库存储的路径一致。
第二步:新建库,库名起作simprim_ver。
我们首先就是要建的就是这个库。
第三步:在modelsim的命令栏上,打下如下命令:vlog -work simprim_ver d:/Xilinx/verilog/src/simprims/*.v其中的d:/Xilinx是我的Xilinx的安装路径,你把这个改成你的就行了。
以下凡是要根据自己系统环境改变的内容,我都会用绿色标出,并加一个下划线。
编译完之后,你会发现你的工程文件夹下出现了一个simprim文件夹,里面又有很多个文件夹。
modelsim的详细使用方法
一、简介ModelSim是一款由美国Mentor Graphics公司推出的集成电路仿真软件,广泛应用于数字电路和系统设计领域。
它提供了强大的仿真和验证功能,能够帮助工程师快速高效地进行电路设计与验证工作。
本文将详细介绍ModelSim的使用方法,以帮助读者更好地掌握这一工具的操作技巧。
二、安装与配置1. 下载ModelSim安装包,并解压到指定目录2. 打开终端,进入ModelSim安装目录,执行安装命令3. 安装完成后,配置环境变量,以便在任何目录下都能够调用ModelSim程序4. 打开ModelSim,进行软件注册和授权,确保软件可以正常运行三、工程创建与管理1. 新建工程:在ModelSim主界面点击“File” -> “New” -> “Project”,输入工程名称和存储路径,选择工程类型和目标设备,点击“OK”完成工程创建2. 添加文件:在工程目录下右键点击“Add Existing”,选择要添加的源文件,点击“OK”完成文件添加3. 管理工程:在ModelSim中可以方便地对工程进行管理,包括文件的增删改查以及工程参数的设置等四、代码编写与编辑1. 在ModelSim中支持Verilog、VHDL等多种硬件描述语言的编写和编辑2. 在ModelSim主界面点击“File” -> “New” -> “File”,选择要新建的文件类型和存储位置,输入文件名称,点击“OK”完成文件创建3. 在编辑器中进行代码编写,支持代码高亮、自动缩进、语法检查等功能4. 保存代码并进行语法检查,确保代码符合规范,没有错误五、仿真与调试1. 编译工程:在ModelSim中进行代码编译,生成仿真所需的可执行文件2. 设置仿真参数:在“Simulation”菜单下选择“S tart Simulation”,设置仿真时钟周期、输入信号等参数3. 运行仿真:点击“Run”按钮,ModelSim将开始对设计进行仿真,同时显示波形图和仿真结果4. 调试设计:在仿真过程中,可以通过波形图和仿真控制面板对设计进行调试,查找并解决可能存在的逻辑错误六、波形查看与分析1. 查看波形:在仿真过程中,ModelSim会生成相应的波形文件,用户可以通过“Wave”菜单查看波形并进行波形分析2. 波形操作:支持波形的放大、缩小、平移、选中等操作,方便用户对波形进行分析和观察3. 波形保存:用户可以将波形结果保存为图片或文本文件,以便日后查阅和分析七、性能优化与验证1. 时序优化:在设计仿真过程中,可以通过观察波形和性能分析结果,对设计进行优化,提高设计的时序性能2. 逻辑验证:通过对仿真的结果进行逻辑验证,确保设计符合预期的逻辑功能3. 时序验证:对设计的时序性能进行验证,确保信号传输和时钟同步的正确性八、项目输出与文档整理1. 输出结果:在仿真和验证完成后,可以将仿真结果、波形图和性能分析结果输出为文本文件或图片,方便后续的文档整理和报告撰写2. 结果分析:对仿真结果和验证结果进行详细的分析,确定设计的性能和功能是否符合设计要求3. 文档整理:根据仿真和验证结果,进行文档整理和报告撰写,为后续的设计和优化工作提供参考九、总结与展望ModelSim作为一款专业的集成电路仿真软件,具有着强大的功能和丰富的特性,可以帮助工程师进行电路设计与验证工作。
modelsim进行verilog的仿真---(Quartus中调用RTL仿真)
modelsim进⾏verilog的仿真---(Quartus中调⽤RTL仿
真)
RTL即寄存器Register Transfer level,译为寄存器传输级,在quartus II的tool⼯具栏⾥有⼀个选项:Run EDA Simulation tool->Run RTL Simulation,我⼀直没弄明⽩这个和功能仿真有什么区别,下⾯开始通过实践来确定⼀下这个两者有什么不同吧。
还是以⼀个D触发器为例,源码在功能仿真的⽂章⾥已经有了,下⾯进⾏设置:在quartus II中新建⼀个⼯程,添加simualte1.v和testbetch1.v到⼯程中,然后设置simulate1为顶层⼊⼝⽂件。
接下来点击Assignment->setting..,然后点击EDA Tool Setting->simulation,如图进⾏设置
点击test Benches按钮,然后如下图点击new:
按照下⾯进⾏设置:
设置好了就⼀路点OK回到quartus主界⾯,然后ctrl+K或者processing->start->analysis & sythesis,然后点击Tool->Run EDA Simulation tool->Run RTL Simulation,quartus会⾃动调⽤modelsim进⾏仿真,仿真图如下:
发现没有,跟功能仿真时⼀样的,由此可见RTL级仿真也就是功能仿真,只不过在quartus⾃带仿真中需先⽣成功能仿真⽹表,然后进⾏功能仿真。
MODESLsim仿真使用说明
1. Modelsim简介Modelsim仿真工具是Model公司开发的。
它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。
对于初学者,modelsim自带的教程是一个很好的选择,在Help->SE PDF Documentation->Tutorial 里面.它从简单到复杂、从低级到高级详细地讲述了modelsim的各项功能的使用,简单易懂。
但是它也有缺点,就是它里面所有事例的初期准备工作都已经放在example文件夹里,直接将它们添加到modelsim 就可以用,它假设使用者对当前操作的前期准备工作都已经很熟悉,所以初学者往往不知道如何做当前操作的前期准备。
2. 安装同许多其他软件一样,Modelsim SE同样需要合法的License,通常我们用Kengen产生license.dat。
解压安装工具包开始安装,安装时选择Full product安装。
当出现Install Hardware Security Key Driver时选择否。
当出现Add Modelsim To Path选择是。
出现Modelsim License Wizard时选择Close。
!!!!安装路径不能有空格!!!不要装在d:\program files\下,否则有可能自动调用时出现找不到d:\program 的情况在C盘根目录新建一个文件夹flexlm,用Keygen产生一个License.dat,然后复制到该文件夹下。
最好这样,我曾经放在D:\altera\Modelsim_6.1d\License.dat都不行修改系统的环境变量。
右键点击桌面我的电脑图标,属性->高级->环境变量->(系统变量)新建。
用modelsim仿真
使用ModleSim 进行前仿真和后仿真前言由于Quartus 9.1SP1已经说明在Quartus的后续版本不再支持内置的仿真工具,而且Quartus自带的波形仿真工具实在很差,且不能加载testbench,所以使用ModelSim-Altera进行仿真。
本文使用工具的版本是,Quartus II 9.1 sp1, ModelSim Altera 6.4a。
皆以全部破解。
本文的例程是基于特权的《深入浅出玩转FPGA》lesson9,无符号16位乘法器。
要使用Quartus中的Tools -> Run EDA Simulatin Tools -> EDA RTL Simulatio,直接调用ModleSim则需要在Tools -> Options 里设置ModelSim的路径。
如图:使用ModelSim进行前仿真前仿真既功能仿真,在特权配套的lesson9讲解视频中已经做过讲解。
1:在Quartus中选择Assignments -> Settings。
在EDA Tool Settings 选择Simulation,设置Tool name为ModelSim-Altera,Format for output netlist选择Verilog(会生成.vo的Verilog输出文件,若选择VHDL则会生成.vho的VHDL输出文件),其它的可以默认就行。
如图12:添加testbench文件。
点击上图中的TestBenches,选择New新建一个,Test bench name和Top level module in test bench中填入测试文件的模块名,Design instance name in test bench 填入测试文件中例化的源文件模块的例化模块名。
在Testbench files 里点Add,添加已经写好的TestBench测试文件。
如图2:点OK返回。
3,点击Tools -> Run EDA Simulatin Tools -> EDA RTL Simulatio,Quartus会直接调用ModleSim,且vtf_test中的信号已经加入wave中,点RUN all,会运行显示波形。
Modelsim的功能仿真和时序仿真
FPGA 设计流程包括设计输入,仿真,综合,生成,板级验证等很多阶段。
在整个设计流程中,完成设计输入并成功进行编译仅能说明设计符合一定的语法规范,并不能说明设计功能的正确性,这时就需要通过仿真对设计进行验证。
在FPGA 设计中,仿真一般分为功能仿真(前仿真)和时序仿真(后仿真)。
功能仿真又叫逻辑仿真,是指在不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证;而时序仿真是在布局布线后进行,它与特定的器件有关,又包含了器件和布线的延时信息,主要验证程序在目标器件中的时序关系。
在有些开发环境中,如Xilinx ISE 中,除了上述的两种基本仿真外,还包括综合后仿真,转换(post-translate)仿真,映射后(post-map)仿真等,这样做完每一步都可进行仿真验证,从而保证设计的正确性。
ModelSim 是Mentor Graphics 子公司MentorTechnology 的产品,是当今最通用的FPGA 仿真器之一。
ModelSim 功能强大,它支持FPGA 设计的各个阶段的仿真,不仅支持VHDL 仿真,Verilog仿真,而且支持VHDL 和Verilog 混合仿真。
它不仅能做仿真,还能够对程序进行调试,测试代码覆盖率,对波形进行比较等。
ModelSim 有很多版本,像ModelSim/SE 是首要版本,除此之外还有ModelSim/XE 和Model Sim/AE,分别是为Xilinx公司和Altera 公司提供的OEM 版,其中已包含各公司的库文件,故用特定公司OEM 版进行仿真时就不需编译该公司的库了。
用ModelSim 进行功能仿真进行功能仿真首先要检查设计的语法是否正确;其次检查代码是否达到设计的功能要求。
下文主要介绍仿真步骤和测试激励的加载。
仿真步骤(1)建立库并映射库到物理目录因为用ModelSim 进行仿真是建立在仿真库的基础上的(此处进行的是功能仿真,因而不用编译特定厂商的库),所以首先要建立库并把库映射到实际的物理路径。
ISE联合modelsim功能仿真和综合后仿真
ISE联合modelsim功能仿真和综合后仿真1、代码输⼊(1)、新建⼀个ISE⼯程,名字为count4。
(2)、新建⼀个verilog⽂件(3)、选择verilog module 输⼊file name为count4,单击next默认知道finish。
(4)、在count4.v⽂件中输⼊以下代码module count4(out,reset,clk);output [3:0] out;input reset,clk;reg [3:0] out;always@(posedge clk) beginif(reset)out<=0;elseout<=out+1;endendmodule(5)、新建⼀个testbench⽂件(综合时,不参与综合),和第(2)步骤相同(6)、选择 verilog Test Fixture。
(7)、创建完成后,输⼊以下代码module count4_tb;reg clk,reset;wire [3:0] out;parameter DELY=100;count4 mycount(.out(out),.reset(reset),.clk(clk));//count4 mycount(out,reset,clk); 若简写,功能仿真正确,时序仿真会因为端⼝不匹配,//会出错always #(DELY/2) clk=~clk;initial beginclk=0;reset=0;#DELY reset=1;#DELY reset=0;#(DELY*200) $finish;endinitial $monitor($time,,,"clk=%d reset=%d out=%d",clk,reset,out);endmodule注:可以修改⽂件的属性,是否为testbench或者为verilog⽂件。
右击要修改的⽂件。
选择source properties修改属性,simulation为testbench .implementation为正常的verilog⽂件2、功能仿真功能仿真放在综合前⾯,是因为⼤型程序综合需要很长的时间,⽽功能仿真不需要综合,可以先功能仿真,确保代码的正确性。
基于Quartus II + ModelSim SE的后仿真Verilog版
基于Quartus II + ModelSim SE的后仿真(Verilog版)——我的方法可能是比较笨的,请高手指正!By chenhongyi 2007.04.09 EDACN首先大家必须把Quartus II和ModelSim SE都安装好,并成功破解,这个就不说了。
下面我以一个简单的计数器作为例子(文件名:counter.v和test_counter.v)!一、Quartus中的相关设置1. 在Quartus中建立名为counter的工程,设置仿真工具为ModelSim(Verilog),这一步您可以在New Project Wizard中指定(如图1所示),也可以在后面的Assignments->EDA Tool Settings中设置(如图2所示)。
图1 指定仿真工具图2 在Setting中指定仿真工具2.设置完以后,在Quartus中进行全编译counter.v,这样在工程目录下会生成simulation文件夹,内部ModelSim文件夹中有三个文件分别是counter.vo(布局布线后的仿真模型文件),counter_modelsim.xrf(好像是实例化的元件),counter_v.sdo(标准延时输出文件)。
到这里可以关闭Quartus II了!二、ModelSim中手工添加Altera的仿真库在您的ModelSim安装目录中建立二个文件夹,一个是用于存放公用的库我给它取名altera_base_v;另一个是用于存放您要用到的特定的器件库,我用到的是cyclone系列所以命名为cyclone_v。
我是这样建的:<ModelSim安装目录>:\Modeltech_6.2b\win32\altera_lib\altera_base_v<ModelSim安装目录>:\Modeltech_6.2b\win32\altera_lib\cyclone_v1.现在可以启动您的ModelSim SE了。
前仿真和后仿真
功能仿真和时序仿真1推荐仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。
仿真主要分为功能仿真和时序仿真。
功能仿真是在设计输入后进行;时序仿真是在逻辑综合后或布局布线后进行。
1. 功能仿真( 前仿真)功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。
布局布线以前的仿真都称作功能仿真,它包括综合前仿真(Pre-Synthesis Simulation )和综合后仿真(Post-Synthesis Simulation )。
综合前仿真主要针对基于原理框图的设计; 综合后仿真既适合原理图设计,也适合基于HDL 语言的设计。
2. 时序仿真(后仿真)时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。
时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。
3.2.2 仿真工具1. ModelSim 总体概览ModelSim 仿真工具是工业上最流行、最通用的仿真器之一,可支持Verilog 、VHDL 或是VH DL/ Verilog 混合输入的仿真,它的OEM 版本允许Verilog 仿真或VHDL 仿真。
Model 技术公司共开发了ModelSim/VHDL 和ModelSim/Verilog 两种ModelSim 产品,但它又分为不同的版本:OEM 版本——ModelSim/LNL 支持Verilog 或者VHDL ,但是不同时支持;ModelSim/PLUS 版本支持混合仿真Verilog 和VHDL ;ModelSim/SE 版本支持PLUS 的所有功能连同附加功能。
verilog仿真流程
verilog仿真流程一、环境搭建在进行Verilog仿真前,首先需要搭建仿真环境。
常用的Verilog仿真工具有ModelSim、VCS等。
这里以ModelSim为例来介绍环境搭建步骤。
1. 下载ModelSim软件并安装到电脑中,根据软件的安装向导逐步操作即可。
2. 创建一个新的工程,选择File -> New -> Project来创建一个新的工程。
3. 在工程中添加需要仿真的Verilog文件,选择File -> Add to Project -> Existing File来添加Verilog文件。
4. 配置仿真波形,选择Simulate -> Start Simulation来开始仿真。
二、编写Verilog代码在搭建好仿真环境后,接下来就是编写Verilog代码。
Verilog是一种硬件描述语言,通常用来描述数字电路的行为。
Verilog代码由模块、端口和信号等组成,下面是一个简单的Verilog模块示例:```verilogmodule adder(input [7:0] a,input [7:0] b,output [8:0] sum);assign sum = a + b;endmodule```在这个示例中,我们定义了一个名为adder的模块,它有两个8位输入端口a和b,以及一个9位输出端口sum。
在模块体中,我们使用assign语句来实现a和b的加法运算,并将结果赋给sum。
三、编译Verilog代码在编写好Verilog代码后,需要对代码进行编译。
编译的目的是将Verilog代码转换成仿真可执行的二进制文件。
在ModelSim中,可以通过点击Compile按钮或者在命令行中输入vlog命令来进行编译。
```verilogvlog adder.v```这样就会生成一个adder.v文件,里面包含了编译后的二进制代码。
四、仿真测试在编译成功后,接下来就是对设计的Verilog模块进行仿真测试。
ModelSim仿真工具的使用
门级仿真和时序仿真
设置完后,成功编译,quartus II会自动在当前project目录下生成一个 simulation目录,在该目录下有一个Modelsim的文件夹,此文件夹下有仿真所 需要的网表文件及延时反标文件. 如果使用vhdl语言,则网表文件是.vho,反标文件是.sdo;如果使用verilog语 言,则网表文件是.vo,sdf文件也是.sdo.
门级仿真和时序仿真
more settings 中设置如左图 底下的test bench mode name 是*— vlg_vec_tst(对应verilog,*是你的主 程序名),用*_vhd_vec_tst对应vhdl。
然后编译,以后的同上
门级仿真和时序仿真 先在quartus中生成网表文件和时延文件,然后调用modelsim进行仿 真。Quartus II 中设置仿真工具,more settings 也不用设置
Modelsim的安装
Modelsim的安装
使用Modelsim进行仿真 Modelsim运行方式有4种: 用户图形界面模式 交互式命令行模式 不显示modelsim的可视化界面 ,仅通过命令控制台输入的 命令完成所有工作 Tcl和宏模式 编写可执行扩展名为do或者tcl语法文件 批处理模式
其所有操作都在后台进行,用户看不到modelsim的界面,也不需要交 互式输入命令。当工程很大,文件比较多时,用批处理比较方便。直 接运行批处理文件,在后台调用modelsim,执行modelsim的脚本文件 * .do,完成操作
2.建立工程
在modelsim中建立project,选择File ->New ->Project. 在Project Name栏中填写你的项目名字,建议和你的顶层文件名字一 致。Project Location是你的工作目录,你可通过Brose按钮来选择 或改变。Ddfault Library Name可以采用工具默认的work。 Workspace窗口的library中就会出现work库.
VHDL仿真VerilogHDL仿真入门--ModelSim使用简介
VHDL仿真,Verilo g HDL仿真入门--ModelS im使用简介学硬件描述语言当然得实践,就得用软件仿真。
入门其实就是讲下仿真软件怎么用,是很简单的一件事,但是对于刚学的人来说可能有点无从下手。
我之前就有点迷茫,所以写这个入门当自己的笔记,也希望能给自学的新手有所帮助。
仿真VHDL和Veri log HDL并没有什么区别,一般的软件两种语言也都支持,仿真的步骤和方法也都是一样的。
常用的软件有Model Sim和Qu artus II。
Quartu s II功能很强大!实际的工作经常用它,它提供了功能仿真和时序仿真两种方式,但是作为学习HDL 并不方便,因为它com pile编译的时候很慢,对于复杂的逻辑更是要很长时间。
好的一点是,Quartu s II编译后可以清楚的看到它使用了芯片的多少资源,各信号不同的延时等等。
另外,Quartu s II编译后也可以调用第三方的仿真工具,如Model Sim进行仿真。
而Model Sim只完成逻辑功能的仿真,并不考虑具体使用什么器件,学习HDL或者设计逻辑的时候co mpile 一次所用的时间很短,便于调试找出逻辑的错误。
所以初学仿真推荐使用M odelSim。
本文也只讲下用Mode l Sim仿真逻辑的方法。
以下部分基本是参照软件帮助简写的,只是原来是英文的而且说的比较繁琐一些,也更详细内容更多。
详见Mode l Sim菜单H elp--SE PDF Docume ntati on--tutori al。
仿真有两种方法。
一种是Bas ic Simula tion,就是直接建立库,然后编译源文件。
另一种是通过建立Pro ject来仿真,建立Proj ect时软件会为它建立一个库,然后的仿真是一样的。
用quartusII再带的modelsim进行后仿真(时序仿真)的操作步骤
⽤quartusII再带的modelsim进⾏后仿真(时序仿真)的操作步
骤
在实际的项⽬⼯程中,基本上都是在Modelsim进⾏功能仿真后,直接进⾏板级调试(⽤signaltap调试),但是中规中矩的后仿真也不能不会。
操作步骤如下:
1.将quartus II与其⾃带的Modelsim-Altera进⾏关联,quartus II软件中【Tools】--->【Options】,按图1进⾏操作
图1
2.在quartus II软件中进⾏全编译,这时会在⼯程⽂件夹产⽣“simulation”⽂件夹,打开并接着打开“modelsim⽂件夹”,这时⾥⾯会出现10个⽂件,其中“.vo”和“.sdo”是时序仿真需要的⽂件,将他们粘贴到modelsim的⼯程⽂件夹中。
图2
图3
3.接下来还需要Altera的器件库
其中Altera的器件库⽂件在:D:\altera\13.0sp1\modelsim_ase\altera\verilog\altera
D:\altera\13.0sp1\modelsim_ase\altera\verilog\cycloneive
图4
4.将testbench⽂件和“.vo”⽂件加到⼯程上,然后编译,然后右键选择【Add to project】-->【Simulation Configuration】,选择【Work】中的"xxx_tb"⽂件,然后选择【Libraries】中加载刚在粘贴的2个Altera器件库,然后在【SDF】中加载刚才粘贴的“xx.sdo”⽂件,然后点【Save】,最后点击“Simulation”即可进⾏时序仿真。
如图5 、6、7所⽰:
图5
图6
图7 。
Modelsim-仿真方法总结
Modelsim 仿真方法总结Modeling 仿真工具是Model公司开发的。
它支持Verilog、VHDL以及他们的混合仿真.Modelsim各版本的使用方法大体一致,Modelsim仿真主要分为前仿真和后仿真。
下面来具体介绍modelsim的仿真方法,涉及quartus—modelsim联合(使用)仿真的差异会特别提示。
前仿真与后仿真说明1。
1 前仿真前仿真也称为功能仿真、行为仿真.旨在验证电路的功能是否符合设计要求,其特点是不考虑延迟(包括门延迟与线延迟),主要验证电路与理想情况是否一致。
前仿真需要用到RTL级代码(由源代码经过综合后产生)与Testbench。
1。
2)后仿真后仿真也称为时序仿真或者布局布线仿真。
是指在电路已经映射到特定的工艺环境以后,综合考虑门延迟与线延迟的影响,验证电路在一定的时序条件下是否存在时序违规以及能否满足设计构想的过程。
需要用到的文件是——从布局布线结果中抽象出来的门级网表、testbench和后缀名为sdo或者sdf的标准时延文件。
注:扩展名为sdo和sdf的标准时延文件包含门延迟与实际布线延迟,能较好的反应芯片的实际工作情况。
二)modelsim仿真主要有以下几个步骤:(1)建立库并映射库到物理目录;(2)编译源代码(包括Testbench);(3)执行仿真;解释:①库:modelsim中有两类仿真库.一种是工作库,默认名为work;另一种是资源库。
Work库中存放当前工程下所有已经编译过的文件,所以编译前一定要建立一个work 库.资源库存放work库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被存放在不同的资源库内。
(例如要想对综合在cyclone芯片中的设计做后仿真,就需要有一个名为cyclone_ver的资源库.)映射库用于将已经预编译好的文件所在目录映射为一个modelsim可识别的库。
(此即是为仿真库建立一个逻辑映像的行为过程,后面会提到,在modelsim中新建库时,create a new library and a logical mapping to it或a map to an existing libraryd的提示) 上述三个步骤是大的框架,前仿真和后仿真均是按照这个框架进行的,建立modelsim工程对前后仿真来说都不是必须的.下面分别介绍每一步的操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Modelsim 6.0 使用教程1. Modelsim简介Modelsim仿真工具是Model公司开发的。
它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。
对于初学者,modelsim自带的教程是一个很好的选择,在Help->SE PDF Documentation->Tutorial里面.它从简单到复杂、从低级到高级详细地讲述了modelsim的各项功能的使用,简单易懂。
但是它也有缺点,就是它里面所有事例的初期准备工作都已经放在example文件夹里,直接将它们添加到modelsim就可以用,它假设使用者对当前操作的前期准备工作都已经很熟悉,所以初学者往往不知道如何做当前操作的前期准备。
2.安装同许多其他软件一样,Modelsim SE同样需要合法的License,通常我们用Kengen产生license.dat。
⑴.解压安装工具包开始安装,安装时选择Full product安装。
当出现InstallHardware Security Key Driver时选择否。
当出现Add Modelsim To Path选择是。
出现Modelsim License Wizard时选择Close。
⑵.在C盘根目录新建一个文件夹flexlm,用Keygen产生一个License.dat,然后复制到该文件夹下。
⑶.修改系统的环境变量。
右键点击桌面我的电脑图标,属性->高级->环境变量->(系统变量)新建。
按下图所示内容填写,变量值内如果已经有别的路径了,请用“;”将其与要填的路径分开。
LM_LICENSE_FILE = c:\flexlm\license.dat⑷.安装完毕,可以运行。
3. Modelsim仿真方法Modelsim的仿真分为前仿真和后仿真,下面先具体介绍一下两者的区别。
3.1 前仿真前仿真也称为功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电路与理想情况是否一致。
可综合FPGA代码是用RTL级代码语言描述的,其输入为RTL级代码与Testbench.3.2 后仿真后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。
其输入文件为从布局布线结果中抽象出来的门级网表、Testbench和扩展名为SDO或SDF的标准时延文件。
SDO或SDF的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。
一般来说后仿真是必选的,检查设计时序与实际的FPGA运行情况是否一致,确保设计的可靠性和稳定性。
3.3 Modelsim仿真的基本步骤Modelsim的仿真主要有以下几个步骤:建立库并映射库到物理目录;编译原代码(包括Testbench;执行仿真。
3.3.1 建立库在执行一个仿真前先建立一个单独的文件夹,后面的操作都在此文件下进行,以防止文件间的误操作。
然后启动Modelsim将当前路径修改到该文件夹下,修改的方法是点File->Change Directory选择刚刚新建的文件夹见下图。
仿真库是存储已编译设计单元的目录,modelsim中有两类仿真库,一种是工作库,默认的库名为work,另一种是资源库。
Work库下包含当前工程下所有已经编译过的文件。
所以编译前一定要建一个work库,而且只能建一个work库。
资源库存放work库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被放在不同的资源库内。
例如想要对综合在cyclone芯片中的设计做后仿真,就需要有一个名为cyclone_ver的资源库。
映射库用于将已经预编译好的文件所在的目录映射为一个modelsim可识别的库,库内的文件应该是已经编译过的,在Workspace窗口内展开该库应该能看见这些文件,如果是没有编译过的文件在库内是看不见的。
建立仿真库的方法有两种。
一种是在用户界面模式下,点File->New->Library出现下面的对话框,选择a new library and a logical mapping to it,在Library Name内输入要创建库的名称,然后OK,即可生成一个已经映射的新库。
另一种方法是在Transcript窗口输入以下命令:vlib work/* 库名 */vmap work work/* 映射的逻辑名称 存放的物理路径 */ 如果要删除某库,只需选中该库名,点右键选择Delete即可。
需要注意的是不要在modelsim外部的系统盘内手动创建库或者添加文件到库里;也不要modelsim用到的路径名或文件名中使用汉字,因为modelsim可能无法识别汉字而导致莫名其妙的错误。
3.3.2 编写与编译测试文件在编写Testbench之前最好先将要仿真的目标文件编译到工作库中,点Compile->Compile或,将出现下面的对话框,在Library中选择工作库,在查找范围内找到要仿真的目标文件,然后点Compile和Done。
或在命令行输入vlog fulladder.v。
此时目标文件已经编译到工作库中,在Library中展开工作库会发现该文件。
当对要仿真的目标文件进行仿真时需要给文件中的各个输入变量提供激励源,并对输入波形进行的严格定义,这种对激励源定义的文件称为Testbench,即测试台文件。
下面先讲一下Testbench的产生方法。
我们可以在modelsim内直接编写板。
具体步骤如下:⑴.执行File->New->Source->verilog,或者直接点击工具栏上的新建图标,会出现一个verilog文档编辑页面,在此文档内设计者即可编辑测试台文件。
需要说明的是在Quartus中许多不可综合的语句在此处都可以使用,而且testbench只是一个激励源产生文件,只要对输入波形进行定义以及显示一些必要信息即可,切记不要编的过于复杂,以免喧宾夺主。
⑵.Modelsim提供了很多Testbench模板,我们直接拿过来用可以减少工作量。
点View->Source->Show Language Templates然后会出现一个加载工程,接着你会发现在刚才的文档编辑窗口左边出现了一个Language Templates窗口,见下图。
展开Verilog项,双击Creat Testbench会出现一个创建向导,见下图。
选择Specify Design Unit工作库下的目标文件,点Next,出现下面对话框可以指定Testbench的名称以及要编译到的库等,此处我们使用默认设置直接点Finish。
这时在Testbench内会出现对目标文件的各个端口的定义还有调用函数接下来,设计者可以自己往Testbench内添加内容了,然后保存为.v格式即可。
按照前面的方法把Testbench文件也编译到工作库中。
3.3.3 执行仿真因为仿真分为前仿真和后仿真,下面分别说明如何操作。
⑴.前仿真前仿真,相对来说是比较简单的。
在上一步我们已经把需要的文件编译到工作库内了,现在我们只需点simulate->Start Simulation或快捷按钮会出现start simulate对话框。
点击Design标签选择Work库下的Testbench文件,然后点OK即可,也可以直接双击Testbench文件,此时会出现下面的界面。
在主界面中会多出来一个Objects窗口,里面显示Testbench里定义的所有信号引脚,在Workspace里也会多出来一个Sim标签。
右键点击fuladder_tb.v,选择Add->Add to Wave,如下图所示。
然后将出现Wave窗口,现在就可以仿真了,见下图。
形也将继续延伸,见下图.若点,则仿真一直执行,直到点才停止仿真。
也可以在命令行输入命令:run @1000则执行仿真到1000ns,后面的1000也可以是别的数值,设计者可以修改。
在下一次运行次命令时将接着当前的波形继续往后仿真。
对于复杂的设计文件,最好是自己编写testbench文件,这样可以精确定义各信号以及各个信号之间的依赖关系等,提高仿真效率。
对于一些简单的设计文件,也可以在波形窗口自己创建输入波形进行仿真。
具体方法是双击work库里的目标仿真文件fulladder.v,然后点workspace窗口中出现的sim标签,右键点击fuladder,选择Add->Add to Wave,如下图所示。
然后将出现Wave窗口。
在wave窗口中选中要创建波形的信号,如此例中的a,然后右键点击,选择Create/Modify/Wave项出现下面的窗口,在Patterns中选择输入波形的类型,然后分别在右边的窗口中设定起始时间、终止时间以及单位,再点Next出现下面的窗口,我们把初始值的HiZ改为0,然后修改时钟周期和占空比,然后点Finish.接着继续添加其他输入波形,出现下面的结果。
前面出现的红点表示该波形是可编辑的。
后面的操作与用testbench文本仿真的方法相同如果设计者只想查看指定信号的波形,可以先选中objects窗口中要观察的信号,然后点右键选择Add to Wave->Selected signals,见下图,那么在Wave窗口中只添加选中的信号。
如果要保存波形窗口当前信号的分配,可以点File->Save->Format,在出现的对话框中设置保存路径及文件名,保存的格式为.do文件。
如果是想导出自己创建的波形(在文章最后有详细的解释)可以选择File->Export Waveform在出现的对话框中选择EVCD File并进行相关设置即可,如果导入设计的波形选择File->Import ECVD即可。
在主界面中点View->Debug Windows->Dataflow可以看到会出现dataflow窗口,在objects窗口中拖一个信号到该窗口中,你会发现在dataflow窗口中出现你刚才选中信号所在的模块,如果双击模块的某一引脚,会出现与该引脚相连的别的模块或者引线,见下图。
在dataflow窗口中点View->Show Wave,会在dataflow窗口中出现一个wave窗口,双击上面窗口中的某一模块,则在下面的wave窗口中出现与该模块相连的所有信号,如果已经执行过仿真,在wave窗口中还会出现对应的波形,见下图。