set_max_delay
コマンドは、クロック関係がないが、最大遅延が必要な非同期信号を制約するためにも使用できます。
たとえば、2 つの非同期クロック ドメインの間のタイミング パスは、set_clock_groups
コマンド (推奨)、または set_false_path
コマンド (推奨されない) を使用して、ディスエーブルにできます。これは、クロック ドメイン間がダブル レジスタ シンクロナイザーや FIFO などを使用して適切に設計されていることを想定しています。ただし、2 つのクロック ドメイン間のパス遅延が不必要に大きくないことを確認する必要があります。
複数ビットの CDC の場合、ビット間のスキューが特定の要件内に収まるようにする必要があることがあります。スキューはバス スキュー制約 (set_bus_skew
) で設定することはできますが、2 つのクロック ドメイン間のパス遅延が不必要に大きくないことを確認する必要があります。これには、関連するパスのソースの XDC ファイル内で set_false_path
または set_clock_groups
制約を set_max_delay –datapath_only
に置換します。CDC パスの制約の詳細は、CDC の制約を参照してください。
2 つのクロック ドメイン間のいくつかのパス、またはすべてのパスに対し、最大遅延を設定する必要がある場合は、set_max_delay -datapath_only
コマンドを使用してください。この場合、set_clock_groups
よりも set_max_delay
が優先されるため、2 つのクロック ドメインを非同期として定義するのに set_clock_groups は使用できません。ほかのクロック乗せ換えパスを set_false_path
と set_max_delay
制約を組み合わせて制約する必要があります。
次に例を示します。
set_max_delay <delay> -datapath_only -from <startpoints_source_clock_domain> \
-to <endpoints_destination_clock_domain>