Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903...

133
Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 10 31 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま す。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の 上、最新情報につきましては、必ず最新英語版をご参照ください。

Transcript of Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903...

Page 1: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

Vivado Design Suite ユーザー ガイド

制約の使用

UG903 (v2014.3) 2014 年 10 月 31 日

本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。

Page 2: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 2UG903 (v2014.3) 2014 年 10 月 31 日

改訂履歴

日付 バージョ ン 改訂内容

2014 年 10 月 31 日 2014.3 Vivado® Design Suite 2014.3 リ リースに併せてアップデート。アップデートの内容は次のとおりです。

• 91 ページの 「タイ ミ ング アークのディ スエーブル」 を追加

• 133 ページの 「 ト レーニング リ ソース」 を追加

2014 年 5 月 14 日 2014.1 Vivado Design Suite 2014.1 リ リースに併せてアップデート。 アップデートの内容は次のとおりです。

• 自動的に派生されたクロ ッ クの制限に関する情報を 57 ページに追加

• 85 ページの 「-through オプシ ョ ンのノード リ ス ト 」 に情報を追加

Page 3: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 3UG903 (v2014.3) 2014 年 10 月 31 日

目次

改訂履歴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2

第 1 章 : 概要UCF 制約から XDC 制約への変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

XDC 制約について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

第 2 章 : 制約の入力方法制約の入力方法について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

制約の管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

制約の順序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

制約の入力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

合成制約の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

インプ リ メンテーシ ョ ン制約の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

制約の適用範囲の限定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

第 3 章 : タイ ミング チェ ックの基礎用語 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

タイ ミ ング パス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

セッ ト アップおよびホールド解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

リ カバリおよびリ ムーバル解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

第 4 章 : クロックの定義クロ ッ クについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

プライマ リ ク ロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

仮想クロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

生成クロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

クロ ッ ク グループ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

クロ ッ ク レイテンシ、 ジッ ター、 ばらつき . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

第 5 章 : I/O 遅延の制約I/O 遅延の制約について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

入力遅延 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

出力遅延 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

第 6 章 : タイ ミング例外タイ ミ ング例外について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

マルチサイクル パス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

フォルス パス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

小/ 大遅延 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

ケース解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

タイ ミ ング アークのディ スエーブル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

Page 4: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 4UG903 (v2014.3) 2014 年 10 月 31 日

第 7 章 : XDC の優先順位XDC の優先順位について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

XDC 制約の順序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

例外の優先順位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

第 8 章 : 物理制約物理制約について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

ネッ ト リ ス ト制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

I/O 制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

配置制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

配線制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

コンフ ィギュレーシ ョ ン制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

第 9 章 : 相対配置マクロの定義相対配置マクロの定義について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

デザイン エレ メン トのセッ トの定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

RPM の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

セルの RPM セッ トへの割り当て . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

相対ロケーシ ョ ンの割り当て . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

RPM への固定ロケーシ ョ ンの割り当て . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

XDC マクロ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

付録 A : サポート される XDC および SDC コマンドサポート される XDC および SDC コマンドについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

XDC ファ イルで使用可能なコマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

サポート される SDC コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

サポート されない SDC コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

付録 B : その他のリソースおよび法的通知ザイ リ ンクス リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

ソ リ ューシ ョ ン センター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

ト レーニング リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

Page 5: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 5UG903 (v2014.3) 2014 年 10 月 31 日

第 1 章

概要

UCF 制約から XDC 制約への変換Vivado® 統合設計環境 (IDE) では、 ザイ リ ン ク ス デザイン制約 (XDC) が使用され、 ユーザー制約フ ァ イル (UCF)フォーマッ トはサポート されません。

ザイ リ ンクス デザイン制約 (XDC) とユーザー制約ファイル (UCF) の制約には、 重要な違いがあ り ます。 XDC は、 業界標準の Synopsys Design Constraints (SDC) フォーマッ トに基づいています。 SDC は 20 年以上も使用され、 向上してきており、 デザイン制約を記述するのに もよ く使用される確立したフォーマッ トです。

UCF に慣れていて XDC を初めて使用する場合は、『ISE から Vivado Design Suite への移行ガイ ド』 (UG911) [参照 1] の「UCF 制約を XDC に移行」 の章にある 「XDC と UCF 制約の違い」 を参照して ください。 この章には、 XDC 制約を作成する開始点と して既存の UCF ファ イルを XDC に変換する方法が説明されています。

重要 : デザインを適切に制約するには、 XDC と UCF の基本的な違いを理解する必要があ り ます。 UCF から XDC への変換ユーティ リ ティには限界があ り、 XDC を正し く理解して作成するのが確実な方法です。 このユーザー ガイ ドでは、 各 XDC 制約について説明します。

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 スク リプ ト をプロジェク ト制約セッ トのいずれかに追加します。

Page 6: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 6UG903 (v2014.3) 2014 年 10 月 31 日

第 1 章 : 概要

重要 : Vivado Design Suite では、 同じ制約セッ トに XDC ファ イルと Tcl スク リプ トの両方を追加できます。 制約が変更された場合、 その制約が XDC ファ イルからのものであれば変更が XDC ファ イルに保存されますが、 Tcl スク リプトからのものは保存されません。 Tcl スク リプ トで生成された制約は、 インタラ クティブに変更するこ とはできません。 詳細は、 第 2 章 「制約の入力方法」 を参照して ください。

デザインを メモ リ に読み込んだ後に特定の制約の構文または影響を確認するには、 Tcl コンソールおよび VivadoDesign Suite のレポート機能を使用します。 これは、 タイ ミ ング制約および物理制約を解析し、 デバッグするのに有益な方法です。

Page 7: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 7UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章

制約の入力方法

制約の入力方法についてデザイン制約は、デザインがボード上で正し く機能するよ うにするために、コンパイル フローで満たす必要のある要件を定義します。すべての制約がコンパイル フローのすべての段階で使用されるわけではあ り ません。たとえば、物理制約はインプリ メンテーシ ョ ン段階 (配置および配線) でのみ使用されます。

Vivado® 統合設計環境 (IDE) の合成およびインプ リ メンテーシ ョ ン アルゴ リズムはタイ ミ ング ド リブンなので、適切なタイ ミ ング制約を作成する必要があ り ます。デザインの制約を厳し く しすぎたり緩く しすぎたりする と、 タイ ミ ング クロージャを達成するのが困難になり ます。アプ リケーシ ョ ンの要件に対応する適度な制約を使用する必要があ ります。

制約の管理Vivado IDE では、 1 つまたは多数の制約ファイルを使用できます。 コンパイル フロー全体に 1 つの制約ファイルを使用する方が便利なよ うに思えますが、複雑なデザインではすべての制約を管理するのは簡単ではあ り ません。これは、異なるチームが開発した複数の IP コアや大型のブロ ッ クを使用するデザインに特に言えます。

推奨 : タイ ミ ング制約と物理制約を別のファイルに保存するこ とをお勧めします。 また、 特定のモジュール用の制約を別のファイルに保存するこ と もできます。

プロジェク ト フロー

新規プロジェ ク ト の作成時、 または Vivado IDE メニューから、 ザイ リ ンクス デザイン制約 (XDC) ファ イルを制約セッ トに追加できます。 詳細は、 『Vivado Design Suite ユーザー ガイ ド : システム レベル デザイン入力』 (UG895) [参照 2] を参照して ください。

図 2-1 に、 プロジェク トに制約セッ トが 2 つ含まれている例を示します。

• 1 つ目の制約セッ トには、 2 つの XDC ファ イルが含まれます。

• 2 つ目の制約セッ トでは、 すべての制約を含む XDC ファ イルを 1 つ使用します。

Page 8: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 8UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

重要 : プロジェク トに独自の制約を使用する 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.xdcread_xdc wave_gen_pins.xdcsynth_design -top wave_gen -part xc7k325tffg900-2opt_designplace_designroute_design

X-Ref Target - Figure 2-1

図 2-1 : 1 つの XDC ファイルまたは複数の XDC ファイル

Page 9: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 9UG903 (v2014.3) 2014 年 10 月 31 日

第 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 属性の詳細は、 28 ページの 「RTL 属性」 を参照してください。

たとえば、 制約ファイルをインプリ メンテーシ ョ ンのみに使用する場合は、 次の手順に従います。

1. [Sources] ウ ィンド ウで制約ファイルを選択します。

2. [Source File Properties] ウ ィンド ウで、 オプシ ョ ンを次のよ うに設定します。

a. [Synthesis] をオフ

b. [Implementation] をオン

3. [Apply] をク リ ッ ク します。

同等の 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 プロパティは関係あ り ません。

X-Ref Target - Figure 2-2

図 2-2 : [Source File Properties] ウィンドウ

Page 10: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 10UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

次に、 2 つの XDC ファ イルをフローの異なる段階で読み込むコンパイル Tcl スク リプ ト例を示します。

read_verilog [glob src/*.v]read_xdc wave_gen_timing.xdcsynth_design -top wave_gen -part xc7k325tffg900-2read_xdc wave_gen_pins.xdcopt_designplace_designroute_design

ヒン ト : 合成後に読み込まれた制約が、 合成前に読み込まれた制約に加えて適用されます。

制約の順序XDC 制約は順に適用され、 規則に従って優先順位が付けられるので、 制約の順序を注意深く確認する必要があ り ます。 詳細は、 第 7 章 「XDC の優先順位」 を参照して ください。

Vivado IDE では、 デザインの内部を詳細に確認できます。 制約を検証するには、 次の手順に従います。

1. 適切なレポート コマンドを実行します。

2. [Tcl Console] または [Messages] ウ ィンド ウのメ ッセージを確認します。

推奨される制約の順序

推奨 : デザインで XDC ファ イルを 1 つまたは複数使用する場合のどちらでも、 制約を次の順序で指定します。

## タイ ミ ング アサーシ ョ ン セクシ ョ ン# プライマ リ クロ ッ ク# 仮想クロ ッ ク# 生成クロ ッ ク# クロ ッ ク グループ# 入力および出力遅延制約

## タイ ミ ング例外セクシ ョ ン# フォルス パス# 大遅延/ 小遅延# マルチサイクル パス# ケース解析# タイ ミ ングのディ スエーブル

## 物理制約セクシ ョ ン# ファ イルのどこに配置しても可、 タイ ミ ング解析の前か後が理想的# または別の制約ファイルに保存

表 2-1 : 合成前後の XDC ファイルの読み込み

ファイル名 ファイルを読み込む段階 制約が使用される段階

wave_gen_timing.xdc 合成前 • 合成

• インプ リ メンテーシ ョ ン

wave_gen_pins.xdc 合成後 • インプ リ メンテーシ ョ ン

Page 11: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 11UG903 (v2014.3) 2014 年 10 月 31 日

第 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 ファ イルの前に移動しています。

これに相当する Tcl コマンドは、 次のとおりです。

reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] \[get_files wave_gen_pins.xdc]

非プロジェク ト モードでは、read_xdc コマンドで呼び出す順序によ り制約ファイルが評価される順序が決定します。

X-Ref Target - Figure 2-3

図 2-3 : Vivado IDE での XDC ファイル順の変更

表 2-2 : ファイル順の変更前と変更後

ファイル 変更前のファイル順 変更後のファイル順

wave_gen_timing.xdc 1 2

wave_gen_pins.xdc 2 1

Page 12: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 12UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

IP コアを含む場合の制約ファイルの順序

多くの IP コアには、 1 つまたは複数の XDC ファ イルが付属しています。 XDC ファ イルを含む IP コアが RTL プロジェク ト内で生成される と、 その XDC ファ イルも さまざまなデザイン コンパイル段階で使用されます。

たとえば、 図 2-4 ではプロジェク トの IP コアの 1 つに 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 コアのインポート または作成順によ り読み込み順が決定します。 この順序は、 プロジェク トの作成後には変更できません。

X-Ref Target - Figure 2-4

図 2-4 : IP ソースの XDC ファイル

Page 13: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 13UG903 (v2014.3) 2014 年 10 月 31 日

第 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 プロパティの設定例を示します。

これに相当する 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 ファ イルをド ラ ッグして、 適切な位置に移動します。

図 2-1 に示す例では、 Tcl コマンドは次のよ うにな り ます。

reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] \[get_files wave_gen_pins.xdc]

Tcl スク リプ トにも同じ方法を使用できます。 非プロジェク ト モードでは、 read_xdc および source コマンドの順序によ り制約ファイルの順序が決定します。

X-Ref Target - Figure 2-5

図 2-5 : PROCESSING_ORDER プロパティの設定例

Page 14: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 14UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

制約ファイルを含むネイティブ IP コアを使用する場合、PROCESSING_ORDER プロパティが LATE に設定されていなければ、 IP の XDC ファ イルはデザインのほかのファイルの後に、 [IP Sources] ビューに リ ス ト される IP の順に読み込まれます。 たとえば、 図 2-6 ではプロジェク ト IP コアの 1 つに 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

X-Ref Target - Figure 2-6

図 2-6 : IP ソースの XDC ファイル

Page 15: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 15UG903 (v2014.3) 2014 年 10 月 31 日

第 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 の適用範囲の詳細は、35 ページの 「制約の適用範囲の限定」 を参照してください。

制約の入力Vivado IDE では、 いくつかの方法で制約を入力できます。 テキス ト エディ ターで直接 XDC ファ イルを編集する場合以外は、 Vivado IDE の制約入力機能にアクセスするにはデザイン データベース (エラボレート済み、 合成済み、 またはインプリ メン ト済み) を開く必要があ り ます。

メモリ内の制約の保存

編集中の制約を検証するには、 メモ リ内にデザインが読み込まれているこ とが必要です。 Vivado IDE ユーザー インターフェイスを使用して制約を編集する場合は、Tcl コンソールで同等の XDC コマンドが実行され、 メモ リ内で適用されます。 編集したタイ ミ ング制約を XDC ファ イルに変更するには、 まずメモ リ内で適用する必要があ り ます。

合成またはインプ リ メ ンテーシ ョ ンを実行する前に、 メモ リ内の制約をプロジェク トの XDC ファ イルに保存する必要があ り ます。 Vivado IDE では、 制約の保存が必要な場合はメ ッセージが表示されます。

制約を手動で保存するには、 次のいずれかを実行します。

• ツールバーの [Save Constraints] をク リ ッ ク します。

• [File] → [Save Constraints] をク リ ッ ク します。

これらのコマンドを実行する と、 次の処理が実行されます。

• すべての新規制約が、 デザインに関連付けられている制約セッ トの 「target」 とマーク された XDC ファ イルに保存されます。

• 編集されたすべての制約が、 XDC ファ イルの元の位置に保存されます。

注記 : 制約管理システムでは、 可能な限り元の XDC ファ イル フォーマッ トが保持されます。

制約編集フロー

図 2-7 に、 推奨される制約編集フローを示します。 これら 2 つのフローを混合しないでください。 混合する と、 制約が失われる可能性があ り ます。 推奨されるフローは、 次のとおりです。

• 「ユーザー インターフェイスを使用」

• 「手動で編集」

Page 16: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 16UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

ユーザー インターフェイスを使用

制約は Vivado IDE で管理されるので、 XDC ファ イルを同時に編集しないでください。 Vivado IDE でメモ リの内容を保存する と、 制約は次のよ うに保存されます。

• 変更された制約は、 元のファイルの元の制約に上書きされます。

• 新しい制約は、 ターゲッ ト とマーク された制約ファイルの 後に追加されます。

• XDC ファ イルに手動で変更を加えている場合、 それらはすべて上書きされます。

手動で編集

制約を手動で編集する場合、ユーザーが XDC ファ イルを変更および管理します。Tcl コンソールを使用して制約の構文を確認するこ とはできますが、 デザインを閉じたり読み込み直したりする と、 メモ リ内の変更は破棄されます。

制約を保存する と きに競合がある場合は、 次のいずれかを選択するよ う メ ッセージが表示されます。

• メモ リ内の変更を破棄

• 変更を新しいファイルに保存

• XDC ファ イルを上書き

制約の作成は反復作業になり ます。ある場合には IDE エディ ターを使用し、ほかの場合には制約ファイルを手動で変更するこ と も可能です。

図 2-7 に示すフローを実行する と きに、 同時に両方のフローを使用しないでください。

X-Ref Target - Figure 2-7

図 2-7 : 制約編集フロー

Page 17: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 17UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

2 つのフローを切り替えて使用する場合は、 まず制約を保存するかデザインを読み込み直し、 メモ リ内の制約が XDCファ イルと一致するよ うにします。

ピン割り当て

RTL 解析、合成、 インプ リ メンテーシ ョ ン環境で 上位ポート を作成および既存の配置を変更するには、次の手順に従います。

1. [I/O Planning] レイアウ ト を選択します。

2. 表 2-3 に示すウ ィンド ウを開きます。

ピン割り当ての詳細は、『Vivado Design Suite ユーザー ガイ ド : I/O およびクロ ッ ク配置』 (UG899) [参照 3] を参照してください。

X-Ref Target - Figure 2-8

図 2-8 : [I/O Planning] レイアウト

表 2-3 : 最上位ポート を作成および既存の配置を変更するのに使用するウィンドウ

ウィンドウ 機能

Device デバイス フロアプランでポートの位置を表示および変更します。

Package デバイス パッケージでポートの位置を表示および変更します。

I/O Ports ポート を選択して [Device] または [Package] ウ ィンド ウにド ラ ッグ アンド ド ロ ップして配置したり、 各ポートの現在の割り当てを表示します。

Package Pins 各 I/O バンクのリ ソースの使用状況を表示します。

Page 18: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 18UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

クロック リソースの割り当て

RTL 解析、 合成、 インプ リ メ ンテーシ ョ ン環境でクロ ッ ク ツ リーの配置を表示および変更するには、 次の手順に従います。

1. [Clock Planning] レイアウ ト を選択します。

2. 表 2-4 に示すウ ィンド ウを開きます。

ク ロ ッ ク リ ソース割り当ての詳細は、 『Vivado Design Suite ユーザー ガイ ド : I/O およびク ロ ッ ク配置』 (UG899) [参照 3] を参照して ください。

X-Ref Target - Figure 2-9

図 2-9 : [Clock Planning] レイアウト

表 2-4 : クロッ ク ツリーの配置を表示および変更するのに使用するウィンドウ

ウィンドウ 機能

Clock Resources • アーキテクチャでク ロ ッ ク リ ソース間の接続を表示します。

• ク ロ ッ ク ツ リー セルの現在の位置を表示します。

Netlist • [Netlist] ウ ィンド ウでクロ ッ ク リ ソースを選択し、 [Clock Resources] または [Device]ウ ィンド ウにド ラ ッグ アンド ド ロ ップします。

Page 19: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 19UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

フロアプラン

RTL 解析、 合成、 インプ リ メンテーシ ョ ン環境で Pblock を作成および変更するには、 次の手順に従います。

1. [Floorplanning] レイアウ ト を選択します。

2. 表 2-5 に示すウ ィンド ウを開きます。

特定の BEL またはサイ トにセル配置制約を作成するには、 次の手順に従います。

1. [Netlist] ウ ィンド ウでセルを選択します。

2. セルをド ラ ッグして [Device] ウ ィンド ウの適切な位置に配置します。

フロアプランの詳細は、 『Vivado Design Suite ユーザー ガイ ド : デザイン解析およびクロージャ テクニッ ク』 (UG906)[参照 4] を参照して ください。

X-Ref Target - Figure 2-10

図 2-10 : [Floorplanning] レイアウト

表 2-5 : Pblock を作成および変更するのに使用するウィンドウ

ウィンドウ 機能

Netlist Pblock に割り当てるセルを選択します。

Physical Constraints 既存の Pblock とそのプロパティを確認します。

Device デバイス上の Pblock の形状と場所を作成および変更します。

Page 20: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 20UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

[Timing Constraints] ウィ ンドウ

[Timing Constraints] ウ ィンド ウは、 合成済みデザインおよびインプ リ メ ン ト済みデザインでのみ使用可能です。 エラボレート済みデザインの制約では、 XDC ファ イルを直接使用および編集する必要があ り ます。 詳細は、 「合成制約の作成」 を参照して ください。

[Timing Constraints] ウ ィンド ウを開くには、 図 2-11 に示す 3 つのオプシ ョ ンのいずれかを使用します。

• [Window] → [Timing Constraints] をク リ ッ ク します。

• Flow Navigator で [Synthesis] → [Synthesized Design] → [Edit Timing Constraints] をク リ ッ ク します。

• Flow Navigator で [Implementation] → [Implemented Design] → [Edit Timing Constraints] をク リ ッ ク します。

[Timing Constraints] ウ ィンド ウには、 メモ リ内のタイ ミ ング制約が次のいずれかの順に表示されます。

• XDC ファ イルおよび Tcl スク リプ トで記述されているのと同じ順序

• [Tcl Console] ウ ィンド ウで入力したのと同じ順序

X-Ref Target - Figure 2-11

図 2-11 : [Timing Constraints] ウィンドウを開く方法

Page 21: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 21UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

一部の制約は、 このウ ィンド ウからは編集できません。 それらの制約には、 編集できないこ とを示すアイコン が示されます。

タイ ミ ング制約の表

[Timing Constraint] ウ ィンド ウには、既存のタイ ミ ング制約の詳細が表形式で示されます。 この表を利用して、 タイ ミング制約のオプシ ョ ンを確認および変更します。

この表には、 2 つの列があ り ます。

• [Source File] : 制約が含まれる XDC ファ イルまたは Tcl スク リプ トの名前

• [Scoped Cell] : 制約が適用されたと きの現在のインスタンス名。 この名前は通常、 専用制約が付属している IP インスタンスに対応します。 詳細は、 35 ページの 「制約の適用範囲の限定」 を参照して ください。

X-Ref Target - Figure 2-12

図 2-12 : [Timing Constraints] ウィンドウ

X-Ref Target - Figure 2-13

図 2-13 : タイ ミング制約の表

Page 22: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 22UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

表の 後の行をダブルク リ ッ クする と、 選択したタ イプの制約を新し く作成できます。 制約を作成するダイアログボッ クスが表示され、 新しい制約の詳細を入力できます。 [OK] をク リ ッ ク して制約を メモ リに適用し、 ダイアログボッ クスを閉じます。 表の新しい行に新しい制約の情報が表示されます。

既存の制約を編集するには、 表の値を直接変更します。 編集が完了したら、 [Apply] をク リ ッ ク して制約の変更をメモリに適用します。

重要 : 新しい制約または編集した制約を適用しても、 XDC ファ イルには保存されません。 XDC ファ イルに保存するには、 [Save Constraints] をク リ ッ クする必要があ り ます。

重要 : IP 制約は、編集または削除できません。 IP に付属している制約を変更するには、対応する IP の XDC ファ イルをディ スエーブルにし、 制約を XDC ファ イルにコピーして、 制約を編集します。

Page 23: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 23UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

制約の作成 (カテゴリ別)

[Timing Constraints] ウ ィン ド ウの左上のペインで制約のカテゴ リ を選択する と、 右側のペインにそのカテゴ リの制約の表が表示されます。 これによ り、 既に作成されている同じカテゴ リの制約を確認できます。

制約を作成するには、カテゴ リ名をダブルク リ ッ ク します。各オプシ ョ ンの値を指定するダイアログ ボッ クスが表示されます。 ダイアログ ボッ クスで [OK] をク リ ッ クする と、 次のよ うにな り ます。

1. 構文が検証されます。

2. 制約がメモリに適用されます。

3. 新しい制約が表の 後に追加されます。

4. 新しい制約が全制約のリ ス トの 後に追加されます。

X-Ref Target - Figure 2-14

図 2-14 : タイ ミング制約のカテゴリ

Page 24: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 24UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

すべての制約

[Timing Constraints] ウ ィン ド ウの下部には、 メモ リに読み込まれている全制約のリ ス トが適用されている順に表示されます。 制約は、 それが含まれる XDC ファ イルまたは Tcl スク リプ トでグループ化されます。 XDC ファ イルが特定の階層セルのみに適用される場合は、 ファ イル名の横にセル名が表示されます。

このペインのツールバーで [Collapse All] または [Expand All] ボタンをク リ ッ クする と、ソース ファ イルの制約を非表示または表示できます。

ヒン ト : [Expand All] をク リ ッ ク して制約を非表示にする と、 メモ リに読み込まれている制約ファイルと、そのファイルの適用範囲をすばやく確認できます。 report_compile_order -constraints コマンドを使用しても、同じ情報を表示できます。

[Group by source] をオフにする と制約が表で表示され、ソース制約ファイルと適用されるセルの情報が [SourceFile] および [Scoped Cell] 列に表示されます。

X-Ref Target - Figure 2-15

図 2-15 : [Timing Constraints] ウィンドウの [All Constraints] リスト (例 1)

X-Ref Target - Figure 2-16

図 2-16 : [Timing Constraints] ウィンドウの [All Constraints] リスト (例 2)

Page 25: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 25UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

• 制約を削除するには、 その制約を選択して [X] をク リ ッ ク します。

• 読み取り専用でない制約を編集するには、 制約の表を使用します。 編集が完了したら、 [Apply] をク リ ッ ク して制約の変更をメモリに適用します。

• 新しい制約を追加するには、 前述のダイアログ ボッ クスを使用するか、 Tcl コンソールに制約を入力します。 新しい制約は、 リ ス トの 後の <unsaved_constraints> とい う グループに表示されます。

制約を保存する と、新しい制約は 「target」 とマーク された XDC ファ イルの 後に追加されます。 メモ リのデザインに関連付けられている制約セッ トにターゲッ ト XDC ファ イルがない場合、 または制約セッ トに Tcl スク リプ ト しかない場合は、 制約の保存先を指定するよ う メ ッセージが表示されます。

制約は定期的に保存して ください。 制約を保存するには、 ツールバーの [Save Constraints] をク リ ッ クするか、 または[File] → [Save Constraints] をク リ ッ ク します。

重要 : 新規または変更された制約を Tcl スク リプ トに保存するこ とはできません。

注意 : [Timing Constraints] ウ ィンド ウの表に適用されていない制約がある と きに、 [Tcl Console] ウ ィンド ウで新しい制

約を入力しないでください。 [Timing Constraints] ウ ィンド ウのリ ス トでの制約の順序と メモリでの制約の順序が異なる

ものになる可能性があり ます。 混乱を避けるため、 既存の制約を変更したら、 必ずすべての制約を適用し直すよ うに

してください。

X-Ref Target - Figure 2-17

図 2-17 : [Timing Constraints] ウィンドウの [All Constraints] リス ト (例 3)

X-Ref Target - Figure 2-18

図 2-18 : [Timing Constraints] ウィンドウの [All Constraints] リスト (例 4)

Page 26: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 26UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

XDC テンプレート

XDC テンプレートには、 [Window] → [Language Templates] をク リ ッ ク して [Templates] ウ ィンド ウからアクセスできます。

XDC テンプレートの内容

XDC テンプレートには、 次が含まれます。

• 次のよ うなよ く使用されるタイ ミ ング制約

° ク ロ ッ ク定義

° ジッ ター

° 入力/出力遅延

° 例外

• 物理制約

• コンフ ィギュレーシ ョ ン制約

XDC テンプレートの使用

XDC テンプレート を使用するには、 次の手順に従います。

1. 使用するテンプレート を選択します。

2. [Preview] セクシ ョ ンに表示されるテキス ト をコピーします。

3. XDC ファ イルにテキス ト を貼り付けます。

4. 汎用文字列をデザインの実際の名前または値に置き換えます。

X-Ref Target - Figure 2-19

図 2-19 : XDC テンプレート

Page 27: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 27UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

アドバンス XDC テンプレート

システム同期およびソース同期 I/O 遅延制約などのアドバンス制約では、 デザイン要件をキャプチャするため Tcl 変数を設定する必要があるものがあ り ます。Tcl 変数は、実際の set_input_delay および set_output_delay 制約で使用します。

デフォルト値ではなく必要な値が代入されているこ とを確認して ください。

X-Ref Target - Figure 2-20

図 2-20 : I/O 遅延制約のテンプレート

Page 28: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 28UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

合成制約の作成Vivado IDE 合成エンジンでは、 デザインの RTL 記述がテク ノ ロジにマップされたネッ ト リ ス トに変換されます。 このプロセスは複数の段階で実行され、 多数のタイ ミ ング ド リブン 適化が含まれます。

ザイ リ ンクス FPGA デバイスには、 さまざまな方法で使用可能なロジッ ク機能が多数含まれています。 インプ リ メンテーシ ョ ンの 後にすべてのデザイン要件が満たされるよ うにするため、制約を使用して合成エンジンに指示を与える必要があ り ます。

Vivado IDE 合成の制約には、 次の 4 種類があ り ます。

• 「RTL 属性」

• 「タ イ ミ ング制約」

• 「物理制約およびコンフ ィギュレーシ ョ ン制約」

• 「エラボレート済みデザイン制約」

RTL 属性

RTL 属性は RTL ファ イルに記述する必要があ り ます。RTL 属性では通常、ロジッ クの特定の部分のマップ スタイル、レジスタやネッ ト などの保持、 終的なネッ ト リ ス トのデザイン階層の制御などを指定します。

詳細は、 『Vivado Design Suite ユーザー ガイ ド : 合成』 (UG901) [参照 5] を参照して ください。

ネッ ト リ ス ト オブジェク トのプロパティ と して XDC ファ イルで設定できるのは、 DONT_TOUCH 属性のみです。

重要 : 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

Page 29: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 29UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

物理制約およびコンフ ィギュレーシ ョ ン制約

物理制約およびコンフ ィギュレーシ ョ ン制約は、 合成アルゴ リズムでは無視されます。

エラボレート済みデザイン制約

推奨 : 合成 XDC の 初のバージ ョ ンを作成する と きは、 高レベルのデザイン要件を記述する単純なタイ ミ ング制約を使用して ください。

フローのこの段階では、 ネッ ト遅延のモデリ ングは正確ではあ り ません。 この時点での主な目的は、 インプ リ メ ンテーシ ョ ンを開始する前に、 タイ ミ ングを満たすか、 タイ ミ ングが少しの差で満たされていない合成済みネッ ト リ スト を得るこ とです。 多くの場合、 この状態を達成するには XDC および RTL を何回か修正する必要があ り ます。

図 2-21 に、 RTL ベースの XDC の作成手順を示します。 エラボレート されたデザインを使用して、合成用に制約するデザインのオブジェク ト名を見つけます。

XDC ファ イルを保存する前に、 [Tcl Console] ウ ィンド ウを使用して XDC コマンドの構文を確認してください。 エラボレート済みデザインでは、 制約を作成し、 ク ロ ッ クやデザイン オブジェク ト をクエ リできますが、 タイ ミ ング レポート コマンドは実行できません。

X-Ref Target - Figure 2-21

図 2-21 : エラボレート されたデザインでの制約の作成

Page 30: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 30UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

合成用の制約を記述する際に確実に使用できるデザイン オブジェク トは、 次のとおりです。

• 上位ポート

• 手動でインスタンシエート されたプリ ミ ティブ (セルおよびピン)

エラボレート されたデザインの作成時に、 一部の RTL 名が変更された り失われたり します。 これがよ く発生するのは、 次の名前です。

• 「1 ビッ ト レジスタの名前」

• 「複数ビッ ト レジスタの名前」

• 「吸収されるレジスタおよびネッ ト 」

• 「階層名」

1 ビッ ト レジスタの名前

デフォルトでは、 RTL の信号名の後に _reg が付いた名前になり ます。

たとえば、 VHDL および Verilog で次のよ うに定義された信号の場合、 エラボレーシ ョ ンで生成されるインスタンス名は wbDataForInputReg_reg とな り ます。

VHDL: signal wbDataForInputReg : std_logic;Verilog: reg wbDataForInputReg;

図 2-22 に、レジスタ とそのピンの回路図を示します。レジスタ インスタンスまたはそのピンに制約を定義できます。

複数ビッ ト レジスタの名前

デフォルトでは、 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;

X-Ref Target - Figure 2-22

図 2-22 : エラボレート されたデザインでの 1 ビッ ト レジスタ

Page 31: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 31UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

図 2-23 に、 レジスタの回路図を示します。 複数ビッ ト レジスタは、 1 ビッ ト レジスタのベクターと して表示されます。 回路図では、 ベクターは可能な限り小さ く表示されます。 各ビッ ト を個別に表示するこ と も可能です。

各レジスタを個別に制約するか、 次の形式を使用してグループと して制約できます。

• レジスタ ビッ ト 0 のみ

loadState_reg[0]

• すべてのレジスタ ビッ ト

loadState_reg[*]

重要 : 複数ビッ ト レジスタまたは一般的に複数ビッ ト インスタンスを、「loadState_reg[2:0]」 というパターンを使用してクエリするこ とはできません。

上記の名前は合成後のネッ ト リ ス トでの名前と も一致するので、これらに対して設定された制約は通常インプ リ メンテーシ ョ ンでも機能します。

吸収されるレジスタおよびネッ ト

RTL ソースにあるレジスタやネッ トの一部が、 さまざまな理由によ りエラボレート済みデザイン (または合成済みデザイン) からなくなってしま う こ とがあ り ます。 たとえば、 メモ リ ブロ ッ ク、 DSP、 シフ ト レジスタの推論では、 複数のデザイン オブジェク ト を 1 つのリ ソースに配置するこ とが必要とな り ます。これらのオブジェク ト を使用して制約を定義する場合は、 接続されている別のレジスタやネッ ト を使用できるか検討してみてください。

階層名

Vivado 合成でデザインの階層を完全に保持するよ う指定しない場合、合成中に一部またはすべての階層をフラ ッ ト化できます。 詳細は、 『Vivado Design Suite ユーザー ガイ ド : 合成』 (UG901) [参照 5] を参照して ください。

推奨 : 合成制約には、 完全に解決された階層名を使用して ください。 そのよ うにする と、 階層の変換にかかわらず、終的なネッ ト リ ス ト名と一致する可能性が高くな り ます。

たとえば、 デザインのサブレベルに次のよ うなレジスタがある と します。

エラボレート済みデザインの例

inst_A/inst_B/control_reg

合成中、 このレジスタに特別な 適化は実行されないとする と、 ツール オプシ ョ ンまたはデザイン構造によって、 フラ ッ ト名または階層名が得られます。

フラ ッ ト ネッ ト リ ス トでのインスタンス名

inst_A/inst_B/control_reg (F)

X-Ref Target - Figure 2-23

図 2-23 : エラボレート されたデザインでの複数ビッ ト レジスタ

Page 32: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 32UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

階層ネッ ト リ ス トでのインスタンス名

inst_A/inst_B/control_reg (H)

フラ ッ ト化された階層レベルを示すのにもスラ ッシュ (/) が使用されるので、 明らかな違いはあ り ません。 メモ リ内のオブジェク ト をクエリする際に、 違いがはっき り します。次のコマンドでは、 F のネッ ト リ ス ト オブジェク トが返され、 H のネッ ト リ ス ト オブジェク トは返されません。

% get_cells -hierarchical *inst_B/control_reg% get_cells inst_A*control_reg

階層名の問題を回避するため、 次のよ うにするこ とをお勧めします。

• get_* コマンドを -hierarchical オプシ ョ ンなしで使用します。

• エラボレート済みデザインに表示されるすべての階層レベルを / を使用して示します。

階層オプシ ョ ンを使用しない例

次のコマンドは、 フラ ッ ト ネッ ト リ ス ト と階層ネッ ト リ ス トのどちらでも機能します。

% get_cells inst_A/inst_B/*_reg% get_cells inst_*/inst_B/control_reg

注意 : 階層セルでも同様に、合成を実行する と きに階層ピンに制約を設定しないでください。また、組み合わせロジックの演算子を接続するネッ トに制約を設定しないでください。 これらは LUT に結合され、 ネッ ト リ ス トからな くなる可能性があ り ます。

推奨 : 制約を変更したら XDC ファ イルを保存し、 エラボレート されたデザインを読み込み直して、 メモ リ内の制約と XDC ファ イルの制約が一致するよ うにしてください。合成後に、 メモ リ内の同じ合成 XDC を使用して合成済みデザインを読み込み、 [Report Timing Summary] を使用してタイ ミ ング解析を実行します。

詳細は、 『Vivado Design Suite ユーザー ガイ ド : デザイン解析およびクロージャ テクニッ ク』 (UG906) [参照 4] を参照して ください。

合成によ りデザインが変換されているため、合成前の制約の一部は正し く適用されない可能性があ り ます。 この問題を解決するには、 次を実行します。

1. 合成済みネッ ト リ ス トに適用する新しい XDC 構文を見つけます。

2. インプリ メンテーシ ョ ンのみに使用する制約を新しい XDC ファイルに保存します。

3. 合成のみに使用する合成制約を別の XDC ファ イルに移動します。

Page 33: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 33UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

インプリ メンテーシ ョ ン制約の作成合成済みネッ ト リ ス トが生成されたら、 インプ リ メ ンテーシ ョ ンに適用する XDC ファ イルまたは Tcl スク リプ ト と共にメモリに読み込みます。XDC を読み込んだと きにツールによ り表示される メ ッセージを見て、制約を確認し、適用できない制約を修正する必要があ り ます。

合成済みネッ ト リ ス トのオブジェク ト名が、エラボレート済みデザインの名前と異なる場合があ り ます。その場合は、正しい名前で制約を作成し直し、 インプリ メンテーシ ョ ンのみの XDC ファ イルに保存します。

すべての XDC ファ イルが正し く読み込まれたら、 次の目的でタイ ミ ング解析を実行できます。

• 入力および出力遅延などの欠けている制約を追加

• フォルス パス、 マルチサイクル パス、 小/ 大遅延制約などのタイ ミ ングの例外を追加

• パスが長いために違反が大き くなっているものを特定し、 RTL 記述を修正

合成に使用したのと同じ基本制約を使用し、 インプ リ メ ンテーシ ョ ン特定の新しい制約を保存する 2 つ目の XDCファ イルを作成できます。 物理制約およびコンフ ィギュレーシ ョ ン制約を別の XDC ファ イルに保存するこ と も可能です。

図 2-24 に、 ネッ ト リ ス ト ベースの XDC の作成手順を示します。

Page 34: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 34UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

インプリ メンテーシ ョ ンに進む前に、大きなタイ ミ ング違反がないこ とを確認する必要があ り ます。配置配線でほとんどのマイナーなタイ ミ ング違反は修正できますが、タイ ミ ング ク ロージャを不可能にするよ う な根本的なデザインの問題は修正できません。

推奨 : RTL を再確認して、 違反のあるパスのロジッ ク レベル数を削減したり、 ク ロ ッ ク ツ リーを簡潔にして専用クロッ ク リ ソースが使用されるよ うにして、関連するク ロ ッ ク間のスキューを 小限に抑えるよ うにして ください。合成属性を追加したり、 異なる合成オプシ ョ ンを使用するこ と も可能です。

詳細は、 『Vivado Design Suite ユーザー ガイ ド : 合成』 (UG901) [参照 5] を参照して ください。

X-Ref Target - Figure 2-24

図 2-24 : 合成済みデザインでの制約の作成

Page 35: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 35UG903 (v2014.3) 2014 年 10 月 31 日

第 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-25 に、 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-25

図 2-25 : XDC ファイルの適用範囲限定プロパティの設定例

Page 36: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 36UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

uart_tx_ctl.xdc の適用範囲を限定するプロパティを使用する同等の Tcl は、 次のとおりです。 この値は、 VivadoIDE で 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 instanceread_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 制約ファ イルの読み込みに使用されます。図 2-26および図 2-27 に、 この方法を使用して IP レベルの XDC を読み込んだと きの get_ports コマンドの処理例を示します。

Page 37: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 37UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

図 2-26 では、 IP 内に I/O バッファーがインスタンシエート され、 IP インターフェイス ピンがその階層に関係なく上位のポートに直接接続されています。 IP の XDC が適用される と、 get_ports コマンドの引数が自動的に 上位ポートに置き換えられます。

これによ り、 IP レベルに LOC または IOSTANDARD のよ う な物理制約を設定でき、 それが必要な 上位ポートに配置されるよ うにな り ます。 IP に対してデザインの 上位ポート名を指定する必要はあ り ません。

図 2-27 では IP に I/O バッファーが含まれないので、 IP インターフェイス ピンと 上位ポート間に I/O バッファーが挿入されます。この結果、XDC が適用されたと きに get_ports が IP インスタンス ピン (階層ピンなど) の get_pinsに変換されます。

この機能は、 IP のインターフェイスに制約を作成する際や、 上位デザインの名前を知らずにサブレベル モジュールを作成する際に有益です。

特定のインスタンスに範囲が限定されている XDC ファ イルに 上位ポートにのみ適用できる制約が含まれており、その IP インスタンスが 上位ポートに直接接続されていない場合は、 エラーが返されます。 たとえば、 次の制約は上位ポートのみに適用可能で、 階層ピンには適用できません。

• set_input_delay/set_output_delay

• set_property IOSTANDARD

X-Ref Target - Figure 2-26

図 2-26 : IP ポートの最上位ポートへの変換

X-Ref Target - Figure 2-27

図 2-27 : IP ポートの階層ピンへの変換

Page 38: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 38UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

XDC を使用した IP およびサブモジュールの制約 IP のパッケージ化機能を使用して IP を生成し、 Vivado の IP カタログから使用する際、 XDC 制約もパッケージに含めるこ とができます。 Vivado Design Suite の IP はプラグ アンド プレイであ り、 上位デザイン制約を完了するのに、制約を切り貼りするための IP のサンプル プロジェク トは必要あ り ません。 IP は、 スタンドアロンの 上位デザインと同様に、その IP 用に開発された XDC ファ イルと共にパッケージ化できます。IP カタログを使用して IP をプロジェク トにインスタンシエート した場合、 Vivado ツールで制約が適切に読み込まれます。

同様に、 デザインのサブモジュール用に制約を作成し、 プロジェク ト フローでは SCOPED_TO_REF/SCOPED_TO_CELLS XDC ファ イル プロパティを設定、 非プロジェク ト モードでは read_xdc -ref/-cells コマンドを使用する と、 IP コアと同じ制約適用範囲限定メカニズムを使用できます。

範囲を特定したクエリのガイド ライン

このフローを適切に使用するには、制約が IP またはサブモジュール インスタンスのみに適用されるよ うに XDC 制約を記述する必要があ り ます。 Vivado ツールでは、 35 ページの 「制約の適用範囲の限定」 で説明したよ うに、 クエ リ検索の範囲を特定の階層レベルに設定できます。 IP またはサブモジュール用に制約を作成する際は、 クエ リ コマンドの動作を理解しておく必要があ り ます。

• セル/ネッ ト /ピン オブジェク トのクエリは、指定されたインスタンスおよびそのサブモジュールに制限されます。

° get_cells/get_nets/get_pins <name pattern>

° オブジェク トの NAME プロパティは、 スコープに指定されたインスタンスではなく、 上位に対するオブジェク トの完全階層パスを示します。 NAME プロパティに対して get_* コマンドの -filter オプシ ョ ンを使用する場合は、 glob 文字列一致演算子を使用し、 * で開始するパターンを指定します。 次に例を示します。

get_nets -hierarchical -filter {NAME =~ *clk}

• get_ports は 上位ポート または階層ピンを返します。

• ネッ ト リ ス トのヘルパー コマンド も範囲が限定されます。

° all_ffs、 all_latches、 all_rams、 all_registers、 all_dsps、 all_hsios では、 現在のインスタンスに含まれるインスタンスのみが返されます。

• I/O ヘルパー コマンドは、 範囲が限定された XDC では使用できません。

° all_inputs、 all_outputs

• ク ロ ッ ク コマンドでは範囲は限定されず、 デザインのすべてのタイ ミ ング クロ ッ クが返されます。

° get_clocks、 all_clocks

• get_clocks -of_objects を使用する と、 上位およびローカルのクロ ッ ク オブジェク ト をクエリできます。

° 現在のインスタンスに供給されるク ロ ッ クを取得するには、 get_clocks -of_objects [get_ports<interfacePinName>] を使用します。

° 現在のインスタンス内で自動的に生成されたクロッ クを取得するには、 get_clocks -of_objects [get_pins <instName/outPin>] (instName はクロッ ク ジェネレーター インスタンス) を使用します。

• -of_objects オプシ ョ ンを使用する と、 デザインに含まれるすべてのオブジェク ト を検索できます。

° 例 : get_pins -leaf -of_objects [get_nets local_net]

• 現在のインスタンス インターフェイスのネッ トに接続されている 上位ポート をクエリできます。

° get_ports -of_objects [get_nets <scoped_instance_net>]

• IP/サブモジュール インターフェイス ピンはクエリできません。

° get_pins clk を実行する と、 エラーが返されます。

• パス ト レース コマンド も範囲が限定されます。

° all_fanin/all_fanout は指定された範囲でのみ実行され、 その境界を越えては実行されません。

Page 39: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 39UG903 (v2014.3) 2014 年 10 月 31 日

第 2 章 : 制約の入力方法

• 特定のクロッ クに接続されているすべてのセルをクエリするには、 all_registers コマンドを -clock オプシ ョ ンを指定して使用するのではなく、 get_cells/get_pins/get_nets コマンドで も特定的なパターンを指定します。制約する必要があるのが数個のオブジェク トであるのに、多数のオブジェク ト を含むリ ス トが返される と、 実行時間が長くなる可能性があ り ます。

範囲を限定したタイ ミング制約のガイドライン

上位デザインに悪影響を与えないよ うにするには、 IP またはサブモジュールに対して記述したタイ ミ ング制約が、一部のクロッ ク定義を除き、 その IP の境界を越えて伝搬されないよ うにする必要があ り ます。

たとえば、 IP の XDC に IP に入力される 2 つのクロ ッ ク ネッ ト間にフォルス パス制約を設定する と します。 IP には非同期クロ ッ ク境界に適切な回路が含まれていても、 デザインの残りの部分には含まれていない場合があ り ます。 2つのクロッ クが関連しており、ハード ウェアを正し く機能させるために、デザインの残りの部分でこれらのクロ ッ クのタイ ミ ングを解析する必要がある場合、 これは問題とな り ます。

また、 第 7 章 「XDC の優先順位」 で説明しているよ うに、 IP の XDC ファ イルで定義されたタイ ミ ング例外が 上位制約よ り優先されてしま う場合があ り ます。 このよ う な状況を回避するため、 IP のローカル ネッ ト リ ス ト オブジェク トに制約を適用するこ とをお勧めします。 2 つのグローバル ク ロ ッ ク間のフォルス パスの場合は、 IP 内の開始点セルのグループから IP 内の終点セルのグループに設定します。 この方法は、 グローバル例外に対し、 ポイン ト ツーポイン ト例外と呼ばれます。

IP/サブモジュールの XDC に推奨される制約設定方法は、 次のとおりです。

• 次の箇所に定義される場合にのみ、 コアの XDC 内でクロ ッ クを作成します。

° IP 内にインスタンシエート された入力バッファーに直接接続されるポート

° IP 内のド ライバー ピン (GTX 出力など)

• ク ロ ッ クをローカルで再定義し直すのではなく、 get_clocks -of_objects コマンドを使用して 上位クロッ クをクエリ します。

• ポートが 上位ポートに直接接続され、 I/O バッファーが IP 内にインスタンシエート されている場合にのみ、入力および出力遅延を指定します。

• IP 内に制限されていない 2 つのクロ ッ クにタイ ミ ング例外を定義しないよ うにします。

Page 40: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 40UG903 (v2014.3) 2014 年 10 月 31 日

第 3 章

タイ ミ ング チェ ックの基礎デザインにタイ ミ ング制約を追加する前に、 タイ ミ ング解析の基本と用語を理解しておく必要があ り ます。 この章では、 Vivado® 統合設計環境 (IDE) のタイ ミ ング エンジンで使用される主要な概念を説明します。

用語• ソース エッジ : データを送信するソース クロ ッ クのアクティブ エッジ

• デスティネーシ ョ ン エッジ : データを受信するデスティネーシ ョ ン クロ ッ クのアクティブ エッジ

• セッ ト アップ要件 : も厳しいセッ ト アップ制約を定義するソース エッジとデスティネーシ ョ ン エッジの関係

• セッ ト アップ関係 : タイ ミ ング解析ツールで検証されるセッ ト アップ チェッ ク

• ホールド要件 : も厳しいホールド制約を定義するソース エッジとデスティネーシ ョ ン エッジの関係

• ホールド関係 : タイ ミ ング解析ツールで検証されるホールド チェッ ク

タイ ミ ング パスタイ ミ ング パスは、 デザインのインスタンス間の接続に基づいて定義されます。 デジタル デザインでは、 タイ ミ ング パスは同じクロ ッ クまたは異なるクロ ッ クで制御される順次エレメン トのペアで形成されます。

一般的なタイ ミング パス

デザインに含まれる も一般的なパスは、 次のとおりです。

• 「入力ポートから内部シーケンシャル セルまでのパス」

• 「シーケンシャル セル間の内部パス」

• 「内部シーケンシャル セルから出力ポート までのパス」

• 「入力ポートから出力ポート までのパス」

入力ポートから内部シーケンシャル セルまでのパス

入力ポートから内部シーケンシャル セルまでのパスでは、 データが次のよ うに伝搬されます。

• デバイスの外部からボード上のクロ ッ クによ り入力されます。

• 入力遅延 (SDC 定義) 後にデバイス ポートに到達します。

• デバイスの内部ロジッ クを介して、デスティネーシ ョン クロ ッ クが供給されるシーケンシャル セルに到達します。

Page 41: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 41UG903 (v2014.3) 2014 年 10 月 31 日

第 3 章 : タイ ミング チェ ックの基礎

シーケンシャル セル間の内部パス

シーケンシャル セル間の内部パスでは、 データが次のよ うに伝搬されます。

• デバイス内でソース クロ ッ クが供給されるシーケンシャル セルから駆動されます。

• 内部ロジッ クを介して、 デスティネーシ ョ ン クロ ッ クが供給されるシーケンシャル セルに到達します。

内部シーケンシャル セルから出力ポートまでのパス

内部シーケンシャル セルから出力ポート までのパスでは、 データが次のよ うに伝搬されます。

• デバイス内でソース クロ ッ クが供給されるシーケンシャル セルから駆動されます。

• 内部ロジッ クを介して出力ポートに到達します。

• 出力遅延 (SDC 定義) 後にボード上のクロ ッ クによ り受信されます。

入力ポートから出力ポートまでのパス

入力ポートから出力ポート までのパスでは、 データはデバイス上をラ ッチされずに伝搬されます。 これらのパスは、in-to-out パスと も呼ばれます。入力および出力遅延基準クロ ッ ク と しては、仮想クロ ッ クまたはデザイン ク ロ ッ クを使用できます。

タイ ミ ング パスの例

図 3-1 に、 前述のパスを示します。 この例では、 デザイン ク ロ ッ ク CLK0 を DIN および DOUT 遅延制約のボード クロ ッ ク と して使用できます。

X-Ref Target - Figure 3-1

図 3-1 : タイ ミング パスの例

Page 42: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 42UG903 (v2014.3) 2014 年 10 月 31 日

第 3 章 : タイ ミング チェ ックの基礎

タイ ミ ング パスのセクシ ョ ン

各タイ ミ ング パスは、 次の 3 つのセクシ ョ ンから構成されます。

• 「ソース ク ロ ッ ク パス」

• 「データ パス」

• 「デスティネーシ ョ ン ク ロ ッ ク パス」

ソース クロック パス

ソース クロ ッ ク パスは、 ソース ク ロ ッ クがソース ポイン ト (通常は入力ポート ) から ソース シーケンシャル セルのクロッ ク ピンまで伝搬されるパスです。入力ポートから開始するタイ ミ ング パスには、 ソース クロ ッ ク パスはあ りません。

データ パス

データ パスは、 パスの開始点とパスの終点の間で、 データが伝搬されるタイ ミ ング パスの部分です。 パスの開始点はシーケンシャル セルのクロ ッ ク ピンまたはデータ入力ポートで、 パスの終点はシーケンシャル セルのデータ入力ピンまたはデータ出力ポートです。

デスティネーシ ョ ン クロック パス

デスティネーシ ョ ン クロ ッ ク パスは、デスティネーシ ョ ン ク ロ ッ クがソース ポイン ト (通常は入力ポート ) からデスティネーシ ョ ン シーケンシャル セルのクロ ッ ク ピンまで伝搬されるパスです。出力ポートで終了するタイ ミ ング パスには、 デスティネーシ ョ ン クロ ッ ク パスはあ り ません。 図 3-2 に、 典型的なタイ ミ ング パスのこれら 3 つのセクシ ョ ンを示します。

ソース エッジおよびデステ ィネーシ ョ ン エッジ

データは、 シーケンシャル セルまたはポート間を次のよ うに転送されます。

• ソース クロ ッ クのエッジの 1 つ (ソース エッジ) で送信されます。

• デスティネーシ ョ ン クロ ッ クのエッジの 1 つ (デスティネーシ ョ ン エッジ) で受信されます。

典型的なタイ ミ ング パスでは、 データは 1 ク ロ ッ ク周期の間に 2 つのシーケンシャル セル間を転送されます。 その場合、 ソース エッジは 0ns、 デスティネーシ ョ ン エッジは 1 周期後になり ます。

次のセクシ ョ ンに、 ソース エッジおよびデスティネーシ ョ ン エッジによ り タイ ミ ング解析用にセッ ト アップ関係とホールド関係を定義する方法を説明します。

X-Ref Target - Figure 3-2

図 3-2 : 典型的なタイ ミング パス

Page 43: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 43UG903 (v2014.3) 2014 年 10 月 31 日

第 3 章 : タイ ミング チェ ックの基礎

セッ トアップおよびホールド解析Vivado IDE では、 タイ ミ ング パスの終点のスラ ッ クが解析およびレポート されます。 スラ ッ ク とは、 データ所要時間とデータがパスの終点に到着する時間の差です。 パス上のセッ ト アップ関係とホールド関係の両方が検証されると、 データは 2 つのレジスタ間を正し く転送されます。 つま り、 セッ ト アップおよびホールドのスラ ッ クが両方と も正の場合、 パスはタイ ミ ングの面では正し く機能する と考えられます。

セッ トアップ チェ ック

セッ ト アップ チェッ クは、2 つのクロ ッ ク間のワース ト セッ ト アップ関係に対してのみ実行されます。デフォルトでは、 これはソース エッジとデスティネーシ ョ ン エッジの 小の正の差に対応します。 この関係を特定し、 パス要件を算出するため、 タイ ミ ング エンジンは次を実行します。

1. ソース ク ロ ッ ク とデスティネーシ ョ ン ク ロ ッ クの共通周期を検出します。 共通周期は、 時間 0ns の後、 ソースク ロッ ク とデスティネーシ ョ ン クロ ッ クが同じ位相アライ メン トになる時間です。

2. 共通周期の時間内で、アクティブなデスティネーシ ョ ン エッジと ソース エッジの 小の正の差を特定します。この差は、 セッ ト アップ パス要件と呼ばれます。

重要 : 両方のクロ ッ クの 1,000 サイ クルの間に共通周期が見つからない場合は、これらの 1000 サイクルにおける 悪のセッ ト アップ関係がタイ ミ ング解析に使用されます。 これら 2 つのクロ ッ クは、共通周期のないクロ ッ ク と呼ばれます。 解析は、 ワース ト状況に対応しないと考えられます。 これらのクロ ッ ク間のパスを確認し、 その有効性を評価し、非同期パス と して処理できるかど うかを判断する必要があ り ます。詳細は、第 4 章の 「クロ ッ ク グループ」 を参照して ください。

セッ ト アップ パス要件の例

異なるク ロッ クの立ち上がりエッジで動作する 2 つのレジスタの間のパスを考えてみます。このパスのソース エッジとデスティネーシ ョ ン エッジは、 クロ ッ クの立ち上がりエッジのみです。 クロ ッ クは次のよ うに定義されます。

• clk0 の周期は 6ns です。

• clk1 の周期は 4ns です。

図 3-3 では、 セッ ト アップ解析の基準となるソース クロ ッ ク エッジおよびデスティネーシ ョ ン ク ロ ッ ク エッジが 2つあり ます (setup(1) および setup(2))。

clk0 から clk1 までの 小の正の差は 2ns で、 これは setup(2) に対応します。

ソース ク ロ ッ ク エッジ時間 : 0ns + 1 * T(clk0) = 6nsデスティネーシ ョ ン ク ロ ッ ク エッジ時間 : 0ns + 2 * T(clk1) = 8nsセッ ト アップ パス要件 = デスティネーシ ョ ン エッジ時間 - ソース エッジ時間 = 2ns

X-Ref Target - Figure 3-3

図 3-3 : セッ トアップ パス要件の例

Page 44: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 44UG903 (v2014.3) 2014 年 10 月 31 日

第 3 章 : タイ ミング チェ ックの基礎

パス要件を算出する際、 次の 2 つの重要な考慮事項があ り ます。

1. ク ロ ッ ク エッジは理想的なものであ り、 クロ ッ ク ツ リーの挿入遅延は考慮されていません。

2. デフォルトでは、 位相シフ トが設定されていなければ、 ク ロ ッ クは時間 0 で位相が揃えられます。 非同期クロ ックには、 既知の位相関係があ り ません。 非同期クロッ ク間のパスの解析には、 デフォルトの推定値が使用されます。 非同期クロッ クの詳細は、 次のセクシ ョ ンを参照して ください。

セッ トアップ解析でのデータ所要時間

セッ ト アップ解析でのデータ所要時間は、デスティネーシ ョ ン セルでデータを正し くキャプチャできるよ うにするために、 データが安定した状態になっていなければならない時間です。 この値は、 次の要素に基づきます。

• デスティネーシ ョ ン クロ ッ ク エッジ時間

• デスティネーシ ョ ン クロ ッ ク遅延

• ソースおよびデスティネーシ ョ ン クロ ッ クのばらつき

• 終点のセッ ト アップ タイム

セッ トアップ解析でのデータ到着時間

セッ ト アップ解析でのデータ到着時間は、データがソース ク ロ ッ クによ り送信されてから、パスの終点で安定した状態になるまでにかかる時間です。 この値は、 次の要素に基づきます。

• ソース クロ ッ ク エッジ時間

• ソース クロ ッ ク遅延

• データパス遅延

データパス遅延には、 開始点から終点までの、 すべてのセルおよびネッ ト遅延が含まれます。

Vivado IDE のタイ ミ ング レポート では、 セッ ト アップ タイムがデータパスの一部と して報告されます。 そのため、データ到着時間およびデータ所要時間は、 次の式で算出されます。

データ所要時間 (セッ ト アップ) = デスティネーシ ョ ン エッジ時間+ デスティネーシ ョ ン クロ ッ ク パス遅延- クロ ッ クのばらつき - セッ ト アップ タイム

データ到着時間 (セッ ト アップ) = ソース エッジ時間+ ソース クロ ッ ク パス遅延+ データパス遅延

セッ ト アップ スラ ッ クは、 所要時間と到着時間の差です。

スラ ッ ク (セッ ト アップ) = データ所要時間 – データ到着時間

レジスタの入力データ ピンのセッ ト アップ スラ ッ クが負の場合、 レジスタに不正な値が取り込まれ、 メ タステーブル状態になる可能性があ り ます。

Page 45: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 45UG903 (v2014.3) 2014 年 10 月 31 日

第 3 章 : タイ ミング チェ ックの基礎

ホールド チェ ック

ホールド チェッ ク (ホールド関係) は、 セッ ト アップ関係と直接関連しています。 セッ ト アップ解析は、 悪の条件でもデータが正し く受信されるかど うかを検証しますが、 ホールド関係では次を検証します。

• セッ ト アップ ソース エッジで、セッ ト アップ デスティネーシ ョ ン エッジの前にアクティブ エッジでラ ッチ可能なデータが送信されない。

• セッ ト アップ ソース エッジの後の次のアクティブ ソース ク ロ ッ ク エッジで、 セッ ト アップ デスティネーシ ョン エッジでラ ッチ可能なデータが送信されない。

ホールド解析では、 2 つのクロッ ク間のワース ト ホールド関係のみがレポート されます。 ワース ト ホールド関係が、ワース ト セッ ト アップ関係に関連付けられている とは限り ません。 タイ ミ ング エンジンでは、 可能なすべてのセット アップ関係とそれに対応するホールド関係を評価し、 ワース ト ホールド関係を特定する必要があ り ます。

各セッ ト アップ関係に対し、 次の要件を定義する 2 つのホールド関係があ り ます。

• 要件 (a) : 前のデスティネーシ ョ ン エッジから ソース エッジを引いた差

• 要件 (b) : デスティネーシ ョ ン エッジから次のソース エッジを引いた差

すべての要件 (a) および要件 (b) 値のうち 大のものがホールド要件とな り、 対応するク ロ ッ ク エッジがホールド解析に使用されます。

ホールド パス要件の例

43 ページの 「セッ ト アップ パス要件の例」 と同じ ク ロ ッ クを考えます。 セッ ト アップ解析では、 可能なエッジの組み合わせは 2 つのみです。

セッ ト アップ パス要件 (S1) = 1*T(clk1) - 0*T(clk0) = 4nsセッ ト アップ パス要件 (S2) = 2*T(clk1) - 1*T(clk0) = 2ns

対応するホールド要件は次のとおりです。

セッ ト アップ S1 :ホールド パス要件 (H1a) = (1-1)*T(clk1) - 0*T(clk0) = 0nsホールド パス要件 (H1b) = 1*T(clk1) - (0+1)*T(clk0) = -2ns

セッ ト アップ S2 :ホールド パス要件 (H2a) = (2-1)*T(clk1) - 1*T(clk0) = -2nsホールド パス要件 (H2b) = 2*T(clk1) - (1+1)*T(clk0) = -4ns

大ホールド要件は 0ns で、 ソース ク ロ ッ ク とデスティネーシ ョ ン ク ロ ッ ク両方の 初の立ち上がりエッジに対応します。

図 3-4 に、 セッ ト アップ チェッ ク エッジと関連するホールド チェッ クを示します。

この例では、 終的なホールド要件は も厳しいセッ ト アップ要件から導かれたものではあ り ません。 これは、 も困難なホールド要件を見つけるために、 すべての可能なセッ ト アップ エッジが考慮されたからです。

X-Ref Target - Figure 3-4

図 3-4 : ホールド パス要件の例

Page 46: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 46UG903 (v2014.3) 2014 年 10 月 31 日

第 3 章 : タイ ミング チェ ックの基礎

セッ ト アップ解析と同様、 データ所要時間とデータ到着時間は、 次の要素に基づいて算出されます。

• ソース クロ ッ ク エッジ時間

• デスティネーシ ョ ン クロ ッ ク エッジ時間

• ソースおよびデスティネーシ ョ ン クロ ッ ク遅延

• ク ロ ッ クのばらつき

• データパス遅延

• 終点のホールド タイム

データ所要時間 (ホールド) = デスティネーシ ョ ン クロ ッ ク エッジ時間+ デスティネーシ ョ ン クロ ッ ク パス遅延+ クロ ッ クのばらつき + ホールド タイム

データ到着時間 (ホールド) = ソース クロ ッ ク エッジ時間+ ソース クロ ッ ク パス遅延+ データパス遅延

ホールド スラ ッ クは、 所要時間と到着時間の差です。

スラ ッ ク (ホールド) = データ到着時間 – データ所要時間

ホールド スラ ッ クが正の場合、 悪の条件でもデータが間違ったクロ ッ ク エッジによ り受信されるこ とはあ り ません。ホールド スラ ッ クが負の場合、不正なデータが受信されたり、 レジスタがメ タステーブル状態になる可能性があり ます。

リカバリおよびリムーバル解析リ カバリおよびリ ムーバル タイ ミ ング チェッ クはセッ ト アップおよびホールド チェッ ク と似ていますが、 セッ トやク リ アなどの非同期ピンに適用されます。

非同期リセッ ト を持つレジスタの場合、 次のよ うにな り ます。

• リ カバリ時間は、新しいデータを安全に取り込むために必要な、非同期リセッ ト信号が非アクティブ ステートにト グルされてから次のアクティブ クロ ッ ク エッジまでの 小時間です。

• リ ムーバル時間は、 非同期リセッ ト信号を問題なく非アクティブ ステートに ト グルできる、 アクティブ ク ロ ック エッジからの 小時間です。

次に、 これらのチェッ クでのスラ ッ クを算出する式を示します。

リカバリ チェ ック

次に、 リ カバリ スラ ッ クを算出する式を示します。

所要時間 ( リ カバリ ) = デスティネーシ ョ ン クロ ッ ク エッジ時間+ デスティネーシ ョ ン クロ ッ ク パス遅延- クロ ッ クのばらつき - リ カバリ タイム

到着時間 ( リ カバリ ) = ソース クロ ッ ク エッジ時間+ ソース クロ ッ ク パス遅延+ データパス遅延

スラ ッ ク ( リ カバリ ) = 所要時間 – 到着時間

Page 47: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 47UG903 (v2014.3) 2014 年 10 月 31 日

第 3 章 : タイ ミング チェ ックの基礎

リムーバル チェ ック

次に、 リ ムーバル スラ ッ クを算出する式を示します。

所要時間 ( リ ムーバル) = デスティネーシ ョ ン クロ ッ ク エッジ時間+ デスティネーシ ョ ン クロ ッ ク パス遅延+ クロ ッ クのばらつき + リ ムーバル時間

到着時間 ( リ ムーバル) = ソース クロ ッ ク エッジ時間+ ソース クロ ッ ク パス遅延+ データパス遅延

スラ ッ ク ( リ ムーバル) = 到着時間 – 所要時間

負のリ カバリ スラ ッ クまたはリ ムーバル スラ ッ クは、 レジスタがメ タステーブル状態になり、 デザインに不明な電気レベルが伝搬される可能性があるこ とを示します。

Page 48: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 48UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章

クロックの定義

クロックについてデジタル デザインでは、クロ ッ クがレジスタからレジスタにデータを転送するための時間の基準とな り ます。Vivado®

統合設計環境 (IDE) のタイ ミ ング エンジンは、 ク ロ ッ クの特性を使用してタイ ミ ング パス要件を算出し、 スラ ッ クを算出してデザインのタイ ミ ング マージンをレポート します。

詳細は、 第 3 章 「タイ ミ ング チェッ クの基礎」 を参照して ください。

タイ ミ ング パスを正確に 大限に網羅するため、ク ロ ッ クを正し く定義する必要があ り ます。ク ロ ッ クは次の特性によ り定義されます。

• そのツ リー ルートのド ラ イバー ピンまたはポート (ソース ポイン ト ) で定義されます。

• エッジは、 周期と波形の特性で表現されます。

• 周期はナノ秒 (ns) で定義し、 波形が繰り返す間隔に対応します。

• 波形は、 クロ ッ ク周期内の立ち上がりエッジおよび立ち下がりエッジの絶対時間 (ns) のリ ス トです。波形のリ ストには偶数個の値を含める必要があ り、 初の値は 初の立ち上がりエッジを示します。指定しない限り、デューティー サイクルはデフォルトで 50% になり、 位相シフ トは 0ns になり ます。

図 4-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 4-1

図 4-1 : クロック波形の例

Page 49: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 49UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

伝搬されたクロック

周期および波形は、 ク ロ ッ クの理想的な特性を表します。 ク ロ ッ クが FPGA デバイスに入力され、 ク ロ ッ ク ツ リーを介して伝搬される と、 ク ロ ッ ク エッジに遅延が発生し、 ノ イズおよびハードウェアの動作によ り変動する可能性があ り ます。 これらはクロッ ク ネッ ト ワーク レイテンシおよびクロ ッ クのばらつき と呼ばれます。

ク ロ ッ クのばらつきには、 次のものが含まれます。

• ク ロ ッ ク ジッター (62 ページの 「ク ロ ッ ク ジッター」 参照)

• 位相エラー

• ユーザーが指定したその他のばらつき (62 ページの 「その他のクロ ッ クのばらつき」 参照)

Vivado IDE では、 ク ロ ッ クはデフォルトでレイテンシおよびばらつきを含む伝搬されたクロ ッ ク と して処理され、 クロ ッ ク ツ リー挿入遅延およびばらつきを含む正確なスラ ッ ク値が算出されます。

専用ハードウェア リソース

ザイ リ ンクス FPGA デバイスの専用ハード ウェア リ ソースによ り、 多数のデザイン クロ ッ クが効率的にサポート されます。 これらのク ロ ッ クは、 通常ボード上の外部コンポーネン トによ り生成され、 入力ポートからデバイスに供給されます。

ク ロ ッ クは、 ク ロ ッ ク調整ブロ ッ ク と呼ばれる次のプリ ミ ティブでも生成できます。

• MMCM

• PLL

• BUFR

LUT やレジスタなどの通常のセルでクロ ッ クを変換するこ と も可能です。

次のセクシ ョ ンに、 ク ロ ッ クの生成元別にクロ ッ クを定義するのに 適な方法を説明します。

プライマリ クロックプライマ リ クロ ッ クは、 次のいずれかから供給されるボード クロ ッ クです。

• 入力ポート

• ギガビッ ト ト ランシーバーの出力ピン (再生されたクロ ッ クなど)

プライマ リ クロ ッ クは、 create_clock コマンドでのみ定義できます。

プライマ リ クロ ッ クは、ネッ ト リ ス ト オブジェク トに接続する必要があ り ます。このネッ ト リ ス ト オブジェク トは、すべてのクロ ッ ク エッジの発信元となるポイン トで、 こ こから ク ロ ッ クがク ロ ッ ク ツ リーのダウンス ト リームに伝搬されます。 Vivado IDE でスラ ッ ク値の算出に使用される ク ロ ッ ク レイテンシおよびばらつきを求める と きに、 プライマ リ クロ ッ クのソース ポイン トによ り時間 0 が決ま り ます。

重要 : Vivado IDE では、プライマ リ クロ ッ クが定義されたポイン トのアップス ト リームにあるセルからのクロ ッ ク ツリー遅延は無視されます。デザインの中央にあるピンにプライマ リ ク ロ ッ クを定義する と、タイ ミ ング解析では一部のレイテンシのみが使用されます。 これは、 このク ロ ッ クがデザイン内のその他の関連クロ ッ ク と通信している場合に、 ク ロ ッ ク間のスキュー値 (そして結果的にスラ ッ ク値) が不正確となるので問題です。

まず、 プライマ リ ク ロ ッ クを定義する必要があ り ます。 プライマ リ ク ロ ッ クは、 多くのタイ ミ ング制約の基準となり ます。

Page 50: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 50UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

プライマリ クロッ クの例

図 4-2 では、 ボード ク ロ ッ クはポート sysclk からデバイスに入力され、 入力バッファーおよびクロ ッ ク バッファーを介してパス レジスタに到達します。

• 周期 : 10ns

• デューティ サイクル : 50%

• 位相シフ ト : なし

推奨 : ボード ク ロ ッ クは、 ク ロ ッ ク バッファーの出力ではなく入力ポートで定義します。

対応するザイ リ ンクス デザイン制約 (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]

図 4-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]

X-Ref Target - Figure 4-2

図 4-2 : プライマリ クロックの例

Page 51: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 51UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

仮想クロック仮想クロッ クは、 デザインのどのネッ ト リ ス ト エレ メン トにも物理的に接続されていないクロ ッ クです。

仮想クロッ クを定義するには、 create_clock コマンドをソースを指定せずに使用します。

一般的に、 仮想クロッ クは次のよ うな場合に入力遅延および出力遅延を定義するのに使用されます。

• 外部デバイス I/O の基準クロ ッ クがデザイン ク ロ ッ クのいずれでもない。

• FPGA I/O パスが内部で生成されたクロッ クに関連付けられており、 そのク ロ ッ クを派生したボード ク ロ ッ クを基準にして適切にタイ ミ ング解析できない。

注記 : この状況は 2 つの周期の比が整数ではない場合に発生し、 タイ ミ ング パス要件が非常に厳し くなったり、非現実的なものになったりするこ とがあ り ます。

• 内部クロッ クの特性を変更せずに、 I/O 遅延制約に関連するクロ ッ クに異なるジッ ターおよびレイテンシを変更する場合。

た と えば、 ク ロ ッ ク clk_virt は周期が 10ns で、 ネ ッ ト リ ス ト オブジェ ク ト に関連付けられていない と し ます。[<objects>] 引数は指定しません。 この場合、 -name の指定が必須になり ます。

create_clock -name clk_virt -period 10

入力および出力遅延制約で使用する前に、 仮想クロ ッ クを定義する必要があ り ます。

X-Ref Target - Figure 4-3

図 4-3 : GT プライマリ クロックの例

Page 52: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 52UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

生成クロックこのセクシ ョ ンでは、 生成クロ ッ クについて説明します。 次の内容が含まれます。

• 「ユーザー定義の生成クロ ッ ク」

• 「自動的に派生されたクロ ッ ク」

• 「自動生成クロ ッ クの名前の変更」

生成クロックについて

生成クロッ クは、 MMCM などのクロ ッ ク調整ブロ ッ ク と呼ばれる特別なセルまたはユーザー ロジッ クによ り駆動されます。

生成クロッ クは、マスター ク ロ ッ クに関連付けられています。create_generated_clock コマンドでは、マスタークロッ クの開始点が考慮されます。 次のクロ ッ クをマスター クロ ッ ク と して使用できます。

• プライマ リ クロ ッ ク

• 別の生成クロッ ク

生成クロッ クのプロパティは、マスター ク ロ ッ クから直接導出されます。周期または波形を指定する代わりに、マスター クロ ッ クが調整回路でどのよ うに変換されるかを記述します。

マスター クロ ッ ク と生成クロ ッ クの関係には、 次のものを使用できます。

• 単純な周波数の分周

• 単純な周波数の逓倍

• 周波数の分周と逓倍の組み合わせて整数以外の比を生成 (通常 MMCM または PLL を使用)

• 位相シフ ト または波形の反転

• デューティ サイクルの変換

• 上記すべての組み合わせ

推奨 : まず、すべてのプライマ リ ク ロ ッ クを定義してください。生成クロ ッ クを定義するには、プライマ リ ク ロ ッ クが必要です。

ユーザー定義の生成クロック

ユーザー定義の生成クロッ クは、 次のよ うなク ロ ッ クです。

• create_generated_clock コマンドで定義されている。

• ネッ ト リ ス ト オブジェク ト (理想的にはクロ ッ ク ツ リーのルート ピン) に接続されている。

-source オプシ ョ ンを使用してマスター ク ロ ッ クを指定して ください。マスター ク ロ ッ クが伝搬されるピンまたはポート を指定します。 一般的には、 マスター クロ ッ クのソース ポイン ト または生成クロッ クのソース セルの入力クロッ ク ピンが使用されます。

重要 : -source オプシ ョ ンでは、 ピンまたはポート ネッ ト リ ス ト オブジェク トのみを指定できます。 クロ ッ ク オブジェク トは指定できません。

Page 53: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 53UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

例 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 pointcreate_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 \[get_pins REGA/Q]

# Option 2: master clock source is the REGA clock pincreate_generated_clock -name clkdiv2 -source [get_pins REGA/C] -divide_by 2 \[get_pins REGA/Q]

例 2 : -edges オプシ ョ ンを使用した 2 分周

-divide_by オプシ ョ ンの代わりに、 -edges オプシ ョ ンを使用して、 マスター ク ロ ッ クのエッジに基づいて生成クロ ッ クの波形を直接定義できます。 引数はマスター ク ロ ッ ク エッジのインデッ クスの リ ス トで、 生成クロ ッ クのエッジの時間位置を立ち上がり ク ロ ッ ク エッジから開始して定義します。

次の例では、 「例 1 : 2 分周」 の生成クロ ッ クを -edges オプシ ョ ンを使用して定義しています。

# waveform specified with -edges instead of -divide_bycreate_generated_clock -name clkdiv2 -source [get_pins REGA/C] -edges {1 3 5} \[get_pins REGA/Q]

X-Ref Target - Figure 4-4

図 4-4 : 生成クロックの例 1

Page 54: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 54UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

例 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]

# 初の立ち上がりエッジ : 0ns + 2.5ns = 2.5ns# 立ち下がりエッジ : 5ns + 0ns = 5ns# 2 番目の立ち上がりエッジ : 10ns + 2.5ns = 12.5ns

注記 : -edge_shift の値は、 正の場合と負の場合があ り ます。

X-Ref Target - Figure 4-5

図 4-5 : 生成クロックの例 3

Page 55: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 55UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

例 4 : -divide_by と -multiply_by オプシ ョ ンを同時に使用

Vivado IDE では、 -divide_by と -multiply_by オプシ ョ ンを同時に指定できます。 これは、 標準 SDC (SynopsysDesign 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 とな り ます。

ヒン ト : 名前のわかっていない自動生成クロッ クをクエリするには、get_clocks -of_objects <pin/port/net>を使用します。 このコマンドは、 クロ ッ ク名の変更にかかわらず、 制約またはスク リプ トで使用できます。

X-Ref Target - Figure 4-6

図 4-6 : 自動生成クロックの例

Page 56: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 56UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

ローカル ネッ ト名

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 コマンドに使用する と、 生成クロ ッ クの名前は変更されません。 指定の特性を持つクロッ クが新たに生成されます。

Page 57: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 57UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

制限

• 自動的に派生されるク ロ ッ クは、 ク ロ ッ ク調整ブロ ッ ク (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 : clkfbout_clk_coreMaster Source : clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1Master Clock : clk_pin_pMultiply By : 1Generated Sources : {clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKFBOUT}

Generated Clock : clk_rx_clk_coreMaster Source : clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1Master Clock : clk_pin_pMultiply By :1Generated Sources : {clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT0}

Generated Clock : clk_tx_clk_coreMaster Source : clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1Master Clock : clk_pin_pEdges : {1 2 3}Edge Shifts : {0.000 0.500 1.000}Generated Sources : {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]

Page 58: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 58UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

名前を変更した後の report_clocks の出力は、 次のよ うにな り ます。

====================================================Generated Clocks====================================================Generated Clock : clkfboutMaster Source : clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1Master Clock : clk_pin_pMultiply By : 1Generated Sources : {clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKFBOUT}

Generated Clock : clk_rxMaster Source : clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1Master Clock : clk_pin_pMultiply By : 1Generated Sources : {clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT0}

Generated Clock : clk_txMaster Source : clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1Master Clock : clk_pin_pEdges : {1 2 3}Edge Shifts : {0.000 0.500 1.000}Generated Sources : {clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT1}

クロック グループこのセクシ ョ ンでは、 ク ロ ッ ク グループについて説明します。 次の内容が含まれます。

• 「ク ロ ッ ク グループについて」

• 「ク ロ ッ クのカテゴ リ 」

• 「非同期クロ ッ ク グループ」

• 「排他的なクロ ッ ク グループ」

クロック グループについて

Vivado IDE では、 クロ ッ ク グループ制約またはフォルス パス制約を指定していない限り、デフォルトでデザインに含まれるすべてのクロッ ク間のパスのタイ ミ ングが解析されます。set_clock_groups コマンドを使用する と、 クロ ック グループ間のタイ ミ ング解析がディスエーブルになり ます。 同じグループ内のクロ ッ ク間のタイ ミ ング解析はディスエーブルになり ません。 set_false_path 制約とは異なり、 クロ ッ ク間の両方向でタイ ミ ングが無視されます。

[Schematic] ウ ィンド ウまたは [Report Clock Networks] コマンドを使用してク ロ ッ ク ツ リーのト ポロジを表示し、どのク ロ ッ ク間のタ イ ミ ング解析をディ スエーブルにする必要があるかを確認して く ださい。 また、 [Report ClockInteraction] コマンドを使用して、 2 つのクロ ッ ク間の既存の制約を確認したり、 同じプライマ リ ク ロ ッ クを共有しているか (既知の位相関係がある ) を判断したり、 共通周期のないクロ ッ クを特定できます。

注意 : 2 つのクロ ッ ク間のタイ ミ ング解析を無視しても、 それらのクロ ッ ク間のパスがハードウェアで正し く機能する とは限り ません。 メ タステーブル状態にならないよ うにするため、 これらのパスに再同期化回路または非同期データ転送プロ ト コルがあるこ とを確認して ください。

Page 59: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 59UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

クロックのカテゴリ

このセクシ ョ ンでは、 次のクロ ッ クのカテゴ リについて説明します。

• 「同期クロ ッ ク」

• 「非同期クロ ッ ク」

• 「共通周期のないクロ ッ ク」

同期クロック

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 つのクロッ クにはクロッ クツ リー ルートでは既知の位相関係があり ますが、 それらの波形のためタイ ミ ング解析を正し く実行できません。

非同期クロッ ク と同様、 スラ ッ クの算出は通常どおりであるよ うに見えますが、 値は確実なものではあ り ません。 そのため、 共通周期のないクロ ッ クは通常、 非同期クロッ ク と同様に処理されます。 非同期クロ ッ クおよび共通周期のないクロッ クは、 制約の設定およびクロ ッ ク ド メ インをまたぐ回路では同様に扱う必要があ り ます。

Page 60: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 60UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

非同期クロック グループ

非同期クロッ クおよび共通周期のないクロ ッ クは、問題なく タイ ミ ング解析できません。 これらのク ロ ッ ク間のタイミ ング パスは、 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

Page 61: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 61UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

排他的なクロッ ク グループの例

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]

Page 62: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 62UG903 (v2014.3) 2014 年 10 月 31 日

第 4 章 : クロックの定義

クロックのばらつき

クロック ジッ ター

ASIC ではクロ ッ ク ジッターは通常クロ ッ クのばらつき特性で表されますが、 ザイ リ ンクス FPGA デバイスではジッター特性は予測可能で、 タイ ミ ング解析エンジンによ り自動的に算出できるほか、 別に指定するこ と もできます。

入力ジッ ター

入力ジッ ターとは、 標準または理想的なクロ ッ ク到達時間と比較した連続クロ ッ ク エッジ間のばらつきです。

各プライマ リ クロ ッ クの入力ジッターを個別に設定するには、 set_input_jitter コマンドを使用します。生成クロ ッ クに直接入力ジッ ターを設定するこ とはできません。 Vivado IDE タイ ミ ング エンジンでは、 生成クロ ッ クがマスター クロ ッ クから継承したジッターが自動的に算出されます。

• 生成クロッ クが MMCM または PLL で駆動される場合は、入力ジッターは算出された離散ジッターに置き換えられます。

• 生成クロッ クが組み合わせセルまたはシーケンシャル セルで駆動される場合は、生成クロ ッ クのジッ ターはマスター クロ ッ ク ジッターと同じになり ます。

システム ジッ ター

システム ジッターは、 次の要因による全体的なジッターです。

• 電源ノ イズ

• ボード ノ イズ

• システムのその他のジッ ター

set_system_jitter コマンドを使用して、デザイン全体 (すべてのクロ ッ ク ) に対して 1 つの値のみを設定します。

その他のクロックのばらつき

必要に応じて set_clock_uncertainty コマンドを使用し、異なるコーナー、遅延、特定のクロ ッ ク関係に対するク ロッ クのばらつきを定義します。 これは、 タイ ミ ングの観点から、 デザインの部分にゆと り をもたせる効率的な方法です。

Page 63: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 63UG903 (v2014.3) 2014 年 10 月 31 日

第 5 章

I/O 遅延の制約

I/O 遅延の制約についてデザインの外部タイ ミ ングを正確に記述するには、入力ポートおよび出力ポートのタイ ミ ング情報を指定する必要があ り ます。 Vivado® 統合設計環境 (IDE) では FPGA デバイス内のタイ ミ ング情報のみが認識されるので、 デバイス外部に存在する遅延値は次のコマンドを使用して指定する必要があ り ます。

• set_input_delay

• set_output_delay

入力遅延set_input_delay コマンドを使用する と、入力ポートの入力パス遅延をデザインのインターフェイスでのクロ ッ クエッジに対して指定できます。アプ リケーシ ョ ン ボードを考えた場合、この遅延は次のものの間の位相差を表します。

a. 外部チップからボードを介して FPGA デバイスの入力パッケージ ピンに伝搬されるデータ

b. 相対基準ボード クロ ッ ク

このため、 入力遅延は、 デバイスのインターフェイスでのクロッ クおよびデータの相対位相によって、 正または負の値になり ます。

入力遅延オプシ ョ ンの使用

-clock は、 標準 SDC ではオプシ ョ ンですが、 Vivado IDE では必須です。 相対クロ ッ クは、 デザイン ク ロ ッ クまたは仮想クロッ クのいずれかにできます。

推奨 : 仮想クロ ッ クを使用する場合は、デザイン内の入力ポートに接続されるデザイン ク ロ ッ ク と同じ波形を使用して ください。 このよ うにする と、 タイ ミ ング パス要件が現実的なものになり ます。仮想クロ ッ クを使用する と、デザイン クロ ッ クを変更せずに、 さまざまなジッターまたはソース レイテンシのパターンを記述できます。

入力遅延コマンドには、 次のオプシ ョ ンがあ り ます。

• 「-min および -max オプシ ョ ン」

• 「-clock_fall オプシ ョ ン」

• 「-add_delay オプシ ョ ン」

Page 64: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 64UG903 (v2014.3) 2014 年 10 月 31 日

第 5 章 : 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_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]

Page 65: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 65UG903 (v2014.3) 2014 年 10 月 31 日

第 5 章 : 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 クロ ッ クの立ち上がりエッジと立ち下がりエッジの両方で送信されるデータから、 立ち上がり ク ロ ッ ク エッジおよび立ち下がり ク ロ ッ ク エッジの両方で動作する内部フ リ ップフロ ップのデータ入力までの制約が作成されます。

出力遅延set_output_delay コマンドを使用する と、 出力ポートの出力パス遅延をデザインのインターフェイスでのクロ ック エッジに対して指定できます。

アプリケーショ ン ボードを考えた場合、 この遅延は次のものの間の位相差を表します。

a. FPGA デバイスの出力パッケージ ピンからボードを介して別のデバイスに伝搬されるデータ

b. 相対基準ボード クロ ッ ク

出力遅延は、 FPGA デバイス外部のクロ ッ クおよびデータの相対位相によって、 正または負の値になり ます。

出力遅延オプシ ョ ンの使用

-clock オプシ ョ ンは、 標準 SDC ではオプシ ョ ンですが、 Vivado では必須です。

相対クロッ クは、 デザイン クロ ッ クまたは仮想クロ ッ クのいずれかにできます。

推奨 : 仮想クロ ッ クを使用する場合は、デザイン内の出力ポートに接続されるデザイン ク ロ ッ ク と同じ波形を使用して ください。 このよ うにする と、 タイ ミ ング パス要件が現実的なものになり ます。仮想クロ ッ クを使用する と、デザイン クロ ッ クを調整しなくても、 ジッ ターまたはソース レイテンシのパターンを記述できます。

出力遅延コマンドには、 次のオプシ ョ ンがあ り ます。

• 「-min および -max オプシ ョ ン」

• 「-clock_fall オプシ ョ ン」

• 「-add_delay オプシ ョ ン」

-min および -max オプシ ョ ン

-min および -max オプシ ョ ンを使用する と、 小遅延解析 (ホールド / リ ムーバル) および 大遅延解析 (セッ ト アップ/ リ カバリ ) に対してさまざまな値を指定できます。 どちらのオプシ ョ ンも使用しない場合、 出力遅延値は 小値および 大値の両方に適用されます。

Page 66: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 66UG903 (v2014.3) 2014 年 10 月 31 日

第 5 章 : I/O 遅延の制約

-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 [get_ports DDR_CLK_IN]> set_output_delay -clock clk_ddr -max 2.1 [get_ports DDR_OUT]> set_output_delay -clock clk_ddr -max 1.9 [get_ports DDR_OUT] -clock_fall -add_delay> set_output_delay -clock clk_ddr -min 0.9 [get_ports DDR_OUT]> set_output_delay -clock clk_ddr -min 1.1 [get_ports DDR_OUT] -clock_fall -add_delay

この例では、 デバイス外部から clk_ddr クロ ッ クの立ち上がりエッジと立ち下がりエッジの両方で送信されるデータから、 立ち上がり ク ロ ッ ク エッジおよび立ち下がり ク ロ ッ ク エッジの両方で動作する内部フ リ ップフロ ップのデータ出力までの制約が作成されます。

Page 67: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 67UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章

タイ ミ ング例外

タイ ミング例外についてロジッ クがデフォルトのままでは正し く タイ ミ ング解析できない場合、 タイ ミ ング例外を指定する必要があ り ます。2 ク ロ ッ ク サイクルごとに結果を受信するロジッ クなど、 タイ ミ ングを別に処理する必要がある場合は、 タイ ミ ング例外コマンドを使用する必要があ り ます。

Vivado® 統合設計環境 (IDE) では、 表 6-1 に示すタイ ミ ング例外コマンドがサポート されています。

マルチサイクル パスマルチサイ クル パス制約を使用する と、 デザイン ク ロ ッ ク波形に基づいてタイマーによ り決定されたセッ ト アップ関係およびホールド関係を変更できます。 デフォルト では、 Vivado IDE エンジンでシングル サイ クル解析が実行されます。 この解析が厳しすぎる場合や、 一部のロジッ ク パスでは不適切な場合があ り ます。

たとえば、データが終点で安定するまでに複数クロ ッ ク サイクル必要な論理パスなどです。パスの開始点と終点の制御回路で許容される場合、 マルチサイクル パス制約を使用してセッ ト アップ要件を緩和するこ とをお勧めします。

ホールド要件は、 元の関係を保持するこ と もできます。 これによ り、 タイ ミ ング ド リブン アルゴ リズムがよ り厳しい要件や満たすこ とが難しい制約を持つパスに焦点をおく こ とができます。また、実行時間の短縮にもつながり ます。

表 6-1 : タイ ミング例外コマンド

コマンド 機能

set_multicycle_path パスの開始点から終点までデータを伝搬させるのに必要なクロッ ク サイクル数を指定します。

set_false_path デザインに含まれているロジッ ク パスで、 解析から除外すべきものを指定します。

set_max_delay

set_min_delay小パス遅延または 大パス遅延の値を指定します。このコマン

ドを使用する と、デフォルトのセッ ト アップおよびホールド制約ではなく、ユーザーが指定した 大/ 小遅延値が使用されます。

set_case_analysis ポート またはピンのロジッ ク定数またはロジッ ク遷移を使用して伝搬される信号を制限し、 タイ ミ ング解析を実行します。

Page 68: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 68UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

パスの乗数およびクロック エッジの設定

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 オプシ ョ ンを使用します。

注記 : 用語の定義は、 40 ページの 「用語」 を参照してください。

重要 : 各セッ ト アップ関係には、 2 つのホールド関係があ り ます。 1 つのホールド関係は、 セッ ト アップ ソース エッジがアクティブ デスティネーシ ョ ン エッジの前に到着するエッジでキャプチャされないよ うにします。 も う 1 つのホールド関係は、アクティブ ソース エッジの後のエッジがアクティブ デスティネーシ ョ ン エッジでキャプチャされないよ うにします。 タイ ミ ング解析ツールでは両方のホールド関係が算出されますが、解析およびレポートではよ り厳しいホールド関係のみが使用されます。 図 6-1 を参照してください。

重要 : 同じ クロ ッ クまたは同一の 2 つのクロ ッ ク (位相シフ トがあるなしにかかわらず同じ波形) が供給されるパスにマルチサイクル パス制約を適用する場合は、 -start および -end オプシ ョ ンは影響しません。

X-Ref Target - Figure 6-1

図 6-1 : パスのセッ トアップ関係およびホールド関係の例

Page 69: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 69UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

表 6-2 に、 アクティブ ソースおよびデスティネーシ ョ ン エッジが -end および -start オプシ ョ ンによ り どのよ うに影響されるかを示します。

重要 : set_multicycle_path コマンドの -setup オプシ ョ ンは、 セッ ト アップ関係を変更するだけでなく、 ホールド関係にも影響します。 ホールド関係は、 セッ ト アップ関係と直接関連しています。 ホールド関係を元の位置に戻すには、 別の set_multicycle_path 制約を -hold を使用して指定する必要があ り ます。

注記 : マルチサイクル制約は、 1 つのパス、 複数のパス、 または 2 つのクロッ ク間に設定できます。

次のセクシ ョ ンでは、 マルチサイ クル パスを使用する一般的な状況と、 セッ ト ア ップおよびホールドの乗数と-start および -end オプシ ョ ンのタイ ミ ング パス要件への影響を示します。

1 つのクロック ド メ インでのマルチサイクル制約

同じク ロッ ク ド メ イン内または同じ波形の 2 つのクロ ッ ク間で定義されるマルチサイクル制約は、同じよ うに機能します。 図 6-2 を参照してください。

図 6-3 に、スタティ ッ ク タイ ミ ング解析 (STA) ツールで使用されるデフォルトのセッ ト アップ関係とホールド関係を示します。

表 6-2 : アクテ ィブ ソース エッジおよびデスティネーシ ョ ン エッジ

ソース クロッ ク (-start)ソース エッジの移動方向

デスティネーシ ョ ン クロック (-end)デスティネーシ ョ ン エッジの移動方向

セッ トアップ <---- (後方) ----> (前方) (デフォルト )

ホールド ----> (前方) (デフォルト ) <---- (後方)

X-Ref Target - Figure 6-2

図 6-2 : 1 つのクロック ド メインでのマルチサイクル制約

X-Ref Target - Figure 6-3

図 6-3 : デフォルトのセッ トアップおよびホールド関係

Page 70: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 70UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

セッ ト アップおよびホールド タイ ミ ング要件は、 次のとおりです。

• セッ ト アップ チェッ ク

TDatapath(max) < TCLK(t=Period) - TSetup

• ホールド チェッ ク

TDatapath(min) > TCLK(t=0) + THold

ホールドを保持しながらセッ トアップを緩和

図 6-4 に、2 サイクルごとにイネーブルになる 2 つのフ リ ップフロ ップ間のパスを示します。このパスでは、デスティネーシ ョ ン ク ロ ッ クの 初のエッジがアクティブでなく、 デスティネーシ ョ ン ク ロ ッ クの 2 番目のエッジのみで新しいデータがキャプチャされるこ とを示すため、 マルチサイクル パス制約を定義できます。

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

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

ホールド関係がどのよ うにセッ ト アップ関係から導出されるかは、第 3 章 「タイ ミ ング チェッ クの基礎」 を参照してください。 セッ ト アップ関係を変更する と、 セッ ト アップのソース エッジおよびデスティネーシ ョ ン エッジの変更に伴い、 ホールド関係も変更されます。

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

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

X-Ref Target - Figure 6-4

図 6-4 : 2 サイクルごとにイネーブルになるレジスタ

Page 71: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 71UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

図 6-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 オプシ ョ ンは省略されています。

X-Ref Target - Figure 6-5

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

Page 72: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 72UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

図 6-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]

セッ トアップの移動

次に、 セッ ト アップを移動した例を示します。

• 「例 1 : セッ ト アップの乗数を 5 に設定し、 ホールドをそれに応じて移動」

• 「例 2 : セッ ト アップの乗数を 5、 ホールドの乗数を 4 に設定」

X-Ref Target - Figure 6-6

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

X-Ref Target - Figure 6-7

図 6-7 : セッ トアップの乗数が 4 のマルチサイクル パス

Page 73: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 73UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

例 1 : セッ トアップの乗数を 5 に設定し、 ホールドをそれに応じて移動

セッ ト アップ パスの乗数を 5 に設定する と します。 ホールド パスの乗数は指定されていないので、 ホールド関係はセッ ト アップのソース エッジおよびデスティネーシ ョ ン エッジから算出されます。

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

デフォルト では、 セッ ト アップ パスの乗数はデスティネーシ ョ ン ク ロ ッ クに対して定義されるので、 デスティネーシ ョ ン クロ ッ クのエッジが前方に移動します。セッ ト アップのデスティネーシ ョ ン エッジは、5 ク ロ ッ ク周期後になり ます。 ホールドの乗数は指定されていないので、 ホールド チェ ッ クのデスティネーシ ョ ン ク ロ ッ クのエッジは、セッ ト アップ チェッ クに使用されるアクティブ エッジの 1 サイクル前に到着するエッジのままになり ます。

セッ ト アップ関係およびホールド関係の両方に対し、 ソース クロ ッ クのエッジは変更されません。

4 サイクルのホールド要件では、タイ ミ ング ド リブンのインプリ メンテーシ ョ ン ツールで通常、スローおよびファース トの両方のタイ ミ ング コーナーでホールド タイ ミ ングを満たすため、 データパスに大きな遅延を挿入する必要があ り ます。 これによ り、 不必要なエ リアおよび消費電力が発生します。 そのため、 可能な場合はホールド要件を緩和するこ とが重要です。

この例では、 ク ロ ッ ク イネーブル信号によ り、 data0_reg に 4 サイクル間データを保持してメ タステーブル状態になるのを回避できます。 「例 2 : セッ ト アップの乗数を 5、 ホールドの乗数を 4 に設定」 で、 ホールド要件をどのよ うに緩和するかを説明します。

X-Ref Target - Figure 6-8

図 6-8 : セッ トアップの乗数を 5 に設定し、 ホールドをそれに応じて移動

Page 74: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 74UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

例 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 サイクル前方に移動します。

ソース クロ ッ ク とデスティネーシ ョ ン クロ ッ クの波形は同じで位相が揃っているので、図 6-9 は図 6-10 と同じです。

重要 : 通常、 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]

X-Ref Target - Figure 6-9

図 6-9 : セッ トアップの乗数を 5、 ホールドの乗数を 4 に設定

X-Ref Target - Figure 6-10

図 6-10 : セッ トアップの乗数を 5、 ホールドの乗数を 4 に設定

Page 75: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 75UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

マルチサイクル パスおよびクロック位相シフ ト

ク ロ ッ ク周期が同じで位相シフ トのある 2 つのクロ ッ ク ド メ イン間でタイ ミ ング制約を定義する必要がある場合があ り ます。その場合、タイ ミ ング エンジンで使用されるデフォルトのセッ ト アップ関係およびホールド関係を理解しておく こ とが重要です。 注意深く調整しないと、 2 つのクロ ッ ク間の位相シフ トによ り、 これらのクロ ッ ク ド メ イン間のロジッ クが過剰に制約される可能性があ り ます。

波形の同じ 2 つのクロ ッ ク CLK1 と CLK2 があ り、 CLK2 は +0.3ns シフ ト されている と します。

タイ ミ ング エンジンでは、セッ ト アップ関係を算出するため、両方の波形のすべてのエッジを検出し、 も厳しい制約となるソース クロ ッ ク とデスティネーシ ョ ン クロ ッ クの 2 つのエッジを選択します。

ク ロ ッ クの位相シフ トのため、タイ ミ ング エンジンで使用されるセッ ト アップ関係とホールド関係が予測と異なる場合があ り ます。 図 6-12 を参照して ください。

この例では、 位相シフ トのためセッ ト アップ制約は 0.3ns になり ます。 これでは、 タイ ミ ング ク ロージャを達成するこ とはほぼ不可能です。 一方、 ホールド チェッ クは -3.7ns であ り、 これはゆるすぎます。

意図した動作を得るため、セッ ト アップ エッジとホールド エッジを調整する必要があ り ます。これには、セッ ト アップの乗数を 2 に設定するマルチサイクル パス制約を追加します。

set_multicycle_path 2 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]

X-Ref Target - Figure 6-11

図 6-11 : マルチサイクル パスおよびクロック位相シフ ト

X-Ref Target - Figure 6-12

図 6-12 : 位相シフ ト クロックでマルチサイクル パス制約を設定しない場合の例

Page 76: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 76UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

これによ り、セッ ト アップ要件のデスティネーシ ョ ン エッジが 1 サイクル前方に移動します。ホールドのデフォルトのエッジは、 セッ ト アップ要件から導出されたものになるので、 指定する必要はあ り ません。

2 つのクロッ ク ド メ イン間の位相シフ トが負の場合 (図 6-14)、セッ ト アップ チェッ クおよびホールド チェッ クに使用されるソース エッジとデスティネーシ ョ ン エッジは 1 つのクロッ ク ド メ インで位相シフ トのない場合と似ています。

負の位相シフ トでは、 位相シフ ト の影響を相殺するためマルチサイ クル パス制約を設定する必要は通常あ り ませんが、 位相シフ ト が大きい場合は、 セッ ト アップおよびホールド要件を現実的なものにするためにクロ ッ クのソースエッジまたはデスティネーシ ョ ン エッジを調整する必要がある場合もあ り ます。

X-Ref Target - Figure 6-13

図 6-13 : 正の位相シフ トの例 : セッ トアップの乗数を 2 (-end) に設定し、 ホールドをそれに応じて移動

X-Ref Target - Figure 6-14

図 6-14 : 負の位相シフ トの例

Page 77: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 77UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

低速クロックから高速クロックのマルチサイクル

ソース クロ ッ ク CLK1 が低速で、 デスティネーシ ョ ン クロ ッ ク CLK2 が高速である場合を考えます。 図 6-15 を参照して ください。

たとえば、 CLK2 の周波数が CLK1 の周波数の 3 倍であ り、 受信レジスタにク ロ ッ ク イネーブル信号があるので、 2つのクロッ クの間でマルチサイクル パス制約を設定可能である と します。 図 6-16 を参照してください。

図 6-17 に、 マルチサイクルが設定されていない場合に STA ツールで使用されるセッ ト アップ関係とホールド関係を示します。

X-Ref Target - Figure 6-15

図 6-15 : 低速クロックから高速クロックのマルチサイクル パス制約

X-Ref Target - Figure 6-16

図 6-16 : 低速クロックから高速クロックのマルチサイクル パス制約

X-Ref Target - Figure 6-17

図 6-17 : デフォルトのセッ トアップおよびホールド関係

Page 78: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 78UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

例 1 : セッ トアップの乗数を 3 に設定し、 ホールドをそれに応じて移動

次のよ うなセッ ト アップの乗数が 3 のマルチサイクル パス制約を定義する と します。

set_multicycle_path 3 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]

セッ ト アップに対してマルチサイ クル パス制約を設定する と、 セッ ト アップ チェ ッ クに使用されるデスティネーシ ョ ン クロ ッ クのエッジが 2 (3 - 1) サイ クル前方に移動します。ホールド パスの乗数は指定されていないので、ホールド関係はセッ ト アップのソース エッジおよびデスティネーシ ョ ン エッジから導出されます。 ソース ク ロ ッ クのアクティブ エッジはマルチサイクル パス制約によ り変更されません。

図 6-18 に、 マルチサイクルが設定された後のセッ ト アップ関係とホールド関係を示します。

このパスが機能するためには、送信レジスタにデータを CLK2 の 1 サイ クル間保持する必要はあ り ません。 そのよ うにする と不要なロジッ クを追加するこ とにな り、 エ リ アおよび消費電力が増加します。

受信レジスタにはクロ ッ ク ネーブル信号があるので、 メ タステーブル状態になるこ とな く ホールド要件を緩和できます。

例 2 : セッ トアップの乗数を 3、 ホールドの乗数を 2 (-end) に設定

前の例でホールド要件を緩和するには、 ホールド関係のデスティネーシ ョ ン ク ロ ッ ク エッジを 2 ク ロ ッ ク サイクル分後方に移動する必要があ り ます。 これには、set_multicycle_path -hold コマンドを -end オプシ ョ ンを指定して使用します。

set_multicycle_path 3 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]set_multicycle_path 2 -hold -end -from [get_clocks CLK1] -to [get_clocks CLK2]

ヒン ト : set_multicycle_path -hold コマンドで -end オプシ ョ ンを指定しない場合、 ソース ク ロ ッ ク エッジが前方に移動します。 これでは適切なホールド要件が得られません。

「例 1 : セッ ト アップの乗数を 3 に設定し、 ホールドをそれに応じて移動」 と同様に、 このセッ ト アップの乗数によ りセッ ト アップ チェッ クに使用されるデスティネーシ ョ ン クロ ッ クのエッジが 2 (3 - 1) サイクル前方に移動します。

X-Ref Target - Figure 6-18

図 6-18 : セッ トアップの乗数を 3 にし、 ホールドをそれに応じて移動

Page 79: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 79UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

図 6-19 に、 2 つのマルチサイクル パス制約が設定された後のセッ ト アップ関係とホールド関係を示します。

重要 : 低速のクロ ッ ク ド メ インから高速のクロ ッ ク ド メ インに移動するパスでは、 セッ ト アップの乗数を 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 が低速である場合を考えます。 図 6-20 を参照して ください。

この例では、 ソース ク ロ ッ ク CLK1 が高速ク ロ ッ クで、 デスティネーシ ョ ン ク ロ ッ ク CLK2 が低速ク ロ ッ クです。CLK1 の周波数が CLK2 の周波数の 3 倍である と します。 図 6-21 を参照してください。

X-Ref Target - Figure 6-19

図 6-19 : セッ トアップの乗数を 3、 ホールドの乗数を 2 (-end) に設定

X-Ref Target - Figure 6-20

図 6-20 : 高速クロックから低速クロックのマルチサイクル

X-Ref Target - Figure 6-21

図 6-21 : 高速クロックから低速クロックのマルチサイクル

Page 80: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 80UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

図 6-22 に、 マルチサイクルが設定されていない場合に STA ツールで使用されるセッ ト アップ関係とホールド関係を示します。

例 : セッ トアップの乗数を 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 サイクル前方に移動します。

セッ ト アップ チェッ クおよびホールド チェッ クの両方で、デスティネーシ ョ ン クロ ッ クのエッジは変更されません。図 6-23 を参照して ください。

重要 : パスが高速のクロッ ク ド メ インから低速のクロッ ク ド メ インに移動する場合、セッ ト アップの乗数 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]

X-Ref Target - Figure 6-22

図 6-22 : デフォルトのセッ トアップおよびホールド関係

X-Ref Target - Figure 6-23

図 6-23 : セッ トアップの乗数を 3 (-start)、 ホールドの乗数を 2 に設定

Page 81: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 81UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

表 6-3 に、 上記の例をまとめます。

注記 : コマンドを簡潔にするため、 表 6-3 では get_clocks コマンドは省略しています。

フォルス パスフォルス パスは、デザインには存在するが、機能はなく、 タイ ミ ング解析する必要のないパスです。 そのため、 フォルス パスはタイ ミ ング解析で無視する必要があ り ます。

次に、 フォルス パスの例を示します。

• ダブル シンクロナイザー ロジッ クが追加されたクロ ッ ク ド メ インをまたがるパス

• 電源投入時に一度だけ書き込まれるレジスタ

• リセッ ト またはテス ト ロジッ ク

• 非同期分散 RAMの書き込みクロ ッ ク と非同期読み出しク ロ ッ クの間のパスを無視 (該当する場合)

図 6-24 に、 機能しないパスの例を示します。 2 つのマルチプレクサーはどちら も同じセレク ト信号で駆動されるので、 Q から D へのパスは存在せず、 フォルス パス と して定義する必要があ り ます。

ヒン ト : 同期パスのタイ ミ ング要件を緩和するが、 パスのタイ ミ ングを解析して 適化する必要がある場合は、 フォルス パス制約ではなくマルチサイクル パス制約を使用してください。

表 6-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 CLK2set_multicycle_path N-1 -hold -end -from CLK1 -to CLK2

同期した高速ク ロ ッ ク ド メ インから低速クロ ッ ク ド メ イン

set_multicycle_path N -setup -start -from CLK1 -to CLK2set_multicycle_path N-1 -hold -from CLK1 -to CLK2

X-Ref Target - Figure 6-24

図 6-24 : 機能しないパスの例

Page 82: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 82UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

タイ ミ ング解析からフォルス パスを除外するのには、 次のよ うな理由があ り ます。

• 実行時間の短縮

タイ ミ ング解析からフォルス パスを除外する と、機能しないパスのタイ ミ ングをツールで解析したり 適化する必要はあ り ません。機能しないパスをタイ ミ ング エンジンおよび 適化エンジンで処理する必要がある と、実行時間が大幅に増加します。

• 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) [参照 6] を参照してください。

• -from オプシ ョ ンのノード リ ス トは、 有効な開始点のリ ス トである必要があ り ます。 有効な開始点は、 ク ロ ック オブジェク ト、 順次エレ メン トのク ロ ッ ク ピン、 入力 (または入出力) プライマ リ ポートです。 複数のエレ メン ト を指定できます。

• -to オプシ ョ ンのノード リ ス トは、 有効な終点のリ ス トである必要があ り ます。 有効な終点は、 ク ロ ッ ク オブジェク ト 、 順次エレ メン ト入力データ ピンの出力 (または入出力) プライマ リ ポートです。 複数のエレ メン ト を指定できます。

• -through オプシ ョ ンのノード リ ス トは、 有効なピンまたはポートの リ ス トである必要があ り ます。 複数のエレ メン ト を指定できます。

注意 : -from および -to オプシ ョ ンを使用せずに -through オプシ ョ ンを使用する場合は、 指定したピンまたはポート を追加するすべてのパスがタイ ミ ング解析から除外されるので、注意が必要です。 IP またはサブブロ ッ ク用にタイ ミ ング制約を定義し、 別のコンテキス ト または大型のプロジェク トで使用する場合は、 特に注意して ください。-through オプシ ョ ンのみを使用する場合、 意図した以上のパスが除外される可能性があ り ます。

-through オプシ ョ ンの順序も重要です。 次に例を示します。

次の 2 つは、 異なる制約を設定します。

set_false_path -through cell1/pin1 -through cell2/pin2set_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]

Page 83: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 83UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

この例では、 ク ロ ッ ク 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

図 6-24 に示す例では、-from または -to オプシ ョ ンを使用する代わりに -through オプシ ョ ンを使用してフォルスパスを設定するこ と もできます。 図 6-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*}]

X-Ref Target - Figure 6-25

図 6-25 : 機能しないパスの例

Page 84: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 84UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

図 6-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) [参照 6] を参照してください。

-from オプシ ョ ンのノード リス ト

• -from オプシ ョ ンのノード リ ス トは、 有効な開始点のリ ス トである必要があ り ます。 有効な開始点は、 ク ロ ック、 入力または入出力ポート、 レジスタや RAM などの順次エレメン トのクロ ッ ク ピンです。 有効でない開始点のノードを使用する と、 パスが分割されます。 パスの分割については、 次のセクシ ョ ンで説明します。

• 複数のエレ メン ト を指定できます。

X-Ref Target - Figure 6-26

図 6-26 : WAVE (HDL) サンプル プロジェク トでの分散 RAM の駆動方法

Page 85: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 85UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

-to オプシ ョ ンのノード リス ト

• -to オプシ ョ ンのノード リ ス トは、 有効な終点のリ ス トである必要があ り ます。 有効な終点は、 ク ロ ッ ク、 出力または入出力ポート、 シーケンシャル セルのデータ ピンです。

• 有効でない終点のノードを使用する と、パスが分割されます。詳細は、 86 ページの 「パス分割」 を参照してください。

• 複数のエレ メン ト を指定できます。

-through オプシ ョ ンのノード リス ト

• -through オプシ ョ ンのノード リ ス トは、 有効なピン、 ポート、 またはネッ トのリ ス トである必要があ り ます。

• 複数のエレ メン ト を指定できます。

デフォルトでは、 スラ ッ クの算出にクロ ッ ク スキューが含まれます。

-datapath_only オプシ ョ ンを使用する と、 スラ ッ クの算出から クロ ッ ク スキューを除外できます。–datapath_only オプシ ョ ンは、 set_max_delay コマンドでのみサポート され、 -from オプシ ョ ンと共に使用する必要があ り ます。

表 6-4 に、 set_max_delay constraint に対する -datapath_only の影響を示します。

-datapath_only オプシ ョ ンを使用した場合と使用しない場合の set_max_delay のパス遅延算出の共通点は、次のとおりです。

• 入力遅延は、パスが入力ポートで開始し、 set_input_delay がそのポートに指定されている場合に、パス遅延算出に含まれます。

• 出力遅延は、 パスが出力ポートで終了し、 set_output_delay がそのポートに指定されている場合に、 パス遅延算出に含まれます。

• データ ピンのセッ ト アップ タイムは、 パスが順次エレ メン トのデータ ピンで終了する場合に、 パス遅延算出に含まれます。

パスに最大遅延制約および最小遅延制約を設定した場合の影響

パスに 大遅延制約を設定しても、 -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]

表 6-4 : -datapath_only を使用した場合としない場合の最大遅延制約の違い

set_max_delay set_max_delay -datapath_only

パス遅延の算出 制約が順次エレ メ ン ト のク ロ ッ ク ピンで開始し、順次エレ メン トのデータ ピンで終了する場合にスキューが含まれる

スキューは含まれない

ホールド要件 変化なし フォルス パス

-from オプシ ョ ン オプシ ョ ン 必須

Page 86: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 86UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

上記の例では、 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]

Page 87: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 87UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

制約を FD1/Q に適用した場合、 Q を有効な開始点とするためにタイ ミ ング アーク C->Q が切断されます。

set_max_delay 5 -from [get_pins FD1/Q]

有効な開始点を作成するためにタイ ミ ング アークが切断されるプロセスは、パス分割と呼ばれます。パス分割は、大および 小遅延解析の両方に影響します。タイ ミ ング アークが切断されるので、パス分割はそれらのノード (FD1/Cおよび FD1/Q) を通過するタイ ミ ング制約にも影響します。

注記 : パス分割によ り、 FD1/Q からのパスのソース ク ロ ッ クにク ロ ッ ク挿入遅延は使用されません。 そのため、終点のクロッ ク スキューは考慮されるので、 スキューが大き くなる可能性があ り ます。 図 6-29 を参照して ください。

X-Ref Target - Figure 6-27

図 6-27 : 元のタイ ミング アーク

X-Ref Target - Figure 6-28

図 6-28 : タイ ミング アークの切断 (パス分割)

X-Ref Target - Figure 6-29

図 6-29 : パス分割の結果スキューが大き く なる

Page 88: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 88UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

注意 : パス分割によ り、 予期しない結果を招く可能性があ り ます。 パス分割を避けるか、 十分に注意して使用してください。

パスが分割された場合、 パスにデフォルトのホールド要件はあ り ません。 -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]

これを図 6-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]

これを図 6-31 に示します。

X-Ref Target - Figure 6-30

図 6-30 : 有効でない終点が指定された場合のパス分割

Page 89: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 89UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

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 制約が適用されるからです。

X-Ref Target - Figure 6-31

図 6-31 : パス分割により複数のパスが切断される

Page 90: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 90UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

ケース解析デザインによっては、 一部の信号が特定のモードで定数になり ます。 たとえば、 動作モードでは、 テス ト信号はト グルしないので、そのアクティブ レベルによって VDD または VSS に接続されます。 これは、電源投入後はト グルしなくなる信号でも同様です。 また、 多くのデザインには複数の動作モードがあ り、 ある動作モードではアクティブな信号が別のモードでは非アクティブである場合があ り ます。

解析空間、実行時間、およびメモ リ消費量を削減するため、信号が定数値となるこ とを指定しておく こ とが重要です。これは、 機能しないパスおよび無関係なパスがレポート されないよ うにするためにも重要です。

信号が非アクティブであるこ とを宣言するには、set_case_analysis コマンドを使用します。 このコマンドは、ピンまたはポートに適用できます。

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 のみが出力ピンを介して伝搬されます。

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]

注記 : ピンにケース値を指定する と、 そのピンのタイ ミ ング解析は実行されません。 つま り、 そのピンを通過するタイ ミ ング パスはレポート されません。

X-Ref Target - Figure 6-32

図 6-32 : クロック例

Page 91: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 91UG903 (v2014.3) 2014 年 10 月 31 日

第 6 章 : タイ ミング例外

タイ ミ ング アークのディスエーブル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 違反が発生するのを回避する必要があ り ます。

注記 : タイ ミ ング アークをディ スエーブルにする と、そのアークを介するタイ ミ ング パスはレポート されなくなり ます。 有効なタイ ミ ング アークをディ スエーブルにしないよ うに注意して ください。 ハード ウェアでデザイン エラーとなるタイ ミ ング違反やタイ ミ ング問題を見逃す結果になる可能性があ り ます。

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 オプシ ョ ンを使用する と、 結果を指定したファイルに書き込むこ とができます。

Page 92: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 92UG903 (v2014.3) 2014 年 10 月 31 日

第 7 章

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)

同じタイプの例外の場合は、制約が詳細に指定されているものほど優先されます。制約で使用されているフ ィルターオプシ ョ ンおよびオブジェク トのタイプによって、 制約の特性を変更できます。

Page 93: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 93UG903 (v2014.3) 2014 年 10 月 31 日

第 7 章 : 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. ネッ ト

検索はすべてのオブジェク トに対して実行されるわけではなく、あるタイプで文字列パターンに一致するオブジェクトが見つかる と、 リ ス トの後の方にある別のタイプのオブジェク トに同じ文字列パターンに一致するオブジェク トがあっても、 初に見つかったタイプのオブジェク トが返されます。

Page 94: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 94UG903 (v2014.3) 2014 年 10 月 31 日

第 8 章

物理制約

物理制約について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) [参照 7] を参照してください。

Page 95: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 95UG903 (v2014.3) 2014 年 10 月 31 日

第 8 章 : 物理制約

ネッ ト リス ト制約ネッ ト リ ス ト制約は、 ポート、 ピン、 ネッ ト 、 セルなどのネッ ト リ ス ト オブジェク トに設定され、 コンパイル ツールで特別な方法で処理される必要があ り ます。

重要 : これらの制約を使用した場合の影響を、 十分に理解しておく必要があ り ます。 デザイン エリアが増加したり、デザイン パフォーマンスが低下したりする可能性があ り ます。

ネッ ト リ ス ト制約には、 次のものがあ り ます。

• 「CLOCK_DEDICATED_ROUTE」

• 「MARK_DEBUG」

• 「DONT_TOUCH」

• 「LOCK_PINS」

CLOCK_DEDICATED_ROUTECLOCK_DEDICATED_ROUTE はネッ トに設定し、 ク ロ ッ ク信号をどのよ うに配線するかを指定します。

ク ロ ッ ク ネッ トに設定し、デフォルト配線を変更するために使用します。この制約はタイ ミ ングの予測可能性および配線性に影響する可能性があるので、 使用する場合は十分な注意が必要です。

専用クロッ ク配線が使用できない場合に、CLOCK_DEDICATED_ROUTE を FALSE に設定できます。FALSE に設定する と、入力ポートからのクロ ッ クを汎用配線リ ソースを使用して BUFG や MMCM などのグローバル ク ロ ッ ク リ ソースに配線するこ とが可能になり ます。 これは、 デバイス パッケージ ピン割り当てが固定されており、 クロ ッ ク入力を適切な ク ロ ッ ク兼用入力ピン (CCIO) に割 り 当てる こ と ができない場合の、 終的な手段と して く ださい。FIXED_ROUTE と共に使用しないと、 配線が 適でない予測不可能なものになり ます。

MARK_DEBUGRTL のネッ ト に設定し、 保持してネッ ト リ ス ト に含まれるよ うにします。 これによ り、 コンパイル フローの任意の時点で、 ネッ ト をロジッ ク デバッグ ツールに接続できます。

詳細は、 『Vivado Design Suite ユーザー ガイ ド : プログラムおよびデバッグ』 (UG908) [参照 8] を参照して ください。

DONT_TOUCHDONT_TOUCH は 下位セル、階層セル、 またはネッ ト オブジェク トに設定し、ネッ ト リ ス ト 適化の実行時に保持されるよ うにします。 DONT_TOUCH は、 一般的に次の目的で使用されます。

• ネッ トが 適化で削除されないよ うにする。

DONT_TOUCH が設定されたネッ トは、 合成またはインプ リ メンテーシ ョ ンで吸収されません。 これは、 ロジックのプローブまたはデザインでの予期されない 適化のデバッグに有益な場合があ り ます。複数の階層セグメントのあるネッ ト を保持するには、 DONT_TOUCH をネッ トの親 (ド ラ イバーに も近いネッ ト セグメン ト ) に設定します (get_property PARENT -of $net)。

• 手動で複製したロジッ クが統合されないよ うにする。

広範囲に伝搬されるファンアウ トの大きいド ラ イバーなど、ロジッ クを手動で複製するのが 適な場合があ り ます。元のド ライバーと手動で複製したド ライバーに DONT_TOUCH を追加する と、合成およびインプ リ メンテーシ ョ ンの 適化でこれらのセルが削除されるこ とはあ り ません。

Page 96: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 96UG903 (v2014.3) 2014 年 10 月 31 日

第 8 章 : 物理制約

ヒン ト : Vivado インプ リ メンテーシ ョ ンでは論理階層はフラ ッ ト化されないので、 インプ リ メンテーシ ョ ンで階層セルに DONT_TOUCH に使用しないでください。 XDC 制約を適用する論理階層を保持するには、 合成で KEEP_HIERARCHY を使用して ください。

LOCK_PINSLOCK_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) [参照 7] を参照して ください。

注記 : すべてのプロパティは、 特に指定しない場合は、 ポート オブジェク トに適用されます。

° 構文およびコード例は、 『Vivado Design Suite プロパティ リ ファレンス ガイ ド』 (UG912) [参照 7] を参照してください。

° これらのプロパティの使用方法の詳細は、 『7 シ リーズ FPGA SelectIO リ ソース ユーザー ガイ ド』 (UG471) [参照 9] を参照して ください。

• DRIVE

出力バッファーの駆動電流を mA で指定します。 一部の I/O 規格でのみ使用可能です。

Page 97: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 97UG903 (v2014.3) 2014 年 10 月 31 日

第 8 章 : 物理制約

• 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 ツールではエラーではなく ク リ ティカル警告が生成されます。

Page 98: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 98UG903 (v2014.3) 2014 年 10 月 31 日

第 8 章 : 物理制約

配置制約配置制約はセルに適用し、 デバイス内でのロケーシ ョ ンを制御します。 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 に配置します。

詳細は、 次を参照して ください。

• 第 7 章 「XDC の優先順位」

• 第 9 章 「相対配置マクロの定義」

配置タイプ

次の 2 種類の配置があ り ます。

• 「固定配置」

• 「固定されていない配置」

Page 99: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 99UG903 (v2014.3) 2014 年 10 月 31 日

第 8 章 : 物理制約

固定配置

固定配置は、 次の方法でユーザーが指定する配置です。

• 手動で配置

• 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*}]

Page 100: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 100UG903 (v2014.3) 2014 年 10 月 31 日

第 8 章 : 物理制約

配線制約配線制約はネッ ト オブジェク トに適用し、 配線リ ソースを制御します。

固定配線

固定配線は、 ISE の指定配線と同様に、 配線を固定します。 ネッ トの配線リ ソースの固定には、 3 つのネッ ト プロパティが関係します。 表 8-1 を参照してください。

ネッ トの配線が確実に固定されるよ うにするには、 その配線のすべてのセルを固定しておく必要があ り ます。

次に、配線を完全に固定する例を示します。 この例では、図 8-1 のデザインのネッ ト netA (青色でハイライ ト ) の配線を固定する制約を作成します。

インプリ メン ト済みデザインを メモリに読み込むと、 ネッ トの配線情報をクエリできるよ うにな り ます。

% set net [get_nets netA]% get_property ROUTE $net{ CLBLL_LL_CQ CLBLL_LOGIC_OUTS6 FAN_ALT5 FAN_BOUNCE5 { IMUX_L17 CLBLL_LL_B3 } IMUX_L11 CLBLL_LL_A4 }

表 8-1 : ネッ ト プロパティ

プロパティ 機能

ROUTE 読み取り専用のネッ ト プロパティ

IS_ROUTE_FIXED 配線全体を固定するよ うマーク

FIXED_ROUTE ネッ トの固定配線部分

X-Ref Target - Figure 8-1

図 8-1 : 配線制約の例を示すためのシンプルなデザイン

Page 101: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 101UG903 (v2014.3) 2014 年 10 月 31 日

第 8 章 : 物理制約

配線は、 配線ノード名の リ ス トで示され、 ファンアウ トは中かっこ ({ }) で示されます。 配線を固定するには、 ネットに次のプロパティを設定します。

% 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) [参照 6] を参照してください。

Page 102: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 102UG903 (v2014.3) 2014 年 10 月 31 日

第 8 章 : 物理制約

コンフ ィギュレーシ ョ ン制約コンフ ィギュレーシ ョ ン制約は、 ビッ ト ス ト リーム生成用のグローバル制約で、 現在のデザインに適用します。 コンフ ィギュレーシ ョ ン モードなど制約が含まれます。

コンフ ィギュレーシ ョ ン制約の例 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) [参照 8] を参照して ください。

Page 103: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 103UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章

相対配置マクロの定義

相対配置マクロの定義について相対配置マクロ (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) [参照 10] を参照して ください。

Page 104: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 104UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

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 を作成できます。

同じ階層で指定されたセッ ト名を持つすべてのセルは、 同じセッ トのメンバーとな り ます。

Page 105: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 105UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

VHDL で RPM セッ ト を定義する構文

RPM セッ ト を VHDL の属性と して定義するには、 次の構文を使用します。

attribute U_SET : string;attribute HU_SET : string;...attribute U_SET of my_reg : label is "uset0";attribute 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 定義

RPM セッ トは、 プロパティ と して HDL ソース ファ イルに含める必要があ り ます。合成後、 RPM に関連するプロパティは、 Vivado® 配置で使用するため、 読み出し専用のプロパティ と してネッ ト リ ス ト オブジェク ト上に表示されます。

X-Ref Target - Figure 9-1

図 9-1 : [Physical Constraints] ウィンドウでの RPM 定義

Page 106: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 106UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

RPM 定義の表示

RPM 定義を表示するには、 [Physical Constraints] ウ ィンド ウを使用します。 図 9-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 = "X0Y0" *) FD sr0 (.C(clk), .D(d[0]), .Q(y[0]));(* RLOC = "X0Y1" *) FD sr1 (.C(clk), .D(d[1]), .Q(y[1]));(* RLOC = "X0Y2" *) FD sr2 (.C(clk), .D(d[2]), .Q(y[2]));(* RLOC = "X0Y3" *) FD sr3 (.C(clk), .D(d[3]), .Q(y[3]));(* RLOC = "X0Y4" *) FD sr4 (.C(clk), .D(d[4]), .Q(y[4]));(* RLOC = "X0Y5" *) FD sr5 (.C(clk), .D(d[5]), .Q(y[5]));(* RLOC = "X0Y6" *) FD sr6 (.C(clk), .D(d[6]), .Q(y[6]));(* RLOC = "X0Y7" *) FD sr7 (.C(clk), .D(d[7]), .Q(y[7]));

Page 107: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 107UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

絶対 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 RLOC : string;attribute RPM_GRID : string;attribute RLOC of di_reg3 : label is "X25Y0";attribute RLOC of di_reg2 : label is "X27Y0";attribute RLOC of di_reg1: label is "X29Y0";attribute RLOC of di_reg0 : label is "X31Y0";attribute RLOC of ram0 : label is "X34Y0";attribute RLOC of out_reg3 : label is "X37Y0";attribute RLOC of out_reg2 : label is "X39Y0";attribute RLOC of out_reg1 : label is "X41Y0";attribute 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

Page 108: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 108UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

RTL ソース ファイルでの RLOC プロパティの定義

標準グ リ ッ ドは単純で、 相対的であるため、 RPM の RLOC プロパティは RTL ソース ファ イルで直接定義できます。

RPM_GRID 座標はターゲッ ト デバイスから抽出する必要があるので、 次を実行する必要があ り ます。

• 合成後に正しい RPM_GRID 値を見つけるためプロセスを繰り返します。

• RTL ソース ファ イルに座標をプロパティ と して追加します。

• 配置の前にネッ ト リ ス ト を再合成します。

RPM への固定ロケーシ ョ ンの割り当てオプシ ョ ンで、 RLOC_ORIGIN または LOC 制約を使用して、 デバイス上の RPM の位置を固定できます。 Vivado IDEでは、 これらのプロパティによ り RPM の座標の原点 (RPM の左下角) の位置が固定されます。 RPM の残りのセルは、原点を基準と した相対ロケーシ ョ ン (RLOC) を使用して配置されます。

次に、 RLOC_ORIGIN を使用して、 階層型 RPM を固定する例を示します。 RLOC 制約を RPM のレジスタ セルに割り当て、 高さ 2 X 幅 3 の配置パターンを作成しています。

Verilog :

(* RLOC = "X0Y0" *) FDC sr0...(* RLOC = "X1Y0" *) FDC sr1...(* RLOC = "X2Y0" *) FDC sr2...(* RLOC = "X0Y1" *) FDC sr3...(* RLOC = "X1Y1" *) FDC sr4...(* RLOC = "X2Y1" *) FDC sr5...

X-Ref Target - Figure 9-2

図 9-2 : RLOC_ORIGIN による RPM の配置

Page 109: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 109UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

この RPM を 3 回インスタンシエート し、 各セルに RLOC を設定します。

(* RLOC = "X0Y0" *) ffs u0...(* RLOC = "X3Y2" *) ffs u1...(* RLOC = "X6Y4" *) ffs u2...

後に、RLOC_ORIGIN を X74Y15 に設定して u0 セルに割り当てます。配置は、図 9-2 に示すよ うにな り ます。表 9-1に、 図でのセルのハイライ ト色を示します。

ヒン ト : RPM ではロジッ ク エレ メン トの相対配置が指定されますが、 インプ リ メンテーシ ョ ンを反復実行した場合にロジッ クを接続するのに特定の配線リ ソースが使用される とは限り ません。

使用される配線の制御については、 100 ページの 「配線制約」 を参照して ください。

XDC マクロ XDC マクロを使用する と、 合成後にセルを相対配置できます。 マク ロは RPM と同様の特徴を持ちますが、 XDC および Tcl を使用してインタラ クティブに変更できます。 マク ロは、 相対配置制約によ りグループ化された 下位セルから作成されます。

RPM は HDL コードで管理しますが、 マクロは XDC 制約を使用して管理します。 RPM を自動的にマクロに変換するこ とはできません。 同様に、 マク ロを自動的に HDL コードに追加するこ とはできません。 RPM は、 マク ロ とは異なりオブジェク トではないので、 XDC マクロ コマンドを RPM に使用するこ とはできません。

表 9-1 : セルのハイライ ト色

セル ハイライ ト色

u0 黄色

u1 緑色

u2 赤

表 9-2 : RPM とマクロの比較

RPM マクロ

定義 HDL 属性 XDC 制約

合成後のアクセス 読み出しのみ 読み出し /書き込み

階層 あ り (H_SET/HU_SET) なし

RLOC ターゲッ ト 下位セルおよび 下位以外のセル 下位セルのみ

サイ ト タイプの混合 許容 (RPM_GRID 属性を使用) 許容 (update_macro -absolute_grid を使用)

オブジェク ト と と してのアクセス

不可能 可能

保存先 ネッ ト リ ス ト XDC または Tcl スク リプ ト

Page 110: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 110UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

マクロの指定

マクロを指定するには、 次の 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 を一度に指定する必要があ り ます。 マク ロを少しずつ構築するこ とはできません。

° 既存のマクロをアップデートするには、 再作成する必要があ り ます。

Page 111: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 111UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

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

Page 112: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 112UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

次のコマンドでは、 セルに完全に含まれるマクロすべてが返されます。

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_macrosm0 inst_1_m0 inst_2_m0

ヒン ト : マクロを読み出し、 -cell オプシ ョ ンを使用して別のセルに適用する際、新しいマクロの名前は固有のものである必要があ り ます。 セル名が接頭辞と してマクロ名に追加され、 新しいマクロ名が作成されます。 例 4 では、 新しいマクロ inst_1_m0 および inst_2_m0 が作成されます。

Page 113: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 113UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

マクロのプロパティ

マクロ オブジェク トには、 次のプロパティがあ り ます。

• ABSOLUTE_GRID

• CLASS

• NAME

• RLOCS

マクロのプロパティの例

% report_property [get_macros m1]Property Type Read-only Visible ValueABSOLUTE_GRID bool true true 0CLASS string true true macroNAME string true true m1RLOCS string* true true 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

Page 114: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 114UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

アドバンス XDC マクロの例

このセクシ ョ ンでは、 次のアドバンス XDC マクロの例を示します。

• 「相対グ リ ッ ド マクロの例」

• 「絶対グ リ ッ ド マクロの例」

相対グリ ッ ド マクロの例

一般的なほとんどのマクロは同じサイ ト タイプに属するセルで構成されているので、デフォルトではマクロの RLOC座標に相対グ リ ッ ドが使用されます。

次に、 マク ロの RLOC から生成された相対配置の単純な例を示します。 このマクロは、 2x2 パターンに並べられた 2つの SRL > FF > FF 回路で構成されます。 図 9-3 を参照して ください。

適切な相対配置を作成するには、 次のよ うにセルに RLOC を設定します。

srl[0] X0Y0regs0[0] X0Y0regs1[0] X1Y0srl[1] X0Y1regs0[1] X0Y1regs1[1] X1Y1

次のコマンドは、 このマクロに m1 とい う名前を付けて作成します。

create_macro m0update_macro m0 {srl[0] X0Y0 regs0[0] X0Y0 regs1[0] X1Y0 srl[1] X0Y1 regs0[1] X0Y1 regs1[1] X1Y1}

X-Ref Target - Figure 9-3

図 9-3 : サンプル回路の回路図

Page 115: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 115UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

マクロは自動的に配置させるか、 セッ ト と して手動で配置できます。 マク ロの配置は図 9-4 のよ うになり ます。

マク ロには、 LUTRAM に基づく SRL が含まれており、 これは SLICEM タイプ スライスにのみ配置可能なので、 ロケーシ ョ ンは多少制限されます。 このマクロは、 SLICEM 列の右に SLICEL 列のある と ころにのみ配置可能です。

注意 : 多くのオブジェク トが配置されているスライスが一箇所に集中している と、 密集の原因とな り、 配線が困難とな り、 パフォーマンスに悪影響を及ぼす可能性があ り ます。

絶対グリ ッ ド マクロの例

異なるサイ ト タイプのセルをマクロに含める場合は、 絶対グ リ ッ ドを使用する必要があ り ます。

絶対グ リ ッ ド (RPM グ リ ッ ド と も呼ばれる ) は、 デバイス内のロケーシ ョ ンに基づいてサイ トの座標を定義する絶対座標システムです。 絶対グ リ ッ ドでは、 サイ トのサイズも考慮されます。 RAM および DSP ブロ ッ クは、 スライスより も幅が広くなっています。 絶対グ リ ッ ドを図 9-5 に示します。

X-Ref Target - Figure 9-4

図 9-4 : マクロの配置例

Page 116: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 116UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

この例では、 3 つの異なるタイプのセルから、 絶対グ リ ッ ドを使用してマクロが作成されています。 入力ポートからの入力データ パスが、2 段のレジスタを介してブロ ッ ク RAM に接続されています。 これが図 9-5 に示されています。

マク ロの作成には、 セルのリ ス ト とそれらの絶対グ リ ッ ドを使用した相対ロケーシ ョ ン (RLOC) が必要です。 マク ロを作成する際、 絶対グ リ ッ ド マクロの相対配置をイ メージするのは難しいかも知れません。

推奨 : セルを一時的にデバイスの絶対ロケーシ ョ ンに配置し、 各セルの絶対グ リ ッ ド RLOC 値を取得します。

X-Ref Target - Figure 9-5

図 9-5 : 絶対グリ ッ ドの回路例

Page 117: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 117UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

図 9-6 に示すよ うに、 セルはまず手動で配置し、 適切なロケーシ ョ ンに調整します。

絶対グ リ ッ ドでは絶対ロケーシ ョ ンが指定されますが、 マクロの相対配置を満足できるロケーシ ョ ンであれば、デバイスのどこにでも配置できます。 この例では、 相対ロケーシ ョ ンは左下角を基点と して指定されています。

ただし、絶対グ リ ッ ド ロケーシ ョ ンでは絶対配置ではなく相対配置が指定されます。 これによ り、相対配置が保持されるロケーシ ョ ンであれば、 マク ロをデバイスのどこにでも配置できます。

この例は、 ILOGIC、 スライス、およびブロ ッ ク RAM が含まれていて多少複雑であ り、 マク ロのロケーシ ョ ンもある程度制限されますが、 図 9-7 にオレンジ色でハイライ ト されている 3 つのどのロケーシ ョ ンにでも配置できます。

X-Ref Target - Figure 9-6

図 9-6 : 絶対グリ ッ ド マクロ用にセルを手動配置

Page 118: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 118UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

絶対グ リ ッ ド RLOC を判断するには、 サイ トの RPM_X および RPM_Y プロパティを使用します。 たとえば、 下のブロッ ク RAM はサイ ト RAMB36_X0Y0 に配置されます。

X-Ref Target - Figure 9-7

図 9-7 : XDC マクロを配置可能な 3 つのロケーシ ョ ン

Page 119: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 119UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

セルではなくサイ ト を選択する と、 RPM_X が 33、 RPM_Y が 0 と表示されます (図 9-8)。 これらが絶対グ リ ッ ド座標です。 対応する RLOC 値は X33Y0 です。

同じ方法を使用して、スライスの絶対 RLOC 値を取得できます (図 9-9)。このスライス内のセルの RLOC は X31Y0 です。

X-Ref Target - Figure 9-8

図 9-8 : ブロック RAM の絶対グリ ッ ド座標

X-Ref Target - Figure 9-9

図 9-9 : スライスの絶対グリ ッ ド座標

Page 120: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 120UG903 (v2014.3) 2014 年 10 月 31 日

第 9 章 : 相対配置マクロの定義

マクロに m0 とい う名前を付けて作成するには、 次の 2 つのコマンドを使用します。

create_macro m0update_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 cellsset cells [get_cells -hier [list ireg0* ireg1* *SIMPLE_PRIM36.ram]]create_macro m0update_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 マクロの作成および管理が簡略化されます。

Page 121: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 121UG903 (v2014.3) 2014 年 10 月 31 日

付録 A

サポート される XDC および SDC コマンド

サポート される XDC および SDC コマンドについてこの付録では、 Vivado® 統合設計環境 (IDE) でサポー ト されるザイ リ ン ク ス デザイ ン制約 (XDC) および SDC(Synopsys Design Constraints) コマンドを示します。 次の内容が含まれます。

• 「XDC ファ イルで使用可能なコマンド」

• 「サポート される SDC コマンド」

• 「サポート されない SDC コマンド」

Page 122: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 122UG903 (v2014.3) 2014 年 10 月 31 日

付録 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

add_cells_to_pblock

create_pblock

delete_pblock

remove_cells_from_pblock

resize_pblock

create_macro

delete_macros

update_macro

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_load

set_logic_dc

set_logic_one

set_logic_zero

set_logic_unconnected

デバイス オブジェク トのクエリ タイ ミング オブジェク トのクエリ 汎用

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

all_clocks

get_path_groups

get_clocks

get_generated_clocks

get_timing_arcs

set

expr

list

filter

current_instance

get_hierarchy_separator

set_hierarchy_separator

get_property

set_property

set_units

endgroup

startgroup

フロアプラン オブジェク トのクエリ

get_pblocks

get_macros

Page 123: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 123UG903 (v2014.3) 2014 年 10 月 31 日

付録 A : サポート される XDC および SDC コマンド

サポート される SDC コマンド注記 : -quiet および -verbose オプシ ョ ンはすべてのザイ リ ンクス Tcl で サポート されるので、 次の表では省略されています。

表 A-2 : サポート される SDC コマンド

SDC 1.9 ザイリンクス SDC 注記

current_instance

[instance_name]current_instance

[instance_name]read_xdc -cells/-ref または SCOPED_TO_xxx 制約ファイル プロパテ ィ が使用される場合、Vivado IDE での get_portsの処理方法は異なり ます。

expr expr

list list Vivado IDE では、Tcl リ ス トはオブジェク トのコンテナーと しても使用されます。

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]

set_units -time で VivadoIDE のタイ ミ ングの単位を変更するこ とはできません。

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

Page 124: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 124UG903 (v2014.3) 2014 年 10 月 31 日

付録 A : サポート される XDC および 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]

[-async_pins]

[-output_pins]

[-level_sensitive]

[-edge_triggered]

current_design current_design Vivado IDE では、 現在のデザインはメモ リに読み込まれているデザインを指しており、 上位モジュールまたはエンティテ ィ以外の別のモジュールまたはエンティティに変更するこ とはできません。

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

[-regexp]

[-nocase]

patterns

[-filter arg]

[-include_unsupported]

[-of_objects args]

Vivado IDE では、 デザインに読み込むこ とができるのは 1 つのデバイ ス ラ イブラ リ のみなので、 ラ イブラ リ セルをクエリする際にライブラ リ を指定する必要はあ り ません。

表 A-2 : サポート される SDC コマンド (続き)

SDC 1.9 ザイリンクス SDC 注記

Page 125: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 125UG903 (v2014.3) 2014 年 10 月 31 日

付録 A : サポート される XDC および SDC コマンド

get_lib_pins

[-hsc separator]

[-regexp]

[-nocase]

patterns

get_lib_pins

[-regexp]

[-nocase]

patterns

[-filter arg]

[-of_objects args]

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]

[-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]

表 A-2 : サポート される SDC コマンド (続き)

SDC 1.9 ザイリンクス SDC 注記

Page 126: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 126UG903 (v2014.3) 2014 年 10 月 31 日

付録 A : サポート される XDC および 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]

[-edge_shift args]

[-add]

[-master_clock arg]

[-combinational]

objects

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]

[-from args]

[-to args]

[-through args]

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]

[-group args]

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

表 A-2 : サポート される SDC コマンド (続き)

SDC 1.9 ザイリンクス SDC 注記

Page 127: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 127UG903 (v2014.3) 2014 年 10 月 31 日

付録 A : サポート される XDC および 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]

[-setup]

[-hold]

uncertainty

[objects]

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

表 A-2 : サポート される SDC コマンド (続き)

SDC 1.9 ザイリンクス SDC 注記

Page 128: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 128UG903 (v2014.3) 2014 年 10 月 31 日

付録 A : サポート される XDC および 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]

[-rise]

[-fall]

[-max]

[-min]

[-add_delay]

[-network_latency_included]

[-source_latency_included]

delay

objects

[-reference_pin args]

Vivado IDE では、内部ピンでは入力遅延はサポート されません。

set_max_delay

[-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]

delay_value

set_max_delay

[-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]

delay

[-reset_path]

[-datapath_only]

set_max_time_borrow

delay_value

object_list

set_max_time_borrow

delay

objects

表 A-2 : サポート される SDC コマンド (続き)

SDC 1.9 ザイリンクス SDC 注記

Page 129: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 129UG903 (v2014.3) 2014 年 10 月 31 日

付録 A : サポート される XDC および SDC コマンド

set_min_delay

[-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]

delay_value

set_min_delay

[-rise]

[-fall]

[-from args]

[-to args]

[-through args]

[-rise_from args]

[-rise_to args]

[-rise_through args]

[-fall_to args]

[-fall_from args]

[-fall_through args]

delay

[-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]

[-rise]

[-fall]

[-max]

[-min]

[-add_delay]

[-network_latency_included]

[-source_latency_included]

delay

objects

[-reference_pin args]

Vivado IDE では、内部ピンでは出力遅延はサポート されません。

set_propagated_clock

object_list

set_propagated_clock

objectVivado IDE では、 すべての クロ ッ クはデフ ォル ト で伝搬クロ ッ ク と して処理されます。

表 A-2 : サポート される SDC コマンド (続き)

SDC 1.9 ザイリンクス SDC 注記

Page 130: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 130UG903 (v2014.3) 2014 年 10 月 31 日

付録 A : サポート される XDC および 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]

capacitance

objects

[-rise]

[-fall]

Vivado IDE では、 set_load コマンドは消費電力解析にのみ関係します。

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

[-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]

Vivado IDE では、set_operating_condition

s コマンドは消費電力解析のみの動作条件を指定し、 タイ ミ ング レポート には影響しません。Vivado IDE のタイ ミ ング エンジンは、config_timing_analysis

コマンドで制御します。config_timing_analysis

の詳細は、 『Vivado Design SuiteTcl コマンド リ ファレンス ガイド』 (UG835) [参照 6] を参照してください。

表 A-2 : サポート される SDC コマンド (続き)

SDC 1.9 ザイリンクス SDC 注記

Page 131: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 131UG903 (v2014.3) 2014 年 10 月 31 日

付録 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

Page 132: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 132UG903 (v2014.3) 2014 年 10 月 31 日

付録 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. 『Vivado Design Suite ユーザー ガイ ド : 合成』 (UG901)

6. 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835)

7. 『Vivado Design Suite プロパティ リ ファレンス ガイ ド』 (UG912)

8. 『Vivado Design Suite ユーザー ガイ ド : プログラムおよびデバッグ』 (UG908)

9. 『7 シ リーズ FPGA SelectIO リ ソース ユーザー ガイ ド』 (UG471)

10. 『制約ガイ ド』 (UG625)

Page 133: Vivado Design Suite - Xilinx...Vivado Design Suite ユーザー ガイド 制約の使用 UG903 (v2014.3) 2014 年 10 月 31 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま

制約の使用 japan.xilinx.com 133UG903 (v2014.3) 2014 年 10 月 31 日

第 章 :

ト レーニング リソースザイ リ ンクスでは、 本書に含まれるコンセプ ト を説明するさまざまな ト レーニング コースおよびオンライン ビデオを提供しています。 次のリ ンクから関連する ト レーニング リ ソースを参照して ください。

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 extentpermitted by applicable law:(1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES ANDCONDITIONS, 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 connectionwith, 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 suchdamage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.Xilinx assumes no obligation to correct anyerrors 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 andsupport 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 applicationrequiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in such critical applications, please refer to Xilinx’sTerms 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 brandsincluded herein are trademarks of Xilinx in the United States and other countries.All other trademarks are the property of their respective owners.

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの

右下にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 フ ィードバッ クは日本語で

入力可能です。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アド レスへのお問い合わせは受

け付けており ません。 あらかじめご了承ください。