Article ID: 000085111 Content Type: Troubleshooting Last Reviewed: 05/10/2013

The .qip/.sdc files in the project .qsf are reordered when opening a project or re-generating IP in the Quartus II software version 12.1 SP1.

Environment

  • Quartus® II Subscription Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    Critical Issue

    Description

    Due to a problem in the Quartus® II software version 12.1 SP1, the ordering in your project\'s Quartus II Settings File (.qsf) can be changed unexpectedly.

    This behavior may occur when you open a existing project or when you run the Upgrade IP command.

    If your project has Synopsys Design Constraint (.sdc) file order dependency, this reordering may result in unexpected frequency settings or other timing assignments. You could have a project that has multiple levels of Quartus II IP (.qip) files. Inside the .qip files, you may have references to additional .qip or .sdc files. For an example, refer to the workaround section below. Incorrect .sdc settings can cause incorrect design behavior or functional errors.

    Resolution

    A Tcl script file is available to check whether your design is affected by this issue. Download qip_checker.tcl to identify if there is any potential file order issue. You can run this script with the following command:

    quartus_sh -t qip_checker.tcl [-force] <project>

    For detailed usage on this script, type

    quartus_sh -t qip_checker.tcl

    A patch is available to fix this problem for the Quartus II software version 12.1 SP1. Download and install patch 1.33 from the appropriate link below:

    This patch is compatible with the Quartus II software version 12.1 SP1 (build 243).

    Patch 1.33 is not compatible with the Quartus II software version 12.1 SP1 device patches (1.dp<n>) for Stratix® V, Arria® V, and Cyclone® V devices. If you use these devices, you can fix this problem by upgrading to device patch 1.dp6 or later using the links in the related solution below.

    If you are unable to use this patch, you can avoid this issue by creating a text file called quartus.ini in your project directory (if it does not already exist). Add the following line in the text file to prevent the file reordering:

    disable_ip_regen=on

    This option will disable some of the automatic IP regeneration features, so you may have to regenerate IP using command line operations.

    If you have already run into this problem, you should perform the following steps:

    1. Apply the patch or apply disable_ip_regen=on ini setting immediately
    2. Remove any assignment in the .qsf that has a -qip or -sip argument
    3. Check QIP_FILE assignments within the .qsf and remove any that do not belong to the top level
    4. Modify the .qsf to manually correct the order of .sdc and .qip files

    Below is an example of the reordering effects that you should fix manually if your design is affected.

    As an example, before the Quartus II software version 12.1 SP1, a design has the following .sdc and .qip files listed in the project .qsf file:

    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

    The following is the file order from memory:

    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

    Therefore the project reads the SDC_FILE assignments in the following order:

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

    In the Quartus II software version 12.1 SP1, after triggering the software problem (opening project or upgrading IP), the .qsf would look as follows:

    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

    The following is the file order from memory:

    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

    Therefore the project reads the SDC_FILE assignments in the following order:

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

    If the design is dependent on the order .sdc are read, this changed order may affect design optimization results and timing analysis. To fix the problem, add the ini setting as described above, then fix the .qsf to use the original correct assignment order. To quickly check if the order has been changed, refer to .qsf generated prior to the Quartus II software version 12.1 SP1.

    This problem is fixed beginning with the Quartus II software version 13.0.

    Related Products

    This article applies to 1 products

    Intel® Programmable Devices