ホールドを維持しながらセットアップを緩和 - 2023.2 日本語

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

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

次の図に、2 サイクルごとにイネーブルになる 2 つのフリップフロップ間のパスを示します。このパスにマルチサイクル パス制約を定義して、デスティネーション クロックの最初のエッジはアクティブでなく、2 つ目のエッジでのみ新しいデータをキャプチャするように指定できます。

図 1. 2 サイクルごとにイネーブルになるレジスタ

次の制約で新しいセットアップ関係を定義します。

set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]

『Vivado Design Suite ユーザー ガイド: デザイン解析およびクロージャ テクニック』 (UG906) の「タイミング解析の実行」のセクションに、ホールドの時間関係がどのようにセットアップの時間関係から派生されるかが説明されています。セットアップ関係を変更すると、セットアップのソース エッジおよびデスティネーション エッジが変わるので、ホールド関係も変更されます。

重要: 新しいホールド要件が厳しくなりすぎると、タイミング クロージャが困難になる可能性があります。デザインで可能な場合にホールド要件を緩和するのは、ユーザーが実行する必要があります。

図 1 と同じ例で、セットアップ チェックを 2 番目のデスティネーション エッジに移動すると、ホールド チェックが自動的に最初のデスティネーション エッジ (セットアップ チェックの 1 クロック周期前) に移動します。

次の図に、マルチサイクル パス制約でセットアップ パスの乗数のみを指定した場合に、セットアップ関係とホールド関係がどのように変化するかを示します。

図 2. マルチサイクル パス: セットアップのみを緩和

このパスでは、クロック イネーブルがあるので、data0_reg でデータを 1 クロック間保持する必要はありません。この場合、AMD では、ホールド関係を元に戻すことを勧めします (同じソース エッジとデスティネーション エッジの間)。元に戻すには、2 つ目のマルチサイクル パス制約を追加し、ホールド チェックのみを変更します。

set_multicycle_path 1 -hold -end -from [get_pins data0_reg/C] \
-to [get_pins data1_reg/D]

set_multicycle -hold コマンドで -end オプションが使用されているのは、デスティネーション クロックのエッジを前に移動する必要があるからです。

注記: ソース クロックとデスティネーション クロックの波形は同じなので、-end の使用はオプションです。デスティネーション エッジを前に移動すると、ソース エッジを先に移動した場合と同じホールド関係が得られます。コマンドをシンプルにするため、次の 2 つの例からは -end は削除されています。

次の図に、両方のマルチサイクル パス制約を適用した後のセットアップ関係とホールド関係を示します。

図 3. マルチサイクル パス: セットアップとホールドの両方を緩和

この例をまとめると、data0_reg/Cdata1_reg/D の間の 2 のマルチサイクル パスを適切に定義するには、次の制約が必要です。

set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
set_multicycle_path 1 -hold -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]

セットアップの乗数が 4 のマルチサイクル パスでは、制約は次のようになります。

set_multicycle_path 4 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D] 
set_multicycle_path 3 -hold -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
図 4. セットアップの乗数が 4 のマルチサイクル パス