modelsim仿真详细过程

合集下载

使用ModelSim仿真入门

使用ModelSim仿真入门

1.点击 ModelSim实验 下载实验文档,保存并解压到D:盘根目录下。

2.启动 ModelSim6.0,执行 File 菜单下的 Change Directory... 命令。

在随后弹出的对话框中,选择 D:\exam 文件夹,点击“OK”按扭。

3.执行 File->New 菜单下的 Library 命令,在随后弹出的对话框上,点击“OK”按钮,建立 work 库。

4.执行 File->New 菜单下的 Project 命令,在随后弹出的对话框的 Project Name 栏,输入 counter,点击“OK”按钮。

5.点击“Use Current Ini”按钮。

6.点击“Add Existing File”图标。

在随后弹出的对话框上,通过点击“Browse...”按钮,选中 D:\exam文件夹下的 tb.v、counter.v 文件,然后点击“OK”按钮。

点击 Add Item to Project 对话框的“Close”按钮。

7.在 Workspace 窗口里,点击右键。

在弹出菜单中点击 Compile 下的 Compile All 命令。

8.在 Simulate 菜单下,点击 Start Simulation... 命令。

9.在随后弹出的对话框中,将 Design Unit 项设为 work 库下 tb 单元,将 Resolution 设为 ns,然后点击“OK”按钮。

10.执行 View->Debug Windows 菜单下的 Wave 命令,打开 Wave 窗口。

11.在 Objects 窗口下,点击右键。

在弹出菜单下,点击 Add to Wave 下的 Signals in Design 命令。

12.在 Transcript 窗口里,输入 run 10 ms 命令。

13.进入 Wave 窗口,观察各个信号的波形,是否与原设计相符。

14.在 Wave 窗口里,双击 cnt 的波形,打开 dataflow 窗口,观察各个信号传递关系。

Modelsim 自动化仿真平台搭建

Modelsim 自动化仿真平台搭建

Modelsim do文件的自动化仿真 创建虚拟信号
虚拟信号可以把实际信号转化为更人性化的信号,比如将信号的数值转化为字符显示,例如状 态机的跳转可以用虚拟信号标注这样更清晰。
virtual type { {1 IDLE} {2 READ} {4 WRITE} {8 STOP} } state_struc 以上简历一个虚拟的结构体,结构体的名字叫state_struc
Modelsim do文件的自动化仿真 Tcl语言的语法
vlib:创建库。格式vlib <library name>,默认库的名字为work 示例: vlib work vmap:映射逻辑库名,将逻辑库名映射库路径。语法格式vmap work <library name> 示例:vlib work work vdir:显示指定库的内容 。语法格式vdir –lib <library name> 示例:vdir –lib work vlog:编译Verilog 源代码,库名缺省编译到work本地库,文件按顺序编译。语法格式 vlog
modelsim将加载两次,这种结果不是我们想要的。 .SDO文件并不是标准的延时文件,如果想转到标准的延迟文件可以用以下命令,sdf文件比
sdo文件小加载速度快。sdf文件采用了gzip压缩。 sdfcom netlist/my_design.sdo netlist/my_design.sdf
Modelsim 自动化仿真平台源自Modelsim GUI仿真流程
1. 打开Modelsim 软件,建一个工程文件夹,简历Modelsim 仿真工程。 2. 在用户窗口界面加入需要仿真的所有代码和库文件。 3. 编译有文件 4. 选择testbench顶层文件启动仿真。 5. 选择所要观察的目标信号,并将其加入到波形观察窗口,如需更改bus显示

第4章 基于ModelSim的仿真

第4章 基于ModelSim的仿真

工作区
脚本区
命令输入
数据流窗口
数据流窗口(Dataflow)是一般仿真软件都提供的 一个通用窗口,通过该窗口可以跟踪设计中的物理连 接,跟踪设计中事件的传播,也可以用来跟踪寄存器、 网线和进程,极大地丰富了调试方法。数据流窗口中 可以显示进程(可以是 Verilog 的一个模块) 、信 号、网线和寄存器等,也可以显示设计中的内部连接。 窗口中有一个内置的符号表,映射了所有的 Verilog 基本门,例如与门、非门等,这些符号可以在数据流 窗口中显示。其他的 Verilog 基本组件可以使用模 块或者用户定义的符号在数据流窗口中显示。
22
6.开始仿真 点击workspace下的sim,点击count_tp,选择add add to wave 然后点run –all,开始仿真
23
7.退出仿真 在仿真调试完成后退出仿真,在主窗口中选择simulate end simulation
24
补充:
(1)也可以不加testbench,仿真步骤跟前面相似, 装载文件时双击muxtop 在sim中点击muxtop,add add to wave 对输入信号sel、a、b编辑测试波形
4.1.4 ModelSim调试功能
在波形窗口中监视信号,查看仿真的波形
改变当前目录到要变异的文件所在的目录 建立工作库并编译相关源文件 加载设计的激励文件 向波形窗口中添加项目,即要监视的信号 缩放波形显示 在波形窗口中使用光标 保存波形窗口格式
4.1.4 ModelSim调试功能
4.1.5功能仿真
功能仿真需要的文件
1.设计HDL源代码:可以使VHDL语言或Verilog语言。 2.测试激励代码:根据设计要求输入/输出的激励程序 3.仿真模型/库:根据设计内调用的器件供应商提供的模块而定,如:FIFO、 ADD_SUB等

重要】详细介绍使用modelsim对lpm作仿真的步骤操作

重要】详细介绍使用modelsim对lpm作仿真的步骤操作

如何使用ModelSim對Megafunction或LPM作仿真? (SOC) (MegaCore) (ModelSim)Abstract在FPGA開發中,常會用到Altera所提供的Megafunction與LPM加速開發,這要如何使用ModelSim作仿真呢?Introduction使用環境:Quartus II 8.1 + ModelSim-Altera 6.3g_p1 + ModelSim SE 6.3e在(筆記) 如何使用ModelSim作前仿真與後仿真? (SOC) (Quartus II) (ModelSim)中,提到如何使用ModelSim對Verilog作仿真,包含前仿真與後仿真,若使用了Altera的Megafunction 與LPM,則仿真的方法稍有不同,本文分別使用ModelSim-Altera與ModelSim SE,並對Megafunction:dcfifo作仿真。

my_dcfifo.v / Verilog使用MegaWizard產生的dcfifo。

1// megafunction wizard: %FIFO%2// GENERATION: STANDARD3// VERSION: WM1.04// MODULE: dcfifo56// ============================================================7// File Name: my_dcfifo.v8// Megafunction Name(s):9// dcfifo10//11// Simulation Library Files(s):12// altera_mf13// ============================================================ 14// ************************************************************ 15// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!16//17// 8.1 Build 163 10/28/2008 SJ Full Version18// ************************************************************ 192021//Copyright (C) 1991-2008 Altera Corporation22//Your use of Altera Corporation's design tools, logic functions 23//and other software and tools, and its AMPP partner logic24//functions, and any output files from any of the foregoing25//(including device programming or simulation files), and any26//associated documentation or information are expressly subject 27//to the terms and conditions of the Altera Program License28//Subscription Agreement, Altera MegaCore Function License29//Agreement, or other applicable license agreement, including, 30//without limitation, that your use is for the sole purpose of31//programming logic devices manufactured by Altera and sold by 32//Altera or its authorized distributors. Please refer to the33//applicable agreement for further details.343536// synopsys translate_off37 `timescale 1 ps / 1 ps38// synopsys translate_on39module my_dcfifo (40 aclr,41 data,42 rdclk,43 rdreq,44 wrclk,45 wrreq,46 q,47 rdempty,48 rdusedw,49 wrfull);5051input aclr;52input [7:0] data;53input rdclk;54input rdreq;55input wrclk;56input wrreq;57output [7:0] q;58output rdempty;59output [4:0] rdusedw; 60output wrfull;6162wire sub_wire0;63wire sub_wire1;64wire [7:0] sub_wire2;65wire [4:0] sub_wire3;66wire rdempty = sub_wire0;67wire wrfull = sub_wire1;68wire [7:0] q = sub_wire2[7:0];69wire [4:0] rdusedw = sub_wire3[4:0];7071 dcfifo dcfifo_component (72 .wrclk (wrclk),73 .rdreq (rdreq),74 .aclr (aclr),75 .rdclk (rdclk),76 .wrreq (wrreq),77 .data (data),78 .rdempty (sub_wire0),79 .wrfull (sub_wire1),80 .q (sub_wire2),81 .rdusedw (sub_wire3)82// synopsys translate_off83 ,84 .rdfull (),85 .wrempty (),86 .wrusedw ()87// synopsys translate_on88 );89defparam90 dcfifo_component.intended_device_family = "Cyclone II",91 dcfifo_component.lpm_hint = "MAXIMIZE_SPEED=5,",92 dcfifo_component.lpm_numwords = 32,93 dcfifo_component.lpm_showahead = "OFF",94 dcfifo_component.lpm_type = "dcfifo",95 dcfifo_component.lpm_width = 8,96 dcfifo_component.lpm_widthu = 5,97 dcfifo_component.overflow_checking = "ON",98 dcfifo_component.rdsync_delaypipe = 4,99 dcfifo_component.underflow_checking = "ON",100 dcfifo_e_eab = "ON",101 dcfifo_component.write_aclr_synch = "OFF",102 dcfifo_component.wrsync_delaypipe = 4;103104105endmodule106107// ============================================================ 108// CNX file retrieval info109// ============================================================ 110// Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0"111// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1"112// Retrieval info: PRIVATE: AlmostFull NUMERIC "0"113// Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1"114// Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0"115// Retrieval info: PRIVATE: Clock NUMERIC "4"116// Retrieval info: PRIVATE: Depth NUMERIC "32"117// Retrieval info: PRIVATE: Empty NUMERIC "1"118// Retrieval info: PRIVATE: Full NUMERIC "1"119// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone I I"120// Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0"121// Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1"122// Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0"123// Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0"124// Retrieval info: PRIVATE: Optimize NUMERIC "2"125// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0"126// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" 127// Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0"128// Retrieval info: PRIVATE: UsedW NUMERIC "1"129// Retrieval info: PRIVATE: Width NUMERIC "8"130// Retrieval info: PRIVATE: dc_aclr NUMERIC "1"131// Retrieval info: PRIVATE: diff_widths NUMERIC "0"132// Retrieval info: PRIVATE: msb_usedw NUMERIC "0"133// Retrieval info: PRIVATE: output_width NUMERIC "8"134// Retrieval info: PRIVATE: rsEmpty NUMERIC "1"135// Retrieval info: PRIVATE: rsFull NUMERIC "0"136// Retrieval info: PRIVATE: rsUsedW NUMERIC "1"137// Retrieval info: PRIVATE: sc_aclr NUMERIC "0"138// Retrieval info: PRIVATE: sc_sclr NUMERIC "0"139// Retrieval info: PRIVATE: wsEmpty NUMERIC "0"140// Retrieval info: PRIVATE: wsFull NUMERIC "1"141// Retrieval info: PRIVATE: wsUsedW NUMERIC "0"142// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II"143// Retrieval info: CONSTANT: LPM_HINT STRING "MAXIMIZE_SPEED=5," 144// Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "32"145// Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF"146// Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo"147// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8"148// Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "5"149// Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON"150// Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "4"151// Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON"152// Retrieval info: CONSTANT: USE_EAB STRING "ON"153// Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF"154// Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "4"155// Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND aclr156// Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] 157// Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL q[7..0]158// Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL rdclk159// Retrieval info: USED_PORT: rdempty 0 0 0 0 OUTPUT NODEFVAL rdempty 160// Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq161// Retrieval info: USED_PORT: rdusedw 0 0 5 0 OUTPUT NODEFVAL rdusedw [4..0]162// Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL wrclk163// Retrieval info: USED_PORT: wrfull 0 0 0 0 OUTPUT NODEFVAL wrfull 164// Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq165// Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0166// Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0167// Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0168// Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0169// Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0170// Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0171// Retrieval info: CONNECT: rdempty 0 0 0 0 @rdempty 0 0 0 0172// Retrieval info: CONNECT: rdusedw 0 0 5 0 @rdusedw 0 0 5 0173// Retrieval info: CONNECT: wrfull 0 0 0 0 @wrfull 0 0 0 0174// Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0175// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components. all176// Retrieval info: GEN_FILE: TYPE_NORMAL my_dcfifo.v TRUE177// Retrieval info: GEN_FILE: TYPE_NORMAL my_dcfifo.inc FALSE178// Retrieval info: GEN_FILE: TYPE_NORMAL my_dcfifo p FALSE179// Retrieval info: GEN_FILE: TYPE_NORMAL my_dcfifo.bsf FALSE180// Retrieval info: GEN_FILE: TYPE_NORMAL my_dcfifo_inst.v FALSE181// Retrieval info: GEN_FILE: TYPE_NORMAL my_dcfifo_bb.v TRUE182// Retrieval info: GEN_FILE: TYPE_NORMAL my_dcfifo_waveforms.html TR UE183// Retrieval info: GEN_FILE: TYPE_NORMAL my_dcfifo_wave*.jpg TRUE184// Retrieval info: LIB_FILE: altera_mfmy_dcfifo_tb.v / Verilogdcfifo的testbench。

【仿真】【modelsim】:verilog功能仿真流程

【仿真】【modelsim】:verilog功能仿真流程

【仿真】【modelsim】:verilog功能仿真流程⼀、编写verilog源⽂件,在diamond中编译。

编写testbench⽂件。

在diamond设置中将仿真⼯具设置为modelsim,运⾏仿真向导⼆、⾃动进⼊modelsim, 编译全部 运⾏仿真---library的work下,选则测试⽂件,右键仿真 点击运⾏到或者运⾏⼀段等testbench实例1 `timescale 1 ns/ 1 ps2module clk_tb();3// constants4// general purpose registers5reg eachvec;6// test vector input registers7reg CLK;8reg RSTn;9reg KEY_set;10reg KEY_add;11wire lcd_rst,sce,sclk,sdin,cd;1213// assign statements (if any)14 top sim15 (16 .CLK(CLK),17 .RSTn(RSTn),18 .KEY_set(KEY_set),19 .KEY_add(KEY_add),20 .lcd_rst(lcd_rst),21 .sce(sce),22 .sclk(sclk),23 .sdin(sdin),24 .cd(cd)25 );26initial27begin28 CLK = 0;29forever #25 CLK = ~CLK;30end3132initial33begin34 RSTn =1;35 #200 RSTn = 0;36 #300 RSTn = 1;37end3839initial40begin41 KEY_set =1;42 #1000 KEY_set =~KEY_set;43end4445endmodule1/**************************************************2module: DDS_test3author: wanganran4description: The testbench for module DDS5input:6output:7date: 2015.11.058**************************************************/9 `timescale 1ns / 100ps1011module DDS_test;1213parameter CLK_PERIOD = 40; //CLK_PERIOD=40ns, Frequency=25MHz1415reg sys_clk;16initial17 sys_clk = 1'b0;18always19 sys_clk = #(CLK_PERIOD/2) ~sys_clk;2021reg sys_rst_n; //active low22initial23begin24 sys_rst_n = 1'b0;25 #200;26 sys_rst_n = 1'b1;27end2829wire dac_clk_out;30wire [9:0] dac_data_out;31 DDS DDS_uut32 (33 .clk_in(sys_clk), //clock in34 .rst_n_in(sys_rst_n), //reset, active low35 .dds_en_in(1), //dds work enable36 .f_increment(24'h10000), //frequency increment37 .p_increment(0), //phase increment38 .dac_clk_out(dac_clk_out), //clock out39 .dac_data_out(dac_data_out) //data out40 );4142endmoduleView Code⼆、带IP核仿真遇到问题仿真⼯具,diamond⾃带activeHDL错误描述,仿真PLL时结果正常,仿真ROM的时候出现问题 # ELAB2: Fatal Error: ELAB2_0036 Unresolved hierarchical reference to "PUR_INST.PURNET" from module "FifoTest_tb.rom.rom_0_3" (module not found). ELAB2: Fatal Error: ELAB2_0036 Unresolved hierarchical reference to "PUR_INST.PURNET" from module "FifoTest_tb.fifo.FifoMacro_0_3" (module not found).问题解决,在仿真顶层⽂件中加GSR GSR_INST (.GSR (<global reset sig>));PUR PUR_INST (.PUR (<powerup reset sig>));即可括号中的具体参数可写为1’b1,即三、仿真波形的个性化1.颜⾊和线条等设置2.波形数据模拟显⽰。

用ModelSim仿真带测试文件的流程

用ModelSim仿真带测试文件的流程

执行以下步骤的环境是,计算机上安装了ModelSim。

其中由于ModelSim软件不支持中文,空格的安装路径,所以其他各软件的安装路径也不能包含中文与空格,否则会导致ModelSim 软件不能正常运行。

下面以二与门为例进行说明。

一.首先使用某种文本编辑器,编写程序and_2.v与验证测试程序and2_test.v。

module and_2(A,B,F);// and_2.vinput A,B;output F;and U(F,A,B);endmodule`timescale 10ns/1ns //The unit of simulation and precision is 1ns. and2_test.v//'timescalemodule and_2_test; //ce shi di ceng mo kuaireg A,B; //shu ru ding yi wei ji cun qi xingwire F; //shu chu ding yi wei xian wang xingand_2 and_2(A,B,F); //diao yong di ceng mo kuaiinitialbeginA=0;B=0;#100 A=1;#100 A=0;B=1;#100 A=1;#200 $finish;endendmodule二.如果对已经存在的具有测试程序的ModelSim工程进行仿真,则双击工程文件,转第七步。

如果是第一次运行,则在ModelSim主窗口中,单击File-〉New-〉Project…进行新建工程的工作。

三.在出现的Creat Project对话框中输入工程名、工程路径以及缺省库名(一般这库名work 不用改)。

四.在出现的Add items to the Project对话框中,单击Add Existing File,在出现的Add file to Project对话框中点击Browse…找到刚才的and_2.v与验证测试程序and2_test.v。

Modelsim工具的一般仿真流程

Modelsim工具的使用一、仿真流程1.建立work库通常modelsim在使用的时候,和大多数开发软件一样,第一步先建立一个工程。

而modelsim在建立工程之前,一般都要建立一个工作库(library),命名为work,仿真的时候工程就运行在这个库里面。

通常modelsim在第一次运行的时候,并没有work这个库文件,所以没有work库的话,先建立一个work的library,再建立新的工程。

一般的工程路径设置如下:project→放置FPGA的工程文件,source→放置源代码(ipcore,建议放在工程的根目录下,有同事发现ipcore改变其路径,仿真的时候会出错,并且工程里面要手动添加IP核的文件),simulation→放置modelsim的仿真工程。

新建一个work库。

File→New-→Library刚建立的work库是空的,因为里面什么东西都没有,但是当添加了相应的文件后,编译一次,work就会有内容了。

新建的Work,右键设置Edit一下他的属性,如图上所示,pathname这里指定到存放仿真工程的work的库文件夹即可。

2.建立新工程File—>New- Project然后就会弹出如下对话框,选择好工程的路径,命名好工程名字。

,如果之前就已经编写好了v或者vhd文件的话,直接选择add existing file,否则,选择Create New File。

接下来把所有的v或者vhd的文件都添加进来。

3.编写testbench……4.编译整个工程编写完testbench之后,编译整个工程,以后每当工程中其中一个文件修改后,只需单独编译修改的那个文件即可。

(参见文档最后部分的例子)编译完后,会发现在Project中,里面的文件都会打钩,并且在simulation文件夹里面的子文件夹work会多了一些东西出来。

返回到Library这里,会发现之前是空的wrok文件库里面,现在也多了一些东西。

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/…等命令,进行仿真。 最后使用放大镜观察波形并与理想波形对比,从而确定设计电路有无问题。

modelsim仿真顶层模块

modelsim仿真顶层模块模拟仿真是电子设计自动化(EDA)的关键步骤之一,它可以帮助工程师在设计过程的早期发现和解决问题。

在很多数字电路设计中,顶层模块是一个非常重要的模块,它作为整个电路的主要组成部分,负责整体功能的实现和协调。

这篇文章将详细介绍如何在ModelSim仿真环境下创建和调试顶层模块。

一、创建顶层模块在开始创建顶层模块之前,需要确认已经完成了底层模块的设计和仿真验证。

底层模块是指电路中的各个子模块,它们负责具体的功能实现。

一旦确定了底层模块,就可以开始创建顶层模块了。

首先,在ModelSim中创建一个新的项目。

选择File菜单下的New Project,然后填写项目的名称和路径。

接下来,添加顶层模块的源代码文件。

在ModelSim 的Project面板上,选择Add to Project,在弹出的对话框中选择要添加的文件。

创建完毕后,可以在源代码编辑器中编写顶层模块的代码。

顶层模块通常由各个底层模块的例化实例组成,以实现整体的功能。

根据设计需求,可以自由地进行端口的连接和信号的中间处理。

二、编译顶层模块一旦顶层模块的代码编写完成,接下来就需要进行编译。

编译是将源代码转化为仿真模型的过程,它能够检测到代码中的语法错误和逻辑错误,并生成可以在仿真中使用的模型。

在ModelSim中,选择Compile选项,并进行编译设置。

根据需要,可以选择编译所有的文件或者只编译顶层模块。

编译完成后,ModelSim会生成一个仿真模型文件,该文件可以加载到仿真环境中进行后续操作。

三、设置仿真环境在编译完成后,需要设置仿真环境的参数。

首先,选择Simulation面板,在工具栏上选择Compile,输入仿真模型的路径。

然后,在Tools菜单中选择Options,打开仿真设置对话框。

在仿真设置对话框中,可以设置仿真的时钟周期、仿真的时间范围、信号的显示参数等。

根据实际需要,进行相应的设置。

另外,在弹出的对话框中还可以设置仿真的基本选项,如仿真的精度、延时模型等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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图标就会出现仿真波形。

相关文档
最新文档