当 ISE 将 Verilog 中实例化的 2D 存储器映射到 BRAM 时,条件是什么?
What are the conditions when a 2D memory instantiated in Verilog is mapped to BRAM by ISE?
在多个论坛中搜索,我没有找到全面的答案。
我想了解一下,ISE 合成器何时将 [PARAM1:0] ram [PARAM2:0]
推断为块 RAM,何时不是?
此条件列表可能不完整:
- 尺码
如果内存太小,ISE 将使用分布式 RAM (LUT-RAM) 而不是 BlockRAM。内存的大小/区域必须可映射到单个或一组 BlockRAM。单个 BlockRAM 的每个数据端口可以有 8、9、16、18、32、36、64、72 位。如果内存行数匹配,其他大小也是可能的。
端口
BlockRAM 支持:
- 单端口 (SP),
- 简单双端口 (SDP),
- 增强型简单双端口 (ESDP) 和
- 真双端口 (TDP)
回忆。一个写端口和 n 个读端口的组合也是可能的。
- 重置
BlockRAM 不支持重置。所以如果你的内存可以reset,如果可以推断为BRAM。
- 时钟启用 (CE)、写入启用 (WE)、字节写入启用 (BWE)
BlockRAM 支持 CE 和 WE,但通常不支持 BWE。
- 时机
内存必须从注册地址同步写入和同步读取或异步读取。
- 输出寄存器(OUT_REG)
输出寄存器是可选的,但可以改善整体时序。合成器可能会将 OUT_REG 从逻辑移动到具有嵌入式输出寄存器的 BlockRAM。
我们的开源库 PoC 包含 4 个可能的 on-chip RAM implementations written in generic VHDL code, which can be mapped to Xilinx BlockRAMs. I assume you can read and understand these VHDL snippets, to translate it into Verilog code :). Alternatively, Xilinx offers a synthesis guide(UG 626,v14.4,第 73 页)),其中列出了可综合代码的 VHDL 和 Verilog 设计模式。
在多个论坛中搜索,我没有找到全面的答案。
我想了解一下,ISE 合成器何时将 [PARAM1:0] ram [PARAM2:0]
推断为块 RAM,何时不是?
此条件列表可能不完整:
- 尺码
如果内存太小,ISE 将使用分布式 RAM (LUT-RAM) 而不是 BlockRAM。内存的大小/区域必须可映射到单个或一组 BlockRAM。单个 BlockRAM 的每个数据端口可以有 8、9、16、18、32、36、64、72 位。如果内存行数匹配,其他大小也是可能的。 端口
BlockRAM 支持:- 单端口 (SP),
- 简单双端口 (SDP),
- 增强型简单双端口 (ESDP) 和
- 真双端口 (TDP)
回忆。一个写端口和 n 个读端口的组合也是可能的。
- 重置
BlockRAM 不支持重置。所以如果你的内存可以reset,如果可以推断为BRAM。 - 时钟启用 (CE)、写入启用 (WE)、字节写入启用 (BWE)
BlockRAM 支持 CE 和 WE,但通常不支持 BWE。 - 时机
内存必须从注册地址同步写入和同步读取或异步读取。 - 输出寄存器(OUT_REG)
输出寄存器是可选的,但可以改善整体时序。合成器可能会将 OUT_REG 从逻辑移动到具有嵌入式输出寄存器的 BlockRAM。
我们的开源库 PoC 包含 4 个可能的 on-chip RAM implementations written in generic VHDL code, which can be mapped to Xilinx BlockRAMs. I assume you can read and understand these VHDL snippets, to translate it into Verilog code :). Alternatively, Xilinx offers a synthesis guide(UG 626,v14.4,第 73 页)),其中列出了可综合代码的 VHDL 和 Verilog 设计模式。