DO文件是什么?
DO文件是一次执行多条命令的脚本。这个脚本可以就像带有相关参数的一系列ModelSim的命令,或者是带有变量和执行条件等等的Tcl命令程序。可在GUI或者系统命令提示符中执行DO文件。
首先了解一下Modelsim仿真!
第一步:
创建一个工程和工程库;
第二步:
加载设计文件(功能模块和Tb模块);
第三步:
编译源文件;
第四步:
运行仿真,并查看结果。
do文件的作用就是把上述的步骤①---④用tcl脚本语言来编写出来,让Modelsim来运行该do文件宏命令,并自动执行仿真的步骤。这种好处也许在小设计中没怎么表现,但是如果在一个大的工程中,常常需要对一个设计单元进行反复的调试和仿真,但是仿真时的设置是不变的,这时如果使用了do文件,把仿真中使用到的命令都保存下来了,就可以节省大量的人力,提高了工作效率。
ModelSim中常用的Tcl命令
ModelSim的tcl最大的优势就在于它可以让整个仿真自动运行,免除每次进行各种用户界面控制操作的麻烦。用tcl就可以自动完成建库、映射库到物理目录、编译源代码、启动仿真器、运行仿真等一系列操作。
执行Tcl(.do文件)
do name.do
编译
vlog iic_write.v
启动仿真
vsim tb_iic_write.v
将信号加入wave
add wave tb_iic_write *
执行仿真
run 2000000/-all
退出仿真
quit -sim
DO文件如何编写呢
do文件就是Modelsim中Tcl命令的整合!
具体操作如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200223211901302.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21vY2hlbmJhb2JlaQ==,size_16,color_FFFFFF,t_70)
do文件编写完成!下一步:
在Modelsim中,将工作目录切换到功能模块所在目录下,然后在Modelsim的File窗口中的Change Directory选项中切换工作目录。
调用do文件
在Modelsim的Transcript窗口中的命令行输入:do test.do命令即可。
Modelsim中的do文件编写小技巧!
我们先了解Transcript窗口的作用和用处?
![Transcript窗口记录着我们在Modelsim中使用的每个操作步骤,同时在代码运行的时候的Error和Warning也是通过该窗口显示给使用者,以及Transcript窗口的命令行控制。](https://img-blog.csdnimg.cn/20200223212119249.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21vY2hlbmJhb2JlaQ==,size_16,color_FFFFFF,t_70)
技巧1:
既然我们的每个操作命令都能在Transcript窗口显示出来,也就是说在我们遇到不会的Tcl命令时,可以通过Modelsim界面上通过鼠标操作一遍,查看该操作是的Tcl命令,再编写进我们的do文件中就可以在调用do文件时实现我们想要的操作。
技巧2:
![当我们没了仿真波形更容易分析,将波形设置为不同的颜色或者不同进制等,此时我们可以在Wave窗口的左上角“Save Format”保存为do文件(或者Ctrl + S)。](https://img-blog.csdnimg.cn/20200223212509996.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21vY2hlbmJhb2JlaQ==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200223212822475.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21vY2hlbmJhb2JlaQ==,size_16,color_FFFFFF,t_70)
![打开wave.do文件我们发现也是许多的Tcl命令,这些Tcl命令也是可以编写进我们的test.do文件,再通过Modelsim调用。这样Wave窗口最终输出的波形就是我们之前设计过的风格了。](https://img-blog.csdnimg.cn/20200223212838495.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21vY2hlbmJhb2JlaQ==,size_16,color_FFFFFF,t_70)
***注意***
-
do文件编写时,Tcl命令的顺序需要正确
-
do文件中的注释符号“#”的使用,注释必须在代码的下一行进行解释,不能在代码后注释
-
功能模块一定要放在工作目录所在的文件夹,并且文件夹不能有中文
-
如果do文件运行时,出现了错误。可以通过在Model的Transcript窗口的命令行按顺序将我们的do文件中Tcl命令运行,就可以发现并纠正Error。
关注我们了解更多资讯: [ModelSim仿真软件介绍(一)](https://mp.weixin.qq.com/s/83I5NJZtn0CZZg7IJZS7Rw) [FPGA数字信号处理(二)数字混频](https://mp.weixin.qq.com/s/EIgpnPZ6n3-zC6muDoYhOQ) [【FPGA信号处理一】5分钟学会FIR 滤波器设计](https://mp.weixin.qq.com/s/Y7mo7i-lNMqvmve9w76fHw) [在Vivado中,您使用过TCL吗?](https://mp.weixin.qq.com/s/l17R94pella2UdshP4wjFw) [编写可综合的FPGA代码经验总结(二)](https://mp.weixin.qq.com/s/bzPugk5gVTeNbWbGltt_kQ) [【干货分享】编写可综合的FPGA代码经验总结(一)](https://mp.weixin.qq.com/s/adNvO2IQPMtl0ZNLosqFWw) [【干货分享】异步电路中的时钟同步处理方法](https://mp.weixin.qq.com/s/G3vxa0l6eCIS-AVMuGLyMA) [【干货分享】同步电路分析---异步和同步电路的区别(二)](https://mp.weixin.qq.com/s/mmgmro_I3L_NdyB_8gbLFA)