mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	This is accomplished by generating a unique name for the genvar, renaming references to the genvar only in the loop's initialization, guard, and incrementation, and finally adding a localparam inside the loop body with the original name so that the genvar can be shadowed as expected.
		
			
				
	
	
		
			28 lines
		
	
	
	
		
			591 B
		
	
	
	
		
			Systemverilog
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
	
		
			591 B
		
	
	
	
		
			Systemverilog
		
	
	
	
	
	
`default_nettype none
 | 
						|
 | 
						|
module gate(x, y);
 | 
						|
    output reg [15:0] x, y;
 | 
						|
    if (1) begin : gen
 | 
						|
        integer x, y;
 | 
						|
        for (genvar x = 0; x < 2; x++)
 | 
						|
            if (x == 0)
 | 
						|
                initial gen.x = 10;
 | 
						|
        assign y = x + 1;
 | 
						|
    end
 | 
						|
    initial x = gen.x;
 | 
						|
    assign y = gen.y;
 | 
						|
endmodule
 | 
						|
 | 
						|
module gold(x, y);
 | 
						|
    output reg [15:0] x, y;
 | 
						|
    if (1) begin : gen
 | 
						|
        integer x, y;
 | 
						|
        genvar z;
 | 
						|
        for (z = 0; z < 2; z++)
 | 
						|
            if (z == 0)
 | 
						|
                initial x = 10;
 | 
						|
        assign y = x + 1;
 | 
						|
    end
 | 
						|
    initial x = gen.x;
 | 
						|
    assign y = gen.y;
 | 
						|
endmodule
 |