模电仿真实验的源文件是什么
发布网友
发布时间:2022-12-27 18:10
我来回答
共1个回答
热心网友
时间:2023-10-20 19:43
新手期的时候一般都是仿真自己写出来的代码,没有包含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
复制
修改为下面这样就可以进行仿真了