Установка всего массива регистров в ноль - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу установить все регистры в массиве на ноль. Тем не менее, я параметризовал размер массива:

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

Есть ли способ, где я мог бы по существу сделать numelem <= {0,0,0,0,...}, но для универсального c размера? Этот метод предпочтительно должен быть неблокирующим, поскольку мне нужно выполнить назначение в блоке always_ff. Спасибо.

Ответы [ 3 ]

3 голосов
/ 13 февраля 2020

Есть несколько способов добиться этого:

1) Как предложил Олдфарт, используйте цикл for; его просто и легко понять

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

2) Использовать шаблон назначения массива с ключевым словом default:

numelem <= '{default: '0};

3) Использовать тип bit вместо типа logic если вам не нужно имитировать 'bx или 'bz состояния; переменные типа bit инициализируются в 'b0 вместо 'bx.

1 голос
/ 14 февраля 2020
logic [WIDTH-2:0] numelem [0:MAXBITS-1] = '{default:'0};
1 голос
/ 13 февраля 2020

Я за использование старомодного слова l oop:

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