From a31a942586ad10e341f9311d8997f9f11c0e25ec Mon Sep 17 00:00:00 2001 From: Yutetsu TAKATSUKASA Date: Fri, 17 Jan 2020 06:30:06 +0900 Subject: [PATCH] Add a test for unpacked_array[small:big] case. --- test_regress/t/t_split_var_0.pl | 9 +- test_regress/t/t_split_var_0.v | 40 +- test_regress/t/t_split_var_2_trace.out | 1796 ++++++++++++------------ test_regress/t/t_split_var_2_trace.pl | 8 +- 4 files changed, 965 insertions(+), 888 deletions(-) diff --git a/test_regress/t/t_split_var_0.pl b/test_regress/t/t_split_var_0.pl index 6f8bdaa6c..6fe4e27b6 100755 --- a/test_regress/t/t_split_var_0.pl +++ b/test_regress/t/t_split_var_0.pl @@ -9,15 +9,18 @@ if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); di scenarios(simulator => 1); +# Travis environment offers 2 VCPUs, 2 thread setting causes the following warning. +# %Warning-UNOPTTHREADS: Thread scheduler is unable to provide requested parallelism; consider asking for fewer threads. +# So use 3 threads here though it's not optimal in performace wise, but ok. compile( - verilator_flags2 => ['--stats '], + verilator_flags2 => ['--stats ' . ($Self->{vltmt} ? '--threads 3' : '')], ); execute( check_finished => 1, ); -file_grep($Self->{stats}, qr/SplitVar,\s+Split packed variables\s+(\d+)/i, 80); -file_grep($Self->{stats}, qr/SplitVar,\s+Split unpacked arrays\s+(\d+)/i, 12); +file_grep($Self->{stats}, qr/SplitVar,\s+Split packed variables\s+(\d+)/i, 84); +file_grep($Self->{stats}, qr/SplitVar,\s+Split unpacked arrays\s+(\d+)/i, 13); ok(1); 1; diff --git a/test_regress/t/t_split_var_0.v b/test_regress/t/t_split_var_0.v index 4dfb24034..6599bb663 100644 --- a/test_regress/t/t_split_var_0.v +++ b/test_regress/t/t_split_var_0.v @@ -25,6 +25,28 @@ module barshift_1d_unpacked #(parameter depth = 2, localparam width = 2**depth) endmodule +module barshift_1d_unpacked_le #(parameter depth = 2, localparam width = 2**depth) ( + input [width-1:0] in, input [depth-1:0] shift, output [width-1:0]out); + + localparam offset = -3; + // almost same as above module, but tmp[smaller:bigger] here. + logic [width-1:0] tmp[offset:depth+offset]; /*verilator split_var*/ + generate + for(genvar i = 0; i < depth; ++i) begin + always_comb + if (shift[i]) begin + tmp[i+1+offset] = {tmp[i+offset][(1 << i)-1:0], tmp[i+offset][width-1:(2**i)]}; + end else begin + tmp[i+1+offset] = tmp[i+offset]; + end + end + endgenerate + assign tmp[0+offset] = in; + assign out = tmp[depth+offset]; +endmodule + + + module barshift_1d_unpacked_struct0 #(parameter depth = 2, localparam width = 2**depth) ( input [width-1:0] in, input [depth-1:0] shift, output [width-1:0]out); @@ -229,24 +251,26 @@ end endmodule + module t(/*AUTOARG*/ clk); input clk; localparam depth = 3; localparam width = 2**depth; - localparam numsub = 8; + localparam numsub = 9; logic [width-1:0] in; logic [width-1:0] out[0:numsub-1]; logic [depth-1:0] shift = 0; // barrel shifter barshift_1d_unpacked #(.depth(depth)) shifter0(.in(in), .out(out[0]), .shift(shift)); - barshift_1d_unpacked_struct0 #(.depth(depth)) shifter1(.in(in), .out(out[1]), .shift(shift)); - barshift_2d_unpacked #(.depth(depth)) shifter2(.in(in), .out(out[2]), .shift(shift)); - barshift_1d_unpacked_struct1 #(.depth(depth)) shifter3(.in(in), .out(out[3]), .shift(shift)); - barshift_2d_packed_array #(.depth(depth)) shifter4(.in(in), .out(out[4]), .shift(shift)); - barshift_2d_packed_array_le #(.depth(depth)) shifter5(.in(in), .out(out[5]), .shift(shift)); - barshift_1d_packed_struct shifter6(.in(in), .out(out[6]), .shift(shift)); - barshift_bitslice #(.depth(depth)) shifter7(.in(in), .out(out[7]), .shift(shift)); + barshift_1d_unpacked_le #(.depth(depth)) shifter1(.in(in), .out(out[1]), .shift(shift)); + barshift_1d_unpacked_struct0 #(.depth(depth)) shifter2(.in(in), .out(out[2]), .shift(shift)); + barshift_2d_unpacked #(.depth(depth)) shifter3(.in(in), .out(out[3]), .shift(shift)); + barshift_1d_unpacked_struct1 #(.depth(depth)) shifter4(.in(in), .out(out[4]), .shift(shift)); + barshift_2d_packed_array #(.depth(depth)) shifter5(.in(in), .out(out[5]), .shift(shift)); + barshift_2d_packed_array_le #(.depth(depth)) shifter6(.in(in), .out(out[6]), .shift(shift)); + barshift_1d_packed_struct shifter7(.in(in), .out(out[7]), .shift(shift)); + barshift_bitslice #(.depth(depth)) shifter8(.in(in), .out(out[8]), .shift(shift)); var_decl_with_init i_var_decl_with_init(); assign in = 8'b10001110; diff --git a/test_regress/t/t_split_var_2_trace.out b/test_regress/t/t_split_var_2_trace.out index 44459ac9d..499f122fd 100644 --- a/test_regress/t/t_split_var_2_trace.out +++ b/test_regress/t/t_split_var_2_trace.out @@ -1,16 +1,16 @@ $version Generated by VerilatedVcd $end -$date Thu Jan 16 00:22:08 2020 +$date Fri Jan 17 06:25:15 2020 $end $timescale 1ns $end $scope module top $end - $var wire 1 g* clk $end + $var wire 1 )+ clk $end $scope module t $end - $var wire 1 g* clk $end - $var wire 32 o* depth [31:0] $end - $var wire 64 )+ exp [63:0] $end - $var wire 8 !+ in [7:0] $end - $var wire 32 w* numsub [31:0] $end + $var wire 1 )+ clk $end + $var wire 32 1+ depth [31:0] $end + $var wire 64 Q+ exp [63:0] $end + $var wire 8 I+ in [7:0] $end + $var wire 32 A+ numsub [31:0] $end $var wire 8 [ out(0) [7:0] $end $var wire 8 \ out(1) [7:0] $end $var wire 8 ] out(2) [7:0] $end @@ -19,12 +19,13 @@ $timescale 1ns $end $var wire 8 ` out(5) [7:0] $end $var wire 8 a out(6) [7:0] $end $var wire 8 b out(7) [7:0] $end - $var wire 3 =! shift [2:0] $end - $var wire 32 w* width [31:0] $end + $var wire 8 c out(8) [7:0] $end + $var wire 3 E! shift [2:0] $end + $var wire 32 9+ width [31:0] $end $scope module always_block $end - $var wire 1 W* failed $end + $var wire 1 w* failed $end $scope module unnamedblk1 $end - $var wire 32 _* i [31:0] $end + $var wire 32 !+ i [31:0] $end $upscope $end $upscope $end $scope module i_var_decl_with_init $end @@ -34,228 +35,240 @@ $timescale 1ns $end $var wire 32 S var3 [30:-1] $end $upscope $end $scope module shifter0 $end - $var wire 32 o* depth [31:0] $end - $var wire 8 !+ in [7:0] $end - $var wire 32 9+ offset [31:0] $end - $var wire 8 E! out [7:0] $end - $var wire 3 =! shift [2:0] $end - $var wire 8 U! tmp(-1)[7:0] [7:0] $end - $var wire 8 M! tmp(-2)[7:0] [7:0] $end - $var wire 8 !+ tmp(-3)[7:0] [7:0] $end - $var wire 8 E! tmp(0)[7:0] [7:0] $end - $var wire 32 w* width [31:0] $end + $var wire 32 1+ depth [31:0] $end + $var wire 8 I+ in [7:0] $end + $var wire 32 a+ offset [31:0] $end + $var wire 8 M! out [7:0] $end + $var wire 3 E! shift [2:0] $end + $var wire 8 ]! tmp(-1)[7:0] [7:0] $end + $var wire 8 U! tmp(-2)[7:0] [7:0] $end + $var wire 8 I+ tmp(-3)[7:0] [7:0] $end + $var wire 8 M! tmp(0)[7:0] [7:0] $end + $var wire 32 9+ width [31:0] $end $upscope $end $scope module shifter1 $end - $var wire 32 o* depth [31:0] $end - $var wire 8 !+ in [7:0] $end - $var wire 32 A+ offset [31:0] $end - $var wire 8 ]! out [7:0] $end - $var wire 3 =! shift [2:0] $end - $var wire 8 !+ tmp(1)[7:0] [7:0] $end - $var wire 8 e! tmp(2)[7:0] [7:0] $end - $var wire 8 m! tmp(3)[7:0] [7:0] $end - $var wire 8 ]! tmp(4)[7:0] [7:0] $end - $var wire 32 w* width [31:0] $end + $var wire 32 1+ depth [31:0] $end + $var wire 8 I+ in [7:0] $end + $var wire 32 a+ offset [31:0] $end + $var wire 8 e! out [7:0] $end + $var wire 3 E! shift [2:0] $end + $var wire 8 u! tmp(-1)[7:0] [7:0] $end + $var wire 8 m! tmp(-2)[7:0] [7:0] $end + $var wire 8 I+ tmp(-3)[7:0] [7:0] $end + $var wire 8 e! tmp(0)[7:0] [7:0] $end + $var wire 32 9+ width [31:0] $end $upscope $end $scope module shifter2 $end - $var wire 32 o* depth [31:0] $end - $var wire 8 !+ in [7:0] $end - $var wire 32 o* n [31:0] $end - $var wire 32 A+ offset [31:0] $end - $var wire 8 u! out [7:0] $end - $var wire 3 =! shift [2:0] $end - $var wire 8 !+ tmp0(1)(1)[7:0] [7:0] $end - $var wire 8 !+ tmp0(1)(2)[7:0] [7:0] $end - $var wire 8 !+ tmp0(1)(3)[7:0] [7:0] $end - $var wire 8 }! tmp0(2)(1)[7:0] [7:0] $end - $var wire 8 '" tmp0(2)(2)[7:0] [7:0] $end - $var wire 8 /" tmp0(2)(3)[7:0] [7:0] $end - $var wire 8 7" tmp0(3)(1)[7:0] [7:0] $end - $var wire 8 ?" tmp0(3)(2)[7:0] [7:0] $end - $var wire 8 G" tmp0(3)(3)[7:0] [7:0] $end - $var wire 8 O" tmp0(4)(1)[7:0] [7:0] $end - $var wire 8 W" tmp0(4)(2)[7:0] [7:0] $end - $var wire 8 _" tmp0(4)(3)[7:0] [7:0] $end + $var wire 32 1+ depth [31:0] $end + $var wire 8 I+ in [7:0] $end + $var wire 32 i+ offset [31:0] $end + $var wire 8 }! out [7:0] $end + $var wire 3 E! shift [2:0] $end + $var wire 8 I+ tmp(1)[7:0] [7:0] $end + $var wire 8 '" tmp(2)[7:0] [7:0] $end + $var wire 8 /" tmp(3)[7:0] [7:0] $end + $var wire 8 }! tmp(4)[7:0] [7:0] $end + $var wire 32 9+ width [31:0] $end + $upscope $end + $scope module shifter3 $end + $var wire 32 1+ depth [31:0] $end + $var wire 8 I+ in [7:0] $end + $var wire 32 1+ n [31:0] $end + $var wire 32 i+ offset [31:0] $end + $var wire 8 7" out [7:0] $end + $var wire 3 E! shift [2:0] $end + $var wire 8 I+ tmp0(1)(1)[7:0] [7:0] $end + $var wire 8 I+ tmp0(1)(2)[7:0] [7:0] $end + $var wire 8 I+ tmp0(1)(3)[7:0] [7:0] $end + $var wire 8 ?" tmp0(2)(1)[7:0] [7:0] $end + $var wire 8 G" tmp0(2)(2)[7:0] [7:0] $end + $var wire 8 O" tmp0(2)(3)[7:0] [7:0] $end + $var wire 8 W" tmp0(3)(1)[7:0] [7:0] $end + $var wire 8 _" tmp0(3)(2)[7:0] [7:0] $end + $var wire 8 g" tmp0(3)(3)[7:0] [7:0] $end + $var wire 8 o" tmp0(4)(1)[7:0] [7:0] $end + $var wire 8 w" tmp0(4)(2)[7:0] [7:0] $end + $var wire 8 !# tmp0(4)(3)[7:0] [7:0] $end $var wire 8 # tmp1(1)(1) [7:0] $end $var wire 8 $ tmp1(1)(2) [7:0] $end $var wire 8 % tmp1(1)(3) [7:0] $end - $var wire 8 g" tmp1(2)(1) [7:0] $end - $var wire 8 h" tmp1(2)(2) [7:0] $end - $var wire 8 i" tmp1(2)(3) [7:0] $end - $var wire 8 !# tmp1(3)(1) [7:0] $end - $var wire 8 "# tmp1(3)(2) [7:0] $end - $var wire 8 ## tmp1(3)(3) [7:0] $end - $var wire 8 9# tmp1(4)(1) [7:0] $end - $var wire 8 :# tmp1(4)(2) [7:0] $end - $var wire 8 ;# tmp1(4)(3) [7:0] $end - $var wire 8 [( tmp10(1)(1)[7:0] [7:0] $end - $var wire 8 c( tmp10(1)(2)[7:0] [7:0] $end - $var wire 8 k( tmp10(1)(3)[7:0] [7:0] $end - $var wire 8 s( tmp10(2)(1)[7:0] [7:0] $end - $var wire 8 {( tmp10(2)(2)[7:0] [7:0] $end - $var wire 8 %) tmp10(2)(3)[7:0] [7:0] $end - $var wire 8 -) tmp10(3)(1)[7:0] [7:0] $end - $var wire 8 5) tmp10(3)(2)[7:0] [7:0] $end - $var wire 8 =) tmp10(3)(3)[7:0] [7:0] $end - $var wire 8 u! tmp10(4)(1)[7:0] [7:0] $end - $var wire 8 E) tmp10(4)(2)[7:0] [7:0] $end - $var wire 8 M) tmp10(4)(3)[7:0] [7:0] $end - $var wire 8 Q# tmp2(1)(1) [7:0] $end - $var wire 8 Y# tmp2(1)(2) [7:0] $end - $var wire 8 a# tmp2(1)(3) [7:0] $end - $var wire 8 i# tmp2(2)(1) [7:0] $end - $var wire 8 q# tmp2(2)(2) [7:0] $end - $var wire 8 y# tmp2(2)(3) [7:0] $end - $var wire 8 #$ tmp2(3)(1) [7:0] $end - $var wire 8 +$ tmp2(3)(2) [7:0] $end - $var wire 8 3$ tmp2(3)(3) [7:0] $end - $var wire 8 ;$ tmp2(4)(1) [7:0] $end - $var wire 8 C$ tmp2(4)(2) [7:0] $end - $var wire 8 K$ tmp2(4)(3) [7:0] $end - $var wire 8 S$ tmp3(1)(1) [7:0] $end - $var wire 8 T$ tmp3(1)(2) [7:0] $end - $var wire 8 U$ tmp3(1)(3) [7:0] $end - $var wire 8 k$ tmp3(2)(1) [7:0] $end - $var wire 8 l$ tmp3(2)(2) [7:0] $end - $var wire 8 m$ tmp3(2)(3) [7:0] $end - $var wire 8 %% tmp3(3)(1) [7:0] $end - $var wire 8 &% tmp3(3)(2) [7:0] $end - $var wire 8 '% tmp3(3)(3) [7:0] $end - $var wire 8 =% tmp3(4)(1) [7:0] $end - $var wire 8 >% tmp3(4)(2) [7:0] $end - $var wire 8 ?% tmp3(4)(3) [7:0] $end - $var wire 8 U% tmp4(1)(1) [7:0] $end - $var wire 8 V% tmp4(1)(2) [7:0] $end - $var wire 8 W% tmp4(1)(3) [7:0] $end - $var wire 8 m% tmp4(2)(1) [7:0] $end - $var wire 8 n% tmp4(2)(2) [7:0] $end - $var wire 8 o% tmp4(2)(3) [7:0] $end - $var wire 8 '& tmp4(3)(1) [7:0] $end - $var wire 8 (& tmp4(3)(2) [7:0] $end - $var wire 8 )& tmp4(3)(3) [7:0] $end - $var wire 8 ?& tmp4(4)(1) [7:0] $end - $var wire 8 @& tmp4(4)(2) [7:0] $end - $var wire 8 A& tmp4(4)(3) [7:0] $end - $var wire 8 W& tmp5(1)(1) [7:0] $end - $var wire 8 _& tmp5(1)(2) [7:0] $end - $var wire 8 g& tmp5(1)(3) [7:0] $end - $var wire 8 o& tmp5(2)(1) [7:0] $end - $var wire 8 w& tmp5(2)(2) [7:0] $end - $var wire 8 !' tmp5(2)(3) [7:0] $end - $var wire 8 )' tmp5(3)(1) [7:0] $end - $var wire 8 1' tmp5(3)(2) [7:0] $end - $var wire 8 9' tmp5(3)(3) [7:0] $end - $var wire 8 A' tmp5(4)(1) [7:0] $end - $var wire 8 I' tmp5(4)(2) [7:0] $end - $var wire 8 Q' tmp5(4)(3) [7:0] $end - $var wire 8 Y' tmp6(1)(1) [7:0] $end - $var wire 8 Z' tmp6(1)(2) [7:0] $end - $var wire 8 [' tmp6(1)(3) [7:0] $end - $var wire 8 q' tmp6(2)(1) [7:0] $end - $var wire 8 r' tmp6(2)(2) [7:0] $end - $var wire 8 s' tmp6(2)(3) [7:0] $end - $var wire 8 +( tmp6(3)(1) [7:0] $end - $var wire 8 ,( tmp6(3)(2) [7:0] $end - $var wire 8 -( tmp6(3)(3) [7:0] $end - $var wire 8 C( tmp6(4)(1) [7:0] $end - $var wire 8 D( tmp6(4)(2) [7:0] $end - $var wire 8 E( tmp6(4)(3) [7:0] $end - $var wire 8 [( tmp7(2)(1)[7:0] [7:0] $end - $var wire 8 c( tmp7(2)(2)[7:0] [7:0] $end - $var wire 8 k( tmp7(2)(3)[7:0] [7:0] $end - $var wire 8 s( tmp7(3)(1)[7:0] [7:0] $end - $var wire 8 {( tmp7(3)(2)[7:0] [7:0] $end - $var wire 8 %) tmp7(3)(3)[7:0] [7:0] $end - $var wire 8 -) tmp7(4)(1)[7:0] [7:0] $end - $var wire 8 5) tmp7(4)(2)[7:0] [7:0] $end - $var wire 8 =) tmp7(4)(3)[7:0] [7:0] $end - $var wire 8 u! tmp7(5)(1)[7:0] [7:0] $end - $var wire 8 E) tmp7(5)(2)[7:0] [7:0] $end - $var wire 8 M) tmp7(5)(3)[7:0] [7:0] $end - $var wire 8 I+ tmp8(0)(1)[7:0] [7:0] $end - $var wire 8 Q+ tmp8(0)(2)[7:0] [7:0] $end - $var wire 8 Y+ tmp8(0)(3)[7:0] [7:0] $end - $var wire 8 a+ tmp8(1)(1)[7:0] [7:0] $end - $var wire 8 i+ tmp8(1)(2)[7:0] [7:0] $end - $var wire 8 q+ tmp8(1)(3)[7:0] [7:0] $end - $var wire 8 [( tmp8(2)(1)[7:0] [7:0] $end - $var wire 8 c( tmp8(2)(2)[7:0] [7:0] $end - $var wire 8 k( tmp8(2)(3)[7:0] [7:0] $end - $var wire 8 s( tmp8(3)(1)[7:0] [7:0] $end - $var wire 8 {( tmp8(3)(2)[7:0] [7:0] $end - $var wire 8 %) tmp8(3)(3)[7:0] [7:0] $end - $var wire 8 -) tmp8(4)(1)[7:0] [7:0] $end - $var wire 8 5) tmp8(4)(2)[7:0] [7:0] $end - $var wire 8 =) tmp8(4)(3)[7:0] [7:0] $end - $var wire 8 u! tmp8(5)(1)[7:0] [7:0] $end - $var wire 8 E) tmp8(5)(2)[7:0] [7:0] $end - $var wire 8 M) tmp8(5)(3)[7:0] [7:0] $end - $var wire 8 y+ tmp8(6)(1)[7:0] [7:0] $end - $var wire 8 #, tmp8(6)(2)[7:0] [7:0] $end - $var wire 8 +, tmp8(6)(3)[7:0] [7:0] $end - $var wire 8 3, tmp8(7)(1)[7:0] [7:0] $end - $var wire 8 ;, tmp8(7)(2)[7:0] [7:0] $end - $var wire 8 C, tmp8(7)(3)[7:0] [7:0] $end - $var wire 8 [( tmp9(4)(1)[7:0] [7:0] $end - $var wire 8 c( tmp9(4)(2)[7:0] [7:0] $end - $var wire 8 k( tmp9(4)(3)[7:0] [7:0] $end - $var wire 8 s( tmp9(5)(1)[7:0] [7:0] $end - $var wire 8 {( tmp9(5)(2)[7:0] [7:0] $end - $var wire 8 %) tmp9(5)(3)[7:0] [7:0] $end - $var wire 8 -) tmp9(6)(1)[7:0] [7:0] $end - $var wire 8 5) tmp9(6)(2)[7:0] [7:0] $end - $var wire 8 =) tmp9(6)(3)[7:0] [7:0] $end - $var wire 8 u! tmp9(7)(1)[7:0] [7:0] $end - $var wire 8 E) tmp9(7)(2)[7:0] [7:0] $end - $var wire 8 M) tmp9(7)(3)[7:0] [7:0] $end - $var wire 32 w* width [31:0] $end - $upscope $end - $scope module shifter3 $end - $var wire 32 o* depth [31:0] $end - $var wire 8 !+ in [7:0] $end - $var wire 32 K, offset [31:0] $end - $var wire 8 U) out [7:0] $end - $var wire 24 [, pad [23:0] $end - $var wire 3 =! shift [2:0] $end - $var wire 32 S, tmp(2)[31:0] [31:0] $end - $var wire 32 ]) tmp(3)[31:0] [31:0] $end - $var wire 32 e) tmp(4)[31:0] [31:0] $end - $var wire 32 m) tmp(5)[31:0] [31:0] $end - $var wire 32 w* width [31:0] $end + $var wire 8 )# tmp1(2)(1) [7:0] $end + $var wire 8 *# tmp1(2)(2) [7:0] $end + $var wire 8 +# tmp1(2)(3) [7:0] $end + $var wire 8 A# tmp1(3)(1) [7:0] $end + $var wire 8 B# tmp1(3)(2) [7:0] $end + $var wire 8 C# tmp1(3)(3) [7:0] $end + $var wire 8 Y# tmp1(4)(1) [7:0] $end + $var wire 8 Z# tmp1(4)(2) [7:0] $end + $var wire 8 [# tmp1(4)(3) [7:0] $end + $var wire 8 {( tmp10(1)(1)[7:0] [7:0] $end + $var wire 8 %) tmp10(1)(2)[7:0] [7:0] $end + $var wire 8 -) tmp10(1)(3)[7:0] [7:0] $end + $var wire 8 5) tmp10(2)(1)[7:0] [7:0] $end + $var wire 8 =) tmp10(2)(2)[7:0] [7:0] $end + $var wire 8 E) tmp10(2)(3)[7:0] [7:0] $end + $var wire 8 M) tmp10(3)(1)[7:0] [7:0] $end + $var wire 8 U) tmp10(3)(2)[7:0] [7:0] $end + $var wire 8 ]) tmp10(3)(3)[7:0] [7:0] $end + $var wire 8 7" tmp10(4)(1)[7:0] [7:0] $end + $var wire 8 e) tmp10(4)(2)[7:0] [7:0] $end + $var wire 8 m) tmp10(4)(3)[7:0] [7:0] $end + $var wire 8 q# tmp2(1)(1) [7:0] $end + $var wire 8 y# tmp2(1)(2) [7:0] $end + $var wire 8 #$ tmp2(1)(3) [7:0] $end + $var wire 8 +$ tmp2(2)(1) [7:0] $end + $var wire 8 3$ tmp2(2)(2) [7:0] $end + $var wire 8 ;$ tmp2(2)(3) [7:0] $end + $var wire 8 C$ tmp2(3)(1) [7:0] $end + $var wire 8 K$ tmp2(3)(2) [7:0] $end + $var wire 8 S$ tmp2(3)(3) [7:0] $end + $var wire 8 [$ tmp2(4)(1) [7:0] $end + $var wire 8 c$ tmp2(4)(2) [7:0] $end + $var wire 8 k$ tmp2(4)(3) [7:0] $end + $var wire 8 s$ tmp3(1)(1) [7:0] $end + $var wire 8 t$ tmp3(1)(2) [7:0] $end + $var wire 8 u$ tmp3(1)(3) [7:0] $end + $var wire 8 -% tmp3(2)(1) [7:0] $end + $var wire 8 .% tmp3(2)(2) [7:0] $end + $var wire 8 /% tmp3(2)(3) [7:0] $end + $var wire 8 E% tmp3(3)(1) [7:0] $end + $var wire 8 F% tmp3(3)(2) [7:0] $end + $var wire 8 G% tmp3(3)(3) [7:0] $end + $var wire 8 ]% tmp3(4)(1) [7:0] $end + $var wire 8 ^% tmp3(4)(2) [7:0] $end + $var wire 8 _% tmp3(4)(3) [7:0] $end + $var wire 8 u% tmp4(1)(1) [7:0] $end + $var wire 8 v% tmp4(1)(2) [7:0] $end + $var wire 8 w% tmp4(1)(3) [7:0] $end + $var wire 8 /& tmp4(2)(1) [7:0] $end + $var wire 8 0& tmp4(2)(2) [7:0] $end + $var wire 8 1& tmp4(2)(3) [7:0] $end + $var wire 8 G& tmp4(3)(1) [7:0] $end + $var wire 8 H& tmp4(3)(2) [7:0] $end + $var wire 8 I& tmp4(3)(3) [7:0] $end + $var wire 8 _& tmp4(4)(1) [7:0] $end + $var wire 8 `& tmp4(4)(2) [7:0] $end + $var wire 8 a& tmp4(4)(3) [7:0] $end + $var wire 8 w& tmp5(1)(1) [7:0] $end + $var wire 8 !' tmp5(1)(2) [7:0] $end + $var wire 8 )' tmp5(1)(3) [7:0] $end + $var wire 8 1' tmp5(2)(1) [7:0] $end + $var wire 8 9' tmp5(2)(2) [7:0] $end + $var wire 8 A' tmp5(2)(3) [7:0] $end + $var wire 8 I' tmp5(3)(1) [7:0] $end + $var wire 8 Q' tmp5(3)(2) [7:0] $end + $var wire 8 Y' tmp5(3)(3) [7:0] $end + $var wire 8 a' tmp5(4)(1) [7:0] $end + $var wire 8 i' tmp5(4)(2) [7:0] $end + $var wire 8 q' tmp5(4)(3) [7:0] $end + $var wire 8 y' tmp6(1)(1) [7:0] $end + $var wire 8 z' tmp6(1)(2) [7:0] $end + $var wire 8 {' tmp6(1)(3) [7:0] $end + $var wire 8 3( tmp6(2)(1) [7:0] $end + $var wire 8 4( tmp6(2)(2) [7:0] $end + $var wire 8 5( tmp6(2)(3) [7:0] $end + $var wire 8 K( tmp6(3)(1) [7:0] $end + $var wire 8 L( tmp6(3)(2) [7:0] $end + $var wire 8 M( tmp6(3)(3) [7:0] $end + $var wire 8 c( tmp6(4)(1) [7:0] $end + $var wire 8 d( tmp6(4)(2) [7:0] $end + $var wire 8 e( tmp6(4)(3) [7:0] $end + $var wire 8 {( tmp7(2)(1)[7:0] [7:0] $end + $var wire 8 %) tmp7(2)(2)[7:0] [7:0] $end + $var wire 8 -) tmp7(2)(3)[7:0] [7:0] $end + $var wire 8 5) tmp7(3)(1)[7:0] [7:0] $end + $var wire 8 =) tmp7(3)(2)[7:0] [7:0] $end + $var wire 8 E) tmp7(3)(3)[7:0] [7:0] $end + $var wire 8 M) tmp7(4)(1)[7:0] [7:0] $end + $var wire 8 U) tmp7(4)(2)[7:0] [7:0] $end + $var wire 8 ]) tmp7(4)(3)[7:0] [7:0] $end + $var wire 8 7" tmp7(5)(1)[7:0] [7:0] $end + $var wire 8 e) tmp7(5)(2)[7:0] [7:0] $end + $var wire 8 m) tmp7(5)(3)[7:0] [7:0] $end + $var wire 8 q+ tmp8(0)(1)[7:0] [7:0] $end + $var wire 8 y+ tmp8(0)(2)[7:0] [7:0] $end + $var wire 8 #, tmp8(0)(3)[7:0] [7:0] $end + $var wire 8 +, tmp8(1)(1)[7:0] [7:0] $end + $var wire 8 3, tmp8(1)(2)[7:0] [7:0] $end + $var wire 8 ;, tmp8(1)(3)[7:0] [7:0] $end + $var wire 8 {( tmp8(2)(1)[7:0] [7:0] $end + $var wire 8 %) tmp8(2)(2)[7:0] [7:0] $end + $var wire 8 -) tmp8(2)(3)[7:0] [7:0] $end + $var wire 8 5) tmp8(3)(1)[7:0] [7:0] $end + $var wire 8 =) tmp8(3)(2)[7:0] [7:0] $end + $var wire 8 E) tmp8(3)(3)[7:0] [7:0] $end + $var wire 8 M) tmp8(4)(1)[7:0] [7:0] $end + $var wire 8 U) tmp8(4)(2)[7:0] [7:0] $end + $var wire 8 ]) tmp8(4)(3)[7:0] [7:0] $end + $var wire 8 7" tmp8(5)(1)[7:0] [7:0] $end + $var wire 8 e) tmp8(5)(2)[7:0] [7:0] $end + $var wire 8 m) tmp8(5)(3)[7:0] [7:0] $end + $var wire 8 C, tmp8(6)(1)[7:0] [7:0] $end + $var wire 8 K, tmp8(6)(2)[7:0] [7:0] $end + $var wire 8 S, tmp8(6)(3)[7:0] [7:0] $end + $var wire 8 [, tmp8(7)(1)[7:0] [7:0] $end + $var wire 8 c, tmp8(7)(2)[7:0] [7:0] $end + $var wire 8 k, tmp8(7)(3)[7:0] [7:0] $end + $var wire 8 {( tmp9(4)(1)[7:0] [7:0] $end + $var wire 8 %) tmp9(4)(2)[7:0] [7:0] $end + $var wire 8 -) tmp9(4)(3)[7:0] [7:0] $end + $var wire 8 5) tmp9(5)(1)[7:0] [7:0] $end + $var wire 8 =) tmp9(5)(2)[7:0] [7:0] $end + $var wire 8 E) tmp9(5)(3)[7:0] [7:0] $end + $var wire 8 M) tmp9(6)(1)[7:0] [7:0] $end + $var wire 8 U) tmp9(6)(2)[7:0] [7:0] $end + $var wire 8 ]) tmp9(6)(3)[7:0] [7:0] $end + $var wire 8 7" tmp9(7)(1)[7:0] [7:0] $end + $var wire 8 e) tmp9(7)(2)[7:0] [7:0] $end + $var wire 8 m) tmp9(7)(3)[7:0] [7:0] $end + $var wire 32 9+ width [31:0] $end $upscope $end $scope module shifter4 $end - $var wire 32 o* depth [31:0] $end - $var wire 8 !+ in [7:0] $end - $var wire 32 c, offset [31:0] $end + $var wire 32 1+ depth [31:0] $end + $var wire 8 I+ in [7:0] $end + $var wire 32 s, offset [31:0] $end $var wire 8 u) out [7:0] $end - $var wire 3 =! shift [2:0] $end - $var wire 32 }) tmp [31:0] $end - $var wire 32 w* width [31:0] $end + $var wire 24 %- pad [23:0] $end + $var wire 3 E! shift [2:0] $end + $var wire 32 {, tmp(2)[31:0] [31:0] $end + $var wire 32 }) tmp(3)[31:0] [31:0] $end + $var wire 32 '* tmp(4)[31:0] [31:0] $end + $var wire 32 /* tmp(5)[31:0] [31:0] $end + $var wire 32 9+ width [31:0] $end $upscope $end $scope module shifter5 $end - $var wire 32 o* depth [31:0] $end - $var wire 8 !+ in [7:0] $end - $var wire 32 c, offset [31:0] $end - $var wire 8 '* out [7:0] $end - $var wire 3 =! shift [2:0] $end - $var wire 32 /* tmp [31:0] $end - $var wire 32 w* width [31:0] $end + $var wire 32 1+ depth [31:0] $end + $var wire 8 I+ in [7:0] $end + $var wire 32 -- offset [31:0] $end + $var wire 8 7* out [7:0] $end + $var wire 3 E! shift [2:0] $end + $var wire 32 ?* tmp [31:0] $end + $var wire 32 9+ width [31:0] $end $upscope $end $scope module shifter6 $end - $var wire 32 o* depth [31:0] $end - $var wire 8 !+ in [7:0] $end - $var wire 8 7* out [7:0] $end - $var wire 3 =! shift [2:0] $end - $var wire 32 ?* tmp [31:0] $end - $var wire 32 w* width [31:0] $end + $var wire 32 1+ depth [31:0] $end + $var wire 8 I+ in [7:0] $end + $var wire 32 -- offset [31:0] $end + $var wire 8 G* out [7:0] $end + $var wire 3 E! shift [2:0] $end + $var wire 32 O* tmp [31:0] $end + $var wire 32 9+ width [31:0] $end $upscope $end $scope module shifter7 $end - $var wire 32 o* depth [31:0] $end - $var wire 8 !+ in [7:0] $end - $var wire 8 G* out [7:0] $end - $var wire 3 =! shift [2:0] $end - $var wire 32 O* tmp [0:31] $end - $var wire 32 w* width [31:0] $end + $var wire 32 1+ depth [31:0] $end + $var wire 8 I+ in [7:0] $end + $var wire 8 W* out [7:0] $end + $var wire 3 E! shift [2:0] $end + $var wire 32 _* tmp [31:0] $end + $var wire 32 9+ width [31:0] $end + $upscope $end + $scope module shifter8 $end + $var wire 32 1+ depth [31:0] $end + $var wire 8 I+ in [7:0] $end + $var wire 8 g* out [7:0] $end + $var wire 3 E! shift [2:0] $end + $var wire 32 o* tmp [0:31] $end + $var wire 32 9+ width [31:0] $end $upscope $end $upscope $end $upscope $end @@ -278,8 +291,8 @@ b10001110 _ b10001110 ` b10001110 a b10001110 b -b000 =! -b10001110 E! +b10001110 c +b000 E! b10001110 M! b10001110 U! b10001110 ]! @@ -296,18 +309,18 @@ b10001110 O" b10001110 W" b10001110 _" b10001110 g" -b10001110 h" -b10001110 i" +b10001110 o" +b10001110 w" b10001110 !# -b10001110 "# -b10001110 ## -b10001110 9# -b10001110 :# -b10001110 ;# -b10001110 Q# +b10001110 )# +b10001110 *# +b10001110 +# +b10001110 A# +b10001110 B# +b10001110 C# b10001110 Y# -b10001110 a# -b10001110 i# +b10001110 Z# +b10001110 [# b10001110 q# b10001110 y# b10001110 #$ @@ -317,33 +330,33 @@ b10001110 ;$ b10001110 C$ b10001110 K$ b10001110 S$ -b10001110 T$ -b10001110 U$ +b10001110 [$ +b10001110 c$ b10001110 k$ -b10001110 l$ -b10001110 m$ -b10001110 %% -b10001110 &% -b10001110 '% -b10001110 =% -b10001110 >% -b10001110 ?% -b10001110 U% -b10001110 V% -b10001110 W% -b10001110 m% -b10001110 n% -b10001110 o% -b10001110 '& -b10001110 (& -b10001110 )& -b10001110 ?& -b10001110 @& -b10001110 A& -b10001110 W& +b10001110 s$ +b10001110 t$ +b10001110 u$ +b10001110 -% +b10001110 .% +b10001110 /% +b10001110 E% +b10001110 F% +b10001110 G% +b10001110 ]% +b10001110 ^% +b10001110 _% +b10001110 u% +b10001110 v% +b10001110 w% +b10001110 /& +b10001110 0& +b10001110 1& +b10001110 G& +b10001110 H& +b10001110 I& b10001110 _& -b10001110 g& -b10001110 o& +b10001110 `& +b10001110 a& b10001110 w& b10001110 !' b10001110 )' @@ -353,21 +366,21 @@ b10001110 A' b10001110 I' b10001110 Q' b10001110 Y' -b10001110 Z' -b10001110 [' +b10001110 a' +b10001110 i' b10001110 q' -b10001110 r' -b10001110 s' -b10001110 +( -b10001110 ,( -b10001110 -( -b10001110 C( -b10001110 D( -b10001110 E( -b10001110 [( +b10001110 y' +b10001110 z' +b10001110 {' +b10001110 3( +b10001110 4( +b10001110 5( +b10001110 K( +b10001110 L( +b10001110 M( b10001110 c( -b10001110 k( -b10001110 s( +b10001110 d( +b10001110 e( b10001110 {( b10001110 %) b10001110 -) @@ -376,31 +389,31 @@ b10001110 =) b10001110 E) b10001110 M) b10001110 U) -b00000000000000000000000010001110 ]) -b00000000000000000000000010001110 e) -b00000000000000000000000010001110 m) +b10001110 ]) +b10001110 e) +b10001110 m) b10001110 u) -b10001110100011101000111010001110 }) -b10001110 '* -b10001110100011101000111010001110 /* +b00000000000000000000000010001110 }) +b00000000000000000000000010001110 '* +b00000000000000000000000010001110 /* b10001110 7* b10001110100011101000111010001110 ?* b10001110 G* b10001110100011101000111010001110 O* -0W* -b00000000000000000000000000000000 _* -0g* -b00000000000000000000000000000011 o* -b00000000000000000000000000001000 w* -b10001110 !+ -b1000111001000111101000111101000111101000011101000011101000011101 )+ -b11111111111111111111111111111101 9+ -b00000000000000000000000000000001 A+ -b00000000 I+ -b00000000 Q+ -b00000000 Y+ -b00000000 a+ -b00000000 i+ +b10001110 W* +b10001110100011101000111010001110 _* +b10001110 g* +b10001110100011101000111010001110 o* +0w* +b00000000000000000000000000000000 !+ +0)+ +b00000000000000000000000000000011 1+ +b00000000000000000000000000001000 9+ +b00000000000000000000000000001001 A+ +b10001110 I+ +b1000111001000111101000111101000111101000011101000011101000011101 Q+ +b11111111111111111111111111111101 a+ +b00000000000000000000000000000001 i+ b00000000 q+ b00000000 y+ b00000000 #, @@ -408,10 +421,15 @@ b00000000 +, b00000000 3, b00000000 ;, b00000000 C, -b00000000000000000000000000000010 K, -b00000000000000000000000010001110 S, -b000000000000000000000000 [, -b11111111111111111111111111111110 c, +b00000000 K, +b00000000 S, +b00000000 [, +b00000000 c, +b00000000 k, +b00000000000000000000000000000010 s, +b00000000000000000000000010001110 {, +b000000000000000000000000 %- +b11111111111111111111111111111110 -- #10 b01000111 [ b01000111 \ @@ -421,8 +439,8 @@ b01000111 _ b01000111 ` b01000111 a b01000111 b -b001 =! -b01000111 E! +b01000111 c +b001 E! b01000111 M! b01000111 U! b01000111 ]! @@ -439,83 +457,87 @@ b01000111 O" b01000111 W" b01000111 _" b01000111 g" -b01000111 h" -b01000111 i" +b01000111 o" +b01000111 w" b01000111 !# -b01000111 "# -b01000111 ## -b01000111 9# -b01000111 :# -b01000111 ;# -b01000111 i# -b01000111 q# -b01000111 y# -b01000111 #$ +b01000111 )# +b01000111 *# +b01000111 +# +b01000111 A# +b01000111 B# +b01000111 C# +b01000111 Y# +b01000111 Z# +b01000111 [# b01000111 +$ b01000111 3$ b01000111 ;$ b01000111 C$ b01000111 K$ +b01000111 S$ +b01000111 [$ +b01000111 c$ b01000111 k$ -b01000111 l$ -b01000111 m$ -b01000111 %% -b01000111 &% -b01000111 '% -b01000111 =% -b01000111 >% -b01000111 ?% -b01000111 m% -b01000111 n% -b01000111 o% -b01000111 '& -b01000111 (& -b01000111 )& -b01000111 ?& -b01000111 @& -b01000111 A& -b01000111 o& -b01000111 w& -b01000111 !' -b01000111 )' +b01000111 -% +b01000111 .% +b01000111 /% +b01000111 E% +b01000111 F% +b01000111 G% +b01000111 ]% +b01000111 ^% +b01000111 _% +b01000111 /& +b01000111 0& +b01000111 1& +b01000111 G& +b01000111 H& +b01000111 I& +b01000111 _& +b01000111 `& +b01000111 a& b01000111 1' b01000111 9' b01000111 A' b01000111 I' b01000111 Q' +b01000111 Y' +b01000111 a' +b01000111 i' b01000111 q' -b01000111 r' -b01000111 s' -b01000111 +( -b01000111 ,( -b01000111 -( -b01000111 C( -b01000111 D( -b01000111 E( -b01000111 s( -b01000111 {( -b01000111 %) -b01000111 -) +b01000111 3( +b01000111 4( +b01000111 5( +b01000111 K( +b01000111 L( +b01000111 M( +b01000111 c( +b01000111 d( +b01000111 e( b01000111 5) b01000111 =) b01000111 E) b01000111 M) b01000111 U) -b00000000000000000000000001000111 ]) -b00000000000000000000000001000111 e) -b00000000000000000000000001000111 m) +b01000111 ]) +b01000111 e) +b01000111 m) b01000111 u) -b10001110010001110100011101000111 }) -b01000111 '* -b10001110010001110100011101000111 /* +b00000000000000000000000001000111 }) +b00000000000000000000000001000111 '* +b00000000000000000000000001000111 /* b01000111 7* b10001110010001110100011101000111 ?* b01000111 G* b10001110010001110100011101000111 O* -b00000000000000000000000000001000 _* -1g* +b01000111 W* +b10001110010001110100011101000111 _* +b01000111 g* +b10001110010001110100011101000111 o* +b00000000000000000000000000001001 !+ +1)+ #15 -0g* +0)+ #20 b10100011 [ b10100011 \ @@ -525,100 +547,104 @@ b10100011 _ b10100011 ` b10100011 a b10100011 b -b010 =! -b10100011 E! -b10001110 M! -b10100011 U! +b10100011 c +b010 E! +b10100011 M! +b10001110 U! b10100011 ]! -b10001110 e! -b10100011 m! +b10100011 e! +b10001110 m! b10100011 u! -b10001110 }! +b10100011 }! b10001110 '" -b10001110 /" +b10100011 /" b10100011 7" -b10100011 ?" -b10100011 G" -b10100011 O" +b10001110 ?" +b10001110 G" +b10001110 O" b10100011 W" b10100011 _" -b10001110 g" -b10001110 h" -b10001110 i" +b10100011 g" +b10100011 o" +b10100011 w" b10100011 !# -b10100011 "# -b10100011 ## -b10100011 9# -b10100011 :# -b10100011 ;# -b10001110 i# -b10001110 q# -b10001110 y# -b10100011 #$ -b10100011 +$ -b10100011 3$ -b10100011 ;$ +b10001110 )# +b10001110 *# +b10001110 +# +b10100011 A# +b10100011 B# +b10100011 C# +b10100011 Y# +b10100011 Z# +b10100011 [# +b10001110 +$ +b10001110 3$ +b10001110 ;$ b10100011 C$ b10100011 K$ -b10001110 k$ -b10001110 l$ -b10001110 m$ -b10100011 %% -b10100011 &% -b10100011 '% -b10100011 =% -b10100011 >% -b10100011 ?% -b10001110 m% -b10001110 n% -b10001110 o% -b10100011 '& -b10100011 (& -b10100011 )& -b10100011 ?& -b10100011 @& -b10100011 A& -b10001110 o& -b10001110 w& -b10001110 !' -b10100011 )' -b10100011 1' -b10100011 9' -b10100011 A' +b10100011 S$ +b10100011 [$ +b10100011 c$ +b10100011 k$ +b10001110 -% +b10001110 .% +b10001110 /% +b10100011 E% +b10100011 F% +b10100011 G% +b10100011 ]% +b10100011 ^% +b10100011 _% +b10001110 /& +b10001110 0& +b10001110 1& +b10100011 G& +b10100011 H& +b10100011 I& +b10100011 _& +b10100011 `& +b10100011 a& +b10001110 1' +b10001110 9' +b10001110 A' b10100011 I' b10100011 Q' -b10001110 q' -b10001110 r' -b10001110 s' -b10100011 +( -b10100011 ,( -b10100011 -( -b10100011 C( -b10100011 D( -b10100011 E( -b10001110 s( -b10001110 {( -b10001110 %) -b10100011 -) -b10100011 5) -b10100011 =) -b10100011 E) +b10100011 Y' +b10100011 a' +b10100011 i' +b10100011 q' +b10001110 3( +b10001110 4( +b10001110 5( +b10100011 K( +b10100011 L( +b10100011 M( +b10100011 c( +b10100011 d( +b10100011 e( +b10001110 5) +b10001110 =) +b10001110 E) b10100011 M) b10100011 U) -b00000000000000000000000010001110 ]) -b00000000000000000000000010100011 e) -b00000000000000000000000010100011 m) +b10100011 ]) +b10100011 e) +b10100011 m) b10100011 u) -b10001110100011101010001110100011 }) -b10100011 '* -b10001110100011101010001110100011 /* +b00000000000000000000000010001110 }) +b00000000000000000000000010100011 '* +b00000000000000000000000010100011 /* b10100011 7* b10001110100011101010001110100011 ?* b10100011 G* b10001110100011101010001110100011 O* -1g* +b10100011 W* +b10001110100011101010001110100011 _* +b10100011 g* +b10001110100011101010001110100011 o* +1)+ #25 -0g* +0)+ #30 b11010001 [ b11010001 \ @@ -628,100 +654,104 @@ b11010001 _ b11010001 ` b11010001 a b11010001 b -b011 =! -b11010001 E! -b01000111 M! -b11010001 U! +b11010001 c +b011 E! +b11010001 M! +b01000111 U! b11010001 ]! -b01000111 e! -b11010001 m! +b11010001 e! +b01000111 m! b11010001 u! -b01000111 }! +b11010001 }! b01000111 '" -b01000111 /" +b11010001 /" b11010001 7" -b11010001 ?" -b11010001 G" -b11010001 O" +b01000111 ?" +b01000111 G" +b01000111 O" b11010001 W" b11010001 _" -b01000111 g" -b01000111 h" -b01000111 i" +b11010001 g" +b11010001 o" +b11010001 w" b11010001 !# -b11010001 "# -b11010001 ## -b11010001 9# -b11010001 :# -b11010001 ;# -b01000111 i# -b01000111 q# -b01000111 y# -b11010001 #$ -b11010001 +$ -b11010001 3$ -b11010001 ;$ +b01000111 )# +b01000111 *# +b01000111 +# +b11010001 A# +b11010001 B# +b11010001 C# +b11010001 Y# +b11010001 Z# +b11010001 [# +b01000111 +$ +b01000111 3$ +b01000111 ;$ b11010001 C$ b11010001 K$ -b01000111 k$ -b01000111 l$ -b01000111 m$ -b11010001 %% -b11010001 &% -b11010001 '% -b11010001 =% -b11010001 >% -b11010001 ?% -b01000111 m% -b01000111 n% -b01000111 o% -b11010001 '& -b11010001 (& -b11010001 )& -b11010001 ?& -b11010001 @& -b11010001 A& -b01000111 o& -b01000111 w& -b01000111 !' -b11010001 )' -b11010001 1' -b11010001 9' -b11010001 A' +b11010001 S$ +b11010001 [$ +b11010001 c$ +b11010001 k$ +b01000111 -% +b01000111 .% +b01000111 /% +b11010001 E% +b11010001 F% +b11010001 G% +b11010001 ]% +b11010001 ^% +b11010001 _% +b01000111 /& +b01000111 0& +b01000111 1& +b11010001 G& +b11010001 H& +b11010001 I& +b11010001 _& +b11010001 `& +b11010001 a& +b01000111 1' +b01000111 9' +b01000111 A' b11010001 I' b11010001 Q' -b01000111 q' -b01000111 r' -b01000111 s' -b11010001 +( -b11010001 ,( -b11010001 -( -b11010001 C( -b11010001 D( -b11010001 E( -b01000111 s( -b01000111 {( -b01000111 %) -b11010001 -) -b11010001 5) -b11010001 =) -b11010001 E) +b11010001 Y' +b11010001 a' +b11010001 i' +b11010001 q' +b01000111 3( +b01000111 4( +b01000111 5( +b11010001 K( +b11010001 L( +b11010001 M( +b11010001 c( +b11010001 d( +b11010001 e( +b01000111 5) +b01000111 =) +b01000111 E) b11010001 M) b11010001 U) -b00000000000000000000000001000111 ]) -b00000000000000000000000011010001 e) -b00000000000000000000000011010001 m) +b11010001 ]) +b11010001 e) +b11010001 m) b11010001 u) -b10001110010001111101000111010001 }) -b11010001 '* -b10001110010001111101000111010001 /* +b00000000000000000000000001000111 }) +b00000000000000000000000011010001 '* +b00000000000000000000000011010001 /* b11010001 7* b10001110010001111101000111010001 ?* b11010001 G* b10001110010001111101000111010001 O* -1g* +b11010001 W* +b10001110010001111101000111010001 _* +b11010001 g* +b10001110010001111101000111010001 o* +1)+ #35 -0g* +0)+ #40 b11101000 [ b11101000 \ @@ -731,100 +761,104 @@ b11101000 _ b11101000 ` b11101000 a b11101000 b -b100 =! -b11101000 E! -b10001110 M! +b11101000 c +b100 E! +b11101000 M! b10001110 U! -b11101000 ]! -b10001110 e! +b10001110 ]! +b11101000 e! b10001110 m! -b11101000 u! -b10001110 }! +b10001110 u! +b11101000 }! b10001110 '" b10001110 /" -b10001110 7" +b11101000 7" b10001110 ?" b10001110 G" -b11101000 O" -b11101000 W" -b11101000 _" +b10001110 O" +b10001110 W" +b10001110 _" b10001110 g" -b10001110 h" -b10001110 i" -b10001110 !# -b10001110 "# -b10001110 ## -b11101000 9# -b11101000 :# -b11101000 ;# -b10001110 i# -b10001110 q# -b10001110 y# -b10001110 #$ +b11101000 o" +b11101000 w" +b11101000 !# +b10001110 )# +b10001110 *# +b10001110 +# +b10001110 A# +b10001110 B# +b10001110 C# +b11101000 Y# +b11101000 Z# +b11101000 [# b10001110 +$ b10001110 3$ -b11101000 ;$ -b11101000 C$ -b11101000 K$ -b10001110 k$ -b10001110 l$ -b10001110 m$ -b10001110 %% -b10001110 &% -b10001110 '% -b11101000 =% -b11101000 >% -b11101000 ?% -b10001110 m% -b10001110 n% -b10001110 o% -b10001110 '& -b10001110 (& -b10001110 )& -b11101000 ?& -b11101000 @& -b11101000 A& -b10001110 o& -b10001110 w& -b10001110 !' -b10001110 )' +b10001110 ;$ +b10001110 C$ +b10001110 K$ +b10001110 S$ +b11101000 [$ +b11101000 c$ +b11101000 k$ +b10001110 -% +b10001110 .% +b10001110 /% +b10001110 E% +b10001110 F% +b10001110 G% +b11101000 ]% +b11101000 ^% +b11101000 _% +b10001110 /& +b10001110 0& +b10001110 1& +b10001110 G& +b10001110 H& +b10001110 I& +b11101000 _& +b11101000 `& +b11101000 a& b10001110 1' b10001110 9' -b11101000 A' -b11101000 I' -b11101000 Q' -b10001110 q' -b10001110 r' -b10001110 s' -b10001110 +( -b10001110 ,( -b10001110 -( -b11101000 C( -b11101000 D( -b11101000 E( -b10001110 s( -b10001110 {( -b10001110 %) -b10001110 -) +b10001110 A' +b10001110 I' +b10001110 Q' +b10001110 Y' +b11101000 a' +b11101000 i' +b11101000 q' +b10001110 3( +b10001110 4( +b10001110 5( +b10001110 K( +b10001110 L( +b10001110 M( +b11101000 c( +b11101000 d( +b11101000 e( b10001110 5) b10001110 =) -b11101000 E) -b11101000 M) -b11101000 U) -b00000000000000000000000010001110 ]) -b00000000000000000000000010001110 e) -b00000000000000000000000011101000 m) +b10001110 E) +b10001110 M) +b10001110 U) +b10001110 ]) +b11101000 e) +b11101000 m) b11101000 u) -b10001110100011101000111011101000 }) -b11101000 '* -b10001110100011101000111011101000 /* +b00000000000000000000000010001110 }) +b00000000000000000000000010001110 '* +b00000000000000000000000011101000 /* b11101000 7* b10001110100011101000111011101000 ?* b11101000 G* b10001110100011101000111011101000 O* -1g* +b11101000 W* +b10001110100011101000111011101000 _* +b11101000 g* +b10001110100011101000111011101000 o* +1)+ #45 -0g* +0)+ #50 b01110100 [ b01110100 \ @@ -834,100 +868,104 @@ b01110100 _ b01110100 ` b01110100 a b01110100 b -b101 =! -b01110100 E! -b01000111 M! +b01110100 c +b101 E! +b01110100 M! b01000111 U! -b01110100 ]! -b01000111 e! +b01000111 ]! +b01110100 e! b01000111 m! -b01110100 u! -b01000111 }! +b01000111 u! +b01110100 }! b01000111 '" b01000111 /" -b01000111 7" +b01110100 7" b01000111 ?" b01000111 G" -b01110100 O" -b01110100 W" -b01110100 _" +b01000111 O" +b01000111 W" +b01000111 _" b01000111 g" -b01000111 h" -b01000111 i" -b01000111 !# -b01000111 "# -b01000111 ## -b01110100 9# -b01110100 :# -b01110100 ;# -b01000111 i# -b01000111 q# -b01000111 y# -b01000111 #$ +b01110100 o" +b01110100 w" +b01110100 !# +b01000111 )# +b01000111 *# +b01000111 +# +b01000111 A# +b01000111 B# +b01000111 C# +b01110100 Y# +b01110100 Z# +b01110100 [# b01000111 +$ b01000111 3$ -b01110100 ;$ -b01110100 C$ -b01110100 K$ -b01000111 k$ -b01000111 l$ -b01000111 m$ -b01000111 %% -b01000111 &% -b01000111 '% -b01110100 =% -b01110100 >% -b01110100 ?% -b01000111 m% -b01000111 n% -b01000111 o% -b01000111 '& -b01000111 (& -b01000111 )& -b01110100 ?& -b01110100 @& -b01110100 A& -b01000111 o& -b01000111 w& -b01000111 !' -b01000111 )' +b01000111 ;$ +b01000111 C$ +b01000111 K$ +b01000111 S$ +b01110100 [$ +b01110100 c$ +b01110100 k$ +b01000111 -% +b01000111 .% +b01000111 /% +b01000111 E% +b01000111 F% +b01000111 G% +b01110100 ]% +b01110100 ^% +b01110100 _% +b01000111 /& +b01000111 0& +b01000111 1& +b01000111 G& +b01000111 H& +b01000111 I& +b01110100 _& +b01110100 `& +b01110100 a& b01000111 1' b01000111 9' -b01110100 A' -b01110100 I' -b01110100 Q' -b01000111 q' -b01000111 r' -b01000111 s' -b01000111 +( -b01000111 ,( -b01000111 -( -b01110100 C( -b01110100 D( -b01110100 E( -b01000111 s( -b01000111 {( -b01000111 %) -b01000111 -) +b01000111 A' +b01000111 I' +b01000111 Q' +b01000111 Y' +b01110100 a' +b01110100 i' +b01110100 q' +b01000111 3( +b01000111 4( +b01000111 5( +b01000111 K( +b01000111 L( +b01000111 M( +b01110100 c( +b01110100 d( +b01110100 e( b01000111 5) b01000111 =) -b01110100 E) -b01110100 M) -b01110100 U) -b00000000000000000000000001000111 ]) -b00000000000000000000000001000111 e) -b00000000000000000000000001110100 m) +b01000111 E) +b01000111 M) +b01000111 U) +b01000111 ]) +b01110100 e) +b01110100 m) b01110100 u) -b10001110010001110100011101110100 }) -b01110100 '* -b10001110010001110100011101110100 /* +b00000000000000000000000001000111 }) +b00000000000000000000000001000111 '* +b00000000000000000000000001110100 /* b01110100 7* b10001110010001110100011101110100 ?* b01110100 G* b10001110010001110100011101110100 O* -1g* +b01110100 W* +b10001110010001110100011101110100 _* +b01110100 g* +b10001110010001110100011101110100 o* +1)+ #55 -0g* +0)+ #60 b00111010 [ b00111010 \ @@ -937,100 +975,104 @@ b00111010 _ b00111010 ` b00111010 a b00111010 b -b110 =! -b00111010 E! -b10001110 M! -b10100011 U! -b00111010 ]! -b10001110 e! -b10100011 m! -b00111010 u! -b10001110 }! +b00111010 c +b110 E! +b00111010 M! +b10001110 U! +b10100011 ]! +b00111010 e! +b10001110 m! +b10100011 u! +b00111010 }! b10001110 '" -b10001110 /" -b10100011 7" -b10100011 ?" -b10100011 G" -b00111010 O" -b00111010 W" -b00111010 _" -b10001110 g" -b10001110 h" -b10001110 i" -b10100011 !# -b10100011 "# -b10100011 ## -b00111010 9# -b00111010 :# -b00111010 ;# -b10001110 i# -b10001110 q# -b10001110 y# -b10100011 #$ -b10100011 +$ -b10100011 3$ -b00111010 ;$ -b00111010 C$ -b00111010 K$ -b10001110 k$ -b10001110 l$ -b10001110 m$ -b10100011 %% -b10100011 &% -b10100011 '% -b00111010 =% -b00111010 >% -b00111010 ?% -b10001110 m% -b10001110 n% -b10001110 o% -b10100011 '& -b10100011 (& -b10100011 )& -b00111010 ?& -b00111010 @& -b00111010 A& -b10001110 o& -b10001110 w& -b10001110 !' -b10100011 )' -b10100011 1' -b10100011 9' -b00111010 A' -b00111010 I' -b00111010 Q' -b10001110 q' -b10001110 r' -b10001110 s' -b10100011 +( -b10100011 ,( -b10100011 -( -b00111010 C( -b00111010 D( -b00111010 E( -b10001110 s( -b10001110 {( -b10001110 %) -b10100011 -) -b10100011 5) -b10100011 =) -b00111010 E) -b00111010 M) -b00111010 U) -b00000000000000000000000010001110 ]) -b00000000000000000000000010100011 e) -b00000000000000000000000000111010 m) +b10100011 /" +b00111010 7" +b10001110 ?" +b10001110 G" +b10001110 O" +b10100011 W" +b10100011 _" +b10100011 g" +b00111010 o" +b00111010 w" +b00111010 !# +b10001110 )# +b10001110 *# +b10001110 +# +b10100011 A# +b10100011 B# +b10100011 C# +b00111010 Y# +b00111010 Z# +b00111010 [# +b10001110 +$ +b10001110 3$ +b10001110 ;$ +b10100011 C$ +b10100011 K$ +b10100011 S$ +b00111010 [$ +b00111010 c$ +b00111010 k$ +b10001110 -% +b10001110 .% +b10001110 /% +b10100011 E% +b10100011 F% +b10100011 G% +b00111010 ]% +b00111010 ^% +b00111010 _% +b10001110 /& +b10001110 0& +b10001110 1& +b10100011 G& +b10100011 H& +b10100011 I& +b00111010 _& +b00111010 `& +b00111010 a& +b10001110 1' +b10001110 9' +b10001110 A' +b10100011 I' +b10100011 Q' +b10100011 Y' +b00111010 a' +b00111010 i' +b00111010 q' +b10001110 3( +b10001110 4( +b10001110 5( +b10100011 K( +b10100011 L( +b10100011 M( +b00111010 c( +b00111010 d( +b00111010 e( +b10001110 5) +b10001110 =) +b10001110 E) +b10100011 M) +b10100011 U) +b10100011 ]) +b00111010 e) +b00111010 m) b00111010 u) -b10001110100011101010001100111010 }) -b00111010 '* -b10001110100011101010001100111010 /* +b00000000000000000000000010001110 }) +b00000000000000000000000010100011 '* +b00000000000000000000000000111010 /* b00111010 7* b10001110100011101010001100111010 ?* b00111010 G* b10001110100011101010001100111010 O* -1g* +b00111010 W* +b10001110100011101010001100111010 _* +b00111010 g* +b10001110100011101010001100111010 o* +1)+ #65 -0g* +0)+ #70 b00011101 [ b00011101 \ @@ -1040,100 +1082,104 @@ b00011101 _ b00011101 ` b00011101 a b00011101 b -b111 =! -b00011101 E! -b01000111 M! -b11010001 U! -b00011101 ]! -b01000111 e! -b11010001 m! -b00011101 u! -b01000111 }! +b00011101 c +b111 E! +b00011101 M! +b01000111 U! +b11010001 ]! +b00011101 e! +b01000111 m! +b11010001 u! +b00011101 }! b01000111 '" -b01000111 /" -b11010001 7" -b11010001 ?" -b11010001 G" -b00011101 O" -b00011101 W" -b00011101 _" -b01000111 g" -b01000111 h" -b01000111 i" -b11010001 !# -b11010001 "# -b11010001 ## -b00011101 9# -b00011101 :# -b00011101 ;# -b01000111 i# -b01000111 q# -b01000111 y# -b11010001 #$ -b11010001 +$ -b11010001 3$ -b00011101 ;$ -b00011101 C$ -b00011101 K$ -b01000111 k$ -b01000111 l$ -b01000111 m$ -b11010001 %% -b11010001 &% -b11010001 '% -b00011101 =% -b00011101 >% -b00011101 ?% -b01000111 m% -b01000111 n% -b01000111 o% -b11010001 '& -b11010001 (& -b11010001 )& -b00011101 ?& -b00011101 @& -b00011101 A& -b01000111 o& -b01000111 w& -b01000111 !' -b11010001 )' -b11010001 1' -b11010001 9' -b00011101 A' -b00011101 I' -b00011101 Q' -b01000111 q' -b01000111 r' -b01000111 s' -b11010001 +( -b11010001 ,( -b11010001 -( -b00011101 C( -b00011101 D( -b00011101 E( -b01000111 s( -b01000111 {( -b01000111 %) -b11010001 -) -b11010001 5) -b11010001 =) -b00011101 E) -b00011101 M) -b00011101 U) -b00000000000000000000000001000111 ]) -b00000000000000000000000011010001 e) -b00000000000000000000000000011101 m) +b11010001 /" +b00011101 7" +b01000111 ?" +b01000111 G" +b01000111 O" +b11010001 W" +b11010001 _" +b11010001 g" +b00011101 o" +b00011101 w" +b00011101 !# +b01000111 )# +b01000111 *# +b01000111 +# +b11010001 A# +b11010001 B# +b11010001 C# +b00011101 Y# +b00011101 Z# +b00011101 [# +b01000111 +$ +b01000111 3$ +b01000111 ;$ +b11010001 C$ +b11010001 K$ +b11010001 S$ +b00011101 [$ +b00011101 c$ +b00011101 k$ +b01000111 -% +b01000111 .% +b01000111 /% +b11010001 E% +b11010001 F% +b11010001 G% +b00011101 ]% +b00011101 ^% +b00011101 _% +b01000111 /& +b01000111 0& +b01000111 1& +b11010001 G& +b11010001 H& +b11010001 I& +b00011101 _& +b00011101 `& +b00011101 a& +b01000111 1' +b01000111 9' +b01000111 A' +b11010001 I' +b11010001 Q' +b11010001 Y' +b00011101 a' +b00011101 i' +b00011101 q' +b01000111 3( +b01000111 4( +b01000111 5( +b11010001 K( +b11010001 L( +b11010001 M( +b00011101 c( +b00011101 d( +b00011101 e( +b01000111 5) +b01000111 =) +b01000111 E) +b11010001 M) +b11010001 U) +b11010001 ]) +b00011101 e) +b00011101 m) b00011101 u) -b10001110010001111101000100011101 }) -b00011101 '* -b10001110010001111101000100011101 /* +b00000000000000000000000001000111 }) +b00000000000000000000000011010001 '* +b00000000000000000000000000011101 /* b00011101 7* b10001110010001111101000100011101 ?* b00011101 G* b10001110010001111101000100011101 O* -1g* +b00011101 W* +b10001110010001111101000100011101 _* +b00011101 g* +b10001110010001111101000100011101 o* +1)+ #75 -0g* +0)+ #80 b10001110 [ b10001110 \ @@ -1143,8 +1189,8 @@ b10001110 _ b10001110 ` b10001110 a b10001110 b -b000 =! -b10001110 E! +b10001110 c +b000 E! b10001110 M! b10001110 U! b10001110 ]! @@ -1161,77 +1207,81 @@ b10001110 O" b10001110 W" b10001110 _" b10001110 g" -b10001110 h" -b10001110 i" +b10001110 o" +b10001110 w" b10001110 !# -b10001110 "# -b10001110 ## -b10001110 9# -b10001110 :# -b10001110 ;# -b10001110 i# -b10001110 q# -b10001110 y# -b10001110 #$ +b10001110 )# +b10001110 *# +b10001110 +# +b10001110 A# +b10001110 B# +b10001110 C# +b10001110 Y# +b10001110 Z# +b10001110 [# b10001110 +$ b10001110 3$ b10001110 ;$ b10001110 C$ b10001110 K$ +b10001110 S$ +b10001110 [$ +b10001110 c$ b10001110 k$ -b10001110 l$ -b10001110 m$ -b10001110 %% -b10001110 &% -b10001110 '% -b10001110 =% -b10001110 >% -b10001110 ?% -b10001110 m% -b10001110 n% -b10001110 o% -b10001110 '& -b10001110 (& -b10001110 )& -b10001110 ?& -b10001110 @& -b10001110 A& -b10001110 o& -b10001110 w& -b10001110 !' -b10001110 )' +b10001110 -% +b10001110 .% +b10001110 /% +b10001110 E% +b10001110 F% +b10001110 G% +b10001110 ]% +b10001110 ^% +b10001110 _% +b10001110 /& +b10001110 0& +b10001110 1& +b10001110 G& +b10001110 H& +b10001110 I& +b10001110 _& +b10001110 `& +b10001110 a& b10001110 1' b10001110 9' b10001110 A' b10001110 I' b10001110 Q' +b10001110 Y' +b10001110 a' +b10001110 i' b10001110 q' -b10001110 r' -b10001110 s' -b10001110 +( -b10001110 ,( -b10001110 -( -b10001110 C( -b10001110 D( -b10001110 E( -b10001110 s( -b10001110 {( -b10001110 %) -b10001110 -) +b10001110 3( +b10001110 4( +b10001110 5( +b10001110 K( +b10001110 L( +b10001110 M( +b10001110 c( +b10001110 d( +b10001110 e( b10001110 5) b10001110 =) b10001110 E) b10001110 M) b10001110 U) -b00000000000000000000000010001110 ]) -b00000000000000000000000010001110 e) -b00000000000000000000000010001110 m) +b10001110 ]) +b10001110 e) +b10001110 m) b10001110 u) -b10001110100011101000111010001110 }) -b10001110 '* -b10001110100011101000111010001110 /* +b00000000000000000000000010001110 }) +b00000000000000000000000010001110 '* +b00000000000000000000000010001110 /* b10001110 7* b10001110100011101000111010001110 ?* b10001110 G* b10001110100011101000111010001110 O* -1g* +b10001110 W* +b10001110100011101000111010001110 _* +b10001110 g* +b10001110100011101000111010001110 o* +1)+ diff --git a/test_regress/t/t_split_var_2_trace.pl b/test_regress/t/t_split_var_2_trace.pl index 329c4afde..9b50297b2 100755 --- a/test_regress/t/t_split_var_2_trace.pl +++ b/test_regress/t/t_split_var_2_trace.pl @@ -12,9 +12,9 @@ top_filename("t/t_split_var_0.v"); # Travis environment offers 2 VCPUs, 2 thread setting causes the following warning. # %Warning-UNOPTTHREADS: Thread scheduler is unable to provide requested parallelism; consider asking for fewer threads. -# So use 4 threads here though it's not optimal in performace wise, but ok. +# So use 3 threads here though it's not optimal in performace wise, but ok. compile( - verilator_flags2 => ['--cc --trace --stats ' . ($Self->{vltmt} ? '--threads 4' : '')], + verilator_flags2 => ['--cc --trace --stats ' . ($Self->{vltmt} ? '--threads 3' : '')], ); execute( @@ -22,8 +22,8 @@ execute( ); vcd_identical("$Self->{obj_dir}/simx.vcd", $Self->{golden_filename}); -file_grep($Self->{stats}, qr/SplitVar,\s+Split packed variables\s+(\d+)/i, 92); -file_grep($Self->{stats}, qr/SplitVar,\s+Split unpacked arrays\s+(\d+)/i, 12); +file_grep($Self->{stats}, qr/SplitVar,\s+Split packed variables\s+(\d+)/i, 96); +file_grep($Self->{stats}, qr/SplitVar,\s+Split unpacked arrays\s+(\d+)/i, 13); ok(1); 1;