首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

modelsim脚本使用心得

modelsim脚本使用心得

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    //定义库文件夹名为workvmap work    //定义映射文件夹名为workvlog signal_generate.v  //要编译的文件是.v文件用的命令是vlog,如果是.vhd用vcomvsim -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复位信号,一开始赋值为1run 10         //reset的值为1运行10ns也就是5个时钟周期(每个时钟周期2ns)force reset 0  //将reset的值复位为0run 490        //运行接下来一直为低 1.对于二进制和十六进制的数据,应该的写法是2#00111010或者是16#FA,与Verilog中的进制数写法不同如二进制8'b00111100(8代表位宽,b代表二进制数,表示的位宽为8的二进制数)或者8'hFA(表示的是位宽为8的十六进制数FA)。2.在后面的run的时间是一直累加的,force -repeate就已经是一直循环了,具体循环多少,取决于后面所有的run后面的数据的累加,如下面的例子:[[wysiwyg_imageupload:610:]]                    上面是一个并转串的RTL代码设计。下面是对应的脚本写法:vlib workvmap workvlog converter.vvsim -L work work.converter -t 1nsadd wave -r * force -repeat 2 clk 0 0,1 1  //时钟重复force reset 1         //取reset为1走两个时钟间隔(一个时钟周期,2指的是2ns)run 2force reset 0         //之后将reset的值赋值为0 force din 2#01001110  //二进制数的赋值方式force en 1force load 1          //将en和load均赋值为1走6个时间单位run 6force load 0          //后赋值load为0run 22              //最终走994个时间单位,至此所有的时间会走2+6+22共30ns                     // 时间单位。如果不加最后这句run整个仿真是不会有波形的。[[wysiwyg_imageupload:611:]]            注意看仿真结果是最后跑了30个ns单位将脚本文件保存成后缀为.do的文件,并和RTL代码放在同一目录下面,启动Modelsim后,Modelsim的工作目录切换到设计代码的目录下(File –> Change Directory )。随后在Modelsim的命令行里输入 do sim.do ,回车。即可出现上面的仿真波形。有疑点还请多指教。 来源:http://blog.sina.com.cn/s/blog_4b8d400f0100ucv5.html
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表