Bootstrap

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 /*}



 

;