多次仿真相同的代码,如果每次查看相同的信号,那么只要在第一次保存了波形文件(export format),然后以后用到的时候do wave_file_name.do就可以了。 但是假如代码层次很深,一层嵌套一层,那么底层的信号名就成了 /module_hier1/module_hier2.../wave_name ,写个见到的脚本修改这个 wave_file_name.do就可以实现信号标签为 wave_name 了。
在仿真前先读入下面的函数,然后 在运行命令: do wave_file_name.do 前
先运行:wave_rename wave_file_name.do
附带一个自动检测该wave_file_name.do是不是已经存在的脚本
只要修改波形窗口名称 tile " pag_siganl" , 波形信号路径"/pag_tb/u_pag/*" 波形信号文件名" pag.do
" 就可以变成适合任何情况的了,
也可以着3个步骤分开来,在波形窗口把原始信号的位置,基等调整好了在运行下面的命令了。
###########打开波形窗口,添加信号波形
set wave_window_name [view -new wave -title pag_siganl] #打开一个新窗口
if { ![file exists pag.do] } {
add wave /pag_tb/u_pag/* ;#给当前窗口添加信号
write format wave -window ${wave_window_name} pag.do
#关闭刚才打开的窗口
regexp ".*cli_(.*).wf.clip.cs" $wave_window_name "\1" i
if {$i} { noview wave$i } else {noview wave}
wave_rename pag.do ;#波形添加标签
do pag.do ;#打开波形文件
} else {
do pag.do ;#波形已经存在,直接打开
}
###########最终现实的修改了label的信号名称
#########函数体
proc wave_rename {fn} {
set fd [open $fn]
set lines [read $fd]
close $fd
set lines [split $lines "\n"]
set fd [open $fn w]
foreach i $lines {
if [regexp "^add wave " $i] {
regexp "(\[^/\]*)$" $i a
regsub "add wave" $i "& -label $a" i
}
puts $fd $i
}
close $fd
}
#########函数体结束
文章评论(0条评论)
登录后参与讨论