From 70b3a599cee4a1fad732bf4c153abb097786c20f Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Mon, 16 Nov 2020 18:11:27 -0500 Subject: [PATCH] Fix trace signal names getting hashed (#2643). --- Changes | 4 +- src/V3Ast.cpp | 8 +- src/V3String.cpp | 12 + src/V3String.h | 4 + test_regress/t/t_trace_complex.out | 390 ++++++------ test_regress/t/t_trace_complex.v | 54 +- test_regress/t/t_trace_complex_fst.out | 292 ++++----- test_regress/t/t_trace_complex_params.out | 390 ++++++------ test_regress/t/t_trace_complex_params_fst.out | 292 ++++----- test_regress/t/t_trace_complex_structs.out | 588 +++++++++--------- .../t/t_trace_complex_structs_fst.out | 464 +++++++------- 11 files changed, 1269 insertions(+), 1229 deletions(-) diff --git a/Changes b/Changes index a531066d0..5fed7394f 100644 --- a/Changes +++ b/Changes @@ -5,10 +5,12 @@ The contributors that suggested a given feature are shown in []. Thanks! * Verilator 4.105 devel +**** Fix trace signal names getting hashed (#2643). [Barbara Gigerl] + * Verilator 4.104 2020-11-14 -*** Support queue and associative array 'with' statements. (#2616) +*** Support queue and associative array 'with' statements (#2616). *** Support queue slicing (#2326). diff --git a/src/V3Ast.cpp b/src/V3Ast.cpp index f7bf4eccd..819c0badf 100644 --- a/src/V3Ast.cpp +++ b/src/V3Ast.cpp @@ -127,8 +127,9 @@ string AstNode::encodeName(const string& namein) { } // Shorten names // TODO long term use VName in place of "string name" - VName vname(out); - out = vname.hashedName(); + // Then we also won't need to save the table of hased values + VName vname{out}; + return vname.hashedName(); return out; } @@ -161,7 +162,8 @@ string AstNode::dedotName(const string& namein) { string AstNode::vcdName(const string& namein) { // VCD tracing expects space to separate hierarchy // Dots are reserved for dots the user put in the name - string pretty = namein; + // We earlier hashed all symbols, dehash them so user sees real name + string pretty{VName::dehash(namein)}; string::size_type pos; while ((pos = pretty.find("__DOT__")) != string::npos) pretty.replace(pos, 7, " "); while ((pos = pretty.find('.')) != string::npos) pretty.replace(pos, 1, " "); diff --git a/src/V3String.cpp b/src/V3String.cpp index fcb3ebd38..d8d2c32cd 100644 --- a/src/V3String.cpp +++ b/src/V3String.cpp @@ -25,6 +25,7 @@ size_t VName::s_minLength = 32; size_t VName::s_maxLength = 0; // Disabled +std::map VName::s_dehashMap; //###################################################################### // Wildcard @@ -377,6 +378,15 @@ void VHashSha256::selfTest() { //###################################################################### // VName +string VName::dehash(const string& in) { + const string::size_type pos = in.find("__Vhsh"); + if (VL_LIKELY(pos == string::npos)) return in; + const string vhsh = in.substr(pos); + const auto& it = s_dehashMap.find(vhsh); + UASSERT(it != s_dehashMap.end(), "String not in reverse hash map '" << vhsh << "'"); + return in.substr(0, pos) + it->second; +} + string VName::hashedName() { if (m_name == "") return ""; if (m_hashed != "") return m_hashed; // Memoized @@ -387,8 +397,10 @@ string VName::hashedName() { VHashSha256 hash(m_name); string suffix = "__Vhsh" + hash.digestSymbol(); if (s_minLength < s_maxLength) { + s_dehashMap[suffix] = m_name.substr(s_minLength); m_hashed = m_name.substr(0, s_minLength) + suffix; } else { + s_dehashMap[suffix] = m_name; m_hashed = suffix; } return m_hashed; diff --git a/src/V3String.h b/src/V3String.h index b02ee587f..a8f8361ad 100644 --- a/src/V3String.h +++ b/src/V3String.h @@ -22,6 +22,7 @@ // No V3 headers here - this is a base class for Vlc etc +#include #include #include #include @@ -159,9 +160,11 @@ private: class VName { string m_name; string m_hashed; + static std::map s_dehashMap; // hashed -> original decoder static size_t s_maxLength; // Length at which to start hashing static size_t s_minLength; // Length to preserve if over maxLength + public: // CONSTRUCTORS explicit VName(const string& name) @@ -178,6 +181,7 @@ public: // Length at which to start hashing, 0=disable static void maxLength(size_t flag) { s_maxLength = flag; } static size_t maxLength() { return s_maxLength; } + static string dehash(const string& in); }; //###################################################################### diff --git a/test_regress/t/t_trace_complex.out b/test_regress/t/t_trace_complex.out index 1372dbc2c..e57a057af 100644 --- a/test_regress/t/t_trace_complex.out +++ b/test_regress/t/t_trace_complex.out @@ -1,53 +1,54 @@ $version Generated by VerilatedVcd $end -$date Tue Jan 21 18:15:27 2020 +$date Mon Nov 16 17:48:27 2020 $end $timescale 1ps $end $scope module top $end - $var wire 1 7" clk $end + $var wire 1 = clk $end $scope module $unit $end $var wire 1 # global_bit $end $upscope $end $scope module t $end - $var wire 1 7" clk $end - $var wire 32 + cyc [31:0] $end - $var wire 8 p" unpacked_array(-1) [7:0] $end - $var wire 8 o" unpacked_array(-2) [7:0] $end - $var wire 8 q" unpacked_array(0) [7:0] $end - $var real 64 E! v_arr_real(0) $end - $var real 64 G! v_arr_real(1) $end - $var wire 2 [ v_arrp [2:1] $end - $var wire 4 c v_arrp_arrp [3:0] $end - $var wire 4 k v_arrp_strp [3:0] $end - $var wire 1 ?" v_arru(1) $end - $var wire 1 @" v_arru(2) $end - $var wire 2 s v_arru_arrp(3) [2:1] $end - $var wire 2 t v_arru_arrp(4) [2:1] $end - $var wire 1 O" v_arru_arru(3)(1) $end - $var wire 1 W" v_arru_arru(3)(2) $end - $var wire 1 _" v_arru_arru(4)(1) $end - $var wire 1 g" v_arru_arru(4)(2) $end - $var wire 2 %! v_arru_strp(3) [1:0] $end - $var wire 2 -! v_arru_strp(4) [1:0] $end - $var wire 3 u! v_enumb [2:0] $end - $var wire 6 }! v_enumb2_str [5:0] $end - $var wire 32 e! v_enumed [31:0] $end - $var wire 32 m! v_enumed2 [31:0] $end - $var real 64 5! v_real $end - $var wire 64 3 v_str32x2 [63:0] $end - $var wire 2 C v_strp [1:0] $end - $var wire 4 K v_strp_strp [3:0] $end - $var wire 2 S v_unip_strp [1:0] $end + $var wire 1 G LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end + $var wire 1 = clk $end + $var wire 32 $ cyc [31:0] $end + $var wire 8 E unpacked_array(-1) [7:0] $end + $var wire 8 D unpacked_array(-2) [7:0] $end + $var wire 8 F unpacked_array(0) [7:0] $end + $var real 64 1 v_arr_real(0) $end + $var real 64 3 v_arr_real(1) $end + $var wire 2 ( v_arrp [2:1] $end + $var wire 4 ) v_arrp_arrp [3:0] $end + $var wire 4 * v_arrp_strp [3:0] $end + $var wire 1 > v_arru(1) $end + $var wire 1 ? v_arru(2) $end + $var wire 2 + v_arru_arrp(3) [2:1] $end + $var wire 2 , v_arru_arrp(4) [2:1] $end + $var wire 1 @ v_arru_arru(3)(1) $end + $var wire 1 A v_arru_arru(3)(2) $end + $var wire 1 B v_arru_arru(4)(1) $end + $var wire 1 C v_arru_arru(4)(2) $end + $var wire 2 - v_arru_strp(3) [1:0] $end + $var wire 2 . v_arru_strp(4) [1:0] $end + $var wire 3 9 v_enumb [2:0] $end + $var wire 6 : v_enumb2_str [5:0] $end + $var wire 32 7 v_enumed [31:0] $end + $var wire 32 8 v_enumed2 [31:0] $end + $var real 64 / v_real $end + $var wire 64 5 v_str32x2 [63:0] $end + $var wire 2 % v_strp [1:0] $end + $var wire 4 & v_strp_strp [3:0] $end + $var wire 2 ' v_unip_strp [1:0] $end $scope module p2 $end - $var wire 32 )# PARAM [31:0] $end + $var wire 32 H PARAM [31:0] $end $upscope $end $scope module p3 $end - $var wire 32 1# PARAM [31:0] $end + $var wire 32 I PARAM [31:0] $end $upscope $end $scope module unnamedblk1 $end - $var wire 32 '" b [31:0] $end + $var wire 32 ; b [31:0] $end $scope module unnamedblk2 $end - $var wire 32 /" a [31:0] $end + $var wire 32 < a [31:0] $end $upscope $end $upscope $end $upscope $end @@ -57,173 +58,174 @@ $enddefinitions $end #0 1# -b00000000000000000000000000000000 + -b0000000000000000000000000000000000000000000000000000000011111111 3 -b00 C -b0000 K -b00 S -b00 [ -b0000 c -b0000 k -b00 s -b00 t -b00 %! -b00 -! -r0 5! -r0 E! -r0 G! -b00000000000000000000000000000000 e! -b00000000000000000000000000000000 m! -b000 u! -b000000 }! -b00000000000000000000000000000000 '" -b00000000000000000000000000000000 /" -07" -0?" -0@" -0O" -0W" -0_" -0g" -b00000000 o" -b00000000 p" -b00000000 q" -b00000000000000000000000000000010 )# -b00000000000000000000000000000011 1# +b00000000000000000000000000000000 $ +b00 % +b0000 & +b00 ' +b00 ( +b0000 ) +b0000 * +b00 + +b00 , +b00 - +b00 . +r0 / +r0 1 +r0 3 +b0000000000000000000000000000000000000000000000000000000011111111 5 +b00000000000000000000000000000000 7 +b00000000000000000000000000000000 8 +b000 9 +b000000 : +b00000000000000000000000000000000 ; +b00000000000000000000000000000000 < +0= +0> +0? +0@ +0A +0B +0C +b00000000 D +b00000000 E +b00000000 F +0G +b00000000000000000000000000000010 H +b00000000000000000000000000000011 I #10 -b00000000000000000000000000000001 + -b0000000000000000000000000000000100000000000000000000000011111110 3 -b11 C -b1111 K -b11 S -b11 [ -b1111 c -b1111 k -b11 s -b11 t -b11 %! -b11 -! -r0.1 5! -r0.2 E! -r0.3 G! -b00000000000000000000000000000001 e! -b00000000000000000000000000000010 m! -b111 u! -b00000000000000000000000000000101 '" -b00000000000000000000000000000101 /" -17" +b00000000000000000000000000000001 $ +b11 % +b1111 & +b11 ' +b11 ( +b1111 ) +b1111 * +b11 + +b11 , +b11 - +b11 . +r0.1 / +r0.2 1 +r0.3 3 +b0000000000000000000000000000000100000000000000000000000011111110 5 +b00000000000000000000000000000001 7 +b00000000000000000000000000000010 8 +b111 9 +b00000000000000000000000000000101 ; +b00000000000000000000000000000101 < +1= #15 -07" +0= #20 -b00000000000000000000000000000010 + -b0000000000000000000000000000001000000000000000000000000011111101 3 -b00 C -b0000 K -b00 S -b00 [ -b0000 c -b0000 k -b00 s -b00 t -b00 %! -b00 -! -r0.2 5! -r0.4 E! -r0.6 G! -b00000000000000000000000000000010 e! -b00000000000000000000000000000100 m! -b110 u! -b111111 }! -17" +b00000000000000000000000000000010 $ +b00 % +b0000 & +b00 ' +b00 ( +b0000 ) +b0000 * +b00 + +b00 , +b00 - +b00 . +r0.2 / +r0.4 1 +r0.6 3 +b0000000000000000000000000000001000000000000000000000000011111101 5 +b00000000000000000000000000000010 7 +b00000000000000000000000000000100 8 +b110 9 +b111111 : +1= #25 -07" +0= #30 -b00000000000000000000000000000011 + -b0000000000000000000000000000001100000000000000000000000011111100 3 -b11 C -b1111 K -b11 S -b11 [ -b1111 c -b1111 k -b11 s -b11 t -b11 %! -b11 -! -r0.3 5! -r0.6000000000000001 E! -r0.8999999999999999 G! -b00000000000000000000000000000011 e! -b00000000000000000000000000000110 m! -b101 u! -b110110 }! -17" +b00000000000000000000000000000011 $ +b11 % +b1111 & +b11 ' +b11 ( +b1111 ) +b1111 * +b11 + +b11 , +b11 - +b11 . +r0.3 / +r0.6000000000000001 1 +r0.8999999999999999 3 +b0000000000000000000000000000001100000000000000000000000011111100 5 +b00000000000000000000000000000011 7 +b00000000000000000000000000000110 8 +b101 9 +b110110 : +1= #35 -07" +0= #40 -b00000000000000000000000000000100 + -b0000000000000000000000000000010000000000000000000000000011111011 3 -b00 C -b0000 K -b00 S -b00 [ -b0000 c -b0000 k -b00 s -b00 t -b00 %! -b00 -! -r0.4 5! -r0.8 E! -r1.2 G! -b00000000000000000000000000000100 e! -b00000000000000000000000000001000 m! -b100 u! -b101101 }! -17" +b00000000000000000000000000000100 $ +b00 % +b0000 & +b00 ' +b00 ( +b0000 ) +b0000 * +b00 + +b00 , +b00 - +b00 . +r0.4 / +r0.8 1 +r1.2 3 +b0000000000000000000000000000010000000000000000000000000011111011 5 +b00000000000000000000000000000100 7 +b00000000000000000000000000001000 8 +b100 9 +b101101 : +1= #45 -07" +0= #50 -b00000000000000000000000000000101 + -b0000000000000000000000000000010100000000000000000000000011111010 3 -b11 C -b1111 K -b11 S -b11 [ -b1111 c -b1111 k -b11 s -b11 t -b11 %! -b11 -! -r0.5 5! -r1 E! -r1.5 G! -b00000000000000000000000000000101 e! -b00000000000000000000000000001010 m! -b011 u! -b100100 }! -17" +b00000000000000000000000000000101 $ +b11 % +b1111 & +b11 ' +b11 ( +b1111 ) +b1111 * +b11 + +b11 , +b11 - +b11 . +r0.5 / +r1 1 +r1.5 3 +b0000000000000000000000000000010100000000000000000000000011111010 5 +b00000000000000000000000000000101 7 +b00000000000000000000000000001010 8 +b011 9 +b100100 : +1= #55 -07" +0= #60 -b00000000000000000000000000000110 + -b0000000000000000000000000000011000000000000000000000000011111001 3 -b00 C -b0000 K -b00 S -b00 [ -b0000 c -b0000 k -b00 s -b00 t -b00 %! -b00 -! -r0.6 5! -r1.2 E! -r1.8 G! -b00000000000000000000000000000110 e! -b00000000000000000000000000001100 m! -b010 u! -b011011 }! -17" +b00000000000000000000000000000110 $ +b00 % +b0000 & +b00 ' +b00 ( +b0000 ) +b0000 * +b00 + +b00 , +b00 - +b00 . +r0.6 / +r1.2 1 +r1.8 3 +b0000000000000000000000000000011000000000000000000000000011111001 5 +b00000000000000000000000000000110 7 +b00000000000000000000000000001100 8 +b010 9 +b011011 : +1= diff --git a/test_regress/t/t_trace_complex.v b/test_regress/t/t_trace_complex.v index 8f283e2e8..14489e9c5 100644 --- a/test_regress/t/t_trace_complex.v +++ b/test_regress/t/t_trace_complex.v @@ -8,21 +8,21 @@ bit global_bit; module t (clk); input clk; - integer cyc=0; + integer cyc=0; typedef struct packed { - bit b1; - bit b0; + bit b1; + bit b0; } strp_t; typedef struct packed { - strp_t x1; - strp_t x0; + strp_t x1; + strp_t x0; } strp_strp_t; typedef union packed { - strp_t x1; - strp_t x0; + strp_t x1; + strp_t x0; } unip_strp_t; typedef bit [2:1] arrp_t; @@ -35,20 +35,20 @@ module t (clk); typedef arrp_t arru_arrp_t [4:3]; typedef strp_t arru_strp_t [4:3]; - strp_t v_strp; - strp_strp_t v_strp_strp; - unip_strp_t v_unip_strp; - arrp_t v_arrp; - arrp_arrp_t v_arrp_arrp; - arrp_strp_t v_arrp_strp; - arru_t v_arru; - arru_arru_t v_arru_arru; - arru_arrp_t v_arru_arrp; - arru_strp_t v_arru_strp; + strp_t v_strp; + strp_strp_t v_strp_strp; + unip_strp_t v_unip_strp; + arrp_t v_arrp; + arrp_arrp_t v_arrp_arrp; + arrp_strp_t v_arrp_strp; + arru_t v_arru; + arru_arru_t v_arru_arru; + arru_arrp_t v_arru_arrp; + arru_strp_t v_arru_strp; real v_real; real v_arr_real [2]; - string v_string; + string v_string; string v_assoc[string]; initial v_assoc["key"] = "value"; @@ -73,6 +73,8 @@ module t (clk); logic [7:0] unpacked_array[-2:0]; + bit LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND; + p #(.PARAM(2)) p2 (); p #(.PARAM(3)) p3 (); @@ -93,18 +95,18 @@ module t (clk); v_enumb <= v_enumb - 1; v_enumb2_str <= {v_enumb, v_enumb}; for (integer b=3; b<=4; b++) begin - v_arru[b] <= ~v_arru[b]; - v_arru_strp[b] <= ~v_arru_strp[b]; - v_arru_arrp[b] <= ~v_arru_arrp[b]; - for (integer a=3; a<=4; a++) begin - v_arru_arru[a][b] = ~v_arru_arru[a][b]; - end + v_arru[b] <= ~v_arru[b]; + v_arru_strp[b] <= ~v_arru_strp[b]; + v_arru_arrp[b] <= ~v_arru_arrp[b]; + for (integer a=3; a<=4; a++) begin + v_arru_arru[a][b] = ~v_arru_arru[a][b]; + end end v_str32x2[0] <= v_str32x2[0] - 1; v_str32x2[1] <= v_str32x2[1] + 1; if (cyc == 5) begin - $write("*-* All Finished *-*\n"); - $finish; + $write("*-* All Finished *-*\n"); + $finish; end end endmodule diff --git a/test_regress/t/t_trace_complex_fst.out b/test_regress/t/t_trace_complex_fst.out index 8b05384c7..e4f264a8e 100644 --- a/test_regress/t/t_trace_complex_fst.out +++ b/test_regress/t/t_trace_complex_fst.out @@ -1,5 +1,5 @@ $date - Sun Apr 19 04:15:26 2020 + Mon Nov 16 17:51:08 2020 $end $version @@ -45,193 +45,197 @@ $var logic 6 : v_enumb2_str $end $var logic 8 ; unpacked_array(-2) $end $var logic 8 < unpacked_array(-1) $end $var logic 8 = unpacked_array(0) $end +$var bit 1 > LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end $scope module unnamedblk1 $end -$var integer 32 > b $end +$var integer 32 ? b $end $scope module unnamedblk2 $end -$var integer 32 ? a $end +$var integer 32 @ a $end $upscope $end $upscope $end $scope module p2 $end -$var parameter 32 @ PARAM $end +$var parameter 32 A PARAM $end $upscope $end $scope module p3 $end -$var parameter 32 A PARAM $end +$var parameter 32 B PARAM $end $upscope $end $upscope $end $scope module $unit $end -$var bit 1 B global_bit $end +$var bit 1 C global_bit $end $upscope $end $upscope $end $enddefinitions $end +#0 $dumpvars -0! -b00000000000000000000000000000000 " -b00 # -b0000 $ -b00 % -b00 & -b0000 ' -b0000 ( -0) -0* -0+ -0, -0- -0. -b00 / -b00 0 -b00 1 -b00 2 -r0 3 -r0 4 -r0 5 -b0000000000000000000000000000000000000000000000000000000011111111 6 -b00000000000000000000000000000000 7 -b00000000000000000000000000000000 8 -b000 9 -b000000 : -b00000000 ; -b00000000 < -b00000000 = -b00000000000000000000000000000000 > +1C +b00000000000000000000000000000011 B +b00000000000000000000000000000010 A +b00000000000000000000000000000000 @ b00000000000000000000000000000000 ? -b00000000000000000000000000000010 @ -b00000000000000000000000000000011 A -1B +0> +b00000000 = +b00000000 < +b00000000 ; +b000000 : +b000 9 +b00000000000000000000000000000000 8 +b00000000000000000000000000000000 7 +b0000000000000000000000000000000000000000000000000000000011111111 6 +r0 5 +r0 4 +r0 3 +b00 2 +b00 1 +b00 0 +b00 / +0. +0- +0, +0+ +0* +0) +b0000 ( +b0000 ' +b00 & +b00 % +b0000 $ +b00 # +b00000000000000000000000000000000 " +0! +$end #10 -b00000000000000000000000000000101 ? -b00000000000000000000000000000101 > -b111 9 -b00000000000000000000000000000010 8 -b00000000000000000000000000000001 7 -b0000000000000000000000000000000100000000000000000000000011111110 6 -r0.3 5 -r0.2 4 -r0.1 3 -b11 2 -b11 1 -b11 0 -b11 / -b1111 ( -b1111 ' -b11 & -b11 % -b1111 $ -b11 # -b00000000000000000000000000000001 " 1! +b00000000000000000000000000000001 " +b11 # +b1111 $ +b11 % +b11 & +b1111 ' +b1111 ( +b11 / +b11 0 +b11 1 +b11 2 +r0.1 3 +r0.2 4 +r0.3 5 +b0000000000000000000000000000000100000000000000000000000011111110 6 +b00000000000000000000000000000001 7 +b00000000000000000000000000000010 8 +b111 9 +b00000000000000000000000000000101 ? +b00000000000000000000000000000101 @ #15 0! #20 1! -b00000000000000000000000000000010 " -b00 # -b0000 $ -b00 % -b00 & -b0000 ' -b0000 ( -b00 / -b00 0 -b00 1 -b00 2 -r0.2 3 -r0.4 4 -r0.6 5 -b0000000000000000000000000000001000000000000000000000000011111101 6 -b00000000000000000000000000000010 7 -b00000000000000000000000000000100 8 b110 9 +b00000000000000000000000000000100 8 +b00000000000000000000000000000010 7 +b0000000000000000000000000000001000000000000000000000000011111101 6 +r0.6 5 +r0.4 4 +r0.2 3 +b00 2 +b00 1 +b00 0 +b00 / +b0000 ( +b0000 ' +b00 & +b00 % +b0000 $ +b00 # +b00000000000000000000000000000010 " b111111 : #25 0! #30 1! b110110 : -b101 9 -b00000000000000000000000000000110 8 -b00000000000000000000000000000011 7 -b0000000000000000000000000000001100000000000000000000000011111100 6 -r0.8999999999999999 5 -r0.6000000000000001 4 -r0.3 3 -b11 2 -b11 1 -b11 0 -b11 / -b1111 ( -b1111 ' -b11 & -b11 % -b1111 $ -b11 # b00000000000000000000000000000011 " +b11 # +b1111 $ +b11 % +b11 & +b1111 ' +b1111 ( +b11 / +b11 0 +b11 1 +b11 2 +r0.3 3 +r0.6000000000000001 4 +r0.8999999999999999 5 +b0000000000000000000000000000001100000000000000000000000011111100 6 +b00000000000000000000000000000011 7 +b00000000000000000000000000000110 8 +b101 9 #35 0! #40 1! -b00000000000000000000000000000100 " -b00 # -b0000 $ -b00 % -b00 & -b0000 ' -b0000 ( -b00 / -b00 0 -b00 1 -b00 2 -r0.4 3 -r0.8 4 -r1.2 5 -b0000000000000000000000000000010000000000000000000000000011111011 6 -b00000000000000000000000000000100 7 -b00000000000000000000000000001000 8 b100 9 +b00000000000000000000000000001000 8 +b00000000000000000000000000000100 7 +b0000000000000000000000000000010000000000000000000000000011111011 6 +r1.2 5 +r0.8 4 +r0.4 3 +b00 2 +b00 1 +b00 0 +b00 / +b0000 ( +b0000 ' +b00 & +b00 % +b0000 $ +b00 # +b00000000000000000000000000000100 " b101101 : #45 0! #50 1! b100100 : -b011 9 -b00000000000000000000000000001010 8 -b00000000000000000000000000000101 7 -b0000000000000000000000000000010100000000000000000000000011111010 6 -r1.5 5 -r1 4 -r0.5 3 -b11 2 -b11 1 -b11 0 -b11 / -b1111 ( -b1111 ' -b11 & -b11 % -b1111 $ -b11 # b00000000000000000000000000000101 " +b11 # +b1111 $ +b11 % +b11 & +b1111 ' +b1111 ( +b11 / +b11 0 +b11 1 +b11 2 +r0.5 3 +r1 4 +r1.5 5 +b0000000000000000000000000000010100000000000000000000000011111010 6 +b00000000000000000000000000000101 7 +b00000000000000000000000000001010 8 +b011 9 #55 0! #60 1! -b00000000000000000000000000000110 " -b00 # -b0000 $ -b00 % -b00 & -b0000 ' -b0000 ( -b00 / -b00 0 -b00 1 -b00 2 -r0.6 3 -r1.2 4 -r1.8 5 -b0000000000000000000000000000011000000000000000000000000011111001 6 -b00000000000000000000000000000110 7 -b00000000000000000000000000001100 8 b010 9 +b00000000000000000000000000001100 8 +b00000000000000000000000000000110 7 +b0000000000000000000000000000011000000000000000000000000011111001 6 +r1.8 5 +r1.2 4 +r0.6 3 +b00 2 +b00 1 +b00 0 +b00 / +b0000 ( +b0000 ' +b00 & +b00 % +b0000 $ +b00 # +b00000000000000000000000000000110 " b011011 : diff --git a/test_regress/t/t_trace_complex_params.out b/test_regress/t/t_trace_complex_params.out index b328bd887..88690fd62 100644 --- a/test_regress/t/t_trace_complex_params.out +++ b/test_regress/t/t_trace_complex_params.out @@ -1,53 +1,54 @@ $version Generated by VerilatedVcd $end -$date Tue Jan 21 18:15:28 2020 +$date Mon Nov 16 17:51:08 2020 $end $timescale 1ps $end $scope module top $end - $var wire 1 7" clk $end + $var wire 1 = clk $end $scope module $unit $end $var wire 1 # global_bit $end $upscope $end $scope module t $end - $var wire 1 7" clk $end - $var wire 32 + cyc [31:0] $end - $var wire 8 p" unpacked_array(-1) [7:0] $end - $var wire 8 o" unpacked_array(-2) [7:0] $end - $var wire 8 q" unpacked_array(0) [7:0] $end - $var real 64 E! v_arr_real(0) $end - $var real 64 G! v_arr_real(1) $end - $var wire 2 [ v_arrp [2:1] $end - $var wire 4 c v_arrp_arrp [3:0] $end - $var wire 4 k v_arrp_strp [3:0] $end - $var wire 1 ?" v_arru(1) $end - $var wire 1 @" v_arru(2) $end - $var wire 2 s v_arru_arrp(3) [2:1] $end - $var wire 2 t v_arru_arrp(4) [2:1] $end - $var wire 1 O" v_arru_arru(3)(1) $end - $var wire 1 W" v_arru_arru(3)(2) $end - $var wire 1 _" v_arru_arru(4)(1) $end - $var wire 1 g" v_arru_arru(4)(2) $end - $var wire 2 %! v_arru_strp(3) [1:0] $end - $var wire 2 -! v_arru_strp(4) [1:0] $end - $var wire 3 u! v_enumb [2:0] $end - $var wire 6 }! v_enumb2_str [5:0] $end - $var wire 32 e! v_enumed [31:0] $end - $var wire 32 m! v_enumed2 [31:0] $end - $var real 64 5! v_real $end - $var wire 64 3 v_str32x2 [63:0] $end - $var wire 2 C v_strp [1:0] $end - $var wire 4 K v_strp_strp [3:0] $end - $var wire 2 S v_unip_strp [1:0] $end + $var wire 1 G LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end + $var wire 1 = clk $end + $var wire 32 $ cyc [31:0] $end + $var wire 8 E unpacked_array(-1) [7:0] $end + $var wire 8 D unpacked_array(-2) [7:0] $end + $var wire 8 F unpacked_array(0) [7:0] $end + $var real 64 1 v_arr_real(0) $end + $var real 64 3 v_arr_real(1) $end + $var wire 2 ( v_arrp [2:1] $end + $var wire 4 ) v_arrp_arrp [3:0] $end + $var wire 4 * v_arrp_strp [3:0] $end + $var wire 1 > v_arru(1) $end + $var wire 1 ? v_arru(2) $end + $var wire 2 + v_arru_arrp(3) [2:1] $end + $var wire 2 , v_arru_arrp(4) [2:1] $end + $var wire 1 @ v_arru_arru(3)(1) $end + $var wire 1 A v_arru_arru(3)(2) $end + $var wire 1 B v_arru_arru(4)(1) $end + $var wire 1 C v_arru_arru(4)(2) $end + $var wire 2 - v_arru_strp(3) [1:0] $end + $var wire 2 . v_arru_strp(4) [1:0] $end + $var wire 3 9 v_enumb [2:0] $end + $var wire 6 : v_enumb2_str [5:0] $end + $var wire 32 7 v_enumed [31:0] $end + $var wire 32 8 v_enumed2 [31:0] $end + $var real 64 / v_real $end + $var wire 64 5 v_str32x2 [63:0] $end + $var wire 2 % v_strp [1:0] $end + $var wire 4 & v_strp_strp [3:0] $end + $var wire 2 ' v_unip_strp [1:0] $end $scope module p2 $end - $var wire 32 )# PARAM [31:0] $end + $var wire 32 H PARAM [31:0] $end $upscope $end $scope module p3 $end - $var wire 32 1# PARAM [31:0] $end + $var wire 32 I PARAM [31:0] $end $upscope $end $scope module unnamedblk1 $end - $var wire 32 '" b [31:0] $end + $var wire 32 ; b [31:0] $end $scope module unnamedblk2 $end - $var wire 32 /" a [31:0] $end + $var wire 32 < a [31:0] $end $upscope $end $upscope $end $upscope $end @@ -57,173 +58,174 @@ $enddefinitions $end #0 1# -b00000000000000000000000000000000 + -b0000000000000000000000000000000000000000000000000000000011111111 3 -b00 C -b0000 K -b00 S -b00 [ -b0000 c -b0000 k -b00 s -b00 t -b00 %! -b00 -! -r0 5! -r0 E! -r0 G! -b00000000000000000000000000000000 e! -b00000000000000000000000000000000 m! -b000 u! -b000000 }! -b00000000000000000000000000000000 '" -b00000000000000000000000000000000 /" -07" -0?" -0@" -0O" -0W" -0_" -0g" -b00000000 o" -b00000000 p" -b00000000 q" -b00000000000000000000000000000010 )# -b00000000000000000000000000000011 1# +b00000000000000000000000000000000 $ +b00 % +b0000 & +b00 ' +b00 ( +b0000 ) +b0000 * +b00 + +b00 , +b00 - +b00 . +r0 / +r0 1 +r0 3 +b0000000000000000000000000000000000000000000000000000000011111111 5 +b00000000000000000000000000000000 7 +b00000000000000000000000000000000 8 +b000 9 +b000000 : +b00000000000000000000000000000000 ; +b00000000000000000000000000000000 < +0= +0> +0? +0@ +0A +0B +0C +b00000000 D +b00000000 E +b00000000 F +0G +b00000000000000000000000000000010 H +b00000000000000000000000000000011 I #10 -b00000000000000000000000000000001 + -b0000000000000000000000000000000100000000000000000000000011111110 3 -b11 C -b1111 K -b11 S -b11 [ -b1111 c -b1111 k -b11 s -b11 t -b11 %! -b11 -! -r0.1 5! -r0.2 E! -r0.3 G! -b00000000000000000000000000000001 e! -b00000000000000000000000000000010 m! -b111 u! -b00000000000000000000000000000101 '" -b00000000000000000000000000000101 /" -17" +b00000000000000000000000000000001 $ +b11 % +b1111 & +b11 ' +b11 ( +b1111 ) +b1111 * +b11 + +b11 , +b11 - +b11 . +r0.1 / +r0.2 1 +r0.3 3 +b0000000000000000000000000000000100000000000000000000000011111110 5 +b00000000000000000000000000000001 7 +b00000000000000000000000000000010 8 +b111 9 +b00000000000000000000000000000101 ; +b00000000000000000000000000000101 < +1= #15 -07" +0= #20 -b00000000000000000000000000000010 + -b0000000000000000000000000000001000000000000000000000000011111101 3 -b00 C -b0000 K -b00 S -b00 [ -b0000 c -b0000 k -b00 s -b00 t -b00 %! -b00 -! -r0.2 5! -r0.4 E! -r0.6 G! -b00000000000000000000000000000010 e! -b00000000000000000000000000000100 m! -b110 u! -b111111 }! -17" +b00000000000000000000000000000010 $ +b00 % +b0000 & +b00 ' +b00 ( +b0000 ) +b0000 * +b00 + +b00 , +b00 - +b00 . +r0.2 / +r0.4 1 +r0.6 3 +b0000000000000000000000000000001000000000000000000000000011111101 5 +b00000000000000000000000000000010 7 +b00000000000000000000000000000100 8 +b110 9 +b111111 : +1= #25 -07" +0= #30 -b00000000000000000000000000000011 + -b0000000000000000000000000000001100000000000000000000000011111100 3 -b11 C -b1111 K -b11 S -b11 [ -b1111 c -b1111 k -b11 s -b11 t -b11 %! -b11 -! -r0.3 5! -r0.6000000000000001 E! -r0.8999999999999999 G! -b00000000000000000000000000000011 e! -b00000000000000000000000000000110 m! -b101 u! -b110110 }! -17" +b00000000000000000000000000000011 $ +b11 % +b1111 & +b11 ' +b11 ( +b1111 ) +b1111 * +b11 + +b11 , +b11 - +b11 . +r0.3 / +r0.6000000000000001 1 +r0.8999999999999999 3 +b0000000000000000000000000000001100000000000000000000000011111100 5 +b00000000000000000000000000000011 7 +b00000000000000000000000000000110 8 +b101 9 +b110110 : +1= #35 -07" +0= #40 -b00000000000000000000000000000100 + -b0000000000000000000000000000010000000000000000000000000011111011 3 -b00 C -b0000 K -b00 S -b00 [ -b0000 c -b0000 k -b00 s -b00 t -b00 %! -b00 -! -r0.4 5! -r0.8 E! -r1.2 G! -b00000000000000000000000000000100 e! -b00000000000000000000000000001000 m! -b100 u! -b101101 }! -17" +b00000000000000000000000000000100 $ +b00 % +b0000 & +b00 ' +b00 ( +b0000 ) +b0000 * +b00 + +b00 , +b00 - +b00 . +r0.4 / +r0.8 1 +r1.2 3 +b0000000000000000000000000000010000000000000000000000000011111011 5 +b00000000000000000000000000000100 7 +b00000000000000000000000000001000 8 +b100 9 +b101101 : +1= #45 -07" +0= #50 -b00000000000000000000000000000101 + -b0000000000000000000000000000010100000000000000000000000011111010 3 -b11 C -b1111 K -b11 S -b11 [ -b1111 c -b1111 k -b11 s -b11 t -b11 %! -b11 -! -r0.5 5! -r1 E! -r1.5 G! -b00000000000000000000000000000101 e! -b00000000000000000000000000001010 m! -b011 u! -b100100 }! -17" +b00000000000000000000000000000101 $ +b11 % +b1111 & +b11 ' +b11 ( +b1111 ) +b1111 * +b11 + +b11 , +b11 - +b11 . +r0.5 / +r1 1 +r1.5 3 +b0000000000000000000000000000010100000000000000000000000011111010 5 +b00000000000000000000000000000101 7 +b00000000000000000000000000001010 8 +b011 9 +b100100 : +1= #55 -07" +0= #60 -b00000000000000000000000000000110 + -b0000000000000000000000000000011000000000000000000000000011111001 3 -b00 C -b0000 K -b00 S -b00 [ -b0000 c -b0000 k -b00 s -b00 t -b00 %! -b00 -! -r0.6 5! -r1.2 E! -r1.8 G! -b00000000000000000000000000000110 e! -b00000000000000000000000000001100 m! -b010 u! -b011011 }! -17" +b00000000000000000000000000000110 $ +b00 % +b0000 & +b00 ' +b00 ( +b0000 ) +b0000 * +b00 + +b00 , +b00 - +b00 . +r0.6 / +r1.2 1 +r1.8 3 +b0000000000000000000000000000011000000000000000000000000011111001 5 +b00000000000000000000000000000110 7 +b00000000000000000000000000001100 8 +b010 9 +b011011 : +1= diff --git a/test_regress/t/t_trace_complex_params_fst.out b/test_regress/t/t_trace_complex_params_fst.out index c94200384..e4f264a8e 100644 --- a/test_regress/t/t_trace_complex_params_fst.out +++ b/test_regress/t/t_trace_complex_params_fst.out @@ -1,5 +1,5 @@ $date - Sun Apr 19 04:15:31 2020 + Mon Nov 16 17:51:08 2020 $end $version @@ -45,193 +45,197 @@ $var logic 6 : v_enumb2_str $end $var logic 8 ; unpacked_array(-2) $end $var logic 8 < unpacked_array(-1) $end $var logic 8 = unpacked_array(0) $end +$var bit 1 > LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end $scope module unnamedblk1 $end -$var integer 32 > b $end +$var integer 32 ? b $end $scope module unnamedblk2 $end -$var integer 32 ? a $end +$var integer 32 @ a $end $upscope $end $upscope $end $scope module p2 $end -$var parameter 32 @ PARAM $end +$var parameter 32 A PARAM $end $upscope $end $scope module p3 $end -$var parameter 32 A PARAM $end +$var parameter 32 B PARAM $end $upscope $end $upscope $end $scope module $unit $end -$var bit 1 B global_bit $end +$var bit 1 C global_bit $end $upscope $end $upscope $end $enddefinitions $end +#0 $dumpvars -0! -b00000000000000000000000000000000 " -b00 # -b0000 $ -b00 % -b00 & -b0000 ' -b0000 ( -0) -0* -0+ -0, -0- -0. -b00 / -b00 0 -b00 1 -b00 2 -r0 3 -r0 4 -r0 5 -b0000000000000000000000000000000000000000000000000000000011111111 6 -b00000000000000000000000000000000 7 -b00000000000000000000000000000000 8 -b000 9 -b000000 : -b00000000 ; -b00000000 < -b00000000 = -b00000000000000000000000000000000 > +1C +b00000000000000000000000000000011 B +b00000000000000000000000000000010 A +b00000000000000000000000000000000 @ b00000000000000000000000000000000 ? -b00000000000000000000000000000010 @ -b00000000000000000000000000000011 A -1B +0> +b00000000 = +b00000000 < +b00000000 ; +b000000 : +b000 9 +b00000000000000000000000000000000 8 +b00000000000000000000000000000000 7 +b0000000000000000000000000000000000000000000000000000000011111111 6 +r0 5 +r0 4 +r0 3 +b00 2 +b00 1 +b00 0 +b00 / +0. +0- +0, +0+ +0* +0) +b0000 ( +b0000 ' +b00 & +b00 % +b0000 $ +b00 # +b00000000000000000000000000000000 " +0! +$end #10 -b00000000000000000000000000000101 ? -b00000000000000000000000000000101 > -b111 9 -b00000000000000000000000000000010 8 -b00000000000000000000000000000001 7 -b0000000000000000000000000000000100000000000000000000000011111110 6 -r0.3 5 -r0.2 4 -r0.1 3 -b11 2 -b11 1 -b11 0 -b11 / -b1111 ( -b1111 ' -b11 & -b11 % -b1111 $ -b11 # -b00000000000000000000000000000001 " 1! +b00000000000000000000000000000001 " +b11 # +b1111 $ +b11 % +b11 & +b1111 ' +b1111 ( +b11 / +b11 0 +b11 1 +b11 2 +r0.1 3 +r0.2 4 +r0.3 5 +b0000000000000000000000000000000100000000000000000000000011111110 6 +b00000000000000000000000000000001 7 +b00000000000000000000000000000010 8 +b111 9 +b00000000000000000000000000000101 ? +b00000000000000000000000000000101 @ #15 0! #20 1! -b00000000000000000000000000000010 " -b00 # -b0000 $ -b00 % -b00 & -b0000 ' -b0000 ( -b00 / -b00 0 -b00 1 -b00 2 -r0.2 3 -r0.4 4 -r0.6 5 -b0000000000000000000000000000001000000000000000000000000011111101 6 -b00000000000000000000000000000010 7 -b00000000000000000000000000000100 8 b110 9 +b00000000000000000000000000000100 8 +b00000000000000000000000000000010 7 +b0000000000000000000000000000001000000000000000000000000011111101 6 +r0.6 5 +r0.4 4 +r0.2 3 +b00 2 +b00 1 +b00 0 +b00 / +b0000 ( +b0000 ' +b00 & +b00 % +b0000 $ +b00 # +b00000000000000000000000000000010 " b111111 : #25 0! #30 1! b110110 : -b101 9 -b00000000000000000000000000000110 8 -b00000000000000000000000000000011 7 -b0000000000000000000000000000001100000000000000000000000011111100 6 -r0.8999999999999999 5 -r0.6000000000000001 4 -r0.3 3 -b11 2 -b11 1 -b11 0 -b11 / -b1111 ( -b1111 ' -b11 & -b11 % -b1111 $ -b11 # b00000000000000000000000000000011 " +b11 # +b1111 $ +b11 % +b11 & +b1111 ' +b1111 ( +b11 / +b11 0 +b11 1 +b11 2 +r0.3 3 +r0.6000000000000001 4 +r0.8999999999999999 5 +b0000000000000000000000000000001100000000000000000000000011111100 6 +b00000000000000000000000000000011 7 +b00000000000000000000000000000110 8 +b101 9 #35 0! #40 1! -b00000000000000000000000000000100 " -b00 # -b0000 $ -b00 % -b00 & -b0000 ' -b0000 ( -b00 / -b00 0 -b00 1 -b00 2 -r0.4 3 -r0.8 4 -r1.2 5 -b0000000000000000000000000000010000000000000000000000000011111011 6 -b00000000000000000000000000000100 7 -b00000000000000000000000000001000 8 b100 9 +b00000000000000000000000000001000 8 +b00000000000000000000000000000100 7 +b0000000000000000000000000000010000000000000000000000000011111011 6 +r1.2 5 +r0.8 4 +r0.4 3 +b00 2 +b00 1 +b00 0 +b00 / +b0000 ( +b0000 ' +b00 & +b00 % +b0000 $ +b00 # +b00000000000000000000000000000100 " b101101 : #45 0! #50 1! b100100 : -b011 9 -b00000000000000000000000000001010 8 -b00000000000000000000000000000101 7 -b0000000000000000000000000000010100000000000000000000000011111010 6 -r1.5 5 -r1 4 -r0.5 3 -b11 2 -b11 1 -b11 0 -b11 / -b1111 ( -b1111 ' -b11 & -b11 % -b1111 $ -b11 # b00000000000000000000000000000101 " +b11 # +b1111 $ +b11 % +b11 & +b1111 ' +b1111 ( +b11 / +b11 0 +b11 1 +b11 2 +r0.5 3 +r1 4 +r1.5 5 +b0000000000000000000000000000010100000000000000000000000011111010 6 +b00000000000000000000000000000101 7 +b00000000000000000000000000001010 8 +b011 9 #55 0! #60 1! -b00000000000000000000000000000110 " -b00 # -b0000 $ -b00 % -b00 & -b0000 ' -b0000 ( -b00 / -b00 0 -b00 1 -b00 2 -r0.6 3 -r1.2 4 -r1.8 5 -b0000000000000000000000000000011000000000000000000000000011111001 6 -b00000000000000000000000000000110 7 -b00000000000000000000000000001100 8 b010 9 +b00000000000000000000000000001100 8 +b00000000000000000000000000000110 7 +b0000000000000000000000000000011000000000000000000000000011111001 6 +r1.8 5 +r1.2 4 +r0.6 3 +b00 2 +b00 1 +b00 0 +b00 / +b0000 ( +b0000 ' +b00 & +b00 % +b0000 $ +b00 # +b00000000000000000000000000000110 " b011011 : diff --git a/test_regress/t/t_trace_complex_structs.out b/test_regress/t/t_trace_complex_structs.out index f22f6d3be..dad2d3736 100644 --- a/test_regress/t/t_trace_complex_structs.out +++ b/test_regress/t/t_trace_complex_structs.out @@ -1,90 +1,91 @@ $version Generated by VerilatedVcd $end -$date Tue Jan 21 18:55:13 2020 +$date Mon Nov 16 17:51:09 2020 $end $timescale 1ps $end $scope module top $end - $var wire 1 9# clk $end + $var wire 1 I clk $end $scope module $unit $end $var wire 1 # global_bit $end $upscope $end $scope module t $end - $var wire 1 9# clk $end - $var wire 32 + cyc [31:0] $end - $var wire 8 r# unpacked_array(-1) [7:0] $end - $var wire 8 q# unpacked_array(-2) [7:0] $end - $var wire 8 s# unpacked_array(0) [7:0] $end - $var real 64 ?" v_arr_real(0) $end - $var real 64 A" v_arr_real(1) $end - $var wire 2 %! v_arrp [2:1] $end - $var wire 2 -! v_arrp_arrp(3) [2:1] $end - $var wire 2 5! v_arrp_arrp(4) [2:1] $end - $var wire 1 A# v_arru(1) $end - $var wire 1 B# v_arru(2) $end - $var wire 2 ]! v_arru_arrp(3) [2:1] $end - $var wire 2 ^! v_arru_arrp(4) [2:1] $end - $var wire 1 Q# v_arru_arru(3)(1) $end - $var wire 1 Y# v_arru_arru(3)(2) $end - $var wire 1 a# v_arru_arru(4)(1) $end - $var wire 1 i# v_arru_arru(4)(2) $end - $var wire 3 o" v_enumb [2:0] $end - $var wire 32 _" v_enumed [31:0] $end - $var wire 32 g" v_enumed2 [31:0] $end - $var real 64 /" v_real $end + $var wire 1 S LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end + $var wire 1 I clk $end + $var wire 32 $ cyc [31:0] $end + $var wire 8 Q unpacked_array(-1) [7:0] $end + $var wire 8 P unpacked_array(-2) [7:0] $end + $var wire 8 R unpacked_array(0) [7:0] $end + $var real 64 < v_arr_real(0) $end + $var real 64 > v_arr_real(1) $end + $var wire 2 - v_arrp [2:1] $end + $var wire 2 . v_arrp_arrp(3) [2:1] $end + $var wire 2 / v_arrp_arrp(4) [2:1] $end + $var wire 1 J v_arru(1) $end + $var wire 1 K v_arru(2) $end + $var wire 2 4 v_arru_arrp(3) [2:1] $end + $var wire 2 5 v_arru_arrp(4) [2:1] $end + $var wire 1 L v_arru_arru(3)(1) $end + $var wire 1 M v_arru_arru(3)(2) $end + $var wire 1 N v_arru_arru(4)(1) $end + $var wire 1 O v_arru_arru(4)(2) $end + $var wire 3 D v_enumb [2:0] $end + $var wire 32 B v_enumed [31:0] $end + $var wire 32 C v_enumed2 [31:0] $end + $var real 64 : v_real $end $scope module unnamedblk1 $end - $var wire 32 )# b [31:0] $end + $var wire 32 G b [31:0] $end $scope module unnamedblk2 $end - $var wire 32 1# a [31:0] $end + $var wire 32 H a [31:0] $end $upscope $end $upscope $end $scope module v_arrp_strp(3) $end - $var wire 1 E! b0 $end - $var wire 1 =! b1 $end + $var wire 1 1 b0 $end + $var wire 1 0 b1 $end $upscope $end $scope module v_arrp_strp(4) $end - $var wire 1 U! b0 $end - $var wire 1 M! b1 $end + $var wire 1 3 b0 $end + $var wire 1 2 b1 $end $upscope $end $scope module v_arru_strp(3) $end - $var wire 1 u! b0 $end - $var wire 1 m! b1 $end + $var wire 1 7 b0 $end + $var wire 1 6 b1 $end $upscope $end $scope module v_arru_strp(4) $end - $var wire 1 '" b0 $end - $var wire 1 }! b1 $end + $var wire 1 9 b0 $end + $var wire 1 8 b1 $end $upscope $end $scope module v_enumb2_str $end - $var wire 3 w" a [2:0] $end - $var wire 3 !# b [2:0] $end + $var wire 3 E a [2:0] $end + $var wire 3 F b [2:0] $end $upscope $end $scope module v_str32x2(0) $end - $var wire 32 3 data [31:0] $end + $var wire 32 @ data [31:0] $end $upscope $end $scope module v_str32x2(1) $end - $var wire 32 ; data [31:0] $end + $var wire 32 A data [31:0] $end $upscope $end $scope module v_strp $end - $var wire 1 K b0 $end - $var wire 1 C b1 $end + $var wire 1 & b0 $end + $var wire 1 % b1 $end $upscope $end $scope module v_strp_strp $end $scope module x0 $end - $var wire 1 k b0 $end - $var wire 1 c b1 $end + $var wire 1 * b0 $end + $var wire 1 ) b1 $end $upscope $end $scope module x1 $end - $var wire 1 [ b0 $end - $var wire 1 S b1 $end + $var wire 1 ( b0 $end + $var wire 1 ' b1 $end $upscope $end $upscope $end $scope module v_unip_strp $end $scope module x0 $end - $var wire 1 { b0 $end - $var wire 1 s b1 $end + $var wire 1 , b0 $end + $var wire 1 + b1 $end $upscope $end $scope module x1 $end - $var wire 1 { b0 $end - $var wire 1 s b1 $end + $var wire 1 , b0 $end + $var wire 1 + b1 $end $upscope $end $upscope $end $upscope $end @@ -94,261 +95,262 @@ $enddefinitions $end #0 1# -b00000000000000000000000000000000 + -b00000000000000000000000011111111 3 -b00000000000000000000000000000000 ; -0C +b00000000000000000000000000000000 $ +0% +0& +0' +0( +0) +0* +0+ +0, +b00 - +b00 . +b00 / +00 +01 +02 +03 +b00 4 +b00 5 +06 +07 +08 +09 +r0 : +r0 < +r0 > +b00000000000000000000000011111111 @ +b00000000000000000000000000000000 A +b00000000000000000000000000000000 B +b00000000000000000000000000000000 C +b000 D +b000 E +b000 F +b00000000000000000000000000000000 G +b00000000000000000000000000000000 H +0I +0J 0K +0L +0M +0N +0O +b00000000 P +b00000000 Q +b00000000 R 0S -0[ -0c -0k -0s -0{ -b00 %! -b00 -! -b00 5! -0=! -0E! -0M! -0U! -b00 ]! -b00 ^! -0m! -0u! -0}! -0'" -r0 /" -r0 ?" -r0 A" -b00000000000000000000000000000000 _" -b00000000000000000000000000000000 g" -b000 o" -b000 w" -b000 !# -b00000000000000000000000000000000 )# -b00000000000000000000000000000000 1# -09# -0A# -0B# -0Q# -0Y# -0a# -0i# -b00000000 q# -b00000000 r# -b00000000 s# #10 -b00000000000000000000000000000001 + -b00000000000000000000000011111110 3 -b00000000000000000000000000000001 ; -1C -1K -1S -1[ -1c -1k -1s -1{ -b11 %! -b11 -! -b11 5! -1=! -1E! -1M! -1U! -b11 ]! -b11 ^! -1m! -1u! -1}! -1'" -r0.1 /" -r0.2 ?" -r0.3 A" -b00000000000000000000000000000001 _" -b00000000000000000000000000000010 g" -b111 o" -b00000000000000000000000000000101 )# -b00000000000000000000000000000101 1# -19# +b00000000000000000000000000000001 $ +1% +1& +1' +1( +1) +1* +1+ +1, +b11 - +b11 . +b11 / +10 +11 +12 +13 +b11 4 +b11 5 +16 +17 +18 +19 +r0.1 : +r0.2 < +r0.3 > +b00000000000000000000000011111110 @ +b00000000000000000000000000000001 A +b00000000000000000000000000000001 B +b00000000000000000000000000000010 C +b111 D +b00000000000000000000000000000101 G +b00000000000000000000000000000101 H +1I #15 -09# +0I #20 -b00000000000000000000000000000010 + -b00000000000000000000000011111101 3 -b00000000000000000000000000000010 ; -0C -0K -0S -0[ -0c -0k -0s -0{ -b00 %! -b00 -! -b00 5! -0=! -0E! -0M! -0U! -b00 ]! -b00 ^! -0m! -0u! -0}! -0'" -r0.2 /" -r0.4 ?" -r0.6 A" -b00000000000000000000000000000010 _" -b00000000000000000000000000000100 g" -b110 o" -b111 w" -b111 !# -19# +b00000000000000000000000000000010 $ +0% +0& +0' +0( +0) +0* +0+ +0, +b00 - +b00 . +b00 / +00 +01 +02 +03 +b00 4 +b00 5 +06 +07 +08 +09 +r0.2 : +r0.4 < +r0.6 > +b00000000000000000000000011111101 @ +b00000000000000000000000000000010 A +b00000000000000000000000000000010 B +b00000000000000000000000000000100 C +b110 D +b111 E +b111 F +1I #25 -09# +0I #30 -b00000000000000000000000000000011 + -b00000000000000000000000011111100 3 -b00000000000000000000000000000011 ; -1C -1K -1S -1[ -1c -1k -1s -1{ -b11 %! -b11 -! -b11 5! -1=! -1E! -1M! -1U! -b11 ]! -b11 ^! -1m! -1u! -1}! -1'" -r0.3 /" -r0.6000000000000001 ?" -r0.8999999999999999 A" -b00000000000000000000000000000011 _" -b00000000000000000000000000000110 g" -b101 o" -b110 w" -b110 !# -19# +b00000000000000000000000000000011 $ +1% +1& +1' +1( +1) +1* +1+ +1, +b11 - +b11 . +b11 / +10 +11 +12 +13 +b11 4 +b11 5 +16 +17 +18 +19 +r0.3 : +r0.6000000000000001 < +r0.8999999999999999 > +b00000000000000000000000011111100 @ +b00000000000000000000000000000011 A +b00000000000000000000000000000011 B +b00000000000000000000000000000110 C +b101 D +b110 E +b110 F +1I #35 -09# +0I #40 -b00000000000000000000000000000100 + -b00000000000000000000000011111011 3 -b00000000000000000000000000000100 ; -0C -0K -0S -0[ -0c -0k -0s -0{ -b00 %! -b00 -! -b00 5! -0=! -0E! -0M! -0U! -b00 ]! -b00 ^! -0m! -0u! -0}! -0'" -r0.4 /" -r0.8 ?" -r1.2 A" -b00000000000000000000000000000100 _" -b00000000000000000000000000001000 g" -b100 o" -b101 w" -b101 !# -19# +b00000000000000000000000000000100 $ +0% +0& +0' +0( +0) +0* +0+ +0, +b00 - +b00 . +b00 / +00 +01 +02 +03 +b00 4 +b00 5 +06 +07 +08 +09 +r0.4 : +r0.8 < +r1.2 > +b00000000000000000000000011111011 @ +b00000000000000000000000000000100 A +b00000000000000000000000000000100 B +b00000000000000000000000000001000 C +b100 D +b101 E +b101 F +1I #45 -09# +0I #50 -b00000000000000000000000000000101 + -b00000000000000000000000011111010 3 -b00000000000000000000000000000101 ; -1C -1K -1S -1[ -1c -1k -1s -1{ -b11 %! -b11 -! -b11 5! -1=! -1E! -1M! -1U! -b11 ]! -b11 ^! -1m! -1u! -1}! -1'" -r0.5 /" -r1 ?" -r1.5 A" -b00000000000000000000000000000101 _" -b00000000000000000000000000001010 g" -b011 o" -b100 w" -b100 !# -19# +b00000000000000000000000000000101 $ +1% +1& +1' +1( +1) +1* +1+ +1, +b11 - +b11 . +b11 / +10 +11 +12 +13 +b11 4 +b11 5 +16 +17 +18 +19 +r0.5 : +r1 < +r1.5 > +b00000000000000000000000011111010 @ +b00000000000000000000000000000101 A +b00000000000000000000000000000101 B +b00000000000000000000000000001010 C +b011 D +b100 E +b100 F +1I #55 -09# +0I #60 -b00000000000000000000000000000110 + -b00000000000000000000000011111001 3 -b00000000000000000000000000000110 ; -0C -0K -0S -0[ -0c -0k -0s -0{ -b00 %! -b00 -! -b00 5! -0=! -0E! -0M! -0U! -b00 ]! -b00 ^! -0m! -0u! -0}! -0'" -r0.6 /" -r1.2 ?" -r1.8 A" -b00000000000000000000000000000110 _" -b00000000000000000000000000001100 g" -b010 o" -b011 w" -b011 !# -19# +b00000000000000000000000000000110 $ +0% +0& +0' +0( +0) +0* +0+ +0, +b00 - +b00 . +b00 / +00 +01 +02 +03 +b00 4 +b00 5 +06 +07 +08 +09 +r0.6 : +r1.2 < +r1.8 > +b00000000000000000000000011111001 @ +b00000000000000000000000000000110 A +b00000000000000000000000000000110 B +b00000000000000000000000000001100 C +b010 D +b011 E +b011 F +1I diff --git a/test_regress/t/t_trace_complex_structs_fst.out b/test_regress/t/t_trace_complex_structs_fst.out index 1cde8a16c..3e0bcd6f8 100644 --- a/test_regress/t/t_trace_complex_structs_fst.out +++ b/test_regress/t/t_trace_complex_structs_fst.out @@ -1,5 +1,5 @@ $date - Sun Apr 19 04:15:33 2020 + Mon Nov 16 17:51:13 2020 $end $version @@ -90,275 +90,279 @@ $upscope $end $var logic 8 H unpacked_array(-2) $end $var logic 8 I unpacked_array(-1) $end $var logic 8 J unpacked_array(0) $end +$var bit 1 K LONGSTART_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_a_very_long_name_which_will_get_hashed_LONGEND $end $scope module unnamedblk1 $end -$var integer 32 K b $end +$var integer 32 L b $end $scope module unnamedblk2 $end -$var integer 32 L a $end +$var integer 32 M a $end $upscope $end $upscope $end $upscope $end $scope module $unit $end -$var bit 1 M global_bit $end +$var bit 1 N global_bit $end $upscope $end $upscope $end $enddefinitions $end +#0 $dumpvars -0! -b00000000000000000000000000000000 " -0# -0$ -0% -0& -0' -0( -0) -0* -b00 + -b00 , -b00 - -0. -0/ -00 -01 -02 -03 -04 -05 -06 -07 -b00 8 -b00 9 -0: -0; -0< -0= -r0 > -r0 ? -r0 @ -b00000000000000000000000011111111 A -b00000000000000000000000000000000 B -b00000000000000000000000000000000 C -b00000000000000000000000000000000 D -b000 E -b000 F -b000 G -b00000000 H -b00000000 I -b00000000 J -b00000000000000000000000000000000 K +1N +b00000000000000000000000000000000 M b00000000000000000000000000000000 L -1M +0K +b00000000 J +b00000000 I +b00000000 H +b000 G +b000 F +b000 E +b00000000000000000000000000000000 D +b00000000000000000000000000000000 C +b00000000000000000000000000000000 B +b00000000000000000000000011111111 A +r0 @ +r0 ? +r0 > +0= +0< +0; +0: +b00 9 +b00 8 +07 +06 +05 +04 +03 +02 +01 +00 +0/ +0. +b00 - +b00 , +b00 + +0* +0) +0( +0' +0& +0% +0$ +0# +b00000000000000000000000000000000 " +0! +$end #10 -b00000000000000000000000000000101 L -b00000000000000000000000000000101 K -b111 E -b00000000000000000000000000000010 D -b00000000000000000000000000000001 C -b00000000000000000000000000000001 B -b00000000000000000000000011111110 A -r0.3 @ -r0.2 ? -r0.1 > -1= -1< -1; -1: -b11 9 -b11 8 -11 -10 -1/ -1. -b11 - -b11 , -b11 + -1* -1) -1( -1' -1& -1% -1$ -1# -b00000000000000000000000000000001 " 1! +b00000000000000000000000000000001 " +1# +1$ +1% +1& +1' +1( +1) +1* +b11 + +b11 , +b11 - +1. +1/ +10 +11 +b11 8 +b11 9 +1: +1; +1< +1= +r0.1 > +r0.2 ? +r0.3 @ +b00000000000000000000000011111110 A +b00000000000000000000000000000001 B +b00000000000000000000000000000001 C +b00000000000000000000000000000010 D +b111 E +b00000000000000000000000000000101 L +b00000000000000000000000000000101 M #15 0! #20 1! -b00000000000000000000000000000010 " -0# -0$ -0% -0& -0' -0( -0) -0* -b00 + -b00 , -b00 - -0. -0/ -00 -01 -b00 8 -b00 9 -0: -0; -0< -0= -r0.2 > -r0.4 ? -r0.6 @ -b00000000000000000000000011111101 A -b00000000000000000000000000000010 B -b00000000000000000000000000000010 C -b00000000000000000000000000000100 D b110 E -b111 G +b00000000000000000000000000000100 D +b00000000000000000000000000000010 C +b00000000000000000000000000000010 B +b00000000000000000000000011111101 A +r0.6 @ +r0.4 ? +r0.2 > +0= +0< +0; +0: +b00 9 +b00 8 +01 +00 +0/ +0. +b00 - +b00 , +b00 + +0* +0) +0( +0' +0& +0% +0$ +0# +b00000000000000000000000000000010 " b111 F +b111 G #25 0! #30 1! -b110 F b110 G -b101 E -b00000000000000000000000000000110 D -b00000000000000000000000000000011 C -b00000000000000000000000000000011 B -b00000000000000000000000011111100 A -r0.8999999999999999 @ -r0.6000000000000001 ? -r0.3 > -1= -1< -1; -1: -b11 9 -b11 8 -11 -10 -1/ -1. -b11 - -b11 , -b11 + -1* -1) -1( -1' -1& -1% -1$ -1# +b110 F b00000000000000000000000000000011 " +1# +1$ +1% +1& +1' +1( +1) +1* +b11 + +b11 , +b11 - +1. +1/ +10 +11 +b11 8 +b11 9 +1: +1; +1< +1= +r0.3 > +r0.6000000000000001 ? +r0.8999999999999999 @ +b00000000000000000000000011111100 A +b00000000000000000000000000000011 B +b00000000000000000000000000000011 C +b00000000000000000000000000000110 D +b101 E #35 0! #40 1! -b00000000000000000000000000000100 " -0# -0$ -0% -0& -0' -0( -0) -0* -b00 + -b00 , -b00 - -0. -0/ -00 -01 -b00 8 -b00 9 -0: -0; -0< -0= -r0.4 > -r0.8 ? -r1.2 @ -b00000000000000000000000011111011 A -b00000000000000000000000000000100 B -b00000000000000000000000000000100 C -b00000000000000000000000000001000 D b100 E -b101 G +b00000000000000000000000000001000 D +b00000000000000000000000000000100 C +b00000000000000000000000000000100 B +b00000000000000000000000011111011 A +r1.2 @ +r0.8 ? +r0.4 > +0= +0< +0; +0: +b00 9 +b00 8 +01 +00 +0/ +0. +b00 - +b00 , +b00 + +0* +0) +0( +0' +0& +0% +0$ +0# +b00000000000000000000000000000100 " b101 F +b101 G #45 0! #50 1! -b100 F b100 G -b011 E -b00000000000000000000000000001010 D -b00000000000000000000000000000101 C -b00000000000000000000000000000101 B -b00000000000000000000000011111010 A -r1.5 @ -r1 ? -r0.5 > -1= -1< -1; -1: -b11 9 -b11 8 -11 -10 -1/ -1. -b11 - -b11 , -b11 + -1* -1) -1( -1' -1& -1% -1$ -1# +b100 F b00000000000000000000000000000101 " +1# +1$ +1% +1& +1' +1( +1) +1* +b11 + +b11 , +b11 - +1. +1/ +10 +11 +b11 8 +b11 9 +1: +1; +1< +1= +r0.5 > +r1 ? +r1.5 @ +b00000000000000000000000011111010 A +b00000000000000000000000000000101 B +b00000000000000000000000000000101 C +b00000000000000000000000000001010 D +b011 E #55 0! #60 1! -b00000000000000000000000000000110 " -0# -0$ -0% -0& -0' -0( -0) -0* -b00 + -b00 , -b00 - -0. -0/ -00 -01 -b00 8 -b00 9 -0: -0; -0< -0= -r0.6 > -r1.2 ? -r1.8 @ -b00000000000000000000000011111001 A -b00000000000000000000000000000110 B -b00000000000000000000000000000110 C -b00000000000000000000000000001100 D b010 E -b011 G +b00000000000000000000000000001100 D +b00000000000000000000000000000110 C +b00000000000000000000000000000110 B +b00000000000000000000000011111001 A +r1.8 @ +r1.2 ? +r0.6 > +0= +0< +0; +0: +b00 9 +b00 8 +01 +00 +0/ +0. +b00 - +b00 , +b00 + +0* +0) +0( +0' +0& +0% +0$ +0# +b00000000000000000000000000000110 " b011 F +b011 G