前の例でホールド要件を緩和するには、ホールド関係のデスティネーション クロック エッジを 2 クロック サイクル前に移動する必要があります。これには、set_multicycle_path
-hold
コマンドを -end
オプションを指定して使用します。
set_multicycle_path 3 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path 2 -hold -end -from [get_clocks CLK1] -to [get_clocks CLK2]
ヒント:
set_multicycle_path -hold
コマンドに -end
オプションを指定しない場合、ソース クロック エッジが先に移動します。これでは意図したホールド要件が得られません。例 1: セットアップの乗数を 3 に設定し、ホールドをそれに応じて移動にあるように、セットアップの乗数は、セットアップ チェックに使用されるデスティネーション クロックのエッジを 2 (3 - 1) サイクル先に移動します。
次の図に、2 つのマルチサイクル パス制約が設定された後のセットアップ関係とホールド関係を示します。
図 1. セットアップの乗数を 3、ホールドの乗数を 2 (-end) に設定
重要: 低速クロックから高速クロックへのクロック乗せ換えでは、次のコード例に示すように、セットアップの乗数を N に定義した場合、デスティネーション クロック (-end) に対してホールドの乗数を N-1 に定義します (最も一般的なケース)。
set_multicycle_path N -setup -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path N-1 -hold -end -from [get_clocks CLK1] -to [get_clocks CLK2]