Kritisches Problem
Aufgrund eines Problems in der Quartus® II Softwareversion 12.1 SP1 kann die Bestellung in der Quartus II Settings File (.qsf) Ihres Projekts unerwartet geändert werden.
Dieses Verhalten kann auftreten, wenn Sie ein bestehendes Projekt öffnen oder den Befehl Upgrade IP ausführen.
Wenn ihr Projekt die Dateireihenfolge-Abhängigkeit Synopsys Design Constraint (.sdc) hat, kann diese Neubestellung zu unerwarteten Frequenzeinstellungen oder anderen Zeitzuweisungen führen. Sie können ein Projekt haben, das mehrere Ebenen von Quartus II IP (.qip)-Dateien hat. In den .qip-Dateien finden Sie möglicherweise Referenzen zu zusätzlichen .qip - oder .sdc-Dateien . Ein Beispiel finden Sie im Problemumgehungsabschnitt unten. Falsche .sdc-Einstellungen können zu falschem Designverhalten oder Funktionsfehlern führen.
Es steht eine Tcl-Skriptdatei zur Verfügung, um zu überprüfen, ob Ihr Design von diesem Problem betroffen ist. Laden Sie qip_checker.tcl herunter, um zu identifizieren, ob ein potenzielles Problem bei der Dateibestellung vorliegt. Sie können dieses Skript mit dem folgenden Befehl ausführen:
quartus_sh -t qip_checker.tcl [-force]
Geben Sie für eine detaillierte Verwendung dieses Skripts ein
quartus_sh -t qip_checker.tcl
Für die Quartus II Software Version 12.1 SP1 steht ein Patch zur Verfügung, um dieses Problem zu beheben. Laden Sie Patch 1.33 über den entsprechenden Link unten herunter und installieren Sie es:
- Laden Sie den Patch 12.1 SP1 1.33 für Windows herunter (.exe)
- Laden Sie den Patch 12.1 SP1 1.33 für Linux herunter (.the.)
- Readme für die Quartus II Softwareversion 12.1 SP1 Patch 1.33 herunterladen (.txt)
Dieser Patch ist mit der Quartus II Softwareversion 12.1 SP1 (Build 243) kompatibel.
Patch 1.33 ist nicht mit den Quartus II Softwareversion 12.1 SP1 Geräte-Patches (1.dp) für Stratix® V-, Arria® V- und Cyclone® V-Geräte kompatibel. Wenn Sie diese Geräte verwenden, können Sie dieses Problem beheben, indem Sie ein Upgrade auf Geräte-Patch 1.dp6 oder neuer durchführen, indem Sie die Links in der entsprechenden Lösung unten verwenden.
Wenn Sie diesen Patch nicht verwenden können, können Sie dieses Problem vermeiden, indem Sie eine Textdatei namens quartus.ini in Ihrem Projektverzeichnis erstellen (falls dieser nicht bereits vorhanden ist). Fügen Sie die folgende Zeile in der Textdatei hinzu, um zu verhindern, dass die Datei neu sortiert wird:
disable_ip_regen=on
Mit dieser Option werden einige der automatischen IP-Funktionen deaktiviert, sodass Sie möglicherweise IP mit Befehlszeilenoperationen neu generieren müssen.
Wenn Sie bereits auf dieses Problem stoßen, sollten Sie die folgenden Schritte durchführen:
- Wenden Sie den Patch an oder wenden Sie die Ini-Einstellung sofort an
disable_ip_regen=on
. - Entfernen Sie alle Zuweisungen in .qsf, die ein oder
-sip
ein-qip
Argument haben - Überprüfen Sie
QIP_FILE
Zuweisungen innerhalb der .qsf und entfernen Sie alle, die nicht zur obersten Ebene gehören - Ändern Sie die .qsf , um die Reihenfolge der .sdc - und .qip-Dateien manuell zu korrigieren.
Nachfolgend finden Sie ein Beispiel für die Nachbestellungseffekte, die Sie manuell beheben sollten, falls Ihr Design betroffen ist.
Als Beispiel vor der Quartus II Softwareversion 12.1 SP1 hat ein Design die folgenden .sdc - und .qip-Dateien , die in der .qsf-Projektdatei aufgelistet sind:
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
Folgendes ist die Dateireihenfolge aus dem Speicher:
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
Aus diesem Grund liest das Projekt die SDC_FILE Zuweisungen in der folgenden Reihenfolge:
- a_before.sdc
- aqip_before.sdc
- asub.sdc
- aqip_after.sdc
- a_after.sdc
In der Quartus II Softwareversion 12.1 SP1 würde die .qsf nach dem Auslösen des Softwareproblems (Öffnen des Projekts oder Aufrüsten der IP) wie folgt aussehen:
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
Folgendes ist die Dateireihenfolge aus dem Speicher:
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
Aus diesem Grund liest das Projekt die SDC_FILE Zuweisungen in der folgenden Reihenfolge:
- a_before.sdc
- a_after.sdc
- aqip_before.sdc
- aqip_after.sdc
- asub.sdc
Wenn das Design von der Reihenfolge abhängig ist, in der .sdc gelesen wird, kann sich diese geänderte Reihenfolge auf die Designoptimierungsergebnisse und die Timing-Analyse auswirken. Um das Problem zu beheben, fügen Sie die ini-Einstellung wie oben beschrieben hinzu und beheben Sie dann die .qsf , um die ursprüngliche korrekte Zuweisungsreihenfolge zu verwenden. Um schnell zu überprüfen, ob die Reihenfolge geändert wurde, lesen Sie .qsf generated prior to the Quartus II Software Version 12.1 SP1.
Dieses Problem wird ab Version 13.0 der Quartus II Software behoben.