如何生成多个邮箱,例如使用generate endgenerate 以及我如何为他们提供数据。
我试过
generate
for (genvar i=0; i<10; i++) begin
mailbox test = new();
end
endgenerate
它创建了10个邮箱 但后来我不知道如何将数据放到其中一个 我会想象像
这样的东西test[4].put(input);
但它不起作用
任何想法??
答案 0 :(得分:2)
每当你生成一个for循环时,你需要命名该块,它是块名称,它被扩展为编号的块。生成
for (genvar I=0; I<10; i++) begin : block_A
mailbox test;
end : block_a
endgenerate
然后,您可以参考block_a[0].test
,block_a[1].test
,。等。
但是您可能不希望使用generate
块,因为您不允许使用变量来索引块,因为块不是常规数组。
您可以简单地声明一个常规邮箱。
mailbox #(int) test[10];
initial begin
foreach(mailbox[ii]) mailbox[ii] = new;
我还建议您根据要投入的邮件类型对邮箱进行参数化。
答案 1 :(得分:0)
感谢工具师给我的建议,这里是每个有需要的人的解决方案:
// first make an array of mailboxes
mailbox slave_mailbox [TB_SLAVES];
int out;
initial begin
for (int i = 0; i < TB_SLAVES; i++) begin
// then create the object for every mailbox
slave_mailbox[i] = new();
end
// testing if it works
slave_mailbox[0].try_put(1);
slave_mailbox[0].try_get(out);
$display("got %0d",out);
end