VHDL和GTKWAVE:如何获取“ u”位值的总线以红色而不是绿色显示?

时间:2019-05-14 19:13:40

标签: vhdl

如果我在verilog中显示此总线,则它的所有红色x均为

// VERILOG: unassigned signal sigx
reg [15:0] sigx; //displays as RED in gtkwaves

如果我在vhdl中显示此总线,那么它全是绿色,这很容易错过:

-- unassigned signal sigu
signal sigu : std_logic_vector(15 downto 0); --displays as GREEN?! in gtkwaves

如何通过为红色而不是绿色显示未知值来为VHDL正确配置gtkwaves,使其具有与verilog相同的行为?即在VCD文件中将“ x”的着色方案映射到“ u”。

(奇怪的是,gtkwave显示了一个未分配为红色的位,...当您用它们制作总线时,它们在vhdl中显示为绿色...)

1 个答案:

答案 0 :(得分:0)

使用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);