mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Merge branch 'master' of github.com:YosysHQ/yosys into clifford/pmgen
This commit is contained in:
		
						commit
						1e3dd0a2da
					
				
					 110 changed files with 3168 additions and 2073 deletions
				
			
		| 
						 | 
				
			
			@ -6,7 +6,7 @@
 | 
			
		|||
set -e
 | 
			
		||||
 | 
			
		||||
OPTIND=1
 | 
			
		||||
count=100
 | 
			
		||||
count=50
 | 
			
		||||
seed=""    # default to no seed specified
 | 
			
		||||
while getopts "c:S:" opt
 | 
			
		||||
do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,21 +0,0 @@
 | 
			
		|||
module top(
 | 
			
		||||
    input clk,
 | 
			
		||||
    input rst,
 | 
			
		||||
    input [2:0] a,
 | 
			
		||||
    output [1:0] b
 | 
			
		||||
);
 | 
			
		||||
    reg [2:0] b_reg;
 | 
			
		||||
    initial begin
 | 
			
		||||
        b_reg <= 3'b0;
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    assign b = b_reg[1:0];
 | 
			
		||||
    always @(posedge clk or posedge rst) begin
 | 
			
		||||
        if(rst) begin
 | 
			
		||||
            b_reg <= 3'b0;
 | 
			
		||||
        end else begin
 | 
			
		||||
            b_reg <= a;
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +0,0 @@
 | 
			
		|||
read_verilog opt_ff.v
 | 
			
		||||
synth_ice40
 | 
			
		||||
ice40_unlut
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,2 @@
 | 
			
		|||
read_verilog opt_lut.v
 | 
			
		||||
synth_ice40
 | 
			
		||||
ice40_unlut
 | 
			
		||||
equiv_opt -map +/ice40/cells_sim.v -assert opt_lut -dlogic SB_CARRY:I0=1:I1=2:CI=3
 | 
			
		||||
equiv_opt -map +/ice40/cells_sim.v -assert synth_ice40
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,8 +19,8 @@ hierarchy -top equiv
 | 
			
		|||
equiv_simple -undef
 | 
			
		||||
equiv_status -assert
 | 
			
		||||
 | 
			
		||||
design -load gold
 | 
			
		||||
stat
 | 
			
		||||
 | 
			
		||||
design -load gate
 | 
			
		||||
stat
 | 
			
		||||
#design -load gold
 | 
			
		||||
#stat
 | 
			
		||||
#
 | 
			
		||||
#design -load gate
 | 
			
		||||
#stat
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
read_verilog opt_ff_sat.v
 | 
			
		||||
read_verilog opt_rmdff_sat.v
 | 
			
		||||
prep -flatten
 | 
			
		||||
opt_rmdff -sat
 | 
			
		||||
synth
 | 
			
		||||
							
								
								
									
										10
									
								
								tests/opt/opt_share_add_sub.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								tests/opt/opt_share_add_sub.v
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
module opt_share_test(
 | 
			
		||||
  input [15:0]  a,
 | 
			
		||||
  input [15:0]  b,
 | 
			
		||||
  input         sel,
 | 
			
		||||
  output [15:0] res,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  assign res = {sel ? a + b : a - b};
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
							
								
								
									
										13
									
								
								tests/opt/opt_share_add_sub.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/opt/opt_share_add_sub.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
read_verilog opt_share_add_sub.v
 | 
			
		||||
proc;;
 | 
			
		||||
copy opt_share_test merged
 | 
			
		||||
 | 
			
		||||
alumacc merged
 | 
			
		||||
opt merged
 | 
			
		||||
opt_share merged
 | 
			
		||||
opt_clean merged
 | 
			
		||||
 | 
			
		||||
miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp opt_share_test merged miter
 | 
			
		||||
sat -set-def-inputs -verify -prove trigger 0 -show-inputs -show-outputs miter
 | 
			
		||||
 | 
			
		||||
select -assert-count 1 -module merged t:$alu
 | 
			
		||||
							
								
								
									
										15
									
								
								tests/opt/opt_share_cat.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								tests/opt/opt_share_cat.v
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
module opt_share_test(
 | 
			
		||||
  input [15:0]  a,
 | 
			
		||||
  input [15:0]  b,
 | 
			
		||||
  input [15:0]  c,
 | 
			
		||||
  input [15:0]  d,
 | 
			
		||||
  input         sel,
 | 
			
		||||
  output [63:0] res,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  reg [31: 0]   cat1 = {a+b, c+d};
 | 
			
		||||
  reg [31: 0]   cat2 = {a-b, c-d};
 | 
			
		||||
 | 
			
		||||
  assign res = {b, sel ? cat1 : cat2, a};
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
							
								
								
									
										13
									
								
								tests/opt/opt_share_cat.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/opt/opt_share_cat.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
read_verilog opt_share_cat.v
 | 
			
		||||
proc;;
 | 
			
		||||
copy opt_share_test merged
 | 
			
		||||
 | 
			
		||||
alumacc merged
 | 
			
		||||
opt merged
 | 
			
		||||
opt_share merged
 | 
			
		||||
opt_clean merged
 | 
			
		||||
 | 
			
		||||
miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp opt_share_test merged miter
 | 
			
		||||
sat -set-def-inputs -verify -prove trigger 0 -show-inputs -show-outputs miter
 | 
			
		||||
 | 
			
		||||
select -assert-count 2 -module merged t:$alu
 | 
			
		||||
							
								
								
									
										22
									
								
								tests/opt/opt_share_cat_multiuser.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								tests/opt/opt_share_cat_multiuser.v
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
module opt_share_test(
 | 
			
		||||
  input [15:0]      a,
 | 
			
		||||
  input [15:0]      b,
 | 
			
		||||
  input [15:0]      c,
 | 
			
		||||
  input [15:0]      d,
 | 
			
		||||
  input             sel,
 | 
			
		||||
  output reg [47:0] res,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  wire [15:0]       add_res = a+b;
 | 
			
		||||
  wire [15:0]       sub_res = a-b;
 | 
			
		||||
  wire [31: 0]      cat1 = {add_res, c+d};
 | 
			
		||||
  wire [31: 0]      cat2 = {sub_res, c-d};
 | 
			
		||||
 | 
			
		||||
  always @* begin
 | 
			
		||||
    case(sel)
 | 
			
		||||
      0: res = {cat1, add_res};
 | 
			
		||||
      1: res = {cat2, add_res};
 | 
			
		||||
    endcase
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
							
								
								
									
										13
									
								
								tests/opt/opt_share_cat_multiuser.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/opt/opt_share_cat_multiuser.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
read_verilog opt_share_cat_multiuser.v
 | 
			
		||||
proc;;
 | 
			
		||||
copy opt_share_test merged
 | 
			
		||||
 | 
			
		||||
alumacc merged
 | 
			
		||||
opt merged
 | 
			
		||||
opt_share merged
 | 
			
		||||
opt_clean merged
 | 
			
		||||
 | 
			
		||||
miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp opt_share_test merged miter
 | 
			
		||||
sat -set-def-inputs -verify -prove trigger 0 -show-inputs -show-outputs miter
 | 
			
		||||
 | 
			
		||||
select -assert-count 3 -module merged t:$alu
 | 
			
		||||
							
								
								
									
										21
									
								
								tests/opt/opt_share_diff_port_widths.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								tests/opt/opt_share_diff_port_widths.v
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
module opt_share_test(
 | 
			
		||||
  input [15:0]       a,
 | 
			
		||||
  input [15:0]       b,
 | 
			
		||||
  input [15:0]       c,
 | 
			
		||||
  input [1:0]      sel,
 | 
			
		||||
  output reg [15:0] res
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  wire [15:0]       add0_res = a+b;
 | 
			
		||||
  wire [15:0]       add1_res = a+c;
 | 
			
		||||
 | 
			
		||||
  always @* begin
 | 
			
		||||
    case(sel)
 | 
			
		||||
      0: res = add0_res[10:0];
 | 
			
		||||
      1: res = add1_res[10:0];
 | 
			
		||||
      2: res = a - b;
 | 
			
		||||
      default: res = 32'bx;
 | 
			
		||||
    endcase
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
							
								
								
									
										13
									
								
								tests/opt/opt_share_diff_port_widths.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/opt/opt_share_diff_port_widths.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
read_verilog opt_share_diff_port_widths.v
 | 
			
		||||
proc;;
 | 
			
		||||
copy opt_share_test merged
 | 
			
		||||
 | 
			
		||||
alumacc merged
 | 
			
		||||
opt merged
 | 
			
		||||
opt_share merged
 | 
			
		||||
opt_clean merged
 | 
			
		||||
 | 
			
		||||
miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp opt_share_test merged miter
 | 
			
		||||
sat -set-def-inputs -verify -prove trigger 0 -show-inputs -show-outputs miter
 | 
			
		||||
 | 
			
		||||
select -assert-count 2 -module merged t:$alu
 | 
			
		||||
							
								
								
									
										18
									
								
								tests/opt/opt_share_extend.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								tests/opt/opt_share_extend.v
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
module opt_share_test(
 | 
			
		||||
  input signed [7:0]       a,
 | 
			
		||||
  input signed [10:0]      b,
 | 
			
		||||
  input signed [15:0]      c,
 | 
			
		||||
  input [1:0]              sel,
 | 
			
		||||
  output reg signed [15:0] res
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  always @* begin
 | 
			
		||||
    case(sel)
 | 
			
		||||
      0: res = a + b;
 | 
			
		||||
      1: res = a - b;
 | 
			
		||||
      2: res = a + c;
 | 
			
		||||
      default: res = 16'bx;
 | 
			
		||||
    endcase
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
							
								
								
									
										13
									
								
								tests/opt/opt_share_extend.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/opt/opt_share_extend.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
read_verilog opt_share_extend.v
 | 
			
		||||
proc;;
 | 
			
		||||
copy opt_share_test merged
 | 
			
		||||
 | 
			
		||||
alumacc merged
 | 
			
		||||
opt merged
 | 
			
		||||
opt_share merged
 | 
			
		||||
opt_clean merged
 | 
			
		||||
 | 
			
		||||
miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp opt_share_test merged miter
 | 
			
		||||
sat -set-def-inputs -verify -prove trigger 0 -show-inputs -show-outputs miter
 | 
			
		||||
 | 
			
		||||
select -assert-count 1 -module merged t:$alu
 | 
			
		||||
							
								
								
									
										21
									
								
								tests/opt/opt_share_large_pmux_cat.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								tests/opt/opt_share_large_pmux_cat.v
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
module opt_share_test(
 | 
			
		||||
  input [15:0]      a,
 | 
			
		||||
  input [15:0]      b,
 | 
			
		||||
  input [15:0]      c,
 | 
			
		||||
  input [2:0]       sel,
 | 
			
		||||
  output reg [31:0] res
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  always @* begin
 | 
			
		||||
    case(sel)
 | 
			
		||||
      0: res = {a + b, a};
 | 
			
		||||
      1: res = {a - b, b};
 | 
			
		||||
      2: res = {a + c, c};
 | 
			
		||||
      3: res = {a - c, a};
 | 
			
		||||
      4: res = {b, b};
 | 
			
		||||
      5: res = {c, c};
 | 
			
		||||
      default: res = 32'bx;
 | 
			
		||||
    endcase
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
							
								
								
									
										13
									
								
								tests/opt/opt_share_large_pmux_cat.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/opt/opt_share_large_pmux_cat.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
read_verilog opt_share_large_pmux_cat.v
 | 
			
		||||
proc;;
 | 
			
		||||
copy opt_share_test merged
 | 
			
		||||
 | 
			
		||||
alumacc merged
 | 
			
		||||
opt merged
 | 
			
		||||
opt_share merged
 | 
			
		||||
opt_clean merged
 | 
			
		||||
 | 
			
		||||
miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp opt_share_test merged miter
 | 
			
		||||
sat -set-def-inputs -verify -prove trigger 0 -show-inputs -show-outputs miter
 | 
			
		||||
 | 
			
		||||
select -assert-count 1 -module merged t:$alu
 | 
			
		||||
							
								
								
									
										25
									
								
								tests/opt/opt_share_large_pmux_cat_multipart.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								tests/opt/opt_share_large_pmux_cat_multipart.v
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
module opt_share_test(
 | 
			
		||||
  input [15:0]      a,
 | 
			
		||||
  input [15:0]      b,
 | 
			
		||||
  input [15:0]      c,
 | 
			
		||||
  input [15:0]      d,
 | 
			
		||||
  input [2:0]       sel,
 | 
			
		||||
  output reg [31:0] res
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  wire [15:0]       add0_res = a+d;
 | 
			
		||||
 | 
			
		||||
  always @* begin
 | 
			
		||||
    case(sel)
 | 
			
		||||
      0: res = {add0_res, a};
 | 
			
		||||
      1: res = {a - b, add0_res[7], 15'b0};
 | 
			
		||||
      2: res = {b-a, b};
 | 
			
		||||
      3: res = {d, b - c};
 | 
			
		||||
      4: res = {d, b - a};
 | 
			
		||||
      5: res = {c, d};
 | 
			
		||||
      6: res = {a - c, b-d};
 | 
			
		||||
      default: res = 32'bx;
 | 
			
		||||
    endcase
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
							
								
								
									
										14
									
								
								tests/opt/opt_share_large_pmux_cat_multipart.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								tests/opt/opt_share_large_pmux_cat_multipart.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
read_verilog opt_share_large_pmux_cat_multipart.v
 | 
			
		||||
proc;;
 | 
			
		||||
copy opt_share_test merged
 | 
			
		||||
 | 
			
		||||
alumacc merged
 | 
			
		||||
opt merged
 | 
			
		||||
 | 
			
		||||
opt_share merged
 | 
			
		||||
opt_clean merged
 | 
			
		||||
 | 
			
		||||
miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp opt_share_test merged miter
 | 
			
		||||
sat -set-def-inputs -verify -prove trigger 0 -show-inputs -show-outputs miter
 | 
			
		||||
 | 
			
		||||
select -assert-count 4 -module merged t:$alu
 | 
			
		||||
							
								
								
									
										23
									
								
								tests/opt/opt_share_large_pmux_multipart.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								tests/opt/opt_share_large_pmux_multipart.v
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
module opt_share_test(
 | 
			
		||||
  input [15:0]      a,
 | 
			
		||||
  input [15:0]      b,
 | 
			
		||||
  input [15:0]      c,
 | 
			
		||||
  input [15:0]      d,
 | 
			
		||||
  input [2:0]       sel,
 | 
			
		||||
  output reg [15:0] res
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  always @* begin
 | 
			
		||||
    case(sel)
 | 
			
		||||
      0: res = a + d;
 | 
			
		||||
      1: res = a - b;
 | 
			
		||||
      2: res = b;
 | 
			
		||||
      3: res = b - c;
 | 
			
		||||
      4: res = b - a;
 | 
			
		||||
      5: res = c;
 | 
			
		||||
      6: res = a - c;
 | 
			
		||||
      default: res = 16'bx;
 | 
			
		||||
    endcase
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
							
								
								
									
										13
									
								
								tests/opt/opt_share_large_pmux_multipart.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/opt/opt_share_large_pmux_multipart.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
read_verilog opt_share_large_pmux_multipart.v
 | 
			
		||||
proc;;
 | 
			
		||||
copy opt_share_test merged
 | 
			
		||||
 | 
			
		||||
alumacc merged
 | 
			
		||||
opt merged
 | 
			
		||||
opt_share merged
 | 
			
		||||
opt_clean merged
 | 
			
		||||
 | 
			
		||||
miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp opt_share_test merged miter
 | 
			
		||||
sat -set-def-inputs -verify -prove trigger 0 -show-inputs -show-outputs miter
 | 
			
		||||
 | 
			
		||||
select -assert-count 2 -module merged t:$alu
 | 
			
		||||
							
								
								
									
										21
									
								
								tests/opt/opt_share_large_pmux_part.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								tests/opt/opt_share_large_pmux_part.v
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
module opt_share_test(
 | 
			
		||||
  input [15:0]      a,
 | 
			
		||||
  input [15:0]      b,
 | 
			
		||||
  input [15:0]      c,
 | 
			
		||||
  input [2:0]       sel,
 | 
			
		||||
  output reg [15:0] res
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  always @* begin
 | 
			
		||||
    case(sel)
 | 
			
		||||
      0: res = a + b;
 | 
			
		||||
      1: res = a - b;
 | 
			
		||||
      2: res = a + c;
 | 
			
		||||
      3: res = a - c;
 | 
			
		||||
      4: res = b;
 | 
			
		||||
      5: res = c;
 | 
			
		||||
      default: res = 16'bx;
 | 
			
		||||
    endcase
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
							
								
								
									
										13
									
								
								tests/opt/opt_share_large_pmux_part.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/opt/opt_share_large_pmux_part.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
read_verilog opt_share_large_pmux_part.v
 | 
			
		||||
proc;;
 | 
			
		||||
copy opt_share_test merged
 | 
			
		||||
 | 
			
		||||
alumacc merged
 | 
			
		||||
opt merged
 | 
			
		||||
opt_share merged
 | 
			
		||||
opt_clean merged
 | 
			
		||||
 | 
			
		||||
miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp opt_share_test merged miter
 | 
			
		||||
sat -set-def-inputs -verify -prove trigger 0 -show-inputs -show-outputs miter
 | 
			
		||||
 | 
			
		||||
select -assert-count 1 -module merged t:$alu
 | 
			
		||||
							
								
								
									
										18
									
								
								tests/opt/opt_share_mux_tree.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								tests/opt/opt_share_mux_tree.v
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
module opt_share_test(
 | 
			
		||||
  input [15:0]      a,
 | 
			
		||||
  input [15:0]      b,
 | 
			
		||||
  input [15:0]      c,
 | 
			
		||||
  input [1:0]       sel,
 | 
			
		||||
  output reg [15:0] res
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  always @* begin
 | 
			
		||||
    case(sel)
 | 
			
		||||
      0: res = a + b;
 | 
			
		||||
      1: res = a - b;
 | 
			
		||||
      2: res = a + c;
 | 
			
		||||
      default: res = 16'bx;
 | 
			
		||||
    endcase
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
							
								
								
									
										13
									
								
								tests/opt/opt_share_mux_tree.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/opt/opt_share_mux_tree.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
read_verilog opt_share_mux_tree.v
 | 
			
		||||
proc;;
 | 
			
		||||
copy opt_share_test merged
 | 
			
		||||
 | 
			
		||||
alumacc merged
 | 
			
		||||
opt merged
 | 
			
		||||
opt_share merged
 | 
			
		||||
opt_clean merged
 | 
			
		||||
 | 
			
		||||
miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp opt_share_test merged miter
 | 
			
		||||
sat -set-def-inputs -verify -prove trigger 0 -show-inputs -show-outputs miter
 | 
			
		||||
 | 
			
		||||
select -assert-count 1 -module merged t:$alu
 | 
			
		||||
							
								
								
									
										1
									
								
								tests/opt_share/.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/opt_share/.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
temp
 | 
			
		||||
							
								
								
									
										86
									
								
								tests/opt_share/generate.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								tests/opt_share/generate.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,86 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
 | 
			
		||||
import argparse
 | 
			
		||||
import sys
 | 
			
		||||
import random
 | 
			
		||||
from contextlib import contextmanager
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@contextmanager
 | 
			
		||||
def redirect_stdout(new_target):
 | 
			
		||||
    old_target, sys.stdout = sys.stdout, new_target
 | 
			
		||||
    try:
 | 
			
		||||
        yield new_target
 | 
			
		||||
    finally:
 | 
			
		||||
        sys.stdout = old_target
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def random_plus_x():
 | 
			
		||||
    return "%s x" % random.choice(['+', '+', '+', '-', '-', '|', '&', '^'])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def maybe_plus_x(expr):
 | 
			
		||||
    if random.randint(0, 4) == 0:
 | 
			
		||||
        return "(%s %s)" % (expr, random_plus_x())
 | 
			
		||||
    else:
 | 
			
		||||
        return expr
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
parser = argparse.ArgumentParser(
 | 
			
		||||
    formatter_class=argparse.ArgumentDefaultsHelpFormatter)
 | 
			
		||||
parser.add_argument('-S', '--seed', type=int, help='seed for PRNG')
 | 
			
		||||
parser.add_argument('-c',
 | 
			
		||||
                    '--count',
 | 
			
		||||
                    type=int,
 | 
			
		||||
                    default=100,
 | 
			
		||||
                    help='number of test cases to generate')
 | 
			
		||||
args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
if args.seed is not None:
 | 
			
		||||
    print("PRNG seed: %d" % args.seed)
 | 
			
		||||
    random.seed(args.seed)
 | 
			
		||||
 | 
			
		||||
for idx in range(args.count):
 | 
			
		||||
    with open('temp/uut_%05d.v' % idx, 'w') as f:
 | 
			
		||||
        with redirect_stdout(f):
 | 
			
		||||
            print('module uut_%05d(a, b, c, s, y);' % (idx))
 | 
			
		||||
            op = random.choice([
 | 
			
		||||
                random.choice(['+', '-', '*', '/', '%']),
 | 
			
		||||
                random.choice(['<', '<=', '==', '!=', '===', '!==', '>=',
 | 
			
		||||
                               '>']),
 | 
			
		||||
                random.choice(['<<', '>>', '<<<', '>>>']),
 | 
			
		||||
                random.choice(['|', '&', '^', '~^', '||', '&&']),
 | 
			
		||||
            ])
 | 
			
		||||
            print('  input%s [%d:0] a;' % (random.choice(['', ' signed']), 8))
 | 
			
		||||
            print('  input%s [%d:0] b;' % (random.choice(['', ' signed']), 8))
 | 
			
		||||
            print('  input%s [%d:0] c;' % (random.choice(['', ' signed']), 8))
 | 
			
		||||
            print('  input s;')
 | 
			
		||||
            print('  output [%d:0] y;' % 8)
 | 
			
		||||
            ops1 = ['a', 'b']
 | 
			
		||||
            ops2 = ['a', 'c']
 | 
			
		||||
            random.shuffle(ops1)
 | 
			
		||||
            random.shuffle(ops2)
 | 
			
		||||
            cast1 = random.choice(['', '$signed', '$unsigned'])
 | 
			
		||||
            cast2 = random.choice(['', '$signed', '$unsigned'])
 | 
			
		||||
            print('  assign y = (s ? %s(%s %s %s) : %s(%s %s %s));' %
 | 
			
		||||
                  (cast1, ops1[0], op, ops1[1],
 | 
			
		||||
                   cast2, ops2[0], op, ops2[1]))
 | 
			
		||||
            print('endmodule')
 | 
			
		||||
 | 
			
		||||
    with open('temp/uut_%05d.ys' % idx, 'w') as f:
 | 
			
		||||
        with redirect_stdout(f):
 | 
			
		||||
            print('read_verilog temp/uut_%05d.v' % idx)
 | 
			
		||||
            print('proc;;')
 | 
			
		||||
            print('copy uut_%05d gold' % idx)
 | 
			
		||||
            print('rename uut_%05d gate' % idx)
 | 
			
		||||
            print('tee -a temp/all_share_log.txt log')
 | 
			
		||||
            print('tee -a temp/all_share_log.txt log #job# uut_%05d' % idx)
 | 
			
		||||
            print('tee -a temp/all_share_log.txt opt gate')
 | 
			
		||||
            print('tee -a temp/all_share_log.txt opt_share gate')
 | 
			
		||||
            print('tee -a temp/all_share_log.txt opt_clean gate')
 | 
			
		||||
            print(
 | 
			
		||||
                'miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp gold gate miter'
 | 
			
		||||
            )
 | 
			
		||||
            print(
 | 
			
		||||
                'sat -set-def-inputs -verify -prove trigger 0 -show-inputs -show-outputs miter'
 | 
			
		||||
            )
 | 
			
		||||
							
								
								
									
										39
									
								
								tests/opt_share/run-test.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										39
									
								
								tests/opt_share/run-test.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,39 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# run this test many times:
 | 
			
		||||
# time bash -c 'for ((i=0; i<100; i++)); do echo "-- $i --"; bash run-test.sh || exit 1; done'
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
OPTIND=1
 | 
			
		||||
count=100
 | 
			
		||||
seed=""    # default to no seed specified
 | 
			
		||||
while getopts "c:S:" opt
 | 
			
		||||
do
 | 
			
		||||
  case "$opt" in
 | 
			
		||||
		c) count="$OPTARG" ;;
 | 
			
		||||
		S) seed="-S $OPTARG" ;;
 | 
			
		||||
  esac
 | 
			
		||||
done
 | 
			
		||||
shift "$((OPTIND-1))"
 | 
			
		||||
 | 
			
		||||
rm -rf temp
 | 
			
		||||
mkdir -p temp
 | 
			
		||||
echo "generating tests.."
 | 
			
		||||
python3 generate.py -c $count $seed
 | 
			
		||||
 | 
			
		||||
echo "running tests.."
 | 
			
		||||
for i in $( ls temp/*.ys | sed 's,[^0-9],,g; s,^0*\(.\),\1,g;' ); do
 | 
			
		||||
	echo -n "[$i]"
 | 
			
		||||
	idx=$( printf "%05d" $i )
 | 
			
		||||
	../../yosys -ql temp/uut_${idx}.log temp/uut_${idx}.ys
 | 
			
		||||
done
 | 
			
		||||
echo
 | 
			
		||||
 | 
			
		||||
failed_share=$( echo $( gawk '/^#job#/ { j=$2; db[j]=0; } /^Removing [246] cells/ { delete db[j]; } END { for (j in db) print(j); }' temp/all_share_log.txt ) )
 | 
			
		||||
if [ -n "$failed_share" ]; then
 | 
			
		||||
	echo "Resource sharing failed for the following test cases: $failed_share"
 | 
			
		||||
	false
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
| 
						 | 
				
			
			@ -18,5 +18,6 @@ if ! which iverilog > /dev/null ; then
 | 
			
		|||
fi
 | 
			
		||||
 | 
			
		||||
cp ../simple/*.v .
 | 
			
		||||
cp ../simple/*.sv .
 | 
			
		||||
DOLLAR='?'
 | 
			
		||||
exec ${MAKE:-make} -f ../tools/autotest.mk $seed *.v EXTRA_FLAGS="-p 'hierarchy; synth -run coarse; opt -full; techmap; abc9 -lut 4 -box ../abc.box; stat; check -assert; select -assert-none t:${DOLLAR}_NOT_ t:${DOLLAR}_AND_ %%'"
 | 
			
		||||
exec ${MAKE:-make} -f ../tools/autotest.mk $seed *.v EXTRA_FLAGS="-n 300 -p 'hierarchy; synth -run coarse; opt -full; techmap; abc9 -lut 4 -box ../abc.box; stat; check -assert; select -assert-none t:${DOLLAR}_NOT_ t:${DOLLAR}_AND_ %%'"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								tests/various/.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								tests/various/.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -2,3 +2,4 @@
 | 
			
		|||
/*.out
 | 
			
		||||
/write_gzip.v
 | 
			
		||||
/write_gzip.v.gz
 | 
			
		||||
/run-test.mk
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 1 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -21,7 +21,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 1 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +52,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 2 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +67,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 1 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -82,7 +82,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 1 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +97,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 1 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +112,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 1 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +127,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 1 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -142,7 +142,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 7 t:$mux
 | 
			
		||||
select -assert-count 0 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -157,7 +157,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 4 t:$mux
 | 
			
		||||
select -assert-count 0 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -172,7 +172,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 3 t:$mux
 | 
			
		||||
select -assert-count 0 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -204,7 +204,7 @@ prep
 | 
			
		|||
design -save gold
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 2 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -222,7 +222,7 @@ opt -fast -mux_undef
 | 
			
		|||
select -assert-count 2 t:$pmux
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 1 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -240,7 +240,7 @@ opt -fast -mux_undef
 | 
			
		|||
select -assert-count 2 t:$pmux
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 2 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -258,7 +258,7 @@ opt -fast -mux_undef
 | 
			
		|||
select -assert-count 2 t:$pmux
 | 
			
		||||
muxpack
 | 
			
		||||
opt
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
select -assert-count 0 t:$mux
 | 
			
		||||
select -assert-count 2 t:$pmux
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,12 +1,20 @@
 | 
			
		|||
#!/usr/bin/env bash
 | 
			
		||||
set -e
 | 
			
		||||
{
 | 
			
		||||
echo "all::"
 | 
			
		||||
for x in *.ys; do
 | 
			
		||||
	echo "Running $x.."
 | 
			
		||||
	../../yosys -ql ${x%.ys}.log $x
 | 
			
		||||
	echo "all:: run-$x"
 | 
			
		||||
	echo "run-$x:"
 | 
			
		||||
	echo "	@echo 'Running $x..'"
 | 
			
		||||
	echo "	@../../yosys -ql ${x%.ys}.log $x"
 | 
			
		||||
done
 | 
			
		||||
for s in *.sh; do
 | 
			
		||||
	if [ "$s" != "run-test.sh" ]; then
 | 
			
		||||
		echo "Running $s.."
 | 
			
		||||
		bash $s
 | 
			
		||||
		echo "all:: run-$s"
 | 
			
		||||
		echo "run-$s:"
 | 
			
		||||
		echo "	@echo 'Running $s..'"
 | 
			
		||||
		echo "	@bash $s"
 | 
			
		||||
	fi
 | 
			
		||||
done
 | 
			
		||||
} > run-test.mk
 | 
			
		||||
exec ${MAKE:-make} -f run-test.mk
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,7 @@ shregmap -init
 | 
			
		|||
 | 
			
		||||
opt
 | 
			
		||||
 | 
			
		||||
stat
 | 
			
		||||
# stat
 | 
			
		||||
# show -width
 | 
			
		||||
select -assert-count 1 t:$_DFF_P_
 | 
			
		||||
select -assert-count 2 t:$__SHREG_DFF_P_
 | 
			
		||||
| 
						 | 
				
			
			@ -26,11 +26,11 @@ prep
 | 
			
		|||
miter -equiv -flatten -make_assert -make_outputs gold gate miter
 | 
			
		||||
sat -verify -prove-asserts -show-ports -seq 5 miter
 | 
			
		||||
 | 
			
		||||
design -load gold
 | 
			
		||||
stat
 | 
			
		||||
#design -load gold
 | 
			
		||||
#stat
 | 
			
		||||
 | 
			
		||||
design -load gate
 | 
			
		||||
stat
 | 
			
		||||
#design -load gate
 | 
			
		||||
#stat
 | 
			
		||||
 | 
			
		||||
##########
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -43,9 +43,9 @@ design -save gold
 | 
			
		|||
simplemap t:$dff t:$dffe
 | 
			
		||||
shregmap -tech xilinx
 | 
			
		||||
 | 
			
		||||
stat
 | 
			
		||||
#stat
 | 
			
		||||
# show -width
 | 
			
		||||
write_verilog -noexpr -norename
 | 
			
		||||
# write_verilog -noexpr -norename
 | 
			
		||||
select -assert-count 1 t:$_DFF_P_
 | 
			
		||||
select -assert-count 2 t:$__XILINX_SHREG_
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -59,8 +59,8 @@ prep
 | 
			
		|||
miter -equiv -flatten -make_assert -make_outputs gold gate miter
 | 
			
		||||
sat -verify -prove-asserts -show-ports -seq 5 miter
 | 
			
		||||
 | 
			
		||||
design -load gold
 | 
			
		||||
stat
 | 
			
		||||
# design -load gold
 | 
			
		||||
# stat
 | 
			
		||||
 | 
			
		||||
design -load gate
 | 
			
		||||
stat
 | 
			
		||||
# design -load gate
 | 
			
		||||
# stat
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,6 @@ design -save gold
 | 
			
		|||
opt_expr
 | 
			
		||||
wreduce
 | 
			
		||||
 | 
			
		||||
dump
 | 
			
		||||
select -assert-count 1 t:$sub r:A_WIDTH=4 r:B_WIDTH=4 r:Y_WIDTH=5 %i %i %i
 | 
			
		||||
 | 
			
		||||
design -stash gate
 | 
			
		||||
| 
						 | 
				
			
			@ -46,3 +45,35 @@ design -import gate -as gate
 | 
			
		|||
 | 
			
		||||
miter -equiv -flatten -make_assert -make_outputs gold gate miter
 | 
			
		||||
sat -verify -prove-asserts -show-ports miter
 | 
			
		||||
 | 
			
		||||
##########
 | 
			
		||||
 | 
			
		||||
# Testcase from: https://github.com/YosysHQ/yosys/commit/25680f6a078bb32f157bd580705656496717bafb
 | 
			
		||||
design -reset
 | 
			
		||||
read_verilog <<EOT
 | 
			
		||||
module top(
 | 
			
		||||
    input clk,
 | 
			
		||||
    input rst,
 | 
			
		||||
    input [2:0] a,
 | 
			
		||||
    output [1:0] b
 | 
			
		||||
);
 | 
			
		||||
    reg [2:0] b_reg;
 | 
			
		||||
    initial begin
 | 
			
		||||
        b_reg <= 3'b0;
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    assign b = b_reg[1:0];
 | 
			
		||||
    always @(posedge clk or posedge rst) begin
 | 
			
		||||
        if(rst) begin
 | 
			
		||||
            b_reg <= 3'b0;
 | 
			
		||||
        end else begin
 | 
			
		||||
            b_reg <= a;
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
endmodule
 | 
			
		||||
EOT
 | 
			
		||||
 | 
			
		||||
proc
 | 
			
		||||
wreduce
 | 
			
		||||
 | 
			
		||||
select -assert-count 1 t:$adff r:ARST_VALUE=2'b00 %i
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
read -vlog2k <<EOT
 | 
			
		||||
read_verilog <<EOT
 | 
			
		||||
module top(input a, output y);
 | 
			
		||||
assign y = !a;
 | 
			
		||||
endmodule
 | 
			
		||||
| 
						 | 
				
			
			@ -10,7 +10,7 @@ design -reset
 | 
			
		|||
 | 
			
		||||
! rm -f write_gzip.v
 | 
			
		||||
! gunzip write_gzip.v.gz
 | 
			
		||||
read -vlog2k write_gzip.v
 | 
			
		||||
read_verilog write_gzip.v
 | 
			
		||||
! rm -f write_gzip.v
 | 
			
		||||
hierarchy -top top
 | 
			
		||||
select -assert-any top
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue