modelsim脚本仿真(一)仿真源代码

新手期的时候一般都是仿真自己写出来的代码,没有包含IP核的仿真。(想必接触脚本的至少应该已经知道怎么写源代码和测试文件了)
先说明一下我的文件结构
在这里插入图片描述
总共就两个文件夹,rtl里放的是我们设计的源代码,也就是.v文件;
sim里放的有测试文件、bat后缀文件、modelsim脚本文件(也就是下面说的.do文件,下图中是tcl文件)。如下图,我是以一个计数器为例。在这里插入图片描述
总共可归结为三种文件,文件一般包含有do文件,bat文件,以及自己设计的v文件(包括源代码和测试文件等)。
其中的do文件就是操纵modelsim的脚本文件,这个文件的后缀一般都是写成do,实际上也可以是别的字母任意定义(别人是这么说,当然v是不能作为后缀的),我试过sh、b和tcl的后缀,是可行的。以下脚本文件以tcl后缀为例。
而bat文件就是windows系统的脚本文件,内容只有一行代码。

modelsim -do sim.sh    //sim.sh就是我们的modelsim脚本文件。

我们只需要在Windows下双击就可以自动打开进行仿真。
作用就是在modelsim下运行sim.sh
v文件不用多说,自然是测试文件以及设计的verilog源代码。
下面开始进行简单的脚本设计(附带注释):

transcript on
if {[file exists dyq_work]} {
	vdel -lib dyq_work -all
}
#上面的意思是如果已有dyq_work这个库,就把它全部删了
#新建dyq_work库,这是modelsim必须要做的事,作用就是把自己的源代码编译
#进这个库中。
vlib dyq_work  
#将dyq_work映射到work中,因为操作的时候modelsim是默认对work进行的,
#所以如果不这样modelsim就找不到这个库。
vmap work dyq_work
#编译源代码和测试文件,这样写就是默认编译进了dyq_work中了   
vlog  ../sim/*.v
vlog  ../rtl/*.v
#运行仿真下面这个ps是设置仿真器达到的精度为ps,tb_counter是测试文件顶层命名。
vsim -t ps -novopt +notimingchecks  work.tb_counter 
#vsim -t ps -voptargs="+acc" work.tb_counter 
#下面将信号显示调整为十进制无符号形式
radix unsigned
#添加测试文件中包含的reg和wire的所有波形   
add wave *
#添加测试文件中例化的模块内部的cnt信号的波形(counter_u1是指在测试文
#件中例化的模块名称,这个要根据自己实际进行修改,比如例化一个pll
#		pll pll0(....);
#那么这段就应当改为tb_counter/pll0/*,意思就是把pll0模块的所有引脚拉
#出来看),像这两行代码就是把cnt和ena这两个信号拉出来看。
add wave -position insertpoint sim:/tb_counter/counter_u1/cnt
add wave -position insertpoint sim:/tb_counter/counter_u1/ena
#运行
run -all

写完之后就可以双击bat文件自动打开仿真了。
这里需要注意一下,如果你在10.7以及之后的版本进行的,会有这个报错
** Error (suppressible): (vsim-12110) All optimizations are disabled because the -novopt option is in effect. This will cause your simulation to run very slowly. If you are using this switch to preserve visibility for Debug or PLI features, please see the User’s Manual section on Preserving Object Visibility with vopt. -novopt option is now deprecated and will be removed in future releases.
这是说-novopt在后面的版本不能使用了,这时候就需要将脚本代码sim.sh进行修改一下
把这行代码修改一下

vsim -t ps -novopt +notimingchecks  work.tb_counter 

修改为下面这样就可以进行仿真了。

vsim -t ps -voptargs="+acc" work.tb_counter 

想要学习带IP核仿真的可以看我的另一篇文章
modelsim脚本仿真(二)带IP核工程仿真
还有带头文件仿真的
modelsim脚本仿真设计(三)带头文件仿真
参考:
基于脚本的modelsim自动化仿真

  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值