Я пробовал создать массив значений «реального» типа в 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)