“错误”;是否映射到未扩展内存;在yosys verilog中使用索引部件选择时

“错误”;是否映射到未扩展内存;在yosys verilog中使用索引部件选择时,verilog,yosys,Verilog,Yosys,我很难理解我在Yosys遇到的这个错误 我复制了下面的相关代码 reg signed [15:0] wb1 [0:131071]; reg signed [27:0] currentAttrWB [0:4094]; always @(posedge clk) currentAttrWB <= wb1[attrWBoffset +: 4094]; reg签名[15:0]wb1[0:131071]; reg签名为[27:0]currentAttrWB[0:4094]; 始终@(pose

我很难理解我在Yosys遇到的这个错误

我复制了下面的相关代码

reg signed [15:0] wb1 [0:131071]; 
reg  signed [27:0] currentAttrWB [0:4094];

always @(posedge clk)
currentAttrWB <= wb1[attrWBoffset +: 4094];
reg签名[15:0]wb1[0:131071];
reg签名为[27:0]currentAttrWB[0:4094];
始终@(posedge clk)

currentAttrWBYosys不支持内存,即定义为
reg[x:0]mem[0:y]的任何内容位于作业的左侧。我不确定这是Yosys限制还是Verilog限制,但这样的模式对于每次访问一个元素的FPGA应用程序来说没有什么意义

如果Yosys能够实现这种模式,它就必须将内存映射到LUT和触发器,而不是使用专用RAM资源,因为块RAM不可能同时传输。有超过200万个触发器的FPGA非常少,如果你有一个,你可能不想用这样的东西填充它


您可能需要的是一个计数器,它从0计数到4094,并在每个时钟周期复制一个条目,直到完成为止。

谢谢David。这就是我最后做的。谢谢你澄清为什么它不起作用。还有谁收到这个错误吗。我是在一个拼写错误中得到它的,它在注册名的右边声明了[n:m](reg-foo[1:0])。移到左边(reg[1:0]foo)并修复了它。