diff --git a/test_regress/t/t_debug_emitv.out b/test_regress/t/t_debug_emitv.out index c7b2e8201..d28ed41fd 100644 --- a/test_regress/t/t_debug_emitv.out +++ b/test_regress/t/t_debug_emitv.out @@ -1,246 +1,368 @@ -module Vt_debug_emitv___024root; +module Vt_debug_emitv_t; input logic clk; input logic in; - signed int [31:0] t.array[0:2]; - logic [15:0] t.pubflat; - logic [15:0] t.pubflat_r; - signed int [31:0] t.fd; - signed int [31:0] t.i; - signed int [31:0] t.cyc; - signed int [31:0] t.fo; - signed int [31:0] t.sum; - signed real t.r; - string t.str; - signed int [31:0] t._Vpast_0_0; - signed int [31:0] t._Vpast_1_0; - signed int [31:0] t.unnamedblk3.i; - @(*)@([settle])@([initial])@(posedge clk)@(negedge - clk)always @( - *)@( - [settle])@( - [initial])@( - posedge - clk)@( - negedge - clk) begin - $display("stmt"); - end - always @([settle])@([initial])@(posedge clk)@(negedge - clk) begin - $display("stmt"); - end - initial begin - // Function: f - $write("stmt\nstmt 0 99\n"); - // Function: t - $display("stmt"); - // Function: f - $write("stmt\nstmt 1 -1\n"); - // Function: t - $display("stmt"); - // Function: f - $display("stmt"); - $display("stmt 2 -2"); - // Function: t - $display("stmt"); - $display("stmt"); - end + typedef + ???? // ENUMDTYPE 't.e_t' - ???? // CFUNC '_final_TOP' - $display("stmt"); - always @(posedge clk)@(negedge clk) begin - $display("posedge clk"); + ???? // ENUMITEM 'ZERO' + 32'h0 + ???? // ENUMITEM 'ONE' + 'sh1 + ???? // REFDTYPE 'e_t' + struct packed + { + ???? // REFDTYPE 'e_t' + a}signed logic [2:0] struct + {signed logic [2:0] a}logicunion + {logic a} + ???? // REFDTYPE 'ps_t' + bit [31:0] const + ???? // REFDTYPE 'ps_t' + const + ???? // REFDTYPE 'ps_t' + [0:2] + ???? // REFDTYPE 'us_t' + + ???? // REFDTYPE 'union_t' + signed int [31:0] signed int [31:0] [0:2]logic [15:0] logic [15:0] logic [15:0] signed int [31:0] signed int [31:0] signed int [31:0] + ???? // QUEUEDTYPE + signed int [31:0] string + ???? // ASSOCARRAYDTYPE + signed int [31:0] + ???? // UNSIZEDARRAYDTYPE + + ???? // DYNARRAYDTYPE + signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed realstringIData [31:0] signed logic [31:0] signed int [31:0] logic [2:0] logic [0:0] e_t; + typedef struct packed + { + ???? // REFDTYPE 'e_t' + a}signed logic [2:0] struct + {signed logic [2:0] a}logicunion + {logic a} + ???? // REFDTYPE 'ps_t' + bit [31:0] const + ???? // REFDTYPE 'ps_t' + const + ???? // REFDTYPE 'ps_t' + [0:2] + ???? // REFDTYPE 'us_t' + + ???? // REFDTYPE 'union_t' + signed int [31:0] signed int [31:0] [0:2]logic [15:0] logic [15:0] logic [15:0] signed int [31:0] signed int [31:0] signed int [31:0] + ???? // QUEUEDTYPE + signed int [31:0] string + ???? // ASSOCARRAYDTYPE + signed int [31:0] + ???? // UNSIZEDARRAYDTYPE + + ???? // DYNARRAYDTYPE + signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed realstringIData [31:0] signed logic [31:0] signed int [31:0] logic [2:0] logic [0:0] ps_t; + typedef struct + {signed logic [2:0] a}logicunion + {logic a} + ???? // REFDTYPE 'ps_t' + bit [31:0] const + ???? // REFDTYPE 'ps_t' + const + ???? // REFDTYPE 'ps_t' + [0:2] + ???? // REFDTYPE 'us_t' + + ???? // REFDTYPE 'union_t' + signed int [31:0] signed int [31:0] [0:2]logic [15:0] logic [15:0] logic [15:0] signed int [31:0] signed int [31:0] signed int [31:0] + ???? // QUEUEDTYPE + signed int [31:0] string + ???? // ASSOCARRAYDTYPE + signed int [31:0] + ???? // UNSIZEDARRAYDTYPE + + ???? // DYNARRAYDTYPE + signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed realstringIData [31:0] signed logic [31:0] signed int [31:0] logic [2:0] logic [0:0] us_t; + typedef union + {logic a} + ???? // REFDTYPE 'ps_t' + bit [31:0] const + ???? // REFDTYPE 'ps_t' + const + ???? // REFDTYPE 'ps_t' + [0:2] + ???? // REFDTYPE 'us_t' + + ???? // REFDTYPE 'union_t' + signed int [31:0] signed int [31:0] [0:2]logic [15:0] logic [15:0] logic [15:0] signed int [31:0] signed int [31:0] signed int [31:0] + ???? // QUEUEDTYPE + signed int [31:0] string + ???? // ASSOCARRAYDTYPE + signed int [31:0] + ???? // UNSIZEDARRAYDTYPE + + ???? // DYNARRAYDTYPE + signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed int [31:0] signed realstringIData [31:0] signed logic [31:0] signed int [31:0] logic [2:0] logic [0:0] union_t; + struct packed + { + ???? // REFDTYPE 'e_t' + a} ps[0:2]; + struct + {signed logic [2:0] a} us; + union + {logic a} unu; + signed int [31:0] array[0:2]; + initial begin + array = '{0:32'sh1, 1:32'sh2, 2:32'sh3}; end - always @(posedge clk)@(negedge clk) begin - __Vdly__t.pubflat_r <= t.pubflat; + logic [15:0] pubflat; + logic [15:0] pubflat_r; + logic [15:0] pubflat_w; + assign pubflat_w = pubflat; + signed int [31:0] fd; + signed int [31:0] i; + + ???? // QUEUEDTYPE + q; + + ???? // ASSOCARRAYDTYPE + assoc; + + ???? // DYNARRAYDTYPE + dyn; + task t; + $display("stmt"); + endtask + function f; + input signed int [31:0] v; + begin : label0 + $display("stmt"); + f = ((v == 'sh0) ? 'sh63 : ((~ v) + 'sh1)); + disable label0; + end + endfunction + initial begin + begin : unnamedblk1 + signed int [31:0] other; + begin + begin : unnamedblk2 + signed int [31:0] i; + i = 'sh0; + while ((i < 'sh3)) begin + begin + other = f(i); + $display("stmt %~ %~", + iother, other); + t()end + i = (i + 'h1); + end + end + end + begin : named + $display("stmt"); + end + end end - always @(posedge clk)@(negedge clk) begin - __Vdly__t.cyc <= (32'sh1 + t.cyc); - __Vdly__t.r <= (0.01 + t.r); - t.fo = t.cyc; - // Function: inc - __Vtask_t.sub.inc__2__i = t.fo; - __Vtask_t.sub.inc__2__o = (32'h1 + __Vtask_t.sub.inc__2__i[31:1]); - t.sum = __Vtask_t.sub.inc__2__o; - // Function: f - __Vfunc_t.sub.f__3__v = t.sum; + final begin + begin + $display("stmt"); + end + end + always @([any] in) begin + begin + $display("stmt"); + end + end + always @(posedge clk) begin + begin + $display("posedge clk"); + pubflat_r <= pubflat_w; + end + end + always @(negedge clk) begin + begin + $display("negedge clk, pfr = %x", pubflat_r); + end + end + signed int [31:0] cyc; + signed int [31:0] fo; + signed int [31:0] sum; + signed real r; + string str; + always @(posedge clk) begin + begin + cyc <= (cyc + 'sh1); + r <= (r + 0.01); + fo = cyc; + sub.inc(fosum)sum = sub.f(sum); + $display("[%0t] sum = %~", $timesum, sum); + $display("a?= %d", ($c('sh1) ? $c('sh14) + : $c('sh1e))); + $c(;); + $display("%d", $c(0)); + $fopen(72'h2f6465762f6e756c6c); + $fclose(fd); + $fopen(72'h2f6465762f6e756c6c, 8'h72); + $fgetc(fd); + $fflush(fd); + $fscanf(fd, "%d", sum); + ; + $fdisplay(32'h69203d20, "%~", sum); + $fwrite(fd, "hello"); + $readmemh(fd, array); + $readmemh(fd, array, 'sh0); + $readmemh(fd, array, 'sh0, 'sh0); + sum = 'sh0; + begin : unnamedblk3 + signed int [31:0] i; + i = 'sh0; + begin : label0 + while ((i < cyc)) begin + begin + sum = (sum + i); + if ((sum > 'sha)) begin + disable label0; + end + else begin + sum = (sum + 'sh1); + end + end + i = (i + 'h1); + end + end + end + if ((cyc == 'sh63)) begin + $finish; + end + if ((cyc == 'sh64)) begin + $stop; + end + case (in) + 'sh1: begin $display("1"); + end + default: begin $display("default"); + end + endcase + priority case (in) + 'sh1: begin $display("1"); + end + default: begin $display("default"); + end + endcase + unique case (in) + 'sh1: begin $display("1"); + end + default: begin $display("default"); + end + endcase + unique0 case (in) + 'sh1: begin $display("1"); + end + default: begin $display("default"); + end + endcase + if (in) begin + $display("1"); + end + else begin + $display("0"); + end + priority if (in) begin + $display("1"); + end + else begin + $display("0"); + end + unique if (in) begin + $display("1"); + end + else begin + $display("0"); + end + unique0 if (in) begin + $display("1"); + end + else begin + $display("0"); + end + $display("%~%~", $past(cyc)$past(cyc, 'sh1), + $past(cyc, 'sh1)); + str = $sformatf("cyc=%~", cyc); + ; + $display("str = %@", str); + $display("%% [%t] [%^] to=%o td=%d", $time + $realtime$time$time, $realtime + $time$time, $time$time, $time); + $sscanf(40'h666f6f3d35, "foo=%d", i); + ; + $printtimescale; + if ((i != 'sh5)) begin + $stop; + end + sum = + ???? // RAND + ; + sum = + ???? // RAND + 'sha; + sum = + ???? // RAND + ; + sum = + ???? // RAND + 'sha; + if ((PKG_PARAM != 'sh1)) begin + $stop; + end + sub.r = 62; + $display("%g", $log10(r)); + $display("%g", $ln(r)); + $display("%g", $exp(r)); + $display("%g", $sqrt(r)); + $display("%g", $floor(r)); + $display("%g", $ceil(r)); + $display("%g", $sin(r)); + $display("%g", $cos(r)); + $display("%g", $tan(r)); + $display("%g", $asin(r)); + $display("%g", $acos(r)); + $display("%g", $atan(r)); + $display("%g", $sinh(r)); + $display("%g", $cosh(r)); + $display("%g", $tanh(r)); + $display("%g", $asinh(r)); + $display("%g", $acosh(r)); + $display("%g", $atanh(r)); + end + end + /*verilator public_flat_rw @(posedge clk) pubflat*/ +endmodule +package Vt_debug_emitv___024unit; + class Vt_debug_emitv_Cls; + signed int [31:0] member; + member = 'sh1; + task method; + endtask + task new; + endtask + endclass +endpackage +module Vt_debug_emitv_sub; + task inc; + input signed int [31:0] i; + output signed int [31:0] o; + o = ({32'h1{{1'h0, i[31:1]}}} + 32'h1); + endtask + function f; + input signed int [31:0] v; begin : label0 begin : label0 - if ((32'sh0 == __Vfunc_t.sub.f__3__v)) begin - __Vfunc_t.sub.f__3__Vfuncout = 32'sh21; + if ((v == 'sh0)) begin + f = 'sh21; disable label0; end - __Vfunc_t.sub.f__3__Vfuncout = (32'h1 - + __Vfunc_t.sub.f__3__v[2]); + f = ({32'h1{{31'h0, v[2]}}} + 32'h1); disable label0; end end - t.sum = __Vfunc_t.sub.f__3__Vfuncout; - $display("[%0t] sum = %~", $timet.sum, t.sum); - $display("a?= %d", ($c(32'sh1) ? $c(32'sh14) - : $c(32'sh1e))); - $c(;); - $display("%d", $c(0)); - $fopen(72'h2f6465762f6e756c6c); - $fclose(t.fd); - $fopen(72'h2f6465762f6e756c6c, 8'h72); - $fgetc(t.fd); - $fflush(t.fd); - $fscanf(t.fd, "%d", t.sum); - ; - $fdisplay(32'h69203d20, "%~", t.sum); - $fwrite(t.fd, "hello"); - $readmemh(t.fd, t.array); - $readmemh(t.fd, t.array, 32'sh0); - $readmemh(t.fd, t.array, 32'sh0, 32'sh0); - t.sum = 32'sh0; - t.unnamedblk3.i = 32'sh0; - begin : label0 - while ((t.unnamedblk3.i < t.cyc)) begin - t.sum = (t.sum + t.unnamedblk3.i); - if ((32'sha < t.sum)) begin - disable label0; - end - else begin - t.sum = (32'sh1 + t.sum); - end - t.unnamedblk3.i = (32'h1 + t.unnamedblk3.i); - end - end - if ((32'sh63 == t.cyc)) begin - $finish; - end - if ((32'sh64 == t.cyc)) begin - $stop; - end - if (in) begin - $display("1"); - end - else begin - $display("default"); - end - if (in) begin - $display("1"); - end - else begin - $display("default"); - end - if (in) begin - $display("1"); - end - else begin - $display("default"); - end - if (in) begin - $display("1"); - end - else begin - $display("default"); - end - if (in) begin - $display("1"); - end - else begin - $display("0"); - end - priority if (in) begin - $display("1"); - end - else begin - $display("0"); - end - unique if (in) begin - $display("1"); - end - else begin - $display("0"); - end - unique0 if (in) begin - $display("1"); - end - else begin - $display("0"); - end - $display("%~%~", t._Vpast_0_0t._Vpast_1_0, - t._Vpast_1_0); - t.str = $sformatf("cyc=%~", t.cyc); - ; - $display("str = %@", t.str); - $display("%% [%t] [%^] to=%o td=%d", $time$realtime - $time$time, $realtime$time$time, $time - $time, $time); - $sscanf(40'h666f6f3d35, "foo=%d", t.i); - ; - $printtimescale; - if ((32'sh5 != t.i)) begin - $stop; - end - t.sum = - ???? // RAND - 32'sha; - $display("%g", $log10(t.r)); - $display("%g", $ln(t.r)); - $display("%g", $exp(t.r)); - $display("%g", $sqrt(t.r)); - $display("%g", $floor(t.r)); - $display("%g", $ceil(t.r)); - $display("%g", $sin(t.r)); - $display("%g", $cos(t.r)); - $display("%g", $tan(t.r)); - $display("%g", $asin(t.r)); - $display("%g", $acos(t.r)); - $display("%g", $atan(t.r)); - $display("%g", $sinh(t.r)); - $display("%g", $cosh(t.r)); - $display("%g", $tanh(t.r)); - $display("%g", $asinh(t.r)); - $display("%g", $acosh(t.r)); - $display("%g", $atanh(t.r)); - end - /*verilator public_flat_rw @(posedge clk)@(negedge - clk) t.pubflat*/ - always @(posedge clk)@(negedge clk) begin - __Vdly__t._Vpast_0_0 <= t.cyc; - end - always @(posedge clk)@(negedge clk) begin - __Vdly__t._Vpast_1_0 <= t.cyc; - end - __Vdly__t._Vpast_1_0 = t._Vpast_1_0; - t._Vpast_1_0 = __Vdly__t._Vpast_1_0; - __Vdly__t._Vpast_0_0 = t._Vpast_0_0; - t._Vpast_0_0 = __Vdly__t._Vpast_0_0; - __Vdly__t.r = t.r; - t.r = __Vdly__t.r; - __Vdly__t.cyc = t.cyc; - t.cyc = __Vdly__t.cyc; - __Vdly__t.pubflat_r = t.pubflat_r; - t.pubflat_r = __Vdly__t.pubflat_r; - always @(negedge clk) begin - $display("negedge clk, pfr = %x", t.pubflat_r); - end - signed int [31:0] __Vtask_t.sub.inc__2__i; - signed int [31:0] __Vtask_t.sub.inc__2__o; - signed int [31:0] __Vfunc_t.sub.f__3__Vfuncout; - signed int [31:0] __Vfunc_t.sub.f__3__v; - logic [15:0] __Vdly__t.pubflat_r; - signed int [31:0] __Vdly__t.cyc; - signed real __Vdly__t.r; - signed int [31:0] __Vdly__t._Vpast_0_0; - signed int [31:0] __Vdly__t._Vpast_1_0; + endfunction + signed real r; endmodule -package Vt_debug_emitv___024unit; -endpackage package Vt_debug_emitv_Pkg; + signed logic [31:0] PKG_PARAM; endpackage -class Vt_debug_emitv___024unit__03a__03aCls; -signed int [31:0] member; - -???? // CFUNC '__VnoInFunc_method' - -???? // CFUNC 'new' -$_CSTMT(_ctor_var_reset(vlSymsp); -); -$unit::Cls.member = 32'sh1; -endclass -/*class*/package Vt_debug_emitv___024unit__03a__03aCls__Vclpkg; -end/*class*/package diff --git a/test_regress/t/t_debug_emitv.pl b/test_regress/t/t_debug_emitv.pl index 06a25f291..863c22c75 100755 --- a/test_regress/t/t_debug_emitv.pl +++ b/test_regress/t/t_debug_emitv.pl @@ -16,7 +16,7 @@ lint( v_flags => ["--lint-only --dump-treei 9 --dump-treei-V3EmitV 9 --debug-emitv"], ); -files_identical("$Self->{obj_dir}/$Self->{VM_PREFIX}__preorder.v", $Self->{golden_filename}); +files_identical(glob_one("$Self->{obj_dir}/$Self->{VM_PREFIX}_*_width.tree.v"), $Self->{golden_filename}); ok(1); 1;