我有一个巨大的
VCD
文件,我将其与 gtkwave
结合使用来观察某些信号行为。我有一个存储在 .txt
文件中的信号列表,这些信号是我希望探测的信号。问题是,手动插入信号是一个艰苦而漫长的过程。所以我的问题是,
有没有办法,给定
.txt
文件来编写 .tcl
脚本,过滤列表中的指定信号并将其添加到波形编辑器?
嗯,在查阅手册和一些
gists
之后,我发现这里和那里似乎有很多可以使用的gtkwave
说明,这些说明(大部分)都列在gtkwave
手册(附录E)上在这里。简而言之,您所要做的就是按照以下格式编写一个 .tcl
脚本:
# add_waves.tcl
set sig_list [list sig_name_a, register_name\[32:0\], ... ] # note the escaping of the [,] brackets
gtkwave::addSignalsFromList $sig_list
然后调用 gktwave 为:
gtkwave VCD_file.vcd --script=add_waves.tcl
此外,还可以通过
tcl
中的以下语法访问 GUI 菜单选项:
gtkwave::/Edit/<Option> <value>
我面临着同样的情况,并实施了接受的答案中提供的解决方案。
但是,我在解析 .txt 文件时浪费了一些时间,我只是没有注意到在这种情况下,不需要转义
[,]
字符,它是由 tcl 处理的。
我从
wave_names.txt
文件读取的最终脚本是:
proc listFromFile {filename} {
set f [open $filename r]
set data [split [string trim [read $f]]]
close $f
return $data
}
set sig_list [listFromFile wave_names.txt]
gtkwave::addSignalsFromList $sig_list