report_timing
コマンドを使用すると、ポートに既に制約が設定されているかどうかに関係なく、デザイン内の関連するクロックを特定できます。すべてのタイミング クロックを定義したら、I/O ポートに入出力されるワースト パスをレポートし、レポートされたクロックに対して I/O 遅延制約を作成して、デザインのほかのクロックに対して同じタイミング レポートを作成します。ポートが複数のクロックに関連付けられている場合は、対応する制約を作成してプロセスを繰り返します。
たとえば、din
入力ポートがデザイン内の clk1
および clk2
クロックに関連しているとします。
report_timing -from [get_ports din] -sort_by group
レポートには、din
ポートが clk1
に関連していることが示されます。入力遅延制約 (この例では最小遅延および最大遅延の両方) は、次のように設定します。
set_input_delay -clock clk1 5 [get_ports din]
前と同じコマンドでタイミング解析を再び実行して、din
が clk2
にも関連していることを確認します。-sort_by group
オプションを使用すると、終点クロックごとに N 個のパスがレポートされます。対応する遅延制約を追加し、レポート コマンドを再実行して、din
ポートが別のクロックに関連していないことを確認します。
タイミング サマリ レポートで -report_unconstrained
オプションを使用しても同じ解析を実行できます。デザインにクロック制約しか含まれない場合、[Unconstrained Paths] セクションは次のように表示されます。
------------------------------------------------
| Unconstrained Path Table
------------------------------------------------
Path Group From Clock To Clock
---------- ---------- --------
(none)
(none) clk1
(none) clk2
(none) clk1
(none) clk2
クロック名のないフィールド (Vivado IDE では <NONE>) は、始点 (From Clock) または終点 (To Clock) がクロックに関連付けられていないパス グループを意味します。制約が設定されていない I/O ポートは、このカテゴリになります。残りのレポートを確認すると、これらの名前を取得できます。たとえば、Vivado IDE で [clk1
to NONE] カテゴリのセットアップ パスを選択すると、[To] 列に clk1
で駆動されるポートが表示されます。
新しい制約を追加してメモリでそれらを適用したら、レポートを再作成して、制約が設定されていないポートがまだあるかどうかを確認します。ほとんどのデザインで、レポートされるパスの数を増加して、すべての I/O パスがレポートに含まれるようにする必要があります。