SDC (Synopsys Design Constraint) コマンド set_multicycle_path を使用して、データがソース・レジスタ(送り出し側)とディスティネーション・レジスタ(取り込み側)の間を伝播する際に許容されるクロック・サイクル数を、ディスティネーション・クロックまたはソース・クロックのいずれかに対して指定することができます。 これは以下のシナリオで便利です。
図 1 は、ディスティネーション・レジスタ reg2 に対してマルチサイクル 2 が要求される単純な回路を示しています。 レジスタ reg2 は 2 番目のクロック・サイクルごとにデータをラッチしなければなりません。
図 1. レジスタ間のマルチサイクル・パス

以下の SDC コマンドは、上記の回路内のクロックに対して制約を与えます。
#ベース・クロックに対して制約を与えます
create_clock -period 10.000 \
[get_ports clkin]
#PLL 出力クロックに対して制約を与えます
create_generated_clock -source inst|inclk[0] -multiply_by 2 \
-name inst|clk[1] inst|clk[1]
#入力ポートと出力ポートに対して制約を与えます
set_input_delay -clock clk_in 1.2 [get_ports data_in]
set_input_delay -clock clk_in 1.5 [get_ports async_rst]
set_output_delay -clock clk_in 2 [get_ports data_out]
#レジスタ reg1 および reg2 にマルチサイクル 2 を適用します
#デフォルトでは、マルチサイクルはディスティネーション・クロックの波形に適用されます
set_multicycle_path -setup -end -from [get_pins reg1|clk] -to [get_pins reg2|*] 2
回路例 multicycle_exception.qar をダウンロード
