modelsim之do文件的最简使用示例
sim.do
#新建work库
vlib work
#该命令的作用是将目前的逻辑工作库work和实际工作库work映射对应
vmap work work
#编译v文件
vlog F:/modelsim_prj/*.v
#仿真work库中名为counter_tb的模块,最小时间单位为1ns
vsim work.w_tb_top -t 1ns
add wave -r sim:/w_tb_top/*
run 40us
w_tb_top.v
//wsz@20160508
`timescale
1ns/100ps
module w_tb_top(
output
clk_o);
reg
board_clk_62_5 ;
reg
board_rst ;
initial
begin
board_clk_62_5 = 0 ;
board_rst = 1 ;
board_clk_62_5 = 0 ;
board_rst = 1 ;
#700 ;
board_rst = 0 ;
#400 ;
board_rst = 1 ;
end
always #8 board_clk_62_5 = ~board_clk_62_5 ;
assign clk_o = board_clk_62_5;
endmodule
#新建work库
vlib work
#该命令的作用是将目前的逻辑工作库work和实际工作库work映射对应
vmap work work
#编译v文件
vlog F:/modelsim_prj/*.v
#仿真work库中名为counter_tb的模块,最小时间单位为1ns
#需要添加-novopt,否则除了端口信号外的其他信号,其他信号不能在wave中呈现
vsim -novopt work.w_tb_top -t 1ps
#添加波形信号到wave
add wave -r sim:/w_tb_top/*
#忽略错误
onerror {resume}
#记录设计相关的信号
log -r /*
#quietly WaveActiveNextPane {} 0
run 40us
谢谢分享!
thanks for sharing
补充:
如果不使用-novopt 命令行的话,会导致有些信号不会显示到modelsim中。
do文件里换行使用“\”在句末表示,增加层次感,方便理解,而且不会报错
例如:
vsim -t 1ps \
-L $XILINX_LIB/xilinxcorelib_ver \
-L $XILINX_LIB/secureip \
-L $XILINX_LIB/simprims_ver \
-L $XILINX_LIB/unisims_ver \
work.w_tb_top
不使用“\”的话需要这样写:
-L $XILINX_LIB/xilinxcorelib_ver -L $XILINX_LIB/secureip -L $XILINX_LIB/unisims_ver -lib work rniten_tb_top glbl
当然要走vopt flow,可以用acc来控制加哪些信号。Modelsim 10以上还可以启用debug功能...
