用于PCI Express的7系列集成块封装器 –  UCF中缺少块RAM LOC约束-Xilinx-AMD社区-FPGA CPLD-ChipDebug

用于PCI Express的7系列集成块封装器 – UCF中缺少块RAM LOC约束

描述

找到版本:v1.1
已解决的版本和其他已知问题:请参阅(Xilinx答复40469)

以下核心配置不会在UCF文件中生成所需的Block RAM LOC约束,从而导致计时问题:

  • x8 gen 1和x4 gen 2高达256字节MPS良好/高性能和512字节MPS,具有良好性能
  • x8 gen 2,x8 gen 1和x4 gen 2,具有512字节MPS和高性能

在块RAM配置选项下的CORE Generator自定义界面的第4页上选择了“性能”设置的“好”或“高”。

MPS代表最大有效载荷大小。这也是在器件功能下的界面的第4页上选择的。

注意 :“找到的版本”是指首次发现问题的版本。早期版本中也可能存在该问题,但尚未执行特定测试来验证早期版本。

要获得正确的Block RAM约束,需要确定器件和使用中的块的基本块RAM LOC约束。您可以通过生成针对正在使用的器件和程序包的单独替代核心来实现此目的。对于替代核心,将其定位为具有256 MPS的x8 gen 2。生成替代核心后,打开example_design目录中的UCF文件。

由于块RAM位置根据器件和正在使用的块而变化,因此需要XY位置的起点。对块RAM实例“pcie_brams_tx / brams [1]”使用LOC约束。

对于仅需要4个块的RAM,即x8 gen 1和x4 gen 2,高达256字节MPS Good / High Performance和512字节MPS,具有良好性能的组合,将新生成的substitutecore中的约束直接复制到现有UCF中。作为参考,此配置使用以下Block RAM位置编号.X <a>是起始X位置值,Y <b>是来自替代x8 gen 2核心的起始Y位置值,用于正在使用的器件和包。

x8 gen 1和x4 gen 2高达256字节MPS良好/高性能和512字节MPS,具有良好性能

pcie_brams_tx / brams [1] …. X <a> Y <b>
pcie_brams_tx / brams [0] …. X <a> Y <b + 1>
pcie_brams_rx / brams [1] …. X <a> Y <b + 3>
pcie_brams_rx / brams [0] …. X <a> Y <b + 4>

对于具有512字节MPS和高性能核心的x8 gen 2,x8 gen 1和x4 gen 2,它们需要创建8个Block RAM约束。

使用替代核心UCF中的* pcie_brams_tx / brams [1]块RAM实例的约束,应用以下算法来获取其余Block RAM的位置。同样,X <a>是起始X位置值,Y <b>是来自使用中的器件和包的替代x8 gen 2核心的起始Y位置值。

x8 gen 2,x8 gen 1和x4 gen 2,具有512字节MPS和高性能

pcie_brams_tx / brams [3] …. X <a> Y <b>
pcie_brams_tx / brams [2] …. X <a> Y <b + 1>
pcie_brams_tx / brams [1] …. X <a> Y <b + 2>
pcie_brams_tx / brams [0] …. X <a> Y <b + 3>
pcie_brams_rx / brams [3] …. X <a> Y <b + 4>
pcie_brams_rx / brams [2] …. X <a> Y <b + 5>
pcie_brams_rx / brams [1] …. X <a> Y <b + 6>
pcie_brams_rx / brams [0] …. X <a + 1> Y <b + 5>

以上集成块X0Y0和X0Y1时,以上适用于除485T以外的所有器件。在这些情况下,使用以下内容。
注意thepcie_brams_rx / brams [0] X约束是减1而不是加1:

pcie_brams_tx / brams [3] …. X <a> Y <b>
pcie_brams_tx / brams [2] …. X <a> Y <b + 1>
pcie_brams_tx / brams [1] …. X <a> Y <b + 2>
pcie_brams_tx / brams [0] …. X <a> Y <b + 3>
pcie_brams_rx / brams [3] …. X <a> Y <b + 4>
pcie_brams_rx / brams [2] …. X <a> Y <b + 5>
pcie_brams_rx / brams [1] …. X <a> Y <b + 6>
pcie_brams_rx / brams [0] …. X <a-1> Y <b + 5>

例子

示例1:x8 gen 1设计的块RAM约束使用256字节MPS与集成块X0Y0对齐xc7k325t-fbg676FPGA。

  1. 为xc7k325t-fbg676定位块X0Y0生成具有256 MPS的x8 gen 2设计。
  2. 打开UCF并复制Block RAM位置约束。
  3. 生成x8 gen 1核心并将步骤2中复制的约束粘贴到UCF中。

示例2:使用具有高性能的512字节MPS和集成块X0Y0定位xc7k325t-fbg676器件的x8第2代设计的块RAM约束。此配置需要8个Block RAM。

  1. 为xc7k325t-fbg676目标集成块X0Y0生成具有256 MPS的x8 gen 2设计。
  2. 打开UCF并找到Block RAM位置约束。请注意,已缩短约束以使其易于阅读,但必须在UCF文件中使用整个实例路径。

    INST“… / pcie_bram_top / pcie_brams_rx / brams [0] .ram / …”LOC = RAMB36_X4Y34;
    INST“… / pcie_bram_top / pcie_brams_rx / brams [1] .ram / …”LOC = RAMB36_X4Y33;
    INST“… / pcie_bram_top / pcie_brams_tx / brams [0] .ram / …”LOC = RAMB36_X4Y31;
    INST“… / pcie_bram_top / pcie_brams_tx / brams [1] .ram / …”LOC = RAMB36_X4Y30;

  3. 使用约束forpcie_brams_tx / brams [1]作为基本约束,创建新约束。当需要8个块RAM时,基本约束用于pcie_brams_tx / brams [3]。那么约束是:

    INST“… / pcie_bram_top / pcie_brams_tx / brams [3] .ram / …”LOC = RAMB36_X4Y30;
    INST“… / pcie_bram_top / pcie_brams_tx / brams [2] .ram / …”LOC = RAMB36_X4Y31;
    INST“… / pcie_bram_top / pcie_brams_tx / brams [1] .ram / …”LOC = RAMB36_X4Y32;
    INST“… / pcie_bram_top / pcie_brams_tx / brams [0] .ram / …”LOC = RAMB36_X4Y33;
    INST“… / pcie_bram_top / pcie_brams_rx / brams [3] .ram / …”LOC = RAMB36_X4Y34;
    INST“… / pcie_bram_top / pcie_brams_rx / brams [2] .ram / …”LOC = RAMB36_X4Y35;
    INST“… / pcie_bram_top / pcie_brams_rx / brams [1] .ram / …”LOC = RAMB36_X4Y36;
    INST“… / pcie_bram_top / pcie_brams_rx / brams [0] .ram / …”LOC = RAMB36_X5Y35;

如果您对这些步骤有任何疑问或问题,请使用Xilinx技术支持和参考(Xilinx答复43107)打开WebCase。此外,包括您计划使用的核心的XCO文件。当生成核心并且作为<core of core>位于项目目录中时,由CORE Generator工具创建XCO文件 XCO。

修订记录

12/06/2011 – 增加了对AR 40469的版本解析参考
07/14/2011 – 初始版本

请登录后发表评论

    没有回复内容