mirror of https://github.com/zachjs/sv2v.git
49 lines
1.0 KiB
Systemverilog
49 lines
1.0 KiB
Systemverilog
`define DUMP(name) initial $display(`"name W=%b $bits(X)=%0d Y=%b $bits(Z)=%0d", W, $bits(X), Y, $bits(Z));
|
|
|
|
interface InterfaceA #(
|
|
parameter W,
|
|
parameter type X,
|
|
parameter byte Y,
|
|
parameter type Z
|
|
);
|
|
`DUMP(InterfaceA)
|
|
endinterface
|
|
|
|
interface InterfaceB;
|
|
parameter W;
|
|
parameter type X;
|
|
parameter byte Y;
|
|
parameter type Z;
|
|
`DUMP(InterfaceB)
|
|
endinterface
|
|
|
|
module ModuleA #(
|
|
parameter W,
|
|
parameter type X,
|
|
parameter byte Y,
|
|
parameter type Z
|
|
);
|
|
`DUMP(ModuleA)
|
|
endmodule
|
|
|
|
module ModuleB;
|
|
parameter W;
|
|
parameter type X;
|
|
parameter byte Y;
|
|
parameter type Z;
|
|
`DUMP(ModuleB)
|
|
endmodule
|
|
|
|
module top;
|
|
`define PARAMS_A #(.Y(6), .X(logic [4:0]), .Z(logic [6:0]), .W(4))
|
|
`define PARAMS_B #(0, logic, 2, logic [2:0])
|
|
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
|