AR# 39999

Spartan-6 FPGA 设计咨询 - 9K Block RAM 初始化支持

描述

当采用 BitGen 生成比特流时,程序会发出如下警告:

WARNING:PhysDesignFules:2410 - 该设计正在使用一个或多个 9K Block RAM (RAMB8BWER)。9K Block RAM 初始化数据(用户定义的和默认的)都可能是不正确的且不应被使用。如需了解更多信息,敬请参考 Xilinx 答复 39999。

使用 ISE 13.1 和以前的软件版本时,对于所有 Spartan-6 器件在配置过程中,9K 模式下使用的 Block RAM (RAMB8BWER) 未能初始化用户指定的数据或默认值(全为零)。 

ISE 设计套件 13.2i 或更高版本中未使用加密处理时,该警告已被修复。

解决方案

此答复记录介绍了 Spartan-6 勘误表(包括 EN148)中列出的 Spartan-6 9K Block RAM 初始化问题:

ISE 设计套件 13.2 以及更高版本:

已在 BitGen 中修复了该问题,并在默认情况下生效。 

修复后可正确配置所有 9K block RAM 的初始值,无论该值是由用户设置还是被设置为默认值零。 

不过,如果进行了加密,BitGen 修复就不起作用。

这种情况下 XST 和 MAP 中还添加了一些其它选项用来实施解决办法。

仍发出 BitGen 警告信息,为用户提供详细说明:

BitGen 修复(默认,Yes):
 

  • 概览 - BitGen 选项 -g INIT_9K:设置(可设置YesNo)被添加到 ISE 设计套件 13.2。
    Yes 代表使用新的比特流格式,No 代表使用原始格式,后者无法正确初始化 9K block RAM。
     
  • 用法 - 如果设计中使用了任何 9K block RAM,就会生成新的比特流 (-g INIT_9K:Yes)。
    否则,生成旧的比特流。
     
  • 限制 - 加密处理不能与新的比特流格式一起使用。
    如果试图对 9K block RAM 进行加密处理, BitGen 就会发出错误信息指向此答复记录 (Xilinx 答复 39999),并说明必须设置 -g INIT_9K:No,以生成比特文件。
     
  • 附加信息 - 新的比特流格式使比特流略微变大(<1%)。
    如欲了解新比特流的大小,敬请参考 Spartan-6 FPGA 配置用户指南 (UG380) 中的比特流概览部分。
    此外,仍发出 BitGen 警告信息(如上所示),作为提示消息指向此答复记录。
    可以安全地忽略此信息。

MAP 开关(默认关闭):

  • MAP 选项:-convert_bram8 被添加到 ISE 设计套件 13.2。
    若使用该选项,其可将设计中所有 9K block RAM 切换至 18K block RAM(如果提供这些资源)。
    此开关可在命令行添加。
    如果您在运行中使用 GUI,那么在高级处理属性(Advanced Process Properties) 中有一个用来输入"其它 Map 命令行选项" 的方框。
    默认情况下该选项未设置。

XST 开关(默认为 Yes):

  • XST 开关:-infer_ramb8 设置(可设置YesNo)被添加到 ISE 设计套件 13.2。
    使用此开关(设置为 No)时,可阻止 9K block RAM 在 XST 中的推理。
    默认情况下设置为 Yes,这在之前所有软件版本中均未更改过。
    如果设置为 No,XST 便不会推理 RAMB8 原语,但任何实例化的 RAMB8 均保留。
    此开关可在命令行添加。
    如果您在运行中使用 GUI,那么在高级处理属性(Advanced Process Properties) 中有一个用来输入"其它 XST 命令行选项" 的方框。

ISE 13.1 和之前的软件版本

描述:

  • 9K 模式下不支持 9K block RAM (RAMB8BWER) 的比特流初始化。
  • 不支持 9K block RAM 的默认初始化值。如果不存在用户指定的初始化值,默认情况是将所有程序内容初始化为零。这在 9K block RAM 中无法保证。
  • 为确定您的设计是否包含 9K block RAM 或 XST 推理的 9K block RAM,敬请查看 MAP 报告并查找 RAMB8BWER。
  • block RAM 的其它操作不受影响:
    • 9K block RAM 的一般读写操作工作正常。
    • 18K block RAM 的初始化、读、写操作工作正常。

规避措施:

  • 使用 ISE Design Suite 13.2.
  • 如果使用或需要 block RAM 的初始内容(用户指定或默认值),应使用 18K block RAM。
    • 对 RAMB16BWER 进行实例化,而非 RAMB8BWER。
  • 在配置后通过写入操作对 9K block RAM 进行初始化(而非使用比特流初始化或使用默认值)。
    • CORE Generator:

      • 如果使用或需要 block RAM 的初始内容(用户指定或默认值),那么 9K 模式中不要使用 Block Memory Generator。
  • 如果对于某个设计以上选项都不可行,敬请联系 Xilinx 技术支持 以获取进一步帮助。

软件影响:

  • XST 基于大小来推理 9K block RAM。如果推理出的 RAM 适合 RAMB8BWER,那么可以使用。
    • 在 12.4 和所有早期软件版本中均为这种方式。
    • 若要改用 18K block RAM,必须对 RAMB16BWER 进行实例化。

受影响的 IP:

相关问题:

链接问答记录

主要问答记录

Answer Number 问答标题 问题版本 已解决问题的版本
34856 Design Advisory Master Answer Record for Spartan-6 FPGA N/A N/A

子答复记录

Answer Number 问答标题 问题版本 已解决问题的版本
40529 Spartan-6 - 9K Block RAM Initialization Not Supported (List of Affected IP) N/A N/A

相关答复记录

AR# 39999
日期 09/02/2014
状态 Active
Type 设计咨询
器件
Tools More Less
IP