modelsim仿真详细过程
modelsim的VHDL仿真

modelsim的VHDL仿真前⾯⽤过vivado⾃带的仿真软件,我这个仿真新⼿发现它不能仿真signal信号,所以改⽤modelsim进⾏仿真,虽然经历了⼀些波折,总归仿出结果了,下⾯记录下仿真过程作为备忘:⾸先新建project ,添加主⽂件.vhd和testbench.vhd,全部编译,如下图即是编译成功:⼀定要在如下library⾥点击仿真,不然可能会出现信号缺失的情况:然后在work下⾯找到testbench中的architecture,右击,simulation:这时⾃动跳到波形界⾯,此时在instance单元左击testbench就会在objects看到输⼊输出信号,但是没有内部型号:左击instance中uut模块就可以看到主⽂件内的signal信号和定义的各种变量常量:这时,就可以将需要的信号抓到观测区,选中需要的信号,右击,add wave:带观测区如下:这时就是最后⼀步了,设置仿真时间点击显⽰,就是点击仿真时间右边的那个run(开始忘记这⼀步,发现总是看不见波形,恼⽕!),其实直接在命令⾏输⼊run也是可以的。
此时就可以看到波形咯!最后放下我两个程序吧,⼀个mystate,⼀个mystate_tb是状态机学习的程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;--------------------------------------------------------ENTITY mystate ISPORT(A,clk,rst: IN STD_LOGIC;output_state: OUT STD_LOGIC);END mystate;--------------------------------------------------------ARCHITECTURE rtl OF mystate ISCONSTANT s0: STD_LOGIC_VECTOR(1downto0):="00";CONSTANT s1: STD_LOGIC_VECTOR(1DOWNTO0):="01";CONSTANT S2: STD_LOGIC_VECTOR(1DOWNTO0):="11";SIGNAL current_state: STD_LOGIC_VECTOR(1DOWNTO0);SIGNAL next_state: STD_LOGIC_VECTOR(1DOWNTO0);BEGINPROCESS(clk,rst)BEGINIF(rst='1') THENcurrent_state<=s0;ELSIF(clk'EVENT AND clk='1') THENcurrent_state<=next_state;END IF;END PROCESS;PROCESS(current_state,A)BEGINCASE current_state ISWHEN s0=>IF(A='0') THENnext_state<=s0;ELSEnext_state<=s1;END IF;WHEN s1=>IF(A='0') THENnext_state<=s2;ELSEnext_state<=s1;END IF;WHEN s2=>next_state<=s0;WHEN OTHERS=>NULL;END CASE;END PROCESS;PROCESS(current_state,A)BEGINCASE current_state ISWHEN s0=>IF(A='0') THENoutput_state<='0';ELSEoutput_state<='1';END IF;WHEN s1=>IF(A='0') THENoutput_state<='1';ELSEoutput_state<='0';END IF;WHEN s2=>IF(A='0') THENoutput_state<='0';ELSEoutput_state<='1';END IF;WHEN OTHERS=>NULL;END CASE;END PROCESS;END rtl;library IEEE;use IEEE.Std_logic_1164.all;use IEEE.Numeric_Std.all;entity mystate_tb isend;architecture bench of mystate_tb is component mystatePORT(A,clk,rst: IN STD_LOGIC;output_state: OUT STD_LOGIC);end component;signal A,clk,rst: STD_LOGIC;signal output_state: STD_LOGIC;constant clock_period: time := 10 ns;signal stop_the_clock: boolean;beginuut: mystate port map ( A => A,clk => clk,rst => rst,output_state => output_state );stimulus: processbeginA<='0';wait for 20ns;A<='1';wait for 20ns;A<='0';wait for 20ns;A<='0';wait;stop_the_clock <= true;wait;end process;clocking: processbeginwhile not stop_the_clock loopclk <= '0', '1'after clock_period / 2;wait for clock_period;end loop;wait;end process;resetmy:PROCESSBEGINrst<='1';wait for30 ns;rst<='0';wait;END PROCESS;end;。
实验五 Modelsim仿真 教案

实验五ﻩModelSim仿真【实验内容】1。
仔细阅读ModelSim软件简要使用说明(下文)。
(“实例代码”压缩包用于ModelSim 软件学习用)2。
Testbench写法简要介绍。
(可以参考“Testbench模版”)3.用ModelSim完成10位全加器的功能仿真。
ModelSim软件简要使用说明ModelSim是对VHDL,Verilog,SystemC以及混合语言编写的设计文件进行仿真和调试的工具软件。
1.仿真流程在ModelSim中对一个设计进行仿真的基本步骤如下图所示:2.仿真具体步骤Create a new project选择“File > New > Project”,会弹出对话框,如图所示:其中:“Project Name”项:填写要创建的工程的名字。
“Project Location”项:确定创建的工程所要存放的位置。
请在E盘下建文件夹!“Default Library Name"项:填写工程的工作库的名字。
注:在用ModelSim进行仿真之前,必须要对设计文件进行编译,生成与设计文件逻辑功能相对应的设计单元。
由于ModelSim是用库文件来进行仿真的,所以编译后的设计单元需要存放在库文件里。
这个库文件叫作“工作库”.926以上三项填写完毕后,点击“OK”按钮,会在指定的位置处创建工程及工作库,如图所示:在工作库文件夹内,有一个名为“_info"的特殊格式文件,如图所示:这个文件指定了此文件夹为ModelSim的工作库文件夹.在编译步骤内生成的所有设计单元都会被添加到工作库文件夹内。
Adding objects to the project在上一步点击OK后,ModelSim会弹出一个对话框,如图所示:其中:“Create New File”项:在工程中创建新的设计文件。
“Add Existing File”项:把已经存在的设计文件加入到工程中。
EDK工程ModelSim仿真流程

EDK工程ModelSim仿真流程前期准备:1.已经安装软件工具:Xilinx ISE 11.1ModelSim 6.5Debussy5.4v92.EDK和ModelSim6.5联合仿真库设置完毕3.EDK和ModelSim6.5可以生成”.FSDB”文件,供Debussy波形查看器观察波形以参加电子设计竞赛的H.264工程为例,进行仿真演示。
1.首先确保工程simulation文件夹下没有文件。
2.如果有文件,要通过如下方式清除,不能直接删除。
3.清除后,点击Simulation Generate Simulation HDLFiles,重新生成工程仿真的库文件。
Console控制台显示生成了Simulation ModelSimulation文件夹下生成了一堆文件。
4.在Simulation文件夹下,找到“system_tb.v”文件,打开,添加如下语句initial begin$dumpfile("aa.fsdb");$dumpvars;end以便仿真时,生成fsdb文件。
5.返回XPS界面,选择Simulation->Launch HDL Simulator,通过这种方式,打开了ModelSim6.5软件6.打开了ModelSim6.5软件,如下图所示7.打开Simulation文件夹中的system_setup.do文件,该文件中存放了系统生成的仿真脚本语句。
8.返回ModelSim6.5,在命令行下先输入“do system.do”命令。
9.输入如下命令“vsim -novopt -t ps D:/modeltech_6.5/win32/novas.dll -Lxilinxcorelib_ver -L secureip -L unisims_ver +notimingchecks system_tb glbl”理由(复制system_setup.do文件中第二条脚本语句”vsim -novopt -t ps -L xilinxcorelib_ver -L secureip -L unisims_ver +notimingchecks system_tb glbl”,注意到要仿真生成fsdb波形文件,所以在ps和-L前添加一条新的语句”D:/modeltech_6.5/win32/novas.dll”,要链接这个“novas.dll”动态链接文件。
modelsim使用教程

modelsim使用教程ModelSim是一款常用的硬件描述语言(HDL)仿真工具,本教程将向您介绍如何使用ModelSim进行仿真。
步骤1:安装ModelSim首先,您需要下载和安装ModelSim软件。
在您的电脑上找到安装程序并按照提示进行安装。
步骤2:创建工程打开ModelSim软件,点击"File"菜单中的"New",然后选择"Project"。
在弹出的对话框中,选择工程的存储位置,并为工程命名。
点击"OK"完成工程创建。
步骤3:添加设计文件在ModelSim的工程窗口中,右键点击"Design"文件夹,选择"Add Existing File"。
然后选择包含您的设计文件的目录,并将其添加到工程中。
步骤4:配置仿真设置在工程窗口中,右键点击"Design"文件夹,选择"Properties"。
在弹出的对话框中,选择"Simulation"选项卡。
在"Top level entity"字段中,选择您的设计的顶层模块。
点击"Apply"和"OK"保存设置。
步骤5:运行仿真在ModelSim的工具栏中,找到"Simulate"按钮,点击并选择"Start Simulation"。
这将打开仿真窗口。
在仿真窗口中,您可以使用不同的命令来控制和观察设计的行为。
步骤6:查看仿真结果您可以在仿真窗口中查看信号波形、调试设计并分析仿真结果。
在仿真窗口的菜单栏中,您可以找到一些常用的查看和分析工具,如波形浏览器、信号分析器等。
步骤7:结束仿真当您完成仿真时,可以选择在仿真窗口的菜单栏中找到"Simulate"按钮,并选择"End Simulation"以结束仿真。
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仿真详解 -回复

modelsim仿真详解-回复什么是ModelSim仿真?ModelSim是一种著名的仿真工具,用于数字和模拟电路的功能仿真和时序仿真。
它是由美国Mentor Graphics公司开发的,提供了一整套的仿真、调试和验证功能,广泛应用于电子设计自动化领域。
ModelSim仿真工具可以模拟数字电路的行为和时序,在仿真过程中可以观察和分析电路的运行状态,以验证设计的正确性。
它支持Verilog和VHDL两种高级硬件描述语言,并且提供了强大的波形编辑和调试功能,便于用户分析和调试设计中的问题。
ModelSim仿真的基本原理和流程是什么?ModelSim仿真的基本原理是利用编译过程将Verilog或VHDL代码转化为可执行的仿真模型,然后通过激励文件对模型进行驱动和刺激,最后观察波形输出并进行分析。
下面是ModelSim仿真的基本流程:1. 编写设计代码:使用Verilog或VHDL语言编写设计代码,包括设计模块、信号连接、时钟和复位逻辑等。
2. 创建测试平台:编写测试平台代码,包括生成激励信号和检查输出结果的内容。
3. 编译设计代码:使用ModelSim提供的编译器将设计代码编译成仿真模型,产生可执行的仿真对象文件。
4. 创建仿真模型:使用ModelSim提供的工具和命令,创建仿真模型并加载仿真对象文件。
5. 配置仿真环境:设置仿真时钟、仿真时间、仿真启动方式等仿真环境参数,准备仿真的相关设置。
6. 运行仿真:启动仿真过程,模拟电路的行为和时序,并根据测试平台的激励信号来驱动设计,产生波形输出。
7. 观察波形:利用ModelSim提供的波形窗口,观察和分析仿真波形结果,验证设计的正确性。
8. 调试和分析:根据波形结果来调试和分析电路中的问题,定位和解决设计中的错误,优化电路的性能。
ModelSim仿真工具的优势是什么?ModelSim仿真工具在电子设计自动化领域具有很高的知名度和广泛的应用,其主要优势如下:1. 支持多种设计语言:ModelSim支持Verilog和VHDL两种常用的硬件描述语言,用户可以根据自己的需求选择合适的语言进行设计和仿真。
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工程对前后仿真来说都不是必须的.下面分别介绍每一步的操作。
Modelsim 仿真步骤减缩版

Modelsim 仿真步骤 Modelsim 仿真主要有以下三个方面:各版本的方法大体一致。 (1)建立库并映射库到物理目录; (2)编译源代码(包括testbench); (3)执行仿真;
(1.1)启动modelsim; (1.2)点击file菜单, (1.3)点击file子菜单中的new,选择project用于新建立一个modelsim工程。(虽然此步非必须,但是建立一个新工程有益于接下来整个仿真文件的管理。)
输入工程名,并指定存盘路径,如下: 编译源代码(包括testbench): 建立一个新工程(同时建立库)后,会自动提示你四个选项。如图:
选create new file后提示对话框,也可以在有源文件的情况下选择add existing file到工程中。 选中一种语言类型,则你即将编写的文件使用的类型。 编写testbench的另一种方法: 在菜单栏选中source>show language templates,
即在源文件左侧出现选项,选择create testbench 出现create testbench wizard,询问design unit name时,只需选中此时已存在于work库中的对应源文件即可,如下图所示: 执行仿真 点击simulate图标,点击library 库中的work库下的测试文件testbench,在Workspace里也会多出来一个Sim标签。例如: 此时右键点击测试文件,选择Add->Add to Wave>选择需要观察的信号.例如: 若还看不到wave窗口,此时可以点击菜单栏中的view菜单下的wave命令,即可弹出wave界面。 点wave菜单栏中的run(可设置仿真时间长度)/run all或按钮 ,再隔一会儿执行stop/…等命令,进行仿真。 最后使用放大镜观察波形并与理想波形对比,从而确定设计电路有无问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由于我们只需要了解仿真的完整过程,所以不需要自己写源文件和测试文件(也称为testbench)。
一下就是简单的源文件和测试文件(亲自测试过)。
//源文件
module compare(equal,a,b);
input a,b;
output equal;
assign equal=(a==b)?1:0;
endmodule
//测试文件
`timescale 1ns/1ns
`include"./compare.v"
module comparetest;
reg a,b;
wire equal;
initial
begin
a=0;
b=0;
#100 a=0;b=1;
#100 a=1;b=1;
#100 a=1;b=0;
#100 $stop;
end
compare compare1(.equal(equal),.a(a),.b(b));
endmodule
有了源文件和测试文件下面就开始用modelsim进行仿真了。
步骤一:新建工程和.v文件(也就是源文件和测试文件)
打开modelsim软件,点击file,选择new—>project 然后就会弹出下面窗口:
然后在project name那一栏写上工程名(随便去,一般是字母),在project location选择工程路径(路径最好没有中文,听说的),然后点OK。
进入下个界面:
然后点击小框里面的“create new file”.弹出界面:
在file name中写下源文件名,由于这是比较两数的大小,我取为:compare。
在“add file as type”中选择verilog,点OK,然后有:
双击compare.v文件会弹出编译窗口:
复制上面源文件代码,粘贴到上图右边窗口里面。
然后点击保存图标,然后再新建测试文件。
点击下图的新建文件图标。
过程如同上。
你会看见下图的两个.v文件。
步骤二:编译文件
在添加文件在已建的工程后,两个文件的status都是问号,编译后就变成勾。
具体步骤为:
点击compile all图标就可以了。
步骤三:仿真,添加波形
选中compare.v文件,点击仿真图标如下图:
接着会弹出界面:
选中comparetest,点击OK,有:
选中compare1 右击鼠标,选择add,继续选择To Wave.,我用的是10.0a版本,还要选择all items in region.然后就有界面:
点击run图标就会出现仿真波形。