在SystemVerilog中如何使用参数来实例化多个信号和寄存器?

问题描述 投票:0回答:1

我创建了一个传递参数 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在类型定义中是合法的。

system-verilog
1个回答
0
投票

当你说某件事不起作用时,你需要解释哪里出了问题。您可能遇到问题,因为您没有命名生成块

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。

© www.soinside.com 2019 - 2024. All rights reserved.