为简化流程,一共需要三个文件,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进行保存。
原作者:破天荒
更多回帖