http://blog.csdn.net/xianrudu/article/details/8177965 转帖
查看内部信号
如果使用以上的方法,打开的信号波形默认都是testbench里面定义的。有时候需要查看模块内部信号,也是很方便的。
可以在sim窗口中一层一层找到的所在的instance,选中,这样就会在Object上窗口出现所用到的信号。选择需要的拖到Wave窗口即可。
也可以在Transcript窗口输入命令add wave /testbench_name/design_unit_name/signal_name。这个名字是路径的形式,一层一层写下去的。如果不知道,可以把鼠标悬浮在Object对应的信号上,会出现这个信号的完整路径。
4. 写Modelsim的script
但是这两种方法都比较麻烦,因为每次从Quartus中调用Modelsim的时候都会进行默认配置,这就需要每次都要重新添加信号,调整顺序。对了,还得先选择simulate->start simulation,添加信号后,再选择simulate->run -all。
其实,根据上面写的命令,可以把我么想要的添加信号操作都放在一个脚本文件(.do)中,然后在Quartus的仿真器配置中,勾选use script to set up simulation,并选择script文件路径。这样每次每次启动的时候,都按照文件中的一条一条命令执行了,省了很多事。
关于脚本文件的写法,也不用那么复杂。仿真的时候,有个默认的脚本文件,在仿真文件目录下,.do的那个。例如我的文件viterbi_run_msim_rtl_vhdl.do的内容如下:
- transcript on
- if {[file exists rtl_work]} {
- style="white-space:pre">vdel -lib rtl_work -all
- }
- vlib rtl_work
- vmap work rtl_work
-
-
- vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi/pkg_param.vhd}
- vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi/pkg_trellis.vhd}
- vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi/dec_viterbi.vhd}
- vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi/dec_viterbi_tb.vhd}
-
-
- vsim -t 1ps -L altera -L lpm -L sgate -L altera_mf -L cycloneive -L rtl_work -L work -voptargs="+acc" dec_viterbi_tb
-
-
- add wave *
- view structure
- view signals
- run -all
看到了倒数第四句,意思是添加所有信号,这时我们就可以按照需要添加我们需要的信号。改后成为:myscript.do
- transcript on
- if {[file exists rtl_work]} {
- vdel -lib rtl_work -all
- }
- vlib rtl_work
- vmap work rtl_work
-
- vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi_ver2/pkg_param.vhd}
- vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi_ver2/pkg_trellis.vhd}
- vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi_ver2/dec_viterbi.vhd}
- vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi_ver2/acs.vhd}
- vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi_ver2/dec_viterbi_tb.vhd}
-
- vsim -t 1ps -L altera -L lpm -L sgate -L altera_mf -L cycloneive -L rtl_work -L work -voptargs="+acc" dec_viterbi_tb
-
- add wave /dec_viterbi_tb/u1/clk_in
- add wave /dec_viterbi_tb/u1/clk_out
- add wave /dec_viterbi_tb/u1/cnt_dec
- add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/inrecv
- add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/inprepm_high
- add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/inprepm_low
- add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/v_high
- add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/v_low
- add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/outpm
- add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/outsp
-
- add wave /dec_viterbi_tb/u1/pmm
-
- view structure
- view signals
- run -all
这样只要在Quartus中设置了这个myscript.do 文件,程序运行的时候就可以自动按照里面的命令执行了。
也可以在Transcript窗口输入do myscript.do执行。这样还有一个好处就是,不用每次综合完,都要关一下仿真器,再重新启动,只需要综合完,在Modelsim的命令窗口输入个do myscript.do 就好了。我是这样做的,感觉方便了不少,不知道还有没有更好的方法。
文章评论(0条评论)
登录后参与讨论