Я пытаюсь разработать модуль, который может иметь один из двух интерфейсов в качестве портов. Поведение модуля очень мало меняется в зависимости от того, какой из двух интерфейсов используется, поэтому я хотел бы реализовать его как один модуль.
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? Я не могу найти окончательный ответ в спецификации языка.