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

时间:2020-02-13 18:16:06

标签: verilog system-verilog

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

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

有没有一种方法可以使我基本完成numelem <= {0,0,0,0,...},但只需要通用大小?该方法最好是非阻塞的,因为我需要在always_ff块内进行分配。谢谢。

3 个答案:

答案 0 :(得分:3)

有几种方法可以做到这一点:

1)如Oldfart所建议,使用for循环;简单易懂

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

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

numelem <= '{default: '0};

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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