最近一段时间,我在一个使用查找表数组并让 yosys 将它们推断为块 ram 的项目中遇到了麻烦。Yosys 一直认为我的阵列中的一个或另一个应该使用逻辑单元来实现。
例子:
reg signed [11:0] dynamicBuffer [0:2047];
被推断为 IceStorm LC,因此很快超出了我的逻辑单元预算。
Info: Device utilisation:
Info: ICESTORM_LC: 83524/ 7680 1087%
Info: ICESTORM_RAM: 18/ 32 56%
Info: SB_IO: 36/ 256 14%
Info: SB_GB: 8/ 8 100%
Info: ICESTORM_PLL: 2/ 2 100%
Info: SB_WARMBOOT: 0/ 1 0%
我读过一个数组需要有一个注册的输出,或者 Yosys 不认为它是 ram(这是真的吗?)我试图修改一些东西,以便我的数组最终在每个时钟计数时路由到一个寄存器。但我仍然无法让它工作。使用多个阵列,将它们一个一个复制到另一个,并让 yosys 将它们推断为块 RAM 的正确方法是什么?我需要避免什么?