首页 > 解决方案 > 如何在火箭芯片生成器中创建内存,合成后将映射为 FPGA 中的块 ram?

问题描述

我尝试使用 Mem(1024,UInt(width=xLen)); 但是在Xilinx vivado中合成生成的verilog文件后,内存映射为分布式ram。理解和编辑生成的 RTL 文件真的很难。是否有任何明确的方法来定义可以推断为块 ram 的内存。?

感谢和问候,

标签: riscvchiselrocket-chip

解决方案


看起来凿子正在优化内存。如果您希望将 Memory 作为单个单元DontTouch ,请尝试使用 DontTouch 构造。另一种解决方案是在 Mem 周围使用包装器。在 Mem 周围创建一个 Module,然后使用 DontTouch 构造,使其保持为一个单元。你确定要使用 Mem 构造吗?Mem 是 Asynchronous ,如果你想要 Synchronous Memory 使用 SyncReadMem Chisel 构造。还要在合成之前和之后检查您的 Verilog 文件,也许 Chisel 不是这里的罪魁祸首。检查 Xilinx Vivado 是否没有对其进行优化。


推荐阅读