mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			212 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
read_verilog << EOT
 | 
						|
 | 
						|
module top(input [3:0] a, input en, output [7:0] d);
 | 
						|
 | 
						|
always @*
 | 
						|
	if (en)
 | 
						|
		case(a)
 | 
						|
			4'h0: d <= 8'h12;
 | 
						|
			4'h1: d <= 8'h34;
 | 
						|
			4'h2: d <= 8'h56;
 | 
						|
			4'h3: d <= 8'h78;
 | 
						|
			4'h4: d <= 8'h9a;
 | 
						|
			4'h5: d <= 8'hbc;
 | 
						|
			4'h6: d <= 8'hde;
 | 
						|
			4'h7: d <= 8'hff;
 | 
						|
			4'h8: d <= 8'h61;
 | 
						|
			4'h9: d <= 8'h49;
 | 
						|
			4'ha: d <= 8'h36;
 | 
						|
			4'hb: d <= 8'h81;
 | 
						|
			4'hc: d <= 8'h8c;
 | 
						|
			4'hd: d <= 8'ha9;
 | 
						|
			4'he: d <= 8'h99;
 | 
						|
			4'hf: d <= 8'h51;
 | 
						|
		endcase
 | 
						|
	else
 | 
						|
		d <= 0;
 | 
						|
 | 
						|
endmodule
 | 
						|
 | 
						|
EOT
 | 
						|
 | 
						|
hierarchy -auto-top
 | 
						|
 | 
						|
design -save orig
 | 
						|
proc
 | 
						|
select -assert-count 1 t:$memrd_v2 a:src %i
 | 
						|
memory
 | 
						|
opt_dff
 | 
						|
design -stash postopt
 | 
						|
design -load orig
 | 
						|
proc -norom
 | 
						|
design -stash preopt
 | 
						|
 | 
						|
equiv_opt -assert -run prepare: dummy
 | 
						|
 | 
						|
 | 
						|
 | 
						|
design -reset
 | 
						|
 | 
						|
read_verilog << EOT
 | 
						|
 | 
						|
module top(input [3:0] a, input en, output [7:0] d);
 | 
						|
 | 
						|
always @*
 | 
						|
	if (en)
 | 
						|
		case(a)
 | 
						|
			4'h0: d <= 8'h12;
 | 
						|
			4'h1: d <= 8'h34;
 | 
						|
			4'h2: d <= 8'h56;
 | 
						|
			4'h3: d <= 8'h78;
 | 
						|
			4'h4: d <= 8'h9a;
 | 
						|
			4'h5: d <= 8'hbc;
 | 
						|
			4'h6: d <= 8'hde;
 | 
						|
			4'h7: d <= 8'hff;
 | 
						|
			4'h8: d <= 8'h61;
 | 
						|
			4'h9: d <= 8'h49;
 | 
						|
			4'ha: d <= 8'h36;
 | 
						|
			4'hb: d <= 8'h81;
 | 
						|
			4'hc: d <= 8'h8c;
 | 
						|
			default: d <= 8'h11;
 | 
						|
		endcase
 | 
						|
	else
 | 
						|
		d <= 0;
 | 
						|
 | 
						|
endmodule
 | 
						|
 | 
						|
EOT
 | 
						|
 | 
						|
hierarchy -auto-top
 | 
						|
 | 
						|
design -save orig
 | 
						|
proc
 | 
						|
select -assert-count 1 t:$memrd_v2 a:src %i
 | 
						|
memory
 | 
						|
opt_dff
 | 
						|
design -stash postopt
 | 
						|
design -load orig
 | 
						|
proc -norom
 | 
						|
design -stash preopt
 | 
						|
 | 
						|
equiv_opt -assert -run prepare: dummy
 | 
						|
 | 
						|
 | 
						|
 | 
						|
design -reset
 | 
						|
 | 
						|
read_verilog << EOT
 | 
						|
 | 
						|
module top(input [31:0] a, input en, output [7:0] d);
 | 
						|
 | 
						|
always @*
 | 
						|
	if (en)
 | 
						|
		case(a)
 | 
						|
			0: d <= 8'h12;
 | 
						|
			1: d <= 8'h34;
 | 
						|
			2: d <= 8'h56;
 | 
						|
			3: d <= 8'h78;
 | 
						|
			4: d <= 8'h9a;
 | 
						|
			5: d <= 8'hbc;
 | 
						|
			6: d <= 8'hde;
 | 
						|
			7: d <= 8'hff;
 | 
						|
			8: d <= 8'h61;
 | 
						|
			9: d <= 8'h49;
 | 
						|
			10: d <= 8'h36;
 | 
						|
			11: d <= 8'h81;
 | 
						|
			12: d <= 8'h8c;
 | 
						|
			default: d <= 8'h11;
 | 
						|
		endcase
 | 
						|
	else
 | 
						|
		d <= 0;
 | 
						|
 | 
						|
endmodule
 | 
						|
 | 
						|
EOT
 | 
						|
 | 
						|
hierarchy -auto-top
 | 
						|
 | 
						|
design -save orig
 | 
						|
proc
 | 
						|
select -assert-count 1 t:$memrd_v2 a:src %i
 | 
						|
memory
 | 
						|
opt_dff
 | 
						|
design -stash postopt
 | 
						|
design -load orig
 | 
						|
proc -norom
 | 
						|
design -stash preopt
 | 
						|
 | 
						|
equiv_opt -assert -run prepare: dummy
 | 
						|
 | 
						|
 | 
						|
design -reset
 | 
						|
 | 
						|
read_verilog << EOT
 | 
						|
 | 
						|
module top(input [3:0] a, input en, output [7:0] d);
 | 
						|
 | 
						|
always @*
 | 
						|
	if (en)
 | 
						|
		case(a)
 | 
						|
			'h0: d <= 8'h12;
 | 
						|
			'h1: d <= 8'h34;
 | 
						|
			'h2: d <= 8'h56;
 | 
						|
			'h3: d <= 8'h78;
 | 
						|
			'h4: d <= 8'h9a;
 | 
						|
			'h5: d <= 8'hbc;
 | 
						|
			'h6: d <= 8'hde;
 | 
						|
			'h7: d <= 8'hff;
 | 
						|
			'h8: d <= 8'h61;
 | 
						|
			'h9: d <= 8'h49;
 | 
						|
			'ha: d <= 8'h36;
 | 
						|
			'hb: d <= 8'h81;
 | 
						|
			'hc: d <= 8'h8c;
 | 
						|
			'hd: d <= 8'ha9;
 | 
						|
			'he: d <= 8'h99;
 | 
						|
			'hf: d <= 8'h51;
 | 
						|
		endcase
 | 
						|
	else
 | 
						|
		d <= 0;
 | 
						|
 | 
						|
endmodule
 | 
						|
 | 
						|
EOT
 | 
						|
 | 
						|
hierarchy -auto-top
 | 
						|
 | 
						|
design -save orig
 | 
						|
proc
 | 
						|
select -assert-count 1 t:$memrd_v2 a:src %i
 | 
						|
memory
 | 
						|
opt_dff
 | 
						|
design -stash postopt
 | 
						|
design -load orig
 | 
						|
proc -norom
 | 
						|
design -stash preopt
 | 
						|
 | 
						|
equiv_opt -assert -run prepare: dummy
 | 
						|
 | 
						|
 | 
						|
design -reset
 | 
						|
 | 
						|
read_rtlil <<EOT
 | 
						|
 | 
						|
module \m
 | 
						|
  wire width 3 input 1 \a
 | 
						|
 | 
						|
  process \p
 | 
						|
    switch \a
 | 
						|
      case 3'000
 | 
						|
      case 3'001
 | 
						|
      case 3'010
 | 
						|
      case 3'011
 | 
						|
      case 3'100
 | 
						|
      case 3'101
 | 
						|
      case 3'110
 | 
						|
      case 3'111
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
EOT
 | 
						|
 | 
						|
proc_rom
 |