このブログ エントリの解析は、タイミングが満たされているにもかかわらず、ハードウェアの機能が正しくないというお客様の実際の問題に基づいています。この問題はクロック乗せ換えに関連していたため、このエントリの最後でこのような問題をデバッグする手順について説明します。
問題について
このデザインでは、ユーザーによりビットストリームが生成され、それを使用してデバイスがプログラムされています。ハードウェアでテストしたところ、少数のクロック ドメインでは必要な機能が得られなかったことがわかりました。
ビヘイビアー シミュレーションとインプリメンテーション後のシミュレーションをテストし、信号の結果が正しいことを確認しました。
また、タイミング違反も見つからず、次の [Design Timing Summary] に示すように、すべての値が正の値になりました。

注記: 次のオプションを使用して、デザインのタイミング サマリを確認できます。
- Vivado GUI で、[Reports] タブ → [Timing] → [Report Timing Summary] をクリックします。
- 次の Tcl コマンドを実行します。
report_timing_summary -file <filepath>/timingreport.txt
根本的な原因の解析:
ハードウェアの機能の問題には、さまざまな原因が考えられます。これらには、クロック乗せ換え (CDC) シンクロナイザーの欠落、最適でないクロッキング トポロジ、クロッキング構造での組み合わせロジックの使用、メタスタビリティー、および従来の制約のないパスが含まれます。
クロッキング/アーキテクチャ/CDC などに関連する警告/クリティカル警告を確認するには、設計手法レポートを使用します。
Vivado GUI で設計手法レポートを開くには、[Report] タブ → [Report Methodology] をクリックするか、または Tcl コンソールで「report_methodology」と入力します。
レポートを開くと、デザインに関連する警告とクリティカル警告が表示されることがあります。これらを確認する必要があります。
この例では、CDC に関連する不適切な手法 (Bad Practice) がレポートに含まれており、次の図の Timing-9 および Timing-10 がこれに該当します。

これらの警告メッセージは、2 つのクロック ドメイン間に set_false_path や set_clock_groups などの制約が設定された非同期クロック乗せ換えパスが 1 つ以上検出されたことを示しています。
しかし、デスティネーション クロック側にダブル レジスタ ロジック シンクロナイザーが見つからなかったため、report_CDC を実行してこれらの CDC パスをさらに解析することを推奨しています。
Vivado GUI で CDC レポートを開くには、[Reports] タブ → [Timing] → [Report CDC] をクリックします。または、Tcl コンソールで report_cdc コマンドを実行します。
CDC レポートの詳細は、『Vivado Design Suite ユーザー ガイド: デザイン解析およびクロージャ テクニック』 (UG906) を参照してください。
CDC レポートには、次に示すように正しくないハードウェア機能が発生するのと同じクロック ドメイン内に危険で不明の CDC エンドポイントが存在することが示されています。レポートに含まれる用語については、(UG906) を参照してください。

これらの警告/クリティカル警告を解決する方法:
1) (UG906) には、これらの警告の詳細な説明と、その他のタイミング設計手法チェックが含まれています。例を見て、各警告とその原因を詳細に理解します。RTL を変更するかパラメーター指定マクロ (XPM) を使用して適切な同期回路を追加することで、デザインを改善できます。
2) また、それに応じて制約を追加または変更したり RTL ソース コードの CDC エンドポイントに ASYNC_REG プロパティを追加したりする必要がある場合もあります。CDC のトポロジの詳細は、(UG906) を参照してください。
3) 擬似スタティック レジスタ インターフェイスの場合、CDC インターフェイスを過剰にデザインする代わりに、除外することをお勧めします。
除外の詳細および作成方法は、(UG906) を参照してください。
注記: 擬似スタティック CDC レジスタ インタフェースは、事実上スタティック コンフィギュレーション レジスタである CDC パスです。これらは初期化後に変更されることはありません。また、変更されるのは一度だけなので、スタティックと見なすことができます。
まとめ:
CDC パスに必要な変更を加えた後、お客様はハードウェアの機能テストに合格できました。