打印

modelsim脚本使用心得

[复制链接]
1101|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星之火红|  楼主 | 2012-10-12 13:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
modelsim脚本对于小的RTL代码开发可以省去testbench的编写,写一个小的脚本运行查看设计的代码功能的正确性,方便简单,基本指令很简单,如下:
vlib   文件夹
vmap   映射文件夹名//以上两个文件夹名一致
vcom(编译VHDL代码)/vlog(编译Verilog代码) 要编译的.vhd / .v文件名
vsim   -L 文件夹(-L是表示仿真的时候包含“文件夹”库中所有模块。) 文件夹.文件名(此处文件名不要加后缀) -t 1ns(-t 1ns是仿真时序图上最小的时间单位,如果不加-t 1ns,默认的是ps。)
add wave -r *(将test里所有的信号都添加到波形图里。(这行代码会自动将波形图调用出来)r 表示 region。)

接下来是对时钟和各输入信号复制,用的语句有repeat ,force, run等,下面是一个例子
注:modelsim脚本使用过程中遇到的问题,第三行的命令字,当开发的是VHDL语言时用的是vcom
但是如果用的verilog开发的硬件语言时,该命令字要改成vlog,其他不变
vlib work    //定义库文件夹名为work
vmap work    //定义映射文件夹名为work
vlog signal_generate.v  //要编译的文件是.v文件用的命令是vlog,如果是.vhd用vcom
vsim -L work work.signal_generate -t 1ns //要进行仿真的是work文件夹下的signal_generate文件
add wave -r *

force -repeat 2 clk 0 0,1 1   //产生周期为2ns 低电平,占空比1:1,高电平 高电平占用时间是1ns(各颜色对应的意义)
run 500  //接上面的时序运行500个2ns周期的时钟。
force reset 1  //在RTL代码设计里面的reset复位信号,一开始赋值为1
run 10         //reset的值为1运行10ns也就是5个时钟周期(每个时钟周期2ns)
force reset 0  //将reset的值复位为0
run 490        //运行接下来一直为低

1.对于二进制和十六进制的数据,应该的写法是2#00111010或者是16#FA,与Verilog中的进制数写法不同如二进制8'b00111100(8代表位宽,b代表二进制数,表示的位宽为8的二进制数)或者8'hFA(表示的是位宽为8的十六进制数FA)。
2.在后面的run的时间是一直累加的,force -repeate就已经是一直循环了,具体循环多少,取决于后面所有的run后面的数据的累加,如下面的例子:






















上面是一个并转串的RTL代码设计。下面是对应的脚本写法:
vlib work
vmap work
vlog converter.v
vsim -L work work.converter -t 1ns
add wave -r *

force -repeat 2 clk 0 0,1 1  //时钟重复
force reset 1         //取reset为1走两个时钟间隔(一个时钟周期,2指的是2ns)
run 2
force reset 0         //之后将reset的值赋值为0

force din 2#01001110  //二进制数的赋值方式
force en 1
force load 1          //将en和load均赋值为1走6个时间单位
run 6
force load 0          //后赋值load为0
run 22              //最终走994个时间单位,至此所有的时间会走2+6+22共30ns
                    // 时间单位。如果不加最后这句run整个仿真是不会有波形的。














注意看仿真结果是最后跑了30个ns单位
将脚本文件保存成后缀为.do的文件,并和RTL代码放在同一目录下面,启动Modelsim后,Modelsim的工作目录切换到设计代码的目录下(File –> Change Directory )。随后在Modelsim的命令行里输入 do sim.do ,回车。即可出现上面的仿真波形。有疑点还请多指教。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

1782

帖子

22

粉丝