我创建了一个传递参数 N 的模块。 N 将用于创建 N-2 个信号,第一个信号的宽度为 1,下一个信号的宽度为 2,直到第 N-1 个信号的宽度为 N-1。我已经尝试过:(似乎不起作用)
for (genvar num = 2;num < N;num++) begin
logic [num-2:0] signal[num];
end
我想我可以(虽然我不知道如何)使用generate来创建N-2个寄存器元素,但我不认为generate在类型定义中是合法的。
当你说某件事不起作用时,你需要解释哪里出了问题。您可能遇到问题,因为您没有命名生成块
for (genvar num = 2;num < N;num++) begin : NN
logic [num-2:0] signal;
end
这创造了
NN[2].signal // 1 bit
NN[3].signal // 2 bits
...
NN[N-1].signal // N-1 bits
请注意,您不能引用
NN[i]
,其中 i
是变量;它必须是一个常量或另一个 genvar。