Можно ли передавать типы почтовых ящиков в SystemVerilog с помощью обычного модуля ввода-вывода? Большинство примеров почтовых ящиков в книгах показывают, что они используются только внутри классов SystemVerilog. Например, могу ли я сделать следующее? Это законно?
module driver(
output mailbox mb
);
mailbox mbx = new(2);
initial begin
for (int i=0; i < 5; i++) begin
#1 mbx.put(i);
$display ("[%0t] Put #%0d, size=%0d",
$time, i, mbx.num());
end
end
endmodule
module sink(
input mailbox mb
);
initial begin
forever begin
int idx;
#2 mbx.get (idx);
$display ("[%0t] Got item #%0d, size=%0d",
$time, idx, mbx.num());
end
end
endmodule
module top;
mailbox mbx;
source(mbx);
sink(mbx);
endmodule