mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			244 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			Verilog
		
	
	
	
	
	
			
		
		
	
	
			244 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			Verilog
		
	
	
	
	
	
| 
 | |
| module test_def(a, y);
 | |
| 
 | |
| `define MSB_LSB_SEP :
 | |
| `define get_msb(off, len) ((off)+(len)-1)
 | |
| `define get_lsb(off, len) (off)
 | |
| `define sel_bits(offset, len) `get_msb(offset, len) `MSB_LSB_SEP `get_lsb(offset, len)
 | |
| 
 | |
| input [31:0] a;
 | |
| output [7:0] y;
 | |
| 
 | |
| assign y = a[`sel_bits(16, 8)];
 | |
| 
 | |
| endmodule
 | |
| 
 | |
| // ---------------------------------------------------
 | |
| 
 | |
| module test_ifdef(a, y);
 | |
| 
 | |
| input [2:0] a;
 | |
| output reg [31:0] y;
 | |
| 
 | |
| always @* begin
 | |
| 	y = 0;
 | |
| 
 | |
| 	`undef X
 | |
| 	`ifdef X
 | |
| 		y = y + 42;
 | |
| 	`else
 | |
| 		`undef  A
 | |
| 		`undef  B
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`undef  A
 | |
| 		`define B
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`undef  B
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`define B
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		// ------------------------------------
 | |
| 		`undef  A
 | |
| 		`undef  B
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`undef  A
 | |
| 		`define B
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`undef  B
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`define B
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		// ------------------------------------
 | |
| 		`undef A
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		// ------------------------------------
 | |
| 		`undef A
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 	`endif
 | |
| 
 | |
| 	`define X
 | |
| 	`ifdef X
 | |
| 		`undef  A
 | |
| 		`undef  B
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`undef  A
 | |
| 		`define B
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`undef  B
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`define B
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		// ------------------------------------
 | |
| 		`undef  A
 | |
| 		`undef  B
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`undef  A
 | |
| 		`define B
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`undef  B
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`define B
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`elsif B
 | |
| 			y = (y << 1) | a[1];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		// ------------------------------------
 | |
| 		`undef A
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`ifdef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		// ------------------------------------
 | |
| 		`undef A
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 		`define A
 | |
| 		`ifndef A
 | |
| 			y = (y << 1) | a[0];
 | |
| 		`else
 | |
| 			y = (y << 1) | a[2];
 | |
| 		`endif
 | |
| 	`else
 | |
| 		y = y + 42;
 | |
| 	`endif
 | |
| end
 | |
| 
 | |
| endmodule
 | |
| 
 | |
| `define SIZE 4 // comment supported in this part
 | |
| module test_comment_in_macro ( din_a, dout_a );
 | |
| input [`SIZE-1:0] din_a;
 | |
| output [`SIZE-1:0] dout_a;
 | |
| assign dout_a = din_a | `SIZE'ha;
 | |
| endmodule
 |