Modelsim仿真查看内部信号

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 plain copy
  1. transcript on  
  2. if {[file exists rtl_work]} {  
  3. <span style="white-space:pre">  </span>vdel -lib rtl_work -all  
  4. }  
  5. vlib rtl_work  
  6. vmap work rtl_work  
  7.   
  8.   
  9. vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi/pkg_param.vhd}  
  10. vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi/pkg_trellis.vhd}  
  11. vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi/dec_viterbi.vhd}  
  12. vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi/dec_viterbi_tb.vhd}  
  13.   
  14.   
  15. vsim -t 1ps -L altera -L lpm -L sgate -L altera_mf -L cycloneive -L rtl_work -L work -voptargs="+acc" dec_viterbi_tb  
  16.   
  17.   
  18. add wave *  
  19. view structure  
  20. view signals  
  21. run -all  
看到了倒数第四句,意思是添加所有信号,这时我们就可以按照需要添加我们需要的信号。改后成为:myscript.do

[plain]  view plain copy
  1. transcript on  
  2. if {[file exists rtl_work]} {  
  3.     vdel -lib rtl_work -all  
  4. }  
  5. vlib rtl_work  
  6. vmap work rtl_work  
  7.   
  8. vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi_ver2/pkg_param.vhd}  
  9. vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi_ver2/pkg_trellis.vhd}  
  10. vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi_ver2/dec_viterbi.vhd}  
  11. vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi_ver2/acs.vhd}  
  12. vcom -93 -work work {C:/Users/Du/MyWork/WiFi-FPGA/viterbi_ver2/dec_viterbi_tb.vhd}  
  13.   
  14. vsim -t 1ps -L altera -L lpm -L sgate -L altera_mf -L cycloneive -L rtl_work -L work -voptargs="+acc" dec_viterbi_tb  
  15.   
  16. add wave /dec_viterbi_tb/u1/clk_in  
  17. add wave /dec_viterbi_tb/u1/clk_out  
  18. add wave /dec_viterbi_tb/u1/cnt_dec  
  19. add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/inrecv  
  20. add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/inprepm_high  
  21. add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/inprepm_low  
  22. add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/v_high  
  23. add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/v_low  
  24. add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/outpm  
  25. add wave /dec_viterbi_tb/u1/gen_acs__63/inst_acs/outsp  
  26.   
  27.   
  28. add wave /dec_viterbi_tb/u1/pmm  
  29.   
  30. view structure  
  31. view signals  
  32. run -all  

这样只要在Quartus中设置了这个myscript.do 文件,程序运行的时候就可以自动按照里面的命令执行了。

也可以在Transcript窗口输入do myscript.do执行。这样还有一个好处就是,不用每次综合完,都要关一下仿真器,再重新启动,只需要综合完,在Modelsim的命令窗口输入个do myscript.do 就好了。我是这样做的,感觉方便了不少,不知道还有没有更好的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值