Vivado Design Suite ユーザー ガ イ ド 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資 料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情 報につきましては、必ず最新英語版をご参照ください。 改訂履歴 日付 バージ ョ ン 改訂内容 2015 年 5 月 13 日 2015.1 Vivado® Design Suite 2015.1 リ リ ース に併せて ア ッ プデー ト 。 ア ッ プデー ト の内容は次の と お り です。 • 20 ページの 「 タ イ ミ ン グ制約ウ ィ ザー ド 」 を追加 • タ イ ミ ン グ チ ェ ッ ク の章を削除。 こ の情報は、 『Vivado Design Suite ユーザー ガ イ ド : デ ザ イ ン解析お よ び ク ロ ージ ャ テ ク ニ ッ ク 』 (UG906) [参照 4] の 「 タ イ ミ ン グ解析の実行」 に移動 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 2 目次 改訂履歴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 第 1 章 : 概要 UCF 制約か ら XDC 制約への変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 XDC 制約について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 第 2 章 : 制約の入力方法 制約の入力方法について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 制約の管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 制約の順序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 制約の入力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 合成制約の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 イ ンプ リ メ ン テーシ ョ ン制約の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 制約の適用範囲の限定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 第 3 章 : ク ロ ッ ク の定義 ク ロ ッ ク について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . プラ イマ リ ク ロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 仮想 ク ロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 生成 ク ロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ク ロ ッ ク グループ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ク ロ ッ ク レ イ テ ン シ、 ジ ッ タ ー、 ば ら つ き . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 63 65 66 72 75 第 4 章 : I/O 遅延の制約 I/O 遅延の制約について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 入力遅延 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 出力遅延 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 第 5 章 : タ イ ミ ング例外 タ イ ミ ン グ例外について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 マルチサ イ ク ル パ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 フ ォ ルス パ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 最小/最大遅延 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 ケース解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 タ イ ミ ン グ アー ク のデ ィ ス エーブル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 第 6 章 : XDC の優先順位 XDC の優先順位について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 XDC 制約の順序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 例外の優先順位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 3 第 7 章 : 物理制約 物理制約について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ネ ッ ト リ ス ト 制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I/O 制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 配置制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 配線制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . コ ン フ ィ ギ ュ レーシ ョ ン制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 110 111 113 115 117 第 8 章 : 相対配置マ ク ロの定義 相対配置マ ク ロ の定義について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . デザ イ ン エ レ メ ン ト のセ ッ ト の定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RPM の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . セルの RPM セ ッ ト への割 り 当て . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 相対 ロ ケーシ ョ ンの割 り 当て . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RPM への固定 ロ ケーシ ョ ンの割 り 当て . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XDC マ ク ロ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 118 119 119 121 123 124 付録 A : サポー ト さ れる XDC および SDC コ マ ン ド サポー ト さ れ る XDC お よ び SDC コ マ ン ド について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XDC フ ァ イ ルで使用可能な コ マ ン ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . サポー ト さ れ る SDC コ マ ン ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . サポー ト さ れない SDC コ マ ン ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 137 138 146 付録 B : その他の リ ソ ースおよび法的通知 ザ イ リ ン ク ス リ ソ ース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ソ リ ュ ーシ ョ ン セ ン タ ー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ト レーニ ン グ リ ソ ース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 147 147 147 148 148 4 第 1章 概要 UCF 制約から XDC 制約への変換 Vivado® 統合設計環境 (IDE) では、 ザ イ リ ン ク ス デザ イ ン 制約 (XDC) が使用 さ れ、 ユーザー制約 フ ァ イ ル (UCF) フ ォーマ ッ ト はサポー ト さ れません。 ザ イ リ ン ク ス デザ イ ン制約 (XDC) と ユーザー制約フ ァ イ ル (UCF) の制約には、 重要な違いがあ り ます。 XDC は、 業 界標準の Synopsys Design Constraints (SDC) フ ォーマ ッ ト に基づいてい ます。 SDC は 20 年以上 も 使用 さ れ、 向上 し て き てお り 、 デザ イ ン制約を記述す る のに最 も よ く 使用 さ れ る 確立 し た フ ォーマ ッ ト です。 ビデオ : 入力遅延に関す る ト レーニ ン グ ビデオは、 Vivado Design Suite ビデオ チ ュ ー ト リ アル : UCF 制約の XDC へ の移行を参照 し て く だ さ い。 UCF に慣れていて XDC を初めて使用す る 場合は、 『Vivado Design Suite : ISE か ら Vivado Design Suite への移行手法ガ イ ド 』 (UG911) [参照 1] の 「UCF 制約を XDC に移行」 の章にあ る 「XDC と UCF 制約の違い」 を参照 し て く だ さ い。 こ の章には、 XDC 制約を作成す る 開始点 と し て既存の UCF フ ァ イ ルを XDC に変換す る 方法が説明 さ れてい ます。 重要 : デザ イ ン を適切に制約す る には、 XDC と UCF の基本的な違い を理解す る 必要があ り ます。 UCF か ら XDC へ の変換ユーテ ィ リ テ ィ には限界があ り 、 XDC を正 し く 理解 し て作成す る のが確実な方法です。 こ のユーザー ガ イ ド では、 各 XDC 制約について説明 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 5 第 1 章 : 概要 XDC 制約について XDC 制約は、 次を組み合わせた も のです。 • 業界標準の Synopsys Design Constraints (SDC バージ ョ ン 1.9) • ザ イ リ ン ク ス独自の物理制約 XDC には、 次の特徴があ り ます。 • 単純な文字列ではな く 、 Tcl の フ ォーマ ッ ト に従っ た コ マ ン ド です。 • Vivado Tcl イ ン タ ープ リ タ ーに よ り 、 ほかの Tcl コ マ ン ド と 同様に解釈 さ れます。 • ほかの Tcl コ マ ン ド と 同様に、 順次読み込まれ、 解析 さ れます。 XDC 制約は、 フ ロ ーの異な る 段階でい く つかの方法で入力で き ます。 • 制約を 1 つま たは複数の XDC フ ァ イ ルに保存 し ます。 XDC フ ァ イ ルを メ モ リ に読み込むには、read_xdc コ マ ン ド を使用する か、 プ ロ ジ ェ ク ト 制約セ ッ ト のいずれかに 追加 し ます。 XDC フ ァ イ ルで使用可能な ビル ト イ ン Tcl コ マ ン ド は、 set、 list、 お よ び expr のみです。 • 制約を Tcl ス ク リ プ ト で生成 し ます。 Tcl ス ク リ プ ト を実行す る には、 source コ マ ン ド を使用す る か、 Tcl ス ク リ プ ト をプ ロ ジ ェ ク ト 制約セ ッ ト のい ずれかに追加 し ます。 重要 : Vivado Design Suite では、 同 じ 制約セ ッ ト に XDC フ ァ イ ル と Tcl ス ク リ プ ト の両方を追加で き ます。 制約が変 更 さ れた場合、 その制約が XDC フ ァ イ ルか ら の も のであれば変更が XDC フ ァ イ ルに保存 さ れますが、 Tcl ス ク リ プ ト か ら の も のは保存 さ れ ません。 Tcl ス ク リ プ ト で生成 さ れた制約は、 イ ン タ ラ ク テ ィ ブに変更す る こ と はで き ませ ん。 詳細は、 第 2 章 「制約の入力方法」 を参照 し て く だ さ い。 デザ イ ン を メ モ リ に読み込ん だ後に特定の制約の構文 ま た は影響 を 確認す る には、 Tcl コ ン ソ ールお よ び Vivado Design Suite の レ ポー ト 機能を使用 し ます。 こ れは、 タ イ ミ ン グ制約お よ び物理制約を解析 し 、 デバ ッ グす る のに有 益な方法です。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 6 第 2章 制約の入力方法 制約の入力方法について デザ イ ン制約は、 デザ イ ンがボー ド 上で正 し く 機能す る よ う にす る ために、 コ ンパ イ ル フ ロ ーで満たす必要のあ る 要 件を定義 し ます。 すべての制約が コ ンパ イ ル フ ロ ーのすべての段階で使用 さ れ る わけではあ り ません。 た と えば、 物 理制約は イ ンプ リ メ ン テーシ ョ ン段階 (配置お よ び配線) でのみ使用 さ れます。 Vivado® 統合設計環境 (IDE) の合成お よ び イ ンプ リ メ ン テーシ ョ ン アルゴ リ ズ ムは タ イ ミ ン グ ド リ ブン なので、適切 な タ イ ミ ン グ制約を作成す る 必要があ り ます。 デザ イ ンの制約を厳 し く し すぎた り 緩 く し すぎた り する と 、 タ イ ミ ン グ ク ロ ージ ャ を達成す る のが困難にな り ます。アプ リ ケーシ ョ ンの要件に対応す る 適度な制約を使用す る 必要があ り ます。 制約の管理 Vivado IDE では、 1 つま たは多数の制約フ ァ イ ルを使用で き ます。 コ ンパ イ ル フ ロ ー全体に 1 つの制約フ ァ イ ルを使 用す る 方が便利な よ う に思え ますが、複雑なデザ イ ン ではすべての制約を管理す る のは簡単ではあ り ません。 こ れは、 異な る チームが開発 し た複数の IP コ アや大型のブ ロ ッ ク を使用す る デザ イ ンに特に言え ます。 推奨 : タ イ ミ ン グ制約 と 物理制約を別の フ ァ イ ルに保存する こ と をお勧め し ます。 ま た、 特定のモジ ュ ール用の制約 を別の フ ァ イ ルに保存す る こ と も で き ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 7 第 2 章 : 制約の入力方法 プ ロ ジ ェ ク ト フ ロー 新規プ ロ ジ ェ ク ト の作成時、 ま たは Vivado IDE メ ニ ュ ーか ら 、 ザ イ リ ン ク ス デザ イ ン制約 (XDC) フ ァ イ ルを制約 セ ッ ト に追加で き ます。 図 2-1 に、 プ ロ ジ ェ ク ト に制約セ ッ ト が 2 つ含まれてい る 例を示 し ます。 • 1 つ目の制約セ ッ ト には、 2 つの XDC フ ァ イ ルが含まれます。 • 2 つ目の制約セ ッ ト では、 すべての制約を含む XDC フ ァ イ ルを 1 つ使用 し ます。 X-Ref Target - Figure 2-1 図 2‐1 : 1 つの XDC フ ァ イルまたは複数の XDC フ ァ イル 重要 : プ ロ ジ ェ ク ト に独自の制約を使用する IP が含まれ る 場合、 その制約フ ァ イ ルは制約セ ッ ト には表示 さ れず、 IP ソ ース フ ァ イ ル と 共に リ ス ト さ れます。 Tcl ス ク リ プ ト も 制約セ ッ ト に追加で き ます。 Tcl ス ク リ プ ト と XDC フ ァ イ ルは、 Vivado IDE に表示 さ れてい る 順序 (同 じ PROCESSING_ORDER グループであ る 場合)、 ま たは report_compile_order -constraints コ マ ン ド で レ ポー ト さ れ る 順序で読み込まれます。 XDC フ ァ イ ル ま たは Tcl ス ク リ プ ト は、 必要で あれば複数の制約セ ッ ト で使用で き ま す。 制約フ ァ イ ルお よ び制約 セ ッ ト の作成方法お よ びプ ロ ジ ェ ク ト への追加方法は、 『Vivado Design Suite ユーザー ガ イ ド : シ ス テ ム レベル デザ イ ン入力』 (UG895) [参照 2] の 「制約の操作」 を参照 し て く だ さ い。 非プ ロ ジ ェ ク ト フ ロー 非プ ロ ジ ェ ク ト モー ド では、 コ ンパ イ ル コ マ ン ド を実行す る 前に各フ ァ イ ルを読み込む必要があ り ます。 次に、 合成お よ び イ ンプ リ メ ン テーシ ョ ンで複数の XDC フ ァ イ ルを使用する ス ク リ プ ト 例を示 し ます。 スク リプ ト例 read_verilog [glob src/*.v] read_xdc wave_gen_timing.xdc read_xdc wave_gen_pins.xdc synth_design -top wave_gen -part xc7k325tffg900-2 opt_design place_design route_design 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 8 第 2 章 : 制約の入力方法 合成および イ ン プ リ メ ン テーシ ョ ン制約フ ァ イル デフ ォ ル ト では、 プ ロ ジ ェ ク ト に追加 さ れたすべての XDC フ ァ イ ルお よ び Tcl ス ク リ プ ト が合成お よ び イ ン プ リ メ ン テ ー シ ョ ン の 両 方 で 使 用 さ れ ま す。 XDC フ ァ イ ル ま た は Tcl ス ク リ プ ト に USED_IN_SYNTHESIS お よ び USED_IN_IMPLEMENTATION プ ロ パテ ィ を設定す る と 、 こ のデフ ォ ル ト を変更で き ます。 こ れ ら のプ ロ パテ ィ に有 効な値は、 TRUE ま たは FALSE です。 重要 : DONT_TOUCH 属性は USED_IN_SYNTHESIS お よ び USED_IN_IMPLEMENTATION のプ ロ パテ ィ には従い ま せん。 合成 XDC で DONT_TOUCH プ ロ パテ ィ を使用す る と 、 USED_IN_IMPLEMENTATION の値にかかわ ら ず、 イ ンプ リ メ ン テーシ ョ ンに伝搬 さ れます。 DONT_TOUCH 属性の詳細は、 51 ページの 「RTL 属性」 を参照 し て く だ さ い。 た と えば、 制約フ ァ イ ルを イ ンプ リ メ ン テーシ ョ ンのみに使用す る 場合は、 次の手順に従い ます。 1. [Sources] ウ ィ ン ド ウ で制約フ ァ イ ルを選択 し ます。 2. [Source File Properties] ウ ィ ン ド ウ で、 オプシ ョ ン を次の よ う に設定 し ます。 3. a. [Synthesis] をオ フ b. [Implementation] を オン [Apply] を ク リ ッ ク し ます。 X-Ref Target - Figure 2-2 図 2‐2 : [Source File Properties] ウ ィ ン ド ウ 同等の Tcl コ マ ン ド は、 次の と お り です。 set_property USED_IN_SYNTHESIS false [get_files wave_gen_pins.xdc] set_property USED_IN_IMPLEMENTATION true [get_files wave_gen_pins.xdc] Vivado IDE を非プ ロ ジ ェ ク ト モー ド で実行す る 場合、 フ ロ ーの ど の段階の間で も 制約を直接読み込む こ と がで き ま す。 こ のモー ド では、 USED_IN_SYNTHESIS お よ び USED_IN_IMPLEMENTATION プ ロ パテ ィ は関係あ り ません。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 9 第 2 章 : 制約の入力方法 次に、 2 つの XDC フ ァ イ ルを フ ロ ーの異な る 段階で読み込むコ ンパ イ ル Tcl ス ク リ プ ト 例を示 し ます。 read_verilog [glob src/*.v] read_xdc wave_gen_timing.xdc synth_design -top wave_gen -part xc7k325tffg900-2 read_xdc wave_gen_pins.xdc opt_design place_design route_design 表 2‐1 : 合成前後の XDC フ ァ イルの読み込み フ ァ イル名 フ ァ イルを読み込む段階 制約が使用 さ れる段階 wave_gen_timing.xdc 合成前 • 合成 • イ ンプ リ メ ン テーシ ョ ン wave_gen_pins.xdc 合成後 • イ ンプ リ メ ン テーシ ョ ン ヒ ン ト : 合成後に読み込まれた制約が、 合成前に読み込まれた制約に加え て適用 さ れます。 制約の順序 XDC 制約は順に適用 さ れ、 規則に従っ て優先順位が付け ら れ る ので、 制約の順序を注意深 く 確認す る 必要があ り ま す。 詳細は、 第 6 章 「XDC の優先順位」 を参照 し て く だ さ い。 Vivado IDE では、 デザ イ ンの内部を詳細に確認で き ます。 制約を検証する には、 次の手順に従い ます。 1. 適切な レ ポー ト コ マ ン ド を実行 し ます。 2. [Tcl Console] ま たは [Messages] ウ ィ ン ド ウ の メ ッ セージ を確認 し ます。 推奨 さ れる制約の順序 推奨 : デザ イ ンで XDC フ ァ イ ルを 1 つま たは複数使用する 場合の ど ち ら で も 、 制約を次の順序で指定 し ます。 ## タ イ ミ ン グ アサーシ ョ ン セ ク シ ョ ン # プラ イマ リ ク ロ ッ ク # 仮想 ク ロ ッ ク # 生成 ク ロ ッ ク # ク ロ ッ ク グループ # 入力お よ び出力遅延制約 ## タ イ ミ ン グ例外セ ク シ ョ ン # フ ォ ルス パス # 最大遅延/最小遅延 # マルチサ イ ク ル パス # ケース解析 # タ イ ミ ン グのデ ィ ス エーブル ## 物理制約セ ク シ ョ ン # フ ァ イ ルの ど こ に配置 し て も 可、 タ イ ミ ン グ解析の前か後が理想的 # ま たは別の制約フ ァ イ ルに保存 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 10 第 2 章 : 制約の入力方法 まず ク ロ ッ ク 定義か ら 開始 し ます。 ク ロ ッ ク を作成 し ない と 、 ほかの制約で使用で き ません。 ク ロ ッ ク 定義の前に ク ロ ッ ク を参照す る と 、 エ ラ ーが発生 し 、 その制約は無視 さ れ ます。 こ れは、 1 つの XDC フ ァ イ ル内で も 、 デザ イ ン 内のすべての XDC フ ァ イ ル (ま たは Tcl ス ク リ プ ト ) で も 同様です。 制約フ ァ イ ルの順序は重要です。 各フ ァ イ ル内の制約が、 ほかの フ ァ イ ル内の制約に依存 し ない よ う にす る 必要があ り ます。 あ る フ ァ イ ル内の制約がほかのフ ァ イ ル内の制約に依存 し てい る 場合は、 依存す る 制約を含むフ ァ イ ルを最 後に読み込む必要があ り ます。 2 つの制約フ ァ イ ルにお互いのフ ァ イ ル内にあ る 制約に依存す る 制約が含まれてい る 場合は、 次のいずれか を実行 し ます。 • 2 つの フ ァ イ ルを 1 つに ま と め、 制約を適切な順序に並べ替え ます。 • フ ァ イ ルを複数の フ ァ イ ルに分割 し 、 正 し い順序で読み込みます。 制約の順序の編集 Vivado IDE では、 編集 し た制約は XDC フ ァ イ ルの元の位置に保存 さ れますが、 Tcl ス ク リ プ ト には保存 さ れません。 新 し い制約は、 タ ーゲ ッ ト と マー ク さ れた XDC フ ァ イ ルの最後に追加 さ れます。 制約セ ッ ト に複数の XDC フ ァ イ ル が含まれてい る 場合、 通常 タ ーゲ ッ ト 制約フ ァ イ ルは リ ス ト の最後のフ ァ イ ルではないので、 デザ イ ン を開いた と き ま たは読み込み直 し た と き に最後に読み込まれ る わけではあ り ません。 そのため、 デ ィ ス ク に保存 さ れた制約の順序 が メ モ リ 内での順序 と 異な っ て し ま う 可能性があ り ます。 重要 : 制約フ ァ イ ルに保存 さ れてい る 最終的な順序が正 し い こ と を確認する 必要があ り ます。 順序を変更す る 必要が あ る 場合は、 制約フ ァ イ ルを直接編集 し ます。 こ れは、 特に タ イ ミ ン グ制約で重要です。 制約 フ ァ イルの順序 IP を含ま ないプ ロ ジ ェ ク ト フ ロ ーでは、 すべての制約は制約セ ッ ト に含ま れ ます。 デフ ォ ル ト では、 Vivado IDE に 表示 さ れ る XDC フ ァ イ ル (ま たは Tcl ス ク リ プ ト ) の順序に よ り 、 エ ラ ボ レー ト 済みデザ イ ン ま たは合成済みデザ イ ン を メ モ リ に読み込む際に ツールに よ り 使用 さ れ る 読み込み順が定義 さ れます。 リ ス ト の一番上の フ ァ イ ルが最初に 読み込まれ、 一番下の フ ァ イ ルが最後に読み込ま れます。 読み込み順を変更す る には、 IDE で フ ァ イ ルを選択 し 、 リ ス ト の適切な位置に移動 し ます。 た と えば図 2-3 では、wave_gen_pin.xdc フ ァ イ ルを ド ラ ッ グ ア ン ド ド ロ ッ プで wave_gen_timing.xdc フ ァ イ ルの前に移動 し てい ます。 X-Ref Target - Figure 2-3 図 2‐3 : Vivado IDE での XDC フ ァ イル順の変更 こ れに相当す る Tcl コ マ ン ド は、 次の と お り です。 reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] \ [get_files wave_gen_pins.xdc] 表 2‐2 : フ ァ イル順の変更前 と 変更後 フ ァ イル 変更前のフ ァ イル順 変更後のフ ァ イル順 wave_gen_timing.xdc 1 2 wave_gen_pins.xdc 2 1 非プ ロ ジ ェ ク ト モー ド では、 read_xdc コ マ ン ド で呼び出す順序に よ り 制約フ ァ イ ルが評価 さ れ る 順序が決定 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 11 第 2 章 : 制約の入力方法 IP コ ア を含む場合の制約フ ァ イルの順序 多 く の IP コ アには、 1 つ ま たは複数の XDC フ ァ イ ルが付属 し てい ま す。 XDC フ ァ イ ルを含む IP コ ア が RTL プ ロ ジ ェ ク ト 内で生成 さ れ る と 、 その XDC フ ァ イ ル も さ ま ざ ま なデザ イ ン コ ンパ イ ル段階で使用 さ れます。 た と えば、 図 2-4 ではプ ロ ジ ェ ク ト の IP コ アの 1 つに XDC フ ァ イ ルが付属 し てい ます。 X-Ref Target - Figure 2-4 図 2‐4 : IP ソ ースの XDC フ ァ イル デフ ォ ル ト では、 IP の XDC フ ァ イ ルがユーザー XDC フ ァ イ ルの前に読み込まれます。 こ れに よ り 、 XDC で参照す る ク ロ ッ ク オブジ ェ ク ト を IP で作成で き ます。 ま た、 ユーザー制約が IP の後に評価 さ れ る ので、 IP コ アで設定 さ れ た物理制約を ユーザー制約で上書 き で き ます。 ユーザーま たは別の IP で作成 さ れた ク ロ ッ ク オブジ ェ ク ト を参照す る IP コ アは例外です (get_clocks -of_objects [get_ports clka] な ど)。 こ の場合、 IP の XDC がユーザー フ ァ イ ルの後に読み込ま れます。 こ の動作は、 各 XDC フ ァ イ ルに設定 さ れてい る PROCESSING_ORDER プ ロ パテ ィ で指定 し ます。 • EARLY : 最初に読み込む必要のあ る フ ァ イ ル • NORMAL : デフ ォ ル ト • LATE : 最後に読み込む必要のあ る フ ァ イ ル IP の XDC で は、 PROCESSING_ORDER プ ロ パ テ ィ が EARLY ま た は LATE に 設定 さ れ て い ま す。 同 じ PROCESSING_ORDER グループのユーザー XDC ( ま たは Tcl) フ ァ イ ル間では、 Vivado IDE で表示 さ れてい る 相対的 な順序に よ り 読み込み順が決定 し ます。 グループ内の順序を変更する には、 Vivado IDE の制約セ ッ ト で フ ァ イ ルを移 動す る か、 reorder_files コ マ ン ド を使用 し ます。 同 じ PROCESSING_ORDER グループの IP の XDC フ ァ イ ルは、 IP コ アの イ ン ポー ト ま たは作成順に よ り 読み込み順 が決定 し ます。 こ の順序は、 プ ロ ジ ェ ク ト の作成後には変更で き ません。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 12 第 2 章 : 制約の入力方法 ユーザー グループ と IP XDC PROCESSING_ORDER グループの間の相対的な順序は、 次の と お り です。 1. EARLY と マー ク さ れてい る ユーザー制約 2. EARLY と マー ク さ れてい る IP 制約 (デフ ォ ル ト ) 3. NORMAL と マー ク さ れてい る ユーザー制約 4. LATE と マー ク さ れてい る IP 制約 ( ク ロ ッ ク の依存を含む) 5. LATE と マー ク さ れてい る ユーザー制約 注記 : ユーザー制約の後に処理す る た め PROCESSING_ORDER が LATE に設定 さ れてい る IP の XDC フ ァ イ ルは、 <IP_NAME>_clocks.xdc と い う 名前にな り ます。 図 2-5に、 PROCESSING_ORDER プ ロ パテ ィ の設定例を示 し ます。 X-Ref Target - Figure 2-5 図 2‐5 : PROCESSING_ORDER プ ロパテ ィ の設定例 こ れに相当す る Tcl コ マ ン ド は、 次の と お り です。 set_property PROCESSING_ORDER EARLY [get_files wave_gen_pins.xdc] 推奨 : Tcl コ ン ソ ールで report_compile_order -constraints コ マ ン ド を使用す る と 、 上記のプ ロ パテ ィ 、 IS_ENABLED、 USED_IN_SYNTHESIS、 お よ び USED_IN_IMPLEMENTATION に基づい て ツ ールに よ り 決定 さ れ る 読み込み順を レ ポー ト で き ます。 読み込み順の変更 読み込み順を変更す る には、 次の手順に従い ます。 1. 移動す る XDC フ ァ イ ルを選択 し ます。 2. XDC フ ァ イ ルを ド ラ ッ グ し て、 適切な位置に移動 し ます。 8 ページの図 • に示す例では、 Tcl コ マ ン ド は次の よ う にな り ます。 reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] \ [get_files wave_gen_pins.xdc] Tcl ス ク リ プ ト に も 同 じ 方法を使用で き ます。 非プ ロ ジ ェ ク ト モー ド では、 read_xdc お よ び source コ マ ン ド の順 序に よ り 制約フ ァ イ ルの順序が決定 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 13 第 2 章 : 制約の入力方法 制約フ ァ イ ルを含むネ イ テ ィ ブ IP コ ア を使用す る 場合、 PROCESSING_ORDER プ ロ パテ ィ が LATE に設定 さ れてい なければ、 IP の XDC フ ァ イ ルはデザ イ ンのほかの フ ァ イ ルの後に、 [IP Sources] ビ ュ ーに リ ス ト さ れ る IP の順に読 み込まれます。 た と えば、 図 2-6 ではプ ロ ジ ェ ク ト IP コ アの 1 つに XDC フ ァ イ ルが付属 し てい ます。 X-Ref Target - Figure 2-6 図 2‐6 : IP ソ ースの XDC フ ァ イル デザ イ ン を開 く と 、 ロ グ フ ァ イ ルに IP の XDC フ ァ イ ルが最後に読み込まれてい る こ と が示 さ れます。 Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/clk_core/clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst' Finished Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/clk_core/clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst' Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo.xdc] for cell 'char_fifo_i0/U0' Finished Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo.xdc] for cell 'char_fifo_i0/U0' Parsing XDC File [C:/project_wave_gen_hdl.srcs/constrs_1/imports/verilog/wave_gen_timing.xdc] Finished Parsing XDC File [C:/project_wave_gen_hdl.srcs/constrs_1/imports/verilog/wave_gen_timing.xdc] Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo_clocks.xdc ] for cell 'char_fifo_i0/U0' Finished Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo_clocks.xdc ] for cell 'char_fifo_i0/U0' Completed Processing XDC Constraints 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 14 第 2 章 : 制約の入力方法 ユーザー XDC フ ァ イ ル と は異な り 、同 じ PROCESSING_ORDER グループに属す る IP の XDC フ ァ イ ルの読み込み順 を直接変更す る こ と はで き ません。 変更が必要な場合は、 次を実行 し ます。 1. 対応す る IP の XDC フ ァ イ ルをデ ィ ス エーブルに し ます (IS_ENABLED を false に設定)。 2. その フ ァ イ ルの内容を コ ピー し ます。 3. 制約セ ッ ト に含ま れ る XDC フ ァ イ ルのいずれかに コ ピー し た内容を貼 り 付け ます。 4. コ ピー さ れた IP の XDC コ マ ン ド を、 完全な階層ネ ッ ト リ ス ト オブジ ェ ク ト パ ス名を使用 し てア ッ プデー ト し ます。 IP の XDC 制約は IP イ ン ス タ ン ス に限定で き る よ う 記述 さ れてい る ので、 こ れは必要です。 5. 範囲が限定 さ れた制約で特別な方法で処理 さ れ る get_ports ク エ リ を確認 し ます。 XDC の適用範囲の詳細は、 57 ページの 「制約の適用範囲の限定」 を参照 し て く だ さ い。 制約の入力 Vivado IDE では、 い く つかの方法で制約を入力で き ます。 テ キ ス ト エデ ィ タ ーで直接 XDC フ ァ イ ルを編集す る 場合 以外は、 Vivado IDE の制約入力機能にア ク セ スする にはデザ イ ン デー タ ベース (エ ラ ボ レー ト 済み、 合成済み、 ま た は イ ンプ リ メ ン ト 済み) を開 く 必要があ り ます。 メ モ リ 内の制約の保存 編集中の制約を検証す る には、 メ モ リ 内にデザ イ ン が読み込ま れてい る こ と が必要です。 Vivado IDE ユーザー イ ン タ ーフ ェ イ ス を使用 し て制約を編集す る 場合は、 Tcl コ ン ソ ールで同等の XDC コ マ ン ド が実行 さ れ、 メ モ リ 内で適用 さ れます。 編集 し た タ イ ミ ン グ制約を XDC フ ァ イ ルに変更する には、 まず メ モ リ 内で適用する 必要があ り ます。 合成ま たは イ ンプ リ メ ン テーシ ョ ン を実行す る 前に、 メ モ リ 内の制約をプ ロ ジ ェ ク ト の XDC フ ァ イ ルに保存す る 必 要があ り ます。 Vivado IDE では、 制約の保存が必要な場合は メ ッ セージが表示 さ れます。 制約を手動で保存す る には、 次のいずれか を実行 し ます。 • ツールバーの [Save Constraints] を ク リ ッ ク し ます。 • [File] → [Save Constraints] を ク リ ッ ク し ます。 こ れ ら の コ マ ン ド を実行す る と 、 次の処理が実行 さ れます。 • すべての新規制約が、 デザ イ ンに関連付け ら れてい る 制約セ ッ ト の 「target」 と マー ク さ れた XDC フ ァ イ ルに保 存 さ れます。 • 編集 さ れたすべての制約が、 XDC フ ァ イ ルの元の位置に保存 さ れます。 注記 : 制約管理シ ス テ ムでは、 可能な限 り 元の XDC フ ァ イ ル フ ォーマ ッ ト が保持 さ れます。 制約編集 フ ロー 16 ページの図 2-7 に、 推奨 さ れ る 制約編集フ ロ ーを示 し ます。 こ れ ら 2 つの フ ロ ーを混合 し ないで く だ さ い。 混合す る と 、 制約が失われ る 可能性があ り ます。 推奨 さ れ る フ ロ ーは、 次の と お り です。 • 「ユーザー イ ン タ ーフ ェ イ ス を使用」 • 「手動で編集」 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 15 第 2 章 : 制約の入力方法 ユーザー イ ン タ ー フ ェ イ ス を使用 制約は Vivado IDE で管理 さ れ る ので、 XDC フ ァ イ ルを同時に編集 し ないで く だ さ い。 Vivado IDE で メ モ リ の内容を 保存す る と 、 制約は次の よ う に保存 さ れます。 • 変更 さ れた制約は、 元の フ ァ イ ルの元の制約に上書 き さ れます。 • 新 し い制約は、 タ ーゲ ッ ト と マー ク さ れた制約フ ァ イ ルの最後に追加 さ れます。 • XDC フ ァ イ ルに手動で変更を加えてい る 場合、 それ ら はすべて上書 き さ れます。 手動で編集 制約を手動で編集す る 場合、 ユーザーが XDC フ ァ イ ルを変更お よ び管理 し ます。 Tcl コ ン ソ ールを使用 し て制約の構 文を確認す る こ と はで き ますが、 デザ イ ン を閉 じ た り 読み込み直 し た り す る と 、 メ モ リ 内の変更は破棄 さ れます。 制約を保存す る と き に競合があ る 場合は、 次のいずれかを選択す る よ う メ ッ セージが表示 さ れます。 • メ モ リ 内の変更を破棄 • 変更を新 し い フ ァ イ ルに保存 • XDC フ ァ イ ルを上書 き 制約の作成は反復作業にな り ます。 あ る 場合には IDE エデ ィ タ ーを使用 し 、 ほかの場合には制約フ ァ イ ルを手動で変 更す る こ と も 可能です。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 16 第 2 章 : 制約の入力方法 X-Ref Target - Figure 2-7 䝕䝄䜲䞁䜢䝯䝰䝸䛻ㄞ䜏㎸䜐 9LYDGR 䝕䞊䝍䝧䞊䝇 9LYDGR,'(>'HYLFH@>3K\VLFDO &RQVWUDLQWV@>7LPLQJ&RQVWUDLQWV@ 䝡䝳䞊䛺䛹䜎䛯䛿7FO 䝁䞁䝋䞊䝹䜢 ⏝ <(6*8,䜢⏝ 䝔䜻䝇䝖㻌䜶䝕䜱䝍䞊䛷 ;'&䝣䜯䜲䝹䜢⦅㞟 䝕䝄䜲䞁䜢ゎᯒ >6FKHPDWLFV@>'HYLFH@ >5HSRUWV@䝡䝳䞊 ไ⣙䛾ኚ᭦㻌 䛜ᚲせ䛛" ;'&䝣䜯䜲䝹䜢ಖᏑ 䝕䝄䜲䞁䜢ㄞ䜏㎸䜏 <(6ᡭື䛷⦅㞟 12 䝕䝄䜲䞁䜢㛢䛨䜛䝁䞁䝟䜲䝹䜢ᐇ⾜ *8,ኚ᭦䜢;'&䝣䜯䜲䝹᪂つ䜎䛯䛿᪤Ꮡ䛻ಖᏑ ᡭືఱ䜒䛧䛺䛔㻌䜎䛯䛿ኚ᭦䜢◚Რ ; 図 2‐7 : 制約編集フ ロー 図 2-7 に示すフ ロ ーを実行す る と き に、 同時に両方の フ ロ ーを使用 し ないで く だ さ い。 2 つの フ ロ ーを切 り 替え て使用す る 場合は、 まず制約を保存す る かデザ イ ン を読み込み直 し 、 メ モ リ 内の制約が XDC フ ァ イ ル と 一致す る よ う に し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 17 第 2 章 : 制約の入力方法 ピ ン割 り 当て RTL 解析、 合成、 イ ンプ リ メ ン テーシ ョ ン環境で最上位ポー ト を作成お よ び既存の配置を変更す る には、 次の手順に 従い ます。 1. [I/O Planning] レ イ ア ウ ト を選択 し ます。 X-Ref Target - Figure 2-8 図 2‐8 : [I/O Planning] レ イ アウ ト 2. 表 2-3 に示す ウ ィ ン ド ウ を開 き ます。 表 2‐3 : 最上位ポー ト を作成および既存の配置を変更するのに使用するウ ィ ン ド ウ ウィ ンドウ 機能 Device デバ イ ス フ ロ アプ ラ ンでポー ト の位置を表示お よ び変更 し ます。 Package デバ イ ス パ ッ ケージでポー ト の位置を表示お よ び変更 し ます。 I/O Ports ポー ト を選択 し て [Device] ま たは [Package] ウ ィ ン ド ウ に ド ラ ッ グ ア ン ド ド ロ ッ プ し て 配置 し た り 、 各ポー ト の現在の割 り 当て を表示 し ます。 Package Pins 各 I/O バン ク の リ ソ ース の使用状況を表示 し ます。 ピ ン割 り 当てについては、『Vivado Design Suite ユーザー ガ イ ド : I/O お よ び ク ロ ッ ク の配置』 (UG899) [参照 3] の 「I/O ピ ン プ ラ ン ニ ン グ」 を参照 し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 18 第 2 章 : 制約の入力方法 ク ロ ッ ク リ ソ ースの割 り 当て RTL 解析、 合成、 イ ン プ リ メ ン テーシ ョ ン環境で ク ロ ッ ク ツ リ ーの配置を表示お よ び変更す る には、 次の手順に従 い ます。 1. [Clock Planning] レ イ ア ウ ト を選択 し ます。 X-Ref Target - Figure 2-9 図 2‐9 : [Clock Planning] レ イ アウ ト 2. 表 2-4 に示す ウ ィ ン ド ウ を開 き ます。 表 2‐4 : ク ロ ッ ク ツ リ ーの配置を表示および変更するのに使用するウ ィ ン ド ウ ウィ ンドウ 機能 Clock Resources • アーキ テ ク チ ャ で ク ロ ッ ク リ ソ ース間の接続を表示 し ます。 • ク ロ ッ ク ツ リ ー セルの現在の位置を表示 し ます。 Netlist • [Netlist] ウ ィ ン ド ウ で ク ロ ッ ク リ ソ ース を選択 し 、 [Clock Resources] ま たは [Device] ウ ィ ン ド ウ に ド ラ ッ グ ア ン ド ド ロ ッ プ し ます。 ク ロ ッ ク リ ソ ース の割 り 当てについては、『Vivado Design Suite ユーザー ガ イ ド : I/O お よ び ク ロ ッ ク の配置』 (UG899) [参照 3] の 「 ク ロ ッ ク プ ラ ン ニ ン グ」 を参照 し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 19 第 2 章 : 制約の入力方法 フ ロアプ ラ ン RTL 解析、 合成、 イ ンプ リ メ ン テーシ ョ ン環境で Pblock を作成お よ び変更する には、 次の手順に従い ます。 1. [Floorplanning] レ イ ア ウ ト を選択 し ます。 X-Ref Target - Figure 2-10 図 2‐10 : [Floorplanning] レ イ アウ ト 2. 表 2-5 に示す ウ ィ ン ド ウ を開 き ます。 表 2‐5 : Pblock を作成および変更するのに使用するウ ィ ン ド ウ ウィ ンドウ 機能 Netlist Pblock に割 り 当て る セルを選択 し ます。 Physical Constraints 既存の Pblock と そのプ ロ パテ ィ を確認 し ます。 Device デバ イ ス上の Pblock の形状 と 場所を作成お よ び変更 し ます。 特定の BEL ま たはサ イ ト にセル配置制約を作成す る には、 次の手順に従い ます。 1. [Netlist] ウ ィ ン ド ウ でセルを選択 し ます。 2. セルを ド ラ ッ グ し て [Device] ウ ィ ン ド ウ の適切な位置に配置 し ます。 フ ロ アプ ラ ンの詳細は、 『Vivado Design Suite ユーザー ガ イ ド : デザ イ ン解析お よ び ク ロ ージ ャ テ ク ニ ッ ク 』 (UG906) [参照 4] の 「フ ロ アプ ラ ン」 を参照 し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 20 第 2 章 : 制約の入力方法 タ イ ミ ング制約ウ ィ ザー ド タ イ ミ ン グ制約 ウ ィ ザー ド では、 合成済みま たは イ ンプ リ メ ン ト 済みのデザ イ ンに足 り ない タ イ ミ ン グ制が検出 さ れ ます。 ま た、 『UltraFast 設計手法 (Vivado Design Suite 用)』 (UG949) [参照 5] の推奨事項に示す よ う に、 ネ ッ ト リ ス ト 、 ク ロ ッ ク ネ ッ ト の接続、 お よ び既存の タ イ ミ ン グ制約が解析 さ れます。 こ の 3 つの制約のカ テ ゴ リ については、 ウ ィ ザー ド の 11 ページ目の後のサマ リ で説明 さ れます。 ウ ィ ザー ド には、 次の段階が含まれます。 • • • • クロック ° プラ イマ リ ク ロ ッ ク ° 生成 ク ロ ッ ク ° フ ォ ワー ド ク ロ ッ ク ° 外部フ ィ ー ド バ ッ ク 遅延 入力お よ び出力ポー ト ° 入力遅延 ° 出力遅延 ° 組み合わせ遅延 ク ロ ッ ク 乗せ換え ° 物理的に排他的な ク ロ ッ ク グループ ° 論理的に排他的な ク ロ ッ ク グループ (相互作用な し ) ° 論理的に排他的な ク ロ ッ ク グループ (相互作用あ り ) ° 非同期 ク ロ ッ ク 乗せ換え 制約のサマ リ 各段階で推奨 さ れ る 制約を その ま ま使用す る か、 提案 さ れた制約の各チ ェ ッ ク ボ ッ ク ス を オン/オ フ に し て リ ス ト を 変更 し ます。 ただ し 、 ウ ィ ザー ド の早期段階で推奨 さ れ る 制約を オ フ にす る と 、 その後の段階でその他の足 り ない制 約が認識 さ れな く な る こ と があ り ます。 た と えば、 あ る ク ロ ッ ク が作成 さ れない よ う にす る と 、 その ク ロ ッ ク ま たは そ こ か ら 自動的に派生 さ れ る ク ロ ッ ク を基準 と す る 制約が認識 さ れて推奨 さ れ る こ と はな く な り ます。 ウ ィ ザー ド の最後のページには、 作成 さ れ る 制約のサマ リ が表示 さ れます。 各ハ イ パー リ ン ク を ク リ ッ ク す る と 、 そ の制約の詳細が表示 さ れます。 ま た、 ウ ィ ザー ド 終了後に タ イ ミ ン グ制約エデ ィ タ ーで新 し い制約を表示す る こ と も で き ます。 [Finish] を ク リ ッ ク し た後に次の推奨レ ポー ト が生成 さ れ る よ う に設定 し て、 デザ イ ン に正 し く 制約が付け ら れたか ど う か を確認す る こ と も で き ます。 • [Create Timing Summary report] : check_timing レ ポー ト に、新 し い制約 と タ イ ミ ン グ ス ラ ッ ク が レ ポー ト さ れます。 入力 し た周期ま たは I/O 遅延制約が困難な場合は、 タ イ ミ ン グ違反が表示 さ れ る こ と があ り ます。 • [Create Check Timing report] : 足 り ない制約や不適切な制約が レ ポー ト さ れます。 • [Create DRC Report using only Timing Checks] : タ イ ミ ン グ チ ェ ッ ク のみを使用 し て足 り ない制約や不適切な制約 が レ ポー ト さ れます。 重要 : 新 し く 追加 さ れた制約は、 [Cancel] を ク リ ッ ク し ない限 り タ ーゲ ッ ト XDC に自動的に保存 さ れます。 新 し い制 約は、 ウ ィ ザー ド の終了後、 タ イ ミ ン グ制約エデ ィ タ ーで編集ま たは削除で き ます。 タ イ ミ ン グ制約ウ ィ ザー ド では、 安全ではない タ イ ミ ン グ解析にな る 場合は、 制約を推奨 し ません。 ま た、 ウ ィ ザー ド ではデザ イ ン を メ モ リ に読み込んだ場合に既存の不適切な制約が修正 さ れ る こ と はあ り ま せんが、 Vivado Design Suite を プ ロ ジ ェ ク ト モー ド で使用 し て足 り ない ク ロ ッ ク をすべて作成す る と 、 無効な制約が有効にな る こ と はあ り ます。 詳細は、 「制約の処理順序 と 無効な制約」 を参照 し て く だ さ い。 ウ ィ ザー ド の終了後に check_timing ま たは report_drc を実行 し て、 それで も ま だ制約の問題が表示 さ れ る 場合は、 通常 ソ ース の XDC フ ァ イ ルに存在 し てい る 制約が原因なので、 ウ ィ ザー ド を使用す る のではな く 、 直接問題を解決す る 必要があ り ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 21 第 2 章 : 制約の入力方法 制約の処理順序 と 無効な制約 タ イ ミ ン グ制約 ウ ィ ザー ド では、 ク ロ ッ ク を定義 し た り 、 基準 と し て使用す る の場合に足 り ない制約が示 さ れます。 こ れは、 プ ロ ジ ェ ク ト モー ド の場合は タ ーゲ ッ ト XDC フ ァ イ ルの終わ り に、 その他のモー ド の場合はすべての制約 の終わ り で保存 さ れます。 こ のため、 次の規則を理解 し てお く 必要があ り ます。 • プ ロ ジ ェ ク ト モー ド : タ イ ミ ン グ制約ウ ィ ザー ド を起動す る 前に、 処理順序を NORMAL に設定 し た タ ーゲ ッ ト XDC フ ァ イ ルを指定す る 必要があ り ます。 タ ーゲ ッ ト XDC フ ァ イ ルは、 メ モ リ で開いていて現在選択 さ れてい る デザ イ ンの制約セ ッ ト に含まれ る 必要があ り ます。その他の XDC フ ァ イ ルの中の タ ーゲ ッ ト XDC フ ァ イ ルの 位置に よ っ て、 推奨 さ れ る 制約が ど こ で適用 さ れて後に保存 さ れ る かが指定 さ れます。 ま た、 ウ ィ ザー ド はで き る だけ多 く の も のを正確に推奨す る ため、タ ーゲ ッ ト XDC フ ァ イ ル後に解析 さ れ る XDC フ ァ イ ルに含まれ る 無 効な制約を適用 し 直そ う と し ます。 た と えば、 制約セ ッ ト constr_1 を使用 し て メ モ リ で開いてい る synth_1 run か ら のネ ッ ト リ ス ト があ る と し ます。 こ の制約セ ッ ト には、 a.xdc、 b.xdc、 c.xdc の順番で 3 つの XDC フ ァ イ ルが含まれます。 各フ ァ イ ル に無効な制約が含ま れてい る 場合に タ ーゲ ッ ト XDC フ ァ イ ル と し て b.xdc を選択する と 、 タ イ ミ ン グ制約ウ ィ ザー ド では次の段階に進んでその他の足 り ない制約を発見す る よ り 前に、 推奨す る ク ロ ッ ク を適用 し て、 c.xdc か ら その無効な制約を適用 し 直 し ます。 • 非プ ロ ジ ェ ク ト モー ド ま たはデザ イ ン チ ェ ッ ク ポ イ ン ト (DCP) モー ド : こ れ ら のモー ド では タ ーゲ ッ ト XDC フ ァ イ ルを指定で き ないので、 タ イ ミ ン グ制約ウ ィ ザー ド では制約シーケ ン ス の最後の位置に新 し い制約が推奨 さ れて適用 さ れ ます。 こ れは、 Tcl コ ン ソ ールま たは タ イ ミ ン グ制約エデ ィ タ ーで新 し い制約を入力す る の と 同 じ こ と です。 こ れ ら のモー ド では、 ウ ィ ザー ド で無効な制約が適用 し 直 さ れ る こ と はあ り ません。 制約の依存度 や優先度の問題を回避す る ために新 し い制約を全体的な制約シーケ ン ス の早い順番に適用す る 必要があ る 場合、 制約シーケ ン ス を手動で編集す る 必要があ り ます。 次に制約を手動で編集す る 方法を示 し ます。 a. Vivado で新 し い制約を作成 し ます。 b. write_xdc -exclude_physical timing_constraints.xdc コ マ ン ド を実行 し ます。 c. timing_constraints.xdc を編集 し て新 し い制約を XDC フ ァ イ ルの上の方の位置に移動 し ます。 d. フ ァ イ ルを保存 し ます。 e. reset_timing コ マ ン ド を実行 し ます。 f. read_xdc timing_constraints.xdc と 入力 し て編集 し た タ イ ミ ン グ制約フ ァ イ ルを読み込みます。 ア ッ プデー ト し た タ イ ミ ン グ制約シーケ ン ス を確認す る には、 タ イ ミ ン グ制約エデ ィ タ ーを使用 し ます。 ウ ィ ザー ド を開いてい る と き に使用可能な レ ポー ト 機能 タ イ ミ ン グ制約 ウ ィ ザー ド を開いてい る 場合は、 デー タ ベース で矛盾が発生 し ない よ う に、 Tcl コ ン ソ ールの使用や タ イ ミ ン グ解析の実行を含め、 Vivado IDE でほ と ん ど の動作がで き な く な り ます。 ウ ィ ザー ド の ウ ィ ン ド ウ はその他 の Vivado IDE ウ ィ ン ド ウ よ り も 常に手前に表示 さ れ ます。 Vivado IDE の メ ニ ュ ーま たは ウ ィ ン ド ウ を使用す る 必要 があ る 場合は、 ウ ィ ザー ド の ウ ィ ン ド ウ を横に移動 し てお く 必要があ り ます。 タ イ ミ ン グ制約ウ ィ ザー ド が開いてい る と き に使用で き る のは、 次の機能のみです。 • ク ロ ッ ク ネ ッ ト ワ ー ク を レ ポー ト お よ び表示 ほ と ん ど の ウ ィ ザー ド のページには、 ク ロ ッ ク ネ ッ ト ワ ー ク レ ポー ト を生成 し て表示す る ためのボ タ ンがあ り 、 ク ロ ッ ク ト ポ ロ ジ、 それ ら の ソ ース ポ イ ン ト 、 一部の ク ロ ッ ク の共有セグ メ ン ト な ど を表示で き ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 22 第 2 章 : 制約の入力方法 X-Ref Target - Figure 2-11 図 2‐11 : ク ロ ッ ク ネ ッ ト ワー ク を レ ポー ト するボ タ ン と ク ロ ッ ク ネ ッ ト ワー ク を表示するボ タ ン ク ロ ッ ク ネ ッ ト ワ ー ク レ ポー ト に関す る 詳細は、 『Vivado Design Suite ユーザー ガ イ ド : デザ イ ン解析お よ び ク ロ ージ ャ テ ク ニ ッ ク 』 (UG906) [参照 4] を参照 し て く だ さ い。 • ソ ース フ ァ イ ルま たは メ モ リ 内のデザ イ ン オブジ ェ ク ト の名前で検索 [Edit] メ ニ ュ ーか ら [Find and Find In Files] ダ イ ア ロ グ ボ ッ ク ス を表示 し ます。 こ れ ら のダ イ ア ロ グ ボ ッ ク ス を使 用す る と 、 ウ ィ ザー ド に制約を入力 し つつデザ イ ンに関す る 情報を取得す る こ と がで き ます。 • 回路図を作成お よ び表示 Vivado IDE の メ イ ン ウ ィ ン ド ウ でデザ イ ン オブジ ェ ク ト を選択 し 、 それ ら を回路図で表示で き ます。 すべての 回路図機能が使用で き ま す。 [Timing Paths] タ ブで 1 つ ま たは複数のエ ン ト リ を選択 し た場合、 タ イ ミ ン グ制約 ウ ィ ザー ド の最後の段階の非同期 ク ロ ッ ク 乗せ換えでのみ、 便利な回路図 ク ロ ス プ ロ ーブ機能がサポー ト さ れま す。 回路図使用の詳細については、 『Vivado Design Suite ユーザー ガ イ ド : Vivado IDE の使用』 (UG893) [参照 6] を参 照 し て く だ さ い。 • タ イ ミ ン グ制約エデ ィ タ ーで メ モ リ 内の制約を表示 ウ ィ ザー ド の各ページ には、 推奨 さ れ る の と 同 じ タ イ プの既存の制約 を示す タ ブが含 ま れ ま す。 こ れに よ り 、 XDC フ ァ イ ルで作成 さ れ る 制約の詳細をすばや く 確認で き ま す。 タ イ ミ ン グ制約エデ ィ タ ーには、 ス コ ープ情 報 も 含めて制約のシーケ ン スすべてが XDC フ ァ イ ル別に分類 さ れ、 メ モ リ の タ イ ミ ン グ制約すべてが表示 さ れ ます。 無効な制約 も 表示 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 23 第 2 章 : 制約の入力方法 ウ ィ ザー ド 内での制約編集 ウ ィ ザー ド の各段階では、 複数の制約が推奨 さ れます。 その制約に よ っ て、 次の動作のいずれか を実行す る 必要があ り ます。 • 次のいずれか を使用 し て作成 し ない制約を オ フ に し ます。 ° リ ス ト か ら 行ご と に各制約を 1 つずつオ フ に し て削除 し ます。 ° 表の左上のチ ェ ッ ク ボ ッ ク ス をオ フ にする と 、 すべての制約を削除で き ます。 ま たは、 図 2-12 に示す よ う に選択 し た行の コ ン テ キ ス ト メ ニ ュ ーを使用する こ と も で き ます。 X-Ref Target - Figure 2-12 図 2‐12 : コ ン テキス ト メ ニ ュ ーを使用 し た推奨制約の削除 図 2-13 では、 clock1a、 clocka2 お よ び clock4 を オ フ に し て、 こ れ ら を削除 さ れ る よ う に し てい ます。 X-Ref Target - Figure 2-13 図 2‐13 : 推奨制約の作成 と 削除 • [undefined] にな っ てい る セルを ク リ ッ ク し て、 値 (た と えば、 図 2-13 の clock3a の [Frequency] ま たは [Period] 値) を入力 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 24 第 2 章 : 制約の入力方法 図 2-14 に示す よ う に、 該当す る 行を選択 し て [Edit Selected Rows] ア イ コ ン を ク リ ッ ク し て も 同時に複数の制約 を編集で き ます。 X-Ref Target - Figure 2-14 図 2‐14 : 複数の推奨制約の編集 次に、 図 2-15 に示す よ う に必要な フ ィ ール ド を埋め ます。 X-Ref Target - Figure 2-15 図 2‐15 : 複数の推奨制約に対するパラ メ ー タ ー入力 1 度に複数の制約を編集す る 方法は、 入力お よ び出力遅延制約を編集する 際に特に便利です。 • 何 も 動作が必要ない場合は、 単に制約を確認だけ し ます。 すべてのチ ェ ッ ク さ れた推奨制約を確認 し た ら 、 [Next] を ク リ ッ ク し て次のページに進みます。 入力 し 忘れたエン ト リ があ る と 、 ウ ィ ザー ド は次の段階に進め ません。 [Back] ボ タ ン を ク リ ッ ク す る と 、 前のページに戻 る こ と がで き ます。 前のページで制約を編集 し て [Next] を ク リ ッ ク す る と 、 ウ ィ ザー ド でデザ イ ン が解析 し なお さ れて、 それに合わせて新 し い制約が推奨 さ れ ます。 ほ と ん ど の場合、 こ の変更に よ っ て影響を受けない前に推奨 さ れた制約はその ま ま です。 推奨 さ れた制約を変更せずに前のページ を確 認 し ただけの場合は、 解析は実行 さ れ直 さ れないので、 通常は ラ ン タ イ ムが節約で き ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 25 第 2 章 : 制約の入力方法 重要 : タ イ ミ ン グ制約ウ ィ ザー ド を使用 し て、 既存の タ イ ミ ン グ制約を編集する こ と はで き ません。 こ の場合は、 タ イ ミ ン グ制約エデ ィ タ ーを使用す る 必要があ り ます。 ウ ィ ザー ド で推奨 さ れる制約 プ ラ イ マ リ ク ロ ッ ク ウ ィ ザー ド では、 図 2-16 に示す よ う に 2 つの ク ロ ッ ク カ テ ゴ リ が認識 さ れます。 X-Ref Target - Figure 2-16 図 2‐16 : 推奨 さ れる プ ラ イ マ リ ク ロ ッ ク • セ ッ ト ア ッ プ/ホール ド / リ ムーバル チ ェ ッ ク の タ イ ミ ン グ ス ラ ッ ク を計算す る のに必要なプ ラ イ マ リ ク ロ ッ ク は、 [Recommended Constraints] の表に表示 さ れます。 • [Constraints For Pulse Width Check Only] の表には、 パルス幅チ ェ ッ ク を実行す る のに必要な ク ロ ッ ク (min_period、 max_period、 max_skew、 min_low_pulse_width、 お よ び min_high_pulse_width) の みが表示 さ れます。 デフ ォ ル ト では、 こ れ ら の ク ロ ッ ク はレ ポー ト 目的のみに使用 さ れ、 イ ンプ リ メ ン テー シ ョ ン ツールの結果の質には影響 し ないので、 オ フ にな っ てい ます。 ウ ィ ザー ド では、 制約に対 し て適切な ク ロ ッ ク ソ ー ス ポ イ ン ト が自動的に認識 さ れ ます。 こ れは ク ロ ッ ク 信号が物 理的にデザ イ ンへ入力 さ れ る ク ロ ッ ク ツ リ ー ルー ト に該当 し ます。 ほ と ん ど の場合、 ク ロ ッ ク ソ ース ポ イ ン ト は入 力 ク ロ ッ ク ポー ト ですが、 タ イ ミ ン グ アー ク を持た ないプ リ ミ テ ィ ブの出力であ る 特殊な ケース も あ り ます。 た と えば、 7 シ リ ーズ デバ イ ス の場合、 ウ ィ ザー ド で GT_CHANNEL プ リ ミ テ ィ ブの出力に足 り ないプ ラ イ マ リ ク ロ ッ ク が認識 さ れます。 UltraScale™ デバ イ ス の場合、 入力 さ れ る ク ロ ッ ク 特性 と GT_CHANNEL コ ン フ ィ ギ ュ レーシ ョ ン と 接続性に基づいて、 GT_CHANNEL 出力 ク ロ ッ ク が自動的に派生 さ れ ます。 こ の結果、 ウ ィ ザー ド ではデザ イ ン バ ウ ン ダ リ の GT_CHANNEL セルか ら ア ッ プ ス ト リ ームにあ る プ ラ イ マ リ ク ロ ッ ク が推奨 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 26 第 2 章 : 制約の入力方法 生成ク ロ ッ ク タ イ ミ ン グ制約 ウ ィ ザー ド では、 その他のシーケ ン シ ャ ル セルの ク ロ ッ ク ピ ン を直接ま たは何 ら かのグルー ロ ジ ッ ク を使用 し て駆動す る 場合は、シーケ ン シ ャ ル セルの出力に生成 ク ロ ッ ク の作成が推奨 さ れます。PLL ま たは MMCM と は異な り 、 ユーザー ロ ジ ッ ク ではマ ス タ ー ク ロ ッ ク の周波数を乗算で き ないので、 図 2-17 に示す よ う に ウ ィ ザー ド か ら は除算係数を指定す る オプシ ョ ン し か提供 さ れません。 X-Ref Target - Figure 2-17 図 2‐17 : タ イ ミ ング制約ウ ィ ザー ド の生成ク ロ ッ ク のページ 複数のマ ス タ ー ク ロ ッ ク が生成 ク ロ ッ ク の ソ ース ポ イ ン ト に到達す る と 、 ウ ィ ザー ド では一意の名前を使用 し て該 当す る 生成 ク ロ ッ ク すべてが作成 さ れます。 図 2-17 は、 2 つの ク ロ ッ ク (clock6 お よ び clock7) がシーケ ン シ ャ ル セル FD7 に到達す る と こ ろ を示 し てい ま す。 こ の結果、 2 つの制約 ク ロ ッ ク 制約 (invWire お よ び invWire_1) が 推奨 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 27 第 2 章 : 制約の入力方法 フ ォ ワー ド ク ロ ッ ク タ イ ミ ン グ制約 ウ ィ ザー ド では、 定数入力を使用 し た ダブル デー タ レー ト レ ジ ス タ で駆動 さ れ る 出力ポー ト に生成 ク ロ ッ ク 制約が推奨 さ れ ま す。 入力定数の接続に基づいて、 生成 ク ロ ッ ク 位相が正 (0 度の位相シ フ ト ) ま たは反転 (180 度の位相シ フ ト ) のいずれかに調整 さ れ ます。 制約で使用 さ れたマ ス タ ー ク ロ ッ ク は、 ダブル デー タ レー ト レ ジ ス タ の ク ロ ッ ク ピ ンに到達す る ク ロ ッ ク です。図 2-18 の [Recommended Constraints] の表の [Source Clock] 列を参照 し て く だ さ い。 X-Ref Target - Figure 2-18 図 2‐18 : 推奨 さ れる フ ォ ワー ド ク ロ ッ ク 7 シ リ ーズ デバ イ ス フ ァ ミ リ の場合、 ウ ィ ザー ド で認識 さ れ る ト ポ ロ ジが 図 2-19 に示す よ う に表示 さ れます。 マ ス タ ー ク ロ ッ ク ま たは出力バ ッ フ ァ ーの性質には制限があ り ません。 X-Ref Target - Figure 2-19 図 2‐19 : 7 シ リ ーズのフ ォ ワー ド ク ロ ッ クの典型的な回路 UltraScale デバ イ ス フ ァ ミ リ の場合、 ODDR お よ び ODDRE1 プ リ ミ テ ィ ブが ODDR_MODE=TRUE プ ロ パテ ィ 付 き の OSERDESE3 に自動的に変更 さ れます。 ウ ィ ザー ド では 図 2-20 で示す ト ポ ロ ジが認識 さ れ、 OSERDESE3/D[0] は 1 に、 OSERDESE3/D[4] は 0 (位相シ フ ト な し ) に接続 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 28 第 2 章 : 制約の入力方法 X-Ref Target - Figure 2-20 図 2‐20 : UltraScale のフ ォ ワー ド ク ロ ッ ク の典型的な回路 外部フ ィ ー ド バ ッ ク遅延 タ イ ミ ン グ制約 ウ ィ ザー ド では、 デザ イ ン内に含ま れ る MMCM お よ び PLL セルの フ ィ ー ド バ ッ ク ループの接続性 が 解 析 さ れ ま す。 CLKFBIN お よ び CLKFBOUT ピ ン が I/O バ ッ フ ァ ー と MMCM ま た は PLL の プ ロ パ テ ィ COMPENSATION=EXTERNAL を使用 し てデザ イ ン ポー ト に接続 さ れ る 場合は、外部遅延制約 (最小 と 最大) が推奨 さ れ ます。 .図 2-21 は、 推奨 さ れ る 外部遅延制約を示 し てい ます。 X-Ref Target - Figure 2-21 図 2‐21 : 推奨 さ れる外部遅延制約 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 29 第 2 章 : 制約の入力方法 図 2-22 は、 典型的な MMCM に外部フ ィ ー ド バ ッ ク パス回路が使用 さ れた と こ ろ を示 し てい ます。 X-Ref Target - Figure 2-22 図 2‐22 : 典型的な MMCM 外部フ ィ ー ド バ ッ ク パス回路 現在の Vivado リ リ ース の場合、 フ ォ ワー ド ク ロ ッ ク を生成する ために使用 さ れ る ODDR な ど、 フ ィ ー ド バ ッ ク パ ス にシーケ ン シ ャ ル セルがあ る 場合、 タ イ ミ ン グ制約ウ ィ ザー ド で外部遅延制約が推奨 さ れません。 こ の場合、 外部遅 延制約を手動で作成す る か、 ウ ィ ザー ド 終了後に タ イ ミ ン グ制約エデ ィ タ ーを使用 し て作成する 必要があ り ます。 入力遅延 タ イ ミ ン グ制約 ウ ィ ザー ド では、 入力ポー ト か ら のすべてのパ ス が解析 さ れて、 デザ イ ン内のそれ ら のデス テ ィ ネー シ ョ ン ク ロ ッ ク と そのア ク テ ィ ブ エ ッ ジが認識 さ れ ま す。 こ の情報を基に、 Vivado IDE で使用可能な XDC テ ン プ レー ト に基づいて ウ基本的なシ ス テ ム同期の入力遅延制約が推奨 さ れます (テ ンプ レー ト の詳細は49 ページの 「XDC テ ンプ レー ト 」 を参照 し て く だ さ い)。 [Recommended Constraints] の表で制約を選択す る と 、 選択 し た テ ンプ レー ト に 関連す る 波形が [Waveform] タ ブの一番下に表示 さ れます。 30 ページの図 2-23 は、 ウ ィ ザー ド で提案 さ れた複数の入力遅延 と ユーザーが一部編集 し た例を示 し てい ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 30 第 2 章 : 制約の入力方法 X-Ref Target - Figure 2-23 図 2‐23 : 推奨 さ れる入力遅延制約のテ ン プ レー ト 各制約ご と に、 次の 3 つの特性を編集す る と 、 ボー ド の実際の イ ン タ ーフ ェ イ ス タ イ ミ ン グに該当す る 波形を指定で き ます。 • • [Synchronous] : ク ロ ッ ク と デー タ の関係を指定 し ます。 ° [System] (シ ス テ ム同期 イ ン タ ーフ ェ イ ス用) : こ の設定は、 デー タ が実行 さ れて別の ク ロ ッ ク エ ッ ジ (1 周期 ま たは ½ 周期) でキ ャ プチ ャ さ れ る 場合に使用 し ます。 ° [Source] ( ソ ース同期 イ ン タ ーフ ェ イ ス用) : こ の設定は、 デー タ が実行 さ れて同 じ ク ロ ッ ク エ ッ ジでキ ャ プ チ ャ さ れ る 場合に使用 し ます。 [Alignment] : ア ク テ ィ ブ ク ロ ッ ク エ ッ ジに対す る デー タ 遷移ア ラ イ メ ン ト を指定 し ます。 ° シ ス テ ム同期 イ ン タ ーフ ェ イ ス の場合にのみ、 次を指定で き ます。 - ° • [Edge] : こ の設定は、 ク ロ ッ ク と デー タ が同時に遷移する 場合に使用 し ます。 ソ ース同期 イ ン タ ーフ ェ イ ス の場合にのみ、 次を指定で き ます。 - [Center] : こ の設定は、 デー タ 有効ウ ィ ン ド ウ の真ん中で ク ロ ッ ク が遷移す る 場合に使用 し ます。 - [Edge Direct] : こ の設定は、 デー タ 有効ウ ィ ン ド ウ の最初で ク ロ ッ ク が遷移す る 場合に使用 し ます。 - [Edge MMCM] : こ の設定は、 デー タ 有効ウ ィ ン ド ウ の終わ り で ク ロ ッ ク が遷移す る 場合に使用 し ます。 [Data Rate and Edge] : テ ンプ レー ト に よ っ て制約が付け ら れた ア ク テ ィ ブ ク ロ ッ ク エ ッ ジ を指定 し ます。 ウ ィ ザー ド か ら 推奨 さ れ る デフ ォ ル ト 値は、 キ ャ プチ ャ シーケ ン シ ャ ル セルのア ク テ ィ ブ ク ロ ッ ク エ ッ ジに基づ き ます。 ° [Single Rise] : こ の設定は、 立ち上が り ク ロ ッ ク エ ッ ジが FPGA デバ イ ス の外部でデー タ を開始す る 場合に のみ使用 し ます。 ° [Single Fall] : こ の設定は、立ち下が り ク ロ ッ ク エ ッ ジが FPGA デバ イ ス の外部でデー タ を開始す る 場合にの み使用 し ます。 ° [Dual] : こ の設定は、 立ち上が り お よ び立ち下が り ク ロ ッ ク エ ッ ジの両方が FPGA デバ イ ス の外部でデー タ を開始す る 場合に使用 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 31 第 2 章 : 制約の入力方法 推奨 さ れ る ク ロ ッ ク は、通常入力パ ス のシーケ ン シ ャ ル セルに関連する ボー ド ク ロ ッ ク です。入力パ ス の内部 ク ロ ッ ク が MMCM ま たは PLL 生成 ク ロ ッ ク の場合、 MMCM ま たは PLL を駆動す る ボー ド ク ロ ッ ク が入力制約の基準 ク ロ ッ ク と し て使用 さ れます。 ただ し 、 次の よ う に内部 ク ロ ッ ク 波形 と ボー ド ク ロ ッ ク 波形が同 じ でない場合だけは例 外です。 • 周期が異な る 場合 入力制約は、 内部 ク ロ ッ ク と し て同 じ 波形を持つ仮想 ク ロ ッ ク を基準にする ので、 セ ッ ト ア ッ プ解析は 1 サ イ ク ル パ ス要件で実行 さ れます。 仮想 ク ロ ッ ク は自動的に作成 さ れます。 • 正の位相シ フ ト ク ロ ッ ク の場合 ウ ィ ザー ド では、 仮想 ク ロ ッ ク が基準 ク ロ ッ ク と し て使用 さ れます。 仮想 ク ロ ッ ク は、 ボー ド ク ロ ッ ク と し て同 じ 波形を使用 し て自動的に作成 さ れます。 ま た、 ウ ィ ザー ド では仮想 ク ロ ッ ク と 内部 ク ロ ッ ク 間のマルチサ イ ク ル パ ス制約 も 指定 さ れ、デフ ォ ル ト の解析が 1 周期 + セ ッ ト ア ッ プの位相シ フ ト 量に調整 さ れます。仮想 ク ロ ッ ク と マルチサ イ ク ル パ ス制約を組み合わせ る と 、 Vivado タ イ マーの処理に対 し て よ り シ ン プルな制約を提供で き る ので、 仮想 ク ロ ッ ク を基準にす る 入力ポー ト のみに影響を与え る こ と がで き ます。 負の位相シ フ ト の場合、 デフ ォ ル ト のセ ッ ト ア ッ プ パ ス要件は 1 サ イ ク ルか ら 位相シ フ ト 量を引いた周期なの で、 仮想 ク ロ ッ ク と マルチサ イ ク ル パス制約は必要あ り ません。 ウ ィ ザー ド では、 制約に対 し て選択 さ れた基準 ク ロ ッ ク を変更で き ません。 変更す る には、 XDC フ ァ イ ルを手動で 編集す る か、 ウ ィ ザー ド 終了後に タ イ ミ ン グ制約エデ ィ タ ーを使用す る 必要があ り ます。 適切 な テ ン プ レ ー ト を 選択 し た ら 、 ウ ィ ザー ド 右側の [Delay Parameters] パネ ルに遅延パ ラ メ ー タ ー値 を 入力 し 、 [Apply] を ク リ ッ ク し て入力内容を適用 し ます。 入力遅延式は、 [Display Parameter] フ ィ ール ド の下に表示 さ れます。 図 2-24 は、 DDR シ ス テ ム同期 イ ン タ ーフ ェ イ ス テ ンプ レー ト の [Delay Parameters] パネルを示 し てい ます。 X-Ref Target - Figure 2-24 図 2‐24 : 入力遅延パラ メ ー タ ーのパネル 遅延パ ラ メ ー タ ーは、 同 じ ク ロ ッ ク と 同 じ テ ンプ レー ト を 1 度に使用 し て複数の制約を選択お よ び編集す る と 速 く 入 力で き ます。 制約を入力 し て適用 し た ら 、 該当す る Tcl 構文を [Tcl Command Preview] タ ブで確認する か、 [Next] を ク リ ッ ク し て次 の段階に進め る こ と がで き ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 32 第 2 章 : 制約の入力方法 ヒ ン ト : タ イ ミ ン グ制約ウ ィ ザー ド では、 フ ォ ルス パ ス制約の付いた入力ポー ト は無視 さ れます。 こ れは、 通常デザ イ ンの ど の ク ロ ッ ク と も 既知の位相関係がない非同期 リ セ ッ ト を無視す る 場合な ど に特に便利です。フ ォ ルス パ ス制 約は、 ウ ィ ザー ド 外でのみ作成で き ます。 出力遅延 入力遅延の手順 と 同様、 タ イ ミ ン グ制約 ウ ィ ザー ド では、 すべての出力ポー ト へのパ ス が解析 さ れて、 デザ イ ン内の それ ら の ソ ース ク ロ ッ ク と そのア ク テ ィ ブ エ ッ ジが認識 さ れます。 テ ンプ レー ト の選択規則は、 29 ページの 「入力 遅延」 と 同 じ です。 32 ページの図 2-25 は、 ウ ィ ザー ド で提案 さ れた複数の出力遅延 と ユーザーが一部編集 し た例を 示 し てい ます。 X-Ref Target - Figure 2-25 図 2‐25 : 推奨 さ れる出力遅延制約のテ ン プ レー ト 各制約ご と に、 次の 3 つの特性を編集 し て、 ボー ド の実際の イ ン タ ーフ ェ イ ス タ イ ミ ン グに該当す る 波形を指定で き ます。 • [Synchronous] : ク ロ ッ ク と デー タ の関係を指定 し ます (詳細は29 ページの 「入力遅延」 を参照)。 • [Alignment] : ア ク テ ィ ブ ク ロ ッ ク エ ッ ジに対す る デー タ 遷移ア ラ イ メ ン ト を指定 し ます。 • ° [Setup/Hold] : こ の設定は、 FPGA デバ イ ス外でデー タ 有効ウ ィ ン ド ウ の タ イ ミ ン グ特性に基づいてテ ンプ レー ト 遅延パ ラ メ ー タ ーを指定す る 場合に使用 し ます。 ° [Skew] ( ソ ース同期のみ) : こ の設定は、 FPGA の出力ピ ンの ス キ ュ ー要件に基づいてテ ンプ レー ト 遅延パ ラ メ ー タ ーを指定す る 場合に使用 し ます。 [Data Rate and Edge] : テ ンプ レー ト に よ っ て制約が付け ら れた ア ク テ ィ ブ ク ロ ッ ク エ ッ ジ を指定 し ます (詳細は 29 ページの 「入力遅延」 を参照 し て く だ さ い)。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 33 第 2 章 : 制約の入力方法 推奨 さ れ る 入力遅延制約の場合 と 同様、基準 ク ロ ッ ク はほ と ん ど の場合ボー ド ク ロ ッ ク ですが、次の場合は例外です。 • ボー ド ク ロ ッ ク と 出力パ ス内部 ク ロ ッ ク が、 別の ク ロ ッ ク 周期にな る 場合 出力制約は、 内部 ク ロ ッ ク と し て同 じ 波形を持つ仮想 ク ロ ッ ク を基準にする ので、 セ ッ ト ア ッ プ解析は 1 サ イ ク ル パ ス要件で実行 さ れます。 仮想 ク ロ ッ ク は自動的に作成 さ れます。 • ボー ド ク ロ ッ ク と 比較 し て、 出力パス内部 ク ロ ッ ク に負の位相シ フ ト が付 く 場合 ウ ィ ザー ド では、 仮想 ク ロ ッ ク が基準 ク ロ ッ ク と し て使用 さ れます。 仮想 ク ロ ッ ク は、 ボー ド ク ロ ッ ク と し て同 じ 波形を使用 し て自動的に作成 さ れます。 ま た、 ウ ィ ザー ド では仮想 ク ロ ッ ク と 内部 ク ロ ッ ク 間のマルチサ イ ク ル パ ス制約 も 指定 さ れ、デフ ォ ル ト の解析が 1 周期 + セ ッ ト ア ッ プの位相シ フ ト 量に調整 さ れます。仮想 ク ロ ッ ク と マルチサ イ ク ル パ ス制約を組み合わせ る と 、 Vivado タ イ マーの処理に対 し て よ り シ ン プルな制約を提供で き る ので、 仮想 ク ロ ッ ク を基準にす る 出力ポー ト のみに影響を与え る こ と がで き ます。 正の位相シ フ ト の場合、 デフ ォ ル ト のセ ッ ト ア ッ プ パ ス要件は 1 サ イ ク ルか ら 位相シ フ ト 量を引いた周期なの で、 仮想 ク ロ ッ ク と マルチサ イ ク ル パス制約は必要あ り ません。 • フ ォ ワー ド ク ロ ッ ク が、共有の ク ロ ッ ク 接続に基づいて出力パ ス の タ イ ミ ン グ を指定す る ために認識 さ れ る 場合 フ ォ ワー ド ク ロ ッ ク は、 ウ ィ ザー ド の 3 つ目の段階であ る [Forwarded Clocks] ページで作成 さ れ る 必要があ り ま す。 そ こ で作成 し ない場合は、 ボー ド ク ロ ッ ク ま たは仮想 ク ロ ッ ク が出力遅延制約の基準 ク ロ ッ ク と し て使用 さ れます。 図 2-26 は、 7 シ リ ーズ フ ァ ミ リ 用の フ ォ ワー ド ク ロ ッ ク を使用 し た出力 ソ ース同期パ ス の基本的な例を示 し て い ます。 ODDR イ ン ス タ ン ス は、 ど ち ら も 同 じ ク ロ ッ ク ネ ッ ト に接続 さ れます (青のハ イ ラ イ ト 部分)。 ssco 生成 ク ロ ッ ク は、 既に ssco 出力ポー ト で定義 さ れてい ます。 X-Ref Target - Figure 2-26 図 2‐26 : フ ォ ワー ド ク ロ ッ ク を使用 し た ソ ース同期出力パスの例 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 34 第 2 章 : 制約の入力方法 • 図 2-27 は、 ウ ィ ザー ド の該当す る 制約を示 し てい ます。 X-Ref Target - Figure 2-27 図 2‐27 : フ ォ ワー ド ク ロ ッ ク を使用 し た推奨 さ れる ソ ース同期の出力パス遅延制約 適切なテ ンプ レー ト を選択 し た後は、 遅延パ ラ メ ー タ ー値を入力す る 必要があ り ます。 遅延パ ラ メ ー タ ーは、 同 じ ク ロ ッ ク と 同 じ テ ンプ レー ト を 1 度に使用 し て複数の制約を選択お よ び編集す る と 速 く 入力で き ます。 制約を入力 し て 適用 し た ら 、 該当す る Tcl 構文を [Tcl Command Preview] タ ブで確認す る か、 [Next] を ク リ ッ ク し て次の段階に進め る こ と がで き ます。 ヒ ン ト : タ イ ミ ン グ制約ウ ィ ザー ド では、 フ ォ ルス パ ス制約の付いた出力ポー ト は無視 さ れます。 フ ォ ルス パ ス制約 は、 ウ ィ ザー ド 外でのみ作成で き ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 35 第 2 章 : 制約の入力方法 組み合わせ遅延 パ ス の中には、 デバ イ ス内でシーケ ン シ ャ ル セルに よ り キ ャ プチ ャ さ れず、 入力ポー ト か ら 出力ポー ト に直接伝搬 さ れ る も のがあ り ます。 入力ポー ト が出力ポー ト と シーケ ン シ ャ ル セルの両方に接続 さ れ る と 、 タ イ ミ ン グ制約 ウ ィ ザー ド では入力/出力ポー ト ペア間に組み合わせ制約は推奨 さ れません。 こ れは、入力ポー ト には入力遅延段階で制約 を付けてお く 必要があ っ たか ら です。 組み合わせパ ス の場合、 図 2-28 に示す よ う に、 ウ ィ ザー ド ではデザ イ ン ポー ト の入力お よ び出力遅延 と 共に仮想 ク ロ ッ ク を定義す る よ う に推奨 さ れます。 X-Ref Target - Figure 2-28 図 2‐28 : 組み合わせパスの回路図お よび遅延制約 最終的な組み合わせパ ス遅延制約は、 次の よ う にな り ます。 • セ ッ ト ア ッ プ解析 : virtual clock period - max input delay - max output delay • ホール ド 解析 : 0 - min output delay - min input delay 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 36 第 2 章 : 制約の入力方法 仮想 ク ロ ッ ク 周期は、 制約の付いたすべての組み合わせパ ス の中で最大の組み合わせ遅延制約 よ り 大 き く な る よ う に 変更す る 必要があ り ます。 図 2-29 は、 入力/出力ポー ト ペア ご と に必要な遅延入力を示 し てい ます。 X-Ref Target - Figure 2-29 図 2‐29 : 推奨 さ れる組み合わせパス遅延 入力お よ び出力遅延制約が既存の も の よ り 優先 さ れ る こ と はあ り ません。 該当す る ポー ト に同 じ ク ロ ッ ク に対す る 複 数の遅延制約が含ま れ る 場合は、 すべての制約の中で最小値の も のが Vivado タ イ ミ ン グのホール ド 解析中に、 最大 値の も のがセ ッ ト ア ッ プ解析中に使用 さ れます。 すべての遅延を入力 し た ら 、 [Next] を ク リ ッ ク し て次の段階に進みます。 ヒ ン ト : タ イ ミ ン グ制約 ウ ィ ザー ド 外で set_max_delay お よ び set_min_delay コ マ ン ド を使用 し て も 、 組み合 わせパ ス に制約を付け る こ と がで き ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 37 第 2 章 : 制約の入力方法 物理的に排他的な ク ロ ッ ク グループ 物理的に排他的な ク ロ ッ ク は、 同 じ ソ ース ポ イ ン ト で定義 さ れて、 同 じ ク ロ ッ ク ツ リ ーで伝搬 さ れ る ク ロ ッ ク です。 図 2-30 は、 2 つのプ ラ イ マ リ ク ロ ッ ク が同 じ 入力ポー ト で定義 さ れ る 例を示 し てい ます。 X-Ref Target - Figure 2-30 図 2‐30 : 物理的に排他的な ク ロ ッ ク を使用 し たデザイ ン例 こ れ ら のオーバー ラ ッ プは、複数のアプ リ ケーシ ョ ン モー ド に 1 つのデザ イ ン と 制約デー タ ベース を使用 し て タ イ ミ ン グ を付け る 際には便利ですが、 こ れ ら の ク ロ ッ ク と その子の生成 ク ロ ッ ク には一緒に タ イ ミ ン グ を付け る べ き では あ り ません。図 2-31 に示す よ う に、 タ イ ミ ン グ制約ウ ィ ザー ド では こ の よ う な ク ロ ッ ク が認識 さ れ、 ク ロ ッ ク グルー プ制約が推奨 さ れ、 ク ロ ッ ク 乗せ換えパ ス で不必要な タ イ ミ ン グ解析が さ れない よ う にな り ます。 X-Ref Target - Figure 2-31 図 2‐31 : ク ロ ッ ク グループ制約を使用 し たデザイ ン例 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 38 第 2 章 : 制約の入力方法 論理的に排他的な ク ロ ッ ク グループ (相互作用な し ) 論理的に排他的な ク ロ ッ ク は異な る ソ ース ポ イ ン ト に定義 さ れ る ク ロ ッ ク ですが、マルチプ レ ク サ ま たはその他の組 み合わせ ロ ジ ッ ク のために、 こ れ ら の ク ロ ッ ク ツ リ ーの一部は共有 さ れます。 タ イ ミ ン グ制約ウ ィ ザー ド では、 こ の よ う な ク ロ ッ ク が認識 さ れ、 それ ら の間に タ イ ミ ン グ パ ス がない場合は、 それ ら に直接 ク ロ ッ ク グループ制約を付 け る こ と が推奨 さ れます (共有 ク ロ ッ ク ツ リ ーに接続 さ れ る ロ ジ ッ ク は除外)。 図 2-32 は、 clkA と clkB の 2 つの ク ロ ッ ク の例を示 し てい ます。 こ れ ら は、異な る 入力ポー ト で定義 さ れ、BUFGMUX の出力でオーバー ラ ッ プ し 始め ます。 X-Ref Target - Figure 2-32 図 2‐32 : 論理的に排他的な ク ロ ッ ク グループ (相互作用な し ) の例 論理的に排他的な ク ロ ッ ク グループ (相互作用あ り ) タ イ ミ ン グ制約 ウ ィ ザー ド では、 共有 ク ロ ッ ク ツ リ ーに接続 さ れ る ロ ジ ッ ク だけでな く 、 互いの間に タ イ ミ ン グ パ ス があ る 論理的に排他的な ク ロ ッ ク が認識 さ れます。 図 2-33 は、 clkA と clkB に共有 ク ロ ッ ク ツ リ ー部分があ り 、 その共有 ク ロ ッ ク ツ リ ーか ら clkA のみへの タ イ ミ ン グ パ ス も あ る 例を示 し てい ます。 X-Ref Target - Figure 2-33 図 2‐33 : 論理的に排他的な ク ロ ッ ク (相互作用あ り ) を使用 し たデザイ ン例 共有 ク ロ ッ ク ツ リ ーの ク ロ ッ ク 乗せ換えパス のみを無視する 必要があ る ので、 ウ ィ ザー ド では clkA お よ び clkB の コ ピーであ っ て も 、 共有 ク ロ ッ ク ツ リ ーにのみ存在す る 生成 ク ロ ッ ク を作成す る よ う に推奨 さ れます。 ク ロ ッ ク グ ループ制約は生成 ク ロ ッ ク のみに適用 さ れ る ので、共有 ク ロ ッ ク ツ リ ーの ロ ジ ッ ク 外のパ ス には通常どお り タ イ ミ ン グ制約が付 き ます。 図 2-34 は、 上記の例の場合に ウ ィ ザー ド で推奨 さ れ る 制約を示 し てい ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 39 第 2 章 : 制約の入力方法 X-Ref Target - Figure 2-34 図 2‐34 : 論理的に排他的な ク ロ ッ ク (相互作用あ り ) に推奨 さ れる制約 非同期ク ロ ッ ク 乗せ換え タ イ ミ ン グ制約 ウ ィ ザー ド では、 非同期 ク ロ ッ ク 間の ク ロ ッ ク 乗せ換え (CDC) パ ス の ト ポ ロ ジが解析 さ れ、 それが安 全であ る と 判断 さ れた場合は ク ロ ッ ク グループ ま たはフ ォ ルス パ ス が推奨 さ れます。 非同期 ク ロ ッ ク は位相関係が未知の ク ロ ッ ク です。 通常は同 じ プ ラ イ マ リ ク ロ ッ ク を共有 し なかっ た り 、 共通の周 期を使用 し ない場合な ど に未知にな り ます。 こ のため、 非同期 CDC パ ス の ス ラ ッ ク 計算は正確ではあ り ません。 非 同期 CDC パ ス のいずれかに タ イ ミ ン グ制約が付いてい る と 、 非同期 ク ロ ッ ク 間には大 き な ス キ ュ ーがあ る 可能性が あ る ため、 タ イ ミ ン グの結果の質がかな り 影響を受け、 タ イ ミ ン グ ク ロ ージ ャ が正 し く 行われない こ と があ り ます。 こ のため、 ユーザーが こ れ ら のパ ス に set_clock_groups、 set_false_path、 ま たは set_max_delay -datapath_only な ど の タ イ ミ ン グ例外を追加 し て、 タ イ ミ ン グ解析を完全に無視す る か、 ク ロ ッ ク ス キ ュ ー と ク ロ ッ ク のば ら つ き だけ を無視す る よ う に設定す る 必要があ り ます。 ま た、 メ タ ス テーブル状態を避け る ため、 デ ザ イ ンには正 し い CDC 回路を必ず イ ンプ リ メ ン ト す る 必要があ り ます。 Vivado の場合、 ウ ィ ザー ド では同期デー タ と 非同期 リ セ ッ ト に対 し て フ リ ッ プ フ ロ ッ プ ベース のシ ン ク ロ ナ イ ザー し か認識 さ れません。 こ の よ う なシ ン ク ロ ナ イ ザーの例については、 『Vivado Design Suite ユーザー ガ イ ド : デザ イ ン 解析お よ び ク ロ ージ ャ テ ク ニ ッ ク 』 (UG906) [参照 4] の 「CDC の レ ポー ト 」 を参照 し て く だ さ い。 図 2-35 は、 推奨 さ れ る 制約 (Recommended Constraints) と 推奨 さ れない制約 (Non-recommended Constraints) の表の例です。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 40 第 2 章 : 制約の入力方法 X-Ref Target - Figure 2-35 図 2‐35 : 推奨 さ れる制約 と 推奨 さ れない制約の表の例 ど ち ら の表に も 、 次の情報が表示 さ れます。 • [Source Clock] : ウ ィ ザー ド で認識 さ れ る CDC パス の始点の ク ロ ッ ク • [Destination Clock] : ウ ィ ザー ド で認識 さ れ る CDC パ ス の終点の ク ロ ッ ク • [Constraint] : 優先度の高い タ イ ミ ン グ例外か、 例外がない場合の ク ロ ッ ク 関係の特性のいずれか ° ° • [Recommended Constraints] の表では、 制約が作成 さ れ る と 予測 さ れ、 次の よ う な新 し い制約が表示 さ れま す。 - [asynch (clock groups)] : ど ち ら の方向の タ イ ミ ン グ も 無視する のが安全な場合。 こ の場合は set_clock_groups 制約が作成 さ れます。 - [asynch (false path)] : 一方向のパ ス を無視す る のが安全な場合のみ。 こ の場合は set_false_path 制約 が作成 さ れます。 [Non-recommended Constraints] の表では、 最終的に ク ロ ッ ク グループ ま たはフ ォ ルス パ ス例外を適用す る 前 に、 CDC パ ス にど の よ う に タ イ ミ ン グ制約が付け ら れ る のかが示 さ れます。 - [Timed - No Common Primary Clock] - [Timed - No Common Period] - [MaxDelay DataPath] : 少な く と も 1 つのパ ス に最大遅延 datapath_only 制約が付いて、 その他すべてのパ ス に フ ォ ルス パ ス制約が付 く 場合。 [Endpoints] : ウ ィ ザー ド で認識 さ れ る CDC パ ス の終点の数 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 41 第 2 章 : 制約の入力方法 • [Synchronized (with ASYNC_REG)] : すべてのシ ン ク ロ ナ イ ザー フ リ ッ プ フ ロ ッ プに ASYNC_REG=true プ ロ パ テ ィ が設定 さ れて る (ま たは設定 さ れていない) 状態で、 正 し く 同期 さ れた終点の数 • [Synchronizer without ASYNC_REG] : 少な く と も 1 つの フ リ ッ プ フ ロ ッ プに ASYNC_REG=true が付いていない 場合のシ ン ク ロ ナ イ ザーの数 • [Unknown] : ウ ィ ザー ド でシ ン ク ロ ナ イ ザーが検出 さ れなかっ た場合の CDC パ ス の終点の数 • [Max Delay Datapath Only] : set_max_delay -datapath_only 制約を使用する CDC パ ス の終点の数 表には、 可能な場合は ク ロ ス プ ロ ーブ リ ン ク が含まれます。 数を ク リ ッ ク す る と 、 該当す る CDC パ ス が ウ ィ ン ド ウ 下部の [Paths] タ ブに リ ス ト さ れます。1 つま たは複数の CDC パ ス を選択 し て [Schematic] ボ タ ン (F4) を ク リ ッ ク す る と 、 Vivado の メ イ ン ウ ィ ン ド ウ にパ ス の ロ ジ ッ ク が表示 さ れます。 推奨 さ れ る 非同期 ク ロ ッ ク グループ制約 タ イ ミ ン グ制約 ウ ィ ザー ド では、次の条件を満たす場合、2 つの ク ロ ッ ク 間に set_clock_groups -asynchronous 制約を付け る こ と が推奨 さ れます。 • すべてのパ ス の両方の方向にシ ン ク ロ ナ イ ザーが含まれ る 場合 • いずれかの方向に set_max_delay -datapath_only の付いたパ ス がない場合 (set_clock_groups の優先 度が高 く 、 既存の set_max_delay よ り も 優先 さ れて し ま う 場合) 推奨 さ れない非同期 ク ロ ッ ク グループ制約 タ イ ミ ン グ制約 ウ ィ ザー ド では、 デフ ォ ル ト で イ ネーブルにな ら ない制約が表に含まれます。 こ れ ら は、 次のいずれ かの理由か ら 推奨 さ れません。 • 少な く と も 1 つのパ ス のいずれかの方向にシ ン ク ロ ナ イ ザーが足 ら ない • 少な く と も 1 つのパ ス のいずれかの方向に set_max_delay -datapath_only が付いてい る デザ イ ンの早期バージ ョ ン を設定 し て、 後の最終段階で CDC パ ス と それ ら の制約に戻 る 場合は、 こ れ ら の制約はア ク テ ィ ベー ト す る よ う に指定で き ます。 CDC シ ン ク ロ ナ イ ザーお よ び ASYNC_REG プ ロ パテ ィ すべてのシ ン ク ロ ナ イ ザー フ リ ッ プ フ ロ ッ プには ASYNC_REG プ ロ パテ ィ を true に設定 し た も のを付けて、合成お よ び イ ンプ リ メ ン テーシ ョ ン中に ど の ロ ジ ッ ク 最適化か ら も シ ン ク ロ ナ イ ザー セルが保持 さ れ、それ ら の配置が最適 な MTBF (平均故障間隔) 統計に対 し て最適化 さ れ る よ う にす る こ と をお勧め し ます。 ク ロ ッ ク グループ制約が両方 の表でデフ ォ ル ト ま たはユーザーに よ り イ ネーブルにな っ てい る 場合は、 ウ ィ ザー ド で足 り ない ASYNC_REG=true プ ロ パテ ィ が設定 さ れます。 CDC 解析お よ び制約の完了 タ イ ミ ン グ制約 ウ ィ ザー ド では、 単純な シ ン ク ロ ナ イ ザーに基づいていない有効な CDC ト ポ ロ ジが認識 さ れない こ と があ り ます。 report_cdc コ マ ン ド を使用す る と 、 安全な状態にす る ために構造的な修正が必要な CDC パ ス が全 体的に表示 さ れます。 report_cdc の詳細は、 『V 『Vivado Design Suite ユーザー ガ イ ド : デザ イ ン解析お よ び ク ロ ー ジ ャ テ ク ニ ッ ク 』 (UG906) [参照 4] の 「CDC の レ ポー ト 」 を参照 し て く だ さ い。 set_max_delay -datapath_only が存在す る ために ウ ィ ザー ド で制約が推奨 さ れない場合は、通常 タ イ ミ ン グ制 約の付 く その他の CDC パ ス を個別に確認 し て、 さ ら に フ ォ ル ス パス制約を追加する と 、 無視す る よ う にで き る こ と があ り ます。 ポ イ ン ト ツー ポ イ ン ト の フ ォ ル ス パ ス制約は、 XDC フ ァ イ ル、 Tcl コ ン ソ ールま たは ウ ィ ザー ド 終了 後に タ イ ミ ン グ制約エデ ィ タ ーで作成す る 必要があ り ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 42 第 2 章 : 制約の入力方法 制約のサマ リ タ イ ミ ン グ制約 ウ ィ ザー ド の最後のページには、[Finish] を ク リ ッ ク し た後に タ ーゲ ッ ト XDC フ ァ イ ルの終わ り で適 用 さ れて保存 さ れ る 新 し い制約が ま と めて表示 さ れます。 各ハ イ パー リ ン ク を ク リ ッ ク する と 、 その制約の詳細を表 示で き ます。 次の図 2-36 は、 [Clock Summary] ページの例を示 し てい ます。 X-Ref Target - Figure 2-36 図 2‐36 : [Clock Summary] ページの例 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 43 第 2 章 : 制約の入力方法 [Timing Constraints] ウ ィ ン ド ウ [Timing Constraints] ウ ィ ン ド ウ は、 合成済みデザ イ ンお よ び イ ンプ リ メ ン ト 済みデザ イ ン でのみ使用可能です。 エ ラ ボ レー ト 済みデザ イ ンの制約では、 XDC フ ァ イ ルを直接使用お よ び編集す る 必要があ り ます。 詳細は、 51 ページの 「合成制約の作成」 を参照 し て く だ さ い。 [Timing Constraints] ウ ィ ン ド ウ を開 く には、 図 2-37に示す 3 つのオプシ ョ ンのいずれか を使用 し ます。 • [Window] → [Timing Constraints] を ク リ ッ ク し ます。 • Flow Navigator で [Synthesis] → [Synthesized Design] → [Edit Timing Constraints] を ク リ ッ ク し ます。 • Flow Navigator で [Implementation] → [Implemented Design] → [Edit Timing Constraints] を ク リ ッ ク し ます。 X-Ref Target - Figure 2-37 図 2‐37 : [Timing Constraints] ウ ィ ン ド ウ を開 く 方法 [Timing Constraints] ウ ィ ン ド ウ には、 メ モ リ 内の タ イ ミ ン グ制約が次のいずれかの順に表示 さ れます。 • XDC フ ァ イ ルお よ び Tcl ス ク リ プ ト で記述 さ れてい る の と 同 じ 順序 • [Tcl Console] ウ ィ ン ド ウ で入力 し たの と 同 じ 順序 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 44 第 2 章 : 制約の入力方法 X-Ref Target - Figure 2-38 図 2‐38 : [Timing Constraints] ウ ィ ン ド ウ 一部の制約は、 こ の ウ ィ ン ド ウ か ら は編集で き ません。 それ ら の制約には、 編集で き ない こ と を示すア イ コ ン が示 さ れます。 タ イ ミ ング制約の表 [Timing Constraint] ウ ィ ン ド ウ には、 既存の タ イ ミ ン グ制約の詳細が表形式で示 さ れます。 こ の表を利用 し て、 タ イ ミ ン グ制約のオプシ ョ ン を確認お よ び変更 し ます。 X-Ref Target - Figure 2-39 図 2‐39 : タ イ ミ ング制約の表 こ の表には、 2 つの列があ り ます。 • [Source File] : 制約が含まれ る XDC フ ァ イ ルま たは Tcl ス ク リ プ ト の名前 • [Scoped Cell] : 制約が適用 さ れた と き の現在の イ ン ス タ ン ス名。 こ の名前は通常、 専用制約が付属 し てい る IP イ ン ス タ ン ス に対応 し ます。 詳細は、 57 ページの 「制約の適用範囲の限定」 を参照 し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 45 第 2 章 : 制約の入力方法 表の最後の行を ダブル ク リ ッ ク す る と 、 選択 し た タ イ プの制約を新 し く 作成で き ま す。 制約を作成す る ダ イ ア ロ グ ボ ッ ク ス が表示 さ れ、 新 し い制約の詳細を入力で き ます。 [OK] を ク リ ッ ク し て制約を メ モ リ に適用 し 、 ダ イ ア ロ グ ボ ッ ク ス を閉 じ ます。 表の新 し い行に新 し い制約の情報が表示 さ れます。 既存の制約を編集す る には、 表の値を直接変更 し ます。 編集が完了 し た ら 、 [Apply] を ク リ ッ ク し て制約の変更を メ モ リ に適用 し ます。 重要 : 新 し い制約ま たは編集 し た制約を適用 し て も 、 XDC フ ァ イ ルには保存 さ れません。 XDC フ ァ イ ルに保存す る には、 [Save Constraints] を ク リ ッ ク す る 必要があ り ます。 重要 : IP 制約は、 編集ま たは削除で き ません。 IP に付属 し てい る 制約を変更す る には、 対応す る IP の XDC フ ァ イ ル をデ ィ ス エーブルに し 、 制約を XDC フ ァ イ ルに コ ピー し て、 制約を編集 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 46 第 2 章 : 制約の入力方法 制約の作成 (カ テ ゴ リ 別) [Timing Constraints] ウ ィ ン ド ウ の左上のペ イ ンで制約のカ テ ゴ リ を選択す る と 、 右側のペ イ ンにそのカ テ ゴ リ の制約 の表が表示 さ れます。 こ れに よ り 、 既に作成 さ れてい る 同 じ カ テ ゴ リ の制約を確認で き ます。 X-Ref Target - Figure 2-40 図 2‐40 : タ イ ミ ング制約のカ テ ゴ リ 制約を作成す る には、 カ テ ゴ リ 名を ダブル ク リ ッ ク し ます。 各オプシ ョ ンの値を指定する ダ イ ア ロ グ ボ ッ ク ス が表示 さ れます。 ダ イ ア ロ グ ボ ッ ク ス で [OK] を ク リ ッ ク する と 、 次の よ う にな り ます。 1. 構文が検証 さ れます。 2. 制約が メ モ リ に適用 さ れます。 3. 新 し い制約が表の最後に追加 さ れます。 4. 新 し い制約が全制約の リ ス ト の最後に追加 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 47 第 2 章 : 制約の入力方法 すべての制約 [Timing Constraints] ウ ィ ン ド ウ の下部には、 メ モ リ に読み込まれてい る 全制約の リ ス ト が適用 さ れてい る 順に表示 さ れます。 制約は、 それが含まれ る XDC フ ァ イ ルま たは Tcl ス ク リ プ ト でグループ化 さ れます。 XDC フ ァ イ ルが特定 の階層セルのみに適用 さ れ る 場合は、 フ ァ イ ル名の横にセル名が表示 さ れます。 X-Ref Target - Figure 2-41 図 2‐41 : [Timing Constraints] ウ ィ ン ド ウの [All Constraints] リ ス ト (例 1) こ のペ イ ンの ツールバーで [Collapse All] ま たは [Expand All] ボ タ ン を ク リ ッ ク す る と 、ソ ース フ ァ イ ルの制約を非表 示ま たは表示で き ます。 X-Ref Target - Figure 2-42 図 2‐42 : [Timing Constraints] ウ ィ ン ド ウの [All Constraints] リ ス ト (例 2) ヒ ン ト : [Expand All] を ク リ ッ ク し て制約を非表示にす る と 、 メ モ リ に読み込まれてい る 制約フ ァ イ ル と 、 その フ ァ イ ルの適用範囲をすばや く 確認で き ます。 report_compile_order -constraints コ マ ン ド を使用 し て も 、 同 じ 情 報を表示で き ます。 [Group by source] を オ フ にす る と 制約が表で表示 さ れ、ソ ース制約フ ァ イ ル と 適用 さ れ る セルの情報が [Source File] お よ び [Scoped Cell] 列に表示 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 48 第 2 章 : 制約の入力方法 X-Ref Target - Figure 2-43 図 2‐43 : [Timing Constraints] ウ ィ ン ド ウの [All Constraints] リ ス ト (例 3) • 制約を削除す る には、 その制約を選択 し て [X] を ク リ ッ ク し ます。 • 読み取 り 専用でない制約を編集す る には、 制約の表を使用 し ます。 編集が完了 し た ら 、 [Apply] を ク リ ッ ク し て 制約の変更を メ モ リ に適用 し ます。 • 新 し い制約を追加す る には、 前述のダ イ ア ロ グ ボ ッ ク ス を使用す る か、 Tcl コ ン ソ ールに制約を入力 し ます。 新 し い制約は、 リ ス ト の最後の <unsaved_constraints> と い う グループに表示 さ れます。 X-Ref Target - Figure 2-44 図 2‐44 : [Timing Constraints] ウ ィ ン ド ウの [All Constraints] リ ス ト (例 4) 制約を保存す る と 、 新 し い制約は 「target」 と マー ク さ れた XDC フ ァ イ ルの最後に追加 さ れます。 メ モ リ のデザ イ ンに関連付け ら れてい る 制約セ ッ ト に タ ーゲ ッ ト XDC フ ァ イ ルがない場合、 ま たは制約セ ッ ト に Tcl ス ク リ プ ト し かない場合は、 制約の保存先を指定す る よ う メ ッ セージが表示 さ れます。 制約は定期的に保存 し て く だ さ い。 制約を保存す る には、 ツールバーの [Save Constraints] を ク リ ッ ク す る か、 ま たは [File] → [Save Constraints] を ク リ ッ ク し ます。 重要 : 新規ま たは変更 さ れた制約を Tcl ス ク リ プ ト に保存する こ と はで き ません。 注意 : [Timing Constraints] ウ ィ ン ド ウ の表に適用 さ れていない制約があ る と き に、[Tcl Console] ウ ィ ン ド ウ で新 し い制 約を入力 し ないで く だ さ い。 [Timing Constraints] ウ ィ ン ド ウ の リ ス ト での制約の順序 と メ モ リ での制約の順序が異な る も のにな る 可能性があ り ます。 混乱を避け る ため、 既存の制約を変更 し た ら 、 必ずすべての制約を適用 し 直す よ う に し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 49 第 2 章 : 制約の入力方法 XDC テ ン プ レー ト XDC テ ン プ レー ト には、 [Window] → [Language Templates] を ク リ ッ ク し て [Templates] ウ ィ ン ド ウ か ら ア ク セ ス で き ます。 X-Ref Target - Figure 2-45 図 2‐45 : XDC テ ン プ レー ト XDC テ ン プ レー ト の内容 XDC テ ンプ レー ト には、 次が含まれます。 • 次の よ う な よ く 使用 さ れ る タ イ ミ ン グ制約 ° ク ロ ッ ク 定義 ° ジ ッ ター ° 入力/出力遅延 ° 例外 • 物理制約 • コ ン フ ィ ギ ュ レーシ ョ ン制約 XDC テ ン プ レー ト の使用 XDC テ ンプ レー ト を使用す る には、 次の手順に従い ます。 1. 使用す る テ ンプ レー ト を選択 し ます。 2. [Preview] セ ク シ ョ ンに表示 さ れ る テ キ ス ト を コ ピー し ます。 3. XDC フ ァ イ ルにテ キ ス ト を貼 り 付け ます。 4. 汎用文字列をデザ イ ンの実際の名前ま たは値に置 き 換え ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 50 第 2 章 : 制約の入力方法 ア ド バン ス XDC テ ン プ レー ト シ ス テ ム同期お よ び ソ ース同期 I/O 遅延制約な ど のア ド バン ス制約では、 デザ イ ン要件を キ ャ プチ ャ す る ため Tcl 変 数を設定す る 必要があ る も のがあ り ます。 Tcl 変数は、 実際の set_input_delay お よ び set_output_delay 制約 で使用 し ます。 デフ ォ ル ト 値ではな く 必要な値が代入 さ れてい る こ と を確認 し て く だ さ い。 X-Ref Target - Figure 2-46 図 2‐46 : I/O 遅延制約のテ ン プ レー ト 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 51 第 2 章 : 制約の入力方法 合成制約の作成 Vivado IDE 合成エ ン ジ ン では、 デザ イ ン の RTL 記述がテ ク ノ ロ ジにマ ッ プ さ れたネ ッ ト リ ス ト に変換 さ れ ます。 こ のプ ロ セ ス は複数の段階で実行 さ れ、 多数の タ イ ミ ン グ ド リ ブン最適化が含まれます。 ザ イ リ ン ク ス FPGA デバ イ ス には、 さ ま ざ ま な方法で使用可能な ロ ジ ッ ク 機能が多数含まれてい ます。 イ ンプ リ メ ン テーシ ョ ンの最後にすべてのデザ イ ン要件が満た さ れ る よ う にす る ため、 制約を使用 し て合成エン ジ ンに指示を与え る 必要があ り ます。 Vivado IDE 合成の制約には、 次の 4 種類があ り ます。 • 「RTL 属性」 • 「 タ イ ミ ン グ制約」 • 「物理制約お よ び コ ン フ ィ ギ ュ レーシ ョ ン制約」 • 「エ ラ ボ レー ト 済みデザ イ ン制約」 RTL 属性 RTL 属性は RTL フ ァ イ ルに記述す る 必要があ り ます。 RTL 属性では通常、 ロ ジ ッ ク の特定の部分のマ ッ プ ス タ イ ル、 レ ジ ス タ やネ ッ ト な ど の保持、 最終的なネ ッ ト リ ス ト のデザ イ ン階層の制御な ど を指定 し ます。 詳細は、 『Vivado Design Suite ユーザー ガ イ ド : 合成』 (UG901) [参照 4] の 「合成属性」 を参照 し て く だ さ い。 重要 : DONT_TOUCH 属性は USED_IN_SYNTHESIS お よ び USED_IN_IMPLEMENTATION のプ ロ パテ ィ には従い ま せん。 合成 XDC で DONT_TOUCH プ ロ パテ ィ を使用する と 、 USED_IN_IMPLEMENTATION の値にかかわ ら ず、 イ ン プ リ メ ン テーシ ョ ンに伝搬 さ れます。 USED_IN_SYNTHESIS お よ び USED_IN_IMPLEMENTATION の詳細は、 9 ページ の 「合成お よ び イ ン プ リ メ ン テー シ ョ ン制約フ ァ イ ル」 を参照 し て く だ さ い。 DONT_TOUCH 属性の例 set_property DONT_TOUCH true [get_cells fsm_reg] タ イ ミ ング制約 タ イ ミ ン グ制約は、 XDC フ ァ イ ルで合成エ ン ジ ン に渡す必要があ り ます。 セ ッ ト ア ッ プ解析に関す る 次の制約のみ が、 合成結果に影響 し ます。 • create_clock • create_generated_clock • set_input_delay • set_output_delay • set_clock_groups • set_false_path • set_max_delay • set_multicycle_path 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 52 第 2 章 : 制約の入力方法 物理制約および コ ン フ ィ ギ ュ レーシ ョ ン制約 物理制約お よ び コ ン フ ィ ギ ュ レーシ ョ ン制約は、 合成アルゴ リ ズ ムでは無視 さ れます。 エ ラ ボレー ト 済みデザイ ン制約 推奨 : 合成 XDC の最初のバージ ョ ン を作成す る と き は、 高レベルのデザ イ ン要件を記述す る 単純な タ イ ミ ン グ制約 を使用 し て く だ さ い。 フ ロ ーの こ の段階では、 ネ ッ ト 遅延のモデ リ ン グは正確ではあ り ま せん。 こ の時点での主な目的は、 イ ン プ リ メ ン テーシ ョ ン を開始す る 前に、 タ イ ミ ン グ を満たすか、 タ イ ミ ン グが少 し の差で満た さ れていない合成済みネ ッ ト リ ス ト を得 る こ と です。 多 く の場合、 こ の状態を達成す る には XDC お よ び RTL を何回か修正す る 必要があ り ます。 52 ページの図 2-47に、 RTL ベース の XDC の作成手順を示 し ます。 エ ラ ボ レー ト さ れたデザ イ ン を使用 し て、 合成用 に制約す る デザ イ ンのオブジ ェ ク ト 名を見つけ ます。 XDC フ ァ イ ルを保存す る 前に、 [Tcl Console] ウ ィ ン ド ウ を使用 し て XDC コ マ ン ド の構文を確認 し て く だ さ い。 エ ラ ボ レー ト 済みデザ イ ン では、 制約を作成 し 、 ク ロ ッ ク やデザ イ ン オブジ ェ ク ト を ク エ リ で き ますが、 タ イ ミ ン グ レ ポー ト コ マ ン ド は実行で き ません。 X-Ref Target - Figure 2-47 57/䝋䞊䝇㻌䝣䜯䜲䝹 䜶䝷䝪䝺䞊䝖䛥䜜䛯䝕䝄䜲䞁䜢 㛤䛟䜎䛯䛿ㄞ䜏㎸䜏 ;'&䝣䜯䜲䝹 9LYDGR 䝕䞊䝍䝧䞊䝇 䜶䝷䝪䝺䞊䝖῭䜏 䝕䝄䜲䞁ෆ䛾ྡ๓䜢䜽䜶䝸 7FO 䝁䞁䝋䞊䝹䛷;'&ᵓᩥ䜢᳨ド 㐺ษ䛺;'&䝁䝬䞁䝗䜢㻌7FO 䝁䞁䝋䞊䝹 䛛䜙;'&䝣䜯䜲䝹䛻䝁䝢䞊 12 ᵓᩥ䛜㐺ษ䛛" <(6 ; 図 2‐47 : エ ラ ボ レー ト さ れたデザイ ン での制約の作成 合成用の制約を記述す る 際に確実に使用で き る デザ イ ン オブジ ェ ク ト は、 次の と お り です。 • 最上位ポー ト • 手動で イ ン ス タ ン シエー ト さ れたプ リ ミ テ ィ ブ (セルお よ びピ ン) 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 53 第 2 章 : 制約の入力方法 エ ラ ボ レー ト さ れたデザ イ ン の作成時に、 一部の RTL 名が変更 さ れた り 失われた り し ます。 こ れが よ く 発生す る の は、 次の名前です。 • 「1 ビ ッ ト レ ジ ス タ の名前」 • 「複数ビ ッ ト レ ジ ス タ の名前」 • 「吸収 さ れ る レ ジ ス タ お よ びネ ッ ト 」 • 「階層名」 1 ビ ッ ト レ ジ ス タ の名前 デフ ォ ル ト では、 RTL の信号名の後に _reg が付いた名前にな り ます。 た と えば、 VHDL お よ び Verilog で次の よ う に定義 さ れた信号の場合、 エ ラ ボ レーシ ョ ン で生成 さ れ る イ ン ス タ ン ス 名は wbDataForInputReg_reg と な り ます。 VHDL: signal wbDataForInputReg : std_logic; Verilog: reg wbDataForInputReg; 図 2-48に、 レ ジ ス タ と その ピ ンの回路図を示 し ます。 レ ジ ス タ イ ン ス タ ン ス ま たはその ピ ンに制約を定義で き ます。 X-Ref Target - Figure 2-48 図 2‐48 : エ ラ ボ レー ト さ れたデザイ ン での 1 ビ ッ ト レ ジ ス タ 複数ビ ッ ト レ ジ ス タ の名前 デフ ォ ル ト では、 RTL の信号名の後に _reg が付いた名前にな り ます。 XDC コ マ ン ド では、 複数ビ ッ ト レ ジ ス タ の 個々のビ ッ ト のみを ク エ リ お よ び制約で き ます。 た と えば、 VHDL お よ び Verilog で次の よ う に定義 さ れた信号の場合、 エ ラ ボ レーシ ョ ン で生成 さ れ る イ ン ス タ ン ス 名は loadState_reg[0]、 loadState_reg[1]、 お よ び loadState_reg[2] と な り ます。 VHDL: signal loadState: std_logic_vector(2 downto 0); Verilog: reg [2:0] loadState; 図 2-49 に、 レ ジ ス タ の回路図を示 し ます。 複数ビ ッ ト レ ジ ス タ は、 1 ビ ッ ト レ ジ ス タ のベ ク タ ー と し て表示 さ れま す。 回路図では、 ベ ク タ ーは可能な限 り 小 さ く 表示 さ れます。 各ビ ッ ト を個別に表示す る こ と も 可能です。 X-Ref Target - Figure 2-49 図 2‐49 : エ ラ ボレー ト さ れたデザイ ン での複数ビ ッ ト レ ジ ス タ 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 54 第 2 章 : 制約の入力方法 各レ ジ ス タ を個別に制約す る か、 次の形式を使用 し て グループ と し て制約で き ます。 • レ ジ ス タ ビ ッ ト 0 のみ loadState_reg[0] • すべての レ ジ ス タ ビ ッ ト loadState_reg[*] 重要 : 複数ビ ッ ト レ ジ ス タ ま たは一般的に複数ビ ッ ト イ ン ス タ ン ス を、 「loadState_reg[2:0]」 と い う パ タ ーン を使用 し て ク エ リ す る こ と はで き ません。 上記の名前は合成後のネ ッ ト リ ス ト での名前 と も 一致す る ので、 こ れ ら に対 し て設定 さ れた制約は通常 イ ンプ リ メ ン テーシ ョ ンで も 機能 し ます。 吸収 さ れる レ ジ ス タ およびネ ッ ト RTL ソ ース にあ る レ ジ ス タ やネ ッ ト の一部が、 さ ま ざ ま な理由に よ り エ ラ ボ レー ト 済みデザ イ ン (ま たは合成済みデ ザ イ ン) か ら な く な っ て し ま う こ と があ り ます。 た と えば、 メ モ リ ブ ロ ッ ク 、 DSP、 シ フ ト レ ジ ス タ の推論では、 複 数のデザ イ ン オブジ ェ ク ト を 1 つの リ ソ ース に配置する こ と が必要 と な り ます。こ れ ら のオブジ ェ ク ト を使用 し て制 約を定義 し ないで、 接続 さ れてい る 別の レ ジ ス タ やネ ッ ト を使用で き る か検討 し てみて く だ さ い。 階層名 Vivado 合成でデザ イ ンの階層を完全に保持する よ う 指定 し ない場合、 合成中に一部ま たはすべての階層を フ ラ ッ ト 化で き ます。 詳細は、 『Vivado Design Suite ユーザー ガ イ ド : 合成』 (UG901) [参照 4] の 「合成設定」 の flatten_hierarchy に関す る 情報を参照 し て く だ さ い。 推奨 : 合成制約には、 完全に解決 さ れた階層名を使用 し て く だ さ い。 その よ う にす る と 、 階層の変換にかかわ ら ず、 最終的なネ ッ ト リ ス ト 名 と 一致す る 可能性が高 く な り ます。 た と えば、 デザ イ ンのサブ レベルに次の よ う な レ ジ ス タ があ る と し ます。 エ ラ ボ レ ー ト 済みデザ イ ンの例 inst_A/inst_B/control_reg 合成中、 こ の レ ジ ス タ に特別な最適化は実行 さ れない と する と 、 ツール オプシ ョ ン ま たはデザ イ ン構造に よ っ て、 フ ラ ッ ト 名ま たは階層名が得 ら れます。 フ ラ ッ ト ネ ッ ト リ ス ト での イ ン ス タ ン ス名 inst_A/inst_B/control_reg (F) 階層ネ ッ ト リ ス ト での イ ン ス タ ン ス名 inst_A/inst_B/control_reg (H) フ ラ ッ ト 化 さ れた階層レベルを示すのに も ス ラ ッ シ ュ (/) が使用 さ れ る ので、 明 ら かな違いはあ り ません。 メ モ リ 内 のオブジ ェ ク ト を ク エ リ す る 際に、 違いがはっ き り し ます。 次の コ マ ン ド では、 F のネ ッ ト リ ス ト オブジ ェ ク ト が返 さ れ、 H のネ ッ ト リ ス ト オブジ ェ ク ト は返 さ れません。 % get_cells -hierarchical *inst_B/control_reg % get_cells inst_A*control_reg 階層名の問題を回避す る ため、 次の よ う にす る こ と をお勧め し ます。 • get_* コ マ ン ド を -hierarchical オプシ ョ ン な し で使用 し ます。 • エ ラ ボ レー ト 済みデザ イ ンに表示 さ れ る すべての階層レベルを / を使用 し て示 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 55 第 2 章 : 制約の入力方法 階層オ プ シ ョ ン を使用 し ない例 次の コ マ ン ド は、 フ ラ ッ ト ネ ッ ト リ ス ト と 階層ネ ッ ト リ ス ト の ど ち ら で も 機能 し ます。 % get_cells inst_A/inst_B/*_reg % get_cells inst_*/inst_B/control_reg 次の よ う にす る こ と も で き ます。 % get_cells % get_cells -hier -filter {NAME =~ inst_A/inst_B/*_reg} -hier -filter {NAME =~ inst_*/inst_B/control_reg} 注意 : 階層セルで も 同様に、合成を実行する と き に階層ピ ンに制約を設定 し ないで く だ さ い。ま た、組み合わせ ロ ジ ッ ク の演算子を接続す る ネ ッ ト に制約を設定 し ないで く だ さ い。 こ れ ら は LUT に結合 さ れ、 ネ ッ ト リ ス ト か ら な く な る 可能性があ り ます。 推奨 : 制約を変更 し た ら XDC フ ァ イ ルを保存 し 、 エ ラ ボ レー ト さ れたデザ イ ン を読み込み直 し て、 メ モ リ 内の制約 と XDC フ ァ イ ルの制約が一致す る よ う に し て く だ さ い。 合成後に、 メ モ リ 内の同 じ 合成 XDC を使用 し て合成済みデ ザ イ ン を読み込み、 [Report Timing Summary] を使用 し て タ イ ミ ン グ解析を実行 し ます。 合成に よ り デザ イ ンが変換 さ れてい る ため、 合成前の制約の一部は正 し く 適用 さ れない可能性があ り ます。 こ の問題 を解決す る には、 次を実行 し ます。 1. 合成済みネ ッ ト リ ス ト に適用す る 新 し い XDC 構文を見つけ ます。 2. イ ンプ リ メ ン テーシ ョ ンのみに使用す る 制約を新 し い XDC フ ァ イ ルに保存 し ます。 3. 合成のみに使用す る 合成制約を別の XDC フ ァ イ ルに移動 し ます。 イ ン プ リ メ ン テーシ ョ ン制約の作成 合成済みネ ッ ト リ ス ト が生成 さ れた ら 、 イ ンプ リ メ ン テーシ ョ ン に適用す る XDC フ ァ イ ルま たは Tcl ス ク リ プ ト と 共に メ モ リ に読み込みます。 XDC を読み込んだ と き にツールに よ り 表示 さ れ る メ ッ セージ を見て、 制約を確認 し 、 適 用で き ない制約を修正す る 必要があ り ます。 合成済みネ ッ ト リ ス ト のオブジ ェ ク ト 名が、エ ラ ボ レー ト 済みデザ イ ンの名前 と 異な る 場合があ り ます。その場合は、 正 し い名前で制約を作成 し 直 し 、 イ ンプ リ メ ン テーシ ョ ンのみの XDC フ ァ イ ルに保存 し ます。 すべての XDC フ ァ イ ルが正 し く 読み込まれた ら 、 次の目的で タ イ ミ ン グ解析を実行で き ます。 • 入力お よ び出力遅延な ど の欠けてい る 制約を追加 • フ ォ ルス パ ス、 マルチサ イ ク ル パ ス、 最小/最大遅延制約な ど の タ イ ミ ン グの例外を追加 • パ ス が長いために違反が大 き く な っ てい る も のを特定 し 、 RTL 記述を修正 合成に使用 し た の と 同 じ 基本制約 を 使用 し 、 イ ン プ リ メ ン テーシ ョ ン 特定の新 し い制約 を 保存す る 2 つ目の XDC フ ァ イ ルを作成で き ます。 物理制約お よ び コ ン フ ィ ギ ュ レーシ ョ ン制約を別の XDC フ ァ イ ルに保存す る こ と も 可能 です。 56 ページの図 2-50 に、 ネ ッ ト リ ス ト ベース の XDC の作成手順を示 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 56 第 2 章 : 制約の入力方法 X-Ref Target - Figure 2-50 ྜᡂ῭䜏䝛䝑䝖䝸䝇䝖 ྜᡂ῭䜏䝕䝄䜲䞁䜢 㛤䛟䜎䛯䛿ㄞ䜏㎸䜏 䜲䞁䝥䝸䝯䞁䝔䞊䝅䝵䞁 ;'&䝣䜯䜲䝹 9LYDGR 䝕䞊䝍䝧䞊䝇 9LYDGR,'(䜎䛯䛿7FO 䝁䞁䝋䞊䝹䜢 ⏝䛧䛶᪂䛧䛔ไ⣙䜢ධຊ 12ไ⣙䛾㏣ຍ䛜ᚲせ 䝍䜲䝭䞁䜾䛜 㐺ษ䛛" 12㐺ษ䛺ไ⣙ 57/䝕䝄䜲䞁䜢ಟṇ ྜᡂᒓᛶ䜢㏣ຍ ␗䛺䜛ྜᡂ䜸䝥䝅䝵䞁䜢⏝ <(6 ไ⣙䜢ಖᏑ 䜲䞁䝥䝸䝯䞁䝔䞊䝅䝵䞁䜢ᐇ⾜ 9 図 2‐50 : 合成済みデザイ ン での制約の作成 イ ンプ リ メ ン テーシ ョ ンに進む前に、 大 き な タ イ ミ ン グ違反がない こ と を確認する 必要があ り ます。 配置配線でほ と ん ど のマ イ ナーな タ イ ミ ン グ違反は修正で き ますが、タ イ ミ ン グ ク ロ ージ ャ を不可能にす る よ う な根本的なデザ イ ン の問題は修正で き ません。 推奨 : RTL を再確認 し て、 違反のあ る パ ス の ロ ジ ッ ク レベル数を削減 し た り 、 ク ロ ッ ク ツ リ ーを簡潔に し て専用 ク ロ ッ ク リ ソ ース が使用 さ れ る よ う に し て、関連す る ク ロ ッ ク 間の ス キ ュ ーを最小限に抑え る よ う に し て く だ さ い。合 成属性を追加 し た り 、 異な る 合成オプシ ョ ン を使用す る こ と も 可能です。 詳細は、 『Vivado Design Suite ユーザー ガ イ ド : 合成』 (UG901) [参照 4] の 「 タ イ ミ ン グ解析の実行」 ま たは 『Vivado Design Suite ユーザー ガ イ ド : イ ンプ リ メ ン テーシ ョ ン』 (UG904) [参照 8] の 「 イ ンプ リ メ ン テーシ ョ ン でのデザ イ ン 制約の使用」 を参照 し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 57 第 2 章 : 制約の入力方法 制約の適用範囲の限定 特定の XDC フ ァ イ ルの制約は、 必要に応 じ て、 デザ イ ンの特定のモジ ュ ール、 特定のセル、 ま たはその両方に適用 で き ます。 こ れは、 最上位の情報な し で、 制約をデザ イ ンのサブ レベル用に作成 し て適用す る のに便利であ り 、 タ ー ゲ ッ ト の階層セル以外に制約が適用 さ れ る のを防ぐ こ と がで き ます。 デフ ォ ル ト では、 Vivado プ ロ ジ ェ ク ト 内で生成 さ れた Vivado IP カ タ ロ グか ら のすべての IP コ アは、 こ の メ カ ニズ ム を使用 し てその制約を メ モ リ に読み込みます。 XDC フ ァ イルの適用範囲限定のプ ロパテ ィ 制約の適用範囲を限定す る には、 XDC フ ァ イ ルで次のプ ロ パテ ィ を指定 し ます。 • SCOPED_TO_REF : モジ ュ ール (ま たはエン テ ィ テ ィ ) の名前を指定 し ます。 制約は、 指定 し たモジ ュ ール (ま たはエン テ ィ テ ィ ) のすべての イ ン ス タ ン ス に適用 さ れます。 • SCOPED_TO_CELLS : 階層セルの名前を指定 し ます。 制約は、 各階層セルに個別に適用 さ れます。 • SCOPED_TO_REF + SCOPED_TO_CELLS : 両方のプ ロ パテ ィ を指定 し た場合、 制約は SCOPED_TO_REF で指 定 さ れたモジ ュ ール (ま たはエン テ ィ テ ィ ) 内にあ る SCOPED_TO_CELLS で指定 さ れた各セルに適用 さ れます。 こ れ ら のプ ロ パテ ィ は、 IP カ タ ロ グ を使用 し て RTL プ ロ ジ ェ ク ト に追加 し た IP コ アに対 し ては自動的に設定 さ れま す。 XDC フ ァ イルの適用範囲限定プ ロパテ ィ の設定例 図 2-51 に、 2 つの階層セル uart_tx_ctl_i0 お よ び uart_baud_gen_tx_i0 を含む、 uart_tx モジ ュ ールの イ ン ス タ ン ス であ る uart_tx_i0 セルを示 し ます。 プ ロ ジ ェ ク ト には、 uart_tx_ctl モジ ュ ールを制約す る XDC フ ァ イ ル (uart_tx_ctl.xdc) が含まれます。 X-Ref Target - Figure 2-51 図 2‐51 : XDC フ ァ イルの適用範囲限定プ ロパテ ィ の設定例 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 58 第 2 章 : 制約の入力方法 uart_tx_ctl.xdc の適用範囲を限定する プ ロ パテ ィ を使用する 同等の Tcl は、 次の と お り です。 こ の値は、 Vivado IDE で XDC フ ァ イ ルの [Properties] ウ ィ ン ド ウ で も 設定で き ます。 # Using the reference module name only: set_property SCOPED_TO_REF uart_tx_ctl [get_files uart_tx_ctl.xdc] # Using the cell name only: set_property SCOPED_TO_CELLS uart_tx_i0/uart_tx_ctl_i0 [get_files uart_tx_ctl.xdc] # Using both the uart_tx reference module and uart_tx_ctl_i0 instance: set_property SCOPED_TO_REF uart_tx [get_files uart_tx_ctl.xdc] set_property SCOPED_TO_CELLS uart_tx_ctl_i0 [get_files uart_tx_ctl.xdc] Vivado を非プ ロ ジ ェ ク ト モー ド で使用す る 場合、 read_xdc コ マ ン ド で -ref お よ び -cells オプシ ョ ン を使用する と 、 同 じ 結果を達成で き ます。 # Using the reference module name only: read_xdc -ref uart_tx_ctl uart_tx_ctl.xdc # Using the cell name only: read_xdc -cells uart_tx_i0/uart_tx_ctl_i0 uart_tx_ctl.xdc # Using both the uart_tx reference module and uart_tx_ctl_i0 instance read_xdc -ref uart_tx -cells uart_tx_ctl_i0 uart_tx_ctl.xdc XDC フ ァ イルの適用範囲限定の メ カ ニズム 制約の適用範囲の限定には、ポー ト を除 き 、SDC (Synopsys Design Constraints) 標準の一部であ る current_instance メ カ ニズ ムが利用 さ れます。 current_instance コ マ ン ド でデザ イ ンの下位階層を指定 し た場合、 オブジ ェ ク ト ク エ リ コ マ ン ド ではその階層レベル と その下位階層に含まれ る オブジ ェ ク ト のみが返 さ れます。 ただ し 、 タ イ ミ ン グ ク ロ ッ ク オブジ ェ ク ト お よ びネ ッ ト リ ス ト ポー ト は例外です。 • タ イ ミ ン グ ク ロ ッ ク は、 create_clock ま たは create_generated_clock で定義 し ます。 こ れ ら の ク ロ ッ ク は、 current_instance の設定にかかわ ら ず、 デザ イ ン全体か ら ア ク セ ス で き ます。 get_clocks コ マ ン ド を使用 す る と 、 現在の イ ン ス タ ン ス に含まれない ク ロ ッ ク ま たは現在の イ ン ス タ ン ス を越えて伝搬 さ れ る ク ロ ッ ク を ク エ リ で き ます。 適用範囲が限定 さ れた制約を作成する 際、 ク ロ ッ ク が現在の イ ン ス タ ン ス に完全に含まれていな い場合は、 ク ロ ッ ク に タ イ ミ ン グ例外を定義す る こ と はお勧め し ません。 ク ロ ッ ク を XDC で参照で き る よ う に す る には、 ク ロ ッ ク が既に定義 さ れてい る 必要があ る ので、 プ ロ ジ ェ ク ト の XDC フ ァ イ ルの順序を変更す る 必 要があ る 場合があ り ます。 • get_ports コ マ ン ド を使用す る と 、 current_instance コ マ ン ド で下位 イ ン ス タ ン ス を設定 し ていて も 最上 位ポー ト を取得で き ますが、 read_xdc -ref/-cells コ マ ン ド で下位 イ ン ス タ ン ス に設定 さ れた XDC フ ァ イ ルを読み込む場合や、 SCOPED_TO_REF/SCOPED_TO_CELLS フ ァ イ ル プ ロ パテ ィ を設定 し た後にデザ イ ン を読 み込んだ場合、 get_ports コ マ ン ド の動作は異な り ます。 ° get_ports で使用 さ れ る ポー ト 名は、 最上位ポー ト 名ではな く 、 指定 さ れてい る イ ン ス タ ン ス イ ン タ ー フ ェ イ ス のポー ト 名です。 ° 指定 さ れてい る イ ン ス タ ン ス ポー ト がデザ イ ンの階層を介 し て最上位ポー ト に直接接続 さ れてい る 場合、 get_ports コ マ ン ド で最上位ポー ト が返 さ れ、 制約は最上位ポー ト に適用 さ れます。 ° 指定 さ れてい る イ ン ス タ ン ス ポー ト と 最上位ポー ト の間に最下位セル (I/O お よ び ク ロ ッ ク バ ッ フ ァ ーを含 む) があ る 場合、 get_ports コ マ ン ド は get_pins コ マ ン ド にな り 、 指定 さ れてい る 階層 イ ン ス タ ン ス ピ ンが返 さ れます。 XDC フ ァ イ ルの適用範囲限定の メ カ ニズ ムは、 すべての Vivado IP 制約フ ァ イ ルの読み込みに使用 さ れます。 59 ペー ジの図 2-52 お よ び59 ページの図 2-53 に、 こ の方法を使用 し て IP レベルの XDC を読み込んだ と き の get_ports コ マ ン ド の処理例を示 し ます。 59 ページの図 2-52 では、 IP 内に I/O バ ッ フ ァ ーが イ ン ス タ ン シエー ト さ れ、 IP イ ン タ ーフ ェ イ ス ピ ンがその階層に 関係な く 最上位のポー ト に直接接続 さ れてい ます。 IP の XDC が適用 さ れ る と 、 get_ports コ マ ン ド の引数が自動 的に最上位ポー ト に置 き 換え ら れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 59 第 2 章 : 制約の入力方法 こ れに よ り 、 IP レベルに LOC ま たは IOSTANDARD の よ う な物理制約を設定で き 、 それが必要な最上位ポー ト に配 置 さ れ る よ う にな り ます。 IP に対 し てデザ イ ンの最上位ポー ト 名を指定す る 必要はあ り ません。 X-Ref Target - Figure 2-52 WRS ,3 ,3 ,%8) ,%8) ; 図 2‐52 : IP ポー ト の最上位ポー ト への変換 図 2-53 では IP に I/O バ ッ フ ァ ーが含まれないので、 IP イ ン タ ーフ ェ イ ス ピ ン と 最上位ポー ト 間に I/O バ ッ フ ァ ーが 挿入 さ れます。こ の結果、XDC が適用 さ れた と き に get_ports が IP イ ン ス タ ン ス ピ ン (階層ピ ン な ど) の get_pins に変換 さ れます。 X-Ref Target - Figure 2-53 WRS ,3 ,3 ,%8) ; 図 2‐53 : IP ポー ト の階層ピ ンへの変換 こ の機能は、 IP の イ ン タ ーフ ェ イ ス に制約を作成す る 際や、 最上位デザ イ ン の名前を知 ら ずにサブ レベル モジ ュ ー ルを作成す る 際に有益です。 特定の イ ン ス タ ン ス に範囲が限定 さ れてい る XDC フ ァ イ ルに最上位ポー ト にのみ適用で き る 制約が含 ま れてお り 、 その IP イ ン ス タ ン ス が最上位ポー ト に直接接続 さ れていない場合は、 エ ラ ーが返 さ れ ます。 た と えば、 次の制約は 最上位ポー ト のみに適用可能で、 階層ピ ンには適用で き ません。 • set_input_delay/set_output_delay • set_property IOSTANDARD XDC を使用 し た IP およびサブ モ ジ ュ ールの制約 IP のパ ッ ケージ化機能を使用 し て IP を生成 し 、 Vivado の IP カ タ ロ グか ら 使用す る 際、 XDC 制約 も パ ッ ケージに含 め る こ と がで き ます。 Vivado Design Suite の IP はプ ラ グ ア ン ド プ レ イ であ り 、 最上位デザ イ ン制約を完了す る のに、 制約を切 り 貼 り す る ための IP のサンプル プ ロ ジ ェ ク ト は必要あ り ません。 IP は、 ス タ ン ド ア ロ ンの最上位デザ イ ン と 同様に、その IP 用に開発 さ れた XDC フ ァ イ ル と 共にパ ッ ケージ化で き ます。IP カ タ ロ グ を使用 し て IP をプ ロ ジ ェ ク ト に イ ン ス タ ン シエー ト し た場合、 Vivado ツールで制約が適切に読み込まれます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 60 第 2 章 : 制約の入力方法 同様に、 デザ イ ンのサブモジ ュ ール用に制約を作成 し 、 プ ロ ジ ェ ク ト フ ロ ーでは SCOPED_TO_REF/SCOPED_TO_CELLS XDC フ ァ イ ル プ ロ パテ ィ を設定、 非プ ロ ジ ェ ク ト モー ド では read_xdc -ref/-cells コ マ ン ド を使用す る と 、 IP コ ア と 同 じ 制約適用範囲限定 メ カ ニズ ム を使用で き ます。 範囲を特定 し た ク エ リ のガ イ ド ラ イ ン こ の フ ロ ーを適切に使用す る には、制約が IP ま たはサブモジ ュ ール イ ン ス タ ン ス のみに適用 さ れ る よ う に XDC 制約 を記述す る 必要があ り ます。 Vivado ツールでは、 57 ページの 「制約の適用範囲の限定」 で説明 し た よ う に、 ク エ リ 検索の範囲を特定の階層レベルに設定で き ます。 IP ま たはサブモジ ュ ール用に制約を作成す る 際は、 ク エ リ コ マ ン ド の動作を理解 し てお く 必要があ り ます。 • セル/ネ ッ ト /ピ ン す。 ° ° オブジ ェ ク ト の ク エ リ は、 指定 さ れた イ ン ス タ ン スお よ びそのサブモジ ュ ールに制限 さ れま get_cells/get_nets/get_pins <name pattern> オブジ ェ ク ト の NAME プ ロ パテ ィ は、 ス コ ープに指定 さ れた イ ン ス タ ン ス ではな く 、 最上位に対す る オブ ジ ェ ク ト の完全階層パ ス を示 し ます。 NAME プ ロ パテ ィ に対 し て get_* コ マ ン ド の -filter オプシ ョ ン を使用す る 場合は、 glob 文字列一致演算子を使用 し 、 * で開始する パ タ ーン を指定 し ます。 次に例を示 し ます。 get_nets -hierarchical -filter {NAME =~ *clk} • get_ports は最上位ポー ト ま たは階層ピ ン を返 し ます。 • ネ ッ ト リ ス ト のヘルパー コ マ ン ド も 範囲が限定 さ れます。 ° • I/O ヘルパー コ マ ン ド は、 範囲が限定 さ れた XDC では使用で き ません。 ° • • ° 現在の イ ン ス タ ン ス に供給 さ れ る ク ロ ッ ク を取得す る には、 get_clocks -of_objects [get_ports <interfacePinName>] を使用 し ます。 ° 現在の イ ン ス タ ン ス内で自動的に生成 さ れた ク ロ ッ ク を取得す る には、 get_clocks -of_objects [get_pins <instName/outPin>] (instName は ク ロ ッ ク ジ ェ ネ レー タ ー イ ン ス タ ン ス) を使用 し ます。 -of_objects オプシ ョ ン を使用す る と 、 デザ イ ンに含まれ る すべてのオブジ ェ ク ト を検索で き ます。 get_pins clk を実行す る と 、 エ ラ ーが返 さ れます。 パ ス ト レース コ マ ン ド も 範囲が限定 さ れます。 ° • get_ports -of_objects [get_nets <scoped_instance_net>] IP/サブモジ ュ ール イ ン タ ーフ ェ イ ス ピ ンは ク エ リ で き ません。 ° • 例 : get_pins -leaf -of_objects [get_nets local_net] 現在の イ ン ス タ ン ス イ ン タ ーフ ェ イ ス のネ ッ ト に接続 さ れてい る 最上位ポー ト を ク エ リ で き ます。 ° • get_clocks、 all_clocks get_clocks -of_objects を使用す る と 、 最上位お よ び ロ ーカルの ク ロ ッ ク オブジ ェ ク ト を ク エ リ で き ます。 ° • all_inputs、 all_outputs ク ロ ッ ク コ マ ン ド では範囲は限定 さ れず、 デザ イ ンのすべての タ イ ミ ン グ ク ロ ッ ク が返 さ れます。 ° • all_ffs、 all_latches、 all_rams、 all_registers、 all_dsps、 all_hsios では、 現在の イ ン ス タ ン ス に含まれ る イ ン ス タ ン ス のみが返 さ れます。 all_fanin/all_fanout は指定 さ れた範囲でのみ実行 さ れ、 その境界を越え ては実行 さ れません。 特定の ク ロ ッ ク に接続 さ れてい る すべてのセルを ク エ リ す る には、 all_registers コ マ ン ド を -clock オプ シ ョ ン を指定 し て使用す る のではな く 、 get_cells/get_pins/get_nets コ マ ン ド で最 も 特定的なパ タ ーン を指定 し ます。 制約す る 必要があ る のが数個のオブジ ェ ク ト であ る のに、 多数のオブジ ェ ク ト を含む リ ス ト が返 さ れ る と 、 実行時間が長 く な る 可能性があ り ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 61 第 2 章 : 制約の入力方法 範囲を限定 し た タ イ ミ ン グ制約のガ イ ド ラ イ ン 最上位デザ イ ンに悪影響を与え ない よ う にす る には、 IP ま たはサブモジ ュ ールに対 し て記述 し た タ イ ミ ン グ制約が、 一部の ク ロ ッ ク 定義を除 き 、 その IP の境界を越え て伝搬 さ れない よ う にす る 必要があ り ます。 た と えば、 IP の XDC に IP に入力 さ れ る 2 つの ク ロ ッ ク ネ ッ ト 間にフ ォ ルス パ ス制約を設定す る と し ます。 IP には 非同期 ク ロ ッ ク 境界に適切な回路が含ま れていて も 、 デザ イ ンの残 り の部分には含ま れていない場合があ り ます。 2 つの ク ロ ッ ク が関連 し てお り 、 ハー ド ウ ェ ア を正 し く 機能 さ せ る ために、 デザ イ ンの残 り の部分で こ れ ら の ク ロ ッ ク の タ イ ミ ン グ を解析す る 必要があ る 場合、 こ れは問題 と な り ます。 ま た、 第 6 章 「XDC の優先順位」 で説明 し てい る よ う に、 IP の XDC フ ァ イ ルで定義 さ れた タ イ ミ ン グ例外が最上位 制約 よ り 優先 さ れて し ま う 場合があ り ます。 こ の よ う な状況を回避す る ため、 IP の ロ ーカル ネ ッ ト リ ス ト オブジ ェ ク ト に制約を適用す る こ と をお勧め し ます。 2 つのグ ロ ーバル ク ロ ッ ク 間の フ ォ ル ス パ ス の場合は、 IP 内の開始点 セルのグループか ら IP 内の終点セルのグループに設定 し ます。 こ の方法は、 グ ロ ーバル例外に対 し 、 ポ イ ン ト ツー ポ イ ン ト 例外 と 呼ばれます。 IP/サブモジ ュ ールの XDC に推奨 さ れ る 制約設定方法は、 次の と お り です。 • 次の箇所に定義 さ れ る 場合にのみ、 コ アの XDC 内で ク ロ ッ ク を作成 し ます。 ° IP 内に イ ン ス タ ン シエー ト さ れた入力バ ッ フ ァ ーに直接接続 さ れ る ポー ト ° IP 内の ド ラ イ バー ピ ン (GTX 出力な ど) • ク ロ ッ ク を ロ ーカルで再定義 し 直すのではな く 、 get_clocks ロ ッ ク を ク エ リ し ます。 • ポー ト が最上位ポー ト に直接接続 さ れ、 I/O バ ッ フ ァ ーが IP 内に イ ン ス タ ン シエー ト さ れてい る 場合にのみ、 入 力お よ び出力遅延を指定 し ます。 • IP 内に制限 さ れていない 2 つの ク ロ ッ ク に タ イ ミ ン グ例外を定義 し ない よ う に し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com -of_objects コ マ ン ド を使用 し て最上位 ク 62 第 3章 ク ロ ッ クの定義 ク ロ ッ ク について デジ タ ル デザ イ ンでは、ク ロ ッ ク が レ ジ ス タ か ら レ ジ ス タ にデー タ を転送す る ための時間の基準 と な り ます。Vivado® 統合設計環境 (IDE) の タ イ ミ ン グ エ ン ジ ンは、 ク ロ ッ ク の特性を使用 し て タ イ ミ ン グ パ ス要件を算出 し 、 ス ラ ッ ク を算出 し てデザ イ ンの タ イ ミ ン グ マージ ン を レ ポー ト し ます。 詳細は、 『Vivado Design Suite ユーザー ガ イ ド : デザ イ ン解析お よ び ク ロ ージ ャ テ ク ニ ッ ク 』 (UG906) [参照 4] の 「 タ イ ミ ン グ解析の実行」 を参照 し て く だ さ い。 タ イ ミ ン グ パ ス を正確に最大限に網羅する ため、 ク ロ ッ ク を正 し く 定義する 必要があ り ます。 ク ロ ッ ク は次の特性に よ り 定義 さ れます。 • その ツ リ ー ルー ト の ド ラ イ バー ピ ン ま たはポー ト ( ソ ース ポ イ ン ト ) で定義 さ れます。 • エ ッ ジは、 周期 と 波形の特性で表現 さ れます。 • 周期はナ ノ 秒 (ns) で定義 し 、 波形が繰 り 返す間隔に対応 し ます。 • 波形は、 ク ロ ッ ク 周期内の立ち上が り エ ッ ジお よ び立ち下が り エ ッ ジの絶対時間 (ns) の リ ス ト です。 波形の リ ス ト には偶数個の値を含め る 必要があ り 、最初の値は最初の立ち上が り エ ッ ジ を示 し ます。指定 し ない限 り 、デ ュ ー テ ィ ー サ イ ク ルはデフ ォ ル ト で 50% にな り 、 位相シ フ ト は 0ns にな り ます。 図 3-1 の例では、 ク ロ ッ ク Clk0 は周期が 10ns、デュ ーテ ィ サ イ ク ルが 50%、位相シ フ ト が 0ns にな り 、 ク ロ ッ ク Clk1 は周期が 8ns、 デ ュ ーテ ィ サ イ ク ルが 75%、 位相シ フ ト が 2ns にな り ます。 Clk0: period = 10, waveform = {0 5} Clk1: period = 8, waveform = {2 8} X-Ref Target - Figure 3-1 ϱϬй ϱϬй ůŬϬ ϬŶƐ Ϯϱй ϭϬŶƐ ϱŶƐ ϳϱй ϭϱŶƐ ůŬϭ ϬŶƐ ϮŶƐ ϴŶƐ ϭϬŶƐ ϭϲŶƐ 図 3‐1 : ク ロ ッ ク波形の例 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 62 第 3 章 : ク ロ ッ クの定義 伝搬 さ れた ク ロ ッ ク 周期お よ び波形は、 ク ロ ッ ク の理想的な特性を表 し ま す。 ク ロ ッ ク が FPGA デバ イ ス に入力 さ れ、 ク ロ ッ ク ツ リ ー を介 し て伝搬 さ れ る と 、 ク ロ ッ ク エ ッ ジに遅延が発生 し 、 ノ イ ズお よ びハー ド ウ ェ アの動作に よ り 変動す る 可能性が あ り ます。 こ れ ら は ク ロ ッ ク ネ ッ ト ワ ー ク レ イ テ ン シお よ び ク ロ ッ ク のば ら つ き と 呼ばれます。 ク ロ ッ ク のば ら つ き には、 次の も のが含まれます。 • ク ロ ッ ク ジ ッ タ ー (76 ページの 「 ク ロ ッ ク ジ ッ タ ー」 参照) • 位相エ ラ ー • ユーザーが指定 し たその他のば ら つ き (76 ページの 「その他の ク ロ ッ ク のば ら つ き 」 参照) Vivado IDE では、 ク ロ ッ ク はデフ ォ ル ト で レ イ テ ン シお よ びば ら つき を含む伝搬 さ れた ク ロ ッ ク と し て処理 さ れ、 ク ロ ッ ク ツ リ ー挿入遅延お よ びば ら つ き を含む正確な ス ラ ッ ク 値が算出 さ れます。 専用ハー ド ウ ェ ア リ ソ ース ザ イ リ ン ク ス FPGA デバ イ ス の専用ハー ド ウ ェ ア リ ソ ース に よ り 、 多数のデザ イ ン ク ロ ッ ク が効率的にサポー ト さ れます。 こ れ ら の ク ロ ッ ク は、 通常ボー ド 上の外部 コ ン ポーネ ン ト に よ り 生成 さ れ、 入力ポー ト か ら デバ イ ス に供給 さ れます。 ク ロ ッ ク は、 ク ロ ッ ク 調整ブ ロ ッ ク と 呼ばれ る 次のプ リ ミ テ ィ ブで も 生成で き ます。 • MMCM • PLL • BUFR LUT やレ ジ ス タ な ど の通常のセルで ク ロ ッ ク を変換す る こ と も 可能です。 次のセ ク シ ョ ンに、 ク ロ ッ ク の生成元別に ク ロ ッ ク を定義す る のに最適な方法を説明 し ます。 プ ラ イ マ リ ク ロ ッ ク プ ラ イ マ リ ク ロ ッ ク は、 次のいずれかか ら 供給 さ れ る ボー ド ク ロ ッ ク です。 • 入力ポー ト • ギガ ビ ッ ト ト ラ ン シーバーの出力ピ ン (再生 さ れた ク ロ ッ ク な ど) プ ラ イ マ リ ク ロ ッ ク は、 create_clock コ マ ン ド でのみ定義で き ます。 プ ラ イ マ リ ク ロ ッ ク は、 ネ ッ ト リ ス ト オブジ ェ ク ト に接続する 必要があ り ます。 こ のネ ッ ト リ ス ト オブジ ェ ク ト は、 すべての ク ロ ッ ク エ ッ ジの発信元 と な る ポ イ ン ト で、 こ こ か ら ク ロ ッ ク が ク ロ ッ ク ツ リ ーのダ ウ ン ス ト リ ームに伝 搬 さ れ ます。 Vivado IDE で ス ラ ッ ク 値の算出に使用 さ れ る ク ロ ッ ク レ イ テ ン シお よ びば ら つ き を求め る と き に、 プ ラ イ マ リ ク ロ ッ ク の ソ ース ポ イ ン ト に よ り 時間 0 が決ま り ます。 重要 : Vivado IDE では、プ ラ イ マ リ ク ロ ッ ク が定義 さ れたポ イ ン ト のア ッ プ ス ト リ ームにあ る セルか ら の ク ロ ッ ク ツ リ ー遅延は無視 さ れます。 デザ イ ンの中央にあ る ピ ンにプ ラ イ マ リ ク ロ ッ ク を定義する と 、 タ イ ミ ン グ解析では一部 の レ イ テ ン シのみが使用 さ れます。 こ れは、 こ の ク ロ ッ ク がデザ イ ン内のその他の関連 ク ロ ッ ク と 通信 し てい る 場合 に、 ク ロ ッ ク 間の ス キ ュ ー値 (そ し て結果的に ス ラ ッ ク 値) が不正確 と な る ので問題です。 まず、 プ ラ イ マ リ ク ロ ッ ク を定義す る 必要があ り ます。 プ ラ イ マ リ ク ロ ッ ク は、 多 く の タ イ ミ ン グ制約の基準 と な り ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 63 第 3 章 : ク ロ ッ クの定義 プ ラ イ マ リ ク ロ ッ ク の例 図 3-2 では、 ボー ド ク ロ ッ ク はポー ト sysclk か ら デバ イ ス に入力 さ れ、 入力バ ッ フ ァ ーお よ び ク ロ ッ ク バ ッ フ ァ ー を介 し てパ ス レ ジ ス タ に到達 し ます。 • 周期 : 10ns • デ ュ ーテ ィ サ イ ク ル : 50% • 位相シ フ ト : な し X-Ref Target - Figure 3-2 Z' ƐLJƐĐůŬ ZĞĐŽŵŵĞŶĚĞĚ ƉƌŝŵĂƌLJĐůŽĐŬ ƐŽƵƌĐĞƉŽŝŶƚ /h& Z' ĂƚĂWĂƚŚ Y Y h&' ϱϬй ϱϬй ƐLJƐĐůŬ ϬŶƐ ϱŶƐ ϭϬŶƐ ϭϱŶƐ 図 3‐2 : プ ラ イ マ リ ク ロ ッ クの例 推奨 : ボー ド ク ロ ッ ク は、 ク ロ ッ ク バ ッ フ ァ ーの出力ではな く 入力ポー ト で定義 し ます。 対応す る ザ イ リ ン ク ス デザ イ ン制約 (XDC) create_clock -period 10 [get_ports sysclk] sysclk と 同様に、 ボー ド ク ロ ッ ク devclk はポー ト ClkIn か ら デバ イ ス に入力 さ れます。 • 周期 : 10ns • デ ュ ーテ ィ サ イ ク ル : 25% • 位相シ フ ト : 90 度 対応す る XDC : create_clock -name devclk -period 10 -waveform {2.5 5} [get_ports ClkIn] 図 3-3 では、 ト ラ ン シーバー gt0 はボー ド 上の高速 リ ン ク か ら ク ロ ッ ク rxclk を再生 し ます。 ク ロ ッ ク rxclk は周期が 3.33ns、デ ュ ーテ ィ サ イ ク ルが 50% で、MMCM に入力 さ れます。MMCM は、補正 さ れた ク ロ ッ ク を複数生成 し ます。 GT0 の出力 ド ラ イ バー ピ ン上に rxclk を定義す る 際、 MMCM で駆動 さ れ る 生成 さ れた ク ロ ッ ク の ソ ース ポ イ ン ト は すべて gt0/RXOUTCLK と な り ます。 こ れ ら の間のパ ス の ス ラ ッ ク 算出では、 適切な ク ロ ッ ク レ イ テ ン シお よ びば ら つ き の値が使用 さ れます。 create_clock -name rxclk -period 3.33 [get_pins gt0/RXOUTCLK] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 64 第 3 章 : ク ロ ッ クの定義 X-Ref Target - Figure 3-3 Z' Y ŵŵĐŵϬ ŐƚϬ ZyKhd>< Z' ĂƚĂWĂƚŚ Y ƌdžĐůŬ ><&/E ><&Khd ></Eϭ ><KhdϬ ><Khdϭ ZĞĐŽŵŵĞŶĚĞĚ ƉƌŝŵĂƌLJĐůŽĐŬ ƐŽƵƌĐĞƉŽŝŶƚ ϱϬй ϱϬй ƌdžĐůŬ ϬŶƐ ϭ͘ϲϲŶƐ ϯ͘ϯϯŶƐ 図 3‐3 : GT プ ラ イ マ リ ク ロ ッ ク の例 仮想ク ロ ッ ク 仮想 ク ロ ッ ク は、 デザ イ ンの ど のネ ッ ト リ ス ト エ レ メ ン ト に も 物理的に接続 さ れていない ク ロ ッ ク です。 仮想 ク ロ ッ ク を定義す る には、 create_clock コ マ ン ド を ソ ース を指定せずに使用 し ます。 一般的に、 仮想 ク ロ ッ ク は次の よ う な場合に入力遅延お よ び出力遅延を定義す る のに使用 さ れます。 • 外部デバ イ ス I/O の基準 ク ロ ッ ク がデザ イ ン ク ロ ッ ク のいずれで も ない。 • FPGA I/O パ ス が内部で生成 さ れた ク ロ ッ ク に関連付け ら れてお り 、 その ク ロ ッ ク を派生 し たボー ド ク ロ ッ ク を 基準に し て適切に タ イ ミ ン グ解析で き ない。 注記 : こ の状況は 2 つの周期の比が整数ではない場合に発生 し 、 タ イ ミ ン グ パ ス 要件が非常に厳 し く な っ た り 、 非現実的な も のにな っ た り す る こ と があ り ます。 • 内部 ク ロ ッ ク の特性を変更せずに、 I/O 遅延制約に関連す る ク ロ ッ ク に異な る ジ ッ タ ーお よ びレ イ テ ン シ を変更 す る 場合。 た と え ば、 ク ロ ッ ク clk_virt は周期 が 10ns で、 ネ ッ ト リ ス ト オ ブ ジ ェ ク ト に 関連付 け ら れ て い な い と し ま す。 [<objects>] 引数は指定 し ません。 こ の場合、 -name の指定が必須にな り ます。 create_clock -name clk_virt -period 10 入力お よ び出力遅延制約で使用す る 前に、 仮想 ク ロ ッ ク を定義す る 必要があ り ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 65 第 3 章 : ク ロ ッ クの定義 生成ク ロ ッ ク こ のセ ク シ ョ ンでは、 生成 ク ロ ッ ク について説明 し ます。 次の内容が含まれます。 • 「ユーザー定義の生成 ク ロ ッ ク 」 • 「自動的に派生 さ れた ク ロ ッ ク 」 • 「自動生成 ク ロ ッ ク の名前の変更」 生成 ク ロ ッ ク について 生成 ク ロ ッ ク は、 MMCM な ど の ク ロ ッ ク 調整ブ ロ ッ ク と 呼ばれ る 特別なセルま たはユーザー ロ ジ ッ ク に よ り 駆動 さ れます。 生成 ク ロ ッ ク は、マ ス タ ー ク ロ ッ ク に関連付け ら れてい ます。create_generated_clock コ マ ン ド では、マ ス タ ー ク ロ ッ ク の開始点が考慮 さ れます。 次の ク ロ ッ ク を マ ス タ ー ク ロ ッ ク と し て使用で き ます。 • プラ イマ リ ク ロ ッ ク • 別の生成 ク ロ ッ ク 生成 ク ロ ッ ク のプ ロ パテ ィ は、 マ ス タ ー ク ロ ッ ク か ら 直接導出 さ れます。 周期ま たは波形を指定する 代わ り に、 マ ス タ ー ク ロ ッ ク が調整回路で ど の よ う に変換 さ れ る か を記述 し ます。 マ ス タ ー ク ロ ッ ク と 生成 ク ロ ッ ク の関係には、 次の も のを使用で き ます。 • 単純な周波数の分周 • 単純な周波数の逓倍 • 周波数の分周 と 逓倍の組み合わせて整数以外の比を生成 (通常 MMCM ま たは PLL を使用) • 位相シ フ ト ま たは波形の反転 • デ ュ ーテ ィ サ イ ク ルの変換 • 上記すべての組み合わせ 推奨 : まず、 すべてのプ ラ イ マ リ ク ロ ッ ク を定義 し て く だ さ い。 生成 ク ロ ッ ク を定義する には、 プ ラ イ マ リ ク ロ ッ ク が必要です。 ユーザー定義の生成ク ロ ッ ク ユーザー定義の生成 ク ロ ッ ク は、 次の よ う な ク ロ ッ ク です。 • create_generated_clock コ マ ン ド で定義 さ れてい る 。 • ネ ッ ト リ ス ト オブジ ェ ク ト (理想的には ク ロ ッ ク ツ リ ーのルー ト ピ ン) に接続 さ れてい る 。 -source オプシ ョ ン を使用 し てマ ス タ ー ク ロ ッ ク を指定 し て く だ さ い。 マ ス タ ー ク ロ ッ ク が伝搬 さ れ る ピ ン ま たは ポー ト を指定 し ます。 一般的には、 マ ス タ ー ク ロ ッ ク の ソ ース ポ イ ン ト ま たは生成 ク ロ ッ ク の ソ ース セルの入力 ク ロ ッ ク ピ ンが使用 さ れます。 重要 : -source オプシ ョ ン では、 ピ ン ま たはポー ト ネ ッ ト リ ス ト オブジ ェ ク ト のみを指定で き ます。 ク ロ ッ ク オブ ジ ェ ク ト は指定で き ません。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 66 第 3 章 : ク ロ ッ クの定義 例 1 : 2 分周 プ ラ イ マ リ ク ロ ッ ク clk1 の周期は 10ns です。 こ の ク ロ ッ ク は レ ジ ス タ REGA で 2 分周 さ れ、 ほかの レ ジ ス タ の ク ロ ッ ク ピ ン を駆動 し ます。 こ の ク ロ ッ ク を clkdiv2 と 呼びます。 こ の生成 ク ロ ッ ク を指定す る 2 つの例を次に示 し ます。 create_clock -name clkin -period 10 [get_ports clkin] # Option 1: master clock source is the primary clock source point create_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 \ [get_pins REGA/Q] # Option 2: master clock source is the REGA clock pin create_generated_clock -name clkdiv2 -source [get_pins REGA/C] -divide_by 2 \ [get_pins REGA/Q] X-Ref Target - Figure 3-4 ĂƚĂWĂƚŚ Z' Y Z' Y 'ĞŶĞƌĂƚĞĚĐůŽĐŬ ĚĞĨŝŶŝƚŝŽŶƉŽŝŶƚ ĐůŬŝŶ WƌŝŵĂƌLJĐůŽĐŬ ƐŽƵƌĐĞƉŽŝŶƚ /h& h&' ;ĞĚŐĞηͿ ϭ Ϯ ϯ ϰ ϱ ϲ ĐůŬŝŶ ĐůŬĚŝǀϮ ϬŶƐ ϭϬŶƐ ϮϬŶƐ ϯϬŶƐ 図 3‐4 : 生成ク ロ ッ ク の例 1 例 2 : -edges オ プ シ ョ ン を使用 し た 2 分周 -divide_by オプシ ョ ン の代わ り に、 -edges オプシ ョ ン を使用 し て、 マ ス タ ー ク ロ ッ ク のエ ッ ジに基づいて生成 ク ロ ッ ク の波形を直接定義で き ます。 引数はマ ス タ ー ク ロ ッ ク エ ッ ジの イ ンデ ッ ク ス の リ ス ト で、 生成 ク ロ ッ ク の エ ッ ジの時間位置を立ち上が り ク ロ ッ ク エ ッ ジか ら 開始 し て定義 し ます。 次の例では、 「例 1 : 2 分周」 の生成 ク ロ ッ ク を -edges オプシ ョ ン を使用 し て定義 し てい ます。 # waveform specified with -edges instead of -divide_by create_generated_clock -name clkdiv2 -source [get_pins REGA/C] -edges {1 3 5} \ [get_pins REGA/Q] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 67 第 3 章 : ク ロ ッ クの定義 例 3 : -edges お よ び -edge_shift オ プ シ ョ ン を使用 し たデ ュ ーテ ィ サ イ ク ルお よ び位相シ フ ト の指定 生成 ク ロ ッ ク 波形の各エ ッ ジは、 -edge_shift オプシ ョ ン で正ま たは負の値を指定 し て、 個別にシ フ ト で き ます。 位相シ フ ト が必要な場合は、 こ のオプシ ョ ン を使用 し ます。 -edge_shift オプシ ョ ンは、 次のオプシ ョ ン と 同時に使用す る こ と はで き ません。 • -divide_by • -multiply_by • -invert マ ス タ ー ク ロ ッ ク clkin の周期が 10ns、 デ ュ ーテ ィ サ イ ク ルが 50% だ と し ます。 こ の ク ロ ッ ク はセル mmcm0 に入力 さ れ、 こ のセルに よ り デュ ーテ ィ サ イ ク ルが 25% で位相が 90 度シ フ ト さ れた ク ロ ッ ク が生成 さ れます。 生成 ク ロ ッ ク の定義には、 マ ス タ ー ク ロ ッ ク のエ ッ ジ 1、 2、 お よ び 3 が使用 さ れてい ます。 こ れ ら のエ ッ ジは、 それぞれ 0ns、 5ns、 お よ び 10ns で発生 し ます。 適切な波形を得 る には、 1 番目 と 3 番目のエ ッ ジ を 2.5ns シ フ ト し ます。 create_clock -name clkin -period 10 [get_ports clkin] create_generated_clock -name clkshift -source [get_pins mmcm0/CLKIN] -edges {1 2 3} \ -edge_shift {2.5 0 2.5} [get_pins mmcm0/CLKOUT] # First rising edge: 0ns + 2.5ns = 2.5ns # Falling edge: 5ns + 0ns = 5ns # Second rising edge: 10ns + 2.5ns = 12.5ns 注記 : -edge_shift の値は、 正の場合 と 負の場合があ り ます。 X-Ref Target - Figure 3-5 Z' ŵŵĐŵϬ ĐůŬŝŶ /h& h&' ><&/E Y Y h&' ><&Khd ></E Z' ĂƚĂWĂƚŚ h&' ><Khd 'ĞŶĞƌĂƚĞĚĐůŽĐŬ ĚĞĨŝŶŝƚŝŽŶƉŽŝŶƚ WƌŝŵĂƌLJĐůŽĐŬ ƐŽƵƌĐĞƉŽŝŶƚ Ϯ ;ĞĚŐĞηͿ ϭ ĐůŬŝŶ ϯ ϰ Ϯϱй ĐůŬĚŝǀϮ ϬŶƐ Ϯ͘ϱŶƐ ϱŶƐ ϭϬŶƐ ϭϮ͘ϱŶƐ ϭϱŶƐ 図 3‐5 : 生成ク ロ ッ ク の例 3 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 68 第 3 章 : ク ロ ッ クの定義 例 4 : -divide_by と -multiply_by オ プ シ ョ ン を同時に使用 Vivado IDE では、 -divide_by と -multiply_by オプシ ョ ン を同時に指定で き ます。 こ れは、 標準 SDC (Synopsys Design Constraints) のサポー ト を拡張 し た も のです。 こ れ ら のオプシ ョ ン を同時に指定する と 、 MMCM ま たは PLL イ ン ス タ ン ス で生成 さ れた ク ロ ッ ク を手動で定義する 際に便利です。 ただ し 、 こ れ ら の制約はツールで自動的に作成 さ れ る よ う にす る こ と をお勧め し ます。 詳細は、 「自動的に派生 さ れた ク ロ ッ ク 」 を参照 し て く だ さ い。 た と えば、 「例 3 : -edges お よ び -edge_shift オプシ ョ ン を使用 し たデ ュ ーテ ィ サ イ ク ルお よ び位相シ フ ト の指定」 の mmcm0 セルでマ ス タ ー ク ロ ッ ク の周波数が 4/3 で逓倍 さ れ る と す る と 、 こ の生成 ク ロ ッ ク の定義は次の よ う にな り ま す。 create_generated_clock -name clk43 -source [get_pins mmcm0/CLKIN] -multiply_by 4 \ -divide_by 3 [get_pins mmcm0/CLKOUT] MMCM ま たは PLL の出力に生成 ク ロ ッ ク 制約を作成す る 場合は、 波形の定義が MMCM ま たは PLL の コ ン フ ィ ギ ュ レーシ ョ ンに一致す る こ と を確認す る こ と をお勧め し ます。 自動的に派生 さ れた ク ロ ッ ク 自動的に派生 さ れた ク ロ ッ ク は、 自動生成 ク ロ ッ ク と も 呼ばれます。 関連のマ ス タ ー ク ロ ッ ク が既に定義 さ れていれ ば、Vivado IDE に よ り ク ロ ッ ク 調整ブ ロ ッ ク (CMB) の出力ピ ンに自動的に制約が作成 さ れます。CMB には、MMCMx、 PLLx、 IBUFDS_GTE2、 ま たは BUFR プ リ ミ テ ィ ブがあ り ます (MIG IP の PHASER_x を含む)。 同 じ 定義ポ イ ン ト のネ ッ ト リ ス ト オブジ ェ ク ト (ネ ッ ト ま たは ピ ン) に既にユーザー定義 ク ロ ッ ク (プ ラ イ マ リ ま た は生成) が定義 さ れてい る 場合は、 ク ロ ッ ク は自動生成 さ れ ません。 自動生成 ク ロ ッ ク の名前は、 定義ポ イ ン ト に直 接接続 さ れてい る ネ ッ ト の名前に基づ き ます。 自動的に派生 さ れた ク ロ ッ ク の例 次に、 MMCM に よ り 生成 さ れた ク ロ ッ ク の例を示 し ます。 マ ス タ ー ク ロ ッ ク clkin が MMCME2 イ ン ス タ ン ス clkip/mmcm0 の入力 CLKIN を駆動す る と す る と 、自動生成 ク ロ ッ ク の名前は cpuClk と な り 、 その定義ポ イ ン ト は clkip/mmcm0/CLKOUT と な り ます。 X-Ref Target - Figure 3-6 ĐůŬŝƉ Z' ĐůŬŝƉͬŵŵĐŵϬ ĐůŬŝŶ /h& h&' ><&/E ></E WƌŝŵĂƌLJĐůŽĐŬ ƐŽƵƌĐĞƉŽŝŶƚ ĂƚĂWĂƚŚ Y h&' ><&Khd h&' ><Khd ,ŝĞƌĂƌĐŚŝĐĂůŶĞƚ ŶĂŵĞ͗ĐůŬŝƉͬĐƉƵůŬ ƵƚŽͲŐĞŶĞƌĂƚĞĚ ĐůŽĐŬĚĞĨŝŶŝƚŝŽŶ ƉŽŝŶƚ 図 3‐6 : 自動生成ク ロ ッ クの例 ヒ ン ト : 名前のわかっ ていない自動生成 ク ロ ッ ク を ク エ リ する には、get_clocks -of_objects <pin/port/net> を使用 し ます。 こ の コ マン ド は、 ク ロ ッ ク 名の変更にかかわ ら ず、 制約ま たはス ク リ プ ト で使用で き ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 69 第 3 章 : ク ロ ッ クの定義 ロー カル ネ ッ ト 名 CMB イ ン ス タ ン ス がデザ イ ン の階層内に配置 さ れてい る 場合、 生成 ク ロ ッ ク の名前に ロ ーカル ネ ッ ト 名 (親セル名 を含ま ない名前) が使用 さ れます。 た と えば、 階層ネ ッ ト 名が clkip/cpuClk であ る と す る と 、 次の よ う にな り ます。 • 親セル名は clkip です。 • 生成 ク ロ ッ ク 名は cpuClk です。 名前の競合 2 つの自動生成 ク ロ ッ ク の名前が競合す る 場合、 Vivado IDE で次の よ う に こ れ ら を区別す る 接尾辞が付け ら れます。 • usrclk • usrclk_1 • usrclk_2 • ... 生成 ク ロ ッ ク の名前を指定す る には、 次のいずれかの方法を使用 し ます。 • RTL で固有のわか り やすいネ ッ ト 名を選択 し ます。 • 生成 ク ロ ッ ク の名前を指定す る には、 create_generated_clock を使用 し ます。 自動生成 ク ロ ッ ク の名前の変更 ツールで自動生成 さ れた ク ロ ッ ク の名前を変更で き ます。 こ れには、 create_generated_clock コ マ ン ド を い く つかのオプシ ョ ン と 共に使用 し ます。 create_generated_clock -name new_name [-source master_pin] [-master_clock master_clk] source_object 必須の引数は、新 し い生成 ク ロ ッ ク の名前 と 生成 ク ロ ッ ク の ソ ース オブジ ェ ク ト です。-source お よ び -master オ プシ ョ ンは、 ソ ース ピ ン を伝搬す る ク ロ ッ ク が複数あ る 場合に、 明確にする ために指定する 必要があ り ます。 重要 : -edges、 -edge_shift、 -divide_by、 -multiply_by、 -combinational、 -duty_cycle、 -invert の いずれかのオプシ ョ ン を create_generated_clock コ マ ン ド に使用する と 、 生成 ク ロ ッ ク の名前は変更 さ れませ ん。 指定の特性を持つ ク ロ ッ ク が新たに生成 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 70 第 3 章 : ク ロ ッ クの定義 制限 • 自動的に派生 さ れ る ク ロ ッ ク は、 ク ロ ッ ク 調整ブ ロ ッ ク (PLL、 MMCM な ど) の出力な ど、 送信元の ピ ン でのみ 名前が変更 さ れます。 た と えば、 自動的に派生 さ れ る ク ロ ッ ク が BUFG を介 し て伝搬 さ れた場合で も 、 その出力 で名前を変更す る こ と はで き ません。 • プ ラ イ マ リ ク ロ ッ ク お よ びユーザー定義の生成 ク ロ ッ ク の名前は変更で き ません。 こ の方法で変更で き る のは、 自動的に派生 さ れ る ク ロ ッ ク の名前のみです。 • 生成 ク ロ ッ ク を その定義の前に参照す る 制約があ る 場合、 生成 ク ロ ッ ク の名前は変更で き ません。 こ の状況は、 ク ロ ッ ク ク エ リ を使用す る 制約が自動生成名前制約の前にあ る 場合に発生 し ます。 ° get_clocks clockName ° get_clocks -of [get_pin pinName] ° set_clock_groups -asynchronous -group clockName 生成 ク ロ ッ ク を参照す る タ イ ミ ン グ制約があ る 場合、 その ク ロ ッ ク が参照 さ れ る 前に自動的に派生 さ れた ク ロ ッ ク の名前が変更 さ れ る よ う に制約を並べ替え る 必要があ り ます。 • source_object は、 1 つのオブジ ェ ク ト のみに一致する 必要があ り ます。 生成 ク ロ ッ ク の名前を変更で き ない場合、 エ ラ ーが返 さ れ ます。 生成 ク ロ ッ ク の名前を変更す る 際に、 マ ス タ ー ク ロ ッ ク が存在 し てい る こ と も 必要です。 次に、 MMCM の出力ピ ン での生成 ク ロ ッ ク に対 し て report_clocks を実行 し た場合の レ ポー ト 例を示 し ます。 ==================================================== Generated Clocks ==================================================== Generated Clock Master Source Master Clock Multiply By Generated Sources : : : : : clkfbout_clk_core clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1 clk_pin_p 1 {clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKFBOUT} Generated Clock Master Source Master Clock Multiply By Generated Sources : clk_rx_clk_core : clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1 : clk_pin_p :1 : {clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT0} Generated Clock Master Source Master Clock Edges Edge Shifts Generated Sources : : : : : : clk_tx_clk_core clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1 clk_pin_p {1 2 3} {0.000 0.500 1.000} {clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT1} 次の 3 つの コ マ ン ド は、 MMCM の出力で自動的に派生 さ れた 3 つの ク ロ ッ ク の名前を変更する ために指定す る 必要 のあ る コ マ ン ド ラ イ ン オプシ ョ ン を示 し てい ます。 create_generated_clock -name clk_rx [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT0] create_generated_clock -name clk_tx [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT1] create_generated_clock -name clkfbout [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKFBOUT] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 71 第 3 章 : ク ロ ッ クの定義 名前を変更 し た後の report_clocks の出力は、 次の よ う にな り ます。 ==================================================== Generated Clocks ==================================================== Generated Clock : clkfbout Master Source : clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1 Master Clock : clk_pin_p Multiply By : 1 Generated Sources : {clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKFBOUT} Generated Clock Master Source Master Clock Multiply By Generated Sources : : : : : clk_rx clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1 clk_pin_p 1 {clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT0} Generated Clock Master Source Master Clock Edges Edge Shifts Generated Sources : : : : : : clk_tx clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1 clk_pin_p {1 2 3} {0.000 0.500 1.000} {clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT1} ク ロ ッ ク グループ こ のセ ク シ ョ ンでは、 ク ロ ッ ク グループについて説明 し ます。 次の内容が含まれます。 • 「 ク ロ ッ ク グループについて」 • 「 ク ロ ッ ク のカ テ ゴ リ 」 • 「非同期 ク ロ ッ ク グループ」 • 「排他的な ク ロ ッ ク グループ」 ク ロ ッ ク グループについて Vivado IDE では、 ク ロ ッ ク グループ制約ま たはフ ォルス パス制約を指定 し ていない限 り 、 デフ ォル ト でデザ イ ンに含 まれ るすべての ク ロ ッ ク 間のパス の タ イ ミ ン グが解析 さ れます。set_clock_groups コ マン ド を使用する と 、 ク ロ ッ ク グループ間の タ イ ミ ン グ解析がデ ィ ス エーブルにな り ます。 同じ グループ内の ク ロ ッ ク 間の タ イ ミ ン グ解析はデ ィ ス エーブルにな り ません。 set_false_path 制約 と は異な り 、 ク ロ ッ ク 間の両方向で タ イ ミ ン グが無視 さ れます。 [Schematic] ウ ィ ン ド ウ ま たは [Report Clock Networks] コ マ ン ド を使用 し て ク ロ ッ ク ツ リ ーの ト ポ ロ ジ を表示 し 、 ど の ク ロ ッ ク 間 の タ イ ミ ン グ 解析 を デ ィ ス エ ー ブ ル に す る 必要 が あ る か を 確認 し て く だ さ い。 ま た、 [Report Clock Interaction] コ マ ン ド を使用 し て、 2 つの ク ロ ッ ク 間の既存の制約を確認 し た り 、 同 じ プ ラ イ マ リ ク ロ ッ ク を共有 し て い る か (既知の位相関係があ る ) を判断 し た り 、 共通周期のない ク ロ ッ ク を特定で き ます。 注意 : 2 つの ク ロ ッ ク 間の タ イ ミ ン グ解析を無視 し て も 、 それ ら の ク ロ ッ ク 間のパ ス がハー ド ウ ェ アで正 し く 機能す る と は限 り ません。 メ タ ス テーブル状態にな ら ない よ う にする ため、 こ れ ら のパ ス に再同期化回路ま たは非同期デー タ 転送プ ロ ト コ ルがあ る こ と を確認 し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 72 第 3 章 : ク ロ ッ クの定義 ク ロ ッ ク のカ テ ゴ リ こ のセ ク シ ョ ンでは、 次の ク ロ ッ ク のカ テ ゴ リ について説明 し ます。 • 「同期 ク ロ ッ ク 」 • 「非同期 ク ロ ッ ク 」 • 「共通周期のない ク ロ ッ ク 」 同期 ク ロ ッ ク 2 つの ク ロ ッ ク の位相関係が予測可能であ る 場合、 こ れ ら の ク ロ ッ ク は同期 し てい ます。 ク ロ ッ ク ツ リ ーがネ ッ ト リ ス ト の同 じ ルー ト か ら 出発 し てお り 、 共通周期があ る 場合、 2 つの ク ロ ッ ク は通常同期 し てい ます。 た と えば、周期の比が 2 の生成 ク ロ ッ ク と そのマ ス タ ー ク ロ ッ ク は、生成 ク ロ ッ ク の ソ ース ポ イ ン ト ま では同 じ ネ ッ ト リ ス ト リ ソ ース を伝搬 さ れ る ので同期 し てお り 、 共通周期は 2 サ イ ク ルです。 こ れ ら の ク ロ ッ ク は、 問題な く タ イ ミ ン グ解析で き ます。 非同期ク ロ ッ ク 2 つの ク ロ ッ ク の位相関係を特定で き ない場合、 こ れ ら の ク ロ ッ ク は非同期です。 た と えば、 2 つの ク ロ ッ ク がボー ド 上の異な る オシ レー タ ーで生成 さ れ、 異な る 入力ポー ト か ら 入力 さ れ る 場合、 位 相関係は不明なので、 こ れ ら の ク ロ ッ ク は非同期 と し て扱 う 必要があ り ます。 2 つの ク ロ ッ ク がボー ド 上の同 じ オシ レー タ ーで生成 さ れてい る 場合は、 非同期ではあ り ません。 ほ と ん ど の場合、 プ ラ イ マ リ ク ロ ッ ク 同士は非同期 と し て扱 う こ と がで き ます。 プ ラ イ マ リ ク ロ ッ ク と それを基に 生成 さ れた ク ロ ッ ク を ま と めて、 非同期 ク ロ ッ ク グループ を構成で き ます。 共通周期のない ク ロ ッ ク タ イ ミ ン グ エン ジ ン で 1000 サ イ ク ル以上、 2 つの ク ロ ッ ク の共通周期を見つけ る こ と がで き なか っ た場合、 こ れ ら の ク ロ ッ ク は共通周期な し と し て処理 さ れ ます。 こ の場合、 1000 サ イ ク ルでの ワ ース ト セ ッ ト ア ッ プ関係が タ イ ミ ン グ解析で使用 さ れますが、 こ れが実際の ワース ト ケース か ど う かは確実ではあ り ません。 こ れは、 2 つの ク ロ ッ ク の周期比が半端な分数にな る 場合に よ く 発生 し ます。 た と えば、 同 じ プ ラ イ マ リ ク ロ ッ ク を 共有す る 2 つの MMCM で生成 さ れた 2 つの ク ロ ッ ク clk0 お よ び clk1 があ る と し ます。 • clk0 の周期は 5.125ns です。 • clk0 の周期は 6.666ns です。 こ れ ら の ク ロ ッ ク の立ち上が り エ ッ ジは 1000 サ イ ク ル以内では揃い ません。 タ イ ミ ン グ エン ジ ンでは、 こ れ ら の 2 つ の ク ロ ッ ク 間の タ イ ミ ン グ パス にセ ッ ト ア ッ プ パス要件 0.01ns が使用 さ れます。 こ れ ら 2 つの ク ロ ッ ク には ク ロ ッ ク ツ リ ー ルー ト では既知の位相関係があ り ますが、 それ ら の波形のため タ イ ミ ン グ解析を正 し く 実行で き ません。 非同期 ク ロ ッ ク と 同様、 ス ラ ッ ク の算出は通常どお り であ る よ う に見え ますが、 値は確実な も のではあ り ません。 そ のため、 共通周期のない ク ロ ッ ク は通常、 非同期 ク ロ ッ ク と 同様に処理 さ れます。 非同期 ク ロ ッ ク お よ び共通周期の ない ク ロ ッ ク は、 制約の設定お よ び ク ロ ッ ク ド メ イ ン を ま た ぐ 回路では同様に扱 う 必要があ り ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 73 第 3 章 : ク ロ ッ クの定義 非同期ク ロ ッ ク グループ 非同期 ク ロ ッ ク お よ び共通周期のない ク ロ ッ ク は、 問題な く タ イ ミ ン グ解析で き ません。 こ れ ら の ク ロ ッ ク 間の タ イ ミ ン グ パ ス は、 set_clock_groups コ マ ン ド を使用 し て解析で無視す る こ と がで き ます。 重要 : set_clock_groups コ マ ン ド は、 通常の タ イ ミ ン グ例外 よ り も 優先 さ れ ます。 非同期 ク ロ ッ ク 間の一部のパ ス を制約 し 、 レ ポー ト す る 必要があ る 場合は、 タ イ ミ ン グ例外のみを使用 し 、 set_clock_groups は使用 し ないで く だ さ い。 非同期 ク ロ ッ ク グループの例 • プ ラ イ マ リ ク ロ ッ ク clk0 が入力ポー ト 上に定義 さ れ、 MMCM に入力 さ れて ク ロ ッ ク usrclk お よ び itfclk が生成 さ れます。 • 2 番目のプ ラ イ マ リ ク ロ ッ ク clk1 は GTP イ ン ス タ ン ス の出力で定義 さ れ る 再生 さ れた ク ロ ッ ク で、 2 番目の MMCM に入力 さ れて ク ロ ッ ク gtclkrx お よ び gtclktx が生成 さ れます。 非同期ク ロ ッ ク グループの作成 非同期 ク ロ ッ ク グループ を作成す る には、 -asynchronous オプシ ョ ン を使用 し ます。 set_clock_groups -name async_clk0_clk1 -asynchronous -group {clk0 usrclk itfclk} \ -group {clk1 gtclkrx gtclktx} 生成 ク ロ ッ ク の名前を あ ら か じ め予測で き ない場合は、 get_clocks -include_generated_clocks を使用 し て 取得 し ます。 -include_generated_clocks オプシ ョ ンは SDC か ら の拡張です。 上記の例は、 次の よ う に も 記述で き ます。 set_clock_groups -name async_clk0_clk1 -asynchronous \ -group [get_clocks -include_generated_clocks clk0] \ -group [get_clocks -include_generated_clocks clk1] 排他的な ク ロ ッ ク グループ デザ イ ン に よ っ て は、 異な る ク ロ ッ ク を 使用す る い く つかの動作モー ド が あ り ま す。 こ の場合、 通常 ク ロ ッ ク は BUFGMUX や BUFGCTRL な ど の ク ロ ッ ク マルチプ レ ク サーま たは LUT を使用 し て選択 さ れます。 推奨 : ク ロ ッ ク ツ リ ーでは LUT を で き る だけ使用 し ないで く だ さ い。 こ れ ら のセルは組み合わせセルであ る ため、 すべての入力 ク ロ ッ ク は出力に伝搬 さ れます。 Vivado IDE では、 1 つの ク ロ ッ ク ツ リ ーに複数の タ イ ミ ン グ ク ロ ッ ク を同時に存在 さ せ る こ と がで き 、 すべての動作モー ド に対す る レ ポー ト を同時に生成で き る ので便利です。 こ れはハー ド ウ ェ アでは不可能です。 こ の よ う な ク ロ ッ ク は排他的 ク ロ ッ ク と 呼ばれ、 set_clock_groups で次のいずれかのオプシ ョ ン を使用 し て制約 し ます。 • -logically_exclusive • -physically_exclusive 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 74 第 3 章 : ク ロ ッ クの定義 排他的な ク ロ ッ ク グループの例 MMCM イ ン ス タ ン ス で clk0 お よ び clk1 が生成 さ れ、 BUFGMUX イ ン ス タ ン ス clkmux に接続 さ れてい ます。 clkmux の出力はデザ イ ンの ク ロ ッ ク ツ リ ーを駆動 し ます。 clk0 と clk1 は同 じ ク ロ ッ ク ツ リ ーを共有 し ていて も 同時に存在す る こ と はあ り ませんが、 デフ ォ ル ト では こ れ ら の ク ロ ッ ク 間のパ ス が解析 さ れます。 こ れ ら の ク ロ ッ ク 間のパ ス の解析をデ ィ ス エーブルにす る には、 次の制約を入力 し ます。 set_clock_groups -name exclusive_clk0_clk1 -physically_exclusive \ -group clk0 -group clk1 次のオプシ ョ ンは、 ザ イ リ ン ク ス FPGA デバ イ ス では同等です。 • -physically_exclusive • -logically_exclusive physically お よ び logically は、 ASIC テ ク ノ ロ ジでの さ ま ざ ま な シ グナル イ ン テ グ リ テ ィ 解析 ( ク ロ ス ト ー ク ) を表 し てお り 、 ザ イ リ ン ク ス FPGA デバ イ ス では必要あ り ません。 ク ロ ッ ク レ イ テ ン シ、 ジ ッ タ ー、 ばら つ き ク ロ ッ ク 波形の定義に加え、 動作条件お よ び環境に よ る 予測可能で ラ ン ダ ム な変動を指定す る 必要があ り ます。 ク ロ ッ ク レ イ テ ン シ ク ロ ッ ク エ ッ ジは、 ボー ド お よ び FPGA デバ イ ス を伝搬 さ れた後、 あ る 遅延でデス テ ィ ネーシ ョ ンに到達 し ます。 こ の遅延は、 通常次の も ので表 さ れます。 • ソ ース レ イ テ ン シ ( ク ロ ッ ク ソ ース ポ イ ン ト 前、 通常デバ イ ス外部の遅延) • ネ ッ ト ワー ク レ イ テ ン シ ネ ッ ト ワー ク レ イ テ ン シに よ る 遅延 (挿入遅延) の算出は、 次の よ う にな り ます。 • 自動的に予測 (配線前) • 正確に算出 (配線後) ザ イ リ ン ク ス以外の多 く の タ イ ミ ン グ エ ン ジ ン では、 ク ロ ッ ク ツ リ ーに沿っ た伝搬遅延が算出 さ れ る よ う にす る た め、 SDC コ マ ン ド set_propagated_clock が必要です。 Vivado ツ ールでは こ の コ マ ン ド は必要あ り ま せん。 ク ロ ッ ク 伝搬遅延はデフ ォ ル ト で算出 さ れます。 • すべての ク ロ ッ ク が伝搬 ク ロ ッ ク と し て処理 さ れます。 • 生成 ク ロ ッ ク の レ イ テ ン シには、 マ ス タ ー ク ロ ッ ク の挿入遅延 と 、 その生成 ク ロ ッ ク のネ ッ ト ワ ー ク レ イ テ ン シが含まれます。 ザ イ リ ン ク ス FPGA では、 set_clock_latency コ マ ン ド を使用 し てデバ イ ス外部の ク ロ ッ ク レ イ テ ン シ を指定 し ます。 set_clock_latency の例 # Minimum source latency value for clock sysClk (for both Slow and Fast corners) set_clock_latency -source -early 0.2 [get_clocks sysClk] # Maximum source latency value for clock sysClk (for both Slow and Fast corners) set_clock_latency -source -late 0.5 [get_clocks sysClk] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 75 第 3 章 : ク ロ ッ クの定義 ク ロ ッ ク のばら つ き ク ロ ッ ク ジ ッ タ ー ASIC では ク ロ ッ ク ジ ッ タ ーは通常 ク ロ ッ ク のば ら つき 特性で表 さ れますが、 ザ イ リ ン ク ス FPGA デバ イ ス ではジ ッ タ ー特性は予測可能で、 タ イ ミ ン グ解析エン ジ ンに よ り 自動的に算出で き る ほか、 別に指定する こ と も で き ます。 入力ジ ッ タ ー 入力ジ ッ タ ー と は、 標準ま たは理想的な ク ロ ッ ク 到達時間 と 比較 し た連続 ク ロ ッ ク エ ッ ジ間のば ら つ き です。 各プ ラ イ マ リ ク ロ ッ ク の入力ジ ッ タ ーを個別に設定する には、 set_input_jitter コ マ ン ド を使用 し ます。 生成 ク ロ ッ ク に直接入力ジ ッ タ ーを設定す る こ と はで き ません。 Vivado IDE タ イ ミ ン グ エ ン ジ ン では、 生成 ク ロ ッ ク がマ ス タ ー ク ロ ッ ク か ら 継承 し たジ ッ タ ーが自動的に算出 さ れます。 • 生成 ク ロ ッ ク が MMCM ま たは PLL で駆動 さ れ る 場合は、入力ジ ッ タ ーは算出 さ れた離散ジ ッ タ ーに置 き 換え ら れます。 • 生成 ク ロ ッ ク が組み合わせセルま たはシーケ ン シ ャ ル セルで駆動 さ れ る 場合は、生成 ク ロ ッ ク のジ ッ タ ーはマ ス タ ー ク ロ ッ ク ジ ッ タ ー と 同 じ にな り ます。 シ ス テム ジ ッ タ ー シ ス テ ム ジ ッ タ ーは、 次の要因に よ る 全体的なジ ッ タ ーです。 • 電源 ノ イ ズ • ボー ド ノ イ ズ • シ ス テ ムのその他のジ ッ タ ー set_system_jitter コ マ ン ド を使用 し て、デザ イ ン全体 (すべての ク ロ ッ ク ) に対 し て 1 つの値のみを設定 し ます。 その他の ク ロ ッ ク のば ら つ き 必要に応 じ て set_clock_uncertainty コ マ ン ド を使用 し 、 異な る コ ーナー、 遅延、 特定の ク ロ ッ ク 関係に対す る ク ロ ッ ク のば ら つ き を定義 し ます。 こ れは、 タ イ ミ ン グの観点か ら 、 デザ イ ンの部分にゆ と り を も たせ る 効率的な方 法です。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 76 第 4章 I/O 遅延の制約 I/O 遅延の制約について デザ イ ンの外部 タ イ ミ ン グ を正確に記述す る には、 入力ポー ト お よ び出力ポー ト の タ イ ミ ン グ情報を指定す る 必要が あ り ます。 Vivado® 統合設計環境 (IDE) では FPGA デバ イ ス内の タ イ ミ ン グ情報のみが認識 さ れ る ので、 デバ イ ス外 部に存在す る 遅延値は次の コ マ ン ド を使用 し て指定す る 必要があ り ます。 • set_input_delay • set_output_delay 入力遅延 set_input_delay コ マ ン ド を使用す る と 、入力ポー ト の入力パ ス遅延をデザ イ ンの イ ン タ ーフ ェ イ ス での ク ロ ッ ク エ ッ ジに対 し て指定で き ます。 ビデオ : 入力遅延に関す る ト レーニ ン グ ビデオは、 Vivado Design Suite ビデオ チ ュ ー ト リ アル : 入力遅延の設定を参 照 し て く だ さ い。 アプ リ ケーシ ョ ン ボー ド を考え た場合、 こ の遅延は次の も のの間の位相差を表 し ます。 a. 外部チ ッ プか ら ボー ド を介 し て FPGA デバ イ ス の入力パ ッ ケージ ピ ンに伝搬 さ れ る デー タ b. 相対基準ボー ド ク ロ ッ ク こ のため、 入力遅延は、 デバ イ ス の イ ン タ ーフ ェ イ ス での ク ロ ッ ク お よ びデー タ の相対位相に よ っ て、 正ま たは負の 値にな り ます。 入力遅延オプ シ ョ ンの使用 -clock は、 標準 SDC ではオプシ ョ ンですが、 Vivado IDE では必須です。 相対 ク ロ ッ ク は、 デザ イ ン ク ロ ッ ク ま た は仮想 ク ロ ッ ク のいずれかにで き ます。 推奨 : 仮想 ク ロ ッ ク を使用す る 場合は、デザ イ ン内の入力ポー ト に接続 さ れ る デザ イ ン ク ロ ッ ク と 同 じ 波形を使用 し て く だ さ い。 こ の よ う にす る と 、 タ イ ミ ン グ パ ス要件が現実的な も のにな り ます。 仮想 ク ロ ッ ク を使用する と 、 デザ イ ン ク ロ ッ ク を変更せずに、 さ ま ざ ま なジ ッ タ ーま たは ソ ース レ イ テ ン シのパ タ ーン を記述で き ます。 入力遅延 コ マ ン ド には、 次のオプシ ョ ンがあ り ます。 • 「-min お よ び -max オプシ ョ ン」 • 「-clock_fall オプシ ョ ン」 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 77 第 4 章 : I/O 遅延の制約 • 「-add_delay オプシ ョ ン」 ‐min および ‐max オプ シ ョ ン -min お よ び -max オプシ ョ ンは、 次の解析用の値を指定 し ます。 • 最小遅延解析 (ホール ド / リ ムーバル) • 最大遅延解析 (セ ッ ト ア ッ プ/ リ カバ リ ) ど ち ら のオプシ ョ ン も 使用 し ない場合、 入力遅延値は最小値お よ び最大値の両方に適用 さ れます。 ‐clock_fall オプ シ ョ ン -clock_fall オプシ ョ ン を使用す る と 、 相対 ク ロ ッ ク の立ち下が り ク ロ ッ ク エ ッ ジで送信 さ れ る タ イ ミ ン グ パ ス に入力遅延制約が適用 さ れます。 こ のオプシ ョ ン を使用 し ない場合、 相対 ク ロ ッ ク の立ち上が り エ ッ ジのみが考慮 さ れます。 -clock_fall オプシ ョ ン を -rise お よ び -fall オプシ ョ ン と 混同 し ないで く だ さ い。-rise お よ び -fall オプシ ョ ンは、 ク ロ ッ ク エ ッ ジではな く デー タ エ ッ ジ を参照 し ます。 ‐add_delay オプ シ ョ ン -add_delay オプシ ョ ンは、 次の両方の条件が満た さ れ る 場合に使用する 必要があ り ます。 • 最大 (ま たは最小) 入力遅延制約が存在す る 。 • 同 じ ポー ト に 2 番目の最大 (ま たは最小) 入力遅延制約を指定する 必要があ る 。 こ のオプシ ョ ンは通常、 DDR イ ン タ ーフ ェ イ ス の よ う に、 複数の ク ロ ッ ク エ ッ ジに対 し て入力ポー ト に遅延制約を 設定す る 場合に使用 さ れます。 入力遅延制約は、 入力ポー ト ま たは双方向ポー ト に適用で き ます。 ただ し 、 ク ロ ッ ク 入力ポー ト には適用で き ず、 こ れ ら は自動的に無視 さ れます。 内部ピ ンには適用で き ません。 入力遅延の例 1 次の例では、 前に定義 し た sysClk に対 し て、 最小遅延解析 と 最大遅延解析の両方に使用する 入力遅延を定義 し ます。 > create_clock -name sysClk -period 10 [get_ports CLK0] > set_input_delay -clock sysClk 2 [get_ports DIN] 入力遅延の例 2 次の例では、 前に定義 し た仮想 ク ロ ッ ク に対 し て入力遅延を定義 し ます。 > create_clock -name clk_port_virt -period 10 > set_input_delay -clock clk_port_virt 2 [get_ports DIN] 入力遅延の例 3 次の例では、 sysClk に対 し て最小遅延解析 と 最大遅延解析に異な る 入力遅延値を定義 し ます。 > create_clock -name sysClk -period 10 [get_ports CLK0] > set_input_delay -clock sysClk -max 4 [get_ports DIN] > set_input_delay -clock sysClk -min 1 [get_ports DIN] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 78 第 4 章 : I/O 遅延の制約 入力遅延の例 4 次の例では、 DDR ク ロ ッ ク に対 し て入力遅延値を定義 し ます。 > > > > > create_clock -name clk_ddr -period 6 [get_ports DDR_CLK_IN] set_input_delay -clock clk_ddr -max 2.1 [get_ports DDR_IN] set_input_delay -clock clk_ddr -max 1.9 [get_ports DDR_IN] -clock_fall -add_delay set_input_delay -clock clk_ddr -min 0.9 [get_ports DDR_IN] set_input_delay -clock clk_ddr -min 1.1 [get_ports DDR_IN] -clock_fall -add_delay こ の例では、 デバ イ ス外部か ら clk_ddr ク ロ ッ ク の立ち上が り エ ッ ジ と 立ち下が り エ ッ ジの両方で送信 さ れ る デー タ か ら 、 立ち上が り ク ロ ッ ク エ ッ ジお よ び立ち下が り ク ロ ッ ク エ ッ ジの両方で動作す る 内部フ リ ッ プ フ ロ ッ プのデー タ 入力ま での制約が作成 さ れます。 その他の例 その他の例については、 ザ イ リ ン ク ス ア ンサー 59893 [参照 13] を参照 し て く だ さ い。 出力遅延 set_output_delay コ マ ン ド を使用す る と 、 出力ポー ト の出力パ ス遅延をデザ イ ンの イ ン タ ーフ ェ イ ス での ク ロ ッ ク エ ッ ジに対 し て指定で き ます。 ビデオ : 出力遅延に関す る ト レーニ ン グ ビデオは、 Vivado Design Suite ビデオ チ ュ ー ト リ アル : 出力遅延の設定を参 照 し て く だ さ い。 アプ リ ケーシ ョ ン ボー ド を考えた場合、 こ の遅延は次の も のの間の位相差を表し ます。 a. FPGA デバ イ ス の出力パ ッ ケージ ピ ンか ら ボー ド を介 し て別のデバ イ ス に伝搬 さ れ る デー タ b. 相対基準ボー ド ク ロ ッ ク 出力遅延は、 FPGA デバ イ ス外部の ク ロ ッ ク お よ びデー タ の相対位相に よ っ て、 正ま たは負の値にな り ます。 出力遅延オプ シ ョ ンの使用 -clock オプシ ョ ンは、 標準 SDC ではオプシ ョ ンですが、 Vivado では必須です。 相対 ク ロ ッ ク は、 デザ イ ン ク ロ ッ ク ま たは仮想 ク ロ ッ ク のいずれかにで き ます。 推奨 : 仮想 ク ロ ッ ク を使用す る 場合は、デザ イ ン内の出力ポー ト に接続 さ れ る デザ イ ン ク ロ ッ ク と 同 じ 波形を使用 し て く だ さ い。 こ の よ う にす る と 、 タ イ ミ ン グ パ ス要件が現実的な も のにな り ます。 仮想 ク ロ ッ ク を使用する と 、 デザ イ ン ク ロ ッ ク を調整 し な く て も 、 ジ ッ タ ーま たは ソ ース レ イ テ ン シのパ タ ーン を記述で き ます。 出力遅延 コ マ ン ド には、 次のオプシ ョ ンがあ り ます。 • 「-min お よ び -max オプシ ョ ン」 • 「-clock_fall オプシ ョ ン」 • 「-add_delay オプシ ョ ン」 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 79 第 4 章 : I/O 遅延の制約 ‐min および ‐max オプ シ ョ ン -min お よ び -max オプシ ョ ン を使用す る と 、 最小遅延解析 (ホール ド / リ ムーバル) お よ び最大遅延解析 (セ ッ ト ア ッ プ/ リ カバ リ ) に対 し て さ ま ざ ま な値を指定で き ます。 ど ち ら のオプシ ョ ン も 使用 し ない場合、 出力遅延値は最小値お よ び最大値の両方に適用 さ れます。 ‐clock_fall オプ シ ョ ン -clock_fall オプシ ョ ン を使用す る と 、 相対 ク ロ ッ ク の立ち下が り ク ロ ッ ク エ ッ ジで受信 さ れ る タ イ ミ ン グ パ ス に出力遅延制約が適用 さ れます。 こ のオプシ ョ ン を使用 し ない場合、 デバ イ ス外部の相対 ク ロ ッ ク の立ち上が り エ ッ ジのみが考慮 さ れます。 -clock_fall オプシ ョ ン を -rise お よ び -fall オプシ ョ ン と 混同 し ないで く だ さ い。 -rise お よ び -fall オプ シ ョ ンは、 ク ロ ッ ク エ ッ ジではな く デー タ エ ッ ジ を参照 し ます。 ‐add_delay オプ シ ョ ン 次の場合、 -add_delay オプシ ョ ン を使用する 必要があ り ます。 • 最大出力遅延制約が既に存在す る 。 • 同 じ ポー ト に 2 番目の最大出力遅延制約を指定す る 必要があ る 。 最小出力遅延制約の場合 も 同様に使用す る 必要があ り ます。 こ のオプシ ョ ンは通常、 DDR イ ン タ ーフ ェ イ ス の立ち 上が り お よ び立ち下が り エ ッ ジや、 異な る ク ロ ッ ク を使用す る 複数のデバ イ ス に出力ポー ト が接続 さ れてい る 場合な ど、 複数の ク ロ ッ ク エ ッ ジに対 し て出力ポー ト を制約する 場合に使用 さ れます。 重要 : 出力遅延制約は、 出力ポー ト ま たは双方向ポー ト にのみ適用で き ます。 内部ピ ンには適用で き ません。 出力遅延の例 1 次の例では、 前に定義 し た sysClk に対 し て、 最小遅延解析 と 最大遅延解析の両方に使用す る 出力遅延を定義 し ます。 > create_clock -name sysClk -period 10 [get_ports CLK0] > set_output_delay -clock sysClk 6 [get_ports DOUT] 出力遅延の例 2 次の例では、 前に定義 し た仮想 ク ロ ッ ク に対 し て出力遅延を定義 し ます。 > create_clock -name clk_port_virt -period 10 > set_output_delay -clock clk_port_virt 6 [get_ports DOUT] 出力遅延の例 3 次の例では、 DDR ク ロ ッ ク に対 し て、 出力遅延を最小遅延 (ホール ド ) お よ び最大遅延 (セ ッ ト ア ッ プ) 解析で異な る 値に指定 し ます。 > create_clock -name clk_ddr -period 6 > set_output_delay -clock clk_ddr -max > set_output_delay -clock clk_ddr -max -add_delay > set_output_delay -clock clk_ddr -min > set_output_delay -clock clk_ddr -min -add_delay 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 [get_ports DDR_CLK_IN] 2.1 [get_ports DDR_OUT] 1.9 [get_ports DDR_OUT] -clock_fall 0.9 [get_ports DDR_OUT] 1.1 [get_ports DDR_OUT] -clock_fall japan.xilinx.com 80 第 4 章 : I/O 遅延の制約 こ の例では、 デバ イ ス外部か ら clk_ddr ク ロ ッ ク の立ち上が り エ ッ ジ と 立ち下が り エ ッ ジの両方で送信 さ れ る デー タ か ら 、 立ち上が り ク ロ ッ ク エ ッ ジお よ び立ち下が り ク ロ ッ ク エ ッ ジの両方で動作す る 内部フ リ ッ プ フ ロ ッ プのデー タ 出力ま での制約が作成 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 81 第 5章 タ イ ミ ング例外 タ イ ミ ング例外について ロ ジ ッ ク がデフ ォ ル ト の ま ま では正 し く タ イ ミ ン グ解析で き ない場合、 タ イ ミ ン グ例外を指定す る 必要があ り ます。 2 ク ロ ッ ク サ イ ク ルご と に結果を受信す る ロ ジ ッ ク な ど、 タ イ ミ ン グ を別に処理する 必要があ る 場合は、 タ イ ミ ン グ 例外 コ マ ン ド を使用す る 必要があ り ます。 Vivado® 統合設計環境 (IDE) では、 表 5-1 に示す タ イ ミ ン グ例外コ マ ン ド がサポー ト さ れてい ます。 表 5‐1 : タ イ ミ ング例外 コ マ ン ド コマン ド 機能 set_multicycle_path パ ス の開始点か ら 終点 ま でデー タ を 伝搬 さ せ る の に必要 な ク ロ ッ ク サ イ ク ル数を指定 し ます。 set_false_path デザ イ ン に含ま れてい る ロ ジ ッ ク パ ス で、 解析か ら 除外すべ き も のを指定 し ます。 set_max_delay set_min_delay 最小パ ス遅延ま たは最大パ ス遅延の値を指定 し ます。こ の コ マ ン ド を使用す る と 、デフ ォ ル ト のセ ッ ト ア ッ プお よ びホール ド 制約 ではな く 、 ユーザーが指定 し た最大/最小遅延値が使用 さ れます。 set_case_analysis ポー ト ま たは ピ ン の ロ ジ ッ ク 定数 ま たは ロ ジ ッ ク 遷移を使用 し て伝搬 さ れ る 信号を制限 し 、 タ イ ミ ン グ解析を実行 し ます。 マルチサイ クル パス マルチサ イ ク ル パ ス制約を使用す る と 、 デザ イ ン ク ロ ッ ク 波形に基づいて タ イ マーに よ り 決定 さ れたセ ッ ト ア ッ プ 関係お よ びホール ド 関係を変更で き ます。 デフ ォ ル ト では、 Vivado IDE エ ン ジ ン でシ ン グル サ イ ク ル解析が実行 さ れます。 こ の解析が厳 し すぎ る 場合や、 一部の ロ ジ ッ ク パス では不適切な場合があ り ます。 た と えば、 デー タ が終点で安定す る ま でに複数 ク ロ ッ ク サ イ ク ル必要な論理パ ス な ど です。 パ ス の開始点 と 終点の制 御回路で許容 さ れ る 場合、 マルチサ イ ク ル パス制約を使用 し てセ ッ ト ア ッ プ要件を緩和する こ と をお勧め し ます。 ホール ド 要件は、 元の関係を保持す る こ と も で き ます。 こ れに よ り 、 タ イ ミ ン グ ド リ ブ ン アルゴ リ ズ ムが よ り 厳 し い要件や満たす こ と が難 し い制約を持つパ ス に焦点をお く こ と がで き ます。ま た、実行時間の短縮に も つなが り ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 82 第 5 章 : タ イ ミ ン グ例外 パスの乗数および ク ロ ッ ク エ ッ ジの設定 set_multicycle_path コ マ ン ド は、 セ ッ ト ア ッ プ解析ま たはホール ド 解析用に、 ソ ース ク ロ ッ ク ま たはデス テ ィ ネーシ ョ ン ク ロ ッ ク に対 し て、 パス要件の乗数を変更する ために使用 し ます。 set_multicycle_path の構文 基本的なオプシ ョ ン を使用 し た set_multicycle_path コ マ ン ド の構文は、 次の と お り です。 set_multicycle_path <path_multiplier> [-setup|-hold] [-start|-end] [-from <startpoints>] [-to <endpoints>] [-through <pins|cells|nets>] <path_multiplier> の指定は必須です。 デフ ォ ル ト 値は次の と お り です。 • セ ッ ト ア ッ プ (ま たは リ カバ リ ) 解析では 1 • ホール ド (ま たは リ ムーバル) 解析では 0 ホール ド 関係は、 セ ッ ト ア ッ プ関係 と 直接関連 し てい ます。 最 も 一般的な場合にホール ド サ イ ク ル数を得る には、 次 の式を使用 し ます。 ホール ド サ イ ク ル数 = <setup path multiplier> - 1 - <hold path multiplier> • デフ ォ ル ト では、 セ ッ ト ア ッ プ パ ス の乗数はデス テ ィ ネーシ ョ ン ク ロ ッ ク に対 し て定義 さ れます。 セ ッ ト ア ッ プ要件を ソ ース ク ロ ッ ク に対 し て変更する には、 -start オプシ ョ ン を使用 し ます。 • 同様に、 ホール ド パ ス の乗数は ソ ース ク ロ ッ ク に対 し て定義 さ れます。 ホール ド 要件をデス テ ィ ネーシ ョ ン ク ロ ッ ク に対 し て変更す る には、 -end オプシ ョ ン を使用 し ます。 注記 : 関連す る 用語の定義については、 『Vivado Design Suite ユーザー ガ イ ド : デザ イ ン解析お よ び ク ロ ージ ャ テ ク ニ ッ ク 』 (UG906) [参照 4] の 「概要」 を参照 し て く だ さ い。 重要 : 各セ ッ ト ア ッ プ関係には、 2 つのホール ド 関係があ り ます。 1 つのホール ド 関係は、 セ ッ ト ア ッ プ ソ ース エ ッ ジがア ク テ ィ ブ デ ス テ ィ ネーシ ョ ン エ ッ ジの前に到着す る エ ッ ジでキ ャ プチ ャ さ れない よ う に し ます。 も う 1 つの ホール ド 関係は、 ア ク テ ィ ブ ソ ース エ ッ ジの後のエ ッ ジがア ク テ ィ ブ デス テ ィ ネーシ ョ ン エ ッ ジでキ ャ プチ ャ さ れ ない よ う に し ます。 タ イ ミ ン グ解析ツールでは両方のホール ド 関係が算出 さ れますが、 解析お よ びレ ポー ト では よ り 厳 し いホール ド 関係のみが使用 さ れます。 図 5-1 を参照 し て く だ さ い。 X-Ref Target - Figure 5-1 図 5‐1 : パスのセ ッ ト ア ッ プ関係およびホール ド 関係の例 重要 : 同 じ ク ロ ッ ク ま たは同一の 2 つの ク ロ ッ ク (位相シ フ ト があ る な し にかかわ ら ず同 じ 波形) が供給 さ れ る パ ス に マルチサ イ ク ル パ ス制約を適用す る 場合は、 -start お よ び -end オプシ ョ ンは影響 し ません。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 83 第 5 章 : タ イ ミ ン グ例外 表 5-2 に、 ア ク テ ィ ブ ソ ースお よ びデス テ ィ ネーシ ョ ン エ ッ ジが -end お よ び -start オプシ ョ ン に よ り ど の よ う に影響 さ れ る か を示 し ます。 表 5‐2 : ア ク テ ィ ブ ソ ース エ ッ ジおよびデス テ ィ ネーシ ョ ン エ ッ ジ ソ ース ク ロ ッ ク (‐start) ソ ース エ ッ ジの移動方向 デス テ ィ ネーシ ョ ン ク ロ ッ ク (‐end) デス テ ィ ネーシ ョ ン エ ッ ジの移動方向 セッ ト アップ <---- (後方) ----> (前方) (デフ ォ ル ト ) ホール ド ----> (前方) (デフ ォ ル ト ) <---- (後方) 重要 : set_multicycle_path コ マ ン ド の -setup オプシ ョ ンは、 セ ッ ト ア ッ プ関係を変更す る だけでな く 、 ホー ル ド 関係に も 影響 し ます。 ホール ド 関係は、 セ ッ ト ア ッ プ関係 と 直接関連 し てい ます。 ホール ド 関係を元の位置に戻 すには、 別の set_multicycle_path 制約を -hold を使用 し て指定す る 必要があ り ます。 注記 : マルチサ イ ク ル制約は、 1 つのパ ス、 複数のパ ス、 ま たは 2 つの ク ロ ッ ク 間に設定で き ます。 次の セ ク シ ョ ン で は、 マ ルチ サ イ ク ル パ ス を 使用す る 一般的 な 状況 と 、 セ ッ ト ア ッ プお よ び ホ ール ド の乗数 と -start お よ び -end オプシ ョ ンの タ イ ミ ン グ パス要件への影響を示 し ます。 1 つの ク ロ ッ ク ド メ イ ン でのマルチサイ ク ル制約 同 じ ク ロ ッ ク ド メ イ ン内ま たは同 じ 波形の 2 つの ク ロ ッ ク 間で定義 さ れ る マルチサ イ ク ル制約は、同 じ よ う に機能 し ます。 図 5-2 を参照 し て く だ さ い。 X-Ref Target - Figure 5-2 図 5‐2 : 1 つの ク ロ ッ ク ド メ イ ン でのマルチサイ クル制約 図 5-3 に、ス タ テ ィ ッ ク タ イ ミ ン グ解析 (STA) ツールで使用 さ れ る デフ ォ ル ト のセ ッ ト ア ッ プ関係 と ホール ド 関係を 示 し ます。 X-Ref Target - Figure 5-3 図 5‐3 : デ フ ォル ト のセ ッ ト ア ッ プおよびホール ド 関係 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 84 第 5 章 : タ イ ミ ン グ例外 セ ッ ト ア ッ プお よ びホール ド タ イ ミ ン グ要件は、 次の と お り です。 • セ ッ ト ア ッ プ チェ ッ ク TDatapath(max) < TCLK(t=Period) - TSetup • ホール ド チ ェ ッ ク TDatapath(min) > TCLK(t=0) + THold ホール ド を保持 し なが ら セ ッ ト ア ッ プ を緩和 図 5-4 に、2 サ イ ク ルご と に イ ネーブルにな る 2 つの フ リ ッ プ フ ロ ッ プ間のパ ス を示 し ます。 こ のパス では、デス テ ィ ネーシ ョ ン ク ロ ッ ク の最初のエ ッ ジがア ク テ ィ ブでな く 、 デス テ ィ ネーシ ョ ン ク ロ ッ ク の 2 番目のエ ッ ジのみで新 し いデー タ がキ ャ プチ ャ さ れ る こ と を示すため、 マルチサ イ ク ル パス制約を定義で き ます。 X-Ref Target - Figure 5-4 図 5‐4 : 2 サイ クルご と に イ ネーブルにな る レ ジ ス タ 次の制約に よ り 、 新 し いセ ッ ト ア ッ プ関係を定義 し ます。 set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D] ホール ド 関係が ど の よ う にセ ッ ト ア ッ プ関係か ら 導出 さ れ る かは、『Vivado Design Suite ユーザー ガ イ ド : デザ イ ン解 析お よ び ク ロ ージ ャ テ ク ニ ッ ク 』 (UG906) [参照 4] の 「 タ イ ミ ン グ解析の実行」 を参照 し て く だ さ い。 セ ッ ト ア ッ プ 関係を変更す る と 、 セ ッ ト ア ッ プの ソ ース エ ッ ジお よ びデス テ ィ ネーシ ョ ン エ ッ ジの変更に伴い、 ホール ド 関係 も 変更 さ れます。 重要 : 新 し いホール ド 要件が厳 し く な り すぎ る と 、 タ イ ミ ン グ ク ロ ージ ャ が困難にな り ます。 デザ イ ン で可能な場合 にホール ド 要件を緩和す る のは、 ユーザーが実行す る 必要があ り ます。 図 5-4 と 同 じ 例で、 セ ッ ト ア ッ プ を 2 番目のデス テ ィ ネーシ ョ ン エ ッ ジに移動す る と 、 ホール ド チ ェ ッ ク が自動的 に最初のデス テ ィ ネーシ ョ ン エ ッ ジ (セ ッ ト ア ッ プ チ ェ ッ ク の 1 ク ロ ッ ク 周期前) に移動 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 85 第 5 章 : タ イ ミ ン グ例外 図 5-5 に、 マルチサ イ ク ル パ ス制約でセ ッ ト ア ッ プ パ ス の乗数のみを指定 し た場合に、 セ ッ ト ア ッ プ関係 と ホール ド 関係の両方が ど の よ う に変更 さ れ る か を示 し ます。 X-Ref Target - Figure 5-5 図 5‐5 : マルチサイ ク ル パス : セ ッ ト ア ッ プのみを緩和 こ のパス が機能する ためには、 ク ロ ッ ク イ ネーブルのため、 data0_reg にデータ を 1 サ イ ク ル保持する必要はあ り ませ ん。 こ の場合、 ホール ド 関係を元に戻す こ と をお勧め し ます (同 じ ソ ース エ ッ ジ と デス テ ィ ネーシ ョ ン エ ッ ジの間)。 こ れには、 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 オプシ ョ ンは省略 さ れてい ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 86 第 5 章 : タ イ ミ ン グ例外 図 5-6 に、 両方のマルチサ イ ク ル パ ス制約を適用 し た後のセ ッ ト ア ッ プ関係 と ホール ド 関係を示 し ます。 X-Ref Target - Figure 5-6 図 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-7 図 5‐7 : セ ッ ト ア ッ プの乗数が 4 のマルチサイ クル パス セ ッ ト ア ッ プの移動 次に、 セ ッ ト ア ッ プ を移動 し た例を示 し ます。 • 「例 1 : セ ッ ト ア ッ プの乗数を 5 に設定 し 、 ホール ド を それに応 じ て移動」 • 「例 2 : セ ッ ト ア ッ プの乗数を 5、 ホール ド の乗数を 4 に設定」 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 87 第 5 章 : タ イ ミ ン グ例外 例 1 : セ ッ ト ア ッ プの乗数を 5 に設定 し 、 ホール ド を それに応 じ て移動 セ ッ ト ア ッ プ パ ス の乗数を 5 に設定す る と し ます。 ホール ド パ ス の乗数は指定 さ れていないので、 ホール ド 関係は セ ッ ト ア ッ プの ソ ース エ ッ ジお よ びデス テ ィ ネーシ ョ ン エ ッ ジか ら 算出 さ れます。 set_multicycle_path 5 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D] デフ ォ ル ト では、 セ ッ ト ア ッ プ パ ス の乗数はデス テ ィ ネーシ ョ ン ク ロ ッ ク に対 し て定義 さ れ る ので、 デス テ ィ ネー シ ョ ン ク ロ ッ ク のエ ッ ジが前方に移動 し ます。 セ ッ ト ア ッ プのデス テ ィ ネーシ ョ ン エ ッ ジは、 5 ク ロ ッ ク 周期後にな り ま す。 ホール ド の乗数は指定 さ れていないので、 ホール ド チ ェ ッ ク のデ ス テ ィ ネーシ ョ ン ク ロ ッ ク のエ ッ ジは、 セ ッ ト ア ッ プ チ ェ ッ ク に使用 さ れ る ア ク テ ィ ブ エ ッ ジの 1 サ イ ク ル前に到着す る エ ッ ジの ま ま にな り ます。 セ ッ ト ア ッ プ関係お よ びホール ド 関係の両方に対 し 、 ソ ース ク ロ ッ ク のエ ッ ジは変更 さ れません。 X-Ref Target - Figure 5-8 図 5‐8 : セ ッ ト ア ッ プの乗数を 5 に設定 し 、 ホール ド を それに応 じ て移動 4 サ イ ク ルのホール ド 要件では、 タ イ ミ ン グ ド リ ブンの イ ンプ リ メ ン テーシ ョ ン ツールで通常、 ス ロ ーお よ びフ ァ ー ス ト の両方の タ イ ミ ン グ コ ーナーでホール ド タ イ ミ ン グ を満たすため、 デー タ パ ス に大 き な遅延を挿入す る 必要が あ り ます。 こ れに よ り 、 不必要なエ リ アお よ び消費電力が発生 し ます。 そのため、 可能な場合はホール ド 要件を緩和 す る こ と が重要です。 こ の例では、 ク ロ ッ ク イ ネーブル信号に よ り 、 data0_reg に 4 サ イ ク ル間デー タ を保持 し て メ タ ス テーブル状態にな る のを回避で き ます。 「例 2 : セ ッ ト ア ッ プの乗数を 5、 ホール ド の乗数を 4 に設定」 で、 ホール ド 要件を ど の よ う に 緩和す る か を説明 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 88 第 5 章 : タ イ ミ ン グ例外 例 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 サ イ ク ル 前方に移動 し ます。 X-Ref Target - Figure 5-9 図 5‐9 : セ ッ ト ア ッ プの乗数を 5、 ホール ド の乗数を 4 に設定 ソ ース ク ロ ッ ク と デス テ ィ ネーシ ョ ン ク ロ ッ ク の波形は同 じ で位相が揃っ てい る ので、図 5-9 は図 5-10 と 同 じ です。 X-Ref Target - Figure 5-10 図 5‐10 : セ ッ ト ア ッ プの乗数を 5、 ホール ド の乗数を 4 に設定 重要 : 通常、 1 つの ク ロ ッ ク ド メ イ ン内ま たは同 じ 波形の 2 つの ク ロ ッ ク 間では、 次に示す よ う に、 セ ッ ト ア ッ プの 乗数を N に設定す る と 、 ホール ド の乗数は N-1 に設定 さ れます。 set_multicycle_path N -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D] set_multicycle_path N-1 -hold -from [get_pins data0_reg/C] -to [get_pins data1_reg/D] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 89 第 5 章 : タ イ ミ ン グ例外 マルチサイ クル パスおよび ク ロ ッ ク位相シ フ ト ク ロ ッ ク 周期が同 じ で位相シ フ ト のあ る 2 つの ク ロ ッ ク ド メ イ ン間で タ イ ミ ン グ制約を定義す る 必要があ る 場合が あ り ます。 その場合、 タ イ ミ ン グ エン ジ ンで使用 さ れ る デフ ォ ル ト のセ ッ ト ア ッ プ関係お よ びホール ド 関係を理解 し てお く こ と が重要です。 注意深 く 調整 し ない と 、 2 つの ク ロ ッ ク 間の位相シ フ ト に よ り 、 こ れ ら の ク ロ ッ ク ド メ イ ン 間の ロ ジ ッ ク が過剰に制約 さ れ る 可能性があ り ます。 X-Ref Target - Figure 5-11 図 5‐11 : マルチサイ クル パスお よび ク ロ ッ ク位相シ フ ト 波形の同 じ 2 つの ク ロ ッ ク CLK1 と CLK2 があ り 、 CLK2 は +0.3ns シ フ ト さ れてい る と し ます。 タ イ ミ ン グ エン ジ ンでは、 セ ッ ト ア ッ プ関係を算出す る ため、 両方の波形のすべてのエ ッ ジ を検出 し 、 最 も 厳 し い制 約 と な る ソ ース ク ロ ッ ク と デス テ ィ ネーシ ョ ン ク ロ ッ ク の 2 つのエ ッ ジ を選択 し ます。 ク ロ ッ ク の位相シ フ ト のため、タ イ ミ ン グ エン ジ ンで使用 さ れ る セ ッ ト ア ッ プ関係 と ホール ド 関係が予測 と 異な る 場 合があ り ます。 図 5-12 を参照 し て く だ さ い。 X-Ref Target - Figure 5-12 図 5‐12 : 位相シ フ ト ク ロ ッ ク でマルチサイ クル パス制約を設定 し ない場合の例 こ の例では、 位相シ フ ト のためセ ッ ト ア ッ プ制約は 0.3ns にな り ます。 こ れでは、 タ イ ミ ン グ ク ロ ージ ャ を達成す る こ と はほぼ不可能です。 一方、 ホール ド チ ェ ッ ク は -3.7ns であ り 、 こ れはゆ る すぎ ます。 意図 し た動作を得 る ため、 セ ッ ト ア ッ プ エ ッ ジ と ホール ド エ ッ ジ を調整す る 必要があ り ます。 こ れには、 セ ッ ト ア ッ プの乗数を 2 に設定す る マルチサ イ ク ル パ ス制約を追加 し ます。 set_multicycle_path 2 -setup -from [get_clocks CLK1] -to [get_clocks CLK2] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 90 第 5 章 : タ イ ミ ン グ例外 こ れに よ り 、 セ ッ ト ア ッ プ要件のデス テ ィ ネーシ ョ ン エ ッ ジが 1 サ イ ク ル前方に移動 し ます。 ホール ド のデフ ォ ル ト のエ ッ ジは、 セ ッ ト ア ッ プ要件か ら 導出 さ れた も のにな る ので、 指定す る 必要はあ り ません。 X-Ref Target - Figure 5-13 図 5‐13 : 正の位相シ フ ト の例 : セ ッ ト ア ッ プの乗数を 2 (‐end) に設定 し 、 ホール ド を それに応 じ て移動 2 つの ク ロ ッ ク ド メ イ ン間の位相シ フ ト が負の場合 (図 5-14)、 セ ッ ト ア ッ プ チ ェ ッ ク およびホール ド チ ェ ッ ク に使用 さ れ る ソ ース エ ッ ジ と デス テ ィ ネーシ ョ ン エ ッ ジは 1 つの ク ロ ッ ク ド メ イ ンで位相シ フ ト のない場合 と 似てい ます。 X-Ref Target - Figure 5-14 図 5‐14 : 負の位相シ フ ト の例 負の位相シ フ ト では、 位相シ フ ト の影響を相殺す る ためマルチサ イ ク ル パ ス制約を設定す る 必要は通常あ り ま せん が、 位相シ フ ト が大 き い場合は、 セ ッ ト ア ッ プお よ びホール ド 要件を現実的な も のにす る ために ク ロ ッ ク の ソ ー ス エ ッ ジ ま たはデス テ ィ ネーシ ョ ン エ ッ ジ を調整する 必要があ る 場合 も あ り ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 91 第 5 章 : タ イ ミ ン グ例外 低速 ク ロ ッ クか ら 高速 ク ロ ッ ク のマルチサイ クル ソ ース ク ロ ッ ク CLK1 が低速で、 デス テ ィ ネーシ ョ ン ク ロ ッ ク CLK2 が高速であ る 場合を考え ます。 図 5-15 を参照 し て く だ さ い。 X-Ref Target - Figure 5-15 図 5‐15 : 低速 ク ロ ッ クから高速ク ロ ッ ク のマルチサイ ク ル パス制約 た と えば、 CLK2 の周波数が CLK1 の周波数の 3 倍であ り 、 受信レ ジ ス タ に ク ロ ッ ク イ ネーブル信号があ る ので、 2 つの ク ロ ッ ク の間でマルチサ イ ク ル パス制約を設定可能であ る と し ます。 図 5-16 を参照 し て く だ さ い。 X-Ref Target - Figure 5-16 図 5‐16 : 低速 ク ロ ッ クから高速ク ロ ッ ク のマルチサイ ク ル パス制約 図 5-17 に、 マルチサ イ ク ルが設定 さ れていない場合に STA ツールで使用 さ れ る セ ッ ト ア ッ プ関係 と ホール ド 関係を 示 し ます。 X-Ref Target - Figure 5-17 図 5‐17 : デ フ ォル ト のセ ッ ト ア ッ プおよびホール ド 関係 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 92 第 5 章 : タ イ ミ ン グ例外 例 1 : セ ッ ト ア ッ プの乗数を 3 に設定 し 、 ホール ド を それに応 じ て移動 次の よ う なセ ッ ト ア ッ プの乗数が 3 のマルチサ イ ク ル パ ス制約を定義する と し ます。 set_multicycle_path 3 -setup -from [get_clocks CLK1] -to [get_clocks CLK2] セ ッ ト ア ッ プに対 し て マルチサ イ ク ル パ ス 制約を設定す る と 、 セ ッ ト ア ッ プ チ ェ ッ ク に使用 さ れ る デ ス テ ィ ネー シ ョ ン ク ロ ッ ク のエ ッ ジが 2 (3 - 1) サ イ ク ル前方に移動 し ます。 ホール ド パ ス の乗数は指定 さ れていないので、 ホー ル ド 関係はセ ッ ト ア ッ プの ソ ース エ ッ ジお よ びデス テ ィ ネーシ ョ ン エ ッ ジか ら 導出 さ れます。 ソ ース ク ロ ッ ク のア ク テ ィ ブ エ ッ ジはマルチサ イ ク ル パ ス制約に よ り 変更 さ れません。 図 5-18 に、 マルチサ イ ク ルが設定 さ れた後のセ ッ ト ア ッ プ関係 と ホール ド 関係を示 し ます。 X-Ref Target - Figure 5-18 図 5‐18 : セ ッ ト ア ッ プの乗数を 3 に し 、 ホール ド を それに応 じ て移動 こ のパ ス が機能す る ためには、 送信レ ジ ス タ にデー タ を 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) サ イ ク ル前方に移動 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 93 第 5 章 : タ イ ミ ン グ例外 図 5-19 に、 2 つのマルチサ イ ク ル パス制約が設定 さ れた後のセ ッ ト ア ッ プ関係 と ホール ド 関係を示 し ます。 X-Ref Target - Figure 5-19 図 5‐19 : セ ッ ト ア ッ プの乗数を 3、 ホール ド の乗数を 2 (‐end) に設定 重要 : 低速の ク ロ ッ ク ド メ イ ンか ら 高速の ク ロ ッ ク ド メ イ ンに移動す る パ ス では、 セ ッ ト ア ッ プの乗数を N に設定 し た場合は、 ホール ド の乗数 N-1 をデス テ ィ ネーシ ョ ン ク ロ ッ ク (-end) に対 し て 設定 し ます。 次に コ ー ド 例を示 し ます。 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] 高速 ク ロ ッ クか ら 低速 ク ロ ッ ク のマルチサイ クル ソ ース ク ロ ッ ク CLK1 が高速で、 デス テ ィ ネーシ ョ ン ク ロ ッ ク CLK2 が低速であ る 場合を考え ます。 図 5-20 を参照 し て く だ さ い。 X-Ref Target - Figure 5-20 図 5‐20 : 高速ク ロ ッ クから低速ク ロ ッ クのマルチサイ クル こ の例では、 ソ ー ス ク ロ ッ ク CLK1 が高速 ク ロ ッ ク で、 デ ス テ ィ ネーシ ョ ン ク ロ ッ ク CLK2 が低速 ク ロ ッ ク です。 CLK1 の周波数が CLK2 の周波数の 3 倍であ る と し ます。 図 5-21 を参照 し て く だ さ い。 X-Ref Target - Figure 5-21 図 5‐21 : 高速ク ロ ッ クから低速ク ロ ッ クのマルチサイ ク ル 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 94 第 5 章 : タ イ ミ ン グ例外 図 5-22 に、 マルチサ イ ク ルが設定 さ れていない場合に STA ツールで使用 さ れ る セ ッ ト ア ッ プ関係 と ホール ド 関係を 示 し ます。 X-Ref Target - Figure 5-22 図 5‐22 : デ フ ォル ト のセ ッ ト ア ッ プおよびホール ド 関係 例 : セ ッ ト ア ッ プの乗数を 3 (‐start)、 ホール ド の乗数を 2 に設定 セ ッ ト ア ッ プの乗数 3 が ソ ース ク ロ ッ ク (-start) に対 し て設定 さ れ、 ホール ド の乗数が 1 に設定 さ れてい る と し ま す。 set_multicycle_path 3 -setup -start -from [get_clocks CLK1] -to [get_clocks CLK2] set_multicycle_path 2 -hold -from [get_clocks CLK1] -to [get_clocks CLK2] ソ ー ス ク ロ ッ ク (-start) に対 し てセ ッ ト ア ッ プの乗数を設定す る と 、 セ ッ ト ア ッ プ チ ェ ッ ク に使用 さ れ る ソ ース ク ロ ッ ク のエ ッ ジが 2 (3 - 1) サ イ ク ル後方に移動 し ます。 ホール ド の乗数は ソ ース ク ロ ッ ク に対 し て設定 さ れ る ので (-hold では -start オプシ ョ ンがデフ ォ ル ト )、ホール ド 関係に使用 さ れ る ソ ース ク ロ ッ ク のエ ッ ジが 2 サ イ ク ル前 方に移動 し ます。 セ ッ ト ア ッ プ チ ェ ッ ク お よ びホール ド チ ェ ッ ク の両方で、デス テ ィ ネーシ ョ ン ク ロ ッ ク のエ ッ ジは変更 さ れません。 図 5-23 を参照 し て く だ さ い。 X-Ref Target - Figure 5-23 図 5‐23 : セ ッ ト ア ッ プの乗数を 3 (‐start)、 ホール ド の乗数を 2 に設定 重要 : パス が高速の ク ロ ッ ク ド メ イ ンか ら 低速の ク ロ ッ ク ド メ イ ンに移動する場合、 セ ッ ト ア ッ プの乗数 N を ソ ース ク ロ ッ ク (-start) に対 し て設定 し 、 ホール ド の乗数を N-1 に設定 し ます (最 も 一般的なケース)。 次に例を示し ます。 set_multicycle_path N -setup -start -from [get_clocks CLK1] -to [get_clocks CLK2] set_multicycle_path N-1 -hold -from [get_clocks CLK1] -to [get_clocks CLK2] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 95 第 5 章 : タ イ ミ ン グ例外 表 5-3 に、 上記の例を ま と め ます。 表 5‐3 : セ ッ ト ア ッ プにマルチサイ ク ル パス制約 N を設定 し た場合の結果 状況 マルチサイ ク ル パス制約 同 じ ク ロ ッ ク ド メ イ ン ま たは同 じ 周期で位相シ フ ト のない同期 ク ロ ッ ク ド メ イ ン間 set_multicycle_path N -setup -from CLK1 -to CLK2 set_multicycle_path N-1 -hold -from CLK1 -to CLK2 同期 し た低速 ク ロ ッ ク ド メ イ ン か ら 高速 ク ロ ッ ク ド メ イ ン set_multicycle_path N -setup -from CLK1 -to CLK2 set_multicycle_path N-1 -hold -end -from CLK1 -to CLK2 同期 し た高速 ク ロ ッ ク ド メ イ ン か ら 低速 ク ロ ッ ク ド メ イ ン set_multicycle_path N -setup -start -from CLK1 -to CLK2 set_multicycle_path N-1 -hold -from CLK1 -to CLK2 注記 : コ マ ン ド を簡潔にす る ため、 表 5-3 では get_clocks コ マ ン ド は省略 し てい ます。 フ ォルス パス フ ォ ルス パ ス は、 デザ イ ンには存在す る が、 機能はな く 、 タ イ ミ ン グ解析す る 必要のないパ ス です。 そのため、 フ ォ ルス パ ス は タ イ ミ ン グ解析で無視す る 必要があ り ます。 ビ デオ : フ ォ ル ス パ ス を 含む高度な タ イ ミ ン グ 例外に関す る ト レ ーニ ン グ ビ デオは、 Vivado Design Suite ビ デオ チ ュ ー ト リ アル : 高度な タ イ ミ ン グ例外 - フ ォ ルス パ ス、 最小/最大遅延、 ケース解析を参照 し て く だ さ い。 次に、 フ ォ ルス パ ス の例を示 し ます。 • ダブル シ ン ク ロ ナ イ ザー ロ ジ ッ ク が追加 さ れた ク ロ ッ ク ド メ イ ン を ま たが る パス • 電源投入時に一度だけ書 き 込まれ る レ ジ ス タ • リ セ ッ ト ま たはテ ス ト ロ ジ ッ ク • 非同期分散 RAMの書 き 込み ク ロ ッ ク と 非同期読み出 し ク ロ ッ ク の間のパ ス を無視 (該当する 場合) 図 5-24 に、 機能 し ないパ ス の例を示 し ま す。 2 つのマルチプ レ ク サーは ど ち ら も 同 じ セ レ ク ト 信号で駆動 さ れ る の で、 Q か ら D へのパス は存在せず、 フ ォ ルス パ ス と し て定義する 必要があ り ます。 X-Ref Target - Figure 5-24 図 5‐24 : 機能 し ないパスの例 ヒ ン ト : 同期パ ス の タ イ ミ ン グ要件を緩和する が、 パ ス の タ イ ミ ン グ を解析 し て最適化す る 必要があ る 場合は、 フ ォ ルス パ ス制約ではな く マルチサ イ ク ル パ ス制約を使用 し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 96 第 5 章 : タ イ ミ ン グ例外 タ イ ミ ン グ解析か ら フ ォ ルス パス を除外する のには、 次の よ う な理由があ り ます。 • 実行時間の短縮 タ イ ミ ン グ解析か ら フ ォ ルス パス を除外する と 、機能 し ないパ ス の タ イ ミ ン グ を ツールで解析 し た り 最適化す る 必要はあ り ません。 機能 し ないパス を タ イ ミ ン グ エン ジ ンお よ び最適化エン ジ ンで処理する 必要があ る と 、実行 時間が大幅に増加 し ます。 • QoR (結果の品質) の向上 フ ォ ル ス パ ス を除外す る と 、 QoR が大幅に向上す る 可能性があ り ます。 合成、 配置、 最適化 さ れたデザ イ ン の 質は、 ツールが解決 し よ う と す る タ イ ミ ン グ問題に大 き く 影響を受け ます。 機能 し ないパ ス に タ イ ミ ン グ違反があ る 場合、 実際に機能す る パ ス ではな く こ れ ら のパ ス の問題を修正す る ため に時間が費や さ れ る 可能性があ り ます。 ロ ジ ッ ク が複製 さ れ る な ど、 デザ イ ンのサ イ ズが不必要に大 き く な る だ けでな く 、 機能 し ないパ ス の違反が大 き いために本物の違反が修正 さ れない こ と も あ り ます。 最適な結果は、 現 実的な制約を設定 し た場合に達成 さ れます。 フ ォ ルス パ ス は、 XDC コ マ ン ド set_false_path で定義 し ます。 set_false_path [-setup] [-hold] [-from <node_list>] [-to <node_list>] \ [-through <node_list>] こ れ以外に も 、 パス を よ り 詳細に指定する コ マン ド オプシ ョ ンがあ り ます。 サポー ト さ れ るすべての コ マン ド ラ イ ン オプシ ョ ンの詳細は、 『Vivado Design Suite Tcl コ マン ド リ フ ァ レ ン ス ガ イ ド 』 (UG835) [参照 9] を参照 し て く だ さ い。 • -from オプシ ョ ンの ノ ー ド リ ス ト は、 有効な開始点の リ ス ト であ る 必要があ り ます。 有効な開始点は、 ク ロ ッ ク オブジ ェ ク ト 、 順次エ レ メ ン ト の ク ロ ッ ク ピ ン、 入力 (ま たは入出力) プ ラ イ マ リ ポー ト です。 複数のエ レ メ ン ト を指定で き ます。 • -to オプシ ョ ンの ノ ー ド リ ス ト は、 有効な終点の リ ス ト であ る 必要があ り ます。 有効な終点は、 ク ロ ッ ク オブ ジ ェ ク ト 、 順次エ レ メ ン ト 入力デー タ ピ ンの出力 (ま たは入出力) プ ラ イ マ リ ポー ト です。 複数のエ レ メ ン ト を 指定で き ます。 • -through オプシ ョ ンの ノ ー ド リ ス ト は、 有効な ピ ン ま たはポー ト の リ ス ト であ る 必要があ り ます。 複数のエ レ メ ン ト を指定で き ます。 注意 : -from お よ び -to オプ シ ョ ン を使用せずに -through オプ シ ョ ン を使用す る 場合は、 指定 し た ピ ン ま たは ポー ト を追加す る すべてのパ ス が タ イ ミ ン グ解析か ら 除外 さ れ る ので、 注意が必要です。 IP ま たはサブブ ロ ッ ク 用に タ イ ミ ン グ制約を定義 し 、 別の コ ン テ キ ス ト ま たは大型のプ ロ ジ ェ ク ト で使用す る 場合は、 特に注意 し て く だ さ い。 -through オプシ ョ ンのみを使用す る 場合、 意図 し た以上のパス が除外 さ れ る 可能性があ り ます。 -through オプシ ョ ンの順序 も 重要です。 次に例を示 し ます。 次の 2 つは、 異な る 制約を設定 し ます。 set_false_path -through cell1/pin1 -through cell2/pin2 set_false_path -through cell2/pin2 -through cell1/pin1 次の例では、 reset ポー ト か ら すべての レ ジ ス タ への タ イ ミ ン グ パ ス を除外 し てい ます。 set_false_path -from [get_port reset] -to [all_registers] 次の例では、 2 つの非同期 ク ロ ッ ク ド メ イ ン間 ( ク ロ ッ ク CLKA か ら CLKB) の タ イ ミ ン グ パス を除外 し てい ます。 set_false_path -from [get_clocks CLKA] -to [get_clocks CLKB] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 97 第 5 章 : タ イ ミ ン グ例外 こ の例では、 ク ロ ッ ク CLKA か ら ク ロ ッ ク CLKB のパ ス は除外 さ れますが、 ク ロ ッ ク CLKB か ら ク ロ ッ ク CLKA へ のパ ス は除外 さ れません。 2 つの ク ロ ッ ク ド メ イ ン間の両方向のパ スすべて を除外する には、 2 つの set_false_path コ マ ン ド が必要です。 set_false_path -from [get_clocks CLKA] -to [get_clocks CLKB] set_false_path -from [get_clocks CLKB] -to [get_clocks CLKA] 重要 : 上記の 2 つの set_false_path の例で意図 し た結果は得 ら れ ますが、 複数の ク ロ ッ ク ド メ イ ンが非同期で、 こ れ ら の ク ロ ッ ク ド メ イ ン間の両方向のパス を除外する 必要があ る 場合は、set_clock_groups コ マ ン ド を使用す る こ と をお勧め し ます。 set_clock_groups -group CLKA -group CLKB 図 5-24 に示す例では、-from ま たは -to オプシ ョ ン を使用す る 代わ り に -through オプシ ョ ン を使用 し て フ ォ ルス パ ス を設定す る こ と も で き ます。 図 5-25 を参照 し て く だ さ い。 X-Ref Target - Figure 5-25 図 5‐25 : 機能 し ないパスの例 こ れに よ り 、 開始点お よ び終点の特定のパ タ ーン を見つけ る 必要な く 、 上図に示すパ ス を通過す る すべてのパ ス を選 択で き ます。 set_false_path -through [get_pins MUX1/a0] -through [get_pins MUX2/a1] 注記 : -through オプシ ョ ンの順序 も 重要です。 上記の例では、 フ ォ ルス パ ス は まず MUX1/a0 ピ ン を通過 し てか ら MUX2/a1 ピ ン を通過 し ます。 別の一般的な例 と し て、 非同期デ ュ アル ポー ト 分散 RAM を使用す る 場合があ り ます。 書 き 込みは ク ロ ッ ク RAM に 同期 し てい ますが、 読み出 し はデザ イ ンで許容 さ れれば非同期にす る こ と も で き ます。 こ の場合、 書 き 込み ク ロ ッ ク と 読み出 し ク ロ ッ ク の間の タ イ ミ ン グ パス を フ ォ ルス パ ス と し て設定 し て も 問題あ り ません。 こ れには、 次の 2 つの方法があ り ます。 • RAM の前にあ る 書 き 込みレ ジ ス タ か ら 読み出 し ク ロ ッ ク を受信す る RAM の後にあ る レ ジ ス タ ま でのパ ス を、 フ ォ ルス パ ス と し て定義 し ます。 set_false_path -from [get_cells <write_registers>] -to [get_cells <read_registers>] Vivado サンプル プ ロ ジ ェ ク ト WAVE (HDL) では、 次の よ う にな り ます。 set_false_path -from [get_cells -hier -filter {NAME =~ *gntv_or_sync_fifo.gl0.wr*reg[*]}] -to [get_cells -hier -filter {NAME=~ *gntv_or_sync_fifo.mem*gpr1.dout_i_reg[*]}] • RAM の WE ピ ンか ら 開始す る パス を フ ォ ルス パ ス と し て定義 し ます。 set_false_path -from [get_cells -hier -filter {REF_NAME =~ RAM* && IS_SEQUENTIAL && NAME =~ <PATTERN_FOR_DISTRIBUTED_RAMS>}] Vivado サンプル プ ロ ジ ェ ク ト WAVE (HDL) では、 次の よ う にな り ます。 set_false_path -from [get_cells -hier -filter {REF_NAME =~ RAM* && IS_SEQUENTIAL && NAME =~ *char_fifo*}] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 98 第 5 章 : タ イ ミ ン グ例外 図 5-26 に、 WAVE (HDL) サンプル プ ロ ジ ェ ク ト で分散 RAM が ど の よ う に駆動 さ れ る かを示 し ます。 X-Ref Target - Figure 5-26 図 5‐26 : WAVE (HDL) サン プル プ ロ ジ ェ ク ト での分散 RAM の駆動方法 最小/最大遅延 パ ス の最大遅延ま たは最小遅延を変更で き ます。 • パ ス のデフ ォ ル ト のセ ッ ト ア ッ プ ( リ カバ リ ) 要件を変更す る には最大遅延制約を使用 し ます。 • パ ス のデフ ォ ル ト のホール ド ( リ ムーバル) 要件を変更す る には最小遅延制約を使用 し ます。 最大遅延制約および最小遅延制約の設定 最大遅延制約お よ び最小遅延制約は、 2 つの異な る XDC コ マ ン ド で設定 し ます。 ど ち ら の コ マ ン ド に も 、 同様のオ プシ ョ ンがあ り ます。 最大遅延制約の構文 set_max_delay <delay> [-datapath_only] [-from <node_list>] [-to <node_list>] [-through <node_list>] 最小遅延制約の構文 set_min_delay <delay> [-from <node_list>] [-to <node_list>] [-through <node_list>] こ れ以外に も 、 パス を よ り 詳細に指定する コ マン ド オプシ ョ ンがあ り ます。 サポー ト さ れ るすべての コ マン ド ラ イ ン オプシ ョ ンの詳細は、 『Vivado Design Suite Tcl コ マン ド リ フ ァ レ ン ス ガ イ ド 』 (UG835) [参照 9] を参照 し て く だ さ い。 ‐from オプ シ ョ ンの ノ ー ド リ ス ト • -from オプシ ョ ンの ノ ー ド リ ス ト は、 有効な開始点の リ ス ト であ る 必要があ り ます。 有効な開始点は、 ク ロ ッ ク 、 入力ま たは入出力ポー ト 、 レ ジ ス タ や RAM な ど の順次エ レ メ ン ト の ク ロ ッ ク ピ ンです。 有効でない開始点 の ノ ー ド を使用す る と 、 パ ス が分割 さ れます。 パ ス の分割については、 次のセ ク シ ョ ンで説明 し ます。 • 複数のエ レ メ ン ト を指定で き ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 99 第 5 章 : タ イ ミ ン グ例外 ‐to オプ シ ョ ンの ノ ー ド リ ス ト • -to オプシ ョ ンの ノ ー ド リ ス ト は、 有効な終点の リ ス ト であ る 必要があ り ます。 有効な終点は、 ク ロ ッ ク 、 出 力ま たは入出力ポー ト 、 シーケ ン シ ャ ル セルのデー タ ピ ンです。 • 有効でない終点の ノ ー ド を使用す る と 、 パ ス が分割 さ れます。 詳細は、 101 ページの 「パ ス分割」 を参照 し て く だ さ い。 • 複数のエ レ メ ン ト を指定で き ます。 ‐through オプ シ ョ ンの ノ ー ド リ ス ト • -through オプシ ョ ンの ノ ー ド リ ス ト は、 有効な ピ ン、 ポー ト 、 ま たはネ ッ ト の リ ス ト であ る 必要があ り ます。 • 複数のエ レ メ ン ト を指定で き ます。 デフ ォ ル ト では、 ス ラ ッ ク の算出に ク ロ ッ ク ス キ ュ ーが含まれます。 -datapath_only オプシ ョ ン を使用す る と 、 ス ラ ッ ク の算出か ら ク ロ ッ ク ス キ ュ ーを除外で き ます。 –datapath_only オプシ ョ ンは、 set_max_delay コ マ ン ド でのみサポー ト さ れ、 -from オプシ ョ ン と 共に使用す る 必要があ り ます。 表 5-4 に、 set_max_delay constraint に対す る -datapath_only の影響を示 し ます。 -datapath_only オプシ ョ ン を使用 し た場合 と 使用 し ない場合の set_max_delay のパ ス遅延算出の共通点は、 次 の と お り です。 • 入力遅延は、 パ ス が入力ポー ト で開始 し 、 set_input_delay がそのポー ト に指定 さ れてい る 場合に、 パ ス遅延 算出に含まれます。 • 出力遅延は、 パ ス が出力ポー ト で終了 し 、 set_output_delay がそのポー ト に指定 さ れてい る 場合に、 パ ス遅 延算出に含ま れます。 • デー タ ピ ンのセ ッ ト ア ッ プ タ イ ムは、 パ ス が順次エ レ メ ン ト のデー タ ピ ン で終了す る 場合に、 パ ス遅延算出に 含まれます。 表 5‐4 : ‐datapath_only を使用 し た場合 と し ない場合の最大遅延制約の違い set_max_delay set_max_delay ‐datapath_only パ ス遅延の算出 制約が順次エ レ メ ン ト の ク ロ ッ ク ピ ン で開 始 し 、順次エ レ メ ン ト のデー タ ピ ンで終了す る場合に ス キ ューが含まれ る ス キ ュ ーは含まれない ホール ド 要件 変化な し フ ォ ルス パ ス -from オプシ ョ ン オプシ ョ ン 必須 パスに最大遅延制約お よび最小遅延制約を設定 し た場合の影響 パ ス に最大遅延制約を設定 し て も 、 -datapath_only オプシ ョ ンが使用 さ れていない場合は、 そのパ ス の最小要件 は変更 さ れません。 そのパ ス のホール ド ( リ ムーバル) チ ェ ッ ク はデフ ォ ル ト の ま ま です。 注記 : -datapath_only オプシ ョ ン を set_max_delay と 共に使用す る と 、 それ ら のパ ス のホール ド 要件は無視 さ れます (一部の内部 set_false_path -hold 制約は生成 さ れ る )。 同様に、 パ ス に最小遅延制約を設定 し て も 、 デフ ォ ル ト のセ ッ ト ア ッ プ ( リ カバ リ ) チ ェ ッ ク は変更 さ れません。 パ ス に最大遅延要件のみがあ る 場合は、 set_max_delay お よ び set_false_path コ マ ン ド を組み合わせて こ のパ ス を制約で き ます。 次に例を示 し ます。 set_max_delay 5 -from [get_pins FD1/C] -to [get_pins FD2/D] set_false_path -hold -from [get_pins FD1/C] -to [get_pins FD2/D] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 100 第 5 章 : タ イ ミ ン グ例外 上記の例では、 FD1/C か ら FD2/D ま でのパ ス に 5ns セ ッ ト ア ッ プ要件を設定 し てい ます。 set_false_path コ マ ン ド があ る ので、 最小要件はあ り ません。 入力ま たは出力ロ ジ ッ ク の制約 set_max_delay コ マ ン ド お よ び set_min_delay コ マ ン ド は、 入力 ま たは出力 ロ ジ ッ ク の制約には通常使用 さ れ ません。 入力ポー ト と 1 段目の レ ジ ス タ の間の入力 ロ ジ ッ ク は、 通常 set_input_delay コ マ ン ド を使用 し て制約 し ます。 こ の コ マ ン ド には、 ク ロ ッ ク と 入力ポー ト を関連付け る オプシ ョ ンがあ り ます。 同様に、 最終段の レ ジ ス タ と 出力ポー ト の間の出力 ロ ジ ッ ク は、 通常 set_output_delay コ マ ン ド を使用 し て制約 し ます。 ただ し 、 プ ラ イ マ リ 入力ポー ト と プ ラ イ マ リ 出力ポー ト の間の組み合わせパ ス (in-to-out I/O パ ス) を制約す る 場合は、 通常 set_max_delay コ マ ン ド お よ び set_min_delay コ マ ン ド を使用 し ます。 非同期信号の制約 ク ロ ッ ク 関係はないが、最大遅延が必要な非同期信号を制約す る 際に も 、set_max_delay コ マ ン ド を使用で き ます。 た と えば、 2 つの非同期 ク ロ ッ ク ド メ イ ン 間の タ イ ミ ン グ パ ス は、 set_clock_groups コ マ ン ド (推奨) ま た は set_false_path コ マ ン ド (推奨 さ れない) を使用 し てデ ィ ス エーブルにで き ます。 こ れは、 ク ロ ッ ク ド メ イ ン間が ダブル レ ジ ス タ シ ン ク ロ ナ イ ザーや FIFO な ど を使用 し て適切に設計 さ れてい る こ と を想定 し てい ます。 ただ し 、 2 つの ク ロ ッ ク ド メ イ ン間のパ ス遅延が不必要に大き く ない こ と を確認する 必要があ り ます。 2 つの ク ロ ッ ク ド メ イ ン間のパ ス の一部ま たはすべてに最大遅延を指定す る 必要があ る 場合、 こ れ ら のパ ス を制約す る のに set_max_delay -datapath_only コ マ ン ド を使用す る 必要が あ り ま す。 こ の場合、 set_max_delay よ り も set_clock_groups が 優 先 さ れ る た め、 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> パス分割 XDC 制約 と は異な り 、 set_max_delay ま たは set_min_delay コ マ ン ド では、 -from オプシ ョ ン で有効でない開 始点の リ ス ト 、 -to オプシ ョ ンで有効でない終点の リ ス ト が許容 さ れます。 有効でない開始点を指定 し た場合、 その ノ ー ド が有効な開始点 と な る よ う に、 その ノ ー ド を通過する タ イ ミ ン グ アー ク が切断 さ れます。 次の例では、 FD1/C のみが有効な開始点です。 set_max_delay 5 -from [get_pins FD1/C] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 101 第 5 章 : タ イ ミ ン グ例外 X-Ref Target - Figure 5-27 図 5‐27 : 元の タ イ ミ ング アー ク 制約を FD1/Q に適用 し た場合、 Q を有効な開始点 と す る ために タ イ ミ ン グ アー ク C->Q が切断 さ れます。 set_max_delay 5 -from [get_pins FD1/Q] X-Ref Target - Figure 5-28 図 5‐28 : タ イ ミ ン グ アー クの切断 (パス分割) 有効な開始点を作成す る ために タ イ ミ ン グ アー ク が切断 さ れ る プ ロ セ ス は、 パ ス分割 と 呼ばれます。 パス分割は、 最 大お よ び最小遅延解析の両方に影響 し ます。タ イ ミ ン グ アー ク が切断 さ れ る ので、パス分割はそれ ら の ノ ー ド (FD1/C お よ び FD1/Q) を通過す る タ イ ミ ン グ制約に も 影響 し ます。 注記 : パス分割に よ り 、 FD1/Q か ら のパス の ソ ース ク ロ ッ ク に ク ロ ッ ク 挿入遅延は使用 さ れません。 そのため、 終点 の ク ロ ッ ク ス キ ュ ーは考慮 さ れ る ので、 ス キ ュ ーが大き く な る 可能性があ り ます。 図 5-29 を参照 し て く だ さ い。 X-Ref Target - Figure 5-29 図 5‐29 : パス分割の結果スキ ュ ーが大き く な る 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 102 第 5 章 : タ イ ミ ン グ例外 注意 : パ ス分割に よ り 、 予期 し ない結果を招 く 可能性があ り ます。 パス分割を避け る か、 十分に注意 し て使用 し て く だ さ い。 パ ス が分割 さ れた場合、 パ ス にデフ ォ ル ト のホール ド 要件はあ り ません。 -datapath_only オプシ ョ ンが指定 さ れ ていない場合は、 必要に応 じ て set_min_delay コ マ ン ド を使用 し て ホール ド 要件を設定 し て く だ さ い。 パ ス分割は問題 と な る 可能性があ る ので、 発生す る と ク リ テ ィ カル警告 メ ッ セージが表示 さ れます。 ク ロ ッ ク ス キ ュ ーを考慮 し ない よ う にす る ため出力 FD1/Q を開始点 と する 場合は、-datapath_only オプシ ョ ン を 使用す る こ と をお勧め し ます。 次に例を示 し ます。 set_max_delay 5 -from [get_pins FD1/C] -datapath_only 同様に、 有効でない終点を指定 し た場合、 その ノ ー ド が有効な終点 と な る よ う に、 タ イ ミ ン グ アー ク がその ノ ー ド の 後で分割 さ れます。 次の例では、 有効でない終点であ る LUTA/O に対 し て最大遅延が設定 さ れてい ます。 set_max_delay 5 -from [get_pins LUTA/O] こ れを図 5-30 に示 し ます。 X-Ref Target - Figure 5-30 図 5‐30 : 有効でない終点が指定 さ れた場合のパス分割 LUTA/O を終点 と す る ため、 タ イ ミ ン グ アー ク がが LUTA/O の後で切断 さ れます。 そのため、 LUTA/O を通過す る す べての タ イ ミ ン グ パ ス のセ ッ ト ア ッ プお よ びホール ド が影響を受け ま す。 REGA/C か ら LUTA/O 間でのパ ス では、 ソ ース ク ロ ッ ク の挿入遅延のみが考慮 さ れ る ので、 ス キ ュ ーが大き く な る 可能性があ り ます。 パ ス分割はデザ イ ンの タ イ ミ ン グ アー ク を切断する ので、予期 し ない結果を招 く 可能性があ り ます。タ イ ミ ン グ アー ク が切断 さ れ る と 、 その ノ ー ド を通過す る すべての タ イ ミ ン グ パス が影響を受け ます。 次の例では、 LUTA/O と REGB/D の間に最大遅延が設定 さ れてい ます。 set_max_delay 6 -from [get_pins LUTA/O] -to [get_pins REGB/D] こ れを図 5-31 に示 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 103 第 5 章 : タ イ ミ ン グ例外 X-Ref Target - Figure 5-31 図 5‐31 : パス分割によ り 複数のパスが切断 さ れる LUTA/O ピ ンは有効な開始点ではないので、 パ ス分割が発生 し 、 LUTA/I* か ら LUTA/O の タ イ ミ ン グ アー ク がデ ィ ス エーブルに な り ま す。 LUTA/O と REGB/D の間のみに set_max_delay 制約が設定 さ れ て い ま すが、 REGA/C と REGC/D の間のパ ス な ど のほかのパ ス も 切断 さ れます。 パス分割 と タ イ ミ ング例外 パ ス 分割に よ り タ イ ミ ン グ例外間の優先順位が変更 さ れ る と 思われ る こ と が あ り ま すが、 実際にはそ う ではあ り ま せん。 set_max_delay 制約 と set_clock_groups 制約の ど ち ら が優先 さ れ る かに よ っ て違いがあ り ます。次の 2 つの状 況を考え ます。 状況 1 set_max_delay <ns> -datapath_only -from <instance> -to <instance> こ の場合、 -from/-to に イ ン ス タ ン ス名を指定 し ます。 イ ン ス タ ン ス を指定す る と 、 Vivado に よ り 有効な開始点が 選択 さ れ る ため、 set_clock_groups -asynchronous に よ り set_max_delay 制約が無効にな り ます。 状況 2 set_max_delay <ns> -datapath_only -from <pin> -to <pin | instance> こ の場合、 -from に指定 し た ピ ン 名に よ り パ ス が分割 さ れ る と 、 set_max_delay 制約が set_clock_groups -asynchronous よ り 無効にな る こ と はあ り ません。 こ れは、 パ ス分割に よ り 、 ピ ン名のパ ス開始点が最初の ク ロ ッ ク ド メ イ ン か ら 開始す る と 考慮 さ れ な く な り 、 こ の パ ス に set_clock_groups 制約 は 適 用 さ れ ず、 set_max_delay 制約が適用 さ れ る か ら です。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 104 第 5 章 : タ イ ミ ン グ例外 ケース解析 デザ イ ンに よ っ ては、 一部の信号が特定のモー ド で定数にな り ます。 た と えば、 動作モー ド では、 テ ス ト 信号は ト グ ル し ないので、 そのア ク テ ィ ブ レベルに よ っ て VDD ま たは VSS に接続 さ れます。 こ れは、 電源投入後は ト グル し な く な る 信号で も 同様です。 ま た、 多 く のデザ イ ンには複数の動作モー ド があ り 、 あ る 動作モー ド ではア ク テ ィ ブな信 号が別のモー ド では非ア ク テ ィ ブであ る 場合があ り ます。 解析空間、実行時間、お よ び メ モ リ 消費量を削減す る ため、信号が定数値 と な る こ と を指定 し てお く こ と が重要です。 こ れは、 機能 し ないパ スお よ び無関係なパ ス が レ ポー ト さ れない よ う にす る ために も 重要です。 信号が非ア ク テ ィ ブであ る こ と を宣言す る には、 set_case_analysis コ マ ン ド を使用 し ます。 こ の コ マ ン ド は、 ピ ン ま たはポー ト に適用で き ます。 ビ デオ : フ ォ ル ス パ ス を 含む高度な タ イ ミ ン グ 例外に関す る ト レ ーニ ン グ ビ デオは、 Vivado Design Suite ビ デオ チ ュ ー ト リ アル : 高度な タ イ ミ ン グ例外 - フ ォ ルス パ ス、 最小/最大遅延、 ケース解析を参照 し て く だ さ い。 set_case_analysis コ マ ン ド の構文は、 次の と お り です。 set_case_analysis <value> <pins or ports objects> <value> に有効な値は、 0、 1、 rise、 rising、 fall、 falling です。 rise/rising ま たは fall/falling を指定す る と 、 ピ ン ま たはポー ト は指定の遷移でのみ タ イ ミ ン グ解析で考慮 さ れ、 ほかの遷移は考慮 さ れません。 ケース値は、 ポー ト 、 最下位セルの ピ ン、 階層モジ ュ ールの ピ ンに設定で き ます。 次の例では、 マルチプ レ ク サー clock_sel の入力ピ ン に 2 つの ク ロ ッ ク を作成 し てい ますが、 選択ピ ン S に定数値を 設定 し た後は、 clk_2 のみが出力ピ ン を介 し て伝搬 さ れます。 X-Ref Target - Figure 5-32 図 5‐32 : ク ロ ッ ク例 create_clock -name clk_1 -period 10.0 [get_pins clock_sel/I0] create_clock -name clk_2 -period 15.0 [get_pins clock_sel/I1] set_case_analysis 1 [get_pins clock_sel/S] 注記 : ピ ンにケース値を指定す る と 、 その ピ ンの タ イ ミ ン グ解析は実行 さ れません。 つま り 、 その ピ ン を通過す る タ イ ミ ン グ パ ス はレ ポー ト さ れません。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 105 第 5 章 : タ イ ミ ン グ例外 タ イ ミ ング アー クのデ ィ ス エーブル set_disable_timing コ マ ン ド を使用す る と 、 セル内の タ イ ミ ン グ アー ク をデ ィ ス エーブルにで き ます。 セルの 入力ポー ト か ら 出力ポー ト ま での タ イ ミ ン グ アー ク のみをデ ィ ス エーブルにで き ます。 一部の タ イ ミ ン グ アー ク は、 特定の状況を処理す る ため、 タ イ マーに よ り 自動的にデ ィ ス エーブルに さ れます。 た と えば、 組み合わせ フ ィ - ド バ ッ ク ループは推奨 さ れず、 適切に タ イ ミ ン グ解析で き ま せん。 こ の よ う なループは、 ループ内の タ イ ミ ン グ アー ク の 1 つのデ ィ ス エーブルにす る こ と に よ り 切断 さ れます。 別の例 と し て、 マルチプ レ ク サーに設定 さ れた ケース解析があ り ます。 デフ ォ ル ト では、 マルチプ レ ク サーのすべて のデー タ 入力は出力ポー ト に伝搬 さ れますが、 信号にケース解析が設定 さ れてい る と 、 1 つのデー タ 入力ポー ト のみ が出力ポー ト に伝搬 さ れます。 こ れは、 ほかのデー タ 入力ポー ト か ら 出力ポー ト への タ イ ミ ン グ アー ク を切断す る こ と に よ り 達成 さ れます。 set_disable_timing コ マ ン ド を使用す る と 、 デザ イ ン内のセルの タ イ ミ ン グ アー ク を手動で切断で き ま す。 た と えば、 組み合わせフ ィ ー ド バ ッ ク ループ を切断す る ためにデ ィ ス エーブルにす る タ イ ミ ン グ アー ク を ツールに判 断 さ せ る のではな く 、 ユーザーが指定で き ます。 ま た、 LUT 入力に複数の ク ロ ッ ク が供給 さ れてい る が、 LUT 出力ポー ト には 1 つの ク ロ ッ ク し か伝搬 さ れない場合、 伝搬 さ れ る べ き ではない ク ロ ッ ク に関連す る タ イ ミ ン グ アー ク を切断で き ます。 LUTRAM が関係す る 状況 も よ く あ り ます。LUTRAM 内には、書 き 込み ク ロ ッ ク と 読み出 し ク ロ ッ ク の間に WCLK ピ ンか ら 出力 O ピ ンへの物理的なパ ス があ り ますが、 LUTRAM ベース の非同期 FIFO に よ り WCLK か ら O の CDC パ ス が発生 し ない よ う にな っ てい ます。 それで も 、 こ の タ イ ミ ン グ アー ク は イ ネーブルにな っ てお り 、 こ の WCLK か ら O への タ イ ミ ン グ アー ク を介す る パス が レ ポー ト さ れ、こ のアー ク に よ り TIMING-10 DRC 違反が発生す る こ と も あ り ます。 その場合、 WCLK か ら O のアー ク をデ ィ ス エーブルに し 、 こ れ ら のパ ス の タ イ ミ ン グ解析が実行 さ れて 無効な DRC 違反が発生す る のを回避す る 必要があ り ます。 こ の タ イ ミ ン グ アー ク は、 ザ イ リ ン ク ス LUTRAM ベー ス の FIFO の現在の イ ンプ リ メ ン テーシ ョ ンでは自動的にデ ィ ス エーブルにな り ます。 注記 : タ イ ミ ン グ アー ク をデ ィ ス エーブルにす る と 、そのアー ク を介す る タ イ ミ ン グ パ ス は レ ポー ト さ れな く な り ま す。 有効な タ イ ミ ン グ アー ク をデ ィ ス エーブルに し ない よ う に注意 し て く だ さ い。 ハー ド ウ ェ アでデザ イ ン エ ラ ー と な る タ イ ミ ン グ違反や タ イ ミ ン グ問題を見逃す結果にな る 可能性があ り ます。 set_disable_arc コ マ ン ド の構文は、 次の と お り です。 set_disable_timing [-from <arg>] [-to <arg>] [-quiet] [-verbose] <objects> –from お よ び -to オプシ ョ ン には、 Vivado オブジ ェ ク ト ではな く ピ ン名を指定 し て く だ さ い。 ま た、 ピ ン名には、 デザ イ ン ピ ン名ではな く 、 ラ イ ブ ラ リ セルか ら の ピ ン名を使用す る 必要があ り ます。 次に例を示 し ます。 set_disable_timing -from WCLK -to O [get_cells inst_fifo_gen/ gdm.dm/gpr1.dout_i_reg[*]] 上記の コ マ ン ド は、LUTRAM ベース のすべての非同期 FIFO inst_fifo_gen/ gdm.dm/gpr1.dout_i_reg[*] の WCLK か ら O の タ イ ミ ン グ アー ク をデ ィ ス エーブルに し てい ます。 -from お よ び -to の指定はオプシ ョ ンです。 -from を指定 し ない場合、 -to で指定 し た ピ ン で終了す る すべての タ イ ミ ン グ アー ク がデ ィ ス エーブルにな り ます。 同様に、 -to を指定 し ない場合、 -from で指定 し た ピ ン か ら 開始す る すべての タ イ ミ ン グ アー ク がデ ィ ス エーブルにな り ます。 -from も -to も 指定 し ない場合、 コ マ ン ド で指定 し た セルのすべての タ イ ミ ン グ アー ク がデ ィ ス エーブルにな り ます。 report_disable_timing コ マ ン ド を使用す る と 、 ツールに よ り 自動的にデ ィ ス エーブルに さ れてい る タ イ ミ ン グ アー ク と ユーザーが手動でデ ィ ス エーブルに し た タ イ ミ ン グ アー ク が レ ポー ト さ れます。こ の リ ス ト が長い場合があ る ので注意 し て く だ さ い。 -file オプシ ョ ン を使用す る と 、 結果を指定 し た フ ァ イ ルに書 き 込む こ と がで き ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 106 第 6章 XDC の優先順位 XDC の優先順位について ザ イ リ ン ク ス デザ イ ン制約 (XDC) の優先順位は、 SDC (Synopsys Design Constraints) と 同 じ です。 こ の章では、 制約 の競合お よ び重複が ど の よ う に解決 さ れ る か を説明 し ます。 XDC 制約の順序 XDC 制約は順次解釈 さ れ る コ マ ン ド で、 優先順位が同 じ 場合は、 後の も のが優先 さ れます。 制約順序の例 > create_clock -name clk1 -period 10 [get_ports clk_in1] > create_clock -name clk2 -period 11 [get_ports clk_in1] こ の例では、 次の理由で最初の ク ロ ッ ク 定義が 2 つ目の ク ロ ッ ク 定義で置 き 換え ら れます。 • ど ち ら も 同 じ 入力に設定 さ れてい ます。 • create_clock -add オプシ ョ ンは使用 さ れてい ません。 例外の優先順位 複数の タ イ ミ ン グ例外が同 じ パ ス に適用 さ れてい る な ど、 制約が重複す る 場合は、 優先順位は次の よ う にな り ます。 1. ク ロ ッ ク グループ (set_clock_groups) 2. フ ォ ルス パ ス (set_false_path) 3. 最大遅延パ ス (set_max_delay) お よ び最小遅延パ ス (set_min_delay) 4. マルチサ イ ク ル パ ス (set_multicycle_path) 同 じ タ イ プの例外の場合は、 制約が詳細に指定 さ れてい る も のほ ど優先 さ れます。 制約で使用 さ れてい る フ ィ ル タ ー オプシ ョ ンお よ びオブジ ェ ク ト の タ イ プに よ っ て、 制約の特性を変更で き ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 107 第 6 章 : XDC の優先順位 オブジ ェ ク ト の優先順位は、 次の と お り です。 1. ポー ト 、 ピ ン、 お よ びセル 注記 : セル自体ではな く セルの ピ ンが使用 さ れます。 2. クロック フ ィ ル タ ーの優先順位を高い方か ら 示す と 、 次の よ う にな り ます。 1. -from -through -to 2. -from -to 3. -from -through 4. -from 5. -through -to 6. -to 7. -through 例外の優先順位の例 > set_max_delay 12 -from [get_clocks clk1] -to [get_clocks clk2] > set_max_delay 15 -from [get_clocks clk1] こ の例では、 clk1 か ら clk2 へのパ ス に対 し ては、 2 つ目の制約ではな く 1 つ目の制約が適用 さ れます。 例外で使用 さ れ る -through オプシ ョ ン の数は、 優先順位には影響 し ません。 タ イ ミ ン グ エン ジ ン では、 最 も 厳 し い制約が使用 さ れます。 複数の -through オ プ シ ョ ン を含む冷害制約の優先順位の例 > set_max_delay 4 -through [get_pins inst0/I0] > set_max_delay 5 -through [get_pins inst0/I0] -through [get_pins inst1/I3] 両方の例外が タ イ ミ ン グ エン ジ ンで保持 さ れます。 タ イ ミ ン グ解析には、 よ り 厳 し い制約が使用 さ れます。 こ の例で は、 ピ ン inst1/I3 を通過す る パス で も 4ns 最大遅延制約が使用 さ れます。 推奨 : タ イ ミ ン グ解析の結果が優先順位に よ っ て決定 さ れ る の を回避 し 、 制約の効果を検証 し やす く す る ため、 同 じ パ ス に複数の タ イ ミ ン グ例外を使用す る こ と は避けて く だ さ い。 制約にオブジ ェ ク ト ではな く 文字列が渡 さ れ る 場合は、 Tcl イ ン タ ープ リ タ ーは次の順序でオブジ ェ ク ト で文字列を 検索 し ます。 1. ポー ト 2. ピン 3. セル 4. ネッ ト 検索はすべてのオブジ ェ ク ト に対 し て実行 さ れ る わけではな く 、 あ る タ イ プで文字列パ タ ーンに一致す る オブジ ェ ク ト が見つか る と 、 リ ス ト の後の方にあ る 別の タ イ プのオブジ ェ ク ト に同 じ 文字列パ タ ーンに一致す る オブジ ェ ク ト が あ っ て も 、 最初に見つか っ た タ イ プのオブジ ェ ク ト が返 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 108 第 7章 物理制約 物理制約について Vivado® 統合設計環境 (IDE) では、デザ イ ン オブジ ェ ク ト の物理制約はオブジ ェ ク ト プ ロ パテ ィ を設定す る こ と に よ り 指定 し ます。 次に例を示 し ます。 • ロ ケーシ ョ ンお よ び I/O 規格な ど の I/O 制約 • セル ロ ケーシ ョ ン な ど の配置制約 • 固定配置な ど の配線制約 • コ ン フ ィ ギ ュ レーシ ョ ン モー ド な ど の コ ン フ ィ ギ ュ レーシ ョ ン制約 タ イ ミ ン グ制約 と 同様、 物理制約 も 、 デザ イ ン を開いた と き に読み込む こ と がで き る よ う にす る ため、 ザ イ リ ン ク ス デザ イ ン制約 (XDC) フ ァ イ ルま たは Tcl ス ク リ プ ト に保存す る 必要があ り ます。 デザ イ ン を メ モ リ に読み込んだ ら 、 Tcl コ ン ソ ールま たは Vivado Design Suite IDE を使用 し て、 新 し い制約を入力で き ます。 ほ と ん ど の物理制約は、 オブジ ェ ク ト のプ ロ パテ ィ と し て定義 し ます。 set_property <property> <value> <object list> ただ し 、 エ リ ア制約には Pblock コ マ ン ド を使用 し ます。 ク リ テ ィ カル警告 デザ イ ン に存在 し ないオブジ ェ ク ト に適用 さ れてい る 制約な ど、 XDC フ ァ イ ルの無効な制約に対 し ては、 ク リ テ ィ カル警告が表示 さ れます。 プ ロ パテ ィ の定義お よ び使用方法は、『Vivado Design Suite プ ロ パテ ィ リ フ ァ レ ン ス ガ イ ド 』 (UG912) [参照 10] を参照 し て く だ さ い。 推奨 : デザ イ ン を適切に制約す る ため、 ク リ テ ィ カル警告をすべて確認す る こ と をお勧め し ます。 無効な制約を イ ン タ ラ ク テ ィ ブに適用す る と 、 エ ラ ーが発生 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 109 第 7 章 : 物理制約 ネ ッ ト リ ス ト 制約 ネ ッ ト リ ス ト 制約は、 ポー ト 、 ピ ン、 ネ ッ ト 、 セルな ど のネ ッ ト リ ス ト オブジ ェ ク ト に設定 さ れ、 コ ンパ イ ル ツー ルで特別な方法で処理 さ れ る 必要があ り ます。 重要 : こ れ ら の制約を使用 し た場合の影響を、 十分に理解 し てお く 必要があ り ます。 デザ イ ン エ リ アが増加 し た り 、 デザ イ ン パフ ォーマ ン ス が低下 し た り する 可能性があ り ます。 ネ ッ ト リ ス ト 制約には、 次の も のがあ り ます。 • 「CLOCK_DEDICATED_ROUTE」 • 「MARK_DEBUG」 • 「DONT_TOUCH」 • 「LOCK_PINS」 CLOCK_DEDICATED_ROUTE CLOCK_DEDICATED_ROUTE はネ ッ ト に設定 し 、 ク ロ ッ ク 信号を ど の よ う に配線する か を指定 し ます。 ク ロ ッ ク ネ ッ ト に設定 し 、デフ ォ ル ト 配線を変更す る ために使用 し ます。 こ の制約は タ イ ミ ン グの予測可能性お よ び 配線性に影響す る 可能性があ る ので、 使用す る 場合は十分な注意が必要です。 専用 ク ロ ッ ク 配線が使用で き ない場合に、CLOCK_DEDICATED_ROUTE を FALSE に設定で き ます。FALSE に設定す る と 、入力ポー ト か ら の ク ロ ッ ク を汎用配線 リ ソ ース を使用 し て BUFG や MMCM な ど のグ ロ ーバル ク ロ ッ ク リ ソ ー ス に配線す る こ と が可能にな り ます。 こ れは、 デバ イ ス パ ッ ケージ ピ ン割 り 当てが固定 さ れてお り 、 ク ロ ッ ク 入力 を 適切 な ク ロ ッ ク 兼用入力 ピ ン (CCIO) に 割 り 当 て る こ と が で き な い 場合 の、 最終的 な 手段 と し て く だ さ い。 FIXED_ROUTE と 共に使用 し ない と 、 配線が最適でない予測不可能な も のにな り ます。 MARK_DEBUG RTL のネ ッ ト に設定 し 、 保持 し てネ ッ ト リ ス ト に含ま れ る よ う に し ます。 こ れに よ り 、 コ ンパ イ ル フ ロ ーの任意の 時点で、 ネ ッ ト を ロ ジ ッ ク デバ ッ グ ツールに接続で き ます。 詳細は、 『Vivado Design Suite ユーザー ガ イ ド : プ ロ グ ラ ムお よ びデバ ッ グ』 (UG908) [参照 11] の 「デバ ッ グする HDL 信号のマー ク 」 を参照 し て く だ さ い。 DONT_TOUCH DONT_TOUCH は最下位セル、 階層セル、 ま たはネ ッ ト オブジ ェ ク ト に設定 し 、 ネ ッ ト リ ス ト 最適化の実行時に保持 さ れ る よ う に し ます。 DONT_TOUCH は、 一般的に次の目的で使用 さ れます。 • ネ ッ ト が最適化で削除 さ れない よ う にす る 。 DONT_TOUCH が設定 さ れたネ ッ ト は、 合成ま たは イ ンプ リ メ ン テーシ ョ ンで吸収 さ れません。 こ れは、 ロ ジ ッ ク のプ ロ ーブ ま たはデザ イ ンでの予期 さ れない最適化のデバ ッ グに有益な場合があ り ます。 複数の階層セグ メ ン ト のあ る ネ ッ ト を保持す る には、 DONT_TOUCH を ネ ッ ト の親 ( ド ラ イ バーに最 も 近いネ ッ ト セ グ メ ン ト ) に設 定 し ます (get_property PARENT $net)。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 110 第 7 章 : 物理制約 • 手動で複製 し た ロ ジ ッ ク が統合 さ れない よ う にす る 。 広範囲に伝搬 さ れ る フ ァ ン ア ウ ト の大 き い ド ラ イ バーな ど、 ロ ジ ッ ク を手動で複製す る のが最適な場合があ り ま す。 元の ド ラ イ バー と 手動で複製 し た ド ラ イ バーに DONT_TOUCH を追加す る と 、 合成お よ び イ ンプ リ メ ン テー シ ョ ンの最適化で こ れ ら のセルが削除 さ れ る こ と はあ り ません。 ヒ ン ト : Vivado イ ンプ リ メ ン テーシ ョ ンでは論理階層はフ ラ ッ ト 化 さ れないので、 イ ンプ リ メ ン テーシ ョ ン で階層 セルに DONT_TOUCH に使用 し ないで く だ さ い。 XDC 制約を適用す る 論理階層を保持す る には、 合成で KEEP_HIERARCHY を使用 し て く だ さ い。 LOCK_PINS LOCK_PINS はセル プ ロ パテ ィ で、 論理 LUT 入力 (I0、 I1、 I2、 …) と LUT 物理入力ピ ン (A6、 A5、 A4、 …) の間の マ ッ プ を指定 し ます。 通常、 タ イ ミ ン グ ク リ テ ィ カル LUT 入力を高速の A6 お よ び A5 物理 LUT 入力にマ ッ プす る ために使用 さ れます。 LOCK_PINS 制約の例 1 次の例では、 I1 を A6 に、 I0 を A5 にマ ッ プ し てい ます (デフ ォ ル ト のマ ッ プ を ス ワ ッ プ)。 % % # % set myLUT2 [get_cells u0/u1/i_365] set_property LOCK_PINS {I0:A5 I1:A6} $myLUT2 Which you can verify by typing the following line in the Tcl Console: get_property LOCK_PINS $myLUT2 LOCK_PINS 制約の例 2 次の例では、 LUT6 の I0 を A6 にマ ッ プ し てい ます。 I1 ~ I5 のマ ッ プは固定 さ れません。 % set_property LOCK_PINS I0:A6 [get_cell u0/u1/i_768] I/O 制約 I/O 制約は、 次の も のを設定 し ます。 • ポー ト • ポー ト に接続 さ れてい る セル 一般的な制約は、 次の と お り です。 • I/O 規格 • I/O ロ ケーシ ョ ン Vivado 統合設計環境 (IDE) では、 ISE® Design Suite の I/O 制約の多 く がサポー ト さ れてい ます。 次に、 サポー ト さ れ てい る I/O プ ロ パテ ィ の一部を示 し ます。 ° すべての I/O プ ロ パテ ィ の リ ス ト 、 I/O ポー ト お よ び I/O セル プ ロ パテ ィ 、 正 し い構文を使用 し た コ ー ド 例 の詳細は、 『Vivado Design Suite プ ロ パテ ィ リ フ ァ レ ン ス ガ イ ド 』 (UG912) [参照 10] を参照 し て く だ さ い。 注記 : すべてのプ ロ パテ ィ は、 特に指定 し ない場合は、 ポー ト オブジ ェ ク ト に適用 さ れます。 ° こ れ ら のプ ロ パテ ィ の使用方法の詳細は、 『7 シ リ ーズ FPGA SelectIO リ ソ ース ユーザー ガ イ ド 』 (UG471) [参照 12] を参照 し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 111 第 7 章 : 物理制約 • DRIVE 出力バ ッ フ ァ ーの駆動電流を mA で指定 し ます。 一部の I/O 規格でのみ使用可能です。 • IOSTANDARD I/O 規格を設定 し ます。 • SLEW デバ イ ス出力の スルー レー ト (遷移レー ト ) を設定 し ます。 • IN_TERM 入力ポー ト の入力終端抵抗の コ ン フ ィ ギ ュ レーシ ョ ン を設定 し ます。 • DIFF_TERM IBUFDS_DIFF_OUT な ど のプ リ ミ テ ィ ブに対 し て 100 オームの差動終端のオン/オ フ を指定 し ます。 • KEEPER ト ラ イ ス テー ト 出力 ま たは双方向ポー ト に ウ ィ ー ク ド ラ イ バーを適用 し 、 駆動 さ れていない場合に値を保持 し ま す。 • PULLDOWN ト ラ イ ス テー ト 出力ま たは双方向ポー ト に ウ ィ ー ク Low を適用 し 、 フ ロ ーテ ィ ン グ し ない よ う に し ます。 • PULLUP ト ラ イ ス テー ト 出力ま たは双方向ポー ト に ウ ィ ー ク High を適用 し 、 フ ロ ーテ ィ ン グ し ない よ う に し ます。 • DCI_CASCADE マ ス タ ーお よ びス レーブ バン ク のセ ッ ト を定義 し ます。DCI 基準電圧は、マ ス タ ー バン ク か ら ス レーブにチ ェー ン接続 さ れます。 IOBANK オブジ ェ ク ト に設定 し ます。 • INTERNAL_VREF I/O バン ク の Vref ピ ン を解放 し 、代わ り に内部で生成 さ れた Vref を使用 し ます。IOBANK オブジ ェ ク ト に設定 し ます。 • IODELAY_GROUP IDELAY お よ び IODELAY セルのセ ッ ト を IDELAYCTRL と グループに し 、デザ イ ンの IDELAYCTRL が自動的に 複製お よ び配置 さ れ る よ う に し ます。 • IOB フ リ ッ プ フ ロ ッ プ を フ ァ ブ リ ッ ク ス ラ イ ス ではな く I/O ロ ジ ッ ク に配置す る よ う 試みます。 重要 : IOB の処理方法は、 ISE Design Suite と Vivado Design Suite で異な り ます。 Vivado ツールでは、 IOB を ポー ト お よ びポー ト に接続 さ れてい る レ ジ ス タ セルの両方に設定で き ます。ポー ト と その レ ジ ス タ に競合す る 値が設定 さ れて い る 場合、 レ ジ ス タ に設定 さ れてい る 値が使用 さ れ ます。 Vivado ツールでは、 TRUE お よ び FALSE のみが使用 さ れ ます。 FORCE は TRUE と し て処理 さ れ、 AUTO は無視 さ れ ます。 IOB の TRUE 設定を適用で き ない場合、 ISE と は 異な り 、 Vivado ツールではエ ラ ーではな く ク リ テ ィ カル警告が生成 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 112 第 7 章 : 物理制約 配置制約 配置制約はセルに適用 し 、 デバ イ ス 内での ロ ケ ーシ ョ ン を 制御 し ま す。 Vivado IDE では、 ISE Design Suite お よ び PlanAhead™ ツールの配置制約の多 く がサポー ト さ れてい ます。 • LUTNM 2 つの LUT に固有の名前を指定 し 、 1 つの LUT サ イ ト に配置 し ます。 HLUTNM と は異な り 、 LUTNM は異な る 階層セルに属す る LUT を結合で き ます。 • HLUTNM 同 じ 階層にあ る 2 つの LUT に固有の名前を指定 し 、 1 つの LUT サ イ ト に配置 し ます。 複数回 イ ン ス タ ン シエー ト さ れてい る セルでは、 HLUTNM を使用 し て く だ さ い。 • PROHIBIT サ イ ト への配置を禁止 し ます。 • PBLOCK 論理ブ ロ ッ ク に設定 し 、 デバ イ ス の物理領域に制約 し ます。 PBLOCK は読み取 り 専用プ ロ パテ ィ で、 セルが割 り 当て ら れた Pblock の名前です。 セル Pblock の メ ンバーを変 更す る には、XDC Tcl コ マ ン ド add_cells_to_pblock お よ び remove_cells_from_pblock を使用 し ます。 • PACKAGE_PIN タ ーゲ ッ ト デバ イ ス パ ッ ケージの ピ ンのデザ イ ン ポー ト の ロ ケーシ ョ ン を指定 し ます。 • LOC ネ ッ ト リ ス ト の論理エ レ メ ン ト をデバ イ ス上のサ イ ト に配置 し ます。 • BEL ネ ッ ト リ ス ト の論理エ レ メ ン ト をデバ イ ス上の ス ラ イ ス内の特定の BEL に配置 し ます。 詳細は、 次を参照 し て く だ さ い。 • 第 6 章 「XDC の優先順位」 • 第 8 章 「相対配置マ ク ロ の定義」 配置 タ イ プ 次の 2 種類の配置があ り ます。 • 「固定配置」 • 「固定 さ れていない配置」 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 113 第 7 章 : 物理制約 固定配置 固定配置は、 次の方法でユーザーが指定す る 配置です。 • 手動で配置 • XDC 制約 • メ モ リ に読み込ま れてい る デザ イ ンのセル オブジ ェ ク ト に次を使用 し て指定 ° IS_LOC_FIXED ° IS_BEL_FIXED 固定 さ れていない配置 固定 さ れていない配置は、 イ ンプ リ メ ン テーシ ョ ン ツールで実行 さ れ る 配置です。 配置が固定 さ れてい る と 、 制約 さ れて る セルは イ ン プ リ メ ン テーシ ョ ン で移動で き ません。 固定配置は、 単純な LOC ま たは BEL と し て XDC フ ァ イ ルに保存 さ れます。 • IS_LOC_FIXED LOC 制約を固定 さ れていない も のか ら 固定 さ れた も のに変更 し ます。 • IS_BEL_FIXED BEL 制約を固定 さ れていない も のか ら 固定 さ れた も のに変更 し ます。 配置制約の例 1 次の例では、 ブ ロ ッ ク RAM を RAMB18_X0Y10 に配置 し 、 固定 し ます。 % set_property LOC RAMB18_X0Y10 [get_cells u_ctrl0/ram0] 配置制約の例 2 次の例では、 LUT を ス ラ イ ス の C5LUT BEL に配置 し 、 その BEL 割 り 当て を固定 し ます。 % set_property BEL C5LUT [get_cells u_ctrl0/lut0] 配置制約の例 3 次の例では、 入力遅延を短 く す る ため入力バ ス レ ジ ス タ を ILOGIC セルに配置 し ます。 % set_property IOB TRUE [get_cells mData_reg*] 配置制約の例 4 次の例では、 2 つの小型の LUT を、 O5 お よ び O6 出力の両方を使用す る 1 つの LUT6_2 に結合 し ます。 % set_property LUTNM L0 [get_cells {u_ctrl0/dmux0 u_ctrl0/dmux1}] 配置制約の例 5 次の例では、 ブ ロ ッ ク RAM の最初の列が使用 さ れない よ う に し ます。 % set_property PROHIBIT TRUE [get_sites {RAMB18_X0Y* RAMB36_X0Y*}] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 114 第 7 章 : 物理制約 配線制約 配線制約はネ ッ ト オブジ ェ ク ト に適用 し 、 配線 リ ソ ース を制御 し ます。 固定配線 固定配線は、 ISE の指定配線 と 同様に、 配線を固定 し ます。 ネ ッ ト の配線 リ ソ ース の固定には、 3 つのネ ッ ト プ ロ パ テ ィ が関係 し ます。 表 7-1 を参照 し て く だ さ い。 表 7‐1 : ネ ッ ト プ ロパテ ィ プ ロパテ ィ 機能 ROUTE 読み取 り 専用のネ ッ ト プ ロ パテ ィ IS_ROUTE_FIXED 配線全体を固定す る よ う マー ク FIXED_ROUTE ネ ッ ト の固定配線部分 ネ ッ ト の配線が確実に固定 さ れ る よ う にす る には、 その配線のすべてのセルを固定 し てお く 必要があ り ます。 次に、 配線を完全に固定す る 例を示 し ます。 こ の例では、 図 7-1 のデザ イ ンのネ ッ ト netA (青色でハ イ ラ イ ト ) の配線 を固定す る 制約を作成 し ます。 X-Ref Target - Figure 7-1 図 7‐1 : 配線制約の例を示すためのシ ン プルなデザイ ン イ ンプ リ メ ン ト 済みデザ イ ン を メ モ リ に読み込む と 、 ネ ッ ト の配線情報を ク エ リ で き る よ う にな り ます。 % set net [get_nets netA] % get_property ROUTE $net { CLBLL_LL_CQ CLBLL_LOGIC_OUTS6 FAN_ALT5 FAN_BOUNCE5 IMUX_L11 CLBLL_LL_A4 } 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com { IMUX_L17 CLBLL_LL_B3 } 115 第 7 章 : 物理制約 配線は、 配線 ノ ー ド 名の リ ス ト で示 さ れ、 フ ァ ン ア ウ ト は中か っ こ ({ }) で示 さ れ ます。 配線を固定す る には、 ネ ッ ト に次のプ ロ パテ ィ を設定 し ます。 % set_property IS_ROUTE_FIXED TRUE $net 制約を今後のために XDC フ ァ イ ルにバ ッ ク ア ノ テー ト す る には、 固定 さ れたネ ッ ト に接続 さ れてい る すべてのセル の配置 も 保持す る 必要があ り ます。 こ の情報は、 [Schematic] ま たは [Device] ウ ィ ン ド ウ でセルを選択 し 、 [Properties] ウ ィ ン ド ウ の LOC/BEL プ ロ パテ ィ 値で確認す る か、 Tcl コ ン ソ ールで こ れ ら の値を ク エ リ し ます。 % get_property LOC [get_cells {a0 L0 L1}] SLICE_X0Y47 SLICE_X0Y47 SLICE_X0Y47 % get_property BEL [get_cells {a0 L0 L1}] SLICEL.CFF SLICEL.A6LUT SLICEL.B6LUT 固定 さ れた配線は タ イ ミ ン グ ク リ テ ィ カルであ る こ と が多いので、 LUT ピ ンのマ ッ プ も LUT の LOCK_PINS プ ロ パ テ ィ で指定 し 、 配線時に ピ ンが ス ワ ッ プ さ れない よ う にす る 必要があ り ます。 各論理ピ ンのサ イ ト ピ ンは、 Tcl コ ン ソ ールで ク エ リ で き ます。 % get_site_pins -of [get_pins {L0/I1 L0/I0}] SLICE_X0Y47/A4 SLICE_X0Y47/A2 % get_site_pins -of [get_pins {L1/I1 L1/I0}] SLICE_X0Y47/B3 SLICE_X0Y47/B2 ネ ッ ト netA の配線を固定す る ために必要な XDC 制約は、 次の よ う にな り ます。 set_property LOC SLICE_X0Y47 [get_cells {a0 L0 L1}] set_property BEL CFF [get_cells a0] set_property BEL A6LUT [get_cells L0] set_property BEL B6LUT [get_cells L1] set_property LOCK_PINS {I1:A4 I0:A2} [get_cells L0] set_property LOCK_PINS {I1:A3 I0:A2} [get_cells L1] set_property FIXED_ROUTE { CLBLL_LL_CQ CLBLL_LOGIC_OUTS6 FAN_ALT5 FAN_BOUNCE5 IMUX_L17 CLBLL_LL_B3 } IMUX_L11 CLBLL_LL_A4 } [get_nets netA] { XDC ではな く Tcl コ マ ン ド を使用す る 場合は、 次に示す よ う に、 1 つの place_cell コ マ ン ド で複数の配置制約を設定 で き ます。 place_cell a0 SLICE_X0Y47/CFF L0 SLICE_X0Y47/A6LUT L1 SLICE_X0Y47/B6LUT place_cell の詳細は、『Vivado Design Suite Tcl コ マン ド リ フ ァ レ ン ス ガ イ ド 』 (UG835) [参照 9] を参照し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 116 第 7 章 : 物理制約 コ ン フ ィ ギ ュ レーシ ョ ン制約 コ ン フ ィ ギ ュ レーシ ョ ン制約は、 ビ ッ ト ス ト リ ーム生成用のグ ロ ーバル制約で、 現在のデザ イ ンに適用 し ます。 コ ン フ ィ ギ ュ レーシ ョ ン モー ド な ど制約が含まれます。 コ ン フ ィ ギ ュ レ ーシ ョ ン制約の例 1 次の例では、 CONFIG_MODE を M_SELECTMAP に設定 し てい ます。 % set_property CONFIG_MODE M_SELECTMAP [current_design] コ ン フ ィ ギ ュ レ ーシ ョ ン制約の例 2 次の例では、 デバ イ ス ピ ン E11 お よ び F11 を電圧基準ピ ンに設定 し てい ます。 % set_property VREF {E11 F11} [current_design] コ ン フ ィ ギ ュ レ ーシ ョ ン制約の例 3 次の例では、 CRC チ ェ ッ ク をデ ィ ス エーブルに し てい ます。 % set_property BITSTREAM.GENERAL.CRC Disable [current_design] ビ ッ ト ス ト リ ーム生成プ ロ パテ ィ お よ び定義の リ ス ト は、『Vivado Design Suite ユーザー ガ イ ド : プ ロ グ ラ ムお よ びデ バ ッ グ』 (UG908) [参照 11] の 「デバ イ ス コ ン フ ィ ギ ュ レーシ ョ ン ビ ッ ト ス ト リ ーム設定」 を参照 し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 117 第 8章 相対配置マ ク ロの定義 相対配置マ ク ロの定義について 相対配置マ ク ロ (RPM) は、 複数の基本 ロ ジ ッ ク エ レ メ ン ト (BEL) を グループ化 し た も のです。 次に、 ロ ジ ッ ク エ レ メ ン ト の例を示 し ます。 • FF • LUT • DSP • RAM RPM は主に、 次を達成す る ため、 小 さ い ロ ジ ッ ク グループ同士を近 く に配置する ために使用 さ れます。 • リ ソ ース効率を向上 • 内部接続を高速化 デザイ ン エ レ メ ン ト のセ ッ ト の定義 デザ イ ン エ レ メ ン ト の設置は、 U_SET ま たは HU_SET 制約を使用 し て定義 し ます。 • セ ッ ト 内での各エ レ メ ン ト の配置は、 相対 ロ ケーシ ョ ン制約 (RLOC) に よ り 同 じ セ ッ ト 内のほかのエ レ メ ン ト に 相対 し て設定 さ れます。 • RLOC 制約の設定 さ れた ロ ジ ッ ク エ レ メ ン ト と 共通セ ッ ト 名は、 RPM 内で関連付け ら れます。 U_SET、 HU_SET、 お よ び RLOC 制約には、 次の よ う な特徴があ り ます。 • HDL デザ イ ン フ ァ イ ルでプ ロ パテ ィ と し て定義す る 必要があ り ます。 • ザ イ リ ン ク ス デザ イ ン制約 (XDC) ではサポー ト さ れてい ません。 U_SET、 HU_SET、 お よ び RLOC 制約の詳細は、 『制約ガ イ ド 』 (UG625) [参照 12] を参照 し て く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 118 第 8 章 : 相対配置マ ク ロの定義 ヒ ン ト : デ ザ イ ン 内 で RPM の よ う に 機能す る マ ク ロ オ ブ ジ ェ ク ト を Vivado Design Suite で 定義す る に は、 create_macro ま たは update_macro を使用 し ます。 こ れ ら の コ マ ン ド の詳細は、 『Vivado Design Suite Tcl コ マ ン ド リ フ ァ レ ン ス ガ イ ド 』 (UG835) [参照 9] を参照 し て く だ さ い。 U_SET、 HU_SET、 お よ び RLOC制約の詳細は、 『Vivado Design Suite 制約 リ フ ァ レ ン ス ガ イ ド 』 (UG912) [参照 10] を 参照 し て く だ さ い。 RPM の作成 RPM を作成す る には、 次の手順に従い ます。 1. セルを セ ッ ト にグループ化 し ます。 2. RPM セ ッ ト のセルに相対 ロ ケーシ ョ ン を定義 し ます。 3. RPM セルに RLOC_ORIGIN 制約 ま たは LOC 制約を指定 し て、 タ ーゲ ッ ト デバ イ ス上の RPM の配置を固定 し ま す。 注記 : こ の手順はオプシ ョ ンです。 セルの RPM セ ッ ト への割 り 当て RLOC 制約が割 り 当て ら れた階層モジ ュ ールのデザ イ ン エ レ メ ン ト は、自動的に RPM セ ッ ト にグループ化 さ れます。 こ のグループ化には、 デザ イ ン階層 と RLOC 制約の組み合わせで暗示的に定義 さ れ る H_SET 制約が使用 さ れます。 デザ イ ン階層の 1 つのブ ロ ッ ク に含まれ る RLOC 制約が設定 さ れたデザ イ ン エ レ メ ン ト は、 U_SET ま たは HU_SET な ど のセ ッ ト 制約が設定 さ れていなければ、 同 じ H_SET に含まれ る と 考え ら れます。 デザイ ン エ レ メ ン ト を明示的にグループ化 H_SET はデザ イ ン階層 と RLOC 制約か ら 推論 さ れますが、 U_SET お よ び HU_SET 制約を使用す る と 、 デザ イ ン エ レ メ ン ト を明示的に RPM セ ッ ト にグループ化で き ます。 デザイ ン エ レ メ ン ト を U_SET を使用 し て明示的にグループ化 U_SET を使用す る と 、 階層ま たはデザ イ ン での位置にかかわ ら ず、 セルを グループ化で き ます。 同 じ set_name を持 つすべてのセルは、 同 じ RPM セ ッ ト の メ ンバー と な り ます。 U_SET 制約は、 プ リ ミ テ ィ ブ ま たはプ リ ミ テ ィ ブでないシ ン ボルのデザ イ ン エ レ メ ン ト に設定で き ます。 プ リ ミ テ ィ ブでないシ ン ボルに U_SET 制約を設定する と 、 デザ イ ン階層を介 し て、 その下にあ る RLOC 制約が設定 さ れたすべてのプ リ ミ テ ィ ブ シ ン ボルに伝搬 さ れます。 デザイ ン エ レ メ ン ト を HU_SET を使用 し て明示的にグループ化 HU_SET は、 ユーザー定義の階層で指定 さ れたセ ッ ト 名を持ち ます。 こ れに よ り 、 RLOC 制約を異な る 階層レベルの セルに配置可能な階層型 RPM を作成で き ます。 同 じ 階層で指定 さ れたセ ッ ト 名を持つすべてのセルは、 同 じ セ ッ ト の メ ンバー と な り ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 119 第 8 章 : 相対配置マ ク ロの定義 VHDL で RPM セ ッ ト を定義する構文 RPM セ ッ ト を VHDL の属性 と し て定義す る には、 次の構文を使用 し ます。 attribute attribute ... attribute attribute U_SET : string; HU_SET : string; U_SET of my_reg : label is "uset0"; HU_SET of other_reg : label is "huset0"; Verilog で RPM セ ッ ト を定義する構文 RPM セ ッ ト を Verilog の属性 と し て定義す る 構文は、 次の と お り です。 U_SET の例 (* U_SET = "uset0", RLOC = "X0Y0" *) FD my_reg (.C(clk), .D(d0), .Q(q0)); HU_SET の例 (* HU_SET = "huset0", RLOC = "X0Y0" *) FD other_reg (.C(clk), .D(d1), .Q(q1)); [Physical Constraints] ウ ィ ン ド ウでの RPM 定義 X-Ref Target - Figure 8-1 図 8‐1 : [Physical Constraints] ウ ィ ン ド ウでの RPM 定義 RPM セ ッ ト は、 プ ロ パテ ィ と し て HDL ソ ース フ ァ イ ルに含め る 必要があ り ます。 合成後、 RPM に関連す る プ ロ パ テ ィ は、 Vivado® 配置で使用す る ため、 読み出 し 専用のプ ロ パテ ィ と し てネ ッ ト リ ス ト オブジ ェ ク ト 上に表示 さ れ ま す。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 120 第 8 章 : 相対配置マ ク ロの定義 RPM 定義の表示 RPM 定義を表示す る には、 [Physical Constraints] ウ ィ ン ド ウ を使用 し ます。 図 8-1 を参照 し て く だ さ い。 RPM 定義を表示す る には、 次の手順に従い ます。 1. RPMs フ ォ ルダーを展開 し て RPM の リ ス ト を表示 し ます。 2. RPM を選択 し てプ ロ パテ ィ を確認す る か、 関連セルを選択 し ます。 ヒ ン ト : RPM は、 [Physical Constraints] ウ ィ ン ド ウ か ら [Device] ウ ィ ン ド ウ に ド ラ ッ グ し て、 配置お よ び固定で き ま す。 RPM は、 セルご と ではな く 、 1 つの形 と し て移動 し ます。 相対ロ ケーシ ョ ンの割 り 当て デザ イ ン オブジ ェ ク ト に相対 ロ ケーシ ョ ン を割 り 当て る には、 RLOC プ ロ パテ ィ を使用 し ま す。 RLOC プ ロ パテ ィ は、 RPM セ ッ ト の各セルの相対 XY 座標を指定 し ます。 RLOC プ ロ パテ ィ を指定す る には、 次のいずれかの座標シ ス テ ム を使用で き ます。 • 「ス ラ イ ス ベース の相対座標」 • 「絶対 RPM グ リ ッ ド ベース座標」 次の構文を使用 し ます。 RLOC=XmYn 説明 : • m : オブジ ェ ク ト の相対ま たは絶対 X 座標を示す整数 • n : オブジ ェ ク ト の相対ま たは絶対 Y 座標を示す整数 ス ラ イ ス ベースの相対座標 相対グ リ ッ ド シ ス テ ムは、 次の よ う なシ ス テ ムです。 • 標準グ リ ッ ド と も 呼ばれます。 • ほ と ん ど の RPM に適 し てい ます。 • 1 つの RPM のすべてのセルが同 じ サ イ ト タ イ プ (ス ラ イ ス、 ブ ロ ッ ク RAM、 DSP な ど) に属す る 同種 RPM に使 用 さ れます。 注記 : オブジ ェ ク ト は、 同 じ RPM セ ッ ト 内のほかのオブジ ェ ク ト に相対的に配置 さ れます。 相対グ リ ッ ド は標準的な長方形の グ リ ッ ド で、 各グ リ ッ ド のエ レ メ ン ト は同 じ サ イ ズにな り ま す。 た と えば、 次の Verilog コ ー ド 例では、 8 ス ラ イ ス の高 さ の列にな り 、 各ス ラ イ ス に FD セルが含まれます。 (* (* (* (* (* (* (* (* RLOC RLOC RLOC RLOC RLOC RLOC RLOC RLOC = = = = = = = = "X0Y0" "X0Y1" "X0Y2" "X0Y3" "X0Y4" "X0Y5" "X0Y6" "X0Y7" 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 *) *) *) *) *) *) *) *) FD FD FD FD FD FD FD FD sr0 sr1 sr2 sr3 sr4 sr5 sr6 sr7 (.C(clk), (.C(clk), (.C(clk), (.C(clk), (.C(clk), (.C(clk), (.C(clk), (.C(clk), .D(d[0]), .D(d[1]), .D(d[2]), .D(d[3]), .D(d[4]), .D(d[5]), .D(d[6]), .D(d[7]), japan.xilinx.com .Q(y[0])); .Q(y[1])); .Q(y[2])); .Q(y[3])); .Q(y[4])); .Q(y[5])); .Q(y[6])); .Q(y[7])); 121 第 8 章 : 相対配置マ ク ロの定義 絶対 RPM グ リ ッ ド ベース座標 RPM_GRID シ ス テ ムは、 セルが異な る サ イ ト タ イ プ ( ス ラ イ ス、 ブ ロ ッ ク RAM、 DSP な ど の組み合わせ) に属す る 異種 RPM に使用 さ れます。 特定のザ イ リ ン ク ス デバ イ ス にマ ッ プす る 絶対座標シ ス テ ム です。 セルは異な る サ イ ズのサ イ ト に配置 さ れ る 可能性があ る ので、 RPM_GRID シ ス テ ムでは絶対 RPM_GRID 座標を使用 し ます。 RPM_GRID 値は、 Vivado IDE でサ イ ト を選択する と 、 [Site Properties] ウ ィ ン ド ウ に表示 さ れ ます。 座標は、 RPM_X お よ び RPM_Y サ イ ト プ ロ パテ ィ を使用 し て Tcl コ マ ン ド で ク エ リ す る こ と も で き ます。 RAM_GRID 座標の VHDL 例 次の VHDL 例では、 RPM_GRID 座標を使用 し て RLOC 制約を定義 し てい ます。 • 2 つのシ フ ト レ ジ ス タ をブ ロ ッ ク RAM に相対的に配置 し ます。 • 4 段を入力に接続 し ます。 • 4 段を出力に接続 し ます。 attribute attribute attribute attribute attribute attribute attribute attribute attribute attribute attribute RLOC : string; RPM_GRID : string; RLOC of di_reg3 : label is "X25Y0"; RLOC of di_reg2 : label is "X27Y0"; RLOC of di_reg1: label is "X29Y0"; RLOC of di_reg0 : label is "X31Y0"; RLOC of ram0 : label is "X34Y0"; RLOC of out_reg3 : label is "X37Y0"; RLOC of out_reg2 : label is "X39Y0"; RLOC of out_reg1 : label is "X41Y0"; RLOC of out_reg0 : label is "X43Y0"; RPM_GRID シ ス テムを使用する ためのプ ロパテ ィ 設定 RPM_GRID シ ス テ ム を使用す る には、 RPM セ ッ ト のセルに次の よ う にプ ロ パテ ィ を設定 し ます。 attribute RPM_GRID of ram0 : label is "GRID"; 少な く と も 1 つのセルの RPM_GRID が GRID に設定 さ れていれば、 RPM_GRID 座標シ ス テ ムが使用 さ れます。 RPM_GRID 座標は タ ーゲ ッ ト デバ イ ス に基づ く 絶対的な も のですが、 RPM セ ッ ト のエ レ メ ン ト の相対的な配置を定 義 し ます。 イ ンプ リ メ ン テーシ ョ ン中、 RPM セ ッ ト はデバ イ ス上の任意の適切な位置に配置で き ます。 RAM_GRID 座標の値 RPM_GRID 座標値は、 FPGA デバ イ ス上の ス ラ イ ス の座標値 と は大 き く 異な り ま す。 RPM_GRID 座標値には、 次の よ う な特徴があ り ます。 • Vivado ツールでデバ イ ス サ イ ト の RPM_X お よ び RPM_Y プ ロ パテ ィ と し て保存 さ れます。 • get_property コ マ ン ド で ク エ リ で き ます。 次の よ う な例を示 し ます。 • 選択 し た ス ラ イ ス か ら RPM 座標を取得 し ます。 • join コ マ ン ド を使用 し て X 座標 と Y 座標を必要な形式で出力 し ます。 join "X[get_property RPM_X [get_selected_objects]]Y[get_property RPM_Y [get_selected_objects]]" X25Y394 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 122 第 8 章 : 相対配置マ ク ロの定義 RTL ソ ース フ ァ イルでの RLOC プ ロパテ ィ の定義 標準グ リ ッ ド は単純で、 相対的であ る ため、 RPM の RLOC プ ロ パテ ィ は RTL ソ ース フ ァ イ ルで直接定義で き ます。 RPM_GRID 座標は タ ーゲ ッ ト デバ イ ス か ら 抽出する 必要があ る ので、 次を実行する 必要があ り ます。 • 合成後に正 し い RPM_GRID 値を見つけ る ためプ ロ セ ス を繰 り 返 し ます。 • RTL ソ ース フ ァ イ ルに座標をプ ロ パテ ィ と し て追加 し ます。 • 配置の前にネ ッ ト リ ス ト を再合成 し ます。 RPM への固定ロ ケーシ ョ ンの割 り 当て オプシ ョ ンで、 RLOC_ORIGIN ま たは LOC 制約を使用 し て、 デバ イ ス上の RPM の位置を固定で き ます。 Vivado IDE では、 こ れ ら のプ ロ パテ ィ に よ り RPM の座標の原点 (RPM の左下角) の位置が固定 さ れます。 RPM の残 り のセルは、 原点を基準 と し た相対 ロ ケーシ ョ ン (RLOC) を使用 し て配置 さ れます。 X-Ref Target - Figure 8-2 図 8‐2 : RLOC_ORIGIN によ る RPM の配置 次に、 RLOC_ORIGIN を使用 し て、 階層型 RPM を固定す る 例を示 し ます。 RLOC 制約を RPM の レ ジ ス タ セルに割 り 当て、 高 さ 2 X 幅 3 の配置パ タ ーン を作成 し てい ます。 Verilog : (* (* (* (* (* (* RLOC RLOC RLOC RLOC RLOC RLOC = = = = = = "X0Y0" "X1Y0" "X2Y0" "X0Y1" "X1Y1" "X2Y1" 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 *) *) *) *) *) *) FDC FDC FDC FDC FDC FDC sr0... sr1... sr2... sr3... sr4... sr5... japan.xilinx.com 123 第 8 章 : 相対配置マ ク ロの定義 こ の RPM を 3 回 イ ン ス タ ン シエー ト し 、 各セルに RLOC を設定 し ます。 (* RLOC = "X0Y0" *) ffs u0... (* RLOC = "X3Y2" *) ffs u1... (* RLOC = "X6Y4" *) ffs u2... 最後に、RLOC_ORIGIN を X74Y15 に設定 し て u0 セルに割 り 当て ます。配置は、図 8-2 に示す よ う にな り ます。表 8-1 に、 図でのセルのハ イ ラ イ ト 色を示 し ます。 表 8‐1 : セルのハイ ラ イ ト 色 セル ハイ ラ イ ト 色 u0 黄色 u1 緑色 u2 赤 ヒ ン ト : RPM では ロ ジ ッ ク エ レ メ ン ト の相対配置が指定 さ れ ますが、 イ ン プ リ メ ン テーシ ョ ン を反復実行 し た場合 に ロ ジ ッ ク を接続す る のに特定の配線 リ ソ ース が使用 さ れ る と は限 り ません。 使用 さ れ る 配線の制御については、 115 ページの 「配線制約」 を参照 し て く だ さ い。 XDC マ ク ロ XDC マ ク ロ を使用す る と 、 合成後にセルを相対配置で き ます。 マ ク ロ は RPM と 同様の特徴を持ち ますが、 XDC お よ び Tcl を使用 し て イ ン タ ラ ク テ ィ ブに変更で き ます。 マ ク ロ は、 相対配置制約に よ り グループ化 さ れた最下位セル か ら 作成 さ れます。 RPM は HDL コ ー ド で管理 し ますが、 マ ク ロ は XDC 制約を使用 し て管理 し ます。 RPM を自動的にマ ク ロ に変換す る こ と はで き ません。 同様に、 マ ク ロ を自動的に HDL コ ー ド に追加す る こ と はで き ません。 RPM は、 マ ク ロ と は異な り オブジ ェ ク ト ではないので、 XDC マ ク ロ コ マ ン ド を RPM に使用する こ と はで き ません。 表 8‐2 : RPM と マ ク ロの比較 RPM マクロ 定義 HDL 属性 XDC 制約 合成後のア ク セ ス 読み出 し のみ 読み出 し /書き 込み 階層 あ り (H_SET/HU_SET) なし RLOC タ ーゲ ッ ト 最下位セルお よ び最下位以外のセル 最下位セルのみ サ イ ト タ イ プの混合 許容 (RPM_GRID 属性を使用) 許容 (update_macro -absolute_grid を 使用) オブジ ェ ク ト と と し ての ア ク セス 不可能 可能 保存先 ネッ ト リ ス ト XDC ま たは Tcl ス ク リ プ ト 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 124 第 8 章 : 相対配置マ ク ロの定義 マ ク ロの指定 マ ク ロ を指定す る には、 次の XDC Tcl コ マ ン ド を使用 し ます。 • 「create_macro」 • 「update_macro」 • 「delete_macros」 • 「get_macros」 すべての コ マ ン ド で、 undo お よ び redo がサポー ト さ れてい ます。 次に、 各 コ マ ン ド について説明 し ます。 create_macro 新 し いマ ク ロ オブジ ェ ク ト を作成 し ます。 固有のマ ク ロ 名を指定す る 必要があ り ます。 既存のマ ク ロ と 同 じ 名前のマ ク ロ を作成 し よ う と する と 、 エ ラ ーが生成 さ れます。 create_macro の構文 create_macro <name> create_macro の例 create_macro m0 こ の例では、 m0 と い う 名前のマ ク ロ オブジ ェ ク ト が作成 さ れます。 ヒ ン ト : LUT と FF が揃 う よ う にす る には、 マ ク ロ を作成する 再に BEL ロ ケーシ ョ ン を指定 し ます。 update_macro マ ク ロ に最下位セルお よ び相対配置 (RLOC) を追加 し ます。 RLOC の形式 と 機能は、 RPM の RLOC 属性 と 同 じ です。 すべてのセルを一度に指定す る 必要があ り ます。 部分的な 定義や少 し ずつ定義を追加 し てい く こ と はで き ません。 update_macro の構文 update_macro [-absolute_grid] <macro name> <cell-RLOC list> 説明 : • -absolute_grid : 混合ス ラ イ スお よ びス ラ イ ス以外のサ イ ト 用に絶対グ リ ッ ド を選択 し ます。 ° X お よ び Y の値は、 サ イ ト プ ロ パテ ィ RPM_X お よ び RPM_Y です。 ° 絶対グ リ ッ ド 値は、 RPM_GRID の値 と 同 じ です。 • <macro name> : ア ッ プデー ト す る マ ク ロ の名前を指定 し ます。 • <cell-RLOC list> : セル と RLOC ペアの Tcl リ ス ト を指定 し ます。 {cell0 RLOC(cell0) cell1 RLOC(cell1) - cellN RLOC(cellN)} ° すべてのマ ク ロ セルお よ び RLOC を一度に指定す る 必要があ り ます。 マ ク ロ を少 し ずつ構築す る こ と はで き ません。 ° 既存のマ ク ロ を ア ッ プデー ト す る には、 再作成す る 必要があ り ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 125 第 8 章 : 相対配置マ ク ロの定義 update_macro の例 1 update_macro m1 {u2/sr0 X0Y0 u2/sr1 X0Y1} ° u2/sr0 お よ び u2/sr1 を マ ク ロ m1 に追加 し ます。 ° u2/sr0 に RLOC X0Y0 を設定 し ます。 ° u2/sr1 に RLOC X0Y1 を設定 し ます。 例 2 では、 同 じ 設定を異な る 構文で実行 し ます。 update_macro の例 2 set rlocs [list u2/sr0 X0Y0 u2/sr1 X0Y1] update_macro m1 $rlocs update_macro の例 3 こ の例では、 絶対グ リ ッ ド を使用 し ます。 set rlocs {ireg X2Y38 q1reg X17Y40 q2reg X17Y40} update_macro -absolute_grid m2 $rlocs delete_macros 指定のマ ク ロ を削除 し ます。 delete_macro の構文 delete_macros <pattern> delete_macro の例 delete_macros m1 get_macros デザ イ ンに含まれ る マ ク ロ オブジ ェ ク ト を返 し ます。 get_macros の構文 get_macros [pattern] 引数を指定 し ない場合、 デザ イ ンに含まれ る すべてのマ ク ロ オブジ ェ ク ト が返 さ れます。 マ ク ロ 名を指定する と 、 対 応す る マ ク ロ オブジ ェ ク ト が返 さ れます。 get_macros の例 get_macros コ マ ン ド は、 ほかのオブジ ェ ク ト コ マ ン ド と 共に使用で き ます。 次に例を示 し ます。 % create_macro m1 % update_macro m1 {u2/sr0 X0Y0 u2/sr1 X0Y1} % get_cells -of [get_macros m1] u2/sr0 u2/sr1 % get_macros -of [get_cells u2] m1 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 126 第 8 章 : 相対配置マ ク ロの定義 次の コ マ ン ド では、 セルに完全に含まれ る マ ク ロ すべてが返 さ れます。 get_macros -of [get_cells $cells] get_cells を使用す る と 、 次の よ う な間接的な組み合わせ も 可能です。 get_macros -of [get_cells -of [get_pblocks pb0]] こ の コ マ ン ド では、 Pblock pb0 に含まれ る マ ク ロ が返 さ れます。 マ ク ロの管理 マ ク ロ は XDC 制約 と し て保存 さ れます。 定義上、 こ れ ら は Tcl コ マ ン ド です。 こ れに よ り 、 マ ク ロ を XDC 制約フ ァ イ ル と Tcl ス ク リ プ ト の両方で使用で き 、 イ ン タ ラ ク テ ィ ブに使用で き ます。 マ ク ロ を書 き 出すには write_xdc コ マ ン ド を 使用 し 、 マ ク ロ の読み出 し には read_xdc コ マ ン ド を 使用 し ま す。 -cell オプシ ョ ン を使用す る と 、 範囲を特定のセルに制限で き ます。 -cell オプシ ョ ンは、 1 つのマ ク ロ か ら の相対配置を異な る 階層にあ る 同様の イ ン ス タ ン ス に適用す る 場合に特に有 益です。 マ ク ロの管理の例 1 マ ク ロ を含む、 メ モ リ 内のすべての XDC 制約を書 き 出 し ます。 % write_xdc constrs.xdc マ ク ロの管理の例 2 デザ イ ンに、 セルの 3 つの イ ン ス タ ン ス inst_0、 inst_1、 お よ び inst_2 が含ま れます。 マ ク ロ は inst_0 内に作成 さ れます。 % create_macro m0 % update_macro m0 {reg0 X0Y0 reg1 X0Y1} % write_xdc -cell inst_0 inst_0.xdc マ ク ロの管理の例 3 セル inst_0 のマ ク ロ m0 を含むすべての XDC 制約を書き 込みます。 % write_xdc -cell inst_0 inst_0.xdc マ ク ロの管理の例 4 セル inst_0 のマ ク ロ m0 を含む XDC 制約を読み出 し 、 inst_1 お よ び inst_2 に適用 し ます。 % read_xdc inst_0 -cell {inst_1 inst_2} % get_macros m0 inst_1_m0 inst_2_m0 ヒ ン ト : マ ク ロ を読み出 し 、 -cell オプシ ョ ン を使用 し て別のセルに適用する 際、 新 し いマ ク ロ の名前は固有の も の であ る 必要があ り ます。 セル名が接頭辞 と し てマ ク ロ 名に追加 さ れ、 新 し いマ ク ロ 名が作成 さ れます。 例 4 では、 新 し いマ ク ロ inst_1_m0 お よ び inst_2_m0 が作成 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 127 第 8 章 : 相対配置マ ク ロの定義 マ ク ロのプ ロパテ ィ マ ク ロ オブジ ェ ク ト には、 次のプ ロ パテ ィ があ り ます。 • ABSOLUTE_GRID • CLASS • NAME • RLOCS マ ク ロのプ ロパテ ィ の例 % report_property [get_macros m1] Property Type Read-only ABSOLUTE_GRID bool true CLASS string true NAME string true RLOCS string* true Visible true true true true Value 0 macro m1 u2/sr0 X0Y0 u2/sr1 X0Y1 次に、 各プ ロ パテ ィ について説明 し ます。 ABSOLUTE_GRID RLOC でデ フ ォ ル ト の グ リ ッ ド シ ス テ ム ま たは絶対グ リ ッ ド シ ス テ ム の ど ち ら を使用す る か を示すブール プ ロ パ テ ィ です。 デフ ォ ル ト は false です。 update_macro で -absolute_grid を使用す る と 、 こ のプ ロ パテ ィ は true にな り ます。 絶対グ リ ッ ド では、 サ イ ト の RPM_X お よ び RPM_Y プ ロ パテ ィ に対応す る 座標が使用 さ れ る ので、 異な る サ イ ト タ イ プに配置 さ れたセルか ら マ ク ロ を作成で き ます。 CLASS オブジ ェ ク ト を マ ク ロ と し て識別 し ます。 NAME マ ク ロ オブジ ェ ク ト の名前。 create_macro で使用 さ れた名前か、 read_xdc -cell を使用 し た と き にセル階層 名が接頭辞 と し て付け ら れたマ ク ロ 名です。 RLOCS マ ク ロ セルの リ ス ト と それ ら の update_macro コ マ ン ド で使用 さ れた形式の RLOC プ ロ パテ ィ を含む文字列です。 マ ク ロ セルには、 さ ら に次のプ ロ パテ ィ があ り ます。 • RLOC : セルの相対 ロ ケーシ ョ ン プ ロ パテ ィ (RLOC) 値 • MACRO_NAME : セルが属す る マ ク ロ の名前 RLOC の例 前述の例を使用す る と 、 次の よ う にな り ます。 % get_property RLOC [get_cells {u2/sr0 u2/sr1}] X0Y0 X0Y1 % get_property MACRO_NAME [get_cells {u2/sr0 u2/sr1}] m1 m1 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 128 第 8 章 : 相対配置マ ク ロの定義 ア ド バン ス XDC マ ク ロの例 こ のセ ク シ ョ ンでは、 次のア ド バン ス XDC マ ク ロ の例を示 し ます。 • 「相対グ リ ッ ド マ ク ロ の例」 • 「絶対グ リ ッ ド マ ク ロ の例」 相対グ リ ッ ド マ ク ロの例 一般的なほ と ん ど のマ ク ロ は同 じ サ イ ト タ イ プに属する セルで構成 さ れてい る ので、デフ ォ ル ト ではマ ク ロ の RLOC 座標に相対グ リ ッ ド が使用 さ れます。 次に、 マ ク ロ の RLOC か ら 生成 さ れた相対配置の単純な例を示 し ます。 こ のマ ク ロ は、 2x2 パ タ ーンに並べ ら れた 2 つの SRL > FF > FF 回路で構成 さ れます。 図 8-3 を参照 し て く だ さ い。 X-Ref Target - Figure 8-3 図 8‐3 : サン プル回路の回路図 適切な相対配置を作成す る には、 次の よ う にセルに RLOC を設定 し ます。 srl[0] X0Y0 regs0[0] X0Y0 regs1[0] X1Y0 srl[1] X0Y1 regs0[1] X0Y1 regs1[1] X1Y1 次の コ マ ン ド は、 こ のマ ク ロ に m1 と い う 名前を付けて作成 し ます。 create_macro m0 update_macro m0 {srl[0] X0Y0 regs0[0] X0Y0 regs1[0] X1Y0 srl[1] X0Y1 regs0[1] X0Y1 regs1[1] X1Y1} 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 129 第 8 章 : 相対配置マ ク ロの定義 マ ク ロ は自動的に配置 さ せ る か、 セ ッ ト と し て手動で配置で き ます。 マ ク ロ の配置は図 8-4 の よ う にな り ます。 X-Ref Target - Figure 8-4 図 8‐4 : マ ク ロの配置例 マ ク ロ には、 LUTRAM に基づ く SRL が含ま れてお り 、 こ れは SLICEM タ イ プ ス ラ イ ス にのみ配置可能なので、 ロ ケーシ ョ ンは多少制限 さ れます。 こ のマ ク ロ は、 SLICEM 列の右に SLICEL 列のあ る と こ ろにのみ配置可能です。 注意 : 多 く のオブジ ェ ク ト が配置 さ れてい る ス ラ イ ス が一箇所に集中 し てい る と 、 密集の原因 と な り 、 配線が困難 と な り 、 パフ ォーマ ン ス に悪影響を及ぼす可能性があ り ます。 絶対グ リ ッ ド マ ク ロの例 異な る サ イ ト タ イ プのセルを マ ク ロ に含め る 場合は、 絶対グ リ ッ ド を使用する 必要があ り ます。 絶対グ リ ッ ド (RPM グ リ ッ ド と も 呼ばれ る ) は、 デバ イ ス内の ロ ケーシ ョ ンに基づいてサ イ ト の座標を定義す る 絶対 座標シ ス テ ムです。 絶対グ リ ッ ド では、 サ イ ト のサ イ ズ も 考慮 さ れます。 RAM お よ び DSP ブ ロ ッ ク は、 ス ラ イ ス よ り も 幅が広 く な っ てい ます。 絶対グ リ ッ ド を図 8-5 に示 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 130 第 8 章 : 相対配置マ ク ロの定義 こ の例では、 3 つの異な る タ イ プのセルか ら 、 絶対グ リ ッ ド を使用 し てマ ク ロ が作成 さ れてい ます。 入力ポー ト か ら の入力デー タ パ ス が、 2 段の レ ジ ス タ を介 し てブ ロ ッ ク RAM に接続 さ れてい ます。 こ れが図 8-5 に示 さ れてい ます。 X-Ref Target - Figure 8-5 図 8‐5 : 絶対グ リ ッ ド の回路例 マ ク ロ の作成には、 セルの リ ス ト と それ ら の絶対グ リ ッ ド を使用 し た相対 ロ ケーシ ョ ン (RLOC) が必要です。 マ ク ロ を作成す る 際、 絶対グ リ ッ ド マ ク ロ の相対配置を イ メ ージする のは難 し いか も 知れません。 推奨 : セルを一時的にデバ イ ス の絶対 ロ ケーシ ョ ンに配置 し 、 各セルの絶対グ リ ッ ド RLOC 値を取得 し ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 131 第 8 章 : 相対配置マ ク ロの定義 図 8-6 に示す よ う に、 セルは まず手動で配置 し 、 適切な ロ ケーシ ョ ンに調整 し ます。 X-Ref Target - Figure 8-6 図 8‐6 : 絶対グ リ ッ ド マ ク ロ用にセルを手動配置 絶対グ リ ッ ド では絶対 ロ ケーシ ョ ンが指定 さ れますが、 マ ク ロ の相対配置を満足で き る ロ ケーシ ョ ンであれば、 デバ イ ス の ど こ にで も 配置で き ます。 こ の例では、 相対 ロ ケーシ ョ ンは左下角を基点 と し て指定 さ れてい ます。 ただ し 、 絶対グ リ ッ ド ロ ケーシ ョ ン では絶対配置ではな く 相対配置が指定 さ れます。 こ れに よ り 、 相対配置が保持 さ れ る ロ ケーシ ョ ンであれば、 マ ク ロ をデバ イ ス の ど こ にで も 配置で き ます。 こ の例は、 ILOGIC、 ス ラ イ ス、 お よ びブ ロ ッ ク RAM が含ま れていて多少複雑であ り 、 マ ク ロ の ロ ケーシ ョ ン も あ る 程度制限 さ れますが、 図 8-7 にオ レ ン ジ色でハ イ ラ イ ト さ れてい る 3 つの ど の ロ ケーシ ョ ンにで も 配置で き ます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 132 第 8 章 : 相対配置マ ク ロの定義 X-Ref Target - Figure 8-7 図 8‐7 : XDC マ ク ロ を配置可能な 3 つのロ ケーシ ョ ン 絶対グ リ ッ ド RLOC を判断す る には、 サ イ ト の RPM_X お よ び RPM_Y プ ロ パテ ィ を使用 し ます。 た と えば、 下のブ ロ ッ ク RAM はサ イ ト RAMB36_X0Y0 に配置 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 133 第 8 章 : 相対配置マ ク ロの定義 セルではな く サ イ ト を選択す る と 、 RPM_X が 33、 RPM_Y が 0 と 表示 さ れます (図 8-8)。 こ れ ら が絶対グ リ ッ ド 座標 です。 対応す る RLOC 値は X33Y0 です。 X-Ref Target - Figure 8-8 図 8‐8 : ブ ロ ッ ク RAM の絶対グ リ ッ ド 座標 同 じ 方法を使用 し て、ス ラ イ ス の絶対 RLOC 値を取得で き ます (図 8-9)。こ の ス ラ イ ス内のセルの RLOC は X31Y0 です。 X-Ref Target - Figure 8-9 図 8‐9 : ス ラ イ スの絶対グ リ ッ ド 座標 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 134 第 8 章 : 相対配置マ ク ロの定義 マ ク ロ に m0 と い う 名前を付けて作成す る には、 次の 2 つの コ マ ン ド を使用 し ます。 create_macro m0 update_macro m0 -absolute_grid <cell0 rloc0 cell1 rloc1 cell2 rloc2 … cellN rlocN> マ ク ロ に こ の例の よ う に多数のセルが含まれてい る 場合、 update_macro に必要な cell-rloc リ ス ト の指定を Tcl を使用 し て簡略化で き ます。 セルが配置 さ れてい る 場合、 絶対グ リ ッ ド RLOC は次の Tcl proc getAbsRLOC を使用 し て取得 で き ます。 proc getAbsRLOC {cell} { set site [get_sites -of [get_cells $cell]] set X [get_property RPM_X $site] set Y [get_property RPM_Y $site] return "X${X}Y${Y}" } 例 : 変数 rloc を ブ ロ ッ ク RAM のセルの RLOC に割 り 当て る % set rloc [getAbsRLOC $ram0] X33Y0 Tcl dict コ マ ン ド を使用す る と 、 update_macro コ マ ン ド 用に、 セル と 絶対グ リ ッ ド RLOC の辞書 (連想配列) を作 成で き ます。 Tcl 連想配列は、 キー と 値のペアの配列です。 セル と RLOC は、 dict コ マ ン ド を使用 し て配列にす る こ と がで き ます。 配列キーがマ ク ロ のセル オブジ ェ ク ト で、 配列値がセルの RLOC です。 こ れは、 多数のセルを含む マ ク ロ を作成す る プ ロ セ ス を自動化す る のに役立ち ます。 次の例では絶対グ リ ッ ド を使用 し てい ますが、 こ の方法は 相対グ リ ッ ド に も 適用で き ます。 $cells がマ ク ロ セルの リ ス ト で、 $cells の各セルが配置 さ れてマ ク ロ を形成 し てい る と す る と 、 次の Tcl プ ロ シージ ャ で update_macro コ マ ン ド 用にセル と RLOC ペアの リ ス ト を作成で き ます。 proc buildRLOCList {cells} { set rlocs [dict create] ; # initialize dictionary called rlocs foreach cell $cells { # dictionary key is cell, value is absolute RLOC dict set rlocs $cell [getAbsRLOC $cell] } return $rlocs } 例 : 回路例の RLOC リ ス ト の構築 # create macro cell list: input register stage and BRAM cells set cells [get_cells -hier [list ireg0* ireg1* *SIMPLE_PRIM36.ram]] create_macro m0 update_macro m0 -absolute_grid [buildRLOCList $cells] buildRLOCList で作成 さ れた辞書 リ ス ト を表示す る には、 次の コ マ ン ド を使用 し ます。 $ puts [buildRLOCList $cells] {ireg0[6]} X2Y10 {ireg0[5]} X2Y11 {ireg0[4]} X2Y6 {ireg0[3]} X2Y7 ... マ ク ロ セルが多数あ り 、 階層に埋 も れてい る 場合、 セル と RLOC ペアの リ ス ト を明示的に指定す る のは困難であ り 、 エ ラ ーの原因 と な り ます。 Tcl を使用す る と 、 XDC マ ク ロ の作成お よ び管理が簡略化 さ れます。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 135 付録 A サポー ト さ れる XDC および SDC コ マ ン ド サポー ト さ れる XDC および SDC コ マ ン ド について こ の 付録 で は、 Vivado® 統合 設 計環 境 (IDE) で サ ポ ー ト さ れ る ザ イ リ ン ク ス デ ザ イ ン 制約 (XDC) お よ び SDC (Synopsys Design Constraints) コ マ ン ド を示 し ます。 次の内容が含まれます。 • 「XDC フ ァ イ ルで使用可能な コ マ ン ド 」 • 「サポー ト さ れ る SDC コ マ ン ド 」 • 「サポー ト さ れない SDC コ マ ン ド 」 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 136 付録 A : サポー ト さ れる XDC および SDC コ マ ン ド XDC フ ァ イルで使用可能な コ マ ン ド 表 A‐1 : XDC フ ァ イルで使用可能な コ マ ン ド タ イ ミ ング制約 create_clock create_generated_clock group_path set_clock_groups set_clock_latency set_data_check set_disable_timing set_false_path set_input_delay set_output_delay set_max_delay set_min_delay set_multicycle_path set_case_analysis set_clock_sense set_clock_uncertainty set_input_jitter set_max_time_borrow set_propagated_clock set_system_jitter set_external_delay デバイ ス オブ ジ ェ ク ト のク エ リ get_iobanks get_package_pins get_sites get_bel_pins get_bels get_nodes get_pips get_site_pins get_site_pips get_slrs get_tiles get_wires 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 物理制約 add_cells_to_pblock create_pblock delete_pblock remove_cells_from_pblock resize_pblock create_macro delete_macros update_macro ネ ッ ト リ ス ト 制約 set_load set_logic_dc set_logic_one set_logic_zero set_logic_unconnected タ イ ミ ング オブ ジ ェ ク ト のク エ リ all_clocks get_path_groups get_clocks get_generated_clocks get_timing_arcs フ ロ ア プ ラ ン オブ ジ ェ ク ト のク エ リ get_pblocks get_macros japan.xilinx.com ネ ッ ト リ ス ト オブ ジ ェ ク ト のク エ リ all_cpus all_dsps all_fanin all_fanout all_hsios all_inputs all_outputs all_rams all_registers all_ffs all_latches get_cells get_nets get_pins get_ports get_debug_cores get_debug_ports 汎用 set expr list filter current_instance get_hierarchy_separator set_hierarchy_separator get_property set_property set_units endgroup startgroup 137 付録 A : サポー ト さ れる XDC および SDC コ マ ン ド サポー ト さ れる SDC コ マ ン ド 注記 : -quiet お よ び -verbose オプシ ョ ンはすべてのザ イ リ ン ク ス Tcl で サポー ト さ れ る ので、 次の表では省略 さ れてい ます。 表 A‐2 : サポー ト さ れる SDC コ マ ン ド SDC 1.9 ザイ リ ン ク ス SDC current_instance [instance_name] current_instance [instance_name] expr expr list list set set set_hierarchy_separator [separator] set_hierarchy_separator [separator] set_units [-capacitance cap_units] [-resistance res_unit] [-time time_unit] [-voltage voltage_units] [-current current_unit] [-power power_unit] set_units [-capacitance arg] [-resistance arg] [-time arg] [-voltage arg] [-current arg] [-power arg] [-suffix arg] [-digits arg] all_clocks all_clocks all_inputs [-level_sensitive] [-edge_triggered] [-clock clock_name] all_inputs all_outputs [-level_sensitive] [-edge_triggered] [-clock clock_name] all_outputs 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 注記 read_xdc -cells/-ref ま た は SCOPED_TO_xxx 制約フ ァ イ ル プ ロ パ テ ィ が使用 さ れ る 場 合、Vivado IDE での get_ports の処理方法は異な り ます。 Vivado IDE では、Tcl リ ス ト はオ ブジ ェ ク ト の コ ン テナー と し て も 使用 さ れます。 japan.xilinx.com set_units -time で Vivado IDE の タ イ ミ ン グの単位を変更 す る こ と はで き ません。 138 付録 A : サポー ト さ れる XDC および SDC コ マ ン ド 表 A‐2 : サポー ト さ れる SDC コ マ ン ド (続き) SDC 1.9 ザイ リ ン ク ス SDC 注記 all_registers [-no_hierarchy] [-clock clock_name] [-rise_clock clock_name] [-fall_clock clock_name] [-cells] [-data_pins] [-clock_pins] [-slave_clock_pins] [-async_pins] [-output_pins] [-level_sensitive] [-edge_triggered] [-master_slave] all_registers [-no_hierarchy] [-clock args] [-rise_clock args] [-fall_clock args] [-cells] [-data_pins] [-clock_pins] current_design current_design get_cells [-hierarchical] [-hsc separator] [-regexp] [-nocase] -of_objects objects patterns get_cells [-hierarchical] [-hsc arg] [-regexp] [-nocase] [-of_objects args] [patterns] [-filter arg] [-match_style arg] get_clocks [-regexp] [-nocase] patterns get_clocks [-regexp] [-nocase] [patterns] [-filter arg] [-of_objects args] [-match_style arg] [-include_generated_clocks] Vivado IDE で は、 ク ロ ッ ク ツ リ ー上の ク ロ ッ ク オ ブ ジ ェ ク ト を ク エ リ す る のに -of_objects オプ シ ョ ン がサ ポー ト さ れます。 get_lib_cells [-hsc separator] [-regexp] [-nocase] patterns get_lib_cells Vivado IDE では、 デザ イ ンに読 み込む こ と がで き る のは 1 つの デバ イ ス ラ イ ブ ラ リ のみ な の で、 ラ イ ブ ラ リ セルを ク エ リ す る 際に ラ イ ブ ラ リ を指定す る 必 要はあ り ません。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 [-async_pins] [-output_pins] [-level_sensitive] [-edge_triggered] [-regexp] [-nocase] patterns [-filter arg] [-include_unsupported] [-of_objects args] japan.xilinx.com Vivado IDE では、 現在のデザ イ ンは メ モ リ に読み込ま れてい る デザ イ ン を指 し てお り 、 最上位 モジ ュ ール ま たはエ ン テ ィ テ ィ 以外の別のモジ ュ ール ま たはエ ン テ ィ テ ィ に変更す る こ と はで き ません。 139 付録 A : サポー ト さ れる XDC および SDC コ マ ン ド 表 A‐2 : サポー ト さ れる SDC コ マ ン ド (続き) SDC 1.9 ザイ リ ン ク ス SDC get_lib_pins [-hsc separator] [-regexp] [-nocase] patterns get_lib_pins get_libs [-regexp] [-nocase] patterns get_libs [-regexp] [-nocase] [patterns] [-filter arg] get_nets [-hierarchical] [-hsc separator] [-regexp] [-nocase] -of_objects objects patterns get_nets [-hierarchical] [-hsc arg] [-regexp] [-nocase] [-of_objects args] [patterns] [-filter arg] [-match_style arg] 注記 [-regexp] [-nocase] patterns [-filter arg] [-of_objects args] [-top_net_of_hierarchical_group] [-segments] [-boundary_type arg] get_pins [-hierarchical] [-hsc separator] [-regexp] [-nocase] -of_objects objects patterns get_pins [-hierarchical] [-hsc arg] [-regexp] [-nocase] [-of_objects args] [patterns] [-leaf] [-filter arg] [-match_style arg] get_ports [-regexp] [-nocase] patterns get_ports [-regexp] [-nocase] [patterns] [-filter arg] [-of_objects args] [-match_style arg] create_clock -period period_value [-name clock_name] [-waveform edge_list] [-add] [source_objects] create_clock -period arg [-name arg] [-waveform args] [-add] [objects] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 140 付録 A : サポー ト さ れる XDC および SDC コ マ ン ド 表 A‐2 : サポー ト さ れる SDC コ マ ン ド (続き) SDC 1.9 ザイ リ ン ク ス SDC create_generated_clock [-name clock_name] -source master_pin [-edges edge_list] [-divide_by factor] [-multiply_by factor] [-duty_cycle percent] [-invert] [-edge_shift shift_list] [-add] [-master_clock clock] [-combinational] source_objects create_generated_clock [-name arg] [-source args] [-edges args] [-divide_by arg] [-multiply_by arg] [-duty_cycle arg] group_path [-name group_name] [-default] [-weight weight_value] [-from from_list] [-rise_from from_list] [-fall_from from_list] [-to to_list] [-rise_to to_list] [-fall_to to_list] [-through through_list] [-rise_through through_list] [-fall_through through_list] group_path [-name arg] set_clock_groups [-name name] [-logically_exclusive] [-physically_exclusive] [-asynchronous] [-allow_paths] -group clock_list set_clock_groups [-name arg] [-logically_exclusive] [-physically_exclusive] [-asynchronous] set_clock_latency [-rise] [-fall] [-min] [-max] [-source] [-late] [-early] [-clock clock_list] delay object_list set_clock_latency [-rise] [-fall] [-min] [-max] [-source] [-late] [-early] [-clock args] latency objects 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 注記 [-edge_shift args] [-add] [-master_clock arg] [-combinational] objects [-from args] [-to args] [-through args] [-group args] japan.xilinx.com 141 付録 A : サポー ト さ れる XDC および SDC コ マ ン ド 表 A‐2 : サポー ト さ れる SDC コ マ ン ド (続き) SDC 1.9 ザイ リ ン ク ス SDC set_clock_sense [-positive] [-negative] [-pulse pulse] [-stop_propagation] [-clock clock_list] pin_list set_clock_sense [-positive] [-negative] [-pulse arg] [-stop_propagation] [-clocks args] pins set_clock_uncertainty [-from from_clock] [-rise_from rise_from_clock] [-fall_from fall_from_clock] [-to to_clock] [-rise_to rise_to_clock] [-fall_to fall_to_clock] [-rise] [-fall] [-setup] [-hold] uncertainty [object_list] set_clock_uncertainty [-from args] [-rise_from args] [-fall_from args] [-to args] [-rise_to args] [-fall_to args] set_data_check [-from from_object] [-to to_object] [-rise_from from_object] [-fall_from from_object] [-rise_to to_object] [-fall_to to_object] [-setup] [-hold] [-clock clock_object] value set_data_check [-from args] [-to args] [-rise_from args] [-fall_from args] [-rise_to args] [-fall_to args] [-setup] [-hold] [-clock args] value set_disable_timing [-from from_pin_name] [-to to_pin_name] cell_pin_list set_disable_timing [-from arg] [-to arg] objects 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 注記 [-setup] [-hold] uncertainty [objects] japan.xilinx.com 142 付録 A : サポー ト さ れる XDC および SDC コ マ ン ド 表 A‐2 : サポー ト さ れる SDC コ マ ン ド (続き) SDC 1.9 ザイ リ ン ク ス SDC set_false_path [-setup] [-hold] [-rise] [-fall] [-from from_list] [-to to_list] [-through through_list] [-rise_from rise_from_list] [-rise_to rise_to_list] [-rise_through rise_through_list] [-fall_from fall_from_list] [-fall_to fall_to_list] [-fall_through fall_through_list] set_false_path [-setup] [-hold] [-rise] [-fall] [-from args] [-to args] [-through args] [-rise_from args] [-rise_to args] [-rise_through args] [-fall_from args] [-fall_to args] [-fall_through args] [-reset_path] set_input_delay [-clock clock_name] [-clock_fall] [-level_sensitive] [-rise] [-fall] [-max] [-min] [-add_delay] [-network_latency_included] [-source_latency_included] delay_value port_pin_list set_input_delay [-clock args] [-clock_fall] 注記 Vivado IDE では、内部ピ ンでは入 力遅延はサポー ト されません。 [-rise] [-fall] [-max] [-min] [-add_delay] [-network_latency_included] [-source_latency_included] delay objects [-reference_pin args] set_max_delay set_max_delay [-rise] [-rise] [-fall] [-fall] [-from from_list] [-from args] [-to to_list] [-to args] [-through through_list] [-through args] [-rise_from rise_from_list] [-rise_from args] [-rise_to rise_to_list] [-rise_to args] [-rise_through rise_through_list] [-rise_through args] [-fall_from fall_from_list] [-fall_from args] [-fall_to args] [-fall_to fall_to_list] [-fall_through args] [-fall_through fall_through_list] delay delay_value [-reset_path] [-datapath_only] set_max_time_borrow delay_value object_list 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 set_max_time_borrow delay objects japan.xilinx.com 143 付録 A : サポー ト さ れる XDC および SDC コ マ ン ド 表 A‐2 : サポー ト さ れる SDC コ マ ン ド (続き) SDC 1.9 ザイ リ ン ク ス SDC 注記 set_min_delay set_min_delay [-rise] [-rise] [-fall] [-fall] [-from args] [-from from_list] [-to args] [-to to_list] [-through args] [-through through_list] [-rise_from args] [-rise_from rise_from_list] [-rise_to args] [-rise_to rise_to_list] [-rise_through args] [-rise_through rise_through_list] [-fall_to args] [-fall_from fall_from_list] [-fall_from args] [-fall_to fall_to_list] [-fall_through args] [-fall_through fall_through_list] delay delay_value [-reset_path] set_multicycle_path [-setup] [-hold] [-rise] [-fall] [-start] [-end] [-from from_list] [-to to_list] [-through through_list] [-rise_from rise_from_list] [-rise_to rise_to_list] [-rise_through rise_through_list] [-fall_from fall_from_list] [-fall_to fall_to_list] [-fall_through fall_through_list] path_multiplier set_multicycle_path [-setup] [-hold] [-rise] [-fall] [-start] [-end] [-from args] [-to args] [-through args] [-rise_from args] [-rise_to args] [-rise_through args] [-fall_from args] [-fall_to args] [-fall_through args] path_multiplier [-reset_path] set_output_delay [-clock clock_name] [-clock_fall] [-level_sensitive] [-rise] [-fall] [-max] [-min] [-add_delay] [-network_latency_included] [-source_latency_included] delay_value port_pin_list set_output_delay [-clock args] [-clock_fall] set_propagated_clock object_list set_propagated_clock object 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 Vivado IDE では、内部ピ ンでは出 力遅延はサポー ト されません。 [-rise] [-fall] [-max] [-min] [-add_delay] [-network_latency_included] [-source_latency_included] delay objects [-reference_pin args] japan.xilinx.com Vivado IDE で は、 すべ て の ク ロ ッ ク は デ フ ォ ル ト で 伝搬 ク ロ ッ ク と し て処理 さ れます。 144 付録 A : サポー ト さ れる XDC および SDC コ マ ン ド 表 A‐2 : サポー ト さ れる SDC コ マ ン ド (続き) SDC 1.9 ザイ リ ン ク ス SDC set_case_analysis value port_or_pin_list set_case_analysis value objects set_load [-min] [-max] [-subtract_pin_load] [-pin_load] [-wire_load] value objects set_load [-max] [-min] set_logic_dc port_list set_logic_dc objects set_logic_one port_list set_logic_one objects set_logic_zero port_list set_logic_zero objects set_operating_conditions [-library lib_name] [-analysis_type analysis_type] [-max max_condition] [-min min_condition] [-max_library max_lib] [-min_library min_lib] [-object_list objects] [condition] set_operating_conditions Vivado IDE では、 set_load コ マ ン ド は消費電力解析にのみ関 係 し ます。 capacitance objects [-rise] [-fall] [-voltage args] [-grade arg] [-process arg] [-junction_temp arg] [-ambient_temp arg] [-thetaja arg] [-thetasa arg] [-airflow arg] [-heatsink arg] [-thetajb arg] [-board arg] [-board_temp arg] [-board_layers arg] 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 注記 japan.xilinx.com Vivado IDE では、 set_operating_condition s コ マ ン ド は消費電力解析のみ の動作条件を指定 し 、 タ イ ミ ン グ レ ポー ト には影響 し ま せん。 Vivado IDE の タ イ ミ ン グ エン ジ ンは、 config_timing_analysis コ マ ン ド で制御 し ます。 config_timing_analysis の 詳細は、 『Vivado Design Suite Tcl コ マ ン ド リ フ ァ レ ン ス ガ イ ド 』 (UG835) [参照 9] を参照 し て く だ さ い。 145 付録 A : サポー ト さ れる XDC および SDC コ マ ン ド サポー ト さ れない SDC コ マ ン ド 次の SDC コ マ ン ド はサポー ト さ れません。 • set_clock_gating_check • set_clock_transition • set_ideal_latency • set_ideal_network • set_ideal_transition • set_ max_fanout 注記 : 最大フ ァ ン ア ウ ト は、 合成で MAX_FANOUT 属性に よ り 制御 さ れます。 • set_drive • set_driving_cell • set_fanout_load • set_input_transition • set_max_area • set_max_capacitance • set_max_transition • set_min_capacitance • set_port_fanout_number • set_resistance • set_timing_derate • set_voltage • set_wire_load_min_block_size • set_wire_load_mode • set_wire_load_model • set_wire_load_selection_group • create_voltage_area • set_level_shifter_strategy • set_level_shifter_threshold • set_max_dynamic_power • set_max_leakage_power 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 146 付録 B その他の リ ソ ースおよび法的通知 ザイ リ ン ク ス リ ソ ース ア ンサー、 資料、 ダ ウ ン ロ ー ド 、 フ ォー ラ ム な ど のサポー ト リ ソ ース は、 ザ イ リ ン ク ス サポー ト サ イ ト を参照 し て く だ さ い。 ソ リ ュ ーシ ョ ン セ ン タ ー デバ イ ス、 ツール、 IP のサポー ト については、 ザ イ リ ン ク ス ソ リ ュ ーシ ョ ン セ ン タ ーを参照 し て く だ さ い。 デザ イ ン ア シ ス タ ン ス、 ア ド バ イ ザ リ 、 ト ラ ブルシ ュ ー ト ヒ ン ト な ど が含まれます。 参考資料 Vivado Design Suite ユーザー ガ イ ド および リ フ ァ レ ン ス ガ イ ド こ のガ イ ド では、 次の Vivado® Design Suite ガ イ ド が参照 さ れてい ます。 1. 『ISE か ら Vivado Design Suite への移行ガ イ ド 』 (UG911) 2. 『Vivado ユーザー ガ イ ド : シ ス テ ム レベル デザ イ ン入力』 (UG895) 3. 『Vivado Design Suite ユーザー ガ イ ド : I/O お よ び ク ロ ッ ク の配置』 (UG899) 4. 『Vivado Design Suite ユーザー ガ イ ド : デザ イ ン解析お よ び ク ロ ージ ャ テ ク ニ ッ ク 』 (UG906) 5. 『UltraFast 設計手法 (Vivado Design Suite 用)』 (UG949) 6. 『Vivado Design Suite ユーザー ガ イ ド : Vivado IDE の使用』 (UG893) 7. 『Vivado Design Suite ユーザー ガ イ ド : 合成』 (UG901) 8. 『Vivado Design Suite ユーザー ガ イ ド : イ ンプ リ メ ン テーシ ョ ン』 (UG904) 9. 『Vivado Design Suite Tcl コ マ ン ド リ フ ァ レ ン ス ガ イ ド 』 (UG835) 10. 『Vivado Design Suite プ ロ パテ ィ リ フ ァ レ ン ス ガ イ ド 』 (UG912) 11. 『Vivado Design Suite ユーザー ガ イ ド : プ ロ グ ラ ムお よ びデバ ッ グ』 (UG908) 12. 『7 シ リ ーズ FPGA SelectIO リ ソ ース ユーザー ガ イ ド 』 (UG471) 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 147 第 章 : その他のザイ リ ン ク ス リ ソ ース こ のガ イ ド では、 次の資料 も 参照 さ れてい ます。 13. ザ イ リ ン ク ス ア ンサー 59893 ト レーニ ン グ リ ソ ース ザ イ リ ン ク ス では、 本書に含ま れ る コ ン セプ ト を説明す る さ ま ざ ま な ト レーニ ン グ コ ー スお よ びオ ン ラ イ ン ビデオ を提供 し てい ます。 次の リ ン ク か ら 関連す る ト レーニ ン グ リ ソ ース を参照 し て く だ さ い。 1. Vivado Design Suite ビデオ チ ュ ー ト リ アル : ア ド バン ス ク ロ ッ ク 制約 と 解析 2. Vivado Design Suite ビデオ チ ュ ー ト リ アル : 高度な タ イ ミ ン グ例外 - フ ォ ルス パ ス、 最小/最大遅延、 ケース解析 3. Vivado Design Suite ビデオ チ ュ ー ト リ アル : 入力遅延の設定 4. Vivado Design Suite ビデオ チ ュ ー ト リ アル : 出力遅延の設定 5. Vivado Design Suite ビデオ チ ュ ー ト リ アル : UCF 制約のXDC への変換 6. Vivado Design Suite ビデオ チ ュ ー ト リ アル 法的通知 The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of Xilinx products.To the maximum extent permitted by applicable law:(1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort, including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising under, or in connection with, the Materials (including your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage (including loss of data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if such damage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.Xilinx assumes no obligation to correct any errors contained in the Materials or to notify you of updates to the Materials or to product specifications.You may not reproduce, modify, distribute, or publicly display the Materials without prior written consent.Certain products are subject to the terms and conditions of Xilinx’s limited warranty, please refer to Xilinx’s Terms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos; IP cores may be subject to warranty and support terms contained in a license issued to you by Xilinx.Xilinx products are not designed or intended to be fail-safe or for use in any application requiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in such critical applications, please refer to Xilinx’s Terms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos. © Copyright 2012-2014 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, and other designated brands included herein are trademarks of Xilinx in the United States and other countries.All other trademarks are the property of their respective owners. こ の資料に関す る フ ィ ー ド バ ッ ク お よ び リ ン ク な ど の問題につ き ま し ては、 [email protected] ま で、 ま たは各ページの 右下にあ る [フ ィ ー ド バ ッ ク 送信] ボ タ ン を ク リ ッ ク す る と 表示 さ れ る フ ォ ームか ら お知 ら せ く だ さ い。 フ ィ ー ド バ ッ ク は日本語で 入力可能です。 いただ き ま し た ご意見を参考に早急に対応 さ せていただ き ます。 なお、 こ の メ ール ア ド レ スへのお問い合わせは受 け付けてお り ません。 あ ら か じ めご了承 く だ さ い。 制約の使用 UG903 (v2015.1) 2015 年 5 月 13 日 japan.xilinx.com 148
© Copyright 2024 ExpyDoc