ModuleSim SE 快速入门
上一篇 / 下一篇 2006-09-06 09:41:30 / 天气: 晴朗 / 心情: 高兴 / 个人分类:Backup
本文介绍ModelSim SE的最基本用法
1s+F3d8^H7{:W0 当你安装完ModelSim SE之后,可以将你的ModelSim SE的起始路径设置为你的工作目录(如e:\verilog),具体方法是在右键单击执行文件ModelSim SE的图标再点击属性栏,就可以看到ModelSim SE的起始位置,改为你的工作目录就可。或者也可以在se里面更改工作目录,即使用file-change directory...菜单
1fWcb/f-N-O|0 学习verilog语言也必须学习写它的testbench文件,即测试文件。建议从最开始就学习写,写一个程序写一个testbench。ModelSim SE仿真用的文件也就是testbench文件。Testbench文件可以在仿真中发现你的逻辑错误,对于以后作较大的程序更适用。而避免让你在实际调试中的出现很多的问题而无头绪。EDA中国门户网站'`M6Q*Ek;R'e]:u
好,现在假设你在e:\verilog目录下有一个\div目录,该目录下有两个文件div.v和tdiv.v为一个分频时序描述文件和它的testbench文件。文件内容如下:
e:\verilog\div\div.v
8?8j,u#K3S&ww6E |g0module div(clk_i,clk_o,reset);
6CP8J*a2|*sj$K:Z0parameter DIV_N = 4;EDA中国门户网站5Y }$]6U5JW
input clk_i;EDA中国门户网站Xe
`+J6I;L6~9gI
input reset;EDA中国门户网站HU6by{or
output clk_o;EDA中国门户网站#V
CT:AZdM&iW
reg clk_o;
H.[Ba!Q2[\+N0integer count;
always @ (negedge reset or posedge clk_i)EDA中国门户网站:] Q'T(~'n([a
begin EDA中国门户网站J*e]4z&ax#F
WM
if(!reset)
/E{
y:~'s0 count <= 0;EDA中国门户网站$jIe!kI} j
elseEDA中国门户网站bZ[j)e9V
if(count == 3)EDA中国门户网站lq2R/MV
count <= 0;
-\`3OYL@"~0 else
^F(x [E{ Q0 count <= count + 1;
CR~ m[j
|%L-T0end
always @ (negedge reset or posedge clk_i)
4c+G,m+FB"T5RC`0begin
x%s.n0tIe8k
W|9]8T`0 if(!reset)
T*kQ5IA5J0 clk_o <= 0;EDA中国门户网站!Lo{#h2ZY
v5xP
C
elseEDA中国门户网站7M&~8T|cI}
beginEDA中国门户网站)R8R7y,[)MZ
if(count <= (DIV_N/2 - 1))
:L p~1ap{4F0 clk_o <= 0;
5F4c4L,D!Ca~-Z
p-E0 else
FiS)j3F,w'e0 clk_o <= 1;EDA中国门户网站6H2uK
nI
end
B3?q.dRQ:i l0
M
G'h]twzn0end
5a}*qb*Hk;FU%F0endmodule
e:\verilog\div\tdiv.v
/Abd!QPE:[
LS)f0module testdiv;
S;MgE _6ge })E0reg clk_i;
X#I3zH`2e-C0reg reset;
5T ]+`pB8? X7uP0wire clk_o;
always #50 clk_i = ~clk_i;
initial
B^^^yO*iF0WYY
U0begin
UD@L7O]3M0 #0 reset = 0;clk_i = 0;EDA中国门户网站Uh6C!RUq-C
#100 reset = 1;EDA中国门户网站 F@:~I!w7v
#2000 $stop;
)D^'Bz~3d_;?1M4][&X#a0 end
div div1(.clk_i(clk_i),.clk_o(clk_o),.reset(reset));
nn*R0\?0Bw0endmodule
下面是我们的仿真步骤:
v(Z^O+Wm0启动ModelSim SE, 首先看到在在ModelSim SE右边的窗口有ModelSim> 这样的提示符。在提示符后,顺序运行以下命令:
ox%sZJ0 vlib work 该命令的作用是在该目录下建立一个work目录,请注意不要用操作系统来新建一个work的文件夹,因为用操作系统建立的work文件夹并没有ModelSim SE自动生成的_info文件。
\Q5ZNULzRS]0 vmap work work 该命令的作用是将目前的逻辑工作库work和实际工作库work映射对应。EDA中国门户网站_&qt
[ rpL
vlog div.v tdiv.v 该命令的作用是编译这些文件,要注意的是文件可以单独分开编译,但是一定要先编译被调用的文件。假如是VHDL文件就可以用vcom file1,file2命令来编译。
HF,SO a;v'D0 vsim testdiv 仿真命令, 注意后面的参数必须为tdiv.v中的模块名。EDA中国门户网站*EMB g-i5r
add wave/testdiv/ * 该命令的作用是将testbench文件tdiv.v中模块testdiv下所有的信号变量加到波形文件中去。这时候你也可以看到wave文件被打开。EDA中国门户网站M U M6J's${%P
Ql
run 2000 该命令的作用是运行2000个单位时间的仿真。也可以用run –all命令来一直仿真下去。
Ig
m(o:S0 这时候就可以在wave窗口文件中看到你的仿真结果。EDA中国门户网站$Oh"k1d?z
当然也可以观察其它窗口的结果,用view命令显示 EDA中国门户网站r{|-Y5X{*SDL
view * 观察包括signals、wave、dataflow等窗口文件。也可以分别打开。例如用view signals来观察信号变量。EDA中国门户网站8@9B"b@&pC?el
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
1e(B qni)p$X;[*D0文件。你可以用批处理方式来使你仿真简单化,具体做法为,将你所要执行的命令编辑在一起,以上面所讲为例,我可以编辑一个div.do文件,文件内容如下:
Q6RYB \0vlib work // 建库
2jYO)^9j-P\
n3G0vmap work work // 映射EDA中国门户网站c9X
|H| `-n-j)C
vlog div.v tdiv.v // 编译
/xGqLs
S5X0vsim testdiv // 仿真(模块名称)
[$V$KB i&A