En raison d’une contrainte de synchronisation embarquée incorrecte, vous pouvez constater un comportement IP DCFIFO incorrect dans le matériel.
La contrainte de synchronisation erronée (qui est intégrée dans le code DCFIFO) définit incorrectement une affectation false_path pour le transfert de code gris entre les domaines lecture et écriture de l’horloge.
Bien que les défaillances matérielles soient extrêmement peu probables, il est possible que la forte hauteur de transfert de ces transferts de domaines codés gris soit suffisamment grande pour que la corruption puisse se produire dans le domaine de l’horloge destinataire.
La délation d’une défaillance matérielle s’accroît à mesure que l’utilisation logique et les fréquences d’horloge DCFIFO augmentent.
Si votre conception est affectée, Altera recommande la solution de contournement suivante. Notez que la mise à niveau vers le logiciel Quartus® Prime v15.1 et plus est nécessaire pour la solution de contournement. La solution de contournement s’applique uniquement aux familles de périphériques ci-dessous :
• Cyclone® V
• Arria® II GX
• Arria V et Arria V GZ
• Stratix® IV
• Stratix V
• MAX® 10
Suivez les étapes ci-dessous pour limiter et optimiser correctement les transferts de domaines avec code gris :
1) Appliquez la cession suivante dans votre fichier de paramètres Quartus Prime (.qsf) :
set_global_assignment- nom DISABLE_EMBEDDED_TIMING_CONSTRAINT activé
2) Assurez-vous qu’aucun utilisateur n’a créé de affectations de clock_groups ou de false_path pour réduire la synchronisation des chemins traversant ces domaines d’horloge.
Utilisez le rapport « report_clock_transfers » pour déterminer s’il existe une cession de false_path pour le croisement de domaines d’horloge en question.
3) Appliquez les contraintes de synchronisation suivantes :
Pour DCFIFO, hiérarchie = |dcfifo_component|*auto_generated
Pour les CCFIFO à largeur mixte, hiérarchie = |dcfifo_mixed_widths_component|*auto_generated
définir from_node_rdptr_list [hiérarchie get_keepers |rdptr_g*]
définissez to_node_rdptr_list [hiérarchie get_keepers |ws_dgrp|dffpipe*|d cargo*]
set_max_skew -de $from_node_rdptr_list à $to_node_rdptr_list -get_skew_value_from_clock_period src_clock_period -skew_value_multiplier 0.8
set_net_delay -de $from_node_rdptr_list -à $to_node_rdptr_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
set_max_delay -de $from_node_rdptr_list à $to_node_rdptr_list 100
set_min_delay -de $from_node_rdptr_list à $to_node_rdptr_list -100
définir from_node_wrptr_list [hiérarchie des get_keepers |delayed_wrptr_g*]
définissez to_node_wrptr_list [hiérarchie get_keepers |rs_dgwp|dffpipe*|d cargo*]
set_max_skew -de $from_node_wrptr_list à $to_node_wrptr_list -get_skew_value_from_clock_period src_clock_period -skew_value_multiplier 0.8
set_net_delay -de $from_node_wrptr_list -à $to_node_wrptr_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
set_max_delay -de $from_node_wrptr_list à $to_node_wrptr_list 100
set_min_delay -de $from_node_wrptr_list à $to_node_wrptr_list -100
définir from_node_mstable_ws_list [hiérarchie get_keepers |ws_dgrp|dffpipe*|d cargo*]
définir to_node_mstable_ws_list [hiérarchie get_keepers |ws_dgrp|dffpipe*|d cargo*]
set_net_delay -de $from_node_mstable_ws_list à $to_node_mstable_ws_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
définissez from_node_mstable_rs_list [hiérarchie get_keepers |rs_dgwp|dffpipe*|d cargo*]
définissez to_node_mstable_rs_list [hiérarchie get_keepers |rs_dgwp|dffpipe*|d cargo*]
set_net_delay -de $from_node_mstable_rs_list à $to_node_mstable_rs_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
4) Utilisez les rapports report_max_skew et report_net_delay de l’analyseur de synchronisation TimeQuest II pour vérifier que la synchronisation est close.
Pour Arria 10 périphériques et plus, le paramètre « Générer des fichiers SDC et désactiver la contrainte de synchronisation embarquée » dans la section Contrainte de synchronisation est coché par défaut. Cela vous permet de contourner les contraintes de synchronisation intégrées qui utilisent set_false_path dans les registres de synchronisation. Un fichier SDC configurable par l’utilisateur est généré automatiquement lorsque DCFIFO est instantanément retiré du catalogue IP. Les nouvelles contraintes de synchronisation comprennent les set_net_delay, les set_max_skew, les set_min_delay et les set_ max_delay sont utilisées pour contraintes de conception correctement.