modelsim做后仿真的一点思路

        这是以TD_5.6.3_Release_88061生成的网表文件(其他工具生成的网表文件类似),与modelsim联合进行门级仿真的样例,时序仿真与门级仿真的方法类似,只是增加了标准延时文件。

1、建立门级仿真工程

        将门级网表和testbench添加进来,建立工程。

2、查找所有的wire变量

        (1)在modelsim中将tb文件设置为顶层文件,运行仿真。
       (2)  在sim窗口,找到顶层设计的实例化名字,鼠标右键点击add wave ,将所有的wire型变量添加到wave窗口。

        (3)点击save按钮,将所有的wire型变量保存到.do文件。下面就是设计中所有wire信号的绝对路径。

3、使用find connections命令查找所有wire变量的连接关系

        主要是与instance的连接关系,这样整个设计的门级单元以及互联关系就清楚了。将所有的wire变量以及与instance之间的互联关系保存到txt文件,就可以追踪数据流了。

find connections {/tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/cnt }

# Connected nets for {/tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/cnt }
# 	  output : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/ns[0]_syn_44 /q[0]
# 	  output : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/ns[0]_syn_46 /q[0]
# 	  output : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg0_syn_44 /q[0]
# 	  output : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg0_syn_44 /q[1]
# 	  output : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg0_syn_48 /q[0]
# 	  output : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg0_syn_48 /q[1]
# 	  output : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg0_syn_51 /q[0]
# 	  output : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg0_syn_51 /q[1]
# 	internal : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/cnt 
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/add3_syn_70 /a[1]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/add3_syn_73 /a[0]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/add3_syn_73 /a[1]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/add3_syn_76 /a[0]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/add3_syn_76 /a[1]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/add3_syn_79 /a[0]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/add3_syn_79 /a[1]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/add3_syn_81 /a[0]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg4_syn_393 /a[0]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg4_syn_393 /a[1]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg4_syn_393 /b[0]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg4_syn_393 /b[1]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg4_syn_393 /c[0]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg4_syn_393 /c[1]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg4_syn_393 /d[0]
# 	   input : /tb/inst_ac/\adc_array_1/adc_module[0]$adc7606_ctr_1/ad7606_1/reg4_syn_393 /d[1]
# 

(4)在modelsim中使用脚本将所有wire变量信号的连接关系保存到txt文件中




set wire_signals { /tb/inst/ClkIn
 /tb/inst/CLK_dj
 /tb/inst/RstnIn
 /tb/inst/CmdRstIn
 /tb/inst/DspIspIn
 /tb/inst/DspHCntlOut
 /tb/inst/DspHrwNOut
 /tb/inst/DspHds1NOut
 /tb/inst/DspHds2NOut
 /tb/inst/DspHcsNOut
 /tb/inst/DspHasNOut
 /tb/inst/DspHrdyNIn
 /tb/inst/DspHbeNOut
 /tb/inst/DspHhwilOut };
 
 
 foreach instt $wire_signals {
 puts [find connections $instt]
 }
 
 
 
 set fhandle [open "wire_con.txt"  w]
 
 
 foreach ins $wire_signals {
 puts $fhandle [find connections  $ins]
 
 }
 
 
 close $fhandle;
 
 
 

打开wire_con.txt文件可以看到如下所示的连接关系

Connected nets for /tb/inst/ClkIn
	internal : /tb/ClkIn
	   input : /tb/inst/ClkIn
	   input : /tb/inst/\ClkIn_pad/U0/U0 /PAD

Connected nets for /tb/inst/CLK_dj
	internal : /tb/CLK_dj
	   input : /tb/inst/CLK_dj
	   input : /tb/inst/\CLK_dj_pad/U0/U0 /PAD

Connected nets for /tb/inst/RstnIn
	internal : /tb/RstnIn
	   input : /tb/inst/RstnIn
	   input : /tb/inst/\RstnIn_pad/U0/U0 /PAD

Connected nets for /tb/inst/CmdRstIn
	internal : /tb/CmdRstIn
	   input : /tb/inst/CmdRstIn
	   input : /tb/inst/\CmdRstIn_pad/U0/U0 /PAD

Connected nets for /tb/inst/DspIspIn
	internal : /tb/DspIspIn
	   input : /tb/inst/DspIspIn
	   input : /tb/inst/\DspIspIn_pad/U0/U0 /PAD

Connected nets for /tb/inst/DspHCntlOut
	  output : /tb/inst/DspHCntlOut[0]
	  output : /tb/inst/DspHCntlOut[1]
	  output : /tb/inst/\DspHCntlOut_pad[0]/U0/U0 /PAD
	  output : /tb/inst/\DspHCntlOut_pad[1]/U0/U0 /PAD
	internal : /tb/DspHCntlOut[0]
	internal : /tb/DspHCntlOut[1]

        将rtl代码范围缩小至某一个实例化模块,通过rtl代码与网表中的信号进行对比,找出需要查看的信号。

添加信号的方式有两种:
(1)

add wave  {sim:/tb/inst_ac/\clk_management_1/sys_pll_1/pll_inst /*}



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值