да, вы можете использовать interconnect с типом struct. Однако, чтобы объявить структуру как тип порта, вам нужно использовать typedef
(как в ответе Daves).
Кроме того, смысл interconnect
состоит в том, чтобы обеспечить соединение без модулей между модулями, поэтому нет смысла использовать его в одном модуле.
С лрм 6.6.8:
Сеть или порт, объявленные как межсоединения (сеть или порт межсоединения), указывают на типизированную или общую сеть.
Такие сети или порты могут выражать только сетевой порт и терминальные соединения и не должны использоваться ни в каких
процедурный контекст, ни в каких непрерывных или процедурных непрерывных назначениях Соединительная сеть или
порт не должен использоваться ни в каком выражении, кроме выражения net_lvalue, в котором все сети или порты в
Выражение также являются взаимосвязанными сетями. Массив межсоединений должен считаться действительным, даже если разные биты в массиве разрешаются в разные типы сетей, как показано в следующем примере.
В стандарте есть несколько примеров, вот еще один простой пример использования взаимосвязи со структурами:
package is_pkg;
typedef struct {
bit a,b,c;
} S;
endpackage:is_pkg
module top();
interconnect bus;
tb tb(bus);
dut dut(bus);
endmodule // top
module tb import is_pkg::*; (output S so);
initial
so = '{0,1,1};
endmodule // tb
module dut import is_pkg::*; (input S si);
always @*
$display("struct: %b%b%b", si.a, si.b, si.c);
endmodule // dut