嵌入式技术论坛
直播中

王银喜

7年用户 2416经验值
私信 关注
[经验]

modelsim自动化独立仿真介绍

所需文件及其作用:

为简化流程,一共需要三个文件,sim.bat文件,sim.do文件和wave.do文件;

sim.bat :windows批处理文件,用于启动modelsim,然后运行sim.do文件;

modelsim -do sim.do

注意 :modelsim在安装的时候需要加入到环境变量。

sim.do : 自动化仿真脚本,语法是TCL,负责新建库,映射库,编译源文件,添加波形,启动仿真......

cd {D:/xxx/FPGA Demo/Xilinx FPGA/DDR_TEST/sim/tb_ddr_rw_user}

quit -sim  
.main clear

vlib ./modelsim_lib
vlib ./modelsim_lib/work
vlib ./modelsim_lib/msim
vlib ./modelsim_lib/msim/xil_defaultlib

vmap xil_defaultlib ./modelsim_lib/msim/xil_defaultlib

set SOURCE_HOME {D:/xxx/FPGA Demo/Xilinx FPGA/DDR_TEST}
 
vcom -64 -93 -work xil_defaultlib $SOURCE_HOME/src/ip/ddr_mult/sim/ddr_mult.vhd

vlog -64 -incr -work xil_defaultlib  +incdir+$SOURCE_HOME/src/ip/ddr4_0/ip_1/rtl/map +incdir+$SOURCE_HOME/src/ip/ddr4_0/rtl/ip_top +incdir+$SOURCE_HOME/src/ip/ddr4_0/rtl/cal    \
$SOURCE_HOME/sim/tb_ddr_rw_user/tb_ddr_rw_user.v \
$SOURCE_HOME/sim/tb_ddr_rw_user/ddr4_mem.v \
$SOURCE_HOME/src/ddr_rw_user/ddr_rw_test.v \
$SOURCE_HOME/src/ddr_rw_user/ddr_rw_user.v \
$SOURCE_HOME/src/ip/ddr2data/sim/ddr2data.v \
$SOURCE_HOME/src/ip/ddr2data/simulation/blk_mem_gen_v8_4.v \
$SOURCE_HOME/src/ip/data2ddr/sim/data2ddr.v \
$SOURCE_HOME/src/ip/data2ddr/simulation/blk_mem_gen_v8_4.v \

# compile glbl module
# vlog -work xil_defaultlib "glbl.v"


vsim -t ns -voptargs=+acc xil_defaultlib.tb_ddr_rw_user  

set NumericStdNoWarnings 1
set StdArithNoWarnings 1

do {wave.do}

view wave
view structure
view signals

run 800 ms

wave.do : 仿真结果的波形信号显示等设置,包括信号名,颜色,进制等信息,最好是先仿真一遍设置好之后直接用modelsim保存;

onerror {resume}
quietly WaveActivateNextPane {} 0
add wave -divider {tb_ddr_rw_user}   
add wave -noupdate /tb_ddr_rw_user/clk
add wave -noupdate /tb_ddr_rw_user/rst
add wave -noupdate /tb_ddr_rw_user/clk_153p6
add wave -noupdate /tb_ddr_rw_user/rst_153p6
add wave -noupdate /tb_ddr_rw_user/clk_245p76
add wave -noupdate /tb_ddr_rw_user/rst_245p76
add wave -noupdate /tb_ddr_rw_user/app_rdy
add wave -noupdate /tb_ddr_rw_user/app_en
add wave -noupdate /tb_ddr_rw_user/app_cmd
add wave -noupdate /tb_ddr_rw_user/app_addr
add wave -noupdate /tb_ddr_rw_user/app_wdf_wren
add wave -noupdate /tb_ddr_rw_user/app_wdf_end
add wave -noupdate /tb_ddr_rw_user/app_wdf_data
add wave -noupdate /tb_ddr_rw_user/app_wdf_mask
add wave -noupdate /tb_ddr_rw_user/app_wdf_rdy
add wave -noupdate /tb_ddr_rw_user/app_rd_data_valid
add wave -noupdate /tb_ddr_rw_user/app_rd_data_end
add wave -noupdate /tb_ddr_rw_user/app_rd_data
add wave -noupdate /tb_ddr_rw_user/init_calib_complete
...
...
...
TreeUpdate [SetDefaultTree]
WaveRestoreCursors {{Cursor 1} {92268318000 ps} 0}
quietly wave cursor active 1
configure wave -namecolwidth 183
configure wave -valuecolwidth 100
configure wave -justifyvalue left
configure wave -signalnamewidth 1
configure wave -snapdistance 10
configure wave -datasetprefix 0
configure wave -rowmargin 4
configure wave -childrowmargin 2
configure wave -gridoffset 0
configure wave -gridperiod 1
configure wave -griddelta 40
configure wave -timeline 0
configure wave -timelineunits ns
update
WaveRestoreZoom {0 ps} {189070505374 ps}

modelsim仿真完成,波形参数设置好之后,直接ctrl+S快捷键保存,或者使用File -> Save Format进行保存。

原作者:破天荒

更多回帖

发帖
×
20
完善资料,
赚取积分