;
図5-6 に、 両方のマルチサ イ ク ルパ ス制約を適用 し た後のセ ッ ト ア ッ プ関係 と ホール ド 関係を示 し ます。
こ の例を ま と め る と 、data0_reg/C と data1_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]
X-Ref Target - Figure 5-6
図 5-6:マルチサイ ク ルパス: セ ッ ト ア ッ プ と ホール ド の両方を緩和
X-Ref Target - Figure 5-7
Source clock
Destination clock
Clock Enable
0ns 2ns 4ns 6ns 8ns 10ns 12ns
launch edge
capture edge Hold
Hold Setup
;
Source clock
Destination clock
Clock Enable
launch edge
capture edge Hold
Hold Setup
セ ッ ト ア ッ プの移動
次に、 セ ッ ト ア ッ プ を移動 し た例を示 し ます。
• 「例 1: セ ッ ト ア ッ プの乗数を 5 に設定 し 、 ホール ド を それに応 じ て移動」
• 「例 2: セ ッ ト ア ッ プの乗数を 5、 ホール ド の乗数を 4 に設定」
例 1: セ ッ ト ア ッ プの乗数を 5 に設定 し 、 ホール ド を それに応 じ て移動
セ ッ ト ア ッ プパス の乗数を 5 に設定す る と し ます。 ホール ドパ ス の乗数は指定 さ れていないので、 ホール ド 関係は セ ッ ト ア ッ プの ソ ース エ ッ ジお よ びデス テ ィ ネーシ ョ ン エ ッ ジか ら 算出 さ れます。
set_multicycle_path 5 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
デフ ォ ル ト では、 セ ッ ト ア ッ プ パス の乗数はデス テ ィ ネーシ ョ ン ク ロ ッ ク に対 し て定義 さ れ る ので、 デス テ ィ ネー シ ョ ン ク ロ ッ ク のエ ッ ジが先に移動 し ます。 セ ッ ト ア ッ プのデス テ ィ ネーシ ョ ン エ ッ ジは、5 ク ロ ッ ク 周期後にな り ます。 ホール ド の乗数は指定 さ れていないので、 ホール ド チ ェ ッ ク のデス テ ィ ネーシ ョ ン ク ロ ッ ク のエ ッ ジは、
セ ッ ト ア ッ プ チ ェ ッ ク に使用 さ れ る ア ク テ ィ ブ エ ッ ジの 1 サ イ ク ル前に到着す る エ ッ ジの ま ま にな り ます。
セ ッ ト ア ッ プ関係お よ びホール ド 関係の両方に対 し 、 ソ ース ク ロ ッ ク のエ ッ ジは変更 さ れません。
4 サ イ ク ルのホール ド 要件では、 タ イ ミ ン グ ド リ ブンの イ ンプ リ メ ン テーシ ョ ンツールで通常、 ス ロ ーお よ び フ ァ ース ト の両方の タ イ ミ ン グ コ ーナーでホール ド タ イ ミ ン グ を満たすため、 デー タ パ ス に大 き な遅延を挿入す る 必要があ り ます。 こ れに よ り 、 不要なエ リ アお よ び消費電力が発生 し ます。 そのため、 可能な場合はホール ド 要件 を緩和す る こ と が重要です。
こ のサンプル デザ イ ンでは、 ク ロ ッ ク イ ネーブル信号があ る ので、data0_reg でデー タ を 4 サ イ ク ル間保持 し な く て も メ タ ス テーブル状態にな る こ と はあ り ません。「例 2: セ ッ ト ア ッ プの乗数を 5、 ホール ド の乗数を 4 に設定」
では、 ホール ド 要件の緩和方法を説明 し ます。
X-Ref Target - Figure 5-8
図 5-8:セ ッ ト ア ッ プの乗数を 5 に設定 し 、 ホール ド を それに応 じ て移動 launch edge
capture edge Setup
Hold
0ns 2ns 4ns 6ns 8ns 10ns 12ns 14ns 16ns 18ns 20ns 22ns 24ns Clock Enable
;
Destination clock (CLK2) Source clock
(CLK1)
例 2: セ ッ ト ア ッ プの乗数を 5 、 ホール ド の乗数を 4 に設定
こ の例では、 次の よ う に定義 さ れてい ます。
• セ ッ ト ア ッ プの乗数を 5
• ホール ド の乗数を 4 (5 - 1)
こ れは、2 つのシーケ ン シ ャ ルセル間で新 し いデー タ が 5 サ イ ク ルご と に送信お よ び受信 さ れ る と い う こ と です。
set_multicycle_path 5 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
set_multicycle_path 4 -hold -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
デフ ォ ル ト では、 セ ッ ト ア ッ プの乗数はデス テ ィ ネーシ ョ ン ク ロ ッ ク に適用 さ れ、 こ の例ではデス テ ィ ネーシ ョ ン エ ッ ジが 5 サ イ ク ル先に移動 し ます。 ホール ドチ ェ ッ ク は、 デフ ォ ル ト ではセ ッ ト ア ッ プチ ェ ッ ク に応 じ て変更 さ れます。
2 つ目の コ マ ン ド では、 ホール ド の乗数は ソ ース ク ロ ッ ク に適用 さ れ、 こ の例では ソ ース エ ッ ジが 4 サ イ ク ル先に
移動 し ます。
ソ ース ク ロ ッ ク お よ びデス テ ィ ネーシ ョ ン ク ロ ッ ク の両方の波形が同 じ で、 位相 も 一致 し てい る ので、図5-9 は 図5-10 と 同 じ にな り ます。
X-Ref Target - Figure 5-9
図 5-9:セ ッ ト ア ッ プの乗数を 5、 ホール ド の乗数を 4 に設定
X-Ref Target - Figure 5-10
launch edge
capture edge Setup
Hold
0ns 2ns 4ns 6ns 8ns 10ns 12ns 14ns 16ns 18ns 20ns 22ns 24ns Clock Enable
Destination clock (CLK2) Source clock
(CLK1)
マルチサイ クル パスおよび ク ロ ッ ク位相シ フ ト
ク ロ ッ ク 周期が同 じ で位相シ フ ト のあ る 2 つの ク ロ ッ ク ド メ イ ン間で、 タ イ ミ ン グ制約を定義す る 必要があ る 場合 があ り ます。 その場合、 タ イ ミ ン グエン ジ ンで使用 さ れ る デフ ォ ル ト のセ ッ ト ア ッ プ関係お よ びホール ド 関係を理 解 し てお く こ と が重要です。 注意深 く 調整 し ない と 、2 つの ク ロ ッ ク 間の位相シ フ ト に よ り 、 こ れ ら の ク ロ ッ ク ド
メ イ ン間の ロ ジ ッ ク が過剰に制約 さ れ る 可能性があ り ます。
次の よ う な 2 つの ク ロ ッ ク があ る と し ます。
• 2 つの ク ロ ッ ク CLK1 と CLK2 の波形は同 じ 。
• CLK2 は +0.3 ns シ フ ト さ れてい る 。
タ イ ミ ン グ エン ジ ンでは、 セ ッ ト ア ッ プ関係を算出す る ため、 両方の波形のすべてのエ ッ ジが検出 さ れ、 最 も 厳 し い制約 と な る ソ ース ク ロ ッ ク と デス テ ィ ネーシ ョ ン ク ロ ッ ク の 2 つのエ ッ ジが選択 さ れます。
ク ロ ッ ク の位相シ フ ト のため、 タ イ ミ ン グエン ジ ンで使用 さ れ る セ ッ ト ア ッ プ関係 と ホール ド 関係が予測 と 異な る 場合があ り ます。図5-12 を参照 し て く だ さ い。
こ の例では、 位相シ フ ト のためセ ッ ト ア ッ プ制約は 0.3 ns にな り ます。 こ れでは、 タ イ ミ ン グ ク ロ ージ ャ を達成す る こ と はほぼ不可能です。 一方、 ホール ド チ ェ ッ ク は -3.7 ns であ り 、 こ れはゆ る すぎ ます。
意図どお り の動作を得 る ため、 セ ッ ト ア ッ プエ ッ ジ と ホール ドエ ッ ジ を調整す る 必要があ り ます。 こ れには、 セ ッ ト ア ッ プの乗数を 2 に設定す る マルチサ イ ク ル パ ス制約を追加 し ます。
X-Ref Target - Figure 5-11
図 5-11:マルチサイ ク ルパスおよび ク ロ ッ ク 位相シ フ ト
X-Ref Target - Figure 5-12
図 5-12:位相シ フ ト ク ロ ッ ク でマルチサイ ク ルパス制約を設定 し ない場合の例
DATAPATH Q
REGISTER Q
REGISTER
CLK1 CLK2
;
launch edge
capture edge Setup Hold
0ns 2ns 4ns 6ns 8ns 10ns 12ns 14ns 16ns -2ns
-4ns -6ns -8ns
;
Destination clock (CLK2) Source clock
(CLK1)
2 つの ク ロ ッ ク ド メ イ ン間の位相シ フ ト が負の場合 (図5-14)、 セ ッ ト ア ッ プチ ェ ッ ク お よ びホール ド チ ェ ッ ク に使 用 さ れ る ソ ース エ ッ ジ と デス テ ィ ネーシ ョ ン エ ッ ジは、1 つの ク ロ ッ ク ド メ イ ン で位相シ フ ト のない場合 と 似てい ます。
負の位相シ フ ト では、 位相シ フ ト の影響を相殺す る ためマルチサ イ ク ル パス制約を設定す る 必要は通常あ り ません が、 位相シ フ ト が大 き い場合は、 セ ッ ト ア ッ プお よ びホール ド 要件を現実的な も のにす る ために ク ロ ッ ク の ソ ース エ ッ ジ ま たはデス テ ィ ネーシ ョ ン エ ッ ジ を調整す る 必要があ る 場合 も あ り ます。
低速 ク ロ ッ クか ら高速 ク ロ ッ クのマルチサイ クル
ソ ース ク ロ ッ ク CLK1 が低速で、 デス テ ィ ネーシ ョ ン ク ロ ッ ク CLK2 が高速であ る 場合を考え ます。図5-15 を参照 し て く だ さ い。
X-Ref Target - Figure 5-13
図 5-13:正の位相シ フ ト の例: セ ッ ト ア ッ プの乗数を 2 (-end) に設定 し 、 ホール ド を それに応 じ て移動
X-Ref Target - Figure 5-14
図 5-14:負の位相シ フ ト の例
X-Ref Target - Figure 5-15
launch edge
capture edge Setup Hold
0ns 2ns 4ns 6ns 8ns 10ns 12ns 14ns 16ns -2ns
-4ns -6ns -8ns
;
Destination clock (CLK2) Source clock
(CLK1)
launch edge
capture edge Setup Hold
0ns 2ns 4ns 6ns 8ns 10ns 12ns 14ns 16ns -2ns
-4ns -6ns -8ns
;
Destination clock (CLK2) Source clock
(CLK1)
DATAPATH Q
REGISTER Q
REGISTER CLK1
(SLOW)
CLK2 (FAST) N Cycles
次の よ う な 2 つの ク ロ ッ ク があ る と し ます。
• CLK2 の周波数は CLK1 の周波数の 3 倍
• 受信レ ジ ス タ に ク ロ ッ ク イ ネーブル信号があ り 、2 つの ク ロ ッ ク の間にマルチサ イ ク ルパス制約を設定可能。
図5-16 を参照 し て く だ さ い。
図5-17 に、 マルチサ イ ク ルが設定 さ れていない場合に STA ツールで使用 さ れ る セ ッ ト ア ッ プ関係 と ホール ド 関係を 示 し ます。
例 1: セ ッ ト ア ッ プの乗数を 3 に設定 し 、 ホール ド を それに応 じ て移動
次の よ う なセ ッ ト ア ッ プの乗数が 3 のマルチサ イ ク ル パ ス制約を定義す る と し ます。
set_multicycle_path 3 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]
セ ッ ト ア ッ プに対 し てマルチサ イ ク ル パス制約を設定す る と 、 セ ッ ト ア ッ プ チ ェ ッ ク に使用 さ れ る デス テ ィ ネー シ ョ ン ク ロ ッ ク のエ ッ ジが 2 (3 - 1) サ イ ク ル先に移動 し ます。 ホール ド パス の乗数は指定 さ れていないので、 ホー ル ド 関係はセ ッ ト ア ッ プの ソ ース エ ッ ジお よ びデス テ ィ ネーシ ョ ン エ ッ ジか ら 導出 さ れます。 ソ ース ク ロ ッ ク のア
ク テ ィ ブ エ ッ ジはマルチサ イ ク ル パ ス制約に よ り 変更 さ れません。
X-Ref Target - Figure 5-16
図 5-16:低速 ク ロ ッ ク から 高速ク ロ ッ ク のマルチサイ ク ル
X-Ref Target - Figure 5-17
図 5-17:デ フ ォル ト のセ ッ ト ア ッ プおよびホール ド 関係
0ns 2ns 4ns 6ns 8ns 10ns 12ns 14ns 16ns 18ns 20ns 22ns 24ns
;
Destination clock (CLK2) Source clock
(CLK1)
0ns 2ns 4ns 6ns 8ns 10ns 12ns 14ns 16ns 18ns 20ns 22ns 24ns launch edge
capture edge Setup Hold
;
Destination clock (CLK2) Source clock
(CLK1)
図5-18 に、 マルチサ イ ク ルが設定 さ れた後のセ ッ ト ア ッ プ関係 と ホール ド 関係を示 し ます。
こ のパ ス が機能す る ためには、 送信レ ジ ス タ にデー タ を CLK2 の 1 サ イ ク ル間保持す る 必要はあ り ません。 その よ う にす る と 不要な ロ ジ ッ ク を追加す る こ と にな り 、 エ リ アお よ び消費電力が増加 し ます。
受信レ ジ ス タ には ク ロ ッ ク ネーブル信号があ る ので、 メ タ ス テーブル状態にな る こ と な く ホール ド 要件を緩和で き ます。
例 2: セ ッ ト ア ッ プの乗数を 3 、 ホール ド の乗数を 2 (-end) に設定
前の例でホール ド 要件を緩和す る には、 ホール ド 関係のデス テ ィ ネーシ ョ ン ク ロ ッ クエ ッ ジ を 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) サ イ ク ル先に移動 し ます。
X-Ref Target - Figure 5-18
図 5-18:セ ッ ト ア ッ プの乗数を 3 に し 、 ホール ド を それに応 じ て移動 Destination
clock (CLK2) Source clock
(CLK1)
0ns 2ns 4ns 6ns 8ns 10ns 12ns 14ns 16ns 18ns 20ns 22ns 24ns launch edge
capture edge Setup
Hold
Source clock (CLK2)
;