如果我在verilog中显示这条总线,它都是红色的x:
// VERILOG: unassigned signal sigx
reg [15:0] sigx; //displays as RED in gtkwaves
如果我用VHDL语言显示这条总线,它全是绿色的u,这很容易漏掉:
-- unassigned signal sigu
signal sigu : std_logic_vector(15 downto 0); --displays as GREEN?! in gtkwaves
如何为VHDL正确配置gtkwave,使其具有与verilog相同的行为,将未知值显示为红色而不是绿色?即将vcd文件中的配色方案'x‘映射到'u’。
(奇怪的是,gtkwave用红色显示了一个未赋值的位...它只是当你用它们做一辆公交车时,它们在vhdl中显示为绿色...)
发布于 2019-05-15 03:56:32
解决办法是使用perl脚本将vcd文件中的“U”数组转换为“X”数组,这样看起来更像是verilog vcd而不是vhdl vcd文件:
#!/usr/bin/perl
$ovcd = "waves.vcd";
$nvcd = "nwaves.vcd";
print "reading: $ovcd\n";
print "writing: $nvcd\n";
open(I, $ovcd) || die("cannot read file: $ovcd");
open(O, ">$ncd") || die("cannot write file: $nvcd");
while(<I>) {
$line = $_;
if ($line =~ /^b(\S+)\s/) {
$ovalue = $1;
$nvalue = $ovalue;
$nvalue =~ s/U/X/g;
$line =~ s/$ovalue/$nvalue/;
}
print O $line;
}
close(I);
close(O);
https://stackoverflow.com/questions/56137105
复制相似问题