将整个寄存器数组设置为零

rip*_*ipa 1 verilog system-verilog

我想将数组中的所有寄存器设置为零。但是,我已经参数化了数组的大小:

logic [WIDTH-2:0] numelem [0:MAXBITS-1];
Run Code Online (Sandbox Code Playgroud)

numelem <= {0,0,0,0,...}除了通用尺寸之外,有什么方法我基本上可以做到吗?该方法最好需要是非阻塞的,因为我需要在always_ff块内进行赋值。谢谢。

Unn*_*Unn 5

有几种方法可以实现这一目标:

1)按照Oldfart的建议,使用for循环;它简单易懂

int i;
...
for (i = 0; i < MAXBITS; i = i + 1) begin
  numelem[i] <= '0;
end
Run Code Online (Sandbox Code Playgroud)

2) 使用带有default关键字的数组赋值模式:

numelem <= '{default: '0};
Run Code Online (Sandbox Code Playgroud)

3)如果不需要模拟或者状态,就用bittype代替type;类型的变量被初始化为而不是.logic'bx'bzbit'b0'bx