modelsim rom仿真中mif文件的处理

前言

modelsim仿真时不能直接加载mif文件,需要处理一下为hex文件。

我的使用条件

  • Quartus13.0生成rom的IP核
  • sin.mif文件
  • 仿真过程:modelsim新建工程,run.do脚本仿真。

    需要做的

  • altera库文件加入编译库
  • 加入convert_mif2hex.dll文件,并修改modelsim.ini文件
  • 注意路径

详细说明

这里按照我习惯的方式建立工程和文件路径

新建工程路径

习惯路径安排

prj_name:工程命名;下面包含design、quartus_prj、sim三个文件夹和其他文件
design文件夹下放所有设计文件
quartus_prj文件下是quartus的工程,该文件夹下会新建一个ipcore_dir文件夹用来存放生成的ip核文件
sim文件夹是modelsim仿真工程目录,会把测试文件tb_xxx.v、脚本run.do放在sim下

库文件

220model.valtera_mf.v库文件复制到\prj_name\sim\altera_lib
220model.valtera_mf.v一般在D:\altera\13.1\quartus\eda\sim_lib

修改modelsim.ini并添加convert_hex2ver.dll文件

下载convert_hex2ver.dll文件 这里

  1. 修改modelsim安装目录下的modelsim.ini文件,将其只读属性去掉,在vsim部里添加一行“Veriuser = xxx/convert_hex2ver.dll”,保存文件,将只读属性改回来。
  2. 将下载的convert_hex2ver.dll文件复制到D:\altera\13.1\modelsim_ase\win32aloem

路径注意

  • sin.mif文件复制到sim目录,不用转化为hex文件

开始仿真

新建工程并编写自动执行脚本

modelsim中新建工程,工程目录为\prj_name\sim
run.do脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
quit -sim   #退出当前仿真
.main clear

#建立几个库
vlib ./lib/
vlib ./lib/work_a/
vlib ./lib/design/
vlib ./lib/altera_lib/
vlib ./lib/ipcore_dir/

#将库和实际目录映射
vmap base_space ./lib/work_a/
vmap design ./lib/design/
vmap altera_lib ./lib/altera_lib/
vmap ipcore_dir ./lib/ipcore_dir/

#编译
vlog -work base_space ./tb_xxx.v
vlog -work design ./../design/xxx.v
vlog -work design ./../design/xxx.v
vlog -work altera_lib ./altera_lib/*.v
vlog -work ipcore_dir ./../quartus_prj/ipcore_dir/rom_sin.v
#-t 运行仿真的时间精度是ns
#-L 是链接库关键字
vsim -t ns -voptargs=+acc -L altera_lib -L ipcore_dir -L base_space -L design base_space.tb_xxx #base_space.tb_xxx是测试文件里的顶层模块名

#添加波形
add wave -divider {tb_dac900_1}
add wave tb_dac900/rst_n
add wave tb_dac900/clk_100M
add wave tb_dac900/DA_out
#add wave -divider {dac900}

#add wave tb_dac900/dac900_inst/DAC900_Clk_r
#add wave tb_dac900/dac900_inst/DAC900_Clk

#跑
run 20us

完~

##参考
ModelSim仿真Altera的ROM

知识在于传播,感谢您的支持!