手順 6: 合成およびインプリメンテーションの再実行 - 2023.2 日本語

Vivado Design Suite チュートリアル: インプリメンテーション (UG986)

Document ID
UG986
Release Date
2023-10-18
Version
2023.2 日本語
RTL ソースに変更を加えたので、合成およびインプリメンテーションを再実行する必要があります。インクリメンタル インプリメンテーションが設定されているので、デフォルト フローと同様、単にツール フローを再実行するだけです。
  1. Flow Navigator で、Run Implementation をクリックします。すべての run がリセットされ、再実行されます。

    [Sources] ウィンドウで、チェックポイントが条件を満たしている場合は [Utility Sources] が以前に配線済みの impl_1 のチェックポイントでアップデートされ、今後の run の基準チェックポイントとして使用されるようになります。



    [Design Runs] ウィンドウの [Incremental] 列もアップデートされ、[Auto] と示されます。チェックポイントが適切な基準としての条件を満たしていない場合は、前と同じように [Auto(Skipped)] と示されます。

    インプリメンテーションが完了すると、[Design Runs] ウィンドウに完了した run が表示されます。



    [Design Runs] ウィンドウで、実行時間とタイミングを確認できます。この場合は次のようになります。

    • [Elapsed] 列から、インプリメンテーションの実行時間が削減されたことがわかります。
    • WNS > 0.000 は維持されたままです。
    注記: 合成は異なるモードでは実行されていないので、実行結果は前と同様になることが考えられます。

    [Elapsed] (経過時間) 列には、place_design (phys_opt_design は実行されていない) と route_design、およびインクリメンタル フローに必要な read_checkpoint -incremental や追加のレポートなどの追加コマンドの向上が含まれます。このフローをより大きなデザインに対して良い基準チェックポイントで使用すると、実行時間が大幅に短縮されます。

    注記: opt_design はインクリメンタルで実行されていないので、opt_design の実行時間に影響はありません。

    基準 run で最もエフォートが必要な複雑なフローを含むデザインで、最も利点があります。基準デザインでタイミング クロージャが達成されており、アップデートされたデザインとの最下位セルの違いが 5% 未満であるのが理想的です。

  2. Reports ウィンドウでの [Route Design] セクションの [Incremental Reuse Report] をダブルクリックします。

    これまでのところ、readEgressFifo の生成を変更し、エラー信号が 0 でない場合に信号が 0 になるようにしました。これは小さな変更なので、再利用率は高くなります。これをインクリメンタル再利用レポートで確認します。



    このレポートで、セル、ネット、およびポートが高い割合で再利用されています。

    [Reference Checkpoint Information] セクションでは、基準チェックポイントに関する情報を確認できます。これは、チェックポイントのソースが不明な場合に有益です。



    [Comparison with Reference Run] セクションでは、フローの各段階の実行時間と WNS が比較されています。これは、問題があった場合に、どこで WNS および実行時間が変化したかを理解するのに有益です。デザインは 100% 同じではないので、この情報は参考のみであることに注意してください。

    RuntimeOptmized 指示子を付けて実行する場合、この run のターゲット WNS は、0.0 になるか、< 0.0 の場合は基準 run からの WNS になります。常にタイミングが収束したデザイン (ターゲット WNS = 0.0 ns) をターゲットとするには、インクリメンタル指示子を TimingClosure に設定する必要があります。これには、次のコマンドを使用します。
    set_property -name INCREMENTAL_CHECKPOINT.MORE_OPTIONS -value {-incremental_directive TimingClosure} -objects [get_runs impl_1]