我正在尝试开发一个可以将两个接口之一作为端口的模块。模块的行为变化非常小,具体取决于使用哪两个接口,因此我希望将其作为单个模块实现。
module m(
input logic clock,
input logic reset,
`ifdef IF1
if1.receiver link
`else
if2.receiver link
`endif
...
);
上面的代码工作正常,但我想选择参数,因为我可能想在设计中实例化该模块的不同版本。
这样的事情:
module m #(parameter IF = 0)(
input logic clock,
input logic reset,
generate
if (IF1)
if1.receiver link
else
if2.receiver link
endgenerate
...
);
现在第二个例子不起作用但是这可以在system-verilog中实现吗?我在语言规范中找不到明确的答案。
答案 0 :(得分:1)
您可以使用通用interface
端口,而不是指定if1
或if2
。然后,只要所有对名称的引用对所有类型都有效,您就可以将任何类型的接口连接到该端口。所以在你的例子中,两个接口都需要一个接收器模口。