问题描述
我尝试用以下方式在Icarus Verilog中创建“实型”值数组:
parameter width = 10;
shortreal b [width-1:0] = {0.0181,0.0487,0.1227,0.1967,0.2273,0.0181};
给出以下错误:
error: Cannot assign to array b. Did you forget a word index?
我经历了icarus verilog src代码错误消息,对此的解释是“特殊情况:l值是整个内存或数组
slice”。实际上,这是L值错误。
通过注意索引计数是否小于
数组尺寸(未包装)”,我认为这意味着数组索引的大小与声明的[width-1:0]
不同,如果我理解,那是不正确的。
我也尝试过:
parameter width = 10;
parameter [32:0] b [width-1:0] = {0.0181,0.0181};
但没有成功。
使用带有-g2012
标志的Icarus Verilog(用于SV支持)
解决方法
仅当填充整个数组时才使用所谓的数组连接。您的数组有10个元素,但右侧只有9个元素:
parameter width = 10;
shortreal b [width-1:0] = {0.0181,0.0487,0.1227,0.1967,0.2273,0.0181,0.0181};