VHDL & GTKWAVE: как заставить шину значений битов "u" отображать красным цветом вместо зеленого? - PullRequest
0 голосов
/ 14 мая 2019

Если я показываю эту шину в verilog, все ее красные крестики:

// 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

Как правильно настроить gtkwaves для VHDL таким образом, чтобы он работал так же, как и verilog, отображая неизвестные значения красным цветом вместо зеленого? а именно, чтобы отобразить схему раскраски 'x' в 'u' в файле vcd.

(как ни странно, gtkwave отображает один бит, который не назначен красным цветом ... просто когда вы делаете из них автобус, они отображаются зеленым цветом в vhdl ...)

1 Ответ

0 голосов
/ 14 мая 2019

Обходите использование сценария perl для преобразования массивов 'U' в массивы 'X' в файле vcd, тогда это больше похоже на 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);
...