您的位置:首页 > 其它

Modelsim仿真查看内部信号

2014-07-07 14:07 288 查看


1. 配置仿真工具

在Quartus 中,选择Assignments->Settings,然后再弹出的对话框左侧选择EDA Tool Settings->simulation,可以进行仿真的配置,如Tool name, Format(VHDL/Verilog/...), TestBench, simulation script等。

2. 从Quartus中运行Modelsim

Tools->Run EDA simulation Tool,有两个选项,EDA RTL simulation就是功能仿真,EDA Gate level simulation 就是时序仿真。选择后Modelsim会自动启动,并打开Wave窗口,显示testbench 中的波形。

3. 查看内部信号

如果使用以上的方法,打开的信号波形默认都是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的内容如下:

[plain] view
plaincopy

transcript on  

if {[file exists rtl_work]} {  

<span style="white-space:pre">  </span>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

[plain] view
plaincopy

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 就好了。我是这样做的,感觉方便了不少,不知道还有没有更好的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: