原创 一些有用的modelsim脚本

2007-8-30 03:20 4593 5 5 分类: 汽车电子

多次仿真相同的代码,如果每次查看相同的信号,那么只要在第一次保存了波形文件(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
}


#########函数体结束

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条