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

Setting entire register array to zero

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

logic [WIDTH-2:0] numelem [0:MAXBITS-1];

有没有一种方法可以让我基本上做到 numelem <= {0,0,0,0,...} 但对于通用尺寸?该方法最好是非阻塞的,因为我需要在 always_ff 块内进行分配。谢谢

我赞成使用老式的 for 循环:

int c;
   ...
   for (c=0; c<MAXBITS; c=c+1) numelem [c] <= 'b0;

有几种方法可以实现:

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

int i;
...
for (i = 0; i < MAXBITS; i = i + 1) begin
  numelem[i] <= '0;
end

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

numelem <= '{default: '0};

3) 如果不需要模拟'bx'bz状态,请使用bit类型而不是logic类型; bit 类型的变量被初始化为 'b0 而不是 'bx.

logic [WIDTH-2:0] numelem [0:MAXBITS-1] = '{default:'0};

补充一下也可用于比较的另一个选项:

signal = {$bits(signal){1'b0}};
signal == {$bits(signal){1'b0}}; // This will evaluate to true