您的位置:首页 > 其它

modelsim的do文件

2015-10-30 17:44 267 查看
首先我们要对一个设计进行仿真呢,我们一般需要进行以下几个步骤:

 

①创建一个工程和工程库;

 

②加载设计文件(包括你编写好的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映射对应。也可以直接用指令“vmap work”表示将work库映射到当前工作目录下。)

vlog counter.v  counter_tb.v (对应仿真步骤②③:编译counter.v和counter_tb.v文件,默认编译到work库下。该命令的作用是编译这些文件,要注意的是文件可以单独分开编译,但是一定要先编译被调用的文件。假如是VHDL文件,只需要把指令vlog换成vcom即可。)

vsim work.counter_tb  -t 1ns (对应仿真步骤④:仿真work库中名为counter_tb的模块,最小时间单位为1ns。)

add  wave/counter_tb/ * (该命令的作用是将testbench文件camera_tb.v中模块camera_tb下所有的信号变量加到波形文件中去,注意在“*”前要加空格。这时候你也可以看到wave文件被打开。当然也可以单个信号的添加,例如添加时钟:add wave clk 等等。)

run 2000 (该命令的作用是运行2000个单位时间的仿真。也可以用run –all命令来一直仿真下去。)

 

这时候就可以在wave窗口文件中看到你的仿真结果。当然也可以观察其它窗口的结果,用view *命令显示。view *命令可以观察包括signals、wave、dataflow等窗口文件,也可以分别打开。例如用view signals来观察信号变量。

 

以上就是do文件的一些基本TCL脚本语言的使用,写得比较简单,但是其实复杂的也就是在添加信号线那里add wave 有比较多的参数设置而已,主要的指导仿真流程的指令还是这几条。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: