`define DUMP(name) initial $display(`"name W=%b $bits(X)=%0d Y=%b $bits(Z)=%0d`", W, X, Y, Z); module InterfaceA #( parameter W = 9, parameter X = 9, parameter [7:0] Y = 9, parameter Z = 9 ); `DUMP(InterfaceA) endmodule module InterfaceB; parameter W = 9; parameter X = 9; parameter [7:0] Y = 9; parameter Z = 9; `DUMP(InterfaceB) endmodule module ModuleA #( parameter W = 9, parameter X = 9, parameter [7:0] Y = 9, parameter Z = 9 ); `DUMP(ModuleA) endmodule module ModuleB; parameter W = 9; parameter X = 9; parameter [7:0] Y = 9; parameter Z = 9; `DUMP(ModuleB) endmodule module top; `define PARAMS_A #(.Y(6), .X(5), .Z(7), .W(4)) `define PARAMS_B #(0, 1, 2, 3) InterfaceA `PARAMS_A ia1(); InterfaceA `PARAMS_B ia2(); InterfaceB `PARAMS_A ib1(); InterfaceB `PARAMS_B ib2(); ModuleA `PARAMS_A ma1(); ModuleA `PARAMS_B ma2(); ModuleB `PARAMS_A mb1(); ModuleB `PARAMS_B mb2(); endmodule