Невозможно создать "настоящий" массив типов в Verilog

Я пробовал создать массив значений «реального» типа в Icarus Verilog следующим образом:

parameter width = 10;
shortreal b [width-1:0] = {0.0181,0.0487,0.1227,0.1967,0.2273,0.1967,0.1227,0.0487,0.0181};

Выдает следующую ошибку:

error: Cannot assign to array b. Did you forget a word index?

Я просмотрел сообщения об ошибках кода icarus verilog src, и объяснение этому - Особый случай: l-значение - это вся память или срез массива. Фактически это ошибка l-значений. Определите ситуацию, отметив, что количество индексов меньше размеров массива (без упаковки), что, как я предполагаю, означает, что размер индекса массива отличается от заявленного [width-1:0], что неверно, если я понимаю.

Я также пробовал:

parameter width = 10;
parameter [32:0] b [width-1:0] = {0.0181,0.0487,0.1227,0.1967,0.2273,0.1967,0.1227,0.0487,0.0181};

но безуспешно.

Использование Icarus Verilog с флагом -g2012 (для поддержки SV)


person Ginjas    schedule 28.10.2020    source источник


Ответы (1)


Допустимо использовать так называемую конкатенацию массивов только в том случае, если вы заполняете весь массив. В вашем массиве 10 элементов, но справа только 9:

parameter width = 10;
shortreal b [width-1:0] = {0.0181,0.0487,0.1227,0.1967,0.2273,0.1967,0.1227,0.0487,0.0181,0.0181};
person Matthew Taylor    schedule 28.10.2020
comment
По крайней мере, так обстоит дело с коммерческими симуляторами. Икару, похоже, это все равно не нравится. edaplayground.com/x/9AQG - person Matthew Taylor; 28.10.2020
comment
Кроме того, должен ли я затем использовать для этого файловую операцию ввода-вывода? Скажем, поместить числа в .txt, а затем поместить их в память того же размера, что и выше? - person Ginjas; 28.10.2020
comment
@Ginjas Это зависит от вас. Если эти числа записываются в файл из какой-либо другой программы, я бы предположил, что было бы лучше написать некоторый Verilog / SV для чтения этого файла, а не вставлять эти значения в ваш код. (Если только код не был синтезируемым, в чем я сомневаюсь, что ваш синтезатор сможет понять его.) - person Matthew Taylor; 28.10.2020