Problème critique
En raison d’un problème dans la version 12.1 SP1 du logiciel Quartus® II, la commande du fichier de paramètres Quartus II de votre projet(.qsf)peut être modifiée de manière inattendue.
Ce comportement peut se produire lorsque vous ouvrez un projet existant ou lorsque vous exécutez la commande IP de mise à niveau.
Si votre projet dépend de la commande de fichiers avec la contrainte de conception Synopsys(.sdc),cette refonte peut entraîner des paramètres de fréquence inattendus ou d’autres affectations de synchronisation. Vous pourriez avoir un projet qui possède plusieurs niveaux de fichiers IP Quartus II(.qip). Dans les fichiers .qip, vous pouvez avoir des références à des fichiers .qip ou .sdc supplémentaires. Par exemple, reportez-vous à la section de contournement ci-dessous. Les paramètres .sdc incorrects peuvent entraîner un comportement de conception incorrect ou des erreurs fonctionnelles.
Un fichier Tcl est disponible pour vérifier si votre conception est affectée par ce problème. Téléchargez qip_checker.tcl pour identifier s’il y a un problème potentiel de commande de fichier. Vous pouvez exécuter ce script avec la commande suivante :
quartus_sh -t qip_checker.tcl [-force]
Pour obtenir une utilisation détaillée de ce script, saisissez
quartus_sh -t qip_checker.tcl
Un correctif est disponible pour résoudre ce problème pour la version 12.1 SP1 du logiciel Quartus II. Téléchargez et installez le correctif 1.33 à partir du lien approprié ci-dessous :
- Téléchargez la version 12.1 SP1 du correctif 1.33 pour Windows (.exe)
- Téléchargez la version 12.1 SP1 du correctif 1.33 pour Linux (.tar)
- Téléchargez le readme pour le logiciel Quartus II version 12.1 SP1 du correctif 1.33 (.txt)
Ce correctif est compatible avec la version 12.1 SP1 du logiciel Quartus II (build 243).
Le correctif 1.33 n’est pas compatible avec les correctifs de périphériques du logiciel Quartus II version 12.1 SP1 (1.dp)pour les périphériques Stratix® V, Arria® V et Cyclone® V. Si vous utilisez ces périphériques, vous pouvez résoudre ce problème en passant au correctif de périphérique 1.dp6 ou une version ultérieure à l’aide des liens de la solution connexe ci-dessous.
Si vous ne parvenez pas à utiliser ce correctif, vous pouvez éviter ce problème en créant un fichier texte appelé quartus.ini dans votre répertoire de projet (s’il n’existe pas déjà). Ajoutez la ligne suivante dans le fichier texte pour empêcher la réordation du fichier :
disable_ip_regen=on
Cette option désactive certaines des caractéristiques de l’usage automatique de la propriété intellectuelle , de sorte que vous devrez peut-être utiliser une IP de torsadance à l’aide des opérations de ligne de commande.
Si vous avez déjà constaté ce problème, vous devez effectuer les étapes suivantes :
- Appliquer le correctif ou appliquer
disable_ip_regen=on
le paramètre ini immédiatement - Supprimer toute affectation dans le .qsf qui a un ou des
-qip
-sip
arguments - Vérifiez
QIP_FILE
les affectations dans le fichier .qsf et supprimez celles qui n’appartiennent pas au niveau supérieur - Modifiez le fichier .qsf pour corriger manuellement l’ordre des fichiers .sdc et .qip
Vous trouverez ci-dessous un exemple des effets de réordation que vous devez corriger manuellement si votre conception est affectée.
À titre d’exemple, avant la version 12.1 SP1 du logiciel Quartus II, les fichiers .sdc et .qip suivants sont indiqués dans le fichier .qsf du projet :
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
Vous trouverez ci-dessous l’ordre des fichiers de la mémoire :
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
Par conséquent, le projet lit les SDC_FILE affectations dans l’ordre suivant :
- a_before.sdc
- aqip_before.sdc
- asub.sdc
- aqip_after.sdc
- a_after.sdc
Dans la version 12.1 SP1 du logiciel Quartus II, après avoir provoqué le problème logiciel (ouverture du projet ou mise à niveau IP), le .qsf aurait l’air comme suit :
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
Vous trouverez ci-dessous l’ordre des fichiers de la mémoire :
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
Par conséquent, le projet lit les SDC_FILE affectations dans l’ordre suivant :
- a_before.sdc
- a_after.sdc
- aqip_before.sdc
- aqip_after.sdc
- asub.sdc
Si la conception dépend de la lecture de la commande .sdc, cette modification de l’ordre peut affecter les résultats de l’optimisation de la conception et l’analyse du timing. Pour résoudre le problème, ajoutez le paramètre ini comme décrit ci-dessus, puis corrigez le .qsf pour utiliser l’ordre d’affectation correct d’origine. Pour vérifier rapidement si la commande a été modifiée, reportez-vous à .qsf généré avant la version 12.1 SP1 du logiciel Quartus II.
Ce problème est résolu à partir de la version 13.0 du logiciel Quartus II.