在Verilog中实例化的2D内存被ISE映射到BRAM的条件是什么?

时间:2016-07-17 02:37:41

标签: verilog xilinx-ise

在多个论坛中搜索时,我找不到全面的答案。

我想了解,ISE合成器何时将[PARAM1:0] ram [PARAM2:0]推断为Block RAM,何时不推?

1 个答案:

答案 0 :(得分:1)

此条件列表可能不完整:

  • 大小
    如果内存很小,ISE将使用分配的RAM(LUT-RAM)而不是BlockRAM。内存的大小/区域必须可映射到单个或一组BlockRAM。单个BlockRAM每个数据端口可以有8,9,16,18,32,36,64,72位。如果内存行数匹配,则可以使用其他大小。
  • <强>端口
    BlockRAM支持:

    • 单端口(SP),
    • 简单双端口(SDP),
    • 增强型简单双端口(ESDP)和
    • 真双端口(TDP)

    存储器。也可以与一个写端口和n个读端口组合。

  • 重置
    BlockRAM不支持重置。所以如果你的记忆可以重置,那么可以推断为BRAM。
  • ClockEnable(CE),Write-Enable(WE),Byte-Write-Enable(BWE)
    BlockRAM支持CE和WE,但通常不支持BWE。
  • 时序
    必须同步写入内存,并从注册的地址同步读取或异步读取。
  • 输出寄存器(OUT_REG)
    输出寄存器是可选的,但可以改善整体时序。合成器可能会将OUT_REG从逻辑移动到BlockRAM中,BlockRAM具有嵌入的输出寄存器。

我们的开源库PoC包含4个用通用VHDL代码编写的on-chip RAM实现,可以映射到Xilinx BlockRAM。我假设您可以阅读并理解这些VHDL片段,将其转换为Verilog代码:)。或者,Xilinx提供synthesis guide(UG 626,v14.4,第73页),其中列出了可合成代码的VHDL和Verilog设计模式。