首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >VHDL & GTKWAVE:如何让总线的"u“位值显示为红色而不是绿色?

VHDL & GTKWAVE:如何让总线的"u“位值显示为红色而不是绿色?
EN

Stack Overflow用户
提问于 2019-05-15 03:13:40
回答 1查看 306关注 0票数 0

如果我在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中显示为绿色...)

EN

回答 1

Stack Overflow用户

发布于 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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56137105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档