文章 ID: 000085111 内容类型: 故障排除 上次审核日期: 2021 年 08 月 28 日

项目中的 .qip/.sdc 文件在打开项目或在 Quartus® II 软件版本 12.1 SP1 中重新生成 IP 时重新排序。

环境

  • 英特尔® Quartus® II 订阅版
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    关键问题

    说明

    由于 Quartus® II 软件版本 12.1 SP1 出现问题,意外地可以更改项目\的 Quartus II 设置文件(.qsf)中的订购。

    此行为可能会在打开现有项目或运行升级 IP 命令时发生。

    如果您的项目具有 Synopsys Design Constraint(.sdc)文件顺序依赖性,重新排序可能会导致意外的频率设置或其他时序分配。可能有一个具有多个级别 Quartus II IP(.qip)文件的项目。在 .qip 文件中,您可以参考其他 .qip.sdc 文件。例如,请参阅下面的变通办法部分。不正确的 .sdc 设置可能会导致不正确的设计行为或功能错误。

    解决方法

    可以使用 Tcl 脚本文件检查您的设计是否受到此问题的影响。下载 qip_checker.tcl 以确认是否有任何潜在的文件订单问题。您可以使用以下命令运行此脚本:

    quartus_sh -t qip_checker.tcl [-force]

    有关此脚本的详细用法,键入

    quartus_sh -t qip_checker.tcl

    我们提供一个补丁来修复 Quartus® II 软件版本 12.1 SP1 的此问题。从以下相应链接下载并安装补丁 1.33:

    此补丁与 Quartus® II 软件版本 12.1 SP1(内部版本 243)兼容。

    Patch 1.33 与 Quartus® II 软件版本 12.1 SP1 器件补丁(1.dp不兼容,适用于 Stratix® V、Arria® V 和 Cyclone® V 设备。如果您使用这些设备,可以使用以下相关解决方案中的链接升级到设备补丁 1.dp6 或更高版本来解决此问题。

    如果您无法使用此补丁,您可以通过在项目目录中创建名为 quartus.ini 的文本文件来避免此问题(如果不存在)。在文本文件中添加以下行以防止文件重新排序:

    disable_ip_regen=on

    此选项将禁用一些自动 IP 重新生成功能,因此您可能必须使用命令行操作来重新生成 IP。

    如果您已经遇到此问题,您应该执行以下步骤:

    1. 立即应用修补程序或应用 disable_ip_regen=on ini 设置
    2. 在具有或参数的 .qsf中删除任何分配 -qip -sip
    3. QIP_FILE .qsf 中检查分配并删除任何不属于顶级的任务
    4. 修改 .qsf 以手动更正 .sdc.qip 文件的顺序

    以下是一个重新排序效果的示例,如果您的设计受到影响,应手动修复。

    例如,在 Quartus® II 软件版本 12.1 SP1 之前,设计有项目.qsf文件中列出的以下.sdc.qip文件:

    a.qsf:

    set_global_assignment -name SDC_FILE a_before.sdc
    set_global_assignment -name QIP_FILE a.qip
    set_global_assignment -name SDC_FILE a_after.sdc

    a.qip:

    set_global_assignment -name SDC_FILE aqip_before.sdc
    set_global_assignment -name QIP_FILE asub.qip
    set_global_assignment -name SDC_FILE aqip_after.sdc

    asub.qip:

    set_global_assignment -name SDC_FILE asub.sdc

    下列是内存的文件顺序:

    set_global_assignment -name SDC_FILE a_before.sdc
    set_global_assignment -name QIP_FILE a.qip
    set_global_assignment -name SDC_FILE aqip_before.sdc # from qip a.qip
    set_global_assignment -name QIP_FILE asub.qip        # from qip a.qip
    set_global_assignment -name SDC_FILE asub.sdc        # from qip asub.qip
    set_global_assignment -name SDC_FILE aqip_after.sdc  # from qip a.qip
    set_global_assignment -name SDC_FILE a_after.sdc

    因此,项目按照以下顺序读取SDC_FILE分配:

    1. a_before.sdc
    2. aqip_before.sdc
    3. asub.sdc
    4. aqip_after.sdc
    5. a_after.sdc

    在 Quartus® II 软件版本 12.1 SP1 中,在触发软件问题(打开项目或升级 IP)后 ,.qsf 将如下所示:

    a.qsf:

    set_global_assignment -name SDC_FILE a_before.sdc
    set_global_assignment -name SDC_FILE a_after.sdc
    set_global_assignment -name QIP_FILE a.qip
    set_global_assignment -name QIP_FILE asub.qip

    下列是内存的文件顺序:

    set_global_assignment -name SDC_FILE a_before.sdc
    set_global_assignment -name SDC_FILE a_after.sdc
    set_global_assignment -name QIP_FILE a.qip
    set_global_assignment -name SDC_FILE aqip_before.sdc  # from qip a.qip
    set_global_assignment -name QIP_FILE asub.qip         # from qip a.qip
    set_global_assignment -name SDC_FILE aqip_after.sdc   # from qip a.qip
    set_global_assignment -name QIP_FILE asub.qip
    set_global_assignment -name SDC_FILE asub.sdc         # qip asub.qip

    因此,项目按照以下顺序读取SDC_FILE分配:

    1. a_before.sdc
    2. a_after.sdc
    3. aqip_before.sdc
    4. aqip_after.sdc
    5. asub.sdc

    如果设计取决于.sdc的读取顺序,此更改的顺序可能会影响设计优化结果和时序分析。要修复此问题, 添加上面描述的 ini 设置 , 然后修复.qsf以使用原来的正确的分配顺序。要快速检查订单是否已更改,请参阅 Quartus II 软件版本 12.1 SP1 之前生成的.qsf。

    这个问题从 Quartus® II 软件 13.0 版本开始修复。

    相关产品

    本文适用于 1 产品

    英特尔® 可编程设备

    本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。