您的位置:技术中心首页 > 逻辑验证 >> Modelsim >> ModelSim SE 十分钟入门

ModelSim SE 十分钟入门

作者:未知   时间:2007-09-28 14:56:15  来自:网上转载  浏览次数:2  文字大小:【】【】【
简   介:1.ModuleSim SE 快速入门 本文以ModelSim SE 5.6版本为基础,介绍ModelSim SE的最基本用法,高深的我也不会  。 当你安装完ModelSim SE之后,可以将你的ModelSim SE的起始路径设置为你的工作目 ...

1.ModuleSim SE 快速入门
     本文以ModelSim SE 5.6版本为基础,介绍ModelSim SE的最基本用法,高深的我也不会  。
     当你安装完ModelSim SE之后,可以将你的ModelSim SE的起始路径设置为你的工作目录(如e:\verilog),具体方法是在右键单击执行文件ModelSim SE的图标再点击属性栏,就可以看到ModelSim SE的起始位置,改为你的工作目录就可。
     学习verilog语言也必须学习写它的testbench文件,即测试文件。建议从最开始就学习写,写一个程序写一个testbench。ModelSim SE仿真用的文件也就是testbench文件。Testbench文件可以在仿真中发现你的逻辑错误,对于以后作较大的程序更适用。而避免让你在实际调试中的出现很多的问题而无头绪。
     好,现在假设你在e:\verilog目录下有一个\div目录,该目录下有两个文件div.v和tdiv.v为一个分频时序描述文件和它的testbench文件。文件内容如下:

e:\verilog\div\div.v
module div(clk_i,clk_o,reset);
parameter DIV_N = 4;
input clk_i;
input reset;
output clk_o;
reg clk_o;
integer count;

always @ (negedge reset or posedge clk_i)
begin    
     if(!reset)        
         count <= 0;
     else
         if(count == 3)
             count <= 0;
         else
             count <= count + 1;            
end

always @ (negedge reset or posedge clk_i)
begin    
     if(!reset)        
         clk_o <= 0;
     else
     begin
         if(count <= (DIV_N/2 - 1))
             clk_o <= 0;
         else
             clk_o <= 1;
     end
end

e:\verilog\div\tdiv.v
module testdiv;
reg clk_i;
reg reset;
wire clk_o;

always #50 clk_i = ~clk_i;

initial
begin
     #0     reset = 0;clk_i = 0;
     #100   reset = 1;
     #2000 $stop;
end

div div1(.clk_i(clk_i),.clk_o(clk_o),.reset(reset));
endmodule

下面是我们的仿真步骤:
启动ModelSim SE, 首先看到在在ModelSim SE右边的窗口有ModelSim> 这样的提示符。在提示符后,顺序运行以下命令:
     vlib work   该命令的作用是在该目录下建立一个work目录,请注意不要用操作系统来新建一个work的文件夹,因为用操作系统建立的work文件夹并没有ModelSim SE自动生成的_info文件。
         vmap work work     该命令的作用是将目前的逻辑工作库work和实际工作库work映射对应。
     vlog div.v   tdiv.v   该命令的作用是编译这些文件,要注意的是文件可以单独分开编译,但是一定要先编译被调用的文件。假如是VHDL文件就可以用vcom file1,file2命令来编译。
     vsim testdiv   仿真命令, 注意后面的参数必须为tdiv.v中的模块名。
     add wave/testdiv/ * 该命令的作用是将testbench文件tdiv.v中模块testdiv下所有的信号变量加到波形文件中去。这时候你也可以看到wave文件被打开。
     run 2000   该命令的作用是运行2000个单位时间的仿真。也可以用run –all命令来一直仿真下去。
     这时候就可以在wave窗口文件中看到你的仿真结果。
     当然也可以观察其它窗口的结果,用view命令显示     
      view * 观察包括signals、wave、dataflow等窗口文件。也可以分别打开。例如用view signals来观察信号变量。
     ModelSim 5.6还有一个很好用的功能。就是可以看整个文件所形成的数据流程,各个模块之间的逻辑联系。具体方法是在仿真后执行命令   view datalflow 就可以打开dataflow文件,在dataflow的窗口菜单中点击navigate(导航)中的view all nets就可以观察到各个模块之间的逻辑联系,模块一般都为initial模块、always模块、assign模块等等。点击中一个模块,则这个模块变为红色。这时候在view菜单下点击show wave就可以在窗口下方弹出wave窗口,不同的是这个wave窗口所显示的信号变量仅为点击中的模块所包括的信号变量,这时候也可以点击仿真run –all小图标来仿真有关这个模块的输入输出关系。

     以上命令,就是ModelSim SE仿真程序所用到的基本命令。实际上都可以在窗口菜单中找到,效果是一样的,可能大家觉得每次用鼠标点击菜单方式更快一点,但是在ModelSim SE中开可以执行一种批处理文件,就是file.do文件,相当于DOS中的.bat
文件。你可以用批处理方式来使你仿真简单化,具体做法为,将你所要执行的命令编辑在一起,以上面所讲为例,我可以编辑一个div.do文件,文件内容如下:
vlib work                 // 建库
vmap work work         // 映射
vlog div.v tdiv.v          // 编译
vsim testdiv               // 仿真(模块名称)
add wave/testdiv/ *       // 将testdiv下的所有信号变量加入到wave窗口中,注意”*”前                             // 必须, 有“ ”,即空格
run 2000                 // 或者用run –all等。
view dataflow             // 用navigate  view all nets观察dataflow,不想观察就可以不
                         // 加这条指令

将上述内容保存后,每次用命令do  div.do 就可以自动执行想要的仿真动作。

责任编辑:5life

更多相关 modelsim 的文章

仿真工作流程(Verilog/Modelsim+Debussy) [2007-05-14]
Modelsim 教程 [2006-03-26]
Verilog PLI教程 --- 第二部分 编写PLI应用程序 [2006-02-18]
Verilog Pli的基本使用方法(modelsim) [2006-02-18]
本文共有0条评论,现在显示最新的5条。

栏目导航

电路基础
硬件语言
逻辑验证
电路综合
后端设计
可测设计
基本逻辑
制造工艺
书籍精选
说文解字
工具学习
数字滤波
趣闻逸事
数字锁相
设计杂项
低耗设计

站点最新

更多相关链接

  ModelSim SE 十分钟入门
  仿真工作流程(Verilog/M...
  Modelsim 教程

栏目最新

更多相关链接

  ModelSim SE 十分钟入门
  仿真工作流程(Verilog/M...
  Modelsim 教程

热点文章

更多相关链接

  Modelsim 教程
  仿真工作流程(Verilog/Model...
  ModelSim SE 十分钟入门