エンベデッド・タイミング制約が正しくないことが原因で、ハードウェアで DCFIFO IP の動作が正しく表示されることがあります。
誤ったタイミング制約 (DCFIFO コードに組み込まれているもの) は、読み取りおよび書き込みクロックドメイン間のグレーコード転送のfalse_path割り当てを誤って設定しました。
ハードウェア障害の可能性は極めて低いものの、これらのグレーのコード化ドメイン転送のスキューが十分に大きく、受信クロックドメインで破損が生じる可能性があります。
ロジック使用率と DCFIFO クロックレートが増加すると、ハードウェア障害の確率が高くなります。
デザインに影響がある場合、Alteraは次の回避策を推奨します。回避策として Quartus® Prime 開発ソフトウェア v15.1 以降へのアップグレードが必要であることに注意してください。回避策は以下のデバイスファミリーにのみ適用されます。
• Cyclone® V
• ARRIA® II GX
• V およびArria V GZ のArria
• Stratix® IV
• Stratix V
• MAX® 10
グレーのコード化されたドメイン転送の制約と最適化を正しく行うためには、以下の手順に従ってください。
1) Quartus® Prime 開発ソフトウェア設定ファイル (.qsf) に以下の課題を適用します。
set_global_assignment -name DISABLE_EMBEDDED_TIMING_CONSTRAINT ON
2) これらのクロックドメインを横断するパスのタイミングを短縮するclock_groupsまたはfalse_pathアサインメントをユーザーが作成していないことを確認します。
「report_clock_transfers」レポートを使用して、問題のクロックドメインの交差にfalse_path割り当てが存在するかどうかを確認します。
3) 次のタイミング制約を適用します。
DCFIFO の場合、 = |dcfifo_component|*auto_generated
混合幅 DCFIFO の場合、 = |dcfifo_mixed_widths_component|*auto_generated
set from_node_rdptr_list [get_keepers |rdptr_g*]
設定to_node_rdptr_list [get_keepers |ws_dgrp|dffpipe*|dffe*]
set_max_skew -from $from_node__list -to $to_node_get_skew_value_from_clock_period src_clock_period -skew_value_multiplier 0.8
set_net_delay -from $from_node__list -to $to_node__list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
set_max_delay -from $from_node__list -to $to_node__list 100
set_min_delay -from $from_node__list -to $to_node__list -100
設定from_node_wrptr_list [get_keepers |delayed_wrptr_g*]
設定to_node_wrptr_list [get_keepers |rs_dgwp|dffpipe*|dffe*]
set_max_skew -from $from_node_wrptr_list -to $to_node_wrptr_list -get_skew_value_from_clock_period src_clock_period -skew_value_multiplier 0.8
set_net_delay -from $from_node_wrptr_list -to $to_node_wrptr_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
set_max_delay -from $from_node_wrptr_list -to $to_node_wrptr_list 100
set_min_delay -from $from_node_wrptr_list -to $to_node_wrptr_list -100
設定from_node_mstable_ws_list [get_keepers |ws_dgrp|dffpipe*|dffe*]
設定to_node_mstable_ws_list [get_keepers |ws_dgrp|dffpipe*|dffe*]
set_net_delay -from $from_node_mstable_ws_list -to $to_node_mstable_ws_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
設定from_node_mstable_rs_list [get_keepers |rs_dgwp|dffpipe*|dffe*]
設定to_node_mstable_rs_list [get_keepers |rs_dgwp|dffpipe*|dffe*]
set_net_delay -from $from_node_mstable_rs_list -to $to_node_mstable_rs_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
4) Time Columbus II タイミング・アナライザーのreport_max_skewレポートとreport_net_delayレポートを使用して、タイミングが閉じていることを確認します。
Arria 10 以降のデバイスでは、デフォルトで [タイミング制約] セクションの [SDC ファイルを生成してエンベデッド・タイミング制約を無効にする] パラメーターがオンになっています。これにより、同期レジスターのset_false_pathを使用するエンベデッド・タイミング制約をバイパスすることができます。ユーザー構成可能な SDC ファイルは、IP カタログから DCFIFO がインスタンス化されると自動的に生成されます。デザインを適切に制約するために、set_net_delay、set_max_skew、set_min_delay、set_ max_delayで構成される新しいタイミング制約が使用されます。