マルチサイクル パスおよびクロック位相シフト - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: 制約の使用 (UG903)

Document ID
UG903
Release Date
2023-11-01
Version
2023.2 日本語

クロック周期が同じで位相シフトのある 2 つのクロック ドメイン間で、タイミング制約を定義する必要がある場合があります。その場合、タイミング エンジンで使用されるデフォルトのセットアップ関係およびホールド関係を理解しておくことが重要です。注意深く調整しないと、2 つのクロック間の位相シフトにより、これらのクロック ドメイン間のロジックが過剰に制約される可能性があります。

図 1. マルチサイクル パスおよびクロック位相シフト

次のような 2 つのクロックがあるとします。

  • 2 つのクロック CLK1CLK2 の波形は同じ。
  • CLK2 は +0.3 ns シフトされている。

タイミング エンジンでは、セットアップ関係を算出するため、両方の波形のすべてのエッジが検出され、最も厳しい制約となるソース クロックとデスティネーション クロックの 2 つのエッジが選択されます。

クロックの位相シフトのため、タイミング エンジンで使用されるセットアップ関係とホールド関係が予測と異なる場合があります。次の図を参照してください。

図 2. 位相シフト クロックでマルチサイクル パス制約を設定しない場合の例

この例では、位相シフトのためセットアップ制約は 0.3 ns になります。これでは、タイミング クロージャを達成することはほぼ不可能です。一方、ホールド チェックは -3.7 ns であり、これはゆるすぎます。

意図どおりの動作を得るため、セットアップ エッジとホールド エッジを調整する必要があります。これには、セットアップの乗数を 2 に設定するマルチサイクル パス制約を追加します。

set_multicycle_path 2 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]

これにより、セットアップ要件のデスティネーション エッジが 1 サイクル先に移動します。ホールドのデフォルトのエッジは、セットアップ要件から導出されたものになるので、指定する必要はありません。

図 3. 正の位相シフトの例: セットアップの乗数を 2 (-end) に設定、ホールドはそれに応じて移動

次の図に示すように、2 つのクロック ドメイン間の位相シフトが負の場合、セットアップ チェックおよびホールド チェックに使用されるソース エッジとデスティネーション エッジは、1 つのクロック ドメインで位相シフトのない場合と似ています。

図 4. 負の位相シフトの例

負の位相シフトでは、位相シフトの影響を相殺するためにマルチサイクル パス制約を設定する必要は通常ありませんが、位相シフトが大きい場合は、セットアップおよびホールド要件を現実的なものにするために、クロックのソース エッジまたはデスティネーション エッジを調整する必要があることもあります。