modelsim仿真流程 (2)
- 格式:doc
- 大小:4.86 MB
- 文档页数:13
ModelSim6.4仿真的操作流程
1. ModelSim简介
ModelSim是Mentor公司的产品。在业界,它被认为是最优秀的HDL语言仿真软件。它提供友好的仿真环境,是支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核。其个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。
其主要特点可概括如下:
RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;
VHDL和Verilog混合仿真;
源代码模版、项目管理;
集成了性能分析、波形比较、代码覆盖、数据流ChaseX、Signal Spy、虚拟对象(Virtual
Object)、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;
C和Tcl/Tk接口,C调试;
对SystemC的直接支持和HDL任意混合;
支持SystemVerilog的设计功能;
对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL;
ASIC Sign off。
ModelSim分几种不同的版本:它们分别是SE、PE、LE和OEM,其中SE(System Edition)是最高级的版本,PE是版本,LE是版本,而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM(Original Equipment Manufacture,原始设备生产商)版本。SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSim XE为例,对于代码少于40000行的设计,ModelSim SE 比ModelSim XE要快10倍;对于代码超过40000行的设计,ModelSim SE要比ModelSim XE快近40倍。ModelSim SE支持PC、UNIX和LINUX混合平台;提供全面完善以及高性能的验证功能;全面支持业界广泛的标准;Mentor Graphics公司提供业界最好的技术支持与服务。
2仿真步骤 2.1 Modelsim的启动
启动modelsim一般有三个途径:其一是在windows的桌面双击Modelsim的图标;另一个是从windows的开始菜单找到Modelsim的图标,再双击之;其三是通过ISE去激活。前两种方法如图1所示
图1 通过图标启动Modelsim
本文不对前两种方法做进一步的介绍。只介绍后一种方法,即通过ISE去启动Modelsim。该方法一般说来要求设计者已经在ISE上完成了某个工程的建立以及对应的设计文件(HDL语言或电路图)的输入工作,如图2所示(本文所用的设计文件是《ISE的设计流程》中介绍的m10_counter)。但要启动Modelsim,还得在创建了testbench(即仿真文件)之后才可进行。
图2 ISE上的工程和对应的设计文件 2.2 在ISE上要做的预备工作
另外,为了将Modelsim与ISE关连起来,需先在工程属性(ProjectProperties)对话框中,将其上的仿真器(Simulator)一栏的下拉菜单打开,选择菜单中的Modelsim-SE Mixed,如图-3所示。(工程属性对话框可以通过双击ISE上Sources窗中的xc3s200a-5ft256图标打开)
图-3在工程属性对话框中选择仿真器
接下来,在仿真所用语言(Preferred Language)一栏的下拉菜单中选中VHDL,如图-4所示,之后点击OK,结束全部设置。(上述选择仿真器和仿真所用语言的过程,实际上可以在建立ISE的工程时就先期进行。请参阅《ISE的设计流程》中的相关部分)。
图-4 选择仿真所用的语言 2.3创建testbench
在ISE的Project下拉菜单中选中New Source并双击之,如图5所示。
图5 建新的源文件
在随后弹出的选择框中,按图6所示进行操作。需要注意的是仿真文件的名字不能与设计文件相同。为了加以区别,可以象本例一样,在名字的开头加一个t,表明是进行测试(test)的文件。(verilog的用户选Verilog Test Fixture)
图6 选择文件类型和键入文件名
在随后弹出的选择框中,如图7所示进行操作。
图7 选定仿真对象 如图8所示,在接下来弹出的提示框中点击Finish。
图8 结束仿真文件的设置
随后ISE会自动按前面的设置生在工作区成一个testbench模板,如图9所示。
图9 ISE自动生成的testbench模板(局部) 图10给出了testbench上用户描述输入信号的区域。
图10 描述输入信号的进程
接下来,在TestBench的模板中,按图11所示,在进程里描述好输入信号clk、rst和carry_in(verilog用户可参看后面附录中的灰色部分)。至此,一个完整的TestBench文档建立过程和输入信号的描述过程就完成了。
图11 描述输入信号 现在在ISE的源窗中,如图16所示,将源窗中“Sources for:”处的下拉菜单打开,把“Implementation”切换为“Behavioral Simulation”。之后testbench会自动出现在Sources窗中。
图12 将ISE切换成仿真模式
之后先在Source窗选中tm10_counter-behavior,随后可在Process窗找到Modelsim
Simulator,现在点击其左端的,展开它,如图13所示。
图13 展开Modelsim Simulator 2.4在ISE上启动ModelSim
展开后的Modelsim Simulator如图14所示,可以看到Modelsim的图标,双击该图标,Modelsim就被启动了。
图14 双击图标启动modelsim
图15是modelsim启动时的情形。图中modelsim的标志很快就会自动消失。
图15 modelsim的启动过程
图16是启动后的modelsim的界面。
图16 modelsim的界面 2.5 ModelSim各个窗口的介绍
图17介绍了ModelSim几个主要窗口的功能。
图17 ModelSim几个主要窗口的功能
2.6添加需要观察的信号
ModelSim初始的工作位置是指向tm10_counter的。这时,如图18所示,在波形窗内列出了clk、rst、carry_in、carry_out和count等5个信号。
图18 ModelSim自选的几个信号 实际上可以根据需要,如图19那样,添加一些未被初始界面列出的信号。
图19添加新信号
2.6运行仿真
在浮动出来的波形窗中,如图20所示,进行复位操作。
图20 对信号进行清零
复位后的界面,如图21所示,各个信号都将原有的波形清除了。现在按图中的提示就可以运行和停止仿真了。
图21 运行仿真
2.7波形窗的调整
在Modelsim的波形窗中,有一些为便于观察波形而设置的调整和测量工具,如图22所示,利用它们,可以将波形调整到最便于观察的状况。
图22波形窗内的工具简介
2.8观察波形
调整好的波形显示如图23所示。将所看到的输入、输出结果与设计预期进行比对(本实验的预期结果应该是这样的:当rst为低电平时,无论其他输入信号为何,都对寄存器复位,current_state=“0000”;当rst为高电平,carry_in为低电平时,计数器在每一个时钟的下降沿到来时加1,直到计到9,再来一个时钟时,计数器回到0,如此不断地循环下去。并且在计数器计到9时,carry_out会产生一个能保持一个时钟周期的负脉冲,上述现象可以通过图23(a)观察到;当rst为高电平,carry_in也为高电平时,计数器将把最后一次计到的数保持住,直到计数条件恢复后,计数才重新开始,见图23(b))。该过程可能会反复进行,直到将设计修改到满意为止。
图23 调整好的仿真信号
自此,一个完整的仿真过程就结束了。
附录(verilog test fixture)
`timescale 1ns / 1ps
module tm10_counter_v;
// Inputs
reg carry_in;
reg clk;
reg rst;
// Outputs
wire [3:0] bcd_code;
wire carry_out;
// Instantiate the Unit Under Test (UUT)
m10_counter uut (
.bcd_code(bcd_code),
.carry_out(carry_out),
.carry_in(carry_in),
.clk(clk),
.rst(rst)
);
initial begin
// Initialize Inputs
clk = 0;
rst = 0;
carry_in = 0;
// Wait 100 ns for global reset to finish
//#100;此处的#号代表时间单位,其大小视文件首行timescale后面的值而定,用户可以根据实际需要改变它的大小,例如,改为1us。
End
always
begin
clk=~clk; #50;
end
always
begin
rst=0; #113;
rst=1; #1111113 ;
end
always
begin
carry_in=0;#111117;
carry_in=1;#1111;
end
endmodule