【基础】Modelsim的基本使用

1.建立库并映射
建立并映射库有两种方法:
方法一:在Modelsim中选择File/New/Library,在弹出的对话框中填入库名称,点击OK就完成了库的建立和映射。
【基础】Modelsim的基本使用_第1张图片
 
方法二:在Modelsim>提示符下运行命令:
vlib work2
vmap work work2
【基础】Modelsim的基本使用_第2张图片
 

2.新建工程项目
选择下拉菜单File /New/Project命令,新建一个工程。在Project Name中输入工程名,在Project Location下的对话框中,输入保存该工程所有文件的文件夹的路径名。Default Library Name对话框使用默认设置work即可。
【基础】Modelsim的基本使用_第3张图片                       【基础】Modelsim的基本使用_第4张图片

  3.输入源代码
在Workspace中的Project右键Add to project-->New File,把类型选为Verilog然后对文件进行命名。或者选择主控Main窗口的下拉菜单File/New/Source/Verilog HDL选项,出现源代码编辑窗口。将源代码输入并保存。源代码文件shiftregist.v如下:
module shiftregist
(data_out,clk,rst_n,load,data_load,ctr_shiftright,ctr_shiftleft,data_shiftright,data_shiftleft);
parameter shiftregist_width=4;
output [shiftregist_width-1:0] data_out;
input [shiftregist_width-1:0] data_load;
input load,clk,rst_n,ctr_shiftright,ctr_shiftleft,data_shiftright,data_shiftleft;
reg [shiftregist_width-1:0] data_out;
always @(posedge clk or negedge rst_n)
   if (!rst_n)
       data_out<=0;
   else if (load)  data_out<=data_load;
        else if (ctr_shiftright)
                 data_out<={data_shiftright,data_out[shiftregist_width-1:1]};
             else if (ctr_shiftleft)
                      data_out<={data_out[shiftregist_width-2:0],data_shiftleft};
                  else data_out<=data_out;
endmodule

【基础】Modelsim的基本使用_第5张图片


4.将文件添加到工程中
刚才输入的文件已经保存在当前Project的文件夹中。在Main窗口选择Project/Add to Project/Existing File…选项将文件添加到工程中。如果之前是用Add to Project则不需要这一步骤。

5.编译源代码
在Workplace窗口Project对话框中选中shiftregist.v,然后在主控Main窗口中选中Compile/Compile selected选项对源代码进行编译。编译成功后,transcript对话框中将报告“#Compile of shiftregist.v was successful”。如果当前工程中有多个.v文件,则可以选择Compile/Compile selected选项完成对源代码文件的批量编译,也可以一次选择多个文件进行编译。
【基础】Modelsim的基本使用_第6张图片

编译成功后会有绿勾,然后下面也有绿字,之后就可以进行仿真。
【基础】Modelsim的基本使用_第7张图片

  
 6.建立并添加测试文件
用Verilog HDL编写测试激励文件,然后进行仿真的操作。先输入测试激励文件,然后进行仿真的操作。先输入测试激励文件的源代码,并存盘;然后将该文件添加到当前的工程项目中,再对该文件进行编译,其操作过程与前面介绍的相同。带控制端的移位寄存器的测试激励源代码文件testbench_shiftregist.v如下:
module testbench_shiftregist;
parameter shiftregist_width=4;
reg [shiftregist_width-1:0] data_load;
reg load,clk,rst_n,ctr_shiftright,ctr_shiftleft,data_shiftright,data_shiftleft;
wire [shiftregist_width-1:0] data_out;
always 
  #5 clk=~clk;
initial begin data_load=0;load=0;rst_n=1;ctr_shiftright=0;ctr_shiftleft=0;clk=0;
data_shiftright=0;data_shiftleft=0; end
initial begin #10 rst_n=0;#3 rst_n=1;end
initial begin #15 load=1;data_load=4'b1010;#10 load=0; end
initial begin #30 ctr_shiftright=1;#20 data_shiftright=1;#20 ctr_shiftright=0;
#20 ctr_shiftleft=1;#25 data_shiftleft=1;#20 data_shiftleft=0; end
shiftregist U1 (.clk(clk),.rst_n(rst_n),.load(load),.ctr_shiftright(ctr_shiftright),
                .ctr_shiftleft(ctr_shiftleft),.data_shiftright(data_shiftright),
                .data_shiftleft(data_shiftleft),.data_load(data_load),.data_out(data_out));
endmodule

【基础】Modelsim的基本使用_第8张图片

7.打开仿真器
在主控窗口中选择Simulate/Start Simulation…命令,得到仿真设置对话框(注意:将当前工作库work前面的加号“+”点开,选择testbench_shiftregist作为顶层文件进行仿真)。在Design选项卡相应的库名下选择testbench_shiftregist模块,然后去掉Enable optimization的钩,再单击OK按钮。下图显示的就是打开仿真器后的界面。
【基础】Modelsim的基本使用_第9张图片

8.打开调试窗口
在Modelsim的Main窗口的View下面有各种全面反映用户设计模块的各个方面的特性与内容的窗口,非常便于用户管理和调试。用户对一个窗口的修改将会自动影响到相关窗口的变化,同时用户也可以方便地利用鼠标在窗口之间进行选择和拖放。
打开窗口的操作方法是:在主控Main窗口的View下拉菜单中,单击相应的窗口名即可。已打开的窗口名前有“√”符号提示,再次单击该窗口名将关闭相应窗口,前面的“√”符号也将消失。例如,选择View/Wave命令,将打开仿真波形窗口等。下图是一种简单的看波形的方法。
【基础】Modelsim的基本使用_第10张图片


【基础】Modelsim的基本使用_第11张图片

9.添加需要观察的信号
在Workplace窗口的sim对话框中单击需要观察的模块名,在Objects窗口中则会列出该模块的各个端口名及内部信号。可以单击选中其中一个需要观察的信号名,如果按住Ctrl键,则可以通过单击选中多个需要观察的信号名,然后在选择下拉菜单Add/Wave/Slected Instance命令打开Wave窗口,而且刚才被选中的信号已经被添加到Wave窗口中。设计者还可以根据调试和测试需要,删除Wave窗口中的信号,或向其中添加新的信号。

10.运行仿真器
1)在主控Main窗口的下拉菜单Simulate选项下有控制仿真器运行的多个命令选项。点击Simulate/Run,仿真会运行100ns(默认的仿真长度)后停止。
2)在主窗口的VSIM>提示符下,输入“run 500”,仿真器会再进行另外500ns的仿真,共计仿真了600ns。
3)在主菜单、波形窗口或源代码窗口的工具条上,单击Run-all图标,仿真连续运行,直到被中断或在代码中遇到诸如Verilog HDL中的$stop语句等,暂停仿真。
4)单击break图标,终止仿真运行。
5)在主控Main窗口中,单击Simulate/End Simulation…选项,即可结束仿真。 
【基础】Modelsim的基本使用_第12张图片

  11.调试debug
Modelsim的调试手段有很多,主要包括:在代码中设置断点、步进调试;观察波形窗口(Wave),测量时间;通过数据流窗口(Dataflow),分析物理连接;通过Memory窗口,观察设计中存储器的数值;统计测试代码覆盖率;波形比较。
利用Wave窗口、Dataflow窗口和List窗口是常用的分析手段。
(1)使用波形窗口
观察设计波形是调试设计的一种方法,加载仿真后,就可以使用波形窗口了。可以用菜单view/wave打开波形窗口,下图是波形窗口打开之后的界面。在波形窗口中可以采用向波形窗口添加项目,对波形显示的图像缩放,在波形窗口中使用游标,设置断点,存储波形窗口格式,将当前的仿真结果存储到波形记录格式文件(WLF)中等手段进行调试。
  【基础】Modelsim的基本使用_第13张图片

Modelsim中保存波形文件大致有以下三种方法:
Format文件:在波形窗口的主菜单中选择File/Save保存wave format,在新打开的窗口中填入DO文件的存储路径E:/shiftregist/wave.do,单击OK完成文件存储。如果需要加载该文件,在打开的波形窗口中选择“File Open Format”,在Open Format窗口中选择wave.do文件,单击Open按钮打开该文件。Modelsim将恢复该窗口的信号和游标的前一次状态。
WLF文件(Datasets):Modelsim仿真结果也可以存储到一个波形格式记录文件中,用于以后浏览和与当前的仿真结果的比较。通常使用术语“Dataset”表示已创建并可重加载的WLF文件。可在主菜单中选择“File/Datasets/Save as”,在Save as对话框中输入要保存的波形文件名称,点击OK就完成了波形文件的保存。使用File/datasets/open,在弹出的Open Dataset对话框中在Browse中输入dataset的路径,即可打开以保存的波形文件。
VCD文件:VCD文件是一个IEEE1364标准(Verilog HDL语言标准)中定义的一种ASCII文件。它是一种EDA工具普遍支持的通用的波形信息记录文件。在前面的章节的内容已经详细介绍了如何使用Verilog HDL中的系统函数来dumpVCD文件。
(2)使用数据流窗口
Dataflow窗口能够对VHDL信号或者Verilog HDL的线网型变量进行图示化追踪,在界面中驱动信号或驱动线网变量的进程显示在左边,反之被驱动信号显示在右边。可以通过双击Wave窗口中需要追踪的信号打开Dataflow窗口。下图显示的是数据流窗口的界面。

【基础】Modelsim的基本使用_第14张图片
 
数据流窗口有四个功能:
1)观察设计的连续性:可以检查设计的物理连接性,可以逐个单元地观测所关注的信号、互联网络或寄存器的输入/输出情况。
2)追踪事件:跟踪一个非预期输出的事件,使用嵌入波形观察器,可以由一个信号的跳变回溯追踪,查到事件源头。
3)追踪未知态:数据流窗口追踪不定态的功能是工程师比较亲睐的,在Dataflow窗口中使用Trace/ChaseX功能,会不断往驱动级追踪不定态传递的源头。当选择ChaseX时,图形界面不再变化时,就是不定态的源头了。之后就可以根据数据流窗口的结果,去定位源代码产生不定态的语句,并加以改正。
4)显示层次结构:可以使用层次化实例显示设计的连通性。
(3)使用列表窗口
List窗口以表格化的方式显示数据,可以方便的通过搜索特殊值或者特定条件的数据,简化分析数据的过程。可以用view/list打开List窗口。在List窗口的左边显示的是仿真的时间点,右边显示的是每个时间点对应的变量值。下图显示的是列表窗口。

【基础】Modelsim的基本使用_第15张图片
 
  与Wave窗口一样,List窗口可以保持数据的列表格式和列表内容。在List窗口中选择File/Save,在弹出的Save Format对话框中输入保存列表的名称,点击保存就可以了。数据列表也是一个.do的可执行脚本文件,可以通过命令do file_name.do打开列表文件。
在File/Write List选项下选择一种格式,完成对列表内容的保存。列表内容文件是lst格式的文件,要查看文件内容是可通过记事本打开该文件。

你可能感兴趣的:(硬件描述语言)