ModelSim仿真常用命令以及仿真脚本的编写
谢谢很好!
谢谢很好! 要发表评论,请先登录 或 注册
星期二, 05/11/2010 - 16:03 — FPGA菜鸟
相关文章
“安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛---基于FPGA的电机故障在线诊断方法 “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛------基于FPGA的Sigma-Delta数据采集系统 “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛------Spartan3硬件乘法器使用详解(5) “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛------Spartan3硬件乘法器使用详解(4) “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛------Spartan3硬件乘法器使用详解(3) “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛------Spartan3硬件乘法器使用详解(2) “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛------Spartan3硬件乘法器使用详解(1) 基于Virtex5的婴幼儿智能监护助理---“安富利杯”赛灵思FPGA设计技巧与应用创新博文
现在通过一个具体的实例来说明如何运用脚本来实现ModelSim的仿真。
工具版本:ISE10.1 ,ModelSim 6.5a
1. 创建ISE工程
首先通过ISE创建test.vhd 和test_tb.vhd文件并添加到工程中,这里不细说如何创建HDL源代码。
然后配置ISE的仿真器,右键选中FPGA芯片,点击properties,然后在Simulator选择Modelsim-SE VHDL。
对我们来说最有用的就是test_tb.fdo文件了,只要稍微修改就可以成为一个针对这个工程的很好的用于仿真的脚本。当然我们可以自己手动来编写类似的脚本,用ISE自动生 成主要是为了涂个省事。
2.调用ModelSim进行仿真
在图2中,Process窗口中双击Simulate Behavioral Model,进入ModelSim仿真环境。请仔细观察ModelSim Transcript窗口中消息的输出。内容如下:
ModelSim仿真常用命令以及仿真脚本的编写 | 赛灵思中文社区
页码,1/3
ModelSim仿真常用命令以及仿真脚本的编写
在我们用ModelSim仿真的时候经常是修改一点一点修改代码,这样会造成一个无奈的操作循环:修改代码--->编译代码--->仿真设置--->进入仿真页面--->添加需要观察的波 形--->运行仿真。如果仿真结果不理想,还得需要重新修改代码,重复上述的操作。
然后可以观察到仿真波形文件。
图3.仿真波形
/blog/630
2010-7-23
ModelSim仿真常用命令以及仿真脚本的编写 | 赛灵思中文社区
页码,3/3
ቤተ መጻሕፍቲ ባይዱ
3. 调试代码
或许仿真出来的结果不是我们想要的,必须的修改代码,然后再仿真。那我们应该怎么办呢?
在trasncript窗口输入: 1: quit -sim #退出仿真 2: do test_tb.fdo #修改代码完成后重新执行该脚本进行仿真 在仿真的波形的时候,我们不仅仅希望看到Top层设计的端口信号的波形,还希望能观察到内部信号是如何变化的,所以我们在Sim窗口中找到内部的信号放到wave中进行 观察。但是如果我们重新运行当初test_tb.fdo文件,我们又再一次只能看到Top层设计的端口信号的波形,而内部信号的波形已经被删除。那我们应该如何保存和运用我们仿 真波形文件呢?
我现在需要观察内部的一个寄存器输出:tmp信号,见图4。Ctrl+S,保存波形文件。默认保存为工程目录下/wave.do,但是我们将用波形文件保存为test_tb_wave.fdo文 件,这样做的好处可以不用修改test_tb.fdo文件。
图4.内部信号观察 我们重新运行test_tb.fdo脚本文件之后,输出的波形是图4,而不是图3。 差不多常用的VHDL仿真命令都用上了,我相信这样做肯定会提高仿真的效率。如果想要熟悉更多的ModelSim的仿真命令,请查看ModelSim的用书手册。 欢迎交流!
下面的代码是AES256_tb.fdo文件的内容。
1: vlib work #创建名字是work的库,这个仿真之前必须做的 2: vcom -explicit -93 "SBOX_ROM.vhd" #编译vhd代码 3: vcom -explicit -93 "Inv_SBOX_ROM.vhd" 4: vcom -explicit -93 "AES_package.vhd" 5: vcom -explicit -93 "subbytes.vhd" 6: vcom -explicit -93 "SBOX_ROM_reg.vhd" 7: vcom -explicit -93 "round_key_BRAM.vhd" 8: vcom -explicit -93 "Inv_subbytes.vhd" 9: vcom -explicit -93 "Keyexpansion_Yao.vhd" 10: vcom -explicit -93 "AES256_ENC_DEC.vhd" 11: vcom -explicit -93 "AES256_TOP.vhd" 12: vcom -explicit -93 "AES256_tb.vhd" 13: vsim -t 1ps -lib work AES256_tb #进入仿真设置,时间单位为1ps,库指定为work,AES256_tb就是指你的top层设计的名字 14: do {AES256_tb_wave.fdo} #执行*.fdo文件,用来添加信号和变量或者内部的寄存器到波形(WAVE)窗口 15: view wave #打开波形窗口 16: view structure #打开架构(structure)窗口 17: view signals #打开信号列表窗口 18: run 1000ns #运行1000ns 19: do {AES256_tb.udo} #运行用户定义的脚本 只要编译的时候没有出现语法错误或者是找不到定义的库文件等错误提示,一般会很容易的看到仿真的波形,而不用手动进行操作。这样方便了仿真的整个过程,而无需用 很多鼠标点击操作。
1: # do {test_tb.fdo} #<-------执行脚本文件 2: # ** Warning: (vlib-34) Library already exists at "work". 3: # Model Technology ModelSim SE vcom 6.5 Compiler 2009.01 Jan 22 2009 #<-----编译test.vhd得到的message 4: # -- Loading package standard 5: # -- Loading package std_logic_1164 6: # -- Loading package std_logic_arith 7: # -- Loading package std_logic_unsigned 8: # -- Compiling entity test 9: # -- Compiling architecture test of test 10: # Model Technology ModelSim SE vcom 6.5 Compiler 2009.01 Jan 22 2009 #<-----编译test.vhd得到的message 11: # -- Loading package standard 12: # -- Loading package std_logic_1164 13: # -- Loading package std_logic_arith 14: # -- Loading package std_logic_unsigned 15: # -- Compiling entity test_tb 16: # -- Compiling architecture behavior of test_tb 17: # vsim -lib work -t 1ps test_tb #仿真设置命令行 18: # Loading std.standard 19: # Loading ieee.std_logic_1164(body) 20: # Loading ieee.std_logic_arith(body) 21: # Loading ieee.std_logic_unsigned(body) 22: # Loading work.test_tb(behavior)#1 #加载test_tb 23: # .main_pane.wave.interior.cs.body.pw.wf #打开wave窗口 24: # .main_pane.structure.interior.cs.body.struct #列出structure 25: # .main_pane.objects.interior.cs.body 注:在test_tb.fdo的每一行都可以在ModelSim Transcript窗口中分开一行一行执行。
计算机擅长做重复的事情,为什么不让计算机代劳呢?
我们可以参照Xilinx ISE是如何调用ModelSim进行仿真的,尤其是脚本的编写。
下面一个脚本是我用ISE10.1建立了一个AES256的工程,然后在调用ModelSim6.5的时候,ISE会生成这几个脚本文件,AES256_tb.fdo, AES256_tb_wave.fdo 和 AES256_tb.udo。
图1. 工程属性
在source窗口选择“Behavioral Simulation”,可以看到工程中的test_tb.vhd(testbench文件)。选中test_tb.vhd文件,在Process窗口中双击Simulate Behavioral Model, ISE开始调用ModelSim,这是ISE自动生成了三个脚本文件:test_tb.fdo, test_tb_wave.fdo和test_tb.udo。
modelsim编写do仿真文件一些经验
Modelsim的do文件写法及体会采用TCL脚本语言编写的.do文件,在modelsim中执行do文件可以自动进行仿真。
比起在modelsim中新建仿真工程或者在ISE中调用modelsim仿真都要好得多,而且方便快捷。
下面是编写do文件的一般步骤:1.quit –sim-――首先退出原来仿真的工程。
2.cd ―――设置工作目录的路径,就是你所要建立的工作目录work要放在哪里。
3.vlib work―――在工作目录下建立一个work目录,请注意不要用操作系统直接新建一个work的文件夹,因为用操作系统建立的work文件夹并没有modelsim SE自动生成的_info文件。
还有个问题是,当你的软件工程里需要用到软核时,可能会需要一些库,但这些库ISE软件中是没有的,此时就需要我们自己新建库了,并映射到当前目录下。
我们只自己新建的库一般放在work库前面建立。
4.vmap work―――将新建的work库映射到当前工作目录下(当前目录就是第一步中的目录了)。
其他新建的库也要这样的方法映射。
5.vlog +acc –work work “file_path/*.v”―――编译“file_path”目录下所有.v文件,并将其添加进工作库(work)中,包括IP生成的V文件也要编译的。
编译时可以分开单独编译,但是一定要注意顺序,先编译被调用的文件。
在仿真的时候还需要用到一个文件,那就是glbl.v这个库文件。
它是存放在xilinx安装目录下,我们直接编译它并添加时工作库(work)就可以了。
特别需要说明的是,在仿真软核的时候,在XPS软件里点击如下图所示:此时会在工程目录中生成一个simulaton文件夹,这个文件夹里的东西就是软核仿真时所需要的仿真文件了。
所以我们需把simulaton 里所以的v文件都编译一次,这样才能仿真软核。
6.vism –t ps –novopt work.demo_tb―――这是没有调用IP Core时的仿真命令,注意后面的参数demo_tb必须为Testbench中的模块名。
【仿真】【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新手入门仿真教程1.打开modelsim软件,新建一个library。
2.library命名3.新建一个工程。
3.出现下面界面,点击close。
4.新建一个verilog文件键入主程序。
下面以二分之一分频器为例。
文件代码:module half_clk(reset,clk_in,clk_out); input clk_in,reset;output clk_out;reg clk_out;always@(negedge clk_in)beginif(!reset)clk_out=0;elseclk_out=~clk_out;endendmodule编辑完成后,点击保存。
文件名要与module后面的名称相同。
5.再新建一个测试文件,步骤同上面新建的主程序文件,文件名后缀改为.vt程序代码如下:`timescale 1ns/100ps`define clk_cycle 50module top;reg clk,reset;wire clk_out;always #`clk_cycle clk=~clk;initialbeginclk=0;reset=1;#10 reset=0;#110 reset=1;#100000 $stop;endhalf_clk m0(.reset(reset),.clk_in(clk),.clk_out(clk_out));Endmodule6.添加文件,编译文件先右键点击左边空白处,选择add to project→existing File选择刚刚新建的两个文件。
按ctrl键可以同时选择两个,选择打开,下一步点击ok7选中其中一个,右键,选择complie→complie all出现两个勾,说明编译通过。
出现×,说明文件编译出错,双击×,可以查看错误。
8.终于可以仿真了选择simulate→start simulate。
选择刚刚新建的库里面的top,或者测试文件名称,左下角的enable optimization一定要去掉勾,有勾的画不会出来波形,一定要去掉勾!一定要去掉勾!一定要去掉勾!(本人也不清楚原因,都是初学者,嘻嘻)跳出界面,右键测试文件,选择如下图接下来,选择仿真,run→run all点击缩小键,如图,就可以看到波形啦到此结束!初学者,如有错误,欢迎指出。
modelsim使用技巧
modelsim使用技巧ModelSim是一款常用的仿真工具,用于学习、开发和测试各种数字电路和系统设计。
它提供了大量的功能,可以帮助我们更好地进行仿真、调试和性能优化。
但是,对于初学者来说,熟练使用ModelSim可能需要一些时间和实践。
在本文中,我们将介绍一些ModelSim的使用技巧,以帮助读者更好地掌握这个工具。
一、基本操作1.创建工程在ModelSim中,创建工程是第一步。
可以通过File -> New -> Project来创建一个新的工程。
在工程创建过程中,需要指定工作目录、项目名称和工具链等信息。
在创建工程后,可以右键单击仿真文件夹,并选择添加到工程来添加设计文件。
2.添加仿真文件在ModelSim中,添加仿真文件非常简单。
可以将文件拖放到仿真文件夹、使用File -> Add to Project选项或使用命令行方式添加文件。
一旦添加了仿真文件,可以使用filelist命令查看所有添加的文件。
3.编译设计在ModelSim中,编译由两个阶段组成。
第一阶段称为分析阶段,在此阶段中,设计的各个模块被分析、组合并建立数据结构。
第二阶段称为综合阶段,在此阶段中,数据结构被综合成一个整体,并生成仿真网表。
可以通过compile option来指定编译选项,比如-v库等。
4.运行仿真在ModelSim中,可以通过三种方式来运行仿真。
第一种是在命令行中使用run命令,第二种是通过菜单和工具栏选项来启动仿真,第三种是使用脚本方式启动仿真。
在仿真过程中,可以使用wave、add wave、force、release等命令来控制信号的行为。
二、ModelSim高级技巧1.波形窗口波形窗口是ModelSim中最有用的窗口之一。
可以使用Add Wave按钮打开该窗口。
在波形窗口中,可以查看所有信号的变化情况。
可以使用full view、zoom in、zoom out等选项来放大或缩小波形窗口。
modelsim使用命令
1. 常用仿真命令vlib work // 建立work仿真库vmap work wrok // 映射库vlog -cover bcest *.v // 加覆盖率分析的编译vsim -coverage -voptargs="+acc" -t ns test // 仿真文件为test.vadd wave * // 将所有模块waveform. dump出来add wave sim:/test/t/M2/Reg_out // 将模块Reg_out中的waveform. dump出来delete wave /test/i2. SVA 断言仿真命令vlog -sv a.vvsim -assertdebug testview assertionsvsim -assertdebug ScaleBlock_tf -L xilinxcorelib_ver -L unisims_ver // 加载xilinxlib库3. verror 3601 // 查错4. 给仿真工具加载xilinx 库命令(1)加载之前将modelsim.ini改为非“只读”(2)“运行” cmd,到xilinx目录下(3) C:\Xilinx > compxlib -s mti_se -p c:\Modeltech_6.0\win32 -f all -l verilog -o C:\ Modeltech_6.0\Xilinx_lbis或者Xilinx目录下.\bin\nt\下有compxlib.exe简单得modelsim命令行仿真用do文件进行仿真真得很方便,比写testbench方便多了,我是深有感触呀,开始时因为不知道,只知道写testbence,在小得模块也写testbench,真得很烦躁!而且信号定义什么得比较多,采用do文件得方法就没有那么多信号定义了,管理也比较方便,呵呵,真得很方便,而且采用命令行得形式,感觉特有成就感,呵呵!1.运行仿真,在主窗口输入命令:vsim work.实体名2.为时钟信号添加驱动,输入命令:force clk 0 0,1 10 -r 20,将仿真时钟设为50MHz;(设时间单位为ns)3.打开波形窗口,输入命令:view wave4.为波形窗口添加信号,输入命令:add wave -hex *,这里的*表示添加设计中所有的信号,-hex 表示以十六进制来表示波形窗口中的信号值;5.开始仿真,输入命令,run 3us,这时候在波形窗口中出现仿真波形6.退出仿真,输入命令:quit –sim。
modelsim使用命令
1. 常用仿真命令vlib work // 建立work仿真库vmap work wrok // 映射库vlog -cover bcest *.v // 加覆盖率分析的编译vsim -coverage -voptargs="+acc" -t ns test // 仿真文件为test.vadd wave * // 将所有模块waveform. dump出来add wave sim:/test/t/M2/Reg_out // 将模块Reg_out中的waveform. dump出来delete wave /test/i2. SVA 断言仿真命令vlog -sv a.vvsim -assertdebug testview assertionsvsim -assertdebug ScaleBlock_tf -L xilinxcorelib_ver -L unisims_ver // 加载xilinxlib库3. verror 3601 // 查错4. 给仿真工具加载xilinx 库命令(1)加载之前将modelsim.ini改为非“只读”(2)“运行” cmd,到xilinx目录下(3) C:\Xilinx > compxlib -s mti_se -p c:\Modeltech_6.0\win32 -f all -l verilog -o C:\ Modeltech_6.0\Xilinx_lbis或者Xilinx目录下.\bin\nt\下有compxlib.exe简单得modelsim命令行仿真用do文件进行仿真真得很方便,比写testbench方便多了,我是深有感触呀,开始时因为不知道,只知道写testbence,在小得模块也写testbench,真得很烦躁!而且信号定义什么得比较多,采用do文件得方法就没有那么多信号定义了,管理也比较方便,呵呵,真得很方便,而且采用命令行得形式,感觉特有成就感,呵呵!1.运行仿真,在主窗口输入命令:vsim work.实体名2.为时钟信号添加驱动,输入命令:force clk 0 0,1 10 -r 20,将仿真时钟设为50MHz;(设时间单位为ns)3.打开波形窗口,输入命令:view wave4.为波形窗口添加信号,输入命令:add wave -hex *,这里的*表示添加设计中所有的信号,-hex 表示以十六进制来表示波形窗口中的信号值;5.开始仿真,输入命令,run 3us,这时候在波形窗口中出现仿真波形6.退出仿真,输入命令:quit –sim。
使用ModelSim的仿真步骤
使用ModelSim的仿真步骤:
1.建立工程:选file/new/project菜单,打开Create Project窗口.
填Project Name栏,为你的工程启一个名子.
按Browse按纽,为你的工程指定一个盘上目录,作为以后工程文件的存放位置.
指定缺省库名为Work库.
2.在出现的ADD ITEMS TO THE PROJECT窗口中选Create New File为当前工程加入一个新建文件,或选Add existing File为当前工程加入一个已存在的文件.
3.选Compile/compile All对当前设计工程进行编译.
4.选Simulate/Star Simulation菜单项,打开仿真器.
5.在仿真器中选Design页,点击WORK页前的加号,打开WORK 库,选一个仿真文件,选好后,点击右下脚的OK按纽.
6.在出现的Object窗口中,会有芯片的引脚列表.选一个引脚,压鼠标右键,弹出一菜单,在其中选Add to wave/Selected Signal菜单项,可将引脚对象加入到Wave窗口中.重复上述过程,将全部引脚加入到Wave波形窗口中.
7.在WAVE中,选一个引脚,用WAVE窗口的工具画加在引脚上的波形.
8.画完输入引脚的波形后,输入RUN –ALL,回车,执行仿真.
注:上述仿真过程,可用命令:
vsim work.filename
启动仿真窗口.
view wave
打开波形窗口
add wave –dec *
加入所有波形信号,以十进制方式force
为每个引脚加入驱动信号
run –all
执行仿真任务。
使用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⾥⾯运⾏脚本do filename.do⽅法挺多,⼀种是可以打开Modelsim,执⾏File/New/Source/Do命令,进⼊Do⽂件编辑⽅式,在编辑窗⼝输⼊仿真批处理⽂件的代码,以.do为扩展名保存⽂件。
当然也可以在windows系统中新建⼀个记事本,在“另存为”的时候写上.do的后缀名,也是⼀种⽅法。
调⽤⽅式是在Modelsim的Transcript窗⼝中使⽤指令:do filename.do,完成对设计的⾃动化仿真。
下⾯简单讲讲仿真的步骤。
⾸先我们要对⼀个设计进⾏仿真呢,我们⼀般需要进⾏以下⼏个步骤:①创建⼀个⼯程和⼯程库;②加载设计⽂件(包括你编写好的testbench);③编译源⽂件;④运⾏仿真,并查看结果;⑤最后进⾏⼯程调试。
⽽do⽂件,就是把上述的步骤①---④⽤tcl脚本语⾔来编写出来,让Modelsim来运⾏该do⽂件宏命令,并⾃动执⾏仿真的步骤。
这种好处也许在⼩设计中没怎么表现,但是如果在⼀个⼤的⼯程中,常常需要对⼀个设计单元进⾏反复的调试和仿真,但是仿真时的设置是不变的,这时如果使⽤了do⽂件,把仿真中使⽤到的命令都保存下来了,就可以节省⼤量的⼈⼒,提⾼了⼯作效率。
下⾯将对照⼀个简单的例⼦counter.do,讲⼀下我们常⽤的⼀些基本指令。
PS: do⽂件的注释是由#开始的,但不可以在代码⾏后⾯添加,只能另起⼀⾏。
正确的是:vlib work#新建⼀个work库错误的是:vlib work #新建⼀个work库编写名为counter.do的⽂件,其内容为下:vlib work (对应仿真步骤①:新建work库。
该命令的作⽤是在当前⽬录下建⽴⼀个work⽬录,请注意不要直接在windows中新建⼀个work的⽂件夹,因为⽤操作系统建⽴的work⽂件夹并没有ModelSim SE⾃动⽣成的_info⽂件。
)vmap work work(对应仿真步骤①:该命令的作⽤是将⽬前的逻辑⼯作库work和实际⼯作库work映射对应。
modelsim 仿真 语法
modelsim 仿真语法摘要:一、modelsim 简介二、modelsim 仿真语法1.基本架构2.触发条件控制符3.常用仿真控制语句4.文本输入正文:一、modelsim 简介modelsim 是一种用于验证和仿真数字电路的软件工具,可以帮助设计人员在开发过程中检测和修复潜在的问题。
通过modelsim,设计人员可以在计算机上模拟数字电路的行为,观察其响应,并进行必要的调整。
modelsim 具有强大的功能,可以支持多种数字电路设计语言,如Verilog 和VHDL 等。
二、modelsim 仿真语法1.基本架构modelsim 仿真文件的基本架构包括以下几个部分:- 库(library):存储仿真模型的文件,包括模块、行为描述和测试平台等。
- 模块(module):存储实际的电路设计,包括输入端口、输出端口和逻辑实现等。
- 行为描述(behavioral description):描述模块的功能和行为,通常使用Verilog 或VHDL 语言编写。
- 测试平台(test platform):编写测试用例和观察结果的地方,用于验证模块的正确性。
2.触发条件控制符在modelsim 中,可以使用触发条件控制符来控制仿真过程。
常用的触发条件控制符包括:- @:表示仿真过程中的某个时刻或事件。
- wait:表示仿真过程中的等待,用于暂停仿真过程,直到指定的事件发生。
3.常用仿真控制语句在modelsim 中,可以使用一些系统函数来控制仿真过程,如:- $display:用于显示仿真过程中的信息和消息。
- $monitor:用于观察仿真过程中的某个信号或变量。
- $stop:用于终止仿真过程。
4.文本输入在modelsim 中,可以通过文本输入的方式来编写仿真测试用例。
文本输入可以包括以下几个部分:- 输入信号:描述输入信号的类型、名称和初始值。
- 输入延迟:描述输入信号的延迟时间。
- 测试用例:编写实际的测试用例,包括输入信号的值和期望的输出结果。
