interface intf; parameter P; logic [P - 1:0] x; assign x = P; initial $display("intf %b", x); endinterface module mod(intf intf[4]); genvar i; for (i = 0; i < 4; i++) begin : blk for (genvar i = 0; i < 2; i++) begin : blk initial $display("foo %0d", i); end initial $display("mod [%0d] %b", i, intf[i].x); initial begin localparam intf = "shadowed_intf"; $display("mod %s %0d %b", intf, i, mod.intf[i].x); end end for (i = 0; i < 2; i++) begin initial $display("bar %0d", i); end endmodule module top; for (genvar i = 1; i <= 8; i *= 2) begin : blk intf #(i) intf[4](); mod mod(intf); end endmodule