+ All Categories
Home > Documents > Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン...

Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン...

Date post: 05-Oct-2020
Category:
Upload: others
View: 5 times
Download: 0 times
Share this document with a friend
171
Vivado Design Suite ユーザー ガイド インプリメンテーション この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料に よっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきまし ては、必ず最新英語版をご参照ください。 UG904 (v2017.4) 2017 年 12 月 20 日
Transcript
Page 1: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

Vivado Design Suite ユーザー ガイ ド

インプリ メンテーシ ョ ン

UG904 (v2017.3) 2017 年 10 月 27 日

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

UG904 (v2017.4) 2017 年 12 月 20 日

Page 2: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

インプリ メンテーシ ョ ン 2UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.com

改訂履歴

次の表に、 この文書の改訂履歴を示します。

日付 バージョ ン 改訂内容

2017 年 10 月 27 日 2017.3 第 2 章:

• 「インプ リ メンテーシ ョ ン ス ト ラテジのカスタマイズ」 をアップデート。

• 「synth_design の構文」、 「link_design の構文」、 「opt_design の構文」、 「phys_opt_design の構文」、 および 「iphys_opt_design」 をアップデート。

• 「キャ リー 適化」 をアップデート。

• 「シフ ト レジスタの 適化 (デフォルト )」 に新しい 適化を追加。

• 表 2-6 および 「使用可能な物理 適化」 に 「立ち下がりエッジ レジスタの挿入」 の情報を追加。

• 「-directive オプシ ョ ンの使用」 を RuntimeOptimized の情報でアップデート。

• 「インク リ メンタル コンパイル」 に Quick 指示子の情報を追加。

• 「report_incremental_reuse コマンドの使用」 をアップデート。

付録 C:

• 新しいセクシ ョ ン 「特定リ リースのス ト ラテジの表示」 を追加。

2017 年 10 月 10 日 2017.1 第 2 章: 翻訳のエラーを修正。

2017 年 5 月 9 日 2017.1 Vivado IDE の新しいルッ ク アンド フ ィールに基づいてアップデート。

第 2 章:

• 「非プロジェク ト モードでのインプリ メンテーシ ョ ンの実行」 に関連の Tcl コマンドを追加。

• 「非プロジェク ト モードのサンプル スク リプ トでの主要な手順」 に link_design のオプシ ョ ンに関する情報を追加。

• 「キャ リー 適化」、 「等価ド ライバーの統合」、 「シフ ト レジスタの 適化 (デフォルト )」を追加。 表 2-3 および表 2-4 を関連情報でアップデート。

• 「-debug_log および -verbose オプシ ョ ンの使用」 をアップデート。

• 「-fanout_opt オプシ ョ ンの使用」 および 「-no_bufg_opt オプシ ョ ンの使用」 を追加。

• 「SLR をまたぐパスの 適化」 を追加し、 表 2-6 を関連情報でアップデート。

• 「phys_opt_design の構文」 をアップデート。

• 「高再利用モード と低再利用モード」 を追加。

• 「インク リ メンタル配置配線の実行」 をアップデート し、 「report_incremental_reuse コマンドの使用」 を追加。

• 「Pblock 競合の例」 を追加。

• 「タ イ ミ ング レポート 」 のレポート をアップデート。

第 3 章:

• 「未固定セル」 で制約をアップデート。

• 「使用例 3: タイ ミ ングを向上するためのパイプライン段の追加」 で Tcl スク リプ ト をアップデート。

付録 C:

• 表 C-2、 表 C-3、 および表 C-4 に新しいス ト ラテジ Performance_EarlyBlockPlacement を追加。

• 「特定リ リースの -directive 値の表示」 を追加。

UG904 (v2017.4) 2017 年 12 月 20 日

2017/12/20: Vivado® Design Suite 2017.4 リリース。2017.3 リリースから内容の変更なし。

Page 3: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

目次

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

第 1 章 : インプリ メンテーシ ョ ンの準備Vivado インプリ メンテーシ ョ ン プロセスについて. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

インプリ メンテーシ ョ ンの制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

IP の設定、 インプリ メン ト 、 および検証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

インプリ メンテーシ ョ ンでのデザイン制約の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

チェッ クポイン ト を使用したデザインのスナップシ ョ ッ トの保存および復元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

第 2 章 : デザインのインプリ メンテーシ ョ ン非プロジェク ト モードでのインプリ メンテーシ ョ ンの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

プロジェク ト モードでのインプリ メンテーシ ョ ンの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

インプリ メンテーシ ョ ン ス ト ラテジのカスタマイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

インプリ メンテーシ ョ ン run の実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

プロセスのバッ クグラウンドへの移動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

インプリ メンテーシ ョ ンの段階ごとの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

インプリ メンテーシ ョ ン コマンドについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

インプリ メンテーシ ョ ンのサブプロセス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

合成済みデザインを開く . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

ロジッ ク 適化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

消費電力の 適化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

物理 適化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

配線 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

インク リ メンタル コンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

第 3 章 : インプリ メンテーシ ョ ン結果の解析と表示インプリ メンテーシ ョ ン run の監視 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

インプリ メンテーシ ョ ン完了後の次の操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

メ ッセージの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

インプリ メンテーシ ョ ン レポートの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

インプリ メンテーシ ョ ン結果の変更 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

Vivado ECO フロー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

付録 A : リモート ホストおよび LSF の使用リモート Linux ホス トでの run の実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

SSH の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

付録 B : ISE コマンド と Vivado コマンドの対照表Tcl コマンド とオプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

インプリ メンテーシ ョ ン 3UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 4: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 C : インプリ メンテーシ ョ ンのカテゴリ、 ス ト ラテジの説明、 および -directive の値インプリ メンテーシ ョ ンのカテゴ リ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

インプリ メンテーシ ョ ン ス ト ラテジの説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

インプリ メンテーシ ョ ン ス ト ラテジで使用される opt_design および place_design の -directive の値 . . . . . . . . . . 165

インプリ メンテーシ ョ ン ス ト ラテジで使用される phys_opt_design および route_design の -directive の値 . . . . . 166

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

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

Documentation Navigator およびデザイン ハブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

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

お読みください: 重要な法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

インプリ メンテーシ ョ ン 4UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 5: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章

インプリ メンテーシ ョ ンの準備

Vivado インプリ メンテーシ ョ ン プロセスについて

ザイ リ ンクス Vivado® Design Suite では、次のよ うなさまざまなデザイン ソースから UltraScale™ FPGA およびザイ リ

ンクス 7 シ リーズ FPGA デザインをインプリ メンテーシ ョ ンできます。

• RTL デザイン

• ネッ ト リ ス ト デザイン

• IP 中心のデザイン フロー

図 1-1 に Vivado ツール フローを示します。

Vivado インプリ メンテーシ ョ ンは、 デザインの論理制約、 物理制約、 タイ ミ ング制約を満たしながらネッ ト リ ス ト

をデバイス リ ソースに配置配線するためのすべての段階を含みます。

Vivado ツールでサポート されるデザイン フローの詳細は、 『Vivado Design Suite ユーザー ガイ ド : デザイン フローの

概要』 (UG892) [参照 1] を参照してください。

インプリ メンテーシ ョ ン 5UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 6: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章: インプリ メンテーシ ョ ンの準備

SDC および XDC 制約のサポート

Vivado インプリ メンテーシ ョ ンは、 タイ ミ ング ド リブン フローです。 デザインの要件および制限を指定するのに、

業界標準の Synopsys デザイン制約 (SDC) とザイ リ ンクス デザイン制約 (XDC) がサポート されます。

Vivado インプリ メンテーシ ョ ンのサブプロセス

Vivado Design Suite のインプリ メンテーシ ョ ン プロセスでは、 論理ネッ ト リ ス トおよび制約が配置配線済みデザイン

に変換され、 ビッ ト ス ト リームを生成できるよ うにします。 インプリ メンテーシ ョ ン プロセスには、 次のサブプロ

セスがあ り ます。

1. デザインの 適化:

ターゲッ トのザイ リ ンクス デバイスにフ ィ ッ ト しやすいよ うに論理デザインを 適化します。

2. デザインの消費電力 適化 (オプシ ョ ン):

ターゲッ トのザイ リ ンクス デバイスの消費電力を削減するよ うデザイン エレ メン ト を 適化します。

3. デザインの配置:

デザインをターゲッ ト ザイ リ ンクス デバイスに配置します。

4. 配置後のデザインの消費電力 適化 (オプシ ョ ン):

配置後に消費電力を削減するよ う追加の 適化を実行します。

5. 配置後のデザインの物理 適化 (オプシ ョ ン):

配置に基づく見積も り タイ ミ ングを使用してロジッ クおよび配置を 適化します。 ファンアウ トの大きいド ラ

イバーの複製も含まれます。

6. デザインの配線:

デザインをターゲッ ト ザイ リ ンクス デバイスに配線します。

X-Ref Target - Figure 1-1

図 1-1: Vivado Design Suite のデザイン フロー

インプリ メンテーシ ョ ン 6UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 7: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章: インプリ メンテーシ ョ ンの準備

7. 配線後のデザインの物理 適化 (オプシ ョ ン):

配線後の実際の遅延を使用して、 ロジッ ク、 配置、 および配線を 適化します。

8. ビッ ト ス ト リームの生成:

ザイ リ ンクス デバイス コンフ ィギュレーシ ョ ンのビッ ト ス ト リームを生成します。 通常、 インプリ メンテー

シ ョ ンの後にビッ ト ス ト リームを生成します。

ビッ ト ス ト リーム生成の詳細は、 『Vivado Design Suite ユーザー ガイ ド : プログラムおよびデバッグ』 (UG908) [参

照 12] のこのセクシ ョ ンを参照してください。

注記: Vivado Design Suite では、 デザインの一部をインプリ メン ト してパフォーマンスを見積もるモジュール解析が

サポート されています。 このフローでは、 I/O が過剰に使用されないよ うにするため、 I/O バッファーは挿入されま

せん。 詳細は、 『Vivado Design Suite ユーザー ガイ ド : 階層デザイン』 (UG905) [参照 2] を参照してください。

Vivado ツールでのマルチスレッ ド

マルチプロセッサ システムでは、 DRC レポート、 スタティ ッ ク タイ ミ ング解析、 配置、 配線などのプロセスを高速

化するため、 マルチスレッ ドが使用されます。 同時に使用される 大スレッ ド数は、 プロセッサの数、 タスクに

よって異なり ます。 タスクによって使用される 大スレッ ド数は、 次のとおりです。

• DRC レポート : 8

• スタティ ッ ク タイ ミ ング解析: 8

• 配置: 8

• 配線: 8

• 物理 適化: 8

同時に実行可能なスレッ ドのデフォルト 大数は、 OS によって異なり ます。 Windows システムでは 2 で、 Linux シ

ステムではデフォルトは 8 です。 この値は、 general.maxThreads というパラ メーターを使用して変更できます。

制限を変更するには、 次の Tcl コマンドを使用します。

Vivado% set_param general.maxThreads <new limit>

<new limit> に有効な値は、 1 ~ 8 の整数値です。

Windows システムでの Tcl 例:

Vivado% set_param general.maxThreads 2

この場合、 プロセッサ数または実行されるタスクにかかわらず、すべてのタスクで使用されるスレッ ドの 大数は 2

です。 システムに 8 個以上のプロセッサがある場合、 タスクで使用される 大スレッ ド数を 8 に設定できます。

Vivado% set_param general.maxThreads 8

同時に使用可能なスレッ ド数は、 次の 小の値になり ます。

• プロセッサの 大数

• タスクの制限スレッ ド数

• 一般制限スレッ ド数

インプリ メンテーシ ョ ン 7UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 8: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章: インプリ メンテーシ ョ ンの準備

Tcl API によるスクリプ トのサポート

Vivado Design Suite には、 Tcl API が含まれています。 Tcl API を使用する と、 すべてのデザイン フローをスク リプ ト

で実行でき、 デザイン フローを要件に合わせてカスタマイズできます。

注記: Tcl コマンドの詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 18] を参照する

か、 「<command> -help」 と入力してください。

インプリ メンテーシ ョ ンの制御

Vivado Design Suite ではさまざまなデザイン フローがあ り、多種のデザイン ソースがサポート されています。ザイ リ

ンクス デバイスにダウンロード可能なビッ ト ス ト リームを生成するには、 インプリ メンテーシ ョ ンを実行する必要

があ り ます。

インプ リ メンテーシ ョ ンは、 論理ネッ ト リ ス ト をターゲッ ト ザイ リ ンクス デバイスの物理的なアレイにマップする

ための一連の手順を指します。 具体的には次が実行されます。

• ロジッ ク 適化

• ライブラ リ セルの配置

• セル間の接続の配線

プロジェク ト モード と非プロジェク ト モード

Vivado Design Suite では、 インプリ メンテーシ ョ ンをプロジェク ト ファ イルを使用して (プロジェク ト モード )、 また

はプロジェク ト ファ イルを使用せずに (非プロジェク ト モード ) 実行できます。

プロジェク ト モード

プロジェク ト ファイル (.xpr) とそのディ レク ト リ構造を作成する と、 次が可能になり ます。

• デザイン ソース ファ イルの管理。

• 合成 run およびインプリ メンテーシ ョ ン run の結果の保存。

• デザイン フロー全体を通したプロジェク ト ステータスの監視。

プロジェク ト モードでの作業

プロジェク ト モードでは、 ディ スク上にディレク ト リ構造が作成され、 それを利用してデザイン ソース、 run の結

果およびレポート、 プロジェク ト ステータスが管理されます。

デザイン データ、 プロセス、 およびステータスを自動管理するには、 Vivado プロジェク ト ファ イル (.xpr) に保存さ

れるプロジェク ト インフラス ト ラ クチャが必要です。

また、 プロジェク ト モードでは、 デザイン フローの主要な段階のチェッ クポイン ト ファイルが、 自動的にローカル

プロジェク ト ディレク ト リに保存されます。

プロジェク ト モードでインプリ メンテーシ ョ ンを実行するには、 IDE で [Run Implementation] をク リ ッ クするか、 Tcl

コマンドで launch_runs を使用します。 Vivado Design Suite でのプロジェク トの使用に関する詳細は、 『Vivado

Design Suite ユーザー ガイ ド : デザイン フローの概要』 (UG892) [参照 1] のこのセクシ ョ ンを参照してください。

インプリ メンテーシ ョ ン 8UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 9: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章: インプリ メンテーシ ョ ンの準備

Flow Navigator

Vivado 統合設計環境 (IDE) を使用する と、 完全なデザイン フローを実行できます。 Vivado IDE には、 Flow Navigator

という フローを制御するインターフェイスがあ り ます。

Flow Navigator は Vivado Design Suite のメ イン ウ ィンド ウの左側に表示され、 こ こからデザインおよび IP を作成、 イ

ンプ リ メン ト 、 および検証できます。 デザイン フローを簡略化するため、 インプリ メンテーシ ョ ン プロセス全体を

コマンドをク リ ッ クするだけで実行できます。 図 1-2 に、 Flow Navigator の [Implementation] セクシ ョ ンを示します。

重要: このガイ ドでは、 インプリ メンテーシ ョ ン以外の Vivado IDE の詳細は説明しません。 デザイン フロー全体に

関連する Vivado IDE の詳細は、 『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893) [参照 3] を参照し

てください。

非プロジェク ト モード

プロジェク ト ファイルおよびローカル ディ レク ト リ を作成せずに、 メモ リ内のデザインで作業するこ と も可能で

す。 プロジェク ト ファ イルを使用しないコンパイル形式のフローは、 非プロジェク ト モード と呼ばれます。 ソース

ファ イルおよびデザイン制約は、 現在の場所から メモ リに読み込みます。 イン メモ リ デザインでデザイン フローを

実行する際、 中間ファイルが記述されるこ とはあ り ません。

非プロジェク ト モードでは、 各インプリ メンテーシ ョ ン Tcl コマンドを適切なオプシ ョ ンと共に使用し、 各段階を

個別に実行する必要があ り ます。

変更を保存したり段階を再実行したりする必要なく、 デザインに変更を加え、 デザイン フローを進めていく こ とが

できます。 デザイン フローのどの段階でも、 レポート を生成したり、 デザイン チェッ クポイン ト (.dcp) を保存し

たりできます。

重要: 非プロジェク ト モードでは、 Vivado デザイン ツールを終了する と、 イン メモ リ デザインは失われます。 その

ため、 合成、 配置、 配線などの主な段階が終了したら、 デザイン チェッ クポイン ト を保存するこ とをお勧めします。

X-Ref Target - Figure 1-2

図 1-2: Flow Navigator: [Implemention] セクシ ョ ン

インプリ メンテーシ ョ ン 9UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 10: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章: インプリ メンテーシ ョ ンの準備

デザイン チェッ クポイン トは、 プロジェク ト モードおよび非プロジェク ト モード両方で保存できます。 デザイン

チェッ クポイン ト を開く こ とができるのは、 非プロジェク ト モードのみです。

プロジェク ト モード と非プロジェク ト モードの違い

Vivado インプリ メンテーシ ョ ンは、 プロジェク ト モードおよび非プロジェク ト モード両方で実行できます。 Vivado

IDE および Tcl API は、 プロジェク ト モードおよび非プロジェク ト モード両方で使用できます。

プロジェク ト モード と非プロジェク ト モードには、 多くの違いがあ り ます。 次に、 非プロジェク ト モードでは使用

できない機能を示します。

• Flow Navigator

• デザイン ステータス インジケーター

• IP カタログ

• インプ リ メンテーシ ョ ン run および run ス ト ラテジ

• [Design Runs] ウ ィンド ウ

• [Messages] ウ ィンド ウ

• [Reports] ウ ィンド ウ

注記: この リ ス トには、 非プロジェク ト モードでサポート されない機能がすべて含まれているわけではあ り ません。

非プロジェク ト ベースのデザインをインプリ メン トするには、 次の Tcl コマンドを個別に実行する必要があ り ます。

• opt_design

• power_opt_design (オプシ ョ ン)

• place_design

• phys_opt_design (オプシ ョ ン)

• route_design

• phys_opt_design (オプシ ョ ン)

• write_bitstream

インプリ メンテーシ ョ ンの各段階は、 Tcl コンソールから対話的に実行するか、 Vivado IDE で実行するか、 カスタム

Tcl スク リプ ト を使用して実行できます。 デザイン フローは、 必要に応じてレポート コマンドや 適化を追加してカ

スタマイズできます。 詳細は、 「非プロジェク ト モードでのインプリ メンテーシ ョ ンの実行」 を参照してください。

このガイ ドでは、 プロジェク ト モードおよび非プロジェク ト モードでのインプリ メンテーシ ョ ンの実行について詳

細に説明します。

プロジェク ト モードまたは非プロジェク ト モードを使用した Vivado Design Suite の実行に関する詳細は、 次の資料

を参照してください。

• 『Vivado Design Suite ユーザー ガイ ド : デザイン フローの概要』 (UG892) [参照 1]

• 『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893) [参照 3]

インプリ メンテーシ ョ ン 10UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 11: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章: インプリ メンテーシ ョ ンの準備

インプリ メンテーシ ョ ン フローの開始

インプ リ メンテーシ ョ ン フローは通常、 メモ リに合成済みデザインを読み込んでから開始します。 その後、 インプ

リ メンテーシ ョ ン フローを実行するか、 デザインを解析してデザインと制約を調整し、 アップデート してからも う

一度読み込みます。

合成済みデザインでインプ リ メンテーシ ョ ン フローを開始するには、 次の 2 つの方法があ り ます。

• Vivado 合成を実行します。 プロジェク ト モードでは、 合成 run に合成結果が含まれ、 これらの結果が自動的に

インプ リ メンテーシ ョ ン run の入力と して使用されます。 非プロジェク ト モードでは、 synth_design コマン

ドが完了した後、 合成結果はメモ リ内にあるので、 そこからインプリ メンテーシ ョ ンに進むこ とができます。

• 合成済みネッ ト リ ス ト を読み込みます。 合成にサードパーティ ツールを使用した場合などは、 合成済みネッ ト

リ ス ト を入力デザイン ソース と して使用できます。

インプ リ メンテーシ ョ ンを開始するには、 次の手順に従います。

• プロジェク ト モードでは、 インプリ メンテーシ ョ ン run を実行します。

• 非プロジェク ト モードでは、 スク リプ ト を実行するか、 コマンドを対話的に実行します。

デザインを解析して制約を調整するには、 インプリ メンテーシ ョ ンを実行せずに合成済みデザインを読み込みます。

• プロジェク ト モードでは、 Flow Navigator の [Open Synthesized Design] をク リ ッ ク して、 合成 run の結果である

合成済みデザインを開きます。

• 非プロジェク ト モードでは、 link_design コマンドを使用してデザインを読み込みます。

非プロジェク ト モードでは、 デザイン チェッ クポイン ト (.dcp) を使用するこ と もできます。 チェッ クポイン ト を

開く と、 デザインが読み込まれてそのチェッ クポイン トの状態が復元されます。 配置および配線データが含まれる

場合もあ り ます。 これによ り、 配線済みデザインを読み込んで配線を変更したり、 配置済みデザインを読み込んで、

異なるオプシ ョ ンを使用して配線を複数回実行するなど、 再配線インプリ メンテーシ ョ ン フローを実行できます。

合成済みネッ ト リス トのインポート

Vivado Design Suite では、ネッ ト リ ス ト デザインがサポート されており、ザイ リ ンクス ツールまたはサードパーティ

ツールで合成済みのネッ ト リ ス ト をインポートできます。 サポート されるネッ ト リ ス ト フォーマッ トは、 次のとお

りです。

• 構造 Verilog

• 構造 SystemVerilog

• EDIF

• ザイ リ ンクス NGC

• 合成済みデザイン チェッ クポイン ト (DCP)

×

重要: Vivado Design Suite では、 UltraScale デバイスに対して NGC フォーマッ トのファイルはサポート されていません。

Vivado Design Suite で IP を再生成し、 ネイティブ出力ファイルを使用するこ とをお勧めします。 または、 NGC2EDIF

コマンドを使用して NGC ファイルを EDIF に変換し、 インポートするこ と もできます。 今後は XST で生成された

NGC フォーマッ トではなくネイティブ Vivado IP を使用するこ とをお勧めします。

インプリ メンテーシ ョ ン 11UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 12: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章: インプリ メンテーシ ョ ンの準備

重要: プロジェク ト モードまたは非プロジェク ト モードで IP を使用する場合は、 DCP ファ イルではなく XCI ファ イ

ルを使用してください。 このファ イルを使用する と、 すべてのデザイン フロー段階で IP 出力ファイルが使用されま

す。 IP が独立モジュールと して合成されており、 関連する DCP ファ イルが既にある場合は、 その DCP ファ イルが自

動的に使用され、 IP は再合成されません。 詳細は、 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』

(UG896) [参照 4] のこのセクシ ョ ンを参照してください。

Vivado Design Suite でサポート されるソース ファ イルおよびプロジェク ト タイプの詳細は、『Vivado Design Suite ユー

ザー ガイ ド : システム レベル デザイン入力』 (UG895) [参照 6] を参照してください。

RTL ソースから開始

Vivado インプリ メンテーシ ョ ンを実行するには、 合成済みネッ ト リ ス トが必要です。 デザインは合成済みネッ ト リ

ス トから、 または RTL ソース ファ イルから開始できます。

重要: RTL ソースから開始する場合は、 インプ リ メンテーシ ョ ンの前に Vivado 合成を実行する必要があ り ます。

Vivado IDE では、 これが自動的に管理されます。 合成されていないデザインをインプリ メン ト しよ う とする と、 ま

ず合成を実行するかど うかを選択するオプシ ョ ンが表示されます。

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

非プロジェク ト モードで合成済みデザインを作成して開く

非プロジェク ト モードでは、 Tcl コマンド synth_design を使用して合成を実行し、 合成済みデザインを作成して

開く必要があ り ます。 サポート されている入力フォーマッ トの合成済みネッ ト リ ス ト を開くには、 Tcl コマンド

link_design も使用できます。 合成済みデザイン チェッ クポイン ト を開くには、 open_checkpoint コマンドを

使用します。

詳細は、 第 2 章の 「合成済みデザインを開く」 を参照してください。

プロジェク ト モードでインプリ メンテーシ ョ ン前にデザイン ネッ ト リス ト を読み込む

プロジェク ト モードでは、 RTL デザインの合成後、 またはネッ ト リ ス ト ベース プロジェク ト を開いて、 インプ リ メ

ンテーシ ョ ン前のデザイン ネッ ト リ ス ト を読み込むこ とができます。

合成済みデザインを開くには、 次のいずれかを実行します。

• メ イン メニューから [Flow] → [Open Synthesized Design] をク リ ッ ク します。

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

• [Design Runs] ウ ィ ンド ウで合成 run を右ク リ ッ ク し、 [Open Run] をク リ ッ ク し

ます。

インプリ メンテーシ ョ ン 12UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 13: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章: インプリ メンテーシ ョ ンの準備

IP の設定、 インプリ メン ト、 および検証

合成前にデザインに IP をインポートする方法の詳細は、 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』

(UG896) [参照 4] のこのセクシ ョ ンを参照してください。

インプリ メンテーシ ョ ンでのデザイン制約の使用

推奨: インプリ メンテーシ ョ ンを実行する際は、 デザイン制約を設定して ください。 デザイン制約には、 物理制約と

タイ ミ ング制約の 2 種類があ り ます。

デザイン制約には、 物理制約と タイ ミ ング制約の 2 種類があ り ます。 これらの制約を、 次に説明します。

物理制約 物理制約は、 次のよ うな論理デザイン オブジェク ト とデバイス リ ソースの関係を定義します。

• パッケージ ピンの配置。

• ブロ ッ ク RAM、 DSP、 LUT、 フ リ ップフロ ップなど、 セルの絶対または相対配置。

• セルをデバイスの汎用領域に割り当てるフロアプラン制約。

• デバイス コンフ ィギュレーシ ョ ン設定。

タイ ミング制約

タイ ミ ング制約は業界標準の SDC で記述され、 デザインの周波数要件を定義します。

タイ ミ ング制約を設定しない場合、 デザインがワイヤの長さおよび配線の密集度にのみ基づいて 適化され、 デザ

イン パフォーマンスが評価されたり向上したりするこ とはあ り ません。

UCF タイ ミング制約はサポート されない

重要: Vivado Design Suite では、 UCF フォーマッ トはサポート されません。

UCF 制約を XDC コマンドに変換する方法については、 『ISE から Vivado Design Suite への移行ガイ ド』 (UG911) [参

照 19] のこのセクシ ョ ンを参照してください。

インプリ メンテーシ ョ ン 13UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 14: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章: インプリ メンテーシ ョ ンの準備

制約セッ トにより複数の制約ファイルをデザインに適用

制約セッ トは、 プロジェク ト モードのデザインに適用する制約ファイルのリ ス トです。 制約セッ トには、 XDC また

は Tcl ファ イルに記述されたデザイン制約が含まれます。

制約セッ トの構造

次の制約セッ トの構造がサポート されます。

• 複数の制約ファイルを含む制約セッ ト

• 個別の物理制約ファイルおよびタイ ミ ング制約ファイルを含む制約セッ ト

• マスター制約ファイル

• 制約の変更を含める新しい制約ファイル

• 複数の制約セッ ト

ヒン ト : 制約を機能に応じて別の制約ファイルに分けておく と、 制約ス ト ラテジ全体がわかりやすくな り、 タイ ミ ン

グおよびインプ リ メンテーシ ョ ンを変更しやすくな り ます。

複数の制約セッ ト

プロジェク トに複数の制約セッ ト を作成できます。 複数の制約セッ ト を作成する と、 さまざまなインプリ メンテー

シ ョ ン run で制約を試行できます。

たとえば、 合成と インプ リ メンテーシ ョ ンにそれぞれ別の制約セッ ト を指定できます。 この 2 つの制約セッ ト を使

用して、 合成、 シ ミ ュレーシ ョ ン、 インプリ メンテーシ ョ ンで異なる制約を試行できます。

デザイン制約を複数の制約セッ トに含めておく と、 次のよ うな利点があ り ます。

• 同じプロジェク トで別のザイ リ ンクス デバイスをターゲッ ト と して設定できます。 別のターゲッ ト デバイスを

使用する場合は、 別の物理制約およびタイ ミ ング制約が必要になる場合があ り ます。

• さまざまな条件でデザインを試行できます。 制約セッ ト を使用してでデザインのフロアプランを実行したり、

制約を厳し く した りできます。

• 制約の変更を管理しやくすなり ます。 マスター制約の代わりに、 別の制約ファイルに保存した制約を使用でき

ます。

ヒン ト : タイ ミ ング制約を検証するには、 合成済みデザインで report_timing_summary コマンドを実行します。 インプ

リ メンテーシ ョ ンの前に、 問題のある制約を修正してください。

配置配線に影響する制約の定義および制約での作業の詳細は、 『Vivado Design Suite ユーザー ガイ ド : 制約の使用』

(UG903) [参照 9] のこのセクシ ョ ンを参照してください。

インプリ メンテーシ ョ ン 14UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 15: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章: インプリ メンテーシ ョ ンの準備

制約を attribute 文として追加

制約は、 HDL ソースに attribute 文と して追加できます。 属性は、 Verilog および VHDL ソースの両方に追加でき、

Vivado 合成または Vivado インプリ メンテーシ ョ ンに渡すこ とができます。

HDL 属性と してのみ設定可能で、 XDC では設定できない制約もあ り ます。 この場合、 制約を HDL ソース ファ イル

で属性と して指定する必要があ り ます。 たとえば、 相対配置マクロ (RPM) は HDL 属性と して定義する必要があ り ま

す。 RPM とは、 複数のロジッ ク エレ メン ト (FF、 LUT、 DSP、 RAM など) の相対的な配置を指定したものです。

U_SET および HU_SET 属性を使用して RPM を定義し、 相対ロケーシ ョ ン属性を使用して相対配置を定義できます。

相対ロケーシ ョ ン制約の詳細は、『Vivado Design Suite ユーザー ガイ ド : 制約の使用』 (UG903) [参照 9] のこのセクシ ョ

ンを参照してください。

XDC でサポート されない制約の詳細は、『ISE から Vivado Design Suite への移行ガイ ド』 (UG911) [参照 19] を参照して

ください。

チェ ックポイン ト を使用したデザインのスナップシ ョ ッ トの保存および復元

Vivado Design Suite では、 物理デザイン データベースに配置配線情報が保存されます。 デザイン チェッ クポイン ト

ファ イル (.dcp) を使用する と、 デザイン フローの主要な段階でこの物理データベースを保存および復元できます。

チェッ クポイン トは、 フローの特定の地点におけるデザインのスナップシ ョ ッ トです。

デザイン チェッ クポイン ト ファ イルには、 次のものが含まれます。

• インプ リ メンテーシ ョ ン中に適用された 適化を含む現在のネッ ト リ ス ト

• デザイン制約

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

チェッ クポイン ト デザインに対しては、 Tcl コマンドを使用してデザイン フローの残りの段階を実行できます。 新

しいデザイン ソースを使用して変更するこ とはできません。

重要: プロジェク ト モードでは、 デザイン フローの進行に応じて、 Vivado デザイン ツールによ り自動的にチェッ ク

ポイン トが保存および復元されます。 非プロジェク ト モードでは、 デザイン フローの適切な段階でユーザーが

チェッ クポイン ト を保存する必要があ り ます。 保存しないと、 メモ リ内のデザインは失われます。

チェ ックポイン ト ファイルの保存 フローの任意の段階におけるデザイン データベースのスナップシ ョ ッ ト を保存するには、 [File] → [Write Checkpoint]

をク リ ッ ク します。 これによ り、 拡張子が .dcp のファイルが作成されます。

これに相当する Tcl コマンドは write_checkpoint です。

インプリ メンテーシ ョ ン 15UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 16: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 1 章: インプリ メンテーシ ョ ンの準備

チェ ックポイン ト ファイルの読み込み Vivado Design Suite でチェッ クポイン ト を開くには、 [File] → [Open Checkpoint] をク リ ッ ク します。

デザイン チェッ クポイン トが別のインメモ リ デザインと して開きます。

これに相当する Tcl コマンドは open_checkpoint です。

インプリ メンテーシ ョ ン 16UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 17: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章

デザインのインプリ メンテーシ ョ ン

非プロジェク ト モードでのインプリ メンテーシ ョ ンの実行

非プロジェク ト モードで合成済みデザインまたはネッ ト リ ス ト をターゲッ トのザイ リ ンクス デバイスにインプリ メ

ン トするには、 インプ リ メンテーシ ョ ンのサブプロセスに対応する Tcl コマンドを実行する必要があ り ます。

• デザインの 適化 (opt_design): ターゲッ トのザイ リ ンクス デバイスにフ ィ ッ ト しやすいよ うに論理デザイン

を 適化します。

• デザインの消費電力 適化 (power_opt_design) (オプシ ョ ン): ターゲッ トのザイ リ ンクス デバイスの消費電

力を削減するよ うデザイン エレ メン ト を 適化します。

• デザインの配置 (place_design): デザインをターゲッ ト ザイ リ ンクス デバイスに配置します。

• 配置後のデザインの消費電力 適化 (power_opt_design) (オプシ ョ ン): 配置後に消費電力を削減するよ う追

加の 適化を実行します。

• 配置後のデザインの物理 適化 (phys_opt_design) (オプシ ョ ン): 配置に基づく見積も り タイ ミ ングを使用し

てロジッ クおよび配置を 適化します。 ファンアウ トの大きいド ライバーの複製も含まれます。

• デザインの配線 (route_design): デザインをターゲッ ト ザイ リ ンクス デバイスに配線します。

• 配線後のデザインの物理 適化 (phys_opt_design) (オプシ ョ ン): 配線後の実際の遅延を使用して、 ロジッ ク、

配置、 および配線を 適化します。

• ビッ ト ス ト リームの生成 (write_bitstream): ザイ リ ンクス デバイス コンフ ィギュレーシ ョ ンのビッ ト ス ト

リームを生成します。 通常、 インプリ メンテーシ ョ ンの後にビッ ト ス ト リームを生成します。

ビッ ト ス ト リーム生成の詳細は、 『Vivado Design Suite ユーザー ガイ ド : プログラムおよびデバッグ』 (UG908) [参

照 12] のこのセクシ ョ ンを参照してください。

これらのプロセスは、 ま とめて 「インプリ メンテーシ ョ ン」 と呼ばれます。

コマンドは、 次のいずれかの方法で実行します。

• Vivado® IDE の Tcl コンソールから。

• Vivado Design Suite Tcl シェルの Tcl プロンプ トから。

• インプリ メンテーシ ョ ン コマンドを含む Tcl スク リプ ト を使用し、 Vivado Design Suite でそのスク リプ ト を実行。

インプリ メンテーシ ョ ン 17UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 18: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

非プロジェク ト モードのサンプル スクリプ ト

次に、 非プロジェク ト モードでインプリ メンテーシ ョ ンを実行するスク リプ ト例を示します。 スク リプ ト名が

run.tcl である場合、 Tcl シェルに 「source run.tcl」 と入力してスク リプ ト を呼び出します。

注記: read_xdc ステップでは、 XDC ファ イルから XDC 制約が読み出され、 制約がデザイン オブジェク トに適用さ

れます。 このため、 XDC 制約が目的のデザイン オブジェク トに必ず適用されるよ うにするには、 read_xdc の前

に、 すべてのネッ ト リ ス ト ファ イルを Vivado に読み込んで link_design を実行しておく必要があ り ます。

source run.tcl

# Step 1: Read in top-level EDIF netlist from synthesis toolread_edif c:/top.edf # Read in lower level IP core netlistsread_edif c:/core1.edfread_edif c:/core2.edf

# Step 2: Specify target device and link the netlists# Merge lower level cores with top level into single designlink_design -part xc7k325tfbg900-1 -top top

# Step 3: Read XDC constraints to specify timing requirementsread_xdc c:/top_timing.xdc # Read XDC constraints that specify physical constraints such as pin locationsread_xdc c:/top_physical.xdc

# Step 4: Optimize the design with default settingsopt_design

# Step 5: Place the design using the default directive and save a checkpoint# It is recommended to save progress at certain intermediate steps# The placed checkpoint can also be routed in multiple runs using different optionsplace_design -directive Defaultwrite_checkpoint post_place.dcp

# Step 6: Route the design with the AdvancedSkewModeling directive. For more information # on router directives type 'route_design -help' in the Vivado Tcl Console route_design -directive AdvancedSkewModeling

# Step 7: Run Timing Summary Report to see timing resultsreport_timing_summary -file post_route_timing.rpt # Run Utilization Report for device resource utilizationreport_utilization -file post_route_utilization.rpt

# Step 8: Write checkpoint to capture the design database; # The checkpoint can be used for design analysis in Vivado IDE or TCL APIwrite_checkpoint post_route.dcp

インプリ メンテーシ ョ ン 18UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 19: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

非プロジェク ト モードのサンプル スクリプ トでの主要な手順

18 ページの 「非プロジェク ト モードのサンプル スク リプ ト 」 では、 次の手順が実行されます。

• 「手順 1: デザイン ソース ファ イルの読み込み」

• 「手順 2: イン メモ リ デザインの構築」

• 「手順 3: デザイン制約の読み込み」

• 「手順 4: ロジッ ク 適化の実行」

• 「手順 5: デザインの配置」

• 「手順 6: デザインの配線」

• 「手順 7: 必須レポートの生成」

• 「手順 8: デザイン チェッ クポイン トの保存」

手順 1: デザイン ソース ファイルの読み込み

read_edif コマンドを使用して EDIF ネッ ト リ ス ト デザイン ソースを読み込みます。 非プロジェク ト モードでは、

RTL デザイン フローもサポート されています。 その場合、 ソース ファイルを読み込んでインプリ メンテーシ ョ ンの

前に合成を実行します。

合成済みデザイン チェッ クポイン ト ファ イルをソース と して追加するには、 read_checkpoint コマンドを使用し

ます。

read_* Tcl コマンドは非プロジェク ト モードで使用するコマンドで、 ディ スク上のファイルを読み込んでインメモ

リ デザインを構築します。 ファ イルがコピーされたり、 ファ イルの依存関係が作成されるこ とはあ り ません。

そのため、 非プロジェク ト モードは非常に柔軟です。

重要: ユーザーがソース デザイン ファ イルの変更を管理し、 それに応じてデザインをアップデートする必要があ り

ます。

手順 2: インメモリ デザインの構築

link_design コマンドを使用してデザインのイン メモ リ表示を構築します。 このコマンドは、 ツールに読み込ま

れたネッ ト リ ス ト ベースのソース ファ イルをザイ リ ンクスのデバイス情報と結合して、 メモ リ内にデザイン データ

ベースを作成します。

link_design には、 2 つの重要なオプシ ョ ンがあ り ます。

• -part: ターゲッ ト デバイスを指定します。

• -top: インプリ メンテーシ ョ ン用の 上位デザインを指定します。 上位ネッ ト リ ス トが EDIF で、 -top オプ

シ ョ ンを指定しない場合は、 EDIF ネッ ト リ ス トに含まれる 上位デザインが使用されます。 上位ネッ ト リ ス

トが EDIF ではなく構造 Verilog である場合は、 -top オプシ ョ ンは必須です。 -top オプシ ョ ンは、 パフォーマ

ンス と使用率を見積もるためにモジュール解析フローを実行する場合など、 サブモジュールを 上位と して指

定するために使用するこ と もできます。

非プロジェク ト モードでのすべての操作は、 Vivado ツール内のインメモ リ データベースに対して実行されます。

インプリ メンテーシ ョ ン 19UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 20: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

Vivado ツールをバッチ モードで実行している場合でも、 Tcl シェル モードで対話的に Tcl コマンドを実行している場

合でも、 グラフ ィカル モードでデザイン データを Vivado IDE で表示している場合でも、 イン メモ リ デザインは

Vivado ツール内に存在します。

手順 3: デザイン制約の読み込み

Vivado Design Suite では、 デザイン制約を使用してデザインの物理特性およびタイ ミ ング特性を定義します。

詳細は、 13 ページの 「インプリ メンテーシ ョ ンでのデザイン制約の使用」 を参照してください。

read_xdc コマンドは、 XDC 制約ファイルを読み込み、 イン メモ リ デザインに適用します。

ヒン ト : プロジェク ト モードでは、 異なる目的で複数の制約ファイルを含む制約セッ ト を定義できますが、 非プロ

ジェク ト モードでは、 同じ操作を実行するのに複数の read_xdc コマンドを使用します。

手順 4: ロジック最適化の実行

配置配線の準備と してロジッ ク 適化を実行します。 適化では、 ターゲッ ト デバイスの物理リ ソースに配置する

前にロジッ ク デザインが簡略化されます。

Vivado のネッ ト リ ス ト 適化では、 デザイン要件を満たすため、 さまざまな 適化機能が提供されています。 詳細

は、 46 ページの 「ロジッ ク 適化」 を参照してください。

手順 5: デザインの配置

place_design コマンドを使用してデザインを配置します。 詳細は、 57 ページの 「配置」 を参照してください。 配

置後、 write_checkpoint コマンドを使用してデザイン チェッ クポイン ト ファ イルを保存します。

手順 6: デザインの配線

route_design コマンドを使用してデザインを配線します。 詳細は、 76 ページの 「配線」 を参照してください。

手順 7: 必須レポートの生成

report_timing_summary コマンドは、 タイ ミ ング解析を実行し、 タイ ミ ング違反の詳細を含むタイ ミ ング レ

ポート を生成します。 report_utilization コマンドは、 使用されているデバイス リ ソースの割合と、 その他の

使用率統計のサマリ を生成します。 非プロジェク ト モードでは、 各レポート を Tcl コマンドを使用して生成する必

要があ り ます。 各レポート コマンドでは -file オプシ ョ ンがサポート されており、 レポート をファ イルに保存でき

ます。

report_timing_summary コマンドの詳細は 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参

照 18] のこのセクシ ョ ン、 report_utilization コマンドの詳細はこのセクシ ョ ンを参照してください。

レポートはファイルに出力するか、 Vivado IDE に表示して確認できます。 詳細は、 108 ページの 「インプ リ メンテー

シ ョ ン レポートの表示」 を参照してください。

インプリ メンテーシ ョ ン 20UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 21: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

手順 8: デザイン チェ ックポイン トの保存

イン メモ リ デザインをデザイン チェッ クポイン トに保存します。 保存されたイン メモ リ デザインには、 次が含まれ

ます。

• 論理ネッ ト リ ス ト

• 物理制約およびタイ ミ ング制約

• ザイ リ ンクス パーツ情報

• 配置配線情報

非プロジェク ト モードでは、 デザイン チェッ クポイン ト ファ イルを保存するこ とで、 後でデザインを読み込んで解

析したり変更したりできます。

詳細は、 「チェッ クポイン ト を使用したデザインのスナップシ ョ ッ トの保存および復元」 を参照してください。

プロジェク ト モードでのインプリ メンテーションの実行

プロジェク ト モードでは、 次が可能です。

• 特定の合成結果およびデザイン制約を使用するインプリ メンテーシ ョ ン run を定義。

• 1 つのデザインに対して複数のス ト ラテジを実行。

• デザイン要件を満たすためインプリ メンテーシ ョ ン ス ト ラテジをカスタマイズ。

• カスタマイズしたインプ リ メンテーシ ョ ン ス ト ラテジをほかのデザインで使用するため保存。

重要: 非プロジェク ト モードでは、 定義済みのインプリ メンテーシ ョ ン run およびス ト ラテジはサポート されませ

ん。 Tcl コマンドを使用して、 インプリ メンテーシ ョ ン プロセスの各段階を手動で実行する必要があ り ます。 詳細

は、 「非プロジェク ト モードでのインプリ メンテーシ ョ ンの実行」 を参照して ください。

インプリ メンテーシ ョ ン run の作成

新しいインプ リ メンテーシ ョ ン run を作成して実行し、 適な結果が得られるよ う さまざまなオプシ ョ ンを試すこ と

ができます。 各 run は順次実行するか、 複数のローカル CPU で同時に実行できます。

Linux システムでは、 リモート サーバーで run を実行するこ と も可能です。 詳細は、 付録 A 「 リ モート ホス トおよ

び LSF の使用」 を参照してください。

インプリ メンテーシ ョ ン run の定義

インプ リ メンテーシ ョ ン run を定義するには、 次の手順に従います。

1. メ イン メニューから [Flow] → [Create Runs] をク リ ッ ク します。

または、 Flow Navigator で [Implementation] を右ク リ ッ ク して [Create Implementation Runs] をク リ ッ クするか、

[Design Runs] ウ ィンド ウを右ク リ ッ ク して [Create Runs] をク リ ッ ク します。

Create New Runs ウ ィザードが開きます。

インプリ メンテーシ ョ ン 21UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 22: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

2. Create New Runs ウ ィザードの 初のページで [Implementation] をオンにし、 [Next] をク リ ッ ク します。

3. 図 2-1 に示す [Configure Implementation Runs] ページが表示されます。 図の下の説明に従って run を設定します。

a. [Name] 列に run の名前を入力するか、 デフォルトのままにします。

b. [Synth Name] 列で、 インプ リ メンテーシ ョ ンに使用する合成済みネッ ト リ ス ト を生成する合成 run を選択し

ます。 デフォルトは、 [Design Runs] ウ ィンド ウで現在アクティブな run です。 詳細は、 付録 C 「インプ リ

メンテーシ ョ ンのカテゴ リ、 ス ト ラテジの説明、 および -directive の値」 を参照してください。

注記: ネッ ト リ ス ト プロジェク トの場合は、 [Create Runs] コマンドに合成 run の名前は必要あ り ません。

サードパーティ合成ツールからプロジェク トにインポート された合成済みネッ ト リ ス ト も選択できます。

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

c. [Constraints Set] 列でインプリ メンテーシ ョ ンに適用する制約セッ ト を選択します。 適化、 配置、 および

配線は、 指定された制約セッ トの物理制約およびタイ ミ ング制約に基づいて実行されます。

制約セッ トの詳細は、 『Vivado Design Suite ユーザー ガイ ド : 制約の使用』 (UG903) [参照 9] を参照して くだ

さい。

d. [Part] 列でターゲッ ト パーツを選択します。

デフォルトでは、 制約セッ トおよびターゲッ ト パーツは、 [Create New Runs] コマンド実行したと きのプロ

ジェク ト設定に基づいて定義されます。

プロジェク ト設定の詳細は、 『Vivado Design Suite ユーザー ガイ ド : システム レベル デザイン入力』 (UG895)

[参照 6] のこのセクシ ョ ンを参照してください。

ヒン ト : 異なる制約セッ ト またはターゲッ ト パーツを使用する run を作成するには、 [Create New Runs] コマンドを使

用します。 既存の run のこれらの値は、 [Design Runs] ウ ィンド ウで run を選択し、 [Run Properties] ウ ィンド ウで変更

できます。

詳細は、 26 ページの 「インプリ メンテーシ ョ ン run 設定の変更」 を参照してください。

X-Ref Target - Figure 2-1

図 2-1: Create New Runs ウィザード : [Configure Implementation Runs] ページ

インプリ メンテーシ ョ ン 22UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 23: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

e. [Strategy] 列でス ト ラテジを選択します。

ス ト ラテジとは、 インプ リ メンテーシ ョ ン結果を制御する Vivado インプリ メンテーシ ョ ン機能オプシ ョ ン

を定義した設定のこ とです。 Vivado Design Suite では、 定義済みのス ト ラテジが提供されています。 また、

独自のインプ リ メンテーシ ョ ン ス ト ラテジを作成するこ と も可能です。

付録 C 「インプ リ メンテーシ ョ ンのカテゴ リ、 ス ト ラテジの説明、 および -directive の値」 に示すス ト ラテ

ジのいずれかを選択します。 ス ト ラテジは、 その目的に応じてカテゴ リ別に分類されており、 カテゴ リ名

が接頭辞となっています。 カテゴ リは、 付録 Cを参照して ください。

詳細は、 32 ページの 「インプリ メンテーシ ョ ン ス ト ラテジの定義」 を参照してください。

ヒン ト : 適化ス ト ラテジは、 デザイン間、 ソフ ト ウェア リ リース間で変更できます。

パフォーマンス ス ト ラテジは、 デザイン パフォーマンスの向上を目的と しており、 実行時間は長くなり ま

す。 パフォーマンス ス ト ラテジを選択する前に、 まずインプリ メンテーシ ョ ンのデフォルト を使用してタ

イ ミ ング要件を満たすよ うにしてください。 このよ うにする と、 デザインの変更によるタイ ミ ング ク ロー

ジャの影響を吸収するのに十分なマージンが得られます。 ただし、 デザイン要件が満たされない場合、 実

行時間が長くなるこ とが許容されるのであれば、 Performance_Explore はすべてのタイプのデザインを

網羅しているので、 初に選ぶス ト ラテジと して適しています。

重要: 名前に SLL または SLR が含まれるス ト ラテジは、 SSI デバイスでのみ使用可能です。

ヒン ト : run を実行する前に、 インプリ メンテーシ ョ ン プロセスの各段階の設定を、 選択したス ト ラテジのデフォル

ト設定から変更できます。 変更した設定を新しいス ト ラテジと しても保存できます。 詳細は、 26 ページの 「インプ

リ メンテーシ ョ ン run 設定の変更」 を参照して ください。

f. [More] をク リ ッ ク し、 追加の run を定義します。 デフォルトでは、 シーケンスの次のス ト ラテジが自動的に

選択されます。 追加 run の名前とス ト ラテジを指定します (図 2-1)。

g. [Make Active] チェッ ク ボッ クスを使用して、 実行する run を選択します。

h. [Next] をク リ ッ ク します。

インプリ メンテーシ ョ ン 23UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 24: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

4. 図 2-2 に示す [Launch Options] ページが表示されます。 図の下の説明に従ってオプシ ョ ンを設定します。

注記: 図 2-2 に示されている [Launch runs on remote hosts] および [Launch runs using LSF] は Linux でのみ表示され

ます。 Windows では表示されません。

a. [Launch directory] でインプリ メンテーシ ョ ン run データを作成し、 保存する場所を指定します。

デフォルトのディ レク ト リは、 ローカルのプロジェク ト ディ レク ト リ構造に含まれます。 デフォルトでは、

インプ リ メンテーシ ョ ン run のファイルは次のディ レク ト リに保存されます。

<project_name>/<project_name>.runs/<run_name>

ヒン ト : プロジェク ト ファ イルには絶対パスが記述されるので、 プロジェク ト ディ レク ト リ外の場所を指定する と、

プロジェク ト を移動しにく くな り ます。

b. ラジオ ボタンおよびド ロ ップダウン リ ス ト を使用して、 プロジェク トに適切な設定を指定します。 次のい

ずれかを選択します。

- [Launch runs on local host]: ローカル マシンで run を実行します。

- [Number of jobs]: 複数の run を同時実行する際に使用するローカル プロセッサの数を指定します。

- [Launch runs on remote hosts] (Linux のみ): ジ ョブを実行するのにリモート ホス ト を使用します。

- [Configure Hosts]: リモート ホス ト を設定します。 詳細は、 付録 A 「 リ モート ホス トおよび LSF の使

用」 を参照してください。

- [Launch runs using LSF] (Linux のみ): LSF (Load Sharing Facility) の bsub コマンドを使用してジ ョブを実行します。 bsub コマンド オプシ ョ ンを設定して LSF 接続をテス トするには、 [Configure LSF] ボタンをク リ ッ ク します。

ヒン ト : LSF は、 ク ラスターの複数の計算サーバー間でバッチ ジ ョブを投入、 スケジュール、 実行、 監視、 ワークロード制御するためのサブシステムです。

- [Generate scripts only]: run ディ レク ト リおよび run スク リプ ト をエクスポートおよび作成しますが、 run は実行しません。 スク リプ トは、 Vivado IDE ツールの環境外で後で実行できます。

- [Do not launch now]: 新しい run を保存しますが、 run スク リプ トは実行または作成しません。

X-Ref Target - Figure 2-2

図 2-2: [Launch Options] ページ

インプリ メンテーシ ョ ン 24UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 25: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

5. [Next] をク リ ッ ク し、 [Create New Runs Summary] ページを確認します。

6. [Finish] をク リ ッ ク します。 定義した run が作成され、 指定の実行オプシ ョ ンが実行されます。

新しい run が [Design Runs] ウ ィンド ウに追加されます。 詳細は、 「[Design Runs] ウ ィンド ウの使用」 を参照してくだ

さい。

[Design Runs] ウィンドウの使用

[Design Runs] ウ ィンド ウには、 プロジェク トで作成された合成 run と インプリ メンテーシ ョ ン run のすべてが表示さ

れ、 それらを設定、 管理、 実行するためのコマンドを実行できます。

[Design Runs] ウィンドウを開く

[Design Runs] ビュー (図 2-3) が表示されていない場合は、 [Window] → [Design Runs] をク リ ッ ク して表示します。

[Design Runs] ウィンドウの機能

• インプ リ メンテーシ ョ ン run は、 合成 run の下の階層にインデン ト されて表示されます。

• 1 つの合成 run に、 複数のインプ リ メンテーシ ョ ン run を含めるこ とができます。 プラス記号 (+) やマイナス記

号 (-) をク リ ッ クする と、 合成 run のツ リー表示を展開したり、 閉じたりできます。

• [Design Runs] ウ ィンド ウは、 ツ リー形式の表で示されます。

このウ ィンド ウのデータを列を使用して並べ替える方法は、 『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使

用』 (UG893) [参照 3] のこのセクシ ョ ンを参照してください。

run のステータス

[Design Runs] ウ ィンド ウには、 run のステータスが表示されます。 次のステータスがあ り ます。

• 実行されていない。

• 実行中。

• 完了。

• 新の状態でない。

[Design Runs] ウ ィンド ウには、 run の開始時間と経過時間が表示されます。

実行時間

[Design Runs] ウ ィンド ウには、 run の開始時間と経過時間が表示されます。

X-Ref Target - Figure 2-3

図 2-3: [Design Runs] ウィンドウ

インプリ メンテーシ ョ ン 25UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 26: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

run のタイ ミング結果

[Design Runs] ウ ィンド ウには、 インプ リ メンテーシ ョ ン run のタイ ミ ング結果 (WNS、 TNS、 WHS、 THS、 TPWS) が

表示されます。

最新の状態でない run

ソース ファ イル、 制約、 またはプロジェク ト設定を変更する と、 run は 新の状態ではなくな り ます。 [Design Runs]

ウ ィンド ウでは、 run を リセッ ト した り、 古い run のデータを削除したりできます。

アクテ ィブ run

Vivado IDE のすべてのウ ィンド ウには、 アクティブな run の情報が表示されます。 [Log] ウ ィンド ウ、 [Reports] ウ ィ

ンド ウ、 ステータス バー、 [Project Summary] ウ ィンド ウには、 アクティブな run の情報が表示されます。 [Project

Summary] ウ ィンド ウには、 アクティブな run のコンパイル、 リ ソース、 およびサマリ情報が表示されます。

ヒン ト : Vivado IDE でアクティブにできるのは、 1 つの合成 run と 1 つのインプリ メンテーシ ョ ン run のみです。

アクティブな run は、 [Design Runs] ウ ィンド ウに太字で示されます。

run をアクティブにするには、 次の手順に従います。

1. [Design Runs] ウ ィンド ウで 1 つの run を右ク リ ッ ク します。

2. [Make Active] をク リ ッ ク します。

インプリ メンテーシ ョ ン run 設定の変更

[Design Runs] ウ ィンド ウで run を選択する と、 [Run Properties] ウ ィンド ウにその run の現在の設定が表示されます

(図 2-4)。

[Run Properties] ウ ィンド ウでは、 次のオプシ ョ ンを変更できます。

• [Name]: run の名前

• [Part]: ターゲッ ト パーツ

• [Description]: run の説明

• [Constraints]: インプリ メンテーシ ョ ンで使用し、 新しい制約を保存する制約セッ ト

[Run Properties] ウ ィンド ウの詳細は、『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893) [参照 3] のこ

のセクシ ョ ンを参照してください。

インプリ メンテーシ ョ ン 26UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 27: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

デザイン run の設定

デザイン run の設定を変更するには、 [Design Run Settings] ダイアログ ボッ クス (図 2-5) を使用します。 [Design Run

Settings] ダイアログ ボッ クスを開くには、 次の手順に従います。

1. [Design Runs] ウ ィンド ウで 1 つの run を右ク リ ッ ク します。

2. ポップアップ メニューから [Change Run Settings] をク リ ッ ク し、 [Design Run Settings] ダイアログ ボッ クス

(図 2-5) を開きます。

ヒン ト : 設定の変更は、 run のステータスが 「Not started」 の場合にのみ可能です。 run を右ク リ ッ ク して [Reset Runs]

をク リ ッ クする と、 run のステータスを 「Not started」 に戻すこ とができます。 詳細は、 30 ページの 「run のリセッ

ト 」 を参照してください。

X-Ref Target - Figure 2-4

図 2-4: [Implementation Run Properties] ウィンドウ

インプリ メンテーシ ョ ン 27UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 28: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

[Design Run Settings] ダイアログ ボッ クスには、 次のものが表示されます。

• run で現在採用されているインプリ メンテーシ ョ ン ス ト ラテジ。

• インプ リ メンテーシ ョ ン プロセスの各ステップのス ト ラテジに関連付けられているコマンド オプシ ョ ン。 次

に、 3 つのコマンド オプシ ョ ンについて説明します。

[Strategy]

インプ リ メンテーシ ョ ン run に適用するス ト ラテジを選択します。 Vivado Design Suite では、 定義済みのス ト ラテジ

が提供されています。 また、 独自のインプリ メンテーシ ョ ン ス ト ラテジを作成するこ と も可能です。

詳細は、 32 ページの 「インプリ メンテーシ ョ ン ス ト ラテジの定義」 を参照してください。

[Description]

選択したインプ リ メンテーシ ョ ン ス ト ラテジの説明を表示します。

X-Ref Target - Figure 2-5

図 2-5: [Design Run Settings] ダイアログ ボックス

インプリ メンテーシ ョ ン 28UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 29: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

[Options]

Vivado インプリ メンテーシ ョ ン プロセスの各段階のコマンド ラ イン オプシ ョ ンを表示します。

• デザインの 適化 (opt_design)

• デザインの消費電力 適化 (power_opt_design) (オプシ ョ ン)

• デザインの配置 (place_design)

• 配置後のデザインの消費電力 適化 (power_opt_design) (オプシ ョ ン)

• 配置後のデザインの物理 適化 (phys_opt_design) (オプシ ョ ン)

• デザインの配線 (route_design)

• 配線後のデザインの物理 適化 (phys_opt_design) (オプシ ョ ン)

• ビッ ト ス ト リームの生成 (write_bitstream)

コマンド オプシ ョ ンをク リ ッ クする と、 その説明がダイアログ ボッ クスの下部に表示されます。

各インプ リ メンテーシ ョ ン段階の詳細と設定可能なオプシ ョ ンは、 第 2 章 「デザインのインプリ メンテーシ ョ ン」

を参照してください。

コマンド オプシ ョ ンの変更

コマンド オプシ ョ ンを変更するには、 そのコマンド オプシ ョ ンの右側の列をク リ ッ ク します。 次の操作を実行し

ます。

• 定義済みの値から選択するオプシ ョ ンは、 ド ロ ップダウン リ ス トから選択します。

• イネーブル/ディ スエーブルにするオプシ ョ ンは、 チェッ ク ボッ クスのオン/オフを切り替えます。

注記: 各インプ リ メンテーシ ョ ン コマンドでよ く使用されるコマンド オプシ ョ ンは、 チェッ ク ボッ クスで選択

できます。 その他のオプシ ョ ンは、 [More Options] フ ィールドに入力します。 オプシ ョ ン名の前にハイフンを付

け、 複数のオプシ ョ ンはスペースで区切り ます。

• ユーザー定義の値を指定できるオプシ ョ ンは、 値を入力します。

• ファ イル名およびパスを指定するオプシ ョ ンは、 ファ イルを選択するダイアログ ボッ クスが開き、 ファ イルを

選択できます。

• フッ ク スク リプ ト と呼ばれるカスタム Tcl スク リプ ト をインプリ メンテーシ ョ ンの各段階の前 (tcl.pre) と後

(tcl.post) に挿入します。

フッ ク スク リプ ト を挿入する と、 インプリ メンテーシ ョ ンの各段階の前後に特定のタスクを実行できます。 た

とえば、 デザインの配置前後にタイ ミ ング レポート を生成して、 タイ ミ ング結果を比較できます。

Tcl フッ ク スク リプ トの定義方法の詳細は、 『Vivado Design Suite ユーザー ガイ ド : Tcl スク リプ ト機能の使用』

(UG894) [参照 5] のこのセクシ ョ ンを参照してください。

ヒン ト : tcl.pre および tcl.post スク リプ ト内の相対パスは、 プロジェク トの run ディ レク ト リ を基準にしてい

ます。 <project>/<project.runs>/<run_name>

インプリ メンテーシ ョ ン 29UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 30: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

現在のプロジェク ト または現在の run の DIRECTORY プロパティを使用して、 Tcl スク リプ ト内の相対パスを定義で

きます。

get_property DIRECTORY [current_project]get_property DIRECTORY [current_run]

[Save Design As]

[Strategy] フ ィールドの右側にある [Save Design As] ボタンをク リ ッ クする と、 今後使用できるよ うに、 ス ト ラテジへ

の変更を新しいス ト ラテジと して保存できます。

注意: [Save Design As] を使用しない場合、 変更は現在のインプリ メンテーシ ョ ン run には保存されますが、 今

後使用するこ とはできません。

run ステータスの確認

Vivado IDE では、 run のステータスによって、 run を処理してインプリ メンテーシ ョ ンを開始します。 ステータスは、

[Design Runs] ウ ィンド ウに表示されます (図 2-3)。

• run のステータスが 「Not Started」 の場合、 run はすぐに開始されます。

• run のステータスが 「Error」 になっている場合は、 まず run がリセッ ト され、 終了していない run データが削除

されてから、 run が再開されます。

• run のステータスが 「Complete」 または 「Out-of-Date」 になっている場合は、 run を リセッ トするかど うか確認

する メ ッセージが表示されます。

run のリセッ ト

run を リセッ トするには、 次の手順に従います。

1. [Design Runs] ウ ィンド ウで run の 1 つを右ク リ ッ ク します。

2. [Reset Runs] をク リ ッ ク します。

インプ リ メンテーシ ョ ン run を リセッ トする と、 インプリ メンテーシ ョ ンの 初の段階 (opt_design) に戻り ます。

図 2-6 に示すよ うに、 run のリセッ ト を確認する メ ッセージと、 run ディ レク ト リから生成されたファイルを削除す

るオプシ ョ ンが表示されます。

ヒン ト : デフォルトでは、 生成されたファイルは削除されます。 生成された run ファ イルを削除しない場合は、 この

オプシ ョ ンをオフにします。

X-Ref Target - Figure 2-6

図 2-6: [Reset Runs] ダイアログ ボックス

インプリ メンテーシ ョ ン 30UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 31: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

run の削除

[Design Runs] ウ ィンド ウから run を削除するには、 次の手順に従います。

1. run を右ク リ ッ ク します。

2. [Delete] をク リ ッ ク します。

図 2-7 に示すよ うに、 run の削除を確認する メ ッセージと、 run ディ レク ト リから生成されたファイルを削除するオ

プシ ョ ンが表示されます。

ヒン ト : デフォルトでは、 生成されたファイルは削除されます。 生成された run ファ イルを削除しない場合は、 この

オプシ ョ ンをオフにします。

インプリ メンテーシ ョ ン スト ラテジのカスタマイズ

新しいインプ リ メンテーシ ョ ン run を定義する と、 デフォルトのインプリ メンテーシ ョ ン設定が使用されます。 これ

らの設定は変更できます。

図 2-8 に、 [Settings] ダイアログ ボッ クスの [Implementation] ページを示します。 このダイアログ ボッ クスは、 メ イン

メニューから [Tools] → [Settings] をク リ ッ クする と開きます。

ヒン ト : 非プロジェク ト モードを使用している場合は、 [Settings] コマンドは使用できません。 インプ リ メンテーシ ョ

ン ス ト ラテジをバッチ モードで使用可能な Tcl スク リプ ト と して定義して保存するか、 Vivado IDE で対話的に定義

します。

Flow Navigator からアクテ ィブなインプリ メンテーシ ョ ン run のインプリ メンテーシ ョ ン設定にアクセス

アクティブなインプ リ メンテーシ ョ ン run のインプリ メンテーシ ョ ン設定は、 Flow Navigator で [Settings] をク リ ッ ク

し、 [Implementation] をク リ ッ ク しても開く こ とができます。

[Settings] ダイアログ ボッ クスの [Implementation] ページ (図 2-8) には、 次のフ ィールドがあ り ます。

• [Default constraint set]:

インプ リ メンテーシ ョ ン run でデフォルトで使用する制約セッ ト を選択します。

• [Incremental compile]:

インク リ メンタル コンパイル チェッ クポイン ト を指定します (オプシ ョ ン)。

X-Ref Target - Figure 2-7

図 2-7: [Delete Runs] ダイアログ ボックス

インプリ メンテーシ ョ ン 31UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 32: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

• [Strategy]:

インプ リ メンテーシ ョ ン run に適用するス ト ラテジを選択します。 Vivado Design Suite では、 定義済みのス ト ラ

テジが提供されています。 独自のインプリ メンテーシ ョ ン ス ト ラテジを作成し、 新しいス ト ラテジと して保存

するこ と も可能です。 詳細は、 「インプリ メンテーシ ョ ン ス ト ラテジの定義」 を参照して ください。

• [Description]:

選択したインプ リ メンテーシ ョ ン ス ト ラテジの説明を表示します。 ユーザー定義のス ト ラテジの説明は、 新し

い説明を入力して変更できます。 Vivado ツールの標準インプリ メンテーシ ョ ン ス ト ラテジの説明は変更できま

せん。

インプリ メンテーシ ョ ン スト ラテジの定義

run ス ト ラテジは、 デザインの合成またはインプリ メンテーシ ョ ンで 適な結果が得られるよ うにするために定義さ

れたソ リ ューシ ョ ンです。

• Vivado インプリ メンテーシ ョ ン機能のあらかじめ設定されたオプシ ョ ンによ り定義されます。

• ス ト ラテジは、 ツールおよびバージ ョ ン特定です。

• Vivado Design Suite の各メジャー リ リースには、 バージ ョ ン特定のス ト ラテジが含まれます。

X-Ref Target - Figure 2-8

図 2-8: [Settings] ダイアログ ボックスの [Implementation] ページ

インプリ メンテーシ ョ ン 32UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 33: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

Vivado インプリ メンテーシ ョ ンには、内部ベンチマークでテス ト された一般的なス ト ラテジが複数含まれています。

ヒン ト : 定義済みのインプリ メンテーシ ョ ン ス ト ラテジに変更を保存するこ とはできませんが、 定義済みのス ト ラテ

ジをコピーして変更し、 カスタム ス ト ラテジと して保存できます。

定義済みスト ラテジへのアクセス

定義済み run ス ト ラテジにアクセスするには、 メ イン メニューから [Tools] → [Settings] をク リ ッ クます。

X-Ref Target - Figure 2-9

図 2-9: デフォルトのインプリ メンテーシ ョ ン スト ラテジ

インプリ メンテーシ ョ ン 33UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 34: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

スト ラテジの確認、 コピー、 変更

run ス ト ラテジを確認、 コピー、 変更するには、 次の手順に従います。

1. [Tools] → [Settings] をク リ ッ ク します。

2. 左側のペインで [Strategies] をク リ ッ ク します。

3. [Run Strategies] をク リ ッ ク し、 確認する run ス ト ラテジを選択して確認、 コピー、 または変更します。

[Strategies] → [Run Strategies] ページ (図 2-9) に、 各ツールと リ リース バージ ョ ン用にあらかじめ定義された run

ス ト ラテジがリ ス ト されています。

注記: レポート ス ト ラテジの確認、 コピー、 変更については、 『Vivado Design Suite ユーザー ガイ ド : デザイン解

析およびクロージャ テクニッ ク』 (UG906) [参照 10] のこのセクシ ョ ンを参照してください。

4. [Flow] ド ロ ップダウン リ ス トから、 適切なバージ ョ ンの [Vivado Implementation] を選択します。 含まれているス

ト ラテジが表示されます。

5. 新しいス ト ラテジを作成するか、 既存のス ト ラテジをコピーします。

° 新しいス ト ラテジを作成するには、 ツールバーまたは右ク リ ッ ク メニューから [Create Strategy] をク

リ ッ ク します。

° 既存のス ト ラテジをコピーするには、 ツールバーまたは右ク リ ッ ク メニューから [Copy Strategy] をク リ ッ

ク します。 次の操作が実行されます。

a.選択しているス ト ラテジのコピーが作成されます。

b. [User Defined Strategies] リ ス トに追加されます。

c. ダイアログ ボッ クスの右側にス ト ラテジのオプシ ョ ンが表示され、 変更できるよ うにな り ます。

6. 新しいス ト ラテジに対して次の情報を入力します。

° [Name]: ス ト ラテジの名前を入力します。

° [Type]: [Synthesis] または [Implementation] を選択します。

° [Tool Version]: ツール バージ ョ ンを指定します。

° [Description]: ス ト ラテジの説明を入力します。 こ こで入力した説明が [Design Runs] ウ ィンド ウの結果の表

に表示されます。

7. [Options] で各インプリ メンテーシ ョ ン段階のオプシ ョ ンを変更します。

° デザインの 適化 (opt_design)

° デザインの消費電力 適化 (power_opt_design) (オプシ ョ ン)

° デザインの配置 (place_design)

° 配置後のデザインの消費電力 適化 (power_opt_design) (オプシ ョ ン)

° 配置後のデザインの物理 適化 (phys_opt_design) (オプシ ョ ン)

° デザインの配線 (route_design)

° 配線後のデザインの物理 適化 (phys_opt_design) (オプシ ョ ン)

° ビッ ト ス ト リームの生成 (write_bitstream)

ヒン ト : 特定のコマンド オプシ ョ ンを選択する と、 その説明がダイアログ ボッ クスの下部に表示されます。

インプリ メンテーシ ョ ン 34UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 35: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

各インプ リ メンテーシ ョ ン段階の詳細と設定可能なオプシ ョ ンは、 第 2 章 「デザインのインプリ メンテーシ ョ

ン」 を参照してください。

8. コマンド オプシ ョ ンの右側をク リ ッ ク して、 コマンド オプシ ョ ンを変更します (図 2-10)。

次の操作を実行します。

° 定義済みの値から選択するオプシ ョ ンは、 ド ロ ップダウン リ ス トから選択します。

° イネーブル/ディ スエーブルにするオプシ ョ ンは、 チェッ ク ボッ クスのオン/オフを切り替えます。

° テキス ト入力フ ィールドのオプシ ョ ンは、 値を入力します。

° ファ イル名およびパスを指定するオプシ ョ ンは、 ダイアログ ボッ クスでファイルを選択します。

° フッ ク スク リプ ト と呼ばれるカスタム Tcl スク リプ ト をインプリ メンテーシ ョ ンの各段階の前 (tcl.pre)

と後 (tcl.post) に挿入します。 フッ ク スク リプ ト を挿入する と、 インプリ メンテーシ ョ ンの各段階の前

後に特定のタスクを実行できます。 たとえば、 デザインの配置前後にタイ ミ ング レポート を生成して、 タ

イ ミ ング結果を比較できます。

Tcl フッ ク スク リプ トの定義方法の詳細は、 『Vivado Design Suite ユーザー ガイ ド : Tcl スク リプ ト機能の使

用』 (UG894) [参照 5] のこのセクシ ョ ンを参照してください。

注記: tcl.pre および tcl.post スク リプ ト内のパスは、 プロジェク トの関連する run ディ レク ト リ

<project>/<project.runs>/<run_name> を基準と します。

現在のプロジェク ト または現在の run の DIRECTORY プロパティを使用して、 スク リプ ト内の相対パスを定

義できます。

get_property DIRECTORY [current_project]get_property DIRECTORY [current_run]

X-Ref Target - Figure 2-10

図 2-10: インプリ メンテーシ ョ ン オプシ ョ ンの変更

インプリ メンテーシ ョ ン 35UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 36: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

9. [OK] をク リ ッ ク して新しいス ト ラテジを保存します。

新しいス ト ラテジは、 [User Defined Strategies] の下にリ ス ト されます。 ユーザー定義のス ト ラテジは、 次の場所に保

存されます。

• Linux OS

$HOME/.Xilinx/Vivado/strategies

• Windows 7

C:\Users\<username>\AppData\Roaming\Xilinx\Vivado\strategies

run スト ラテジの共有

作成したス ト ラテジを複数のユーザーで共有するには、 ユーザー定義のス ト ラテジを

<InstallDir>/Vivado/<version>/strategies ディ レク ト リにコピーします。 <InstallDir> はザ

イ リ ンクス ソフ ト ウェアのインス トール ディ レク ト リ を指し、 <version> はリ リース バージ ョ ンを指しています。

インプリ メンテーシ ョ ン run の実行

アクティブ インプリ メンテーシ ョ ン run を実行するには、 次のいずれかを実行します。

• Flow Navigator で [Run Implementation] をク リ ッ ク します。

• [Flow] → [Run Implementation] をク リ ッ ク します。

• ツールバーの [Run Implementation] ボタンをク リ ッ ク します。

• [Design Runs] ウ ィンド ウで run を右ク リ ッ ク し、 ポップアップ メニューから [Launch Runs] をク リ ッ ク します。

1 つのインプリ メンテーシ ョ ン run を実行する と、 そのインプ リ メンテーシ ョ ンに別のプロセスが生成されます。

ヒン ト : [Design Runs] ウ ィンド ウからは、 アクティブ でない run を選択して実行できます。 [Design Runs] ウ ィンド ウ

で複数の run を選択する と、 複数の run を同時に実行できます。

1. 複数の run を選択するには、 Shift キーまたは Ctrl キーを押しながら ク リ ッ ク します。

注記: [Design Runs] ウ ィンド ウで複数 run を選択する際、合成 run と インプリ メンテーシ ョ ン run の両方を選択で

きます。 Vivado IDE では、 run の依存性が管理され、 run が正しい順序で実行されます。

2. [Launch Runs] をク リ ッ クする と、 [Launch Selected Runs] ダイアログ ボッ クス (図 2-11) が開きます。

注記: [Launch Selected Runs] ダイアログ ボッ クスは、 run を右ク リ ッ ク して [Launch Runs] をク リ ッ クするか、

[Design Runs] ウ ィンド ウのツールバーの [Launch Selected Runs] ボタンをク リ ッ クする と開きます。

インプリ メンテーシ ョ ン 36UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 37: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

3. [Launch Directory] を選択します。

デフォルトの実行ディ レク ト リは、 ローカルのプロジェク ト ディ レク ト リ構造に含まれます。 インプリ メンテー

シ ョ ン run のファイルは、 次のディ レク ト リに保存されます。

<project_name>/<project_name>.runs/<run_name>

ヒン ト : プロジェク ト ファ イルには絶対パスが記述されるので、 プロジェク ト ディ レク ト リ外の場所を指定する と、

プロジェク ト を移動しにく くな り ます。

4. 次のオプシ ョ ンを設定します。

° [Launch runs on local host]: ローカル マシンで run を実行します。

° [Number of jobs]: 複数の run を同時実行する際に使用するローカル プロセッサの数を指定します。

° [Launch runs on remote hosts] (Linux のみ): ジ ョブを実行するのにリモート ホス ト を使用します。

° [Configure Hosts]: リモート ホス ト を設定します。 詳細は、 付録 A 「 リ モート ホス トおよび LSF の使用」 を

参照してください。

° [Launch runs using LSF] (Linux のみ): LSF (Load Sharing Facility) の bsub コマンドを使用してジ ョブを実行し

ます。 bsub コマンド オプシ ョ ンを設定して LSF 接続をテス トするには、 [Configure LSF] ボタンをク リ ッ

ク します。

ヒン ト : LSF は、 ク ラスターの複数の計算サーバー間でバッチ ジ ョブを投入、 スケジュール、 実行、 監視、 ワーク

ロード制御するためのサブシステムです。

° [Generate scripts only]: run ディ レク ト リおよび run スク リプ ト をエクスポートおよび作成しますが、 run は実

行しません。 スク リプ トは、 Vivado IDE ツールの環境外で後で実行できます。

X-Ref Target - Figure 2-11

図 2-11: [Launch Selected Runs] ダイアログ ボックス

インプリ メンテーシ ョ ン 37UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 38: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

プロセスのバックグラウンドへの移動

Vivado IDE で合成またはインプリ メンテーシ ョ ンを実行するプロセスが生成される と、 まず実行の準備と してデザ

イン ファ イルと制約ファイルが読み込まれます。 [Starting Run] ダイアログ ボッ クス (図 2-12) が表示され、 このプロ

セスをバッ クグラウンドに移動するオプシ ョ ンが示されます。

このプロセスをバッ クグラウンドに移動する と、 バッ クグラウンド タスクを実行させたまま、 Vivado IDE でほかの

操作を実行できます。 たとえば、 レポート を表示したり、 デザイン ファ イルを開いたりできます。 この間、 前の run

の結果を確認したり、 レポート を表示したり して、 時間を効率的に活用できます。

注意: このプロセスをバッ クグランドに移動しても、 [Tcl Console] はブロ ッ ク されるので、 Tcl コマンドを使用した

り、 開いている別のデザインに切り替えるなどの Tcl コマンドを必要とするタスクは実行できません。

インプリ メンテーシ ョ ンの段階ごとの実行

Vivado インプリ メンテーシ ョ ンは、 次のプロセスで構成されます。

• デザインの 適化 (opt_design)

• デザインの消費電力 適化 (power_opt_design) (オプシ ョ ン)

• デザインの配置 (place_design)

• 配置後のデザインの消費電力 適化 (power_opt_design) (オプシ ョ ン)

• 配置後のデザインの物理 適化 (phys_opt_design) (オプシ ョ ン)

• デザインの配線 (route_design)

• 配線後のデザインの物理 適化 (phys_opt_design) (オプシ ョ ン)

• ビッ ト ス ト リームの生成 (write_bitstream)

Vivado ツールでは、 インプ リ メ ンテーシ ョ ンを 1 つのプロセス と してではなく、 1 つずつ順に実行するこ と も可能

です。

X-Ref Target - Figure 2-12

図 2-12: [Starting Run] ダイアログ ボックス

インプリ メンテーシ ョ ン 38UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 39: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

インプリ メンテーシ ョ ンの段階ごとに実行する方法

インプ リ メンテーシ ョ ンの段階ごとに実行するには、 次の手順に従います。

1. [Design Runs] ウ ィンド ウで run を右ク リ ッ ク し、 図 2-13 に示すポップアップ メニューから [Launch Next Step:

<Step>] または [Launch Step To] をク リ ッ ク します。

<Step> に有効な値は、 run 設定でイネーブルになっているプロセスによって異なり ます。 インプ リ メンテーシ ョ

ン run で有効な段階は、 次のとおりです。

° opt_design (デザインの 適化):

ザイ リ ンクス デバイスにフ ィ ッ トするよ う論理デザインを 適化します。

° power_opt_design (デザインの消費電力 適化):

インプ リ メン ト済みデバイスの消費電力を削減するため、 デザイン エレ メン ト を 適化します。

° place_design (デザインの配置):

デザインをターゲッ ト ザイ リ ンクス デバイスに配置します。

° 配置後の power_opt_design (デザインの消費電力 適化):

配置後に消費電力を削減するよ う追加の 適化を実行します。

° 配置後の phys_opt_design (デザインの物理 適化):

デザインの負のスラ ッ ク パスに対してタイ ミ ング ド リブンの 適化を実行します。

° route_design (デザインの配線):

デザインをターゲッ ト ザイ リ ンクス デバイスに配線します。

° 配線後の phys_opt_design (デザインの物理 適化):

配線後の実際の遅延を使用して、 ロジッ ク、 配置、 および配線を 適化します。

° write_bitstream (ビッ ト ス ト リームの生成):

ザイ リ ンクス デバイス コンフ ィギュレーシ ョ ンのビッ ト ス ト リームを生成します。 ビッ ト ス ト リーム生成

は、 厳密にはインプ リ メンテーシ ョ ン run の一部ではあ り ませんが、 次の段階と して実行可能です。

2. [Launch Next Step: <Step>] または [Launch Step To] を繰り返し、 インプリ メンテーシ ョ ンの段階を進めていきます。

3. 完了している段階を前の段階に戻すには、 [Design Runs] ウ ィンド ウで run を右ク リ ッ ク して [Reset to Previous

Step: <Step>] をク リ ッ ク します。

選択した run を直前の段階にリセッ トするには、 [Reset to Previous Step] を使用します。 このコマンドを使用する

と、 次が可能になり ます。

° run を元に戻します。

° 必要な変更を加えます。

° 再び段階を進め、 run をインク リ メンタルに完了します。

X-Ref Target - Figure 2-13

図 2-13: [Design Runs] ウィンドウのポップアップ メニュー

インプリ メンテーシ ョ ン 39UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 40: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

インプリ メンテーシ ョ ン コマンドについて

ザイ リ ンクス Vivado® Design Suite には、 プロジェク ト ベースのデザインでインプリ メンテーシ ョ ン プロセスを管理

し、 簡略化する多数の機能が含まれています。 インプリ メンテーシ ョ ン プロセスを段階ごとに手動で実行する機能

も含まれます。

詳細は、 21 ページの 「プロジェク ト モードでのインプリ メンテーシ ョ ンの実行」 を参照してください。

非プロジェク ト モードでは、 Tcl コマンドを使用してインプリ メンテーシ ョ ン プロセスの各段階を手動で実行する

必要があ り ます。

注記: Tcl コマンドの詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 18] を参照する

か、 「<command> -help」 と入力してください。

詳細は、 17 ページの 「非プロジェク ト モードでのインプリ メンテーシ ョ ンの実行」 を参照してください。

インプリ メンテーシ ョ ンのサブプロセス

プロジェク ト モードでは、 インプリ メンテーシ ョ ン コマンドは決まった順序で実行されます。 非プロジェク ト モー

ドでは、 コマンドは同様の順序で実行できますが、 繰り返し実行したり、 プロジェク ト モード とは異なる順序で実

行するこ と もできます。

重要: インプリ メンテーシ ョ ン コマンドは、 再配線モードで実行されます。

インプ リ メンテーシ ョ ン コマンドは、 再配線モードで実行されます。 これは、 インプリ メンテーシ ョ ン コマンドを

非プロジェク ト モードで実行する と、 デザインがメモ リに読み込まれ、 タスクが実行され、 結果のデザインがメモ

リに書き込まれるこ とを意味します。 これによ り、 非プロジェク ト モードでの実行がよ り柔軟なものになり ます。

次に例を示します。

• opt_design コマンドの後に opt_design -remap を実行

リマップは opt_design コマンドの結果に対して実行されます。

• 一部のセルが配置されたデザインに対して place_design コマンドを実行

既存のセル配置が place_design コマンドの開始点と して使用されます。

• 一部が配線されたデザインに対して route_design コマンドを実行

既存の配線が route_design コマンドの開始点と して使用されます。

• セルが配置されていないデザインに対して route_design コマンドを実行

セルが配置されている必要があるので、 エラーが発生します。

• 完全に配置配線されていないデザインに対して opt_design コマンドを実行

ロジッ ク 適化で論理ネッ ト リ ス トが 適化され、 配置されていない新しいセルおよび配線されていない新し

いネッ トが作成される場合があ り ます。 インプリ メンテーシ ョ ンを完了するため配置配線を再実行する必要が

ある場合があ り ます。

プロジェク ト モードおよび非プロジェク ト モードのどちらでも、 Vivado インプリ メンテーシ ョ ン プロセスはいくつ

かのサブプロセスで構成されています。

インプリ メンテーシ ョ ン 40UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 41: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

• 合成済みデザインを開く :

ネッ ト リ ス ト 、 デザイン制約、 ターゲッ ト デバイス データを統合し、 インプリ メンテーシ ョ ンを実行するイン

メモ リ デザインを構築します。

• デザインの 適化:

ターゲッ トのザイ リ ンクス デバイスにフ ィ ッ ト しやすいよ うに論理デザインを 適化します。

• デザインの消費電力 適化 (オプシ ョ ン):

ターゲッ トのザイ リ ンクス デバイスの消費電力を削減するよ うデザイン エレ メン ト を 適化します。

• デザインの配置:

デザインをターゲッ ト ザイ リ ンクス デバイスに配置します。

• 配置後のデザインの消費電力 適化 (オプシ ョ ン):

配置後に消費電力を削減するよ う追加の 適化を実行します。

• 配置後のデザインの物理 適化 (オプシ ョ ン):

配置に基づく見積も り タイ ミ ングを使用してロジッ クおよび配置を 適化します。 ファンアウ トの大きいド ラ

イバーの複製も含まれます。

• デザインの配線:

デザインをターゲッ ト ザイ リ ンクス デバイスに配線します。

• 配線後のデザインの物理 適化:

配線後の実際の遅延を使用して、 ロジッ ク、 配置、 および配線を 適化します。

• ビッ ト ス ト リームの生成:

ザイ リ ンクス デバイス コンフ ィギュレーシ ョ ンのビッ ト ス ト リームを生成します。

注記: ビッ ト ス ト リーム生成は、 厳密にはインプリ メンテーシ ョ ン run の一部ではあ り ませんが、 別の段階と し

て実行可能です。

この章では、 インプ リ メンテーシ ョ ン プロセスの各段階と関連する Tcl コマンドの詳細を説明します。 次の表に、

サブプロセス と関連の Tcl コマンドを リ ス ト します。

Tcl レポート コマンドおよびそのオプシ ョ ンの詳細な説明は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ

ド』 (UG835) [参照 18] を参照してください。

表 2-1: インプリ メンテーシ ョ ンのサブプロセスと関連の Tcl コマンド

サブプロセス Tcl コマンド

合成済みデザインを開く synth_design

open_checkpoint

open_run

link_design

デザインの 適化 opt_design

デザインの消費電力 適化 power_opt_design

デザインの配置 place_design

デザインの物理 適化 phys_opt_design

デザインの配線 route_design

ビッ ト ス ト リームの生成 write_bitstream

インプリ メンテーシ ョ ン 41UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 42: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

合成済みデザインを開く

インプ リ メンテーシ ョ ンでは、 まず合成済みデザインからのネッ ト リ ス ト を メモ リに読み込み、 デザイン制約を適

用します。 合成済みのデザインは、 使用されるデザイン フローによってさまざまな方法で開く こ とができます。

インメモリ デザインの構築

Vivado Design Suite では、 イン メモ リ デザインを構築するため、 次のプロセスを使用してネッ ト リ ス ト ファ イル、 制

約ファイル、 およびターゲッ ト デバイスの情報が統合されます。

1. ネッ ト リ ス ト を統合します。

必要であれば、 複数のソースからのネッ ト リ ス ト を統合します。 デザインには、 構造 Verilog、 EDIF、 Vivado IP

を含めるこ とができます。

重要: Vivado Design Suite では、UltraScale™ デバイスに対して NGC フォーマッ トのファ イルはサポート されていませ

ん。 Vivado Design Suite で IP を再生成し、 ネイティブ出力ファイルを使用するこ とをお勧めします。 または、

NGC2EDIF コマンドを使用して NGC ファ イルを EDIF に変換し、 インポートするこ と もできます。 今後は XST で生

成された NGC フォーマッ トではなくネイティブ Vivado IP を使用するこ とをお勧めします。

2. 従来のネッ ト リ ス ト プリ ミ ティブを現在サポート される Unisim プリ ミ ティブに変換します。

ヒン ト : report_transformed_primitives を使用する と、 変換されたセルのリ ス ト を生成できます。

3. XDC ファ イルから制約を処理します。

これらの制約には、 タイ ミ ング制約と、 パッケージ ピン割り当てやフロアプラン用の Pblock などの物理制約が

含まれます。

重要: 制約が満たされていないこ とを示すク リティカル警告を確認します。 制約が 適化で削除されたデザイン オブ

ジェク トに設定されているこ とがあ り ます。 Tcl コマンド write_xdc -constraints INVALID を使用しても、 無効な XDC

制約を取得できます。

4. 配置マクロを作成します。

Vivado ツールでは、 接続または配置制約に基づいてセルの配置マクロが作成され、 配置が簡略化されます。

配置マクロには、 次のものがあ り ます。

° XDC ベースのマクロ。

° 相対配置マクロ (RPM)。

注記: RPM は、 個別のセルではなくグループと して配置されます。

° 複数の CLB に配置する必要のある長いキャ リー チェーン。

注記: キャ リー チェーンを構成するプリ ミ ティブは 1 つのマクロに含め、 縦方向に並ぶ複数のスライスに配

置されるよ うにする必要があ り ます。

インプリ メンテーシ ョ ン 42UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 43: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

Tcl コマンド

合成済みデザインを メモ リに読み込むには、 デザインのソース ファ イルおよびデザインのステートに応じて、

表 2-2 に示す Tcl コマンドを使用します。

synth_design

synth_design コマンドは、 プロジェク ト モードおよび非プロジェク ト モード両方で使用できます。 このコマンド

は、 RTL ソースに対して指定したオプシ ョ ンで Vivado 合成を実行し、 合成後にデザインをメモリに読み込みます。

synth_design の構文

synth_design [-name <arg>] [-part <arg>] [-constrset <arg>] [-top <arg>] [-include_dirs <args>] [-generic <args>] [-verilog_define <args>] [-flatten_hierarchy <arg>] [-gated_clock_conversion <arg>] [-directive <arg>] [-rtl] [-bufg <arg>] [-no_lc] [-fanout_limit <arg>] [-shreg_min_size <arg>] [-mode <arg>] [-fsm_extraction <arg>] [-rtl_skip_ip] [-rtl_skip_constraints] [-keep_equivalent_registers] [-resource_sharing <arg>] [-cascade_dsp <arg>] [-control_set_opt_threshold <arg>]

[-max_bram <arg>] [-max_uram <arg>] [-max_dsp <arg>] [-max_bram_cascade_height <arg>] [-max_uram_cascade_height <arg>] [-retiming] [-no_srlextract] [-assert] [-no_timing_driven] [-sfcu] [-quiet] [-verbose]

synth_design のスクリプ ト例

次のコードは、 Vivado ツールのインス トール ディ レク ト リの examples/Vivado_Tutorials ディ レク ト リに含ま

れる create_bft_batch.tcl スク リプ トからの抜粋です。

# Setup design sources and constraintsread_vhdl -library bftLib [ glob ./Sources/hdl/bftLib/*.vhdl ] read_vhdl ./Sources/hdl/bft.vhdlread_verilog [ glob ./Sources/hdl/*.v ] read_xdc ./Sources/bft_full.xdc

# Run synthesis, report utilization and timing estimates, write design checkpointsynth_design -top bft -part xc7k70tfbg484-2 -flatten rebuilt write_checkpoint -force $outputDir/post_synth

synth_design サンプル スク リプ ト使用の詳細は、 『Vivado Design Suite チュート リ アル: デザイン フローの概要』

(UG888) [参照 20] および 『Vivado Design Suite ユーザー ガイ ド : 合成』 (UG901) [参照 8] を参照して ください。

この synth_design サンプル スク リプ トでは、 VHDL および Verilog ファ イルが読み込まれ、 指定したデバイスで

デザインが合成されます。 synth_design コマンドが完了する と、 デザインが開き、 メモ リに読み込まれます。 合

成が完了する と、 デザイン チェッ クポイン トが保存されます。

表 2-2: Tcl コマンドを使用可能なモード

コマンド プロジェク ト モード 非プロジェク ト モード

synth_design X X

open_checkpoint X

open_run X

link_design X X

インプリ メンテーシ ョ ン 43UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 44: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

synth_design Tcl コマンドの詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 18] の

このセクシ ョ ンを参照してください。 このガイ ドでは、 すべての Tcl コマンドおよびそのオプシ ョ ンが詳細に説明さ

れています。

open_checkpoint

open_checkpoint コマンドを使用する と、デザイン チェッ クポイン ト ファ イル (DCP) が開き、新しいイン メモ リ

プロジェク トが作成されて、 新しいプロジェク トがチェッ クポイン トの内容で初期化されます。 このコマンドでは、

上位デザイン チェッ クポイン ト または独立階層 (OOC) モジュールに対して作成されたチェッ クポイン ト を開く こ

とができます。

注記: これまでのリ リースでは、 チェッ クポイン ト デザインを読み込んで初期化するのに read_checkpoint コマ

ンドを使用しました。 バージ ョ ン 2014.1 からは、 これに open_checkpoint コマンドを使用します。

read_checkpoint コマンドの動作は変更されており、 チェ ッ クポイン ト ファ イルがソース ファ イルのリ ス トに追加さ

れるだけです。 この動作は、 read_verilog、 read_vhdl、 read_xdc などのほかの read コマンド と同じです。

read_checkpoint コマンドを使用した場合、 デザインを初期化し、 メモ リに読み込むために link_design コマ

ンド も実行する必要があ り ます。

チェッ クポイン ト を開く場合、 あらかじめプロジェク ト を作成する必要はあ り ません。 open_checkpoint コマン

ドは、 デザイン データをメモ リに読み込み、 デザインを非プロジェク ト モードで開きます。 プロジェク ト モードお

よび非プロジェク ト モードの詳細は、 『Vivado Design Suite ユーザー ガイ ド : デザイン フローの概要』 (UG892) [参

照 1] のこのセクシ ョ ンを参照してください。

重要: インク リ メンタル コンパイル フローでは、 これまでと同様に read_checkpoint コマンドを使用して基準デ

ザイン チェッ クポイン ト を指定します。

open_checkpoint の構文

open_checkpoint [-part <arg>] [-quiet] [-verbose] <file>

open_checkpoint のスクリプ ト例

# Read the specified design checkpoint and create an in-memory design.open_checkpoint C:/Data/post_synth.dcp

この open_checkpoint サンプル スク リプ トは、 合成済みデザイン チェッ クポイン ト ファ イルを開きます。

open_run

合成済みまたはインプ リ メン ト済み run を開き、 メモ リに読み込みます。

重要: open_run コマンドは、 プロジェク ト モードでのみ使用できます。 デザイン run は非プロジェク ト モードでは

サポート されません。

open_run コマンドをインプリ メンテーシ ョ ン前の RTL デザインに使用し、 完了した Vivado 合成 run を開いて、 合

成済みネッ ト リ ス ト を メモ リに読み込みます。

ヒン ト : インメモリ デザインは自動的にアップデート されるので、 synth_design の後 open_run を使用する必要は

あり ません。 open_run コマンドは、 以前のデザイン セッシ ョ ンで完了した合成 run を開く場合にのみ使用します。

インプリ メンテーシ ョ ン 44UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 45: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

open_run コマンドは、 RTL デザイン用です。 ネッ ト リ ス ト ベースのデザインを開くには、 link_design コマン

ドを使用します。

open_run の構文

open_run [-name <arg>] [-quiet] [-verbose] <run>

open_run のスクリプ ト例

# Open named design from completed synthesis runopen_run -name synth_1 synth_1

この open_run サンプル プロジェク トは、 synth_1 というデザインを開き、 synth_1 という完了した合成 run を

メモ リに読み込みます。

デザインがメモ リにある場合に open_run コマンドを実行する と、 新しいデザインを開く前に、 現在のデザインへ

の変更を保存するかど うかを尋ねる メ ッセージが表示されます。

link_design

サードパーティ合成ツールなどで生成されたネッ ト リ ス ト ソースからイン メモ リ デザインを作成し、 ネッ ト リ ス ト

と合成制約をターゲッ ト デバイスにリ ンク します。

ヒン ト : link_design コマンドは、 プロジェク ト モードおよび非プロジェク ト モードの両方でネッ ト リ ス ト デザ

インを作成する場合にサポート されます。 ネッ ト リ ス ト を読み込まずに link_design -part <arg> を使用する

と、 デバイス探索用の空のデザインが開きます。

link_design の構文

link_design [-name <arg>] [-part <arg>] [-constrset <arg>] [-top <arg>] [-mode <arg>] [-pr_config <arg>] [-reconfig_partitions <args>] [-partitions <args>] [-quiet] [-verbose]

link_design のスクリプ ト例

# Open named design from netlist sources.link_design -name netDriven -constrset constrs_1 -part xc7k325tfbg900-1

デザインがメモ リにある場合に link_design コマンドを実行する と、 新しいデザインを開く前に、 現在のデザイ

ンへの変更を保存するかど うかを尋ねる メ ッセージが表示されます。

推奨: メモ リに合成済みデザインを作成した後、 エラーおよびク リティカル警告を調べて、 不足している制約や無効

な制約がないかど うかを確認してください。 デザインが問題なく作成されたら、 解析、 レポート生成、 制約の適用、

またはインプ リ メンテーシ ョ ンを実行できます。

注記: link_design のパーシャル リ コンフ ィギュレーシ ョ ン オプシ ョ ンの詳細は、『Vivado Design Suite ユーザー ガ

イ ド : パーシャル リ コンフ ィギュレーシ ョ ン』 (UG909) [参照 15] のこのセクシ ョ ンを参照してください。

メモ リに合成済みデザインを開いたら、 report_timing_summary コマンドを実行してタイ ミ ング制約をチェッ

ク し、 デザインの目標が適切であるかど うかを確認してください。 report_timing_summary コマンドの詳細は、

『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 18] のこのセクシ ョ ンを参照して ください。

インプリ メンテーシ ョ ン 45UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 46: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

BUFG 最適化

link design の 初に実行される必須ロジッ ク 適化 (MLO) では、 グローバル ク ロ ッ ク バッファーを挿入するた

めに CLOCK_BUFFER_TYPE プロパティを使用できます。 設定可能な値は、 7 シ リーズの場合は BUFG、 UltraScale

の場合は BUFG および BUFGCE です。 NONE はすべてのアーキテクチャで設定でき、 MLO および opt_design による

グローバル ク ロ ッ ク バッファーの挿入が実行されなくな り ます。 BUFG および BUFGCE に設定する と、 ロジッ ク

適化で指定のネッ ト を駆動するため該当するバッファー タイプが挿入されます。

CLOCK_BUFFER_TYPE を使用する と、 XDC 制約を使用してバッファー挿入を制御できるので、 デザイン ソースや

ネッ ト リ ス ト を修正する必要があ り ません。 CLOCK_BUFFER_TYPE を使用して挿入されるバッファー数には制限

がないため、 デザインに含まれるグローバル ク ロ ッ クが多くな りすぎ、 配置エラーの原因となるこ とがあるので、

使用には注意が必要です。 詳細は、 『Vivado Design Suite プロパティ リ ファレンス ガイ ド』 (UG912) [参照 14] を参照

してください。

ロジック最適化

ロジッ ク 適化は、 配置の前に効率的なロジッ ク デザインを得るために実行します。 ロジッ ク 適化では、 ネッ ト

リ ス ト接続性チェッ クが実行され、 複数のド ライバーを持つネッ トや駆動されていない入力などの発生する可能性

のあるデザイン問題に対して警告メ ッセージが表示されます。 ブロ ッ ク RAM の消費電力 適化も実行されます。

デザインの接続エラーはロジッ ク 適化段階に伝搬されるこ とが多く、 そこでエラーが発生します。 インプリ メン

テーシ ョ ンを実行する前に、 DRC レポート を使用して接続が有効であるこ とを確認するこ とが重要です。

ロジッ ク 適化では、 DONT_TOUCH プロパティの値が TRUE に設定されているセルおよびネッ トの 適化は実行さ

れません。

ロジッ ク 適化を実行する Tcl コマンドは opt_design です。

よ くあるデザイン エラー

ロジッ ク 適化がエラーになる場合、駆動されていない LUT 入力 (入力が LUT ロジッ ク論理式で使用されている ) が

原因であるこ とがよ くあ り ます。 これによ り、 次のよ うなエラー メ ッセージが表示されます。

ERROR: [Opt 31-67] Problem: A LUT6 cell in the design is missing a connection on input

pin I0, which is used by the LUT equation.

このエラーは、 複数のソースからロジッ クを統合する際に接続が見逃された場合によ く発生します。 ロジッ ク 適

化では、 ソース定義にト レースするため、 セル名とピンの両方が認識されます。

使用可能なロジック最適化

Vivado ツールでは、 ロジッ ク 適化はインメモ リ デザインに対して実行されます。

重要: 特定のロジッ ク 適化に対応するコマンド オプシ ョ ンを指定する と、 その 適化のみが実行されます。 ほかの

適化は、 通常デフォルトで実行されるものも、 ディ スエーブルになり ます。

次の表に、 複数のオプシ ョ ンを選択している場合に実行される 適化の順序を示します。 この順序によ り も効果

的な 適化が確実に実行されます。

インプリ メンテーシ ョ ン 46UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 47: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

リ ターゲッ ト (デフォルト )

デザインのターゲッ ト デバイスをあるデバイス ファ ミ リから別のデバイス ファ ミ リに変更する際、 ブロ ッ ク タイ

プを別のブロ ッ ク タイプに変更します。 たとえば、 インスタンシエート された MUXCY または XORCY コンポーネ

ン ト を CARRY4 ブロ ッ クに、 DCM を MMCM に変更します。 また、 インバーターのよ うな単純なセルはダウンス ト

リーム ロジッ クに吸収されます。

定数伝搬 (デフォルト )

定数値をロジッ クに伝搬するこ とで、 ロジッ クは次のよ うになり ます。

• 削除:

定数 0 が入力される AND など。

• 縮小:

定数 1 が入力される 3 入力 AND を 2 入力 AND に縮小するなど。

• 冗長:

0 が入力される 2 入力 OR を 1 本のワイヤに削減するなど。

スイープ (デフォルト )

ロードのないセルを削除します。

表 2-3: 複数のオプシ ョ ンが選択されている場合の最適化の順序

フェーズ 名前 オプシ ョ ン デフォルト

1 リ ターゲッ ト -retarget X

2 定数伝搬 -propconst X

3 スイープ -sweep X

4 マルチプレクサー 適化 -muxf_remap

5 キャ リー 適化 -carry_remap

6 セッ ト マージの制御 -control_set_merge

7 等価ド ライバーの統合 -merge_equivalent_drivers

8 BUFG 適化 -bufg_opt X

9 シフ ト レジスタの 適化 -shift_register_opt X

10 モジュール ベースのファンアウ ト

適化

-hier_fanout_limit <arg>

11 リマップ -remap

12 エリ ア モードでの再合成 -resynth_area

13 順序エリ アの再合成 -resynth_seq_area

14 ブロ ッ ク RAM 消費電力 適化 -bram_power_opt X

インプリ メンテーシ ョ ン 47UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 48: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

マルチプレクサー最適化

配線しやすくするため、 MUXF7、 MUXF8、 MUXF9 プリ ミ ティブを LUT3 にマップし直します。 -muxf_remap オ

プシ ョ ンの代わりに MUXF_REMAP セル プロパティを使用して、 この 適化の適用範囲を制限できます。 個別の

MUXF プリ ミ ティブまたは MUXF プリ ミ ティブを含む階層セルの MUXF_REMAP プロパティを TRUE に設定します。

ヒン ト : マルチプレクサー 適化実行後にネッ ト リ ス ト をさ らに 適化するには、 マルチプレクサー 適化と リマッ

プを組み合わせて使用します (opt_design -muxf_remap -remap)。

キャリー最適化

配線しやすくするため、 キャ リー チェーンの CARRY4 および CARRY8 プリ ミ ティブを LUT にマップし直します。

-carry_remap オプシ ョ ンを使用した場合、 1 段キャ リー チェーンのみが LUT に変換されます。 CARRY_REMAP セ

ル プロパティを使用する と、 任意の長さのキャ リー チェーンの変換を個別に制御できます。 CARRY_REMAP プロパ

ティには、 LUT にマップするキャ リー チェーンの 大長を整数で指定します。 CARRY_REMAP プロパティは

CARRY4 および CARRY8 プリ ミ ティブに適用され、 キャ リー チェーンを LUT に変換するには、 1 つのチェーンに含

まれるすべての CARRY プリ ミ ティブで同じ値に設定する必要があ り ます。 サポート される 小値は 2 です。

例: デザインに CARRY8 プリ ミ ティブを 1 つ、 2 つ、 3 つ、 および 4 つ含む複数のキャ リー チェーンが含まれている

と します。

次のコマンドを使用する と、 すべての CARRY8 プリ ミ ティブに CARRY_REMAP プロパティが設定されます。

Vivado% set_property CARRY_REMAP 2 [get_cells -hier -filter {ref_name == CARRY8}]

opt_design を実行する と、CARRY8 プリ ミ ティブが 3 つ以上含まれるキャ リー チェーンのみが CARRY8 にマップ

されたままになり、 1 つおよび 2 つ含まれるキャ リー チェーンは LUT にマップされます。

ヒン ト : 長いキャ リー チェーンを LUT にマップし直すと、 リマップ オプシ ョ ンを追加してさ らに 適化しても、 遅

延が大幅に増加する可能性があ り ます。 リマップは、 1 つまたは 2 つの CARRY プリ ミ ティブがカスケード接続され

た短いキャ リー チェーンにのみ適用するこ とをお勧めします。

制御セッ トの統合

論理的に等価の制御信号のド ライバーを 1 つのド ライバーにま とめます。 これは、 ファンアウ ト複製の逆のよ うな

操作で、 ネッ トがモジュール ベース複製によ り適したものになり ます。

等価ドライバーの統合

論理的に等価の信号のド ライバーを 1 つのド ライバーにまとめます。 これは制御セッ トの統合に似ていますが、 制

御信号だけでなく、 すべての信号に適用されます。

BUFG 最適化 (デフォルト )

ロジッ ク 適化では、 クロ ッ ク ネッ トおよびデバイス全体のリセッ ト などのクロ ッ ク以外のネッ トにグローバル ク

ロ ッ ク バッファーが挿入されます。

7 シ リーズ デザインでは、 グローバル ク ロ ッ ク バッファーの合計が 12 個を超えていない限り クロ ッ ク バッファー

が挿入されます。

インプリ メンテーシ ョ ン 48UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 49: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

UltraScale デザインでは、 ク ロ ッ ク ネッ トに挿入できるクロ ッ ク バッファー数に上限はあ り ません。

ク ロ ッ ク以外のネッ トの場合:

• グローバル ク ロ ッ ク バッファーは、 BUFG_GT バッファーを除いた合計が 24 個を超えていない限り挿入され

ます。

• ファンアウ トは 25,000 よ り大き くする必要があ り ます。

ファブ リ ッ ク ド リブンのクロ ッ ク ネッ トでは 30 以上のファンアウ トが必要です。

注記: ネッ トで BUFG 適化が実行されないよ うにするには、 そのネッ トの CLOCK_BUFFER_TYPE プロパティの値

を NONE に設定します。 デザインを有効なものにするために必要な一部のクロ ッ ク バッファー挿入は、 必須ロジッ

ク 適化でも実行されます。

シフ ト レジスタの最適化 (デフォルト )

シフ ト レジスタの 適化では、 複数の変換が実行されます。

• SRL ファンアウ ト 適化: SRL (LUT ベース シフ ト レジスタ ) プリ ミ ティブのファンアウ トが 100 以上の場合に、

SRL チェーンの末尾からレジスタ 1 段を取り出し、 レジスタ プリ ミ ティブに変換します。 これによ り、 ネッ ト

がタイ ミ ング ク リ ティカルになった場合にダウンス ト リームの複製がよ り柔軟に実行できるよ うにな り ます。

通常、 ファンアウ トの大きい SRL ド ラ イバーを複製するよ り も、 ファンアウ トの大きいレジスタ ド ラ イバーを

複製する方が簡単です。

• SRL とレジスタ プリ ミ ティブ間の変換:

° SRL プリ ミ ティブは、 SRL_TO_REG プロパティの値を true に設定するこ とによ り、 論理的に等価のレジス

タ プリ ミ ティブ チェーンに変換できます。 この変換は通常、 デバイス内で信号が長距離を移動できるよ う

にするため、 分散できるパイプライン レジスタの段数を増加させるために使用されます。 レジスタの段数

が増加する と、 ク ロ ッ ク周波数が上がり ますが、 レイテンシは長くな り ます。

° レジスタ プリ ミ ティブのチェーンは、 REG_TO_SRL プロパティの値を true に設定するこ とによ り、 論理的

に等価の SRL プリ ミ ティブに変換できます。 この変換は通常、 デバイス内で信号が長距離を移動するのに

使用されるパイプライン レジスタの段数を削減するために使用されます。 レジスタの段数が多すぎる と、

密集などの配置問題が発生する可能性があ り ます。

• SRL とレジスタ チェーン間のパイプライン段の選択移動: この変換は、 SRL とレジスタ プリ ミ ティブを含むパ

イプライン レジスタ チェーンに使用できます。 SRL 入力または SRL 出力で、 レジスタ段を SRL から取り出し

た り、 SRL に挿入したりできます。 これによ り、 パイプライン レジスタ構造をよ り詳細に制御でき、 パイプラ

インが多いまたは少ない問題に対処できます。

° パイプラインが少ない: SRL の入力からレジスタを 1 つ取り出すには、 SRL プロパティ

SRL_STAGES_TO_REG_INPUT の値を 1 に設定します。 SRL の出力からレジスタを 1 つ取り出すには、

SRL_STAGES_TO_REG_OUTPUT プロパティの値を 1 に設定します。

° パイプラインが多い: SRL の入力にレジスタを 1 つ挿入するには、 SRL プロパティ

SRL_STAGES_TO_REG_INPUT の値を -1 に設定します。 SRL の出力にレジスタを 1 つ挿入するには、

SRL_STAGES_TO_REG_OUTPUT プロパティの値を -1 に設定します。

注記: レジスタから SRL への変換は、 制御セッ トに互換性がある場合にのみ可能です。

インプリ メンテーシ ョ ン 49UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 50: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

モジュール ベースのファンアウト最適化

ファンアウ トがこのオプショ ンで指定した上限を超えているネッ ト ド ライバーは、論理階層に基づいて複製されます。

ファンアウ トの大きいネッ トで駆動される各階層インスタンスでファンアウ トが指定の上限を超えている場合、 階

層内のネッ トは複製されたド ライバーで駆動されます。

重要: 各ロジッ ク 適化はインメモ リ デザインに適用され、 元の合成済みデザインには適用されません。

リマップ

複数の LUT を 1 つの LUT にまとめてロジッ クの深さを削減します。

注記: Vivado Design Suite 2017.3 リ リースから、異なる論理階層に含まれる LUT を 1 つの LUT にまとめてロジッ ク レ

ベル数を削減するこ とが可能になり ました。 リマップされたロジッ クは、 ロジッ ク コーンの もダウンス ト リーム

の LUT に統合されます。

エリア モードでの再合成

エリア モードで合成を再実行し、 LUT の数を削減します。

順序エリアの再合成

組み合わせロジッ クおよび順序ロジッ クを削減するよ う再合成を実行します。 エ リ ア モードでの再合成の 適化の

スーパーセッ ト を実行します。

ブロック RAM 消費電力最適化 (デフォルト )

ブロ ッ ク RAM セルに対して消費電力の 適化をイネーブルにします。 次を実行します。

• 完全なデュアル ポート RAM の読み出されないポートの WRITE_MODE を NO_CHANGE に変更。

• ブロ ッ ク RAM の出力にクロ ッ ク ゲーティングを適用。

インプリ メンテーシ ョ ン 50UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 51: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

opt_design

ロジッ ク 適化を実行します。

opt_design の構文

opt_design [-retarget] [-propconst] [-sweep] [-bram_power_opt] [-remap] [-resynth_area] [-resynth_seq_area] [-directive <arg>] [-muxf_remap] [-hier_fanout_limit <arg>] [-bufg_opt] [-shift_register_opt] [-control_set_merge] [-merge_equivalent_drivers] [-carry_remap] [-debug_log] [-quiet] [-verbose]

opt_design のスクリプ ト例

# Run logic optimization with the remap optimization enabled, save results in a checkpoint, report timing estimatesopt_design -directive AddRemapwrite_checkpoint -force $outputDir/post_optreport_timing_summary -file $outputDir/post_opt_timing_summary.rpt

この opt_design サンプル スク リプ トでは、 イン メモ リ デザインにロジッ ク 適化を実行し、 メモ リに書き込み

ます。 適化後にデザイン チェッ クポイン ト を保存し、 タイ ミ ング サマリ レポート を生成して指定のファイルに記

述します。

最適化タイプの制限

適化タイプを制限するには、 コマンド ラ イン オプシ ョ ンを使用します。 次に、 デフォルトのブロッ ク RAM 適

化を実行しないよ うにする別の方法を示します。

opt_design -retarget -propconst -sweep -bufg_opt -shift_register_opt

-directive オプシ ョ ンの使用

-directive オプシ ョ ンで指示子を指定する と、 opt_design コマンドを異なるモードで実行できます。 一度に指

定できる指示子は 1 つのみです。 -directive オプシ ョ ンは、 ほかのオプシ ョ ンと共に使用するこ とはできません。

次の指示子があ り ます。

• Explore:

適化を複数回実行します。

• ExploreArea:

組み合わせロジッ クを縮小するこ とを優先して 適化を複数回実行します。

• AddRemap:

デフォルトのロジッ ク 適化フローを実行し、 LUT 再マップを含めてロジッ ク レベルを削減します。

• ExploreSequentialArea:

レジスタおよび関連の組み合わせロジッ クを縮小するこ とを優先して 適化を複数回実行します。

• RuntimeOptimized:

反復回数を少なく し、 デザイン パフォーマンスよ り も実行時間を短縮するこ とを優先します。

• NoBramPowerOpt:

opt_design コマンドの RAM 消費電力 適化以外のデフォルト 適化をすべて実行します。

インプリ メンテーシ ョ ン 51UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 52: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

• ExploreWithRemap:

Explore に加えて リマップ 適化を実行します。

• Default:

opt_design をデフォルト設定で実行します。

表 2-4 に、 -directive オプシ ョ ンの異なる指示子で実行される 適化フェーズを示します。

インプリ メンテーシ ョ ン 52UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 53: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

イ 53UG

フ a NoBramPowerOpt RuntimeOptimized:

1 リ ターゲッ ト リ ターゲッ ト

2 定数伝搬 定数伝搬

3 スイープ スイープ

4 BUFG 適化 BUFG 適化

5 タ シフ ト レジスタの

適化

シフ ト レジスタの

適化

6

7

8 で

9

10

a.

ンプリ メンテーシ ョ ン904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.com

2-4: -directive オプシ ョ ンの異なる指示子で実行される最適化フェーズ

ェーズ Default Explore ExploreWithRemap ExploreArea AddRemap ExploreSequentialAre

リ ターゲッ ト リ ターゲッ ト リ ターゲッ ト リ ターゲッ ト リ ターゲッ ト リ ターゲッ ト

定数伝搬 定数伝搬 定数伝搬 定数伝搬 定数伝搬 定数伝搬

スイープ スイープ スイープ スイープ スイープ スイープ

BUFG 適化 BUFG 適化 BUFG 適化 BUFG 適化 BUFG 適化 BUFG 適化

シフ ト レジスタ

の 適化

シフ ト レジスタ

の 適化

シフ ト レジスタの

適化

シフ ト レジスタ

の 適化

シフ ト レジスタ

の 適化

シフ ト レジス

の 適化

ブロッ ク RAM

消費電力 適化

定数伝搬 定数伝搬 定数伝搬 リマップ 定数伝搬

スイープ スイープ スイープ ブロ ッ ク RAM

消費電力 適化

スイープ

ブロ ッ ク RAM

消費電力 適化a

リマップ エリ ア モードで

の再合成

エリ ア モード

の再合成

ブロ ッ ク RAM

消費電力 適化a

ブロ ッ ク RAM

消費電力 適化

順序エリ アの

再合成

ブロッ ク RAM

消費電力 適

UltraScale/UltraScale+ デザインでは実行されない。

Page 54: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

-debug_log および -verbose オプシ ョ ンの使用

適化結果を解析するには、 -debug_log オプシ ョ ンを使用し、 opt_design の 適化の影響を受けたロジッ クの

詳細を確認します。 このログには、 定数値のため削減されたロジッ クおよびロードがないために削除されたロジッ

クに関する追加メ ッセージが表示されます。

opt_design で実行されたすべてのロジッ ク 適化の詳細を表示するには、 -verbose オプシ ョ ンを使用してくだ

さい。 -verbose オプシ ョ ンを使用する と大量のメ ッセージが表示されるので、 デフォルトではオフになっていま

す。 -verbose オプシ ョ ンは、 有益だと思われる場合に使用して ください。

推奨: 大型デザインでツールの実行時間を短縮するには、 -verbose オプシ ョ ンはシェル モードまたはバッチ モー

ドでのみ使用し、 GUI モードでは使用しないでください。

重要: opt_design コマンドは、 イン メモ リ デザインに対して実行されます。 複数回実行した場合、 前回の run の結

果が 適化されます。 そのため、 -debug_log または -verbose オプシ ョ ンを追加する前に合成済みデザインを読

み込み直す必要があ り ます。

ロジック最適化制約

ロジッ ク 適化中、 DONT_TOUCH プロパティが認識され、 このプロパティが設定されているネッ ト またはセルは削

除されません。詳細は、『Vivado Design Suite ユーザー ガイ ド : 合成』 (UG901) [参照 8] のこのセクシ ョ ンを参照してく

ださい。

DONT_TOUCH は通常、 下位セルに設定し、 適化で削除されないよ うにします。 階層セルに DONT_TOUCH を設定

する とセルの境界は保持されますが、 セル内では 適化が実行される可能性はあ り、 制約がその境界を超えて伝搬

される可能性はあ り ます。 階層ネッ ト を保持するには、 get_nets の -segments オプシ ョ ンを使用して、 すべて

のネッ ト セグメン トに DONT_TOUCH プロパティを適用します。

MARK_DEBUG プロパティの値が TRUE であるネッ トには、 DONT_TOUCH プロパティの値が自動的に TRUE に設定さ

れます。 これによ り、 インプ リ メンテーシ ョ ン フロー中にネッ トは変更されなくな り、 どのデザイン段階でもネッ

ト をプローブできます。 MARK_DEBUG は、 このよ うに使用するこ とをお勧めします。 ただし、 DONT_TOUCH は制限

的すぎ、 定数の伝搬、 スイープ、 リマップなどの 適化が実行されなくな り、 タイ ミ ング ク ロージャを達成するの

が困難になるこ とがまれにあ り ます。 その場合は、 MARK_DEBUG を TRUE に設定したまま、 DONT_TOUCH の値

FALSE に設定できます。 ただし、 MARK_DEBUG を設定したネッ トが 適化で削除され、 プローブされなくなる可能

性があ り ます。

インプリ メンテーシ ョ ン 54UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 55: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

消費電力の最適化

ク ロ ッ ク ゲーティングを使用して、 ダイナミ ッ ク消費電力を 適化します (オプシ ョ ン)。 消費電力の 適化は、 プ

ロジェク ト モードおよび非プロジェク ト モード両方で使用でき、 ロジッ ク 適化後または配置後に実行してデザイ

ンの消費電力を 適化できます。 消費電力の 適化には、 ク ロ ッ クやロジッ クを変更せずにデザインのダイナミ ッ

ク消費電力を削減するクロ ッ ク ゲーティング ソ リ ューシ ョ ンが含まれます。

詳細は、 『Vivado Design Suite ユーザー ガイ ド : 消費電力解析および 適化』 (UG907) [参照 11] を参照してください。

Vivado 消費電力解析

Vivado ツールでは、 レガシ IP ブロ ッ クおよびサードパーティ IP ブロ ッ クを含む、 デザイン全体が解析され、 各ク

ロ ッ ク サイ クルでの結果に影響しないレジスタからの出力ロジッ クが特定されます。

クロック イネーブル (CE) の使用

Vivado 消費電力 適化では、ザイ リ ンクス 7 シ リーズ デバイスのロジッ クに多数含まれるクロ ッ ク イネーブル (CE)

が利用されます。 細粒度クロ ッ ク ゲーティングまたはロジッ ク ゲーティング信号が作成され、 余分なスイ ッチイン

グ アクティビティが除去されます。

また、 フ リ ップフロ ップ レベルでは、 CE はフ リ ップフロ ップの D 入力とフ ィードバッ ク Q 出力のいずれかを選択

するのではなく、 ク ロ ッ クをゲーティングしているので、 CE 入力のパフォーマンスが向上するだけではなく、 ク

ロ ッ クの消費電力も削減されます。

クロック ゲーティング

シンプル デュアル ポート と完全なデュアル ポート モードのいずれの場合でも専用ブロ ッ ク RAM の消費電力が削減

されます (図 2-15)。

X-Ref Target - Figure 2-14

図 2-14: クロック ゲーティング

インプリ メンテーシ ョ ン 55UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 56: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

これらのブロ ッ クには、 次のイネーブルが含まれます。

• アレイ イネーブル

• ライ ト イネーブル

• 出力レジスタのクロ ッ ク イネーブル

節約される消費電力のほとんどはアレイ イネーブルの使用によるもので、 データが書き込まれず、 出力が使用され

ないと きに、 消費電力を削減する機能がインプリ メン ト されます。

power_opt_design

power_opt_design コマンドは、 デザインを解析して 適化します。 デフォルトでは、 デザイン全体が解析およ

び 適化されます。 ク ロ ッ ク ゲーティングも実行され、 消費電力が 適化されます。

power_opt_design の構文

power_opt_design [-quiet] [-verbose]

デザイン全体を解析および 適化しない場合は、 set_power_opt を使用して 適化を設定します。 このコマンド

を使用する と、 適化にセル タイプまたは階層を含めるか、 除外するかなどを設定できます。 set_power_opt コ

マンドを使用して、 opt_design コマンドで 適化を実行するブロ ッ ク RAM セルを指定できます。

set_power_opt コマンドの構文は、 次のとおりです。

set_power_opt [-include_cells <args>] [-exclude_cells <args>] [-clocks <args>][-cell_types <args>] [-quiet] [-verbose]

注記: opt_design を使用した場合、 ブロ ッ ク RAM の消費電力 適化は実行されません。

推奨: opt_design コマンドで特定のブロ ッ ク RAM に対してブロ ッ ク RAM 消費電力 適化が実行されないよ うに

するには、 set_power_opt -exclude_cells [get_cells <bram_insts>] を使用します。

X-Ref Target - Figure 2-15

図 2-15: ブロック RAM イネーブルの利用

Before

address

data in

data out

After

address

data in data out

ce

インプリ メンテーシ ョ ン 56UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 57: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

配置

Vivado Design Suite 配置によ りネッ ト リ ス トのセルがターゲッ ト デバイスの特定サイ トに配置されます。 ほかのイン

プ リ メンテーシ ョ ン コマンド と同様、 イン メモ リ デザインに対して処理が実行されます。

デザイン配置の最適化

Vivado の配置では、 次を 適化するよ う配置が実行されます。

• タイ ミ ング スラ ッ ク : タイ ミ ング ク リ ティカルなパスのセルの配置は、 負のスラ ッ クが 小限になるよ う選択

されます。

• ワイヤの長さ : 配線長を 小限に抑えるよ うに、 全体的な配置が実行されます。

• 密集度: ピンの密集度が監視され、 配線の密集を削減するためセルが分散されます。

デザイン ルール チェ ック

配置を開始する前に、 デザイン ルール チェッ ク (DRC) (report_drc で選択された DRC およびビルト インの内部

DRC) が実行されます。 内部 DRC では、 LOC 制約が設定されていないメモ リ IP セル、 競合する IOSTANDARD が設

定された I/O バンクなど、 無効な配置がレポート されます。

クロックおよび I/O 配置

DRC の実行後、 クロ ッ クおよび I/O セルが配置されてからその他のロジッ ク セルが配置されます。 ク ロ ッ ク と I/O

セルは、 選択したザイ リ ンクス デバイスに特定の複雑な配置規則によって関連しているこ とがよ くあるので、 同時

に配置されます。 UltraScale デバイスでは、 配置によ り ク ロ ッ ク ト ラ ッ クの割り当ておよびクロ ッ クの事前配線も実

行されます。 IOB プロパティが設定されたレジスタ セルは、 IOB 値が TRUE のどのレジスタを I/O ロジッ ク サイ ト

にマップするかを決定するためにこの段階で処理されます。 配置で IOB プロパティの TRUE を適用できない場合は、

ク リ ティカル警告が表示されます。

配置のターゲッ ト

この時点では、 次が配置のターゲッ ト とな り ます。

• I/O ポートおよび関連ロジッ ク

• グローバルおよびローカル ク ロ ッ ク バッファー

• ク ロ ッ ク マネージメン ト タイル (MMCM および PLL)

• ギガビッ ト ト ランシーバー (GT) セル

インプリ メンテーシ ョ ン 57UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 58: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

固定されていないロジックの配置

配置のこの段階では、 固定されていないロジッ クを配置する際 LOC プロパティや Pblock 割り当てなどの物理制約に

従います。 既存の LOC 制約は、 ネッ ト リ ス トの接続およびデバイス サイ トに対して有効かど うかがチェッ ク されま

す。 メモ リ IP や GT のよ うな一部の IP は、 デバイス専用の配置制約を使用して生成されます。

重要: デバイスの I/O アーキテクチャのために、 LOC プロパティで LOC が適用されていないセルが制約されるこ と

がよ くあ り ます。 入力ポートに LOC 制約が設定されている場合、 関連する I/O バッファー、 IDELAY、 ILOGIC の位

置も固定されます。 競合する LOC 制約は、 入力パスの個々のセルには適用できません。 出力および GT 関連のセル

の場合も同様です。

クロック リソースの配置規則

ク ロ ッ ク リ ソースの配置は、 『7 シ リーズ FPGA ク ロ ッキング リ ソース ユーザー ガイ ド』 (UG472) [参照 16] および

『UltraScale アーキテクチャ ク ロ ッキング リ ソース ユーザー ガイ ド』 (UG572) [参照 17] に示す配置規則に従う必要が

あ り ます。 たとえば、 グローバル ク ロ ッ ク バッファーを駆動する入力はクロ ッ ク兼用 I/O サイ トに配置する必要が

あ り、 7 シ リーズ デバイスではデバイスの上半分または下半分の同じ側、 UltraScale デバイスでは同じクロ ッ ク領域

に配置する必要があ り ます。 これらのク ロ ッ ク配置規則も、 論理ネッ ト リ ス トの接続およびデバイス サイ トに対し

て有効かど うかがチェッ ク されます。

クロックおよび I/O を配置できない場合

ク ロ ッ クおよび I/O の適切な配置が見つからなかった場合は、 違反のあった配置規則と、 影響を受けたセルの簡単な

説明が表示されます。

配置できない理由には、 次のよ うなものがあ り ます。

• 競合する制約によ り ク ロ ッ ク ツ リーの問題が発生している。

• 複雑すぎて配置ツールで解決できないクロ ッ ク ツ リーの問題がある。

• RAM および DSP ブロ ッ クの配置が Pblock などのほかの制約と競合している。

• リ ソースの使用しすぎ

• I/O バンクの要件および規則

まずサイ トにセルが暫定的に配置され、 その後配置問題を解決するために別のセルが配置されるこ とがあ り ます。

暫定的な配置によ り、 ク ロ ッ クおよび I/O 配置のエラーの原因がわかるこ とがよ くあ り ます。 暫定的な配置でエラー

になったセルを手動で配置する と、 配置が改善するこ とがあ り ます。

ヒン ト : place_ports コマンドを実行してクロ ッ クおよび I/O を配置してから、 place_design コマンドを実行し

ます。 ポート配置でエラーが発生した場合、 配置はメモ リに保存され、 エラーを解析できます。 詳細は、 Vivado Tcl

プロンプ トから place_ports -help を実行してください。

UltraScale のクロ ッ ク ツ リーの配置および配線については、 『UltraFast 設計手法ガイ ド (Vivado Design Suite 用)』

(UG949) [参照 13] を参照してください。

インプリ メンテーシ ョ ン 58UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 59: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

グローバル配置、 詳細配置、 パッキングおよび有効化

クロ ッ ク と I/O の配置の後は、 グローバル配置、 詳細配置、 パッキングおよび有効化などの残りの配置を実行します。

推奨: 配置後に report_timing_summary を実行し、 ク リ ティカル パスをチェッ ク して ください。 負のセッ ト アッ

プ スラ ッ クが大きいパスは、 タイ ミ ング ク ロージャを達成するため、 手動配置、 制約の変更、 またはロジッ クの再

構築が必要な場合があ り ます。

place_design

デザインを配置します。 ほかのインプリ メンテーシ ョ ン コマンド と同様、 place_design コマンドはインク リ メン

タルに実行されます。 部分的に配置されているデザインに対しては、 始めから配置し直すのではなく、 既存の配置

が開始点と して使用されます。

place_design の構文

place_design [-directive <arg>] [-no_timing_driven] [-timing_summary] [-unplace] [-post_place_opt] [-fanout_opt] [-no_bufg_opt] [-quiet] [-verbose]

place_design のスクリプ ト例

# Run placement, save results to checkpoint, report timing estimatesplace_designwrite_checkpoint -force $outputDir/post_placereport_timing_summary -file $outputDir/post_place_timing_summary.rpt

このサンプル スク リプ トは、 イン メモ リ デザインを配置して、 配置後にデザイン チェッ クポイン ト を保存し、 タイ

ミ ング サマリ レポート を生成して指定のファイルに記述します。

-directive オプシ ョ ンの使用

-directive オプシ ョ ンで指示子を指定すると、 place_design コマンドを異なるモードで実行できます。 一度に指

定できる指示子は 1 つのみです。 -directive オプシ ョ ンは、 ほかのオプシ ョ ンと共に使用するこ とはできません。

配置の -directive オプシ ョ ン

配置は通常デザインの全体的なパフォーマンスに も影響するので、 -directive オプシ ョ ンの指示子が多数あ り

ます。 表 2-5 に、 どの指示子がどのよ うなデザインに効果的かを示します。

表 2-5: -directive オプシ ョ ンのガイド ライン

指示子 効果が得られるデザイン

BlockPlacement ブロ ッ ク RAM または DSP ブロ ッ ク、 あるいはその両方を多数含むデザイン

ExtraNetDelay 遠距離のネッ ト接続を含むデザインおよび多数の異なるモジュールにファンアウ

トするネッ ト を含むデザイン

SpreadLogic 接続が多数ある密集が発生しやすいデザイン

ExtraPostPlacementOpt すべてのタイプのデザイン

SSI 密集を緩和したり タイ ミ ングを向上するため、 異なる分割方法が有益である可能

性のある SSI デザイン。

インプリ メンテーシ ョ ン 59UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 60: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

-directive オプシ ョ ンで指定可能な指示子

• Explore:

詳細配置および配置後の 適化のエフォート を増加します。

• WLDrivenBlockPlacement:

RAM および DSP ブロ ッ クをワイヤ長に基づいて配置します。 タイ ミ ング ド リブンの配置を無効にし、 ブロ ッ

ク との接続距離を 短にするよ う配置します。 RAM および DSP ブロ ッ クへのパスおよびこれらのブロ ッ クか

らのパスのタイ ミ ングを向上できます。

• EarlyBlockPlacement:

RAM および DSP ブロ ッ クをタイ ミ ング ド リブンに配置します。 RAM および DSP ブロッ クの位置は、 配置プ

ロセスの早い段階で固められ、 残りのロジッ クを配置するためのアンカーと して使用されます。

• ExtraNetDelay_high:

ファンアウ トが大き く距離の長いネッ トの見積も り遅延を増加します。 place_design コマンドの後にはタイ

ミ ングが満たされていたが、 過剰に良く見積もられた遅延のために route_design コマンドの後タイ ミ ングが

満たされなくなったク リ ティカル パスのタイ ミ ングを向上できます。 high および low の 2 つのレベルがサポー

ト されます。 ExtraNetDelay_high では増加量が も大き くな り ます。

• ExtraNetDelay_low:

ファンアウ トが大き く距離の長いネッ トの見積も り遅延を増加します。 place_design コマンドの後にはタイ

ミ ングが満たされていたが、 過剰に良く見積もられた遅延のために route_design コマンドの後タイ ミ ングが

満たされなくなったク リ ティカル パスのタイ ミ ングを向上できます。 high および low の 2 つのレベルがサポー

ト されます。 ExtraNetDelay_low では増加量が も小さ くな り ます。

• SSI_SpreadLogic_high:

密集した領域が作成されないよ うに、 ロジッ クを SSI デバイス全体に分散します。 high および low レベルがサ

ポート されます。 SpreadLogic_high では分散度が も高くな り ます。

• SSI_SpreadLogic_low:

密集した領域が作成されないよ うに、 ロジッ クを SSI デバイス全体に分散します。 high および low レベルがサ

ポート されます。 SpreadLogic_low では分散度が も低くな り ます。

• AltSpreadLogic_high:

密集した領域が作成されないよ うに、 ロジッ クをデバイス全体に分散します。 high、 medium、 low の 3 つのレベ

ルがサポート されます。 AltSpreadLogic_high では分散度が も高くな り ます。

• AltSpreadLogic_medium:

密集した領域が作成されないよ うに、 ロジッ クをデバイス全体に分散します。 high、 medium、 low の 3 つのレベ

ルがサポート されます。 AltSpreadLogic_medium では分散度が中程度になり ます。

• AltSpreadLogic_low:

密集した領域が作成されないよ うに、 ロジッ クをデバイス全体に分散します。 high、 medium、 low の 3 つのレベ

ルがサポート されます。 AltSpreadLogic_low では分散度が も低くな り ます。

• ExtraPostPlacementOpt:

配置後の 適化のエフォート を増加します。

• ExtraTimingOpt:

後のステージ中、 タイ ミ ング ド リブンの配置に代わりのアルゴ リズム セッ ト を使用します。

• SSI_SpreadSLLs:

SLR 間で分割を実行し、 接続の多い領域に追加のエリ アを割り当てます。

• SSI_BalanceSLLs:

SLR 間で SLL のバランスが取られるよ うに SLR 間で分割を実行します。

インプリ メンテーシ ョ ン 60UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 61: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

• SSI_BalanceSLRs:

SLR 間でセルの数のバランスが取られるよ うに SLR 間で分割を実行します。

• SSI_HighUtilSLRs:

各 SLR でロジッ クを近くに配置するよ う指定します。

• RuntimeOptimized:

反復回数を少なく し、 デザイン パフォーマンスよ り も実行時間を短縮するこ とを優先します。

• Quick:

有効なデザインを得るために、 も高速な、 タイ ミ ング ド リブンでない、 低限の配置を実行します。

• Default:

place_design をデフォルト設定で実行します。

ヒン ト : -directive オプシ ョ ンを使用して、 デザインの異なる配置オプシ ョ ンを試してみてください。

-unplace オプシ ョ ンの使用

-unplace オプシ ョ ンは、 デザイン内で固定されたロケーシ ョ ンを持たないセルおよびポートの配置を解除します。

固定されたロケーシ ョ ンを持つオブジェク トでは、 IS_LOC_FIXED プロパティが TRUE に設定されています。

-no_timing_driven オプシ ョ ンの使用

-no_timing_driven オプシ ョ ンは、 デフォルトのタイ ミ ング ド リブン配置アルゴ リズムをディ スエーブルにしま

す。 このオプシ ョ ンを使用する と ワイヤの長さに基づいて高速な配置が実行されますが、 タイ ミ ング制約は無視さ

れます。

-timing_summary オプシ ョ ンの使用

配置後、 タイ ミ ング サマリ (見積も り ) がログ ファ イルに出力されます。 デフォルトでは、 数値は配置の内部見積も

りに基づきます。 次に例を示します。

INFO: [Place 30-746] Post Placement Timing Summary WNS=0.022. For the most accurate timing information please run report_timing.

実行時間が多少長くなるがよ り正確な結果を得るには、 -timing_summary オプシ ョ ンを使用する と、 スタティ ッ

ク タイ ミ ング エンジンからの結果に基づく タイ ミ ング サマリがレポート されます。

INFO: [Place 30-100] Post Placement Timing Summary | WNS=0.236 | TNS=0.000 |

説明:

° WNS: ワース ト ネガティブ スラ ッ ク

° TNS: トータル ネガティブ スラ ッ ク

-verbose オプシ ョ ンの使用

配置結果をよ り詳細に解析するには、 -verbose オプシ ョ ンを使用して、 place_design コマンドによるセルおよ

び I/O 配置の詳細を確認します。

-verbose オプシ ョ ンを使用する と大量のメ ッセージが表示されるので、 デフォルトではオフになっています。

-verbose オプシ ョ ンは、 有益な場合にのみ使用します。

インプリ メンテーシ ョ ン 61UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 62: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

-post_place_opt オプシ ョ ンの使用

配置後に 適化を実行する と、 ク リ ティカル パスのタイ ミ ングが向上する可能性があ り ますが、 配置配線の実行時

間が増加します。 この 適化は、 完全に配置されたデザインにタイ ミ ング違反が含まれる場合に実行します。 この

オプシ ョ ンを使用する と、 遅延の大きい方から 数個のク リティカル パスでク リ ティカル セルを移動して遅延を削減

できるかが試行され、 見積も り遅延が削減された場合はその新しい位置にセルが配置されます。 実行時間が長く、

ク リ ティカル パスが比較的多いデザインでは、 これらの配置の変更によ り タイ ミ ングがさ らに向上する場合があ り

ます。

この 適化は配置後のどの段階でも実行でき、 配線済みデザインで実行する と特に有益です。 配線済みデザインで

この 適化を実行する場合、 次の点に注意する必要があ り ます。

• タイ ミ ング データは実際の配線遅延に基づいているので、 適化で遅延が 大のパスが確実に考慮されます。

• 適化中のセルの移動の評価では、 セル配置に基づいて遅延が見積もられます。 実際の配線遅延は使用されま

せん。

• 新しいセル配置が確定する と、 関連のネッ トの配線が解除されるので、 これらのネッ ト を配線する必要があ り

ます。

次に例を示します。

1. 配置後に配置後の 適化を実行します。

place_designplace_design -post_place_opt

2. 配線後に配置後の 適化を実行します。

place_designphys_opt_designroute_designplace_design -post_place_optroute_design

3. 配線後に配置後の 適化をループで複数回実行します。 簡単に実行できるよ うにするため、 インプリ メンテー

シ ョ ン コマンドを runPPO とい う Tcl プロシージャにま とめ、 引数で実行回数と各実行で phys_opt_design

をイネーブルにするかど うかを指定します。

proc runPPO { {numIters 1} {enablePhysOpt 1} } { for {set i 0} {$i < $numIters} {incr i} { place_design -post_place_opt if {$enablePhysOpt != 0} { phys_opt_design } route_design if {[get_property SLACK [get_timing_paths ]] >= 0} {break}; #stop if timing is met }}

. . .place_designphys_opt_designroute_designrunPPO 4 1 ; # run 4 post-route iterations and enable phys_opt_design

インプリ メンテーシ ョ ン 62UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 63: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

-fanout_opt オプシ ョ ンの使用

オプシ ョ ンのファンアウ ト 適化フェーズでは、ファンアウ トの大きいネッ ト (ファンアウ ト > 1000、スラ ッ ク < 2.0

ns) を駆動するレジスタ、 または離れて配置された (スラ ッ ク < 0.5 ns) 専用ブロッ ク ロード (ブロ ッ ク RAM、 FIFO、

UltraRAM、 DSP) に接続されたネッ ト を駆動するレジスタが複製されます。 実際のファンアウ トが MAX_FANOUT プ

ロパティ値よ り も大きいネッ ト もファンアウ ト 適化フェーズに追加されます。 このフェーズは配置フローの初期

のグローバル配置中に実行され、 詳細な配置の前にこれらのパスのタイ ミ ング ク リ ティカル度を軽減するのに有益

です。 複製は、 MAX_FANOUT 属性を使用した合成中に実行するよ り も、 配置中に実行する方が望ましいこ とがほと

んどです。 place_design 前に実行される複製とは異なり、 配置がわかっているので、 複製されたド ライバーを

ロード と同時に配置するこ とが可能なので、 配置がわからずに複製する場合に発生する可能性のある密集を軽減で

きます。 配置のファンアウ ト 適化フェーズでの物理合成は、 -fanout_opt オプシ ョ ンを使用する と イネーブル

になり ます。 このフェーズの 後に、 物理合成 適化のサマリ を示す表が表示されます。

Summary of Physical Synthesis Optimizations============================================-----------------------------------------------------------------------------------------------------| Optimization | Added Cells | Removed Cells | Optimized Cells/Nets | Dont Touch | Iterations | Elapsed|-----------------------------------------------------------------------------------------------------| Very High Fanout | 594 | 0 | 65 | 0 | 1 | 00:08:25 || Fanout | 26 | 0 | 3 | 0 | 1 | 00:00:27 || Critical Cell | 2 | 0 | 2 | 0 | 1 | 00:00:05 || Critical Cell | 0 | 0 | 0 | 0 | 1 | 00:00:00 || Total | 622 | 0 | 70 | 0 | 4 | 00:08:57 |-----------------------------------------------------------------------------------------------------

図 2-15: 配置の物理合成サマリの例

-no_bufg_opt オプシ ョ ンの使用

配置では、 ファンアウ トの大きいネッ ト をグローバル配線を使用して配線し、 ファブ リ ッ クの配線リ ソースを解放

できます。制御信号を駆動し、 ファンアウ トが大き く (ファンアウ ト > 1000) スラ ッ クが 1.0 ns を超えるネッ トが、 こ

の 適化で考慮されます。 ロードは、 ク リ ティカル ロード と正の値が大きいスラ ッ クのロードに分けられます。 正

の値が大きいスラ ッ クのロードは、 元のド ライバーに も近い使用可能なサイ トに配置されている BUFGCE を介し

て駆動され、 ク リ ティカル ロードは元のド ライバーに接続されたままになり ます。 この 適化は、 タイ ミ ングが悪

化しない場合にのみ実行されます。 このフェーズは、 配置が比較的安定した配置フローの後の方で実行されます。

ディ スエーブルにするには、 -no_bufg_opt オプシ ョ ンを使用します。

インプリ メンテーシ ョ ン 63UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 64: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

物理最適化

物理 適化では、 デザインの負のスラ ッ ク パスに対してタイ ミ ング ド リブンの 適化が実行されます。 物理 適化

には、 配置後と配線後の 2 つのモードがあ り ます。

配置後モードでは、 セル配置からのタイ ミ ング見積も りに基づいて 適化が実行されます。 物理 適化では、 ロ

ジッ ク 適化によるネッ ト リ ス トの変更が自動的に組み込まれ、 必要に応じてセルが配置されます。

配線後モードでは、 実際の配線遅延に基づいて 適化が実行されます。 ロジッ クの変更に応じた自動的なネッ ト リ

ス トのアップデートおよびセルの配置に加え、 必要に応じて配線もアップデート されます。

重要: 配線後の物理 適化は、 タイ ミ ングが満たされないパスを多少含むデザインで使用する と も効果的です。

WNS が -0.200 ns 未満であるか、 タイ ミ ングを満たすこ とのできないエンドポイン トが 200 を超えるよ うなデザイン

で配線後の物理 適化を使用する と、 QOR (結果の品質) への改善はほとんど見られないのに、 実行時間が長くなる

こ とがあ り ます。

全体的な物理 適化は、 適化が多く実行される配置後モードで 大に実行されます。 配線後モードでは、 タイ ミ

ング ク ロージャが達成された配線に影響しないよ うに、 物理 適化は控えめに実行されます。 物理 適化を実行す

る前にデザインの配線ステータスがチェッ ク され、 配置後または配線後のどちらのモードを使用するかが判断され

ます。

デザインのスラ ッ クが負でなく、 タイ ミ ング ベースの 適化オプシ ョ ンで物理 適化を指定した場合、 適化は実

行されずにコマンドが終了します。 物理 適化では、 実行時間とデザイン パフォーマンスのバランスを取るため、

タイ ミ ングが満たされていないパスすべてが 適化されるわけではなく、 タイ ミ ング違反が大きい方から数パーセ

ン トのみが 適化されます。 このため、 物理 適化を連続して実行する と、 デザインでタイ ミ ングが満たされてい

ないパスの数が徐々に少なくなる可能性があ り ます。

使用可能な物理最適化

Vivado ツールでは、 イン メモ リ デザインに対して次の表に示すよ うに物理 適化が実行されます。

重要: 特定の物理 適化に対応するコマンド オプシ ョ ンを指定する と、 その 適化のみが実行されます。 ほかの 適

化は、 通常デフォルトで実行されるものも、 ディ スエーブルになり ます。

表 2-6: 配置後および配線後の物理最適化

オプシ ョ ン名配置後 配線後

実行可能 デフォルト 実行可能 デフォルト

ファンアウ トの大きいネッ トの 適化 ○ ○ × なし

配置の 適化 ○ ○ ○ ○

配線の 適化 × なし ○ ○

リ ワイヤ ○ ○ ○ ○

ク リティカル セルの 適化 ○ ○ ○ ○

DSP レジスタの 適化 ○ ○ × なし

ブロ ッ ク RAM レジスタの 適化 ○ ○ × なし

UltraRAM レジスタの 適化 ○ × × なし

インプリ メンテーシ ョ ン 64UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 65: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

ファンアウトの大きいネッ トの最適化

ファンアウ トの大きいネッ トの 適化は、 次のよ うに実行されます。

1. 負のスラ ッ クが WNS のある割合以内であるファンアウ トの大きいネッ トは、 複製が考慮されます。

2. ロードはその配置によ り クラスター化され、 各ロード クラスターに対してド ライバーが複製および配置されます。

タイ ミ ングが再解析され、 タイ ミ ングが改善した場合はロジッ クの変更が確定されます。

ヒン ト : 複製されたオブジェク トの名前は、 元のオブジェク ト名に _replica と複製されたオブジェク ト カウン ト

が付いたものになり ます。

配置ベースの最適化

ク リ ティカル パスのすべてのセルをワイヤ遅延を削減するよ うに配置し直します。

配線の最適化

ク リ ティカル パスのネッ トおよびピンを遅延を小さ くするよ う配線し直します。

リワイヤ

LUT の接続をスワップしてク リ ティカル信号のロジッ ク レベル数を削減するこ とによ り、 ク リ ティカル パスを 適

化します。 LUT 論理式を変更してデザインの機能を保持します。

クリテ ィ カル セルの最適化

タイ ミ ングが満たされないパスのセルを複製します。 特定のセルのロードど う しが離れている場合、 セルが複製さ

れ、 新しいド ライバーがロード ク ラスターの近くに配置されます。 この 適化は、 パスがワース ト ネガティブ ス

ラ ッ クのある割合以内でタイ ミ ングを満たしていなければ、 ファンアウ トが大き くな くても実行されます。

シフ ト レジスタの 適化 ○ ○ × なし

ク リ ティカル ピンの 適化 ○ ○ × なし

ブロ ッ ク RAM イネーブルの 適化 ○ ○ × なし

ホールド違反の修正 ○ × × なし

立ち下がりエッジ FF の挿入 ○ × × なし

リ タイ ミ ング ○ × ○ ×

ネッ トの強制的な複製 ○ × × なし

SLR をまたぐパスの 適化 × なし ○ ○

クロ ッ クの 適化 × なし ○ ○

表 2-6: 配置後および配線後の物理最適化 (続き)

オプシ ョ ン名配置後 配線後

実行可能 デフォルト 実行可能 デフォルト

インプリ メンテーシ ョ ン 65UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 66: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

DSP レジスタの最適化

DSP セルのレジスタをロジッ ク アレイに移動したり、 ロジッ ク アレイから DSP セルに移動したりするこ とによ り、

ク リ ティカル パスの遅延が削減されます。

ブロック RAM レジスタの最適化

ブロ ッ ク RAM セルのレジスタをロジッ ク アレイに移動したり、ロジッ ク アレイからブロ ッ ク RAM セルに移動した

りするこ とによ り、 ク リ ティカル パスの遅延を削減します。

シフ ト レジスタの最適化

シフ ト レジスタの 適化を実行する と、 シフ ト レジスタ セル (SRL) とほかのロジッ ク セル間の負のスラ ッ ク パス

のタイ ミ ングが向上します。

シフ ト レジスタ セル (SRL16E または SRLC32E) に入出力するパスにタイ ミ ング違反がある場合、この 適化で SRL

レジスタ チェーンの 初または 後のレジスタを抽出してロジッ ク ファブリ ッ クに配置するこ とによ り、 タイ ミ ン

グを向上します。 この 適化によ り、 元のク リ ティカル パスのワイヤ長が短くな り ます。

この 適化では、 レジスタがシフ ト レジスタからロジッ ク ファブ リ ッ ク移動されるだけで、 ロジッ ク ファブリ ッ ク

からシフ ト レジスタに移動されるこ とはあ り ません。 ロジッ ク ファブ リ ッ クからシフ ト レジスタにレジスタを移動

しても、 タイ ミ ングは向上しません。

この 適化が実行されるための必要条件は、 次のとおりです。

• SRL アドレスが 1 以上で、 SRL 外に移動できるレジスタ段がある。

• SRL アドレスが一定値である (論理 1 または 0 で駆動)。

• SRL セルで開始または終了するタイ ミ ング違反が 大のク リティカル パスの 1 つである。

次のよ うな一部の回路トポロジは 適化されません。

• 大型シフ ト レジスタを構成するためチェーン接続された SRLC32E。

• Q31 出力ピンを使用する SRLC32E。

• O5 および O6 出力の両方を使用して 1 つの LUT に組み合わせられた SRL16E。

SRL からロジッ ク ファブリ ッ クに移動されるレジスタは FDRE セルです。 FDRE および SRL INIT プロパティ、 SRL

アドレスは、 それに応じて調整されます。 次に例を示します。

ク リ ティカル パスがシフ ト レジスタ (SRL16E) srl_inste から開始する と します (図 2-16)。

インプリ メンテーシ ョ ン 66UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 67: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

シフ ト レジスタの 適化後、 タイ ミ ングを向上するため、 シフ ト レジスタの 終段が SRL16E から取り出されてロ

ジッ ク ファブリ ッ クに配置されました (図 2-17)。

srl_inste の SRL16E アドレスは、 内部レジスタ段が 1 つ少なくなったこ とを反映して減少されます。 srlopt レ

ジスタがダウンス ト リーム セルの近くに配置され、 FDRE セルの clock-to-output 遅延は比較的短いので、 元のク リ

ティカル パスは短くな り ます。

クリテ ィ カル ピンの最適化

論理 LUT 入力ピンを高速の物理ピンに再マップし、 ク リ ティカル パスのタイ ミ ングを向上します。 A1 や A2 などの

低速の物理ピンにマップされているク リ ティカル パス上の論理ピンが、 タイ ミ ングが向上する場合に A6 や A5 など

の高速の物理ピンに割り当て直されます。 LOCK_PINS プロパティが設定されているセルはスキップされ、

LOCK_PINS で指定されているピン マップが保持されます。 論理ピンと物理ピンのマップを取得するには、

get_site_pins コマンドを使用します。

X-Ref Target - Figure 2-16

図 2-16: シフ ト レジスタ srl_inste から開始するクリテ ィ カル パス

X-Ref Target - Figure 2-17

図 2-17: シフ ト レジスタ最適化後のクリテ ィ カル パス

インプリ メンテーシ ョ ン 67UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 68: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

ブロック RAM イネーブルの最適化

ブロ ッ ク RAM イネーブルを 適化する と、 消費電力 適化されたブロ ッ ク RAM に関連するク リ ティカル パスのタ

イ ミ ングを向上できます。

配置前のブロ ッ ク RAM 消費電力 適化では、 ダイナミ ッ ク消費電力を削減するために、 ブロ ッ ク RAM の読み出し

および書き込みイネーブル入力を駆動するロジッ クが再構築されます。 配置後、 再構築されたロジッ クがタイ ミ ン

グ ク リ ティカルになる可能性があ り ます。 ブロ ッ ク RAM イネーブルの 適化を実行する と、 イネーブル ロジッ ク

の 適化が元に戻され、 ク リ ティカルなイネーブル ロジッ ク パスのスラ ッ クが向上します。

ホールド違反の修正

ホールド ク リ ティカル パスの遅延を増加するこ とによ り、 ホールド違反の大きいパスのスラ ッ クを向上します。

ヒン ト : ホールド違反の修正では、 特定のしきい値を超えるホールド タイムのみが修正されます。 これは、 配線でそ

のしきい値よ り も低いホールド スラ ッ ク違反が修正されるはずだからです。

立ち下がりエッジ レジスタの挿入

立ち下がりエッジで動作するレジスタを挿入し、 困難なホールド違反を修正します。 レジスタを挿入する と、 ホー

ルド ク リ ティカル タイ ミ ング パスが 2 つの 1/2 周期パスに分割され、 ホールド要件を満たしやすくな り ます。 立ち

下がりエッジで動作するレジスタの挿入のみがサポート され、 2 つの立ち上がりエッジで動作するシーケンシャル

セル間のホールド違反が修正されます。

リ タイ ミ ング

レジスタを組み合わせロジッ クの前後に移動するこ とによ り、 ク リ ティカル パスの遅延を向上します。

ネッ トの強制的な複製

タイ ミ ング スラ ッ クにかかわらず、 ネッ トのド ラ イバーを強制的に複製します。 複製はロードの配置に基づいて実

行され、 複製が十分かど うかを解析する必要があ り ます。 さ らに複製が必要な場合は、 コマンドを複数回実行する

こ とによ りネッ ト を繰り返し複製できます。 タイ ミ ングは無視されますが、 複製を実行するには、 ネッ トがタイ ミ

ング制約の設定されたパスに含まれている必要があ り ます。

SLR をまたぐパスの最適化

SLR 間の接続のパス遅延を削減するため、 配線後の 適化を実行します。 この 適化では、 複製の後に SLR をまた

ぐ部分のド ライバー、 ロード、 またはその両方の位置を調整します。 これは、 UltraScale および UltraScale+ デバイス

のみに適用されます。

クロックの最適化

グローバル バッファーを挿入し、 ク リ ティカル パスの始点と終点の間にスキューを挿入します。 セッ ト アップ タイ

ミ ングを向上するため、 デスティネーシ ョ ン ク ロ ッ クを遅延するバッファーが挿入されます。

配線の最適化

遅延を削減するためタイ ミ ング ク リ ティカル ネッ トに対して配線 適化を実行します。

インプリ メンテーシ ョ ン 68UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 69: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

パス グループの最適化

指定されたパスグループだけを 適化します。

ヒン ト : group_path という Tcl コマンドを使用して、 適化の対象となるパス グループを設定します。

物理最適化のメ ッセージ

ヒント : 物理 適化では、 適化で処理された各ネッ ト と、 実行された 適化のサマリがレポート されます。

次の図に示すよ うに、 物理 適化の 後にサマリが表示され、 各 適化段階の統計やデザイン パフォーマンスへの

影響などがレポート されます。 このレポート を見る と、 WNS を改善するのに も効果的な 適化のタイプがわかり

ます。

phys_opt_design

デザインに対して物理 適化を実行します。 配置後に配置後モードで、 またはデザインを完全に配線した後に配線

後モードで実行できます。

phys_opt_design の構文

phys_opt_design [-fanout_opt] [-placement_opt] [-routing_opt] [-slr_crossing_opt] [-rewire] [-insert_negative_edge_ffs] [-critical_cell_opt] [-dsp_register_opt] [-bram_register_opt] [-uram_register_opt] [-bram_enable_opt] [-shift_register_opt] [-hold_fix] [-retime] [-force_replication_on_nets <args>] [-directive <arg>] [-critical_pin_opt] [-clock_opt] [-path_groups <args>] [-quiet] [-verbose]

X-Ref Target - Figure 2-18

図 2-18: 物理合成最適化のサマリ

インプリ メンテーシ ョ ン 69UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 70: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

phys_opt_design のスクリプ ト例

open_checkpoint top_placed.dcp

# Run post-place phys_opt_design and save resultsphys_opt_designwrite_checkpoint -force $outputDir/top_placed_phys_opt.dcpreport_timing_summary -file $outputDir/top_placed_phys_opt_timing.rpt

# Route the design and save resultsroute_designwrite_checkpoint -force $outputDir/top_routed.dcpreport_timing_summary -file $outputDir/top_routed_timing.rpt

# Run post-route phys_opt_design and save resultsphys_opt_designwrite_checkpoint -force $outputDir/top_routed_phys_opt.dcpreport_timing_summary -file $outputDir/top_routed_phys_opt_timing.rpt

この phys_opt_design サンプル スク リプ トでは、 配置後および配線後の両方で物理 適化が実行されます。 ま

ず、 配置済みデザインがチェッ クポイン トから読み込まれ、 配置後の phys_opt_design が実行されます。 チェッ

クポイン トおよびタイ ミ ングの結果が保存されます。 次にデザインが配線され、 保存されます。 その後、 配線後の

phys_opt_design が実行され、 結果が保存されます。 配置後および配線後の物理 適化の両方で、 同じ

phys_opt_design コマンドが使用されます。 モードを指定するためにオプシ ョ ンを使用する必要はあ り ません。

-directive オプシ ョ ンの使用

-directive オプシ ョ ンで指示子を指定する と、 phys_opt_design コマンドを異なるモードで実行できます。 一

度に指定できる指示子は 1 つのみです。 -directive オプシ ョ ンは、 ほかのオプシ ョ ンと共に使用するこ とはでき

ません。 次に設定可能な指示子を示します。

• Explore:

かなり ファンアウ トの大きいネッ トの複製、 およびク リ ティカル パス 適化 (物理 適化のサブセッ トがス

ラ ッ クに関係なくすべての終点クロ ッ クの 上位ク リティカル パスで実行) と呼ばれる 終段階など、 複数の

適化パスで異なるアルゴ リズムを実行します。

• ExploreWithHoldFix:

適化を複数回実行し、 ホールド違反の修正およびファンアウ トの大きいネッ トの複製を含め、 異なるアルゴ

リズムを実行します。

ヒン ト : ホールド違反の修正では、 特定のしきい値を超えるホールド タイムのみが修正されます。 これは、 配線でそ

のしきい値よ り も低いホールド スラ ッ ク違反が修正されるはずだからです。

• AggressiveExplore:

Explore と似ていますが、 異なる 適化アルゴ リズムを使用し、 よ り厳しい目標を設定します。

• AlternateReplication:

ク リ ティカル セルの複製に異なるアルゴ リズムを使用します。

• AggressiveFanoutOpt:

ファンアウ トに関連する 適化に異なるアルゴ リズムを使用し、 よ り厳しい目標を設定します。

• AddRetime:

デフォルトの phys_opt_design フローを実行し、 レジスタの リ タイ ミ ングを追加します。

インプリ メンテーシ ョ ン 70UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 71: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

• AlternateFlowWithRetiming:

複製と DSP およびブロ ッ ク RAM の 適化をよ り積極的に実行し、 レジスタの リ タイ ミ ングをイネーブルにし

ます。

• Default:

phys_opt_design をデフォルト設定で実行します。

• RuntimeOptimized:

反復回数を少なく し、 デザイン パフォーマンスよ り も実行時間を短縮するこ とを優先します。

ヒン ト : -directive オプシ ョ ンのすべての指示子は、 配置後および配線後の phys_opt_design で共通です。

-verbose オプシ ョ ンの使用

物理 適化の結果を解析するには、 -verbose オプシ ョ ンを使用し、 phys_opt_design で実行された 適化の詳

細を確認します。

-verbose オプシ ョ ンを使用する と大量のメ ッセージが表示されるので、 デフォルトではオフになっています。

-verbose オプシ ョ ンは、 有益だと思われる場合に使用してください。

重要: phys_opt_design コマンドは、 イン メモ リ デザインに対して実行されます。 2 回実行した場合、 1 回目の

run の結果が 適化されます。

物理最適化制約

物理 適化中、 DONT_TOUCH プロパティが認識され、 これらのプロパティが設定されているネッ ト またはセルには

適化は実行されません。 また、 Pblock の割り当てに従い、 複製されたロジッ クでも元のロジッ クの Pblock 割り当

てが適用されます。 タイ ミ ング例外も、 元のセルから複製セルにコピーされます。

詳細は、 『Vivado Design Suite ユーザー ガイ ド : 合成』 (UG901) [参照 8] のこのセクシ ョ ンを参照してください。

DONT_TOUCH は 下位セルに設定します。 階層セルに DONT_TOUCH を設定する とセルの境界は保持されますが、 セ

ル内では 適化が実行される可能性はあ り ます。

MARK_DEBUG プロパティの値が TRUE であるネッ トには、 DONT_TOUCH プロパティの値が自動的に TRUE に設定さ

れます。 これによ り、 インプ リ メンテーシ ョ ン フロー中にネッ トは変更されなくな り、 どのデザイン段階でもネッ

ト をプローブできます。 MARK_DEBUG は、 このよ うに使用するこ とをお勧めします。 ただし、 DONT_TOUCH は制限

的すぎ、 複製やリ タイ ミ ングなどの 適化が実行されなくな り、 タイ ミ ング ク ロージャを達成するのが困難になる

こ とがまれにあ り ます。 その場合は、 MARK_DEBUG を TRUE に設定したまま、 DONT_TOUCH の値 FALSE に設定でき

ます。 ただし、 MARK_DEBUG を設定したネッ トが 適化で削除され、 プローブされなくなる可能性があ り ます。

MARK_DEBUG ネッ ト を複製する と、 元のネッ トのみに MARK_DEBUG が保持され、 複製されたネッ トには保持されま

せん。

インプリ メンテーシ ョ ン 71UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 72: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

物理最適化レポート

Tcl レポート コマンド report_phys_opt を実行する と、 phys_opt_design で実行された各 適化のレポートが

かなり詳細なレベルで表示されるよ うになり ます。 これは、 適化履歴がメモ リ内に残っている、

phys_opt_design を実行したのと同じ Vivado セッシ ョ ンで実行する必要があ り ます。 このため、 レポートが必要

な場合は、 Tcl スク リプ トの 後の phys_opt_design コマンドの直後に report_phys_opt コマンドを含めてお

く こ とをお勧めします。

レポートには、 配置後の phys_opt_design 適化でのみ使用できます。 レポートは、 phys_opt_design の複数

の run も含め、 すべての phys_opt_design 適化を反映して蓄積されていきます。

次のレポート例は、 pipeline_en という レジスタを含むファンアウ トの 適化を示しています。 次の詳細がレ

ポートには表示されています。

1. 元のド ライバー pipeline_en は 816 のロードを駆動しています。 このファンアウ トの大きいネッ ト を含むパ

スの WNS は -1.057 ns で、 タイ ミ ングを満たしていません。

2. ド ラ イバー pipeline_en が新しいセル pipeline_en_replica を作成するために複製されています。

3. 816 のロードが 386 ロードの pipeline_en_replica と残りの 430 ロードの元のド ライバー pipeline_en に

分割されています。

4. pipeline_en_replica の複製と配置後は、 pipeline_en_replica パスの WNS が +0.464 ns になり、

pipeline_en パスの WNS が 0 に削減されています。

5. 元のド ライバー pipeline_en の配置が変更され、 削減されたロードのセッ トの位置に基づいて WNS が改善さ

れています。

インタラクテ ィブ物理最適化

2015.3 リ リースから、 インタラ クティブ Tcl コマンド iphys_opt_design を使用して 適化を再実行する機能が物

理 適化に追加されています。 iphys_opt_design コマンドでは、 ク リ ティカル セルの複製やブロッ ク RAM から

のレジスタの取り出しなど、 実行された特定の 適化が記述されています。 このコマンドには、 ネッ ト リ ス トおよ

び 適化に必要な配置の変更を再実行するために必要な情報がすべて含まれています。

インタラ クティブ物理 適化は、 次の 2 つの方法で使用できます。

• 全体的な配置結果とデザイン パフォーマンスを向上するため、 配置前のネッ ト リ ス トに配置後の物理 適化を

適用する。

• 物理 適化を必要に応じて繰り返すこ とができるよ うに Tcl スク リプ トに保存する。

X-Ref Target - Figure 2-19

図 2-19: ファンアウト最適化レポート

インプリ メンテーシ ョ ン 72UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 73: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

phys_opt_design によるネッ ト リス ト変更を配置前に組み込む

次の図に、 物理 適化の変更を配置前のネッ ト リ ス トに組み込むデザイン フローを示します。

2 つの run があ り、 元の run (Original Run) では、 place_design の後に phys_opt_design を実行します。 再実行

run (Replay Run) では、 配置の前に phys_opt_design を実行します。

元の run の後、 Tcl コマンド write_iphys_opt_tcl を使用して、 phys_opt_design の 適化を Tcl スク リプ ト

ファ イルに保存します。 このスク リプ トには一連の iphys_opt_design Tcl コマンドが含まれており、 元の run で

phys_opt_design によ り実行されたデザインの変更を再実行します。 適化はメモリ内の現在のデザインから保

存するか、 phys_opt_design で 適化が実行されたインプリ メン ト済みデザインまたはチェッ クポイン ト を開い

て保存できます。

再実行 run にも、 同じデザインと制約を使用します。 place_design を実行する前に、 read_iphys_opt_tcl コ

マンドで iphys_opt_design コマンド スク リプ ト を実行し、 元の run からのネッ ト リ ス トの変更を適用します。

このネッ ト リ ス トの変更によ り、 再実行 run のデザインが元の run よ り も よ り配置に適したものになる可能性があ り

ます。 複製によるファンアウ トの大きいネッ トの削減、 ブロッ ク RAM 出力からの長いパスの削減など、

phys_opt_design 適化を配置前に組み込むこ とができます。

phys_opt_design コマンド と同様に、 read_iphys_opt_tcl コマンドにも、 ファンアウ ト 適化、 ブロ ッ ク

RAM レジスタの 適化、 リ ワイヤなど、 再実行する 適化のタイプを指定するオプシ ョ ンがあ り ます。

X-Ref Target - Figure 2-20

図 2-20: 物理最適化の変更を配置前のネッ ト リス トに組み込むデザイン フロー

インプリ メンテーシ ョ ン 73UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 74: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

phys_opt_design のデザイン変更を繰り返す

次の図に、 phys_opt_design のデザイン変更を繰り返すデザイン フローを示します。

このフローは、 適化による変更を配置前に組み込むフローとは次の 2 つの点が異なり ます。

• iphys_opt_design の変更は place_design の後に組み込まれます。

• 配置の変更およびネッ ト リ ス トの変更は、 iphys_opt_design Tcl スク リプ トに記述されます。

このフローは通常、 配置後の phys_opt_design の実行をよ り詳細に制御するために使用します。 適化の繰り返

しおよび新しい 適化の組み合わせからカスタム処理が作成され、 デザイン ク ロージャを達成するためのさまざま

な方法を試すこ とができます。

write_iphys_opt_tcl および read_iphys_opt_tcl コマンドには、 phys_opt_design による配置の変更を

再実行する -place オプシ ョ ンがあ り ます。 このフローでは、 このオプシ ョ ンを使用して phys_opt_design を配

置後に繰り返します。

X-Ref Target - Figure 2-21

図 2-21: phys_opt_design の変更を繰り返すデザイン フロー

インプリ メンテーシ ョ ン 74UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 75: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

インタラクテ ィブ物理最適化コマンドの説明

次に、 インタラ クティブ物理 適化コマンド とそのオプシ ョ ンの説明を示します。

write_iphys_opt_tcl

現在のデザインで実行した物理 適化を記述した一連の iphys_opt_design Tcl コマンドを含むファイルを出力し

ます。

構文:

write_iphys_opt_tcl [-place] [-quiet] [-verbose] <output file>

-place オプシ ョ ンを使用する と、 iphys_opt_tcl コマンドに配置情報が含まれます。 iphys_opt_design コマ

ンドの実行中にネッ ト リ ス トの変更に配置を適用する場合に使用します。

write_iphys_opt_tcl コマンドは、 phys_opt_design を実行した後であればいつでも使用できます。

read_iphys_opt_tcl

前の run で実行した物理 適化を記述した iphys_opt_design Tcl コマンドを含むファイルを読み出します。

構文:

read_iphys_opt_tcl [-fanout_opt] [-critical_cell_opt] [-placement_opt] [-rewire] [-dsp_register_opt] [-bram_register_opt] [-shift_register_opt] [-critical_pin_opt] [-clock_opt] [-include_skipped_optimizations] [-place] [-quiet] [-verbose] <input file>

read_iphys_opt_design コマンドには phys_opt_design と同じオプシ ョ ンが多数あ り、 再実行する 適化を

指定できます。 オプシ ョ ンには、 -fanout_opt、 -critical_cell_opt、 -placement_opt、 -rewire、

-dsp_register_opt、 -bram_register_opt、 -shift_register_opt、 -critical_pin_opt、 および

-clock_opt があ り ます。

入力 Tcl スク リプ トで定義されているスキップされた 適化と、 標準 適化を適用します。 これらは、

phys_opt_design によ り 適化されたロジッ クに適切な場所が見つからなかったためにスキップされた 適化で

す。 このオプシ ョ ンを指定した場合、 iphys_opt_design コマンドは配置前のネッ ト リ ス トにスキップされた

適化を適用しよ う と します。

インプリ メンテーシ ョ ン 75UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 76: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

iphys_opt_design

iphys_opt_design コマンドは、 物理 適化を実行する下位の Tcl コマンドです。 phys_opt_design のデフォル

トの 適化をすべて iphys_opt_design で実行できます。 iphys_opt_design コマンドを変更したり、 初から

作成するこ とは可能ですが、 通常はスク リプ トに含めて別の run で再実行します。

推奨: iphys_opt_design コマンドのスク リプ ト を source Tcl コマンドを使用して実行しないでください。 コマンド

を効率的に 短時間で実行するには、 read_iphys_opt_tcl コマンドを使用してください。

構文:

iphys_opt_design [-fanout_opt] [-critical_cell_opt] [-placement_opt] [-rewire] [-net <arg>] -cluster <args> -place_cell <args> [-place] [-dsp_register_opt] [-bram_register_opt] [-uram_register_opt] [-shift_register_opt] [-cell <arg>] [-packing] [-unpacking] [-port <arg>] [-critical_pin_opt] [-skipped_optimization] [-insert_negative_edge_ffs] [-quiet] [-verbose]

配線

Vivado 配線では、 配置済みデザインに配線を実行し、 ホールド タイム違反を解決するよ うに配線済みデザインが

適化されます。

配置済みデザインから開始し、 すべてのネッ トの配線を試みます。 まだ配線されていないか、 部分的に配線されて

いるか、 完全に配線されている配置済みデザインから開始できます。

部分的に配線されているデザインでは、 始めから配線し直さず、 既存の配線が開始点と して使用されます。 完全に

配線済みのデザインでは、 タイ ミ ング違反がチェッ ク され、 タイ ミ ングを満たすためにク リティカル部分が配線し

直されます。

注記: 再配線プロセスでは、 既存の配線が破棄されて配線し直されます。

配線では、 デザイン全体を配線するオプシ ョ ンと、 ネッ トおよびピンを個別に配線するオプシ ョ ンがあ り ます。

デザイン全体を配線する場合、 フローはタイ ミ ング ド リブンであ り、 タイ ミ ング制約に基づく自動タイ ミ ング バ

ジェッ トが使用されます。

個別のネッ トおよびピンの配線は、 次の 2 つのモードを使用して実行できます。

• インタラ クティブ配線モード

• 自動遅延モード

インタラ クティブ配線モードでは、 インタラ クティブ セッシ ョ ンの応答をよ くするため、 高速で軽量のタイ ミ ング

モデルが使用されます。 一部の遅延精度が犠牲となり、 不必要に悪い見積も り遅延が使用されます。 このモードで

はタイ ミ ング制約は無視されますが、 配線の実行方法を選択できます。

• リ ソース ベースの配線 (デフォルト ): 使用可能な配線リ ソースから選択され、 配線の実行時間は 短になり ます。

• 小遅延 (-delay オプシ ョ ン): 使用可能な配線リ ソースから、 遅延が 小になるよ うに選択されます。

• 遅延ド リブン (-max_delay および -min_delay オプシ ョ ン): 大遅延、 小遅延、 またはその両方を基に、

タイ ミ ング要件を指定します。 指定の要件を満たす遅延のネッ トが配線されます。

インプリ メンテーシ ョ ン 76UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 77: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

自動遅延モードでは、 タイ ミ ング制約に基づく自動タイ ミ ング バジェッ ト を使用するタイ ミ ング ド リブンのフロー

が実行されますが、 デフォルト フローとは異なり、 指定のネッ ト またはピンのみが配線されます。 このモードは、

デザイン全体を配線する前にク リティカル ネッ トおよびピンを配線するために使用します。 これには、 セッ ト アッ

プ ク リ ティカル、 ホールド ク リ ティカル、 またはその両方であるネッ トおよびピンが含まれます。 自動遅延モード

は、 多量の配線が含まれるデザインのネッ ト を個別に配線するためのものではあ り ません。 インタラ クティブ配線

を使用してください。

多数のネッ トおよびピンを配線する際に 高の結果を得るには、 優先順に配線します。 これによ り、 配線リ ソース

の競合を回避できます。

配線では、 ネッ トおよびピンの配線を修正する場合でも、 初期化のため、 初の実行時間は長くなり ます。 初期化

時間は、 デザインのサイズおよびデバイスのサイズが大き くなる と長くな り ます。 1 回初期化される と、 デザインを

閉じて開き直さない限り、 再度初期化は実行されません。

デザイン ルール チェ ック 配線を開始する前に、 次のデザイン ルール チェッ ク (DRC) が実行されます。

• report_drc コマンドを使用してユーザーが選択した DRC

• Vivado 配線エンジンに含まれるビルト インの DRC

配線の優先順位

Vivado Design Suite では、 クロ ッ ク、 リセッ ト 、 その他の専用リ ソースなどのグローバル リ ソースが 初に配線され

ます。

このデフォルトの優先順位は Vivado 配線にビルト インされています。 その後、 タイ ミ ングのク リ ティカル度合いに

基づいて、 データ信号に優先順位が付けられます。

正し く設定されていないタイ ミング制約の影響

配線後のタイ ミ ング違反は、 タイ ミ ングが制約が正し く設定されていないために発生しているこ とがあ り ます。 配

線設定を変更してみる前に、 制約が正し く設定されているこ とを確認してください。 配線の前の配置済みデザイン

のタイ ミ ング レポート を参照して、 タイ ミ ングと制約を確認します。

次に、 よ くある正し く設定されていないタイ ミ ング制約の例を示します。

• ク ロ ッ ク ド メ インをまたがるパスや、 正のホールド タイム要件によ り配線遅延が追加される複数サイ クル パス

• 密集しているエリ ア。 これは RTL 合成のファンアウ ト 適化や物理 適化によ り解決できます。

推奨: 複数の配線オプシ ョ ンを試す前に、 タイ ミ ング制約を確認して正し くない制約を修正するか、 または RTL を変

更するこ とを考慮してください。 詳細は、 『UltraFast 設計手法ガイ ド (Vivado Design Suite 用)』 (UG949) [参照 13] のこ

のセクシ ョ ンを参照してください。

インプリ メンテーシ ョ ン 77UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 78: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

配線タイ ミング サマリ

配線プロセスの 後に、 実際の配線遅延を使用して算出されたタイ ミ ング サマリ (見積も り ) がレポート されます。

タイ ミ ング サマリの算出には、 実行時間を短縮するため、 完全なタイ ミ ング計算を実行するのではなく、 インク リ

メンタル タイ ミ ング アップデートが使用されます。 そのため、 見積もられた WNS が実際のタイ ミ ングよ り も数ピ

コ秒ほど悪いものになる可能性があ り ます。 そのため、 実際の WNS は正であるのに、 配線でレポート される WNS

が負となるこ とがあ り ます。 配線でレポート される見積もられた WNS が負の場合、 メ ッセージはク リティカル警告

ではなく警告となり ます。

ヒン ト : route_design -directive Explore を実行する場合は、 配線タイ ミ ング サマリはサインオフ タイ ミ ング

に基づきます。

重要: report_timing_summary を実行するか、 route_design を -timing_summary オプシ ョ ンを使用して実

行し、 実際のサインオフ タイ ミ ングを確認してください。

route_design

デザインを配線します。

route_design の構文

route_design [-unroute] [-release_memory] [-nets <args>] [-physical_nets] [-pins <arg>] [-directive <arg>] [-tns_cleanup] [-no_timing_driven] [-preserve] [-delay] [-auto_delay] -max_delay <arg> -min_delay <arg> [-timing_summary] [-finalize] [-quiet] [-verbose]

-directive オプシ ョ ンの使用

デザイン全体を配線する際に -directive オプシ ョ ンで指示子を指定する と、 route_design コマンドを異なる

モードで実行できます。 一度に指定できる指示子は 1 つのみです。 -directive オプシ ョ ンは、 適化の競合を回

避するため、 ほかのほとんどのオプシ ョ ンとは共に使用するこ とができません。 次の指示子があ り ます。

• Explore:

初期配線の後、 異なるク リ ティカル パス配線を試します。

• NoTimingRelaxation:

配線を完了するためにタイ ミ ングを緩和しないよ うにします。 配線でタイ ミ ング満たすのが困難である場合、

元のタイ ミ ング制約を満たすため実行時間が長くなり ます。

• MoreGlobalIterations:

終段階だけでなく、 すべての段階で詳細なタイ ミ ング解析を使用し、 タイ ミ ングの向上が少しであってもグ

ローバル反復を実行します。

• HigherDelayCost:

配線の内部コス ト関数を調整して反復実行で遅延に焦点を置き、 実行時間が長くなる代わりにパフォーマンス

を向上します。

• RuntimeOptimized:

反復回数を少なく し、 デザイン パフォーマンスよ り も実行時間を短縮するこ とを優先します。

インプリ メンテーシ ョ ン 78UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 79: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

• AlternateCLBRouting:

実行時間は長いが配線の密集を緩和する代替配線アルゴ リズムを選択します。

• Quick:

有効なデザインを得るために、 も高速な、 タイ ミ ング ド リブンでない、 低限の配置を実行します。

• Default:

route_design をデフォルト設定で実行します。

よりよい配線結果を得るために実行時間を長くする

-directive オプシ ョ ンの次の指示子を使用する と、 実行時間は長くな り ますが、 よ り よい配線結果が得られる可

能性があ り ます。

• NoTimingRelaxation

• MoreGlobalIterations

• HigherDelayCost

• AdvancedSkewModeling

route_design コマンドのその他のオプシ ョ ンの使用

次に、 route_design コマンドのその他のオプシ ョ ンの詳細と値を示します。

• -nets

指定したネッ トの リ ス トにのみ処理を実行します。 ネッ ト オブジェク トの Tcl リ ス ト を引数と して指定します。

ネッ トは、 ネッ ト名の文字列値で指定するのではなく、 get_nets コマンドを使用してネッ ト オブジェク ト と

して指定する必要があ り ます。

• -pins

指定したピンにのみ処理を実行します。 ピン オブジェク トの Tcl リ ス ト を引数と して指定します。 ピンは、 ピ

ン名の文字列値で指定するのではなく、 get_pins コマンドを使用してピン オブジェク ト と して指定する必要

があ り ます。

• -delay

デフォルトでは、 タイ ミ ング ク リ ティカルかど うかにかかわらず、 各ネッ トおよびピンが使用可能な リ ソース

を使用して 短の実行時間で配線されます。 -delay オプシ ョ ンを使用する と、 遅延が 小になるよ うに配線され

ます。

• -min_delay および -max_delay

これらのオプシ ョ ンは -pin オプシ ョ ンを使用している場合にのみ使用可能で、 ターゲッ ト遅延をピコ秒で指定

します。 -max_delay オプシ ョ ンは、 指定のピンの配線に使用する 大 slow-max コーナー遅延を指定します。

同様に、 -min_delay オプシ ョ ンは 小 fast-min コーナー遅延を指定します。 両方のオプシ ョ ンを使用して、

遅延の範囲を指定できます。

• -auto_delay

-nets または -pins オプシ ョ ンと共に使用し、 タイ ミ ング制約ド リブン モードで配線します。 タイ ミ ング バ

ジェッ トはタイ ミ ング制約から自動的に算出されるので、 -min_delay、 -max_delay、 または -delay と共に

使用するこ とはできません。

インプリ メンテーシ ョ ン 79UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 80: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

• -preserve

既存の配線を保持してデザイン全体を配線します。 -preserve オプシ ョ ンを使用しない場合、 ク リ ティカル

パスのタイ ミ ングを向上するため、 既存の配線が解除され、 配線し直されるこ とがあ り ます。 このオプシ ョ ン

は、 ク リ ティカル ネッ ト を事前に配線し、 配線リ ソースに優先的にアクセスできるよ うにする場合によ く使用

されます。 これらの配線が完了したら、 -preserve オプシ ョ ンを使用して、 デザインの残りの部分が配線され

る と きに完了した配線が変更されないよ うにします。 このオプシ ョ ンは、 FIXED_ROUTE および

IS_ROUTE_FIXED ネッ ト プロパティ とは無関係で、 使用した route_design コマンドの実行でのみ配線が保

持されます。 -preserve オプシ ョ ンは -directive オプシ ョ ンと共に使用できますが、 -directive

Explore オプシ ョ ンは配置を変更し、 その結果配線も変更するので、 -preserve オプシ ョ ンと共に使用する

こ とはできません。

• -unroute

デザイン全体、 あるいは -nets または -pin オプシ ョ ンを使用している場合はネッ トおよびピンの配線を解除しま

す。 FIXED_ROUTE プロパティが設定されているネッ トの配線は解除されません。 FIXED_ROUTE プロパティが

設定されているネッ トの配線を解除するには、 まずプロパティを削除する必要があ り ます。

• -timing_summary

デフォルトでは、 内部見積も り タイ ミ ングに基づいたタイ ミ ング サマリが出力されますが、 遅延の見積も りが

不必要に悪いため、 実際の配線後のタイ ミ ングとは異なる場合があ り ます。 -timing_summary オプシ ョ ンを

使用する と、 Vivado スタティ ッ ク タイ ミ ング解析機能が呼び出され、 実際の配線遅延に基づく タイ ミ ング サマ

リがレポート されます。 スタティ ッ ク タイ ミ ング解析のため、 実行時間は長くな り ます。 -directive

Explore オプシ ョ ンを使用する場合、 -timing_summary オプシ ョ ンは無視されます。

-directive Explore オプシ ョ ンを使用する と、 -timing_summary オプシ ョ ンを使用するかど うかにかか

わらず、 も正確なタイ ミ ング アップデート を得るため Vivado スタティ ッ ク タイ ミ ング解析機能が呼び出され

ます。

• -tns_cleanup

実行時間を 短にするため、 配線ではトータル ネガティブ スラ ッ ク (TNS) を削減するこ とではなく ワース ト ネ

ガティブ スラ ッ ク (WNS) パスを向上するこ とに焦点が置かれます。 -tns_cleanup オプシ ョ ンを使用する と、

配線の 後に追加のフェーズが実行され、 タイ ミ ングが満たされていないすべてのパスを修正して TNS を削減

するよ う試みられます。 そのため、 TNS は削減される可能性があ り ますが、 実行時間が長くなるこ とがあ り、

WNS には影響しない場合があ り ます。 配線の後に配線後の物理 適化を実行する場合は、 配線に

-tns_cleanup オプシ ョ ンを使用してください。 このオプシ ョ ンを使用する と、 物理 適化で WNS パスに焦

点が置かれ、 配線で修正可能なク リティカルでないパスに無駄なエフォートが費やされるのを防ぐこ とができ

ます。 既に配線済みのデザインで route_design -tns_cleanup を実行する と、 配線の TNS ク リーンアップ

段階のみが実行され、 WNS には影響しません (TNS ク リーンアップは再配線で実行)。 このオプシ ョ ンは、

-directive オプシ ョ ンと共に使用できます。

• -physical_nets

論理 0 および論理 1 の配線のみに処理を実行します。 デザインのすべての定数値に適用されます。 -unroute

オプシ ョ ンと共に使用できます。 定数 0 および 1 を接続する と、 物理デバイスに対応する論理ネッ トがないの

で、 これらのネッ トは -nets および -pins オプシ ョ ンを使用して確実に配線または配線解除できません。

インプリ メンテーシ ョ ン 80UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 81: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

• -release_memory

配線初期化の後、 適なパフォーマンスのため、 配線データはメモ リに保持されます。 このオプシ ョ ンを使用

する と、 データがメモ リから削除され、 メモ リがオペレーティング システムに返されます。 ほとんどの場合、

このオプシ ョ ンを使用する必要はあ り ません。 非常に大型のデザインを処理する場合など、 配線のメモ リ使用

量を手動で制御する必要がある場合に使用します。

• -finalize

配線をインタラ クティブに実行している場合、 route_design -finalize を指定して部分的に配線された接

続を完了できます。

UltraScale+ デザインの場合、 レジスタの配置配線が ECO タスクの一部と して変更されている場合は、 このス

テップは必要です。

• -no_timing_driven

タイ ミ ング ド リブン配線をオフにします。 主にデザインの配線性をテス トするために使用します。

ヒン ト : UltraScale デザインでクロ ッ ク ネッ トが配線されていない場合、 そのクロ ッ ク ネッ ト を配線し直す前に

place_design を実行する必要があ り ます。 これによ り、 ク ロ ッ ク ネッ トの配線が有効なものになり ます。 この制

限は、 今後のリ リースで削除される予定です。

配線のサンプル スクリプ ト 1

# Route design, save results to checkpoint, report timing estimates route_designwrite_checkpoint -force $outputDir/post_routereport_timing_summary -file $outputDir/post_route_timing_summary.rpt

route_design サンプル スク リプ トでは、 次の手順が実行されます。

1. デザインを配線します。

2. 配線が完了したら、 デザイン チェッ クポイン ト を保存します。

3. タイ ミ ング サマリ レポート を生成します。

4. レポート を指定したファイルに記述します。

配線は、 インプ リ メンテーシ ョ ン run の一部と して、 または Tcl スク リプ トの一部と して place_design の後に

route_design コマンドを使用して実行します。

配線ログに、 現在のフェーズ (初期化、 グローバル配線反復、 タイ ミ ング アップデート ) などの進捗状況を示す情報

が示されます。 グローバル配線の 後には、 配線によ り適切なデザインを達成するために試行している間、 現在

オーバーラ ップしているネッ トの数が定期的にアップデート されます。 次に例を示します。

Phase 4.1 Global Iteration 0 Number of Nodes with overlaps = 435 Number of Nodes with overlaps = 3 Number of Nodes with overlaps = 1 Number of Nodes with overlaps = 0

フロー中タイ ミ ング アップデートが示され、 タイ ミ ング ク ロージャの進捗状況がわかり ます。

インプリ メンテーシ ョ ン 81UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 82: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

タイ ミング サマリ

[Route 35-57] Estimated Timing Summary | WNS=0.105 | TNS=0 | WHS=0.051 | THS=0

説明:

° WNS: ワース ト ネガティブ スラ ッ ク

° TNS: トータル ネガティブ スラ ッ ク

° WHS: ワース ト ホールド スラ ッ ク

° THS: トータル ホールド スラ ッ ク

注記: 中間の配線フェーズでは、 ホールド タイム解析がスキップされる場合があ り ます。 ホールド タイム解析が実

行される場合、 WHS および THS に対して 「N/A」 とい う値が示されます。

配線が完了する と、 配線リ ソースの使用率サマリ と 終的なタイ ミ ング サマリ (見積も り ) がレポート されます。 次

に、 配線リ ソース使用率サマリの例を示します。

配線リソース使用率サマリ

Global Vertical Routing Utilization = 15.3424 % Global Horizontal Routing Utilization = 16.3981 % Routable Net Status* *Does not include unroutable nets such as driverless and loadless. Run report_route_status for detailed report. Number of Failed Nets = 0 Number of Unrouted Nets = 0 Number of Partially Routed Nets = 0 Number of Node Overlaps = 0

配線のサンプル スクリプ ト 2

# Get the nets in the top 10 critical paths, assign to $preRoutesset preRoutes [get_nets -of [get_timing_paths -max_paths 10]]

# route $preRoutes first with the smallest possible delayroute_design -nets [get_nets $preRoutes] -delay

# preserve the routing for $preRoutes and continue with the rest of the designroute_design -preserve

このサンプル スク リプ トでは、 まずいくつかのク リ ティカル ネッ ト を配線し、 その後デザイン全体を配線していま

す。 次に、 ネッ トおよびピン (この場合はネッ ト ) の配線が示されていますが、 通常は、 次のよ うに特定の配線の問

題を修正するために実行されます。

• 完全に配線する前に、 ク リ ティカル ネッ トおよび固定リ ソースを配線。

• ク リ ティカルではないネッ トの配線を手動で解除して、 ク リ ティカル ネッ トによ り多くの配線リ ソースを使用

できるよ うにする。

初の route_design コマンドでは、 配線機能が初期化されてから、 クロ ッ クなどの重要なネッ トが配線されます。

インプリ メンテーシ ョ ン 82UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 83: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

配線のサンプル スクリプ ト 3

# get nets of the top 10 setup-critical pathsset preRoutes [get_nets -of [get_timing_paths -max_paths 10]]

# get nets of the top 10 hold-critical pathslappend preRoutes [get_nets -of [get_timing_paths -hold -max_paths 10]]

# route $preRoutes based on timing constraintsroute_design -nets [get_nets $preRoutes] -auto_delay

# preserve the routing for $preRoutes and continue with the rest of the designroute_design -preserve

このサンプル スク リプ トでは、 サンプル スク リプ ト 2 と同様に、 まずいくつかのク リティカル ネッ ト を配線してそ

の後デザイン全体を配線していますが、 -delay オプシ ョ ンではなく -auto_delay オプシ ョ ンを使用している点が

異なり ます。 ク リティカル ネッ トのタイ ミ ング ド リブン配線が実行され、 精度は上がり ますが実行時間が長くなり

ます。 これは、 ネッ トがセッ ト アップ ク リティカル パスとホールド ク リ ティカル パスの両方に関連しており、 セッ

ト アップとホールドの両方の要件を満たすために配線を特定の遅延範囲内にする必要がある場合に特に有益です。

配線のサンプル スクリプ ト 4

route_design# Unroute all the nets in u0/u1, and route the critical nets firstroute_design -unroute [get_nets u0/u1/*] route_design -delay -nets [get_nets $myCritNets]route_design -preserve

このサンプル スク リプ トでは、 密集によるタイ ミ ング エラーを解決する方法の 1 つを示しています。

$myCritNets で表されたク リ ティカル ネッ トには、 インスタンス u0/u1 のネッ ト と同じデバイス領域の配線リ

ソースが必要です。 u0/u1 のネッ トはタイ ミ ング ク リ ティカルではないので配線を解除し、 ク リ ティカル ネッ ト

$myCritNets が 初に 小の遅延で配線されるよ うにしています。 その後、 route_design -preserve コマン

ドを使用してデザイン全体を配線しています。 -preserve オプシ ョ ンによ り、 $myCritNets の配線が保持され、

配線解除された u0/u1 ネッ トは配線し直されます。 表 2-7 に、 例のコマンドをま とめます。

配線メ ッセージ

配線では、 密集やホールド違反の修正が多すぎるためにタイ ミ ング目標を満たすのが難しい場合は、 メ ッセージが

表示されるよ うになっています。 このよ うなメ ッセージが表示されるのは、 通常次のよ うな場合です。

• イテレーシ ョ ンごとの実行時間が数時間になる場合

• レポート されるオーバーラ ップが多すぎる (数百または数千の) 場合

• 見積も り タイ ミ ング サマリでセッ ト アップおよびホールド スラ ッ クが徐々に悪化している場合

配線では、 次のいずれかが発生する と、 警告メ ッセージがさらに表示されるこ とがあ り ます。

• 密集のために、 タイ ミ ング ク ロージャに悪影響がある と判断される場合 (通常は密集レベルが 5 以上の場合)。

レベル 5 は、 密集領域が 32x32 (2^5 = 32) と測定されるこ とを意味します。

• 全体的な配線のホールド修正エフォートがかなり高くなる と予測される場合 (全体的なセッ ト アップ用件を満た

す機能に影響)。

• 特定の終点ピンがセッ ト アップ ク リ ティカルとホールド ク リ ティカルの両方になり、 どちら も満たすこ とが不

可能な場合。 メ ッセージには、 デザイン解析用にピン名が 高 10 個まで表示されます。

インプリ メンテーシ ョ ン 83UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 84: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

• 特定の CLB のピン使用率または配線リ ソースの使用率が高い場合 (ローカル密集になる )。 メ ッセージには、

も密集している CLB の名前が 大 10 個まで表示されます。

• 深刻な密集があるよ うな極端なケースでは、 密集によ りすべてのネッ トが配線できないこ とを示す警告メ ッ

セージが表示され、 タイ ミ ング 適化を使用して、 ネッ トの配線が問題なく完了したものが優先されます。

UltraScale デバイスをターゲッ トにする場合は、 密集がタイ ミ ング ク ロージャに影響する可能性のある場合、 初に

見積もられた密集を示す表が生成されます。 この表には、 特定の領域は示されませんが、 全体的な検証からのさま

ざまなタイプの密集が表示されます。 密集は、 Global (デザイン全体)、 Long (複数の CLB にまたがる密集)、 Short に

分類されます。 さまざまな run の表を比較するこ とで、 密集の悪影響を受けるこ とな く、 パフォーマンス目標を満た

しやすい run がどれかを決定できるよ うになっています。

INFO: [Route 35-449] Initial Estimated Congestion ________________________________________________________________________| | Global Congestion | Long Congestion | Short Congestion || |___________________|___________________|___________________|| Direction | Size | % Tiles | Size | % Tiles | Size | % Tiles ||___________|________|__________|________|__________|________|__________|| NORTH| 8x8| 0.13| 4x4| 0.11| 32x32| 1.14||___________|________|__________|________|__________|________|__________|| SOUTH| 8x8| 0.21| 4x4| 0.35| 16x16| 1.03||___________|________|__________|________|__________|________|__________|| EAST| 2x2| 0.05| 2x2| 0.15| 8x8| 0.97||___________|________|__________|________|__________|________|__________|| WEST| 2x2| 0.03| 2x2| 0.17| 8x8| 0.83||___________|________|__________|________|__________|________|__________|

[Report Design Analysis] では複雑さおよび密集度の解析が実行されるので、 密集の原因と可能性のある回避策がわか

りやすくなるこ とがあ り ます。 密集レポートには、 平均初期配線密集 (Average Initial Routing Congestion) も含まれま

す。 これは、 配線でレポート される密集とまったく同じではあ り ませんが、 配線前のデザインに対して解析を実行

して、 どの領域が問題の原因となっているのかが判別するために使用できます。 [Report Design Analysis] に関する詳

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

てください。

中間配線結果

配線を完了できない場合でも、 配線処理は続行し、 デバッグに使用できるよ うにできるだけ完成に近いデザインが

生成されます。 配線が完了しない場合、 手動の変更が必要な場合があ り ます。

report_route_status コマンドを使用する と、 配線エラーのあるネッ トがレポート されます。 詳細は、

『UltraFast 設計手法ガイ ド (Vivado Design Suite 用)』 (UG949) [参照 13] のこのセクシ ョ ンを参照してください。

配線では、 終段階で配線の密集がレポート されます。 密集の も多い領域が方向 (北、 東、 南、 西) 別にリ ス ト さ

れ、 各領域ごとに、 配線タイルの寸法、 配線使用率 (Max Cong)、 および境界ボッ クスの座標 (左下から右上) が表示

されます。 INT_xxx の数値は、 [Device] ウ ィンド ウで [Routing Resources] をオンにしたと きに表示されるインターコ

ネク ト配線タイルの座標です。

表 2-7: 配線中のデザイン解析で使用されるコマンド

コマンド 機能

report_route_status ネッ トの配線ステータスをレポート します。

report_timing パスの終点解析を実行します。

report_design_analysis 密集エリ アに関する情報をレポート します。

インプリ メンテーシ ョ ン 84UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 85: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

Tcl レポート コマンドおよびそのオプシ ョ ンの詳細な説明は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ

ド』 (UG835) [参照 18] を参照してください。

インクリ メンタル コンパイル

インク リ メンタル コンパイルは、 次のよ うなデザイン フローです。

• 基準デザインからの配置配線が再利用され、 QoR (結果の品質) の予測性が保持されます。

• 配置配線の実行時間が短縮されます。

次の図は、 インク リ メンタル コンパイル デザイン フローを示しています。

注記: 通常の配置配線およびインク リ メンタル配置配線のいずれにも、 物理 適化が含まれる場合があ り ます。

X-Ref Target - Figure 2-22

図 2-22: インクリ メンタル コンパイル デザイン フロー

インプリ メンテーシ ョ ン 85UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 86: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

インクリ メンタル コンパイル フローのデザイン

インク リ メンタル コンパイル フロー (図 2-22) では、基準デザインと インク リ メンタル デザインの 2 つのデザインを

使用します。 再利用のレベルによって、 高再利用モード と低再利用モードが切り替えられます。

基準デザイン

基準デザインは通常、 インク リ メンタル デザインの合成、 配置、 配線が完了した以前のバージ ョ ンです。

配置、 配線、 またはその両方がどれだけ含まれたチェッ クポイン トでも使用可能です。 基準デザインには、 タイ ミ

ング ク ロージャを達成するためにコード変更、 フロアプラン、 制約変更した際のデザインの実行結果であるデザイ

ン チェッ クポイン ト (DCP) を使用できます。

重要: インク リ メンタル フローを適切に機能させるためには、 基準デザイン チェッ クポイン ト (DCP) のデバイスお

よびスピード グレードが現在のデザインのデバイスおよびスピード グレードに一致している必要があ り ます。

インクリ メンタル デザイン

インク リ メンタル デザインは、 基準デザインに少しだけ変更を加えたものです。 次のよ うな変更が含まれます。

• RTL の変更

• ネッ ト リ ス トの変更

• RTL の変更とネッ ト リ ス トの変更の両方

高再利用モード と低再利用モード

再利用のレベルおよび place_design と route_design の -directive オプシ ョ ンの指示子によって、 フローの

実行は異なり ます。

低再利用モードで実行されている場合、 place_design が開始した後、 ログ ファ イルに次のメ ッセージが表示され

ます。

INFO: [Vivado_Tcl 4-956] Incremental Compile is being run with low cell reuse. The directive Explore will be applied.

高再利用モードで実行されている場合は、 それに関する メ ッセージは表示されません。

高再利用

高再利用モードでは、 既存の配置配線情報ができる限り再利用されるよ う配置配線アルゴ リズムが 適化されます。

この場合、place_design および route_design で -directive オプシ ョ ンの次の 3 つの指示子を使用できます。

• Default: できる限り再利用し、 基準 run にできるだけ近い結果が得られるよ うにします。 基準デザインの WNS

をターゲッ ト と します。 このモードでは、 典型的な使用ケースで実行時間が 短になり ます。

• Explore: タイ ミ ングをできる限り向上し、 可能であればタイ ミ ング ク ロージャを達成できるよ うにします。

WNS 0.00 ns をターゲッ ト と します。 このモードでは、 実行時間が長くな り ます。

• Quick: 配置配線をタイ ミ ング エンジンを呼び出さずに実行します。 この指示子では実行時間が 短となり、 再

利用率が > 99.5% で周波数要件が低い一部のデザインでは QoR に影響しません。 これは主に ASIC プロ ト タイ

プまたはエミ ュレーシ ョ ン デザイン用です。

インプリ メンテーシ ョ ン 86UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 87: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

高再利用モードは、 基準チェッ クポイン トでタイ ミ ング ク ロージャが達成されており、 95% 以上のセルが再利用さ

れるデザインで も効果的です。 使用例は次のとおりです。

• 基準デザインと現在のデザインの間の変更が少ない。

• デザインにデバッグ コアを追加する。

低再利用

低再利用モードは通常、 次の場合に使用されます。

• 基準チェッ クポイン トからデザインが大き く変更されている。

• ユーザーが基準チェッ クポイン トからの一部のセルのみを使用するこ とを指定している。 これを指定するには、

read_checkpoint コマンドの --only_reuse、 -dont_reuse、 および --reuse_regions オプシ ョ ンを使

用します。

低再利用モードでは、 place_design および route_design の -directive オプシ ョ ンのすべての指示子がサ

ポート され、 WNS 0.00 ns をターゲッ ト と して実行されます。

注記: 物理 適化は実行されないので、 結果はデフォルト フローと異なり ます。

低再利用モードは、 特定のエリ アの配置配線が困難なデザインで も効果的です。 使用例は次のとおりです。

• 成功した run からのブロ ッ ク メモ リ または DSP の配置を再利用し、 配置配線が成功する確率を上げる。

• タイ ミ ング ク ロージャが達成される場合と達成されない場合のある階層レベルを再利用する。

インクリ メンタル配置配線の実行

Vivado に基準チェッ クポイン トが読み込まれる と、 次が実行されます。

• インク リ メンタル デザインで基準 run と一致する物理 適化が自動的に実行されます。

• インク リ メンタル デザインのネッ ト リ ス トが基準デザインと比較され、 一致するセルおよびネッ トが検出され

ます。

• 基準デザイン チェッ クポイン トからの配置を使用して、 インク リ メンタル デザインの一致するセルが配置され

ます。

• 基準デザイン チェッ クポイン トからの配線は、 一致ネッ ト を配線するためにロード ピンごとに再利用されま

す。 ネッ ト リ ス トの変更によ り ロード ピンがなくなった場合、 その配線は破棄されるので、 配線の一部のみが

再利用されるこ と もあ り ます。

インク リ メンタル配置およびインク リ メンタル配線では、 ネッ ト リ ス トの配線性が向上する場合、 または基準デザ

インと同等のパフォーマンスが保持される場合、 セルの配置およびネッ トの配線が再利用される代わりに破棄され

るこ とがあ り ます。

基準デザインと現在のデザインの間で一致しないデザイン オブジェク トは、 インク リ メンタル配置が完了した後に

配置され、 配線が完了した後に配線されます。

複数のファンアウトがあるネッ ト

Vivado 配線では、 複数のファンアウ トがあるネッ トに対しては詳細な一致比較が実行され、 各配線セグメン ト を適

切に再利用または廃棄できます。

インプリ メンテーシ ョ ン 87UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 88: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

2015.2 以前の基準チェ ックポイン トの使用

基準チェッ クポイン トが 2015.3 よ り前の Vivado ツールを使用して作成されており、 phys_opt_design で実行され

た 適化が含まれる場合は、 インク リ メンタル run でも phys_opt_design を使用して ください。 このよ うにする

と、 基準デザインで phys_opt_design によ り実行された配置の 適化が取り込まれ、 関連の配線が再利用されま

す。 phys_opt_design には place_design および route_design のよ うにインク リ メンタル モードはあ り ませ

んが、 変更されたデザインで基準デザインと同様のロジッ ク変換が実行されます。

配線後の基準デザインと インク リ メンタル デザインのネッ ト リ ス トの類似性を確認します。 ネッ ト リ ス トの一致

パーセン トが低い場合、 phys_opt_design オプシ ョ ンでロジッ ク 適化で多量の 適化が実行されたためである

可能性があ り ます。 そのため、 配線後のチェッ クポイン ト よ り も配置後のチェッ クポイン トの方が基準デザインと

して適しているこ と もあ り ます。

read_checkpoint -incremental を使用したインクリ メンタル フローの開始

現在のデザインを読み込んだら、 read_checkpoint -incremental <dcp> コマンドを使用して基準デザイン

チェッ クポイン ト を読み込みます。 -incremental オプシ ョ ンを使用して基準デザイン チェッ クポイン ト を読み込

むと、 次の配置配線でインク リ メンタル コンパイル デザイン フローがイネーブルになり ます。

インクリ メンタル コンパイルの制御

-incremental 以外のコマンド オプシ ョ ンが指定されていない場合、 基準チェッ クポイン トの情報ができる限り再

利用されます。 read_checkpoint -incremental コマンドにオプシ ョ ンを追加する と、 再利用するものと しな

いものをユーザーが制御できます。

-only_reuse オプシ ョ ン

-only_reuse <cell objects>

-only_reuse オプシ ョ ンは、 セル配置の再利用を指定のセルのみに制限します。 下位セルまたは階層セルを指

定できます。

-dont_reuse オプシ ョ ン

-dont_reuse <cell objects>

-dont_reuse オプシ ョ ンは、 指定のセル以外のセルすべての配置を再利用します。 下位セルまたは階層セルを

指定できます。

-fix_reuse オプシ ョ ン

-fix_reuse オプシ ョ ンは、 -only_reuse または -dont_reuse オプシ ョ ンと共に使用し、 再利用されたセルの

配置を固定します。

インプリ メンテーシ ョ ン 88UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 89: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

次に、 これらの使用例を示します。

• ブロ ッ ク メモ リの配置のみを再利用:

read_checkpoint -incremental routed.dcp \-only_reuse [get_cells -hier -filter {PRIMITIVE_TYPE =~ BMEM.*.* }] -fix_reuse

• DSP の配置のみを再利用:

read_checkpoint -incremental routed.dcp \-only_reuse [get_cells -hier -filter {PRIMITIVE_TYPE =~ MULT.dsp.* }] -fix_reuse

• ブロ ッ ク メモ リ と DSP の配置を再利用:

read_checkpoint -incremental routed.dcp \-only_reuse [get_cells -hier -filter {PRIMITIVE_TYPE =~ BMEM.*.* }] \-only_reuse [get_cells -hier -filter {PRIMITIVE_TYPE =~ MULT.dsp.* }] -fix_reuse

• 指定の階層レベル以下のすべてのセルを再利用し、 ツールがク リティカル エリ アの変更に多少柔軟に対処でき

るよ うにする :

read_checkpoint -incremental routed.dcp \-only_reuse [get_cells <cell_name>] -fix_reuse

report_incremental_reuse コマンドの使用

report_incremental_reuse コマンドは、 read_checkpoint -incremental を実行した後であればどの段階

でも使用できます。 このレポートは、 基準デザイン run と現在のデザイン run で次を比較します。

• 現在の run のセル、 ネッ ト、 I/O、 およびピンの再利用

• 実行時間

• フローの各段階でのタイ ミ ング WNS

• ツール オプシ ョ ン

• ツール バージ ョ ン

• 現在の run のターゲッ ト WNS

セルの再利用および上記の事項を確認するこ とによ り、 インク リ メンタル フローの効果を判断できます。 インク リ

メンタル フローが効果的でない場合は、 チェッ クポイン ト をデザインのよ り新しいバージ ョ ンにアップデートする

か、 ツール フローを調整します。

インプリ メンテーシ ョ ン 89UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 90: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

このレポートには、 次の 4 つのセクシ ョ ンがあ り ます。

1. Reuse Summary (再利用サマリ )

° 再利用されたセル、 ネッ ト、 ピン、 およびポートの概要を示します。

次に例を示します。

1. Reuse Summary----------------

+------+----------------------+--------------------+--------------------+---------+| Type | Matched % (of Total) | Reuse % (of Total) | Fixed % (of Total) | Total |+------+----------------------+--------------------+--------------------+---------+| Cells| 100.00 | 99.82 | 0.38 | 688982 || Nets | 99.98 | 99.72 | 0.00 | 795869 || Pins | - | 99.11 | - | 2823905 || Ports| 100.00 | 100.00 | 100.00 | 667 |+------+----------------------+--------------------+--------------------+---------+

2. Reference Checkpoint Information (基準チェッ クポイン ト情報)

° 基準チェッ クポイン トに関する情報を示します。 次を確認できます。

- 生成された Vivado バージ ョ ン

- インプ リ メンテーシ ョ ンの段階

- 記録された WNS および WHS

- 現在の run のターゲッ ト WNS

- 基準 run と インク リ メンタル run 両方のスピード ファ イルのバージ ョ ン情報

次に例を示します。

2. Reference Checkpoint Information-----------------------------------

+----------------+--------------------------------------+| DCP Location: | /IncrementalTests/Test11/routed2.dcp |+----------------+--------------------------------------+

+--------------------------------+-----------------------------------+| DCP Information | Value |+--------------------------------+-----------------------------------+| Vivado Version | v2017.1 || DCP State | POST_ROUTE || Recorded WNS* | -0.112 || Recorded WHS | -0.066 || Reference Speed File Version | ADVANCE 08-01-2017 | | Incremental Speed File Version | ADVANCE 08-01-2017 | +--------------------------------+-----------------------------------+* Incremental Flow Target WNS = -0.112

インプリ メンテーシ ョ ン 90UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 91: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

3. Comparison with Reference Run (基準 run との比較)

° 基準 run との比較情報を示します。 次を比較できます。

- 実行時間

- フローの各段階での WNS

- フローの各段階で使用されたツール オプシ ョ ン

次に例を示します。

3. Comparison with Reference Run--------------------------------

+----------------+----------------------+------------------------+-----------------------+| | WNS(ns) | Runtime(elapsed)(hh:mm)| Runtime(cpu)(hh:mm) |+----------------+---------+------------+-----------+------------+----------+------------+| Stage |Reference| Incremental| Reference | Incremental| Reference| Incremental|+----------------+---------+------------+-----------+------------+----------+------------+| read_checkpoint| | | | 00:11 | | 00:13 || place_design | -0.21 | -1.006 | 01:39 | 00:16 | | 00:37 || physopt_design | -0.14 | | 00:24 | | | || route_design | -0.14 | -1.084 | 02:05 | 02:40 | | 04:33 |+----------------+---------+------------+-----------+------------+----------+------------+

4. Non Reuse Information (再利用されていないものの情報)

° 再使用されなかったものとその理由を示します。

次に例を示します。

4. Non Reuse Information------------------------

+------------------------------------------------------+------+| Type | % |+------------------------------------------------------+------+| Non-Reused Cells | 0.17 || Discarded illegal placement due to netlist changes | 0.17 || Discarded to improve timing | 0.01 || Partially reused nets | 0.00 || Non-Reused nets | 0.27 || Non-Reused Ports | 0.00 |+------------------------------------------------------+------+

実行時間の短縮に影響する要素

次の要素が実行時間の短縮に影響します。

• タイ ミ ング ク リ ティカル エリアの変更量。 ク リ ティカル パスの配置配線を再利用できない場合、 タイ ミ ングを

保持するための労力が増します。 また、 デザインの小さな変更によ り基準デザインに存在しないタイ ミ ング問

題が発生した場合、 労力が増えて実行時間が長くなる可能性があ り、 デザインのタイ ミ ングが満たされないこ

と もあ り ます。

• 配置配線の初期化時間。 配置配線時間が短い場合、 Vivado 配置配線の初期化のオーバーヘッ ドによ り インク リ

メンタル配置配線プロセスの効果が相殺されてしま う可能性があ り ます。 実行時間が長いデザインでは、 実行

時間占める初期化時間の割合は小さ くな り ます。

インプリ メンテーシ ョ ン 91UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 92: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

インクリ メンタル コンパイルの使用

プロジェク ト モード と非プロジェク ト モードのどちらでも、read_checkpoint -incremental <dcp_file> コ

マンド (<dcp_file> は基準デザイン チェッ クポイン トのパス とファ イル名) を使用して基準デザイン チェッ クポイ

ン ト を読み込むと、 インク リ メンタル配置配線モードになり ます。 -incremental オプシ ョ ンを使用して基準デザ

イン チェッ クポイン ト を読み込むと、 次の配置配線でインク リ メンタル コンパイル デザイン フローがイネーブル

になり ます。 非プロジェク ト モードでは、 read_checkpoint -incremental は opt_design の後および

place_design の前に実行します。

非プロジェク ト モードでのインクリ メンタル コンパイルの使用

非プロジェク ト モードで基準デザインと して使用するデザイン チェッ クポイン ト ファ イル (DCP) を指定してインク

リ メンタル配置を実行するには、 次の手順に従います。

1. 現在のデザインを読み込みます。

2. opt_design を実行します。

3. read_checkpoint -incremental <dcp_file> を実行します。

4. place_design を実行します。

5. phys_opt_design を実行します (オプシ ョ ン)。 基準デザインで phys_opt_design が使用されている場合に

実行します。

6. route_design を実行します。

link_design; # to load the current designopt_designread_checkpoint -incremental <dcp_file>place_design phys_opt_design; #if used in reference designroute_design

プロジェク ト モードでのインクリ メンタル コンパイルの使用

プロジェク ト モードでは、 インク リ メンタル コンパイル オプシ ョ ンを [Design Runs] ウ ィンド ウおよび [Settings] ダ

イアログ ボッ クスの [Implementation] ページで設定できます。[Design Runs] ウ ィンド ウでインク リ メンタル コンパイ

ル オプシ ョ ンを設定するには、 次の手順に従います。

1. [Design Runs] ウ ィンド ウで 1 つの run を右ク リ ッ ク します。

2. [Set Incremental Compile] をク リ ッ ク します。

3. [Set Incremental Compile] ダイアログ ボッ クスで、 基準デザイン チェッ クポイン ト を選択します。

run でインク リ メンタル コンパイル モードがイネーブルになり ます。

重要: デザイン run からチェッ クポイン ト を選択した場合、 その run がリセッ ト される と削除されます。デザイン run

からチェッ クポイン ト を選択する場合は、 基準チェッ クポイン ト と して選択する前に、 別のディ レク ト リにコピー

してください。

インプリ メンテーシ ョ ン 92UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 93: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

[Settings] ダイアログ ボッ クスでインク リ メンタル コンパイル オプシ ョ ンを設定するには、 次の手順に従います。

1. Flow Navigator で [Project Manager] の下の [Settings] をク リ ッ ク します。

2. 左側のペインで [Implementation] をク リ ッ ク します。

3. [Incremental Compile] で、 基準デザイン チェッ クポイン ト を指定します (図 2-23)。

インク リ メンタル配置配線が完了したら、 Vivado ツールで生成されたメ ッセージを確認できます。

注記: 高再利用モードでは、 -directive オプシ ョ ンの Default、 Explore、 および Quick 指示子のみがサポート され

ます。

現在の run でインク リ メンタル コンパイルをディ スエーブルにするには、 次の手順に従います。

1. [Set Incremental Compile] ダイアログ ボッ クスで [Use checkpoint] フ ィールドを空にするか、 または

[Implementation Run Properties] ウ ィンド ウの [Properties] ビューで [INCREMENTAL_CHECKPOINT] フ ィールドを

空にします。

2. Tcl コンソールで次のコマンドを実行します。

reset_property INCREMENTAL_CHECKPOINT [current_run]

注記: プロジェク ト モードでは、 低再利用モードはサポート されていません。 低再利用モードを使用するには、

read_checkpoint -incremental コマンドで opt_design 後の Tcl スク リプ ト を使用します。

X-Ref Target - Figure 2-23

図 2-23: インクリ メンタル コンパイルの設定

インプリ メンテーシ ョ ン 93UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 94: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

余った配線セグメン ト

セルが現在のデザインから削除されていたり、 配置時に移動されたため、 基準デザインの配線セグメン トに余るも

のが出てしま う こ とがあ り ます。 Vivado IDE で実行している場合、 問題が発生する可能性のあるネッ トが見つかる

こ とがあ り ますが、 これらの余った配線セグメン トや適切に接続されなかった配線セグメン トは、 Vivado 配線のイ

ンク リ メンタル配線時にク リーンアップされます。

配置中に、 次のよ うな情報メ ッセージが表示されます。

INFO: [Place 46-2] During incremental compilation, routing data from the original checkpoint is applied during place_design. As a result, dangling route segments and route conflicts may appear in the post place_design implementation due to changes between the original and incremental netlists. These routes can be ignored as they will be subsequently resolved by route_design. This issue will be cleaned up automatically in place_design in a future software release.

Synplify コンパイル ポイン トの使用

インク リ メンタル コンパイル フローは、 基準デザインと変更されたデザインがほとんど同じである (理想的にはセ

ルが 95% 以上一致している ) 場合に も効果的です。 Synplify コンパイル ポイン ト などの合成フローは、 RTL の変更

によるネッ ト リ ス トの変更量を 小限に抑えます。 コンパイル ポイン トは論理的な境界で、 この境界を越える 適

化は実行されません。 これがデザイン パフォーマンスに影響する可能性はあ り ますが、 インク リ メンタル コンパイ

ルと共に使用する と、 よ り実行時間が短縮され、 予測性が向上します。

Synplify には、 自動と手動の 2 つのコンパイル ポイン ト フローがあ り ます。 自動コンパイル ポイン ト モードでは、

既存の階層および使用率の見積も りに基づいて、 合成によ り コンパイル ポイン トが自動的に選択されます。 これは

プッシュボタン モードです。 フローをイネーブルにする以外は、 ユーザーの操作は必要あ り ません。 このフローを

イネーブルにするには、 GUI で [Auto Compile Point] チェッ ク ボッ クスをオンにするか、 Synplify プロジェク トで次

を設定します。

set_option -automatic_compile_point 1

手動コンパイル ポイン ト フローは、 柔軟性があ り ますが、 ユーザーがコンパイル ポイン ト を選択する必要があ り ま

す。 デザインをコンパイルした後、 SCOPE エディ ターの [Compile Points] タブを使用するか、

define_compile_point 設定を使用します。 コンパイル ポイン ト フローの詳細は、 Synplify のオンライン ヘルプ

を参照してください。

インプリ メンテーシ ョ ン 94UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 95: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

インクリ メンタル フローでのチェ ックポイン トの保存

read_checkpoint -incremental で現在のデザインに基準チェッ クポイン ト を適用する と、 インク リ メンタル

再利用データがフローを通して保持されます。 チェッ クポイン ト を保存し、 同じ Vivado Design Suite セッシ ョ ンまた

は異なる Vivado Design Suite セッシ ョ ンに読み込み直すと、 インク リ メンタル コンパイル モードが保持されます。

次のよ うなコマンド シーケンスを実行する と します。

opt_design; # optimize the current designread_checkpoint -incremental reference.dcp; # apply reference data to current designwrite_checkpoint incr.dcp; # save a snapshot of the current designread_checkpoint incr.dcpplace_designwrite_checkpoint top_placed.dcp; # save incremental placement resultroute_design

read_checkpoint incr.dcp を実行する と、 Vivado ツールでインク リ メンタル データが存在するこ とが検出さ

れ、 その後の place_design および route_design コマンドはインク リ メンタル モードで実行されます。

次のコマンド シーケンスでは、 Vivado Design Suite を終了して再起動しても、 route_design コマンドは基準

チェッ クポイン ト reference.dcp を使用してインク リ メン ト モードで実行されます。

read_checkpoint top_placed.dcpphys_opt_designroute_design

制約の競合

変更したデザインの制約が基準チェッ クポイン トの物理データ と競合するこ とがあ り ます。 競合が発生した場合は、

使用される制約によって処理は異なり ます。 これを次の例に示します。

LOC 制約競合の例

セル cell_A を固定ロケーシ ョ ン RAMB36_X0Y0 に割り当てる制約がある と します。 基準チェッ クポイン ト

reference.dcp では、 cell_A は RAMB36_X0Y1 に配置されており、 RAMB36_X0Y0 には別のセル cell_B が配置され

ています。

read_checkpoint -incremental reference.dcp を実行する と、 cell_A が RAMB36_X0Y0 に配置され、

cell_B の配置は解除されます。 セル cell_B は、 インク リ メンタル配置で配置されます。

Pblock 競合の例

基準チェッ クポイン トに Pblock がなく、 現在の run に Pblock が追加されている と します。 競合がある場合は、 基準

チェッ クポイン トからの配置データが使用されます。

インプリ メンテーシ ョ ン 95UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 96: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

インクリ メンタル コンパイル後のアドバンス解析

Vivado ツールでは、 詳細に再利用が解析できるよ うにレポート、 タイ ミ ング ラベル、 およびオブジェク ト プロパ

ティが提供されています。

再利用レポート

report_incremental_reuse コマンドには、詳細な解析用に report_utilization と同様のオプシ ョ ンがあ り

ます。

-cells <list of cells>

-cells オプシ ョ ンを使用する と、 デザイン全体の再利用ではなく、 指定のセルのみの再利用がレポート されます。

ブロ ッ ク RAM のみの再利用をレポートする場合

report_incremental_reuse -cells [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ BMEM.bram.* } ]

インクリ メンタル再利用サマリ

1. Reuse Summary----------------

+-------+----------------------+--------------------+--------------------+-------+| Type | Matched % (of Total) | Reuse % (of Total) | Fixed % (of Total) | Total |+-------+----------------------+--------------------+--------------------+-------+| Cells | 96.68 | 95.78 | 1.94 | 3650 || Nets | 97.06 | 91.35 | 0.00 | 5229 || Pins | - | 85.06 | - | 19650 || Ports | 100.00 | 100.00 | 100.00 | 71 |+-------+----------------------+--------------------+--------------------+-------+

2. Reference Checkpoint Information-----------------------------------

+----------------+-------------------------------------------------------+| DCP Location: | /projects/incr/ref.dcp |+----------------+-------------------------------------------------------+

+-----------------+------------+| DCP Information | Value |+-----------------+------------+| Vivado Version | v2017.1.0 || DCP State | POST_ROUTE || Recorded WNS* | 1.445 || Recorded WHS | 0.061 |+-----------------+------------+* Incremental Flow Target WNS = 0.000

3. Comparison with Reference Run--------------------------------

インプリ メンテーシ ョ ン 96UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 97: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

+----------------+---------------------+-----------------------+---------------------+| | WNS(ns) |Runtime(elapsed)(hh:mm)| Runtime(cpu)(hh:mm) |+----------------+---------+-----------+-----------+-----------+-----------+---------+| Stage |Reference|Incremental| Reference |Incremental|Reference|Incremental|+----------------+---------+-----------+-----------+-----------+---------+-----------+| synth_design | | | 00:01 | 00:01 | | || opt_design | | | < 1 min | < 1 min | | < 1 min || read_checkpoint| | | | < 1 min | | < 1 min || place_design | 2.10 | 1.448 | < 1 min | < 1 min | | < 1 min || route_design | 1.44 | 1.445 | < 1 min | < 1 min | | < 1 min |+----------------+---------+-----------+-----------+-----------+---------+-----------+

4. Non Reuse Information------------------------

+------------------------------------------------------+------+| Type | % |+------------------------------------------------------+------+| Non-Reused Cells | 4.21 || New | 3.12 || Discarded illegal placement due to netlist changes | 0.82 || Discarded to improve timing | 0.27 || Partially reused nets | 0.00 || Non-Reused nets | 8.64 || Non-Reused Ports | 0.00 |+------------------------------------------------------+------+

階層インプリ メンテーシ ョ ン再利用サマリ

-hierarchical オプシ ョ ンを使用する と、 各階層レベルでのセルの再利用が表示されます。 次に、

report_incremental_reuse -hierarchical の例を示します。

注記: このレポート例は、 ページに収めるため、 切り詰められています。

1. Summary----------

+--------------------------+------------------+--------+-----+---------------------+| Instance | Module | Reused | New | Discarded(Illegal)* | +--------------------------+------------------+--------+-----+---------------------+| bft | (top) | 3607 | 9 | 2 || (bft) | (top) | 210 | 9 | 2 || arnd1 | round_1 | 256 | 0 | 0 || transformLoop[0].ct | coreTransform_43 | 32 | 0 | 0 || transformLoop[1].ct | coreTransform_38 | 32 | 0 | 0 || transformLoop[2].ct | coreTransform_42 | 32 | 0 | 0 || transformLoop[3].ct | coreTransform_40 | 32 | 0 | 0 || transformLoop[4].ct | coreTransform_45 | 32 | 0 | 0 |+--------------------------+------------------+--------+-----+---------------------+* Discarded illegal placement due to netlist changes** Discarded to improve timing*** Discarded placement by user**** Discarded due to its control set source is unguided***** Discarded due to its connectivity has Loc Fixed Insts

セルの再利用ステータスが、 上位階層から順にその下位の階層レベルごとにレポート されます。 初のサブモ

ジュールに含まれる 下位階層までレポート される と、 次のサブモジュールがレポート されます。

インプリ メンテーシ ョ ン 97UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 98: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

この例では、 上位セルは bft で、 再利用されたセルは合計 3,607 個、 新規セルは 9 個あり ます。 bft がかっこで囲

まれた行は、 bft に含まれ、 そのサブモジュールに含まれていないセルの再利用ステータスを示します。 3,607 個の

セルのうち、 210 個が bft に含まれ、 その他はサブモジュールに含まれます。 新規セル 9 個は、 すべて bft 内にあ

り ます。 bft 内では、 サブモジュール arnd1 で 256 個のセルが再利用されていますが、 arnd1 自体には再利用され

たセルは含まれず、 サブモジュール transformLoop[0].ct、 transformLoop[1].ct などのみに含まれます。

各レベルでのセルの再利用ステータスを示す 5 つの列があ り ますが、 上記の例には [Discarded(Illegal)] のみが示され

ています。 これらの列に対しては注記があ り、 配置が破棄された理由が示されます。

* Discarded illegal placement due to netlist changes (ネッ ト リ ス トの変更による無効な配置を破棄)

** Discarded to improve timing (タイ ミ ングを向上するため破棄)

*** Discarded placement by user (ユーザーの指定によ り配置を破棄)

**** Discarded due to its control set source is unguided (制御セッ ト ソースがガイ ド されてないため破棄)

***** Discarded due to its connectivity has Loc Fixed Insts

-hierarchical_depth オプシ ョ ンを使用する と、 レポートするサブモジュールのレベル数を制限できます。 次

に、 先ほどの例で -hierarchical_depth を 1 に設定した場合に得られるレポートの例を示します。

report_incremental_reuse -hierarchical -hierarchical_depth 1

1. Summary----------

+----------+--------+--------+-----+---------------------+| Instance | Module | Reused | New | Discarded(Illegal)* | +----------+--------+--------+-----+---------------------+| bft | (top) | 3607 | 9 | 2 |+----------+--------+--------+-----+---------------------+

この場合、 レポート されるのは 上位 bft のみになり ます。 -hierarchical_depth を 2 に設定する と、 bft と

bft に含まれる階層のみがレポート され、 それよ り下の階層セルはレポート されません。

階層インプリ メンテーシ ョ ン再利用サマリ

1. Summary----------

+--------------------------------+---------------+--------+-----+---------------------+| Instance | Module | Reused | New | Discarded(Illegal)* |+--------------------------------+---------------+--------+-----+---------------------+| bft | (top) | 3607 | 9 | 2 || (bft) | (top) | 210 | 9 | 2 || arnd1 | round_1 | 256 | 0 | 0 || arnd2 | round_2 | 256 | 0 | 0 || arnd3 | round_3 | 256 | 0 | 0 || arnd4 | round_4 | 256 | 0 | 0 || egressLoop[0].egressFifo | FifoBuffer_6 | 173 | 0 | 0 |+--------------------------------+---------------+--------+-----+---------------------+

インプリ メンテーシ ョ ン 98UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 99: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

タイ ミング レポート

インク リ メンタル配置配線が完了したら、 タイ ミ ングとセルおよびネッ トの再利用に関する詳細を解析できます。

タイ ミ ング レポートのオブジェク トに、 物理データがどのよ うに再利用されたかが示されます。 これによ り、 デザ

インのアップデートがク リ ティカル パスに影響しているかど うかを判断できます。

次に、 このレポートで使用される用語の意味を説明します。

• (ROUTING): セル配置とネッ ト配線の両方が再利用されています。

• (PLACEMENT): セル配置は再利用されていますが、 ピンへの配線は再利用されていません。

• (MOVED): セル配置とピン配線のどちら も再利用されていません。

• (NEW): ピン、 セル、 またはネッ トは新しいデザイン オブジェク トで、 基準デザインには含まれません。

次に例を示します。

--------------------------------------------------------------------------------- --------------Routing SLICE_X65Y175 FDRE(Prop_EFF_SLICEL_C_Q)

0.114 -0.446 r base_mb_i/microblaze_0/Q net (fo=637, routed) 0.752 0.306 base_mb_i/microblaze_0/reset_bool_for_rst

Routing SLICE_X73Y171 FDRE r base_mb_i/microblaze_0/command_reg_clear_reg/R------------------------------------------------------------------------------ -------------------

上記のレポートは、 Vivado IDE では次のよ うに表示されます。

タイ ミ ング レポートからラベルを削除するには、report_timing -no_reused_label オプシ ョ ンを使用します。

オブジェク ト プロパティ

read_checkpoint -incremental コマンドを使用する と次の 2 つのセル プロパティが設定され、 スク リプ ト ま

たは Tcl コマンドを使用してインク リ メンタル フロー結果を解析する際に有益です。

• IS_REUSED: セル、 ポート、 ネッ ト 、 およびピン オブジェク トのブール値プロパティで、 次のインク リ メンタ

ル データが再利用された場合に TRUE に設定されます。

° セル配置

° ポートのパッケージ ピン割り当て

° ネッ トの配線部分

° ピンへの配線

X-Ref Target - Figure 2-24

図 2-24: Vivado でのインクリ メンタル再利用サマリ

インプリ メンテーシ ョ ン 99UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 100: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 2 章: デザインのインプリ メンテーシ ョ ン

• REUSE_STATUS: セルおよびネッ トの文字列プロパティで、 インク リ メンタル配置配線後の再利用ステータスを

示します。

セルの値は、 次のいずれかです。

° New (新規)

° Reused (再利用)

° Discarded placement to improve timing (タイ ミ ングを向上するため配置を破棄)

° Discarded illegal placement due to netlist changes (ネッ ト リ ス トの変更による無効な配置を破棄)

ネッ トの値は、 次のいずれかです。

° REUSED

° NON_REUSED

° PARTIALLY_REUSED

ヒン ト : ザイ リ ンクス Tcl Store の Incremental Compile パッケージに、 いくつかのアプリ ケーシ ョ ンがパブリ ッシュさ

れています。 これらのアプリ ケーシ ョ ンには、 ク リ ティカル パスを解析する際の配置配線再利用の表示およびその

他のデザイン ビューが含まれています。 また、 インク リ メンタル デザイン run の基準チェッ クポイン ト を自動的に

管理する、 プロジェク ト フロー用の自動インク リ メンタル コンパイルのアプリ ケーシ ョ ンも含まれます。

ヒン ト : インク リ メンタル コンパイルの効果的な使用方法は、 『UltraFast 設計手法ガイ ド (Vivado Design Suite 用)』

(UG949) [参照 13] のこのセクシ ョ ンを参照してください。

インプリ メンテーシ ョ ン 100UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 101: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章

インプリ メンテーシ ョ ン結果の解析と表示

インプリ メンテーシ ョ ン run の監視

インプ リ メンテーシ ョ ン run は、 次のよ うに監視できます。

• コンパイル情報を読む。

• [Messages] ウ ィンド ウで警告およびエラーを確認。

• プロジェク ト サマリ を表示。

• [Design Runs] ウ ィンド ウを開く。

合成 run およびインプリ メンテーシ ョ ン run のステータスは、 [Log] ウ ィンド ウで確認します。

run ステータス表示

進行中の run のステータスは、 2 つの方法で表示されます。 これらのステータス表示には、 run が進行中であるこ と

が示されるほか、 こ こから必要に応じてキャンセルできます。

• Vivado® IDE の右上に、 プロジェク ト ステータス バーに表示される run ステータス インジケーターがあ り ます

(図 3-1 を参照)。 run が進行中であるこ とが動くバーで示されます。 [Cancel] をク リ ッ クする と、 run を停止でき

ます。

• run ステータス インジケーターは、 [Design Runs] ウ ィンド ウ (図 3-2) にも表示されます。 run 名の横に、 run が進

行中であるこ とを示す円形の矢印が表示されます (図の赤丸)。 run を右ク リ ッ ク してポップアップメニューから

[Reset Run] をク リ ッ クする と、 run をキャンセルできます。

X-Ref Target - Figure 3-1

図 3-1: run ステータス インジケーター

X-Ref Target - Figure 3-2

図 3-2: インプリ メンテーシ ョ ン run のステータス表示

インプリ メンテーシ ョ ン 101UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 102: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

run のキャンセル/リセッ ト

進行中の run を [Cancel] ボタンまたは [Reset Run] コマンドでキャンセルする と、キャンセルした run 用に作成された

run ファ イルをすべて削除するかど うか確認する メ ッセージ (図 3-3) が表示されます。

[Delete Generated Files] をオンにする と、 ローカルのプロジェク ト ディレク ト リから run データが削除されます。

推奨: キャンセルした run で作成されたデータはすべて削除して、 今後の run で競合が発生しないよ うにするこ とを

お勧めします。

[Log] ウィンドウのログ情報の表示

run を実行する と、 [Log] ウ ィンド ウが開き、 標準出力メ ッセージが表示されます。 [Log] ウ ィンド ウには、

place_design や route_design などの各インプリ メンテーシ ョ ン プロセスの進行状況も表示されます。

[Log] ウ ィンド ウ (図 3-4) でメ ッセージがどこから表示されているかを確認し、 インプリ メンテーシ ョ ン run のデ

バッグに役立てるこ とができます。

出力の停止

[Log] ウ ィンド ウで [Pause output] ボタン をク リ ッ クする と、 出力を停止できます。 出力を停止する と、 インプ

リ メンテーシ ョ ンの実行中にログ情報を読むこ とができます。

X-Ref Target - Figure 3-3

図 3-3: [Cancel Implementation] ダイアログ ボックス

X-Ref Target - Figure 3-4

図 3-4: [Log] ウィンドウ

インプリ メンテーシ ョ ン 102UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 103: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

プロジェク ト ステータスの表示

Vivado IDE では、 プロジェク ト ステータス と次に実行する段階が複数の方法で示されます。 プロジェク ト ステータ

スには、 主なデザイン タスクの結果のみがレポート されます。

プロジェク ト ステータスは [Project Summary] と ステータス バーに表示され、 プロジェク ト を開いたと き、 デザイン

フロー コマンドを実行中に、 プロジェク トのステータスをすばやく判断できます。 次のステータスが示されます。

• RTL エラボレーシ ョ ン

• 合成

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

• ビッ ト ス ト リーム生成

プロジェク ト ステータス バー

プロジェク ト ステータスは、 Vivado IDE の右上の プロジェク ト ステータス

バーに表示されます。

合成、 インプリ メン ト 、 ビッ ト ス ト リームの生成を実行する と、 プロジェク ト

ステータス バーにその結果が示されます。 プロセスでエラーが発生した場合

は、 赤色の文字で表示されます。

Out-of-Date ステータス

合成またはインプ リ メンテーシ ョ ンを完了した状態でソース ファ イルまたはデザイン制約を変更する と、 プロジェ

ク ト ステータスが図 3-5 に示すよ うに 「Out-of-Date」 と表示されます。

これは、 プロジェク トが 新でなく、 更新が必要であるこ とを示します。 デザインのどの部分が 新ではないのか

を確認するには、 [more info] リ ンクをク リ ッ ク します。 インプリ メンテーシ ョ ンのみの再実行が必要な場合や、 合成

およびインプ リ メンテーシ ョ ンの両方を再実行する必要がある場合があ り ます。

run のステータスを強制的に最新の状態に設定

[Force-up-to-date] リ ンクをク リ ッ クする と、 インプ リ メンテーシ ョ ン run または合成 run のステータスを強制的に

新の状態にするこ とができます。 この機能は、 デザインまたは制約を変更したが、 現在の run の結果を解析する場合

などに使用します。

ヒン ト : [Force-up-to-date] コマンドは、 [Design Runs] ウ ィンド ウで 新でない run を右ク リ ッ ク したと きに表示される

ポップアップ メニューにもあ り ます。

X-Ref Target - Figure 3-5

図 3-5: インプリ メンテーシ ョ ンが最新でない

インプリ メンテーシ ョ ン 103UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 104: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

インプリ メンテーシ ョ ン完了後の次の操作

プロジェク ト モードおよび非プロジェク ト モードのどちらでも、 インプリ メンテーシ ョ ンが完了した後の操作は、

インプ リ メンテーシ ョ ンの結果によ り ます。

• デザインが完全に配置配線されたか、 解決が必要な問題があるか。

• タイ ミ ング制約およびデザイン要件が満たされたか、 デザインを完了するのに変更が必要か。

• ザイ リ ンクス パーツ用のビッ ト ス ト リームを生成できる状態であるか。

インプリ メンテーシ ョ ン後に推奨される手順

インプ リ メンテーシ ョ ン後は、 次の手順を実行するこ とをお勧めします。

1. インプ リ メンテーシ ョ ン メ ッセージを確認します。

2. インプ リ メンテーシ ョ ン レポート を表示し、 次の事項を確認します。

° タイ ミ ング制約が満たされている (report_timing_summary)。

° リ ソース使用率が予測どおりである (report_utilization)。

° 消費電力が予測どおりである (report_power)。

3. ビッ ト ス ト リーム ファ イルを生成します。

ビッ ト ス ト リーム ファ イルの生成には、 デザインがハード ウェアのルールに違反していないこ とを確認する

終 DRC も含まれます。

4. 満たされていないデザイン要件がある場合は、 次を実行します。

a. プロジェク ト モードでは、 インプリ メン ト済みデザインを開いて解析します。

b. 非プロジェク ト モードでは、 インプリ メンテーシ ョ ン後のデザイン チェッ クポイン ト を開きます。

インプ リ メン ト済みデザインの解析の詳細は、『Vivado Design Suite ユーザー ガイ ド : デザイン解析およびクロージャ

テクニッ ク』 (UG906) [参照 10] のこのセクシ ョ ンを参照してください。

非プロジェク ト モードでのインプリ メンテーシ ョ ン後の次の操作

非プロジェク ト モードでは、 デザイン セッシ ョ ンで生成されたメ ッセージは Vivado ログ ファイル (vivado.log)

に保存されます。 このログ ファ イルおよびデザイン データからのレポート を参照し、 プロジェク トの状況を正確に

評価します。

プロジェク ト モードでのインプリ メンテーシ ョ ン後の次の操作

プロジェク ト モードでは、 Vivado Design Suite で次が実行されます。

• [Messages] ウ ィンド ウにログ ファ イルからのメ ッセージが表示されます。

• さまざまなレポートが自動的に生成されます。

プロジェク ト モードでは、 インプリ メンテーシ ョ ン run が完了する と、 図 3-6 に示すダイアログ ボッ クスが表示さ

れ、 次の操作を選択できます。

インプリ メンテーシ ョ ン 104UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 105: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Implementation Completed] ダイアログ ボッ クスで、 次を実行します。

1. 次のいずれかのオプシ ョ ンをオンにします。

° [Open Implemented Design]

ネッ ト リ ス ト 、 デザイン制約、 ターゲッ ト パーツ、 配置配線の結果を Vivado IDE に読み込み、 必要に応じ

てデザインを解析できるよ うにします。

° [Generate Bitstream]

[Generate Bitstream] ダイアログ ボッ クスを開きます。 詳細は、 『Vivado Design Suite ユーザー ガイ ド : プログ

ラムおよびデバッグ』 (UG908) [参照 12] のこのセクシ ョ ンを参照してください。

° [View Reports]

Vivado ツールでインプリ メンテーシ ョ ン中に生成されたレポート ファ イルを選択して表示できる [Reports]

ウ ィンド ウを開きます。 詳細は、 108 ページの 「インプリ メンテーシ ョ ン レポートの表示」 を参照してく

ださい。

2. [OK] をク リ ッ ク します。

X-Ref Target - Figure 3-6

図 3-6: プロジェク ト モード : [Implementation Completed] ダイアログ ボックス

インプリ メンテーシ ョ ン 105UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 106: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

メ ッセージの表示

重要: すべてのメ ッセージを確認して ください。 メ ッセージには、 デザインのパフォーマンス、 消費電力、 エリ ア、

配線を向上するための推奨事項が記載される場合があ り ます。 ク リ ティカル警告メ ッセージにも、 解決すべきタイ

ミ ング制約の問題が表示されるこ とがあ り ます。

非プロジェク ト モードでのメ ッセージの表示

非プロジェク ト モードでは、 Vivado ログ ファ イル (vivado.log) で次を確認します。

• 1 つのデザイン セッシ ョ ンで使用したコマンド

• コマンドからの結果およびメ ッセージ

推奨: Vivado テキス ト エディ ターでログ ファ イルを開き、 すべてのコマンドの結果を確認してください。 有益な情

報が得られるこ とがあ り ます。

プロジェク ト モードでのメ ッセージの表示

プロジェク ト モードでは、 [Messages] ウ ィンド ウ (図 3-7) に [Log] ウ ィンド ウの内容がフ ィルターされたものが表示

され、 主なメ ッセージ、 警告、 およびエラーのみが含まれます。 [Messages] ウ ィンド ウは機能ごとに分類されてお

り、 フ ィルターを適用するツールバー オプシ ョ ンを使用して、 特定のタイプのメ ッセージのみを表示できます。

プロジェク ト モードでメ ッセージを表示する際は、 次の機能を使用できます。

• 横にあるプラス記号 (+) をク リ ッ ク して展開し、 各メ ッセージを表示します。

• [Messages] ウ ィンド ウの上部にあるチェッ ク ボッ クスのオン/オフを切り替え、 エラー、 ク リ ティカル

警告、 警告、 情報メ ッセージを表示/非表示にします。

• [Messages] ウ ィンド ウで リ ンクを含むメ ッセージをク リ ッ クする と、 ソース ファ イルが開き、 該当する行がハ

イライ ト されます。

• メ ッセージを右ク リ ッ ク して [Search for Answer Record] をク リ ッ クする と、 ザイ リ ンクス ウェブサイ トでその

メ ッセージに関連するアンサー データベースを検索できます。

X-Ref Target - Figure 3-7

図 3-7: [Messages] ウィンドウ

インプリ メンテーシ ョ ン 106UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 107: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

インクリ メンタル コンパイルのメ ッセージ Vivado ツールのログ ファ イルには、 インク リ メンタル コンパイルからのインク リ メンタル配置および配線のサマリ

結果がレポート されます。

インクリ メンタル配置サマリ

次のインク リ メンタル配置サマリの例には、 セル配置の再利用およびランタイム統計の 終的な評価が含まれます。

+-------------------------------------------------------------------------------+|Incremental Placement Summary |+-------------------------------------------------------------------------------+| Type | Count | Percentage |+-------------------------------------------------------------------------------+| Total instances | 33406 | 100.00 || Reused instances | 32390 | 96.96 || Non-reused instances | 1016 | 3.04 || New | 937 | 2.80 || Discarded illegal placement due to netlist changes | 16 | 0.05 || Discarded to improve timing | 63 | 0.19 |+-------------------------------------------------------------------------------+|Incremental Placement Runtime Summary |+-------------------------------------------------------------------------------+| Initialization time(elapsed secs) | 79.99 || Incremental Placer time(elapsed secs) | 31.19 |+-------------------------------------------------------------------------------+

インクリ メンタル配線サマリ

インク リ メンタル配線サマリには、 デザインのすべてのネッ トに対する再利用統計が示されます。 レポート される

カテゴ リは、 次のとおりです。

• Fully Reused

ネッ トの配線全体が基準デザインから再利用されています。

• Partially Reused

ネッ トの配線の一部が基準デザインから再利用されています。 セル、 セルの配置、 またはその両方が変更され

たこ とによ り、 一部のセグメン トは再配線されています。

• New/Unmatched

現在のデザインに含まれるネッ トが基準デザインのものと一致していません。

---------------------------------------------------------|Incremental Routing Reuse Summary |---------------------------------------------------------|Type | Count | Percentage |---------------------------------------------------------|Fully reused nets | 30393| 96.73 ||Partially reused nets | 0| 0.00 ||Non-reused nets | 1028| 3.27 |---------------------------------------------------------

インプリ メンテーシ ョ ン 107UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 108: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

インプリ メンテーシ ョ ン レポートの表示

Vivado Design Suite では、 次の情報を含むさまざまなレポート を生成できます。

• タイ ミ ング、 タイ ミ ングの密集度、 タイ ミ ング サマリ

• ク ロ ッ ク、 ク ロ ッ ク ネッ ト ワーク、 ク ロ ッ ク使用率

• 消費電力、 スイ ッチング アクティビティ、 ノ イズ解析

レポート を表示する と、 次を実行できます。

非プロジェク ト モードでのレポート生成

非プロジェク ト モードでは、 レポート を手動で生成する必要があ り ます。

• Tcl コマンドを使用して個々のレポート を生成。

• Tcl スク リプ ト を使用して複数のレポート を生成。

Tcl スクリプ トの例

次の Tcl スク リプ ト例では、 複数のレポートが生成され、 Reports フォルダーに保存されます。

# Report the control sets sorted by clk, clkEnreport_control_sets -verbose -sort_by {clk clkEn} -file C:/Report/cntrl_sets.rpt# Run Timing Summary Report for post implementation timing report_timing_summary -file C:/Reports/post_route_timing.rpt -name time1# Run Utilization Report for device resource utilization report_utilization -file C:/Reports/post_route_utilization.rpt

Vivado IDE でレポート を開く

これらのレポートは、 Vivado IDE で開く こ とができます。 上記の Tcl スク リプ ト例では、

report_timing_summary コマンドで次のオプシ ョ ンを使用しています。

• -file オプシ ョ ン: レポート をファ イルに保存します。

• -name オプシ ョ ン: レポート を Vivado IDE に表示します。

図 3-9 に、 Vivado IDE でレポート を開いた例を示します。

ヒン ト : レポート を保存するディ レク ト リは、 レポートの生成する前に存在している必要があ り ます。 ディ レク ト リ

がないとファ イルは保存されず、 エラー メ ッセージが表示されます。

• スクロール バーを使用してレポート ファ イルを参照します。

• [Find] または [Find in Files] ボタンをク リ ッ ク し、 特定のテキス ト を検索します。

インプリ メンテーシ ョ ン 108UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 109: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

インプリ メンテーシ ョ ン レポート コマンドに関する情報

Vivado IDE または Tcl コマンド プロンプ トで help Tcl コマンド を使用する と、 Tcl レポート コマンド とそのオプシ ョ

ンに関する情報を表示できます。

Tcl レポート コマンドおよびそのオプシ ョ ンの詳細な説明は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ

ド』 (UG835) [参照 18] を参照してください。

プロジェク ト モードでのレポート生成

プロジェク ト モードでは、 多くのレポートが自動的に生成されます。 これらのレポートは、 [Reports] ウ ィンド ウ

(図 3-8) にリ ス ト されます。

[Reports] ウ ィンド ウは、 合成またはインプリ メン ト コマンドを実行する と自動的に開きます。 開いていない場合は、

次のいずれかの方法で開く こ とができます。

• [Project Summary] ウ ィンド ウで [Reports] リ ンクをク リ ッ ク します。

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

ヒン ト : インプリ メンテーシ ョ ン run の tcl.pre および tcl.post オプシ ョ ンを使用する と、プロセスの各段階でカスタム

レポート を出力できます。 これらのカスタム レポートは [Reports] ウ ィンド ウには表示されませんが、 ニーズに合わ

せてカスタマイズできます。 詳細は、 26 ページの 「インプリ メンテーシ ョ ン run 設定の変更」 を参照してください。

X-Ref Target - Figure 3-8

図 3-8: [Reports] ウィンドウの例

インプリ メンテーシ ョ ン 109UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 110: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Reports] ウ ィンド ウから表示されるレポートには、 run に関する情報が含まれます。 レポートは、 図 3-9 に示すよ うに Vivado IDE でテキス ト形式で開きます。

レポートからのクロスプローブ

プロジェク ト モードおよび非プロジェク ト モードの両方で、 レポート と [Device] ウ ィンド ウなどのウ ィンド ウに表示される関連デザイン データのクロスプローブがサポート されています。

• メニュー コマンドまたは Tcl コマンドを使用してレポート を生成する必要があ り ます。

• テキス ト形式のレポートではクロスプローブはサポート されていません。

たとえば、 [Reports] ウ ィンド ウには [Route Design] の下にテキス ト形式のタイ ミ ング サマリ レポートが含まれてい

ます (図 3-8)。

タイ ミ ングを解析する際は、 ク リ ティカル パスの配置および配線リ ソースなどのデザイン データを [Device] ウ ィン

ド ウに表示する と有益です。

Vivado IDE で [Tools] → [Timing] → [Report Timing Summary] をク リ ッ クする と、タイ ミ ング サマリ レポートが再生成

され、 表示されたレポートからデザインの異なるウ ィンド ウにク ロスプローブできます。

X-Ref Target - Figure 3-9

図 3-9: 制御セッ ト レポート

インプリ メンテーシ ョ ン 110UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 111: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

タイ ミング レポート と [Device] ウィンドウのクロスプローブの例

図 3-10 に、 タイ ミ ング サマリ レポート と [Device] ウ ィンド ウのクロスプローブの例を示します。 この非プロジェク

ト モードの例では、 次の手順が実行されています。

• 配線後のデザイン チェッ クポイン ト を Vivado IDE で開きます。

• report_timing_summary -name を使用して、 デザイン サマリ レポート を生成して開きます。

• [Device] ウ ィンド ウで [Routing Resources] をオンにします。

• タイ ミ ング サマリ レポートでタイ ミ ング パスを選択し、 [Device] ウ ィンド ウのパスにクロスプローブします

(図 3-10)。

レポートの解析およびデザイン ク ロージャのス ト ラテジの詳細は、『Vivado Design Suite ユーザー ガイ ド : デザイン解

析およびクロージャ テクニッ ク』 (UG906) [参照 10] を参照してください。

X-Ref Target - Figure 3-10

図 3-10: タイ ミング レポート と [Device] ウィンドウのクロスプローブ

インプリ メンテーシ ョ ン 111UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 112: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

インプリ メンテーシ ョ ン結果の変更

このセクシ ョ ンでは、 デザインの配置、 配線、 およびロジッ クの変更方法を説明します。

配置の変更

Vivado ツールでは、 配置セルが固定されているか (Fixed)、 固定されていないか (Unfixed) が検出され、 デザインの配

置されたセルをどのよ うに処理するかが判断されます。

固定セル

固定されたセルは、 ユーザーが配置したか、 XDC ファ イルからインポート されたセルのロケーシ ョ ン制約です。

• Vivado Design Suite では、 このよ うに配置されたセルは固定 (Fixed) と して処理されます。

• 固定セルは、 指示がない限り移動されません。

• 図 3-11 ではフ リ ップフロップがオレンジ色 (デフォルト ) で表示されており、 固定されているこ とがわかり ます。

未固定セル

固定されていないセルは、 Vivado インプリ メンテーシ ョ ンで place_design コマンドまたは 適化コマンドの 1 つ

によ り配置されたものです。

• Vivado Design Suite では、 このよ うに配置されたセルは未固定 (Unfixed) または配置は確定していないと して処

理されます。

• これらのセルは、 必要に応じて移動されます。

• 図 3-11 では LUT が青色 (デフォルト ) で表示されており、 未固定であるこ とがわかり ます。

インプリ メンテーシ ョ ン 112UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 113: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

LOC および BEL のどちらも固定できます。 上図の配置では、 次の制約が生成されます。

set_property is_bel_fixed true [get_cells [list {usbEngine0/u4/u6/csr0_reg[6]}]]set_property is_loc_fixed true [get_cells [list {usbEngine0/u4/u6/csr0_reg[6]}]]

LUT には配置制約は設定されていません。 LUT の配置は未固定であ り、 配置は XDC に含めるべきでないこ とを示

しています。

配置機能で配置されたロジックの固定

Vivado IDE の Vivado 配置で配置されたセルを固定するには、 次の手順に従います。

1. セルを選択します。

2. 右ク リ ッ ク して [Fix Cells] をク リ ッ ク します。

Tcl でセルの配置を固定するには、 次のコマンドを使用します。

set_property is_bel_fixed TRUE [get_cells [list {fftEngine/control_reg_reg[1]_i_1}]]set_property is_loc_fixed TRUE [get_cells [list {fftEngine/control_reg_reg[1]_i_1}]]

Tcl コマンドの詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 18] を参照するか、

「<command> -help」 と入力してください。

X-Ref Target - Figure 3-11

図 3-11: スライスに配置されたロジック

インプリ メンテーシ ョ ン 113UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 114: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

ロジックの手動での配置および移動

ロジッ クを手動で配置および移動できます。

• セルが既に配置されている場合、 ド ラ ッグして新しいロケーシ ョ ンにド ロ ップします。

• セルが配置されていない場合は、 次の手順に従います。

a. [Device] ウ ィンド ウでツールバーの [Cell Drag & Drop Modes] ボタンをク リ ッ ク し、 [Create BEL Constraint

Mode] をオンにします。

b. [Netlist] ウ ィンド ウまたは [Timing] ウ ィンド ウからロジッ クを [Device] ウ ィンド ウにド ラ ッグします。

ロジッ クは、 有効なロケーシ ョ ンに配置されます。

ヒン ト : [Device] ウ ィンド ウにロジッ クをド ラ ッグする場合、 有効なロケーシ ョ ンにのみド ロ ップできます。 ロケー

シ ョ ンが無効な場合 (スライス FF での制御セッ トの制限のためなど)、 [Device] ウ ィンド ウのそのロケーシ ョ ンには

ド ロ ップできず、 ロジッ クは配置されません。

手動でのロジッ クの配置には時間がかるので、 特定の状況でのみ使用してください。 制約にセル名が使用されるの

で、 制約はデザインの変更の影響を受けやすくなり ます。

Tcl コマンドを使用したロジックの配置

ターゲッ ト パーツのデバイス リ ソースにロジッ クを配置するには、 place_cell Tcl コマンドを使用できます。 セ

ルは、特定の BEL サイ ト (SLICE_X49Y60/A6LUT など) または使用可能なサイ ト (SLICE_X49Y60 など) に配置できま

す。 サイ ト を指定して BEL を指定しない場合、 ツールによ り指定されたスライス内の適切な BEL が選択されます。

place_cell コマンドは、 セルを配置する場合、 またはセルをデバイス上のあるサイ トから別のサイ トに移動する

場合に使用できます。 配置されていないセルを配置する構文も、 配置されている移動する構文も同じです。

ヒン ト : スライス FF での制御セッ トの制限のなどの理由で、 ロジッ クを無効なロケーシ ョ ンに配置しよ う とする と、

[Tcl Console] ウ ィンド ウにエラー メ ッセージが表示され、 その配置は無視されます。

place_cell Tcl コマンドを使用して配置されたセルは、 Vivado ツールによ り固定されたセルとみなされます。

インプリ メンテーシ ョ ン 114UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 115: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

配線の変更

デザインの配線は、 [Device] ウ ィンド ウで変更できます。 個々のネッ トで配線の解除、 配線、 配線の固定を実行でき

ます。

個々のネッ トで配線の解除、 配線、 配線の固定を実行するには、 次の手順に従います。

1. [Device] ウ ィンド ウを開きます。

2. ネッ ト を選択します。

° 未配線のネッ トは、 赤色のフライラインで表示されます。

° 部分的に配線されたネッ トは、 黄色で表示されます。

° 配線が固定されているネッ トは、 点線で示されます。

3. 右ク リ ッ ク して [Unroute]、 [Route]、 または [Fix Routing] をク リ ッ ク します。

• [Unroute] および [Route]: 配線を再配線モードで起動し、 ネッ トで操作を実行します。 詳細は、 第 2 章の

「route_design」 を参照してください。

• [Fix Routing]: 配線し、 配線データベースで固定とマークし、 ネッ トのド ライバーおよびロードの LOC および

BEL を固定します。 ネッ ト を手動で配線する配線割り当てモード も使用できます。 詳細は、 「手動配線」 を参照

してください。

ヒン ト : ネッ ト関連のコマンドはすべて、 ネッ トのポップアップ メニューから実行できます。

X-Ref Target - Figure 3-12

図 3-12: 配線の変更

インプリ メンテーシ ョ ン 115UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 116: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

手動配線

手動配線を使用する と、 ネッ トに特定の配線リ ソースを選択できます。 これによ り、 信号の配線パスを完全に制御で

きます。 手動配線では、 route_design は実行されません。 配線は配線データベースで直接アップデート されます。

手動配線は、 ネッ トの遅延を厳密に制御する場合に使用します。 たとえば、 ソース同期インターフェイスで、 デバ

イスの受信レジスタまでの配線遅延の変動を 小限に抑える場合、 レジスタおよび I/O に LOC および BEL 制約を設

定し、 ネッ ト を手動配線するこ とで IOB からレジスタまでの配線遅延を制御します。

手動配線を実行するには、 デバイスのインターコネク ト アーキテクチャに関する詳細な知識が必要です。 手動配線

を実行する信号数を制限し、 短い接続にのみ使用するこ とをお勧めします。

手動配線での規則

手動配線では、 次の規則に従います。

• ド ラ イバーおよびロードに LOC 制約と BEL 制約が必要です。

• 手動配線では分岐は使用できませんが、 分岐点から新しい手動配線を開始するこ とで分岐をインプリ メン トで

きます。

• LUT ロードのピンを固定する必要があ り ます。

• ド ラ イバーに接続されていないロードに配線する必要があ り ます。

• 完全な接続のみが許容されます。 アンテナは許容されません。

• 既存の固定されていない配線済みネッ ト とオーバーラ ップさせるこ とができます。 手動配線が完了した後

route_design を実行し、 ネッ トのオーバーラ ップによる競合を解決しま s 。

配線割り当てモードの開始

配線割り当てモードを開始するには、 次の手順に従います。

1. [Device] ウ ィンド ウを開きます。

2. [Routing Resources] がオンになっているこ とを確認します。

3. ツールバーの [Options] ボタンをク リ ッ ク し、 [Device Options] の [Layers] タブで [Unrouted Net] および [Partially

Routed Net] をオンにします (図 3-13)。

インプリ メンテーシ ョ ン 116UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 117: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

,

4. 配線が必要なネッ ト を選択します。

° 未配線のネッ トは、 赤色のフライラインで表示されます。

° 部分的に配線されたネッ トは、 黄色で表示されます。

5. 右ク リ ッ ク して [Enter Assign Routing Mode] をク リ ッ ク します。

[Assign Routing: Target Load Cell Pin] ダイアログ ボッ クスが開きます。

6. 配線先のロード セル ピンを選択します (オプシ ョ ン)。

7. [OK] をク リ ッ ク します。

X-Ref Target - Figure 3-13

図 3-13: [Device Options] の [Layers] ビュー

インプリ メンテーシ ョ ン 117UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 118: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

注記: [Device] ウ ィンド ウに部分的に配線されたネッ ト または未配線のネッ ト を表示するには、 [Device Options] メ

ニューで対応するレイヤーをオンにする必要があ り ます (図 3-14)。

手動配線モードになり ました。 [Device] ウ ィンド ウの横に [Routing Assignment] ウ ィンド ウが表示されます (図 3-15)。

X-Ref Target - Figure 3-14

図 3-14: [Device Options] プルアウト メニュー

インプリ メンテーシ ョ ン 118UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 119: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Routing Assignment] ウィンドウ

[Routing Assignment] ウ ィンド ウには、 [Options]、 [Assigned Nodes]、 [Neighbor Nodes] の 3 つのセクシ ョ ンがあり ます。

• [Options] セクシ ョ ン (図 3-16) では、 [Routing Assignment] ウ ィンド ウの設定を制御します。

,

X-Ref Target - Figure 3-15

図 3-15: [Routing Assignment] ウィンドウ

X-Ref Target - Figure 3-16

図 3-16: [Routing Assignment] ウィンドウの [Options] セクシ ョ ン

インプリ メンテーシ ョ ン 119UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 120: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

° [Number of hops]: 近隣ノードの配線ホップ数を指定します。 この設定は、 [Neighbor Nodes] セクシ ョ ンに表

示される ノードに影響します。 1 よ り大きい値に設定する と、 [Neighbor Nodes] セクシ ョ ンに配線の 後の

ノードのみが表示されます。

° [Maximum number of neighbors]: [Neighbor Nodes] セクシ ョ ンに表示される近隣ノードの 大数を指定します。

配線の 後のノードのみが表示されます。

° [Allow overlap with unfixed nets]: 割り当てる配線が固定されていない既存の配線とオーバーラ ップするのを

許容します。 固定配線の割り当て後、 route_design コマンドを実行してすべてのオーバーラ ップを解決

する必要があ り ます。

[Options] セクシ ョ ンはデフォルトでは非表示になっています。 [Options] セクシ ョ ンを表示するには、 [Show] を

ク リ ッ ク します。

• [Assigned Nodes] セクシ ョ ンは、 既に配線が割り当てられているモードを示します。 割り当済みの各ノードが 1

行に表示されます。

割り当て済みの配線は、 [Device] ウ ィンド ウでオレンジ色で示されます。 割り当て済みノードの間のギャップ

は、 [Assigned Nodes] セクシ ョ ンに GAP 行と して表示されます。 ギャ ップを自動配線するには、 次の手順に従い

ます。

a. [Assigned Nodes] セクシ ョ ンでネッ ト ギャ ップを右ク リ ッ ク します。

b. [Auto-route] をク リ ッ ク します。

次の配線セグメン ト を割り当てるには、 ギャ ップの前または後の割り当て済みノードを選択するか、 [Assigned

Nodes] セクシ ョ ンの 後のノードを選択します。

• [Neighbor Nodes] セクシ ョ ンは、 選択したノードの近隣にある使用可能なノードを表示します。 [Device] ウ ィン

ド ウでは、 図 3-17 に示すよ うに、 選択されている ノードが白の実線で示されされ、 使用可能な近隣のノードが

白の点線で示されます。

インプリ メンテーシ ョ ン 120UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 121: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

,

配線ノードの割り当て

次の配線セグメン トに割り当てる ノードを決定したら、 次のいずれかを実行します。

• [Neighbor Nodes] セクシ ョ ンでノードを右ク リ ッ ク し、 [Assign Node] をク リ ッ ク します。

• [Neighbor Nodes] セクシ ョ ンでノードをダブルク リ ッ ク します。

• [Device] ウ ィンド ウでノードをク リ ッ ク します。

配線をノードに割り当てる と、 そのノードが [Assigned Nodes] セクシ ョ ンに表示され、 [Device] ウ ィンド ウでオレン

ジ色でハイライ ト されます。

ロードに到達するまで、 またはギャップを含む配線を割り当てる準備ができるまで、 ノードの割り当てを継続します。

X-Ref Target - Figure 3-17

図 3-17: 配線セグメン トの割り当て

インプリ メンテーシ ョ ン 121UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 122: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

配線ノードの割り当て解除

ノードの割り当てを解除するには、 次の手順に従います。

1. [Routing Assignment] ウ ィンド ウの [Assigned Nodes] セクシ ョ ンに移動します。

2. 割り当てを解除する ノードを選択します。

3. 右ク リ ッ ク して [Remove] をク リ ッ ク します。

ノードが割り当てから削除されます。

配線割り当ての確定および終了

配線の割り当てを終了して配線割り当てモードを終了するには、 [Assign Routing] ダイアログ ボッ クスで [Assign

Routing] ボタンをク リ ッ ク します。

[Assign Routing] ダイアログ ボッ クス (図 3-18) が表示されます。 このダイアログ ボッ クスで、割り当てられたノード

を確認します。

配線割り当てのキャンセル

配線割り当てを確定できない場合は、 次のいずれかの方法を使用して配線割り当てをキャンセルできます。

• [Routing Assignment] ウ ィンド ウで [Exit Mode] をク リ ッ ク します。

• [Device] ウ ィンド ウを右ク リ ッ ク して [Exit Assign Routing Mode] をク リ ッ ク します。

配線を確定する と、 ド ライバーおよびロードの BEL および LOC も固定されます。

X-Ref Target - Figure 3-18

図 3-18: [Assign Routing] ダイアログ ボックス

インプリ メンテーシ ョ ン 122UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 123: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

割り当て済みの配線の確認

• 割り当て済みの配線は、 [Device] ウ ィンド ウで緑色の点線で示されます。

• 部分的に割り当てられた配線は、 [Device] ウ ィンド ウで黄色の点線で示されます。

図 3-19 に、 割り当て済み配線と部分的に割り当てられた配線の例を示します。

分岐

複数のロードを持つネッ ト を配線する場合は、 次の手順に従ってネッ ト を配線します。

1. 116 ページの 「配線割り当てモードの開始」 の手順に従って 1 つのロードへの配線を割り当てます。

2. ネッ トのすべての分岐への配線を割り当てます。

X-Ref Target - Figure 3-19

図 3-19: 割り当て済みの配線および部分的に割り当てられた配線

インプリ メンテーシ ョ ン 123UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 124: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

図 3-20 に、 1 つのロードへの配線が割り当てられており、 さ らに 2 つのロードへの配線が必要なネッ ト を示します。

分岐への配線の割り当て

分岐に配線を割り当てるには、 次の手順に従います。

1. [Device] ウ ィンド ウを表示します。

2. 配線するネッ ト ノードを選択します。

3. 右ク リ ッ ク して [Enter Assign Routing Mode] をク リ ッ ク します。

[Target Load Cell Pin] ダイアログ ボッ クスが開き、 すべてのロードが表示されます。

注記: 配線が割り当てられているロードには、 [Routed] 列にチェッ ク マークが示されています。

X-Ref Target - Figure 3-20

図 3-20: 分岐配線の割り当て

インプリ メンテーシ ョ ン 124UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 125: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

4. 配線するロードを選択します。

5. [OK] をク リ ッ ク します。 図 3-22 に示す [Branch Start] ダイアログ ボッ クスが開きます。

6. 選択したロードの配線を分岐する ノードを選択します。

7. [OK] をク リ ッ ク します。

8. 121 ページの 「配線ノードの割り当て」 の手順に従います。

X-Ref Target - Figure 3-21

図 3-21: [Target Load Cell Pin] ダイアログ ボックス (複数ロード )

X-Ref Target - Figure 3-22

図 3-22: [Branch Start] ダイアログ ボックス

インプリ メンテーシ ョ ン 125UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 126: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

LUT ロードのセル入力の固定

配線しよ う と している LUT ロードの入力が、 ほかの入力とスワップされていないこ とを確認する必要があ り ます。

これには、 次の手順に従って LUT ロードのセル入力を固定します。

1. [Device] ウ ィンド ウを開きます。

2. ロード LUT を選択します。

3. 右ク リ ッ ク して [Lock Cell Input Pins] をク リ ッ ク します。

これと同等の Tcl コマンドは、 次のとおりです。

set_property LOCK_PINS {NAME:BEL_PIN} <cell object>

固定配線および複数の LUT ロードがあるネッ トに対しては、 次の Tcl スク リプ ト を使用してすべての LUT ロードの

セル入力を固定できます。

set fixed_nets [get_nets -hierarchical -filter IS_ROUTE_FIXED]foreach LUT_load_pin [get_pins -leaf -of [get_nets $fixed_nets] \-filter DIRECTION==IN&&REF_NAME=~LUT*] {set pin [get_property REF_PIN_NAME $LUT_load_pin]set BEL_pin [file tail [get_bel_pins -of [get_pins $LUT_load_pin]]]set LUT_name [get_property PARENT_CELL $LUT_load_pin]# need to handle condition when LOCK_pins property already exists on LUTset existing_LOCK_PIN [get_property LOCK_PINS [get_cells $LUT_name]]if { $existing_LOCK_PIN ne "" } {

reset_property LOCK_PINS [get_cells $LUT_name]}set_property LOCK_PINS \[lsort -unique [concat $existing_LOCK_PIN $pin:$BEL_pin]] [get_cells $LUT_name]

}

指定配線制約

固定された配線割り当ては、 配線データベースに指定配線文字列と して保存されます。 指定配線文字列では、 分岐

はネス ト された中かっこ ({ }) で示されます。

たとえば、 図 3-23 に示すよ うな配線がある と します。 この配線では、 さまざまなエレ メン トが次の表に示すよ うに

示されています。

表 3-1: 指定配線制約

エレメン ト 表示方法

ド ラ イバーと ロード オレンジ色の矩形

ノード 赤い線

スイ ッチボッ クス 青い矩形

インプリ メンテーシ ョ ン 126UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 127: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

この配線の簡略化された指定配線文字列は、 次のよ うになり ます。

{A B { D E T } C { F G H I M N } {O P Q} R J K L S }

配線は B と C で分岐します。 メ インの配線は A B C R J K L S です。

find_routing_path コマンドを使用した指定配線制約の作成

find_routing_path Tcl コマンドを使用して指定配線制約を作成できます。 作成した制約をネッ トの

FIXED_ROUTE プロパティに割り当て、 配線を固定できます。

部分的に配線されたネッ トでは、 ネッ トへの直接の関連性を使用してノードを検索できます。 これらのオブジェク

トの関係の詳細は、 『Vivado Design Suite プロパティ リ ファレンス ガイ ド』 (UG912) [参照 14] を参照してください。

find_routing_path コマンドは、 次のいずれかを返します。

• 始点から終点までにある配線パスを表すノードの リ ス ト

• コマンドが実行されたが結果がない場合は 「no path found」

• コマンドが正し く実行されなかった場合はエラー

X-Ref Target - Figure 3-23

図 3-23: 分岐配線の例

D

L1

L2

L4

L3

A B

E T

I M N

QPO

G

H

F

D

C

R

JK L S

インプリ メンテーシ ョ ン 127UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 128: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

ロジックの変更

読み取り専用でない論理オブジェク トのプロパティは、 インプリ メンテーシ ョ ン後に Vivado IDE または Tcl で変更

できます。

注記: Tcl コマンドの詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 18] を参照する

か、 「<command> -help」 と入力してください。

[Device] ウ ィンド ウでオブジェク トのプロパティを変更するには、 次の手順に従います。

1. オブジェク ト を選択します。

2. [Properties] ウ ィンド ウの [Properties] ビューでオブジェク トのプロパティを変更します。

変更可能なプロパティには、 ブロ ッ ク RAM の INIT、 MMCM のクロ ッ クを変更するプロパティなどがあ り ます。

LUT オブジェク トの INIT を変更するためのダイアログ ボッ クスもあ り、 LUT 論理式を指定して適切な INIT 値が

ツールによ り設定されるよ うにするこ とができます。

X-Ref Target - Figure 3-24

図 3-24: プロパティの変更

インプリ メンテーシ ョ ン 128UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 129: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

変更の保存

メモ リ内でデザインに対して加えた変更を保存するには、 デザインのチェッ クポイン ト を保存します。

割り当てはデザインにバッ クアノテート されないので、 次回の実行で適用されるよ うにするには、 割り当てを XDC

に追加する必要があ り ます。

プロジェク ト モードで制約を制約ファイルに保存するには、 [File] → [Save Constraints] をク リ ッ ク します。

X-Ref Target - Figure 3-25

図 3-25: LUT 論理式の指定

インプリ メンテーシ ョ ン 129UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 130: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

ネッ ト リス トの変更

機能的なロジッ クのバグを修正、 タイ ミ ング ク ロージャを達成、 またはデバッグ ロジッ クを挿入するため、 ネッ ト

リ ス トの変更が必要な場合があ り ます。 合成後、 配置後、 および配線後に Tcl コマンドを使用して、 既存のネッ ト リ

ス ト を変更できます。

ネッ ト リス ト変更コマンド

次に、 既存のネッ ト リ ス ト を変更するコマンドを示します。

• create_port

• remove_port

• create_cell

• remove_cell

• create_pin

• remove_pin

• create_net

• remove_net

• connect_net

• disconnect_net

注記: これらの Tcl コマンドの詳細は、『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 18] を参

照するか、 「<command> -help」 と入力してください。

ネッ ト リ ス ト変更コマンドは、 合成後、 配置後、 および配線後のネッ ト リ ス トに対して実行します。 ネッ ト リ ス ト

を変更する前に、 メモ リに読み込んでおく必要があ り ます。 ネッ ト リ ス ト を メモ リに読み込んだら、 ネッ ト リ ス ト

変更コマンドを使用して論理的な変更を加えるこ とができます。 変更を保存するには、 write_checkpoint コマ

ンドを使用します。

ヒン ト : ネッ ト リ ス ト変更コマンドを使用する と、 ネッ ト リ ス トに無条件に変更を加えるこ とができますが、 論理的

な変更によ り物理的なインプ リ メンテーシ ョ ンが無効になる場合があ り ます。 物理的なインプリ メンテーシ ョ ンに

論理的な変更を加えるプロセスの一部と して、 DRC が実行されます。 これらの DRC によ り、 無効なネッ ト リ ス トの

変更や、 物理的なインプ リ メンテーシ ョ ンの前に対処しておくべき物理的な制限がレポート されます。

ネッ ト リ ス ト変更コマンドを実行する とすぐに、 論理的な変更が回路図に反映されます。 図 3-26 に、 LUT1 を基準

セルと して使用して作成されたセルの例を示します。

インプリ メンテーシ ョ ン 130UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 131: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

LUT1 の出力を OBUF に接続する と、 この変更が回路図に反映され、 ECO_INV/O の出力ピンが 「n/c」 (未接続) ではな

くな り ます。 図 3-27 に、 変更が反映された回路図を示します。

X-Ref Target - Figure 3-26

図 3-26: LUT1 を基準セルとして使用して作成されたセル

X-Ref Target - Figure 3-27

図 3-27: LUT1 を OBUF に接続した後の [Schematic] ウィンドウ

インプリ メンテーシ ョ ン 131UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 132: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

使用例

次に、 も一般的なネッ ト リ ス トの変更例を示します。 各例に対して、 元の論理ネッ ト リ ス トの回路図、 使用する

ネッ ト リ ス ト変更コマンドの リ ス ト 、 変更後のネッ ト リ ス トの回路図を示します。

使用例 1: ネッ トの論理値の反転

ネッ トの論理値を反転するには、 LUTx プリ ミ ティブの既存の LUT 論理式を変更するだけでよい場合もあ り ますが、

入力からの出力を反転するために LUT1 を挿入する必要がある場合もあ り ます。 図 3-28 に、 OBUF を介して出力ポー

ト wbOutputData[0] を駆動する FDRE プリ ミ ティブの回路図を示します。

次の Tcl コマンドは、 FDRE の出力と OBUF の間にインバーターを追加します。

create_cell -reference LUT1 ECO_INVset_property INIT 2'h1 [get_cells ECO_INV]disconnect_net -net {n_0_SuspendM_pad_0_o_reg} -objects \[get_pins {SuspendM_pad_0_o_reg/Q}]

connect_net -net {n_0_SuspendM_pad_0_o_reg} -objects [get_pins {ECO_INV/O}]create_net ECO_INV_inconnect_net -net ECO_INV_in -objects [get_pins {SuspendM_pad_0_o_reg/Q ECO_INV/I0}]

このスク リプ ト例は、 まず LUT1 セル ECO_INV を作成し、 INIT 値が反転をインプリ メン トする 2'h1 に設定しま

す。 その後 FDRE と OBUF の間のネッ ト を FDRE の Q 出力ピンから接続解除し、 反転 LUT1 セル ECO_INV の出力を

OBUF の I 入力ピンに接続します。 後に、 ネッ ト を作成して FDRE の Q 出力ピンと反転 LUT1 セルの I0 入力を接

続します。

図 3-29 に、 論理ネッ ト リ ス トの変更が反映された回路図を示します。

X-Ref Target - Figure 3-28

図 3-28: OBUF を介して出力ポート を駆動する FDRE プリ ミテ ィブ

インプリ メンテーシ ョ ン 132UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 133: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

ネッ ト リ ス ト を変更したら、 論理的な変更をインプリ メン トする必要があ り ます。 LUT1 セルを配置し、 セルに入出

力されるネッ ト を配置する必要があ り ます。 これは、 デザインの変更されていない部分の配置配線を変更せずに実

行する必要があ り ます。 変更したネッ ト リ ス トの対して place_design を実行する と、 Vivado インプリ メンテー

シ ョ ン コマンドは自動的にインク リ メンタル モードで実行され、 ログ ファ イルに 「Incremental Placement Summary」

(インク リ メンタル配置サマ リ ) セクシ ョ ンが含まれます。

+-------------------------------------------------------------------------------+|Incremental Placement Summary |+-------------------------------------------------------------------------------+| Type | Count | Percentage |+-------------------------------------------------------------------------------+| Total instances | 3834 | 100.00 || Reused instances | 3833 | 99.97 || Non-reused instances | 1 | 0.03 || New | 1 | 0.03 |+-------------------------------------------------------------------------------+

既存の配線を保持して変更されたネッ トのみを配線するには、 route_design コマンドを使用します。 これによ

り、 変更のみがインク リ メンタルに配線され、 ログ ファ イルに 「Incremental Routing Reuse Summary」 (インク リ メン

タル配線再利用サマリ ) セクシ ョ ンが含まれます。

--------------------------------------------------------|Incremental Routing Reuse Summary |--------------------------------------------------------|Type | Count | Percentage |--------------------------------------------------------|Fully reused nets | 6401| 99.97 ||Partially reused nets | 0| 0.00 ||Non-reused nets | 2| 0.03 |--------------------------------------------------------

インク リ メンタル place_design および route_design コマンドを使用して変更したネッ ト リ ス ト を自動的に配

置配線する代わりに、 手動配置および配線制約を使用して論理的な変更を確定できます。 詳細は、 この章の 「配置

の変更」 および 「配線の変更」 を参照してください。

X-Ref Target - Figure 3-29

図 3-29: 反転が追加されたネッ ト リス ト を示す回路図

インプリ メンテーシ ョ ン 133UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 134: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

使用例 2: デバッグ ポートの追加

ネッ ト リ ス ト を変更するこ とによ り、 内部信号を簡単にデバッグ ポートに配線できます。 この例では、 次の回路図

に示す demuxState_reg/Q ピンを、 デバイスの外部ポートで監視できるよ うにします。

次の Tcl スク リプ トは、 既存のデザインにポート を追加し、 内部信号を追加したポートに配線します。

create_port -direction out debug_port_outset_property PACKAGE_PIN AB20 [get_ports {debug_port_out}]set_property IOSTANDARD LVCMOS18 [get_ports [list debug_port_out]]create_cell -reference [get_lib_cells [get_libs]/OBUF] ECO_OBUF1create_net ECO_OBUF1_outconnect_net -net ECO_OBUF1_out -objects ECO_OBUF1/Oconnect_net -net ECO_OBUF1_out -objects [get_ports debug_port_out]connect_net -net [get_nets -of [get_pins demuxState_reg/Q]] -objects ECO_OBUF1/I

上記の Tcl スク リプ ト例は、 次を実行します。

• デバッグ ポート を作成します。

° 作成したデバッグ ポート をパッケージ ピン AB20 に割り当てます。

° I/O 規格 LVCMOS18 を割り当てます。

• ECO_OBUF1_out ネッ ト を介してデバッグ ポート を駆動する OBUF を作成します。

• demuxState_reg レジスタの出力を OBUF の入力に接続するネッ ト を作成します。

X-Ref Target - Figure 3-30

図 3-30: demuxState_reg を示す回路図

インプリ メンテーシ ョ ン 134UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 135: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

図 3-31 に、 論理ネッ ト リ ス トの変更が反映された回路図を示します。

ネッ ト リ ス ト を変更したら、 論理的な変更をインプリ メン トする必要があ り ます。 ポートはパッケージ ピンに割り

当てられるので、 ポート を駆動する OBUF が自動的に正しい場所に配置されます。 そのため、 route_design の後

に place_design を実行する と、 配置するものがないと判断され、 インク リ メンタル コンパイルは適用されませ

ん。 内部信号を OBUF 入力に接続する新し く追加されたネッ ト を配線するには、 route_design -nets コマンドを

使用するかネッ ト を手動で配線して、 route_design がフルで実行されてほかのネッ トの配線が変更されるのを回

避してください。 または、 既存の配線を保持する route_design -preserve を使用します。 詳細は、 79 ページの

「route_design コマンドのその他のオプシ ョ ンの使用」 を参照してください。

使用例 3: タイ ミングを向上するためのパイプライン段の追加

パスにレジスタを追加して組み合わせロジッ クを複数のサイクルに分割するこ とを 「パイプライン処理」 と呼びま

す。 パイプライン処理する と、 パイプライン パスにレイテンシが追加されるので、 レジスタ間のパフォーマンスが

向上します。 パイプライン処理が機能するかど うかは、 デザインのレイテンシ許容度によ り ます。 図 3-32 に、

RAMB36E1 から 2 つの LUT6 セルを介して FF に到達するク リ ティカル パスの回路図を示します。パイプライン段を

追加する と、 このク リ ティカル パスのタイ ミ ングを向上できます。 これは、 ネッ ト リ ス ト を変更するこ とによ り達

成できます。

X-Ref Target - Figure 3-31

図 3-31: デバッグ ポート を追加/配線した後の回路図

インプリ メンテーシ ョ ン 135UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 136: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

次の Tcl スク リプ トは、 2 つの LUT6 セルの間にパイプライン レジスタを追加します。 このレジスタは、 ロード レジ

スタ と同じ制御信号を付けてインプリ メン ト されます。

create_cell -reference [get_lib_cells -of [get_cells {wbOutputData_reg[29]}]] ECO_pipe_stage[29]foreach control_pin {C CE R} {connect_net -net [get_nets -of [get_pins wbOutputData_reg[29]/${control_pin}]] \-objects [get_pins ECO_pipe_stage[29]/${control_pin}]

}disconnect_net -objects \ {egressLoop[4].egressFifo/buffer_fifo/infer_fifo.block_ram_performance.fifo_ram_reg/DOBDO[29]}create_net {egressLoop[4].egressFifo/buffer_fifo/ECO_pipe_stage[29]_in}connect_net -hierarchical -net {egressLoop[4].egressFifo/buffer_fifo/ECO_pipe_stage[29]_in} -objects \ [list \ {ECO_pipe_stage[29]/D} \ {egressLoop[4].egressFifo/buffer_fifo/infer_fifo.block_ram_performance.fifo_ram_reg/DOBDO[29]}]

connect_net -hierarchical -net {egressLoop[4].egressFifo/buffer_fifo/dout2_in[29]} -objects [list \ {ECO_pipe_stage[29]/Q}]

X-Ref Target - Figure 3-32

図 3-32: パイプライン レジスタを追加する前の回路図

インプリ メンテーシ ョ ン 136UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 137: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

次の図に、 論理ネッ ト リ ス トの変更が反映された回路図を示します。

ネッ ト リ ス ト を変更したら、 論理的な変更を確定する必要があ り ます。 これには、 place_design および

route_design コマンドを使用します。

X-Ref Target - Figure 3-33

図 3-33: パイプライン レジスタを追加した後の回路図

インプリ メンテーシ ョ ン 137UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 138: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

Vivado ECO フロー

重要: ECO は、 デザイン チェッ クポイン トにのみ使用できます。 ECO レイアウ トは、 デザイン チェッ クポイン ト を

Vivado IDE で開いた後にのみ使用できます。

エンジニア リ ング チェンジ オーダー (ECO) とは、 インプリ メンテーシ ョ ン後のネッ ト リ ス トへの変更のこ とで、 元

のデザインへの影響を 低限に抑えて変更をインプリ メン トするために使用します。 Vivado の ECO フローを使用す

る と、 デザイン チェッ クポイン ト を変更してその変更をインプリ メン ト し、 変更されたネッ ト リ ス トのレポート を

出力して、 プログラム ファ イルを生成できます。

ECO フローは、 次のよ うな場合に使用します。

• ILA または VIO コアのデバッグ プローブを変更する場合

• 内部ネッ ト を外部プローブのパッケージ ピンに配線する場合

• what-if シナリオ (タイ ミ ングの改善、 ロジッ ク バグの修正など) を評価する場合

ECO フローを使用する と、 Vivado のインク リ メンタルな配置配線機能の利点を活かしながら、 ターンアラウンド タ

イムを短縮できます。

Vivado IDE には、 ECO フローをサポートする定義済みのレイアウ トが含まれています。

[ECO] レイアウ ト を表示するには、 [Layout] → [ECO] をク リ ッ ク します。

ECO Navigator

ECO Navigator からは、 ECO を実行するのに必要なコマンドにアクセスできます。

インプリ メンテーシ ョ ン 138UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 139: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Scratch Pad] ウィンドウ

[Scratch Pad] ウ ィンド ウには、 ネッ ト リ ス トの変更記録と、 セル、 ピン、 ポート、 およびネッ トの配置配線ステータ

スが示されます。

X-Ref Target - Figure 3-34

図 3-34: Vivado の [ECO] レイアウト

インプリ メンテーシ ョ ン 139UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 140: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

ECO フローチャート

次の図に、 典型的な ECO フローを示します。 インプリ メン ト済みデザインを開きます。 ネッ ト リ ス ト を変更した

後、 デザインが完全に配置されていない場合は、 インク リ メンタル配置を実行します。 完全に配置されている場合

は、 インク リ メンタル配線に進みます。 新しいチェッ クポイン トへの変更を保存して新しいプログラムおよびデ

バッグ プローブ ファ イルを生成したら、 ハード ウェア マネージャーを開いてデバイスをプログラムします。 変更に

問題がなければ、 元のデザインにその変更を反映します。 問題がある場合は、 デザインが問題なく機能するよ うに

なるまで ECO フローを 初から繰り返します。

ヒン ト : インプリ メンテーシ ョ ンをプロジェク ト モードで再実行する場合、 前の run ディ レク ト リの結果は削除され

ます。 ECO チェッ クポイン ト を新しいディ レク ト リに保存して、 そのコンパイル用に新しいインプリ メンテーシ ョ

ン run を作成する と、 ECO チェッ クポイン トへの変更を保持できます。

X-Ref Target - Figure 3-35

図 3-35: ECO フローチャート

インプリ メンテーシ ョ ン 140UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 141: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

ECO Navigator の使用方法

ECO Navigator からは、 ECO を実行するのに必要なすべてのコマンドにアクセスできます。 ECO Navigator には、

[Edit]、 [Run]、 [Report]、 [Program] の 4 つのセクシ ョ ンがあ り ます。

[Edit] セクシ ョ ン

ECO Navigator の [Edit] セクシ ョ ン (次の図) からは、 ネッ ト リ ス ト を変更するのに必要なコマンドすべてにアクセス

できます。

[Create Net]: 現在読み込まれているデザインで新しいネッ ト を作成する [Create Net] ダイアログ ボッ クスを開きます。

ネッ トはデザインの 上位に作成するか、 階層ネッ ト名を指定して任意の階層レベルに作成できます。 バス ネッ ト

は、 増分または減分バス インデッ クスで作成できます。 バス ネッ ト を作成するには、 [Create bus] をオンにし、 開始

および終了インデッ クス値を指定します。 ピンまたはポート を選択した場合、 [Connect selected pins and ports] をオン

にする と、 新し く作成したネッ トが自動的にピンおよびポートに接続されます。

X-Ref Target - Figure 3-36

図 3-36: ECO Navigator の [Edit] セクシ ョ ン

X-Ref Target - Figure 3-37

図 3-37: [Create Net] ダイアログ ボックス

インプリ メンテーシ ョ ン 141UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 142: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Create Cell]: 現在読み込まれているデザインのネッ ト リ ス トにセルを追加できる [Create Cell] ダイアログ ボッ クスを

開きます。 新しいセル インスタンスは、 デザインの 上位、 またはデザインのモジュール内の階層に追加できます。

インスタンスは、 ライブラ リ またはデザイン ソース ファ イルから既存のセルを参照するか、 作成されていないセル

を参照するブラ ッ ク ボッ クス インスタンスを追加するこ と もできます。 LUT セルが作成される場合は、 [Specify

LUT Equation] ダイアログ ボッ クスで LUT 式を指定できます。

X-Ref Target - Figure 3-38

図 3-38: [Create Cell] ダイアログ ボックス

X-Ref Target - Figure 3-39

図 3-39: [Specify LUT Equation] ダイアログ ボックス

インプリ メンテーシ ョ ン 142UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 143: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Create Port]: [Create Port] ダイアログ ボッ クスが開き、 ポート を作成して、 方向、 幅、 シングルエンドまたは差動な

どのパラ メーターを指定できます。 新しいポートは、 デザイン階層の 上位に追加されます。 バス ポート を作成す

るには、 [Create bus] をオンにし、 開始および終了インデッ クス値を指定します。 I/O 規格、 プルアップ/プルダウン

抵抗、 ODT タイプも指定できます。 [Location] でディ レク ト リ を指定する と、 ポートがパッケージ ピンに割り当て

られます。

[Create Pin]: 現在読み込まれているデザインに単一ピンまたはバス ピンを追加できる [Create Pin] ダイアログ ボッ ク

スを開きます。 ピン名だけでなく、 方向やバス幅などの属性も指定できます。 バス ピンを作成するには、 [Create

bus] をオンにし、 開始および終了インデッ クス値を指定します。 ピンは、 既存のセル インスタンスに作成するか、

create_port コマンドを使用して 上位ピンと して作成する必要があ り ます。 セルのインスタンス名が指定され

ていない場合、 ピンは作成できません。

X-Ref Target - Figure 3-40

図 3-40: [Create Port] ダイアログ ボックス

X-Ref Target - Figure 3-41

図 3-41: [Create Pin] ダイアログ ボックス

インプリ メンテーシ ョ ン 143UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 144: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Connect Net]: 選択したピンまたはポートが選択したネッ トに接続されます。 ネッ トが選択されていない場合、

[Connect Net] ダイアログ ボッ クスが開き、 選択したピンまたはポートに接続するネッ ト を指定できます。 ウ ィンド

ウには、 現在選択しているレベルの階層のネッ トの リ ス トが表示され、 検索ボッ クスでネッ ト名を入力する と、 ダ

イナミ ッ クにフ ィルターできます。 選択したネッ トは、 デザインの階層レベルをまたがって接続されます。 この際、

必要に応じてピンおよび階層ネッ トが追加されます。

[Disconnect Net]: 現在のデザインのネッ トから選択したネッ ト、 ピン、 ポート またはセルの接続を解除します。 セル

を選択する と、 そのセルに接続されたすべてのネッ トの接続が解除されます。

[Replace Debug Probes]: デバッグ コアが挿入されている場合は、 [Replace Debug Probes] ダイアログ ボッ クスを開きま

す。 [Replace Debug Probes] ダイアログ ボッ クスには、 ILA および VIO コアを使用してプローブされるデザインの

ネッ トに関する情報が表示されます。 [Probe] 列のネッ ト名の横のアイコンをク リ ッ クする と、 デバッグ プローブに

接続されたネッ ト を変更できます。 [Choose Nets] ダイアログ ボッ クスが開き、 デバッグ プローブに接続する新しい

ネッ ト を選択できます。

X-Ref Target - Figure 3-42

図 3-42: [Connect Net] ダイアログ ボックス

インプリ メンテーシ ョ ン 144UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 145: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

X-Ref Target - Figure 3-43

図 3-43: [Replace Debug Probes] ダイアログ ボックス

インプリ メンテーシ ョ ン 145UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 146: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Place Cell]: 選択したデバイス リ ソースに選択したセルを配置します。

[Unplace Cell]: 選択したセルの配置を現在の配置サイ トから解除します。

[Run] セクシ ョ ン

ECO Navigator の [Run] セクシ ョ ン (次の図に表示) からは、 現在の変更をインプリ メン トするのに必要なコマンドす

べてにアクセスできます。

[Check ECO]: 現在のデザインで ECO チェッ ク ルール デッ クを実行します。

ヒン ト : ECO コマンドを使用する と、 ネッ ト リ ス トに無条件に変更を加えるこ とができますが、 論理的な変更によ り

物理的なインプ リ メンテーシ ョ ンが無効になる場合があ り ます。 [Check ECO] を実行する と、 物理的なインプリ メン

テーシ ョ ンの前に対処しておく必要のある無効なネッ ト リ ス トの変更や物理的な制限がレポート されます。

X-Ref Target - Figure 3-44

図 3-44: [Choose Nets] ダイアログ ボックス

X-Ref Target - Figure 3-45

図 3-45: ECO Navigator の [Run] コマンド

インプリ メンテーシ ョ ン 146UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 147: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Optimize Logical Design]: ネッ ト リ ス ト を 適化するのに、 変更したデザインで opt_design を実行する必要のある

こ と もあ り ます。 このコマンドは、 [Optimize Logical Design] ダイアログ ボッ クスを開き、 opt_design コマンドの

オプシ ョ ンを指定できます。 このダイアログ ボッ クスに入力したオプシ ョ ンは、 入力した順に opt_design の後に

追加されます。 たとえば、 opt_design -sweep を実行するには、 [Options] の下に 「-sweep」 と入力します。

[Place Design]: 配置の 75% 以上が再利用可能であれば、 変更したネッ ト リ ス トでインク リ メンタルな

place_design を実行します。 place_design の 後のインク リ メンタル配置サマリ (Incremental Placement

Summary) には、 インク リ メンタルな再利用に関する統計が表示されます。 このコマンドをク リ ッ クする と、

[PlaceDesign] ダイアログ ボッ クスが開き、 place_design コマンドのオプシ ョ ンを指定できます。 このダイアロ

グ ボッ クスに入力したオプシ ョ ンはすべて入力した順に place_design の後に追加されます。

インク リ メンタルな配置配線のその他の情報については、 85 ページの 「インク リ メンタル コンパイル」 を参照して

ください。

X-Ref Target - Figure 3-46

図 3-46: [Optimize Logical Design] ダイアログ ボックス

X-Ref Target - Figure 3-47

図 3-47: [Place Design] ダイアログ ボックス

インプリ メンテーシ ョ ン 147UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 148: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Optimize Physical Design]: ネッ ト リ ス ト を物理 適化するのに、 変更したデザインで phys_opt_design を実行す

る必要があるこ と もあ り ます。 このコマンドでは、 [Optimize Physical Design] ダイアログ ボッ クスを開いて、

phys_opt_design コマンドのオプシ ョ ンを指定できます。 このダイアログ ボッ クスに入力したオプシ ョ ンは、

入力した順に phys_opt_design の後に追加されます。 たとえば、 phys_opt_design -fanout_opt を実行

するには、 [Options] の下に 「-fanout_opt」 と入力します。

[Route Design]: このコマンドをク リ ッ クする と、 [Route Design] ダイアログ ボッ クスが開きます。 このダイアログ

ボッ クスでは、 デザインの変更のインク リ メンタル配線、 選択したピンの配線、 選択したネッ トの配線のいずれを

実行するかを選択します。 変更したネッ ト リ ス トで再利用されるネッ トが 75% 未満である場合、 インク リ メンタル

配線を選択する と、 インク リ メンタルではない route_design に戻されます。

インク リ メンタルな配置配線のその他の情報については、 85 ページの 「インク リ メンタル コンパイル」 を参照して

ください。

ECO 変更を配線するには、 次の 4 つのオプシ ョ ンがあ り ます。

• [Incremental Route]: デフォルト設定。

• [Route selected pin]: 選択したピンのみ配線します。

• [Route selected non-Power nets]: 選択した信号ネッ トのみ配線します。

• [Route selected Power nets]: 選択した VCC/GND のみ配線します。

X-Ref Target - Figure 3-48

図 3-48: [Optimize Physical Design] ダイアログ ボックス

X-Ref Target - Figure 3-49

図 3-49: [Route Design] ダイアログ ボックス

インプリ メンテーシ ョ ン 148UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 149: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Report] セクシ ョ ン

ECO Navigator の [Report] セクシ ョ ン (次の図に表示) からは、 変更したデザインに対してレポート を生成するために

必要なコマンドすべてにアクセスできます。

これらのコマンドの詳細は、 『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893) [参照 3]を参照してく

ださい。

[Program] セクシ ョ ン

ECO Navigator の [Program] セクシ ョ ン (次の図に表示) からは、 変更の保存、 プログラム用の新しい BIT ファイルおよび

デバッグ プローブ用の新しい LTX ファイルの生成、 デバイスのプログラムを実行するコマンドにアクセスできます。

X-Ref Target - Figure 3-50

図 3-50: ECO Navigator の [Report] コマンド

X-Ref Target - Figure 3-51

図 3-51: ECO Navigator の [Program] コマンド

インプリ メンテーシ ョ ン 149UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 150: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Save Checkpoint As]: 変更を新しいチェッ クポイン トに保存します。

[Generate Bitstream]: プログラム用の新しい .bit ファ イルを生成します。

[Write Debug Probes]: デバッグ プローブ用の新しい LTX ファ イルを生成します。 [Replace Debug Probes] コマンドを使

用してデバッグ プローブに変更を加えた場合、 その更新した情報を新しいデバッグ プローブ ファ イル (LTX) に保存

して、 Vivado ハードウェア マネージャーに変更を反映させる必要があ り ます。

X-Ref Target - Figure 3-52

図 3-52: [Save Checkpoint As] ダイアログ ボックス

X-Ref Target - Figure 3-53

図 3-53: [Generate Bitstream] ダイアログ ボックス

インプリ メンテーシ ョ ン 150UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 151: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Scratch Pad] ウィンドウ

[Scratch Pad] ウ ィンド ウは、 読み込んだチェッ クポイン トに変更を加える と更新されます。 次の図を参照して くださ

い。 [Object Name] 列には、 セル、 ネッ ト、 ポート、 ピンの階層名が表示されます。 [Con] 列にはオブジェク トの接

続、 [PnR] 列にはオブジェク トの配置配線ステータスが示されます。 次の図に示す [Scratch Pad] ウ ィンド ウでは、

[Con] および [PnR] 列のチェッ クマークで、 接続と配置配線ステータスが示されています。 この図からは、 次のこ と

がわかり ます。

• ingressFifoWrWn_debug ポートが追加され、 パッケージ ピンに割り当てられています。

• ingressFifoWrEn ネッ トは新し く作成したポートに接続されていますが、 この接続はまだポート まで配線さ

れていません。

X-Ref Target - Figure 3-54

図 3-54: [Write Debug Probes] ダイアログ ボックス

X-Ref Target - Figure 3-55

図 3-55: [Scratch Pad] ウィンドウ

インプリ メンテーシ ョ ン 151UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 152: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Scratch Pad] ウィンドウのツールバー コマンド

[Scratch Pad] ウ ィンド ウのツールバーには、 次のコマンドがあ り ます。

• [Search]: [Scratch Pad] ウ ィンド ウでオブジェク ト を名前で検索します。

• [Collapse All]: オブジェク ト をグループ別に表示し、 グループの個別のメンバーは表示しません。

• [Expand All]: グループのメンバーを展開してすべて表示します。

• [Group by Type]: オブジェク ト をタイプ別または追加した順番に表示します。

• [Add selected objects]: 選択したオブジェク ト を [Scratch Pad] ウ ィンド ウに追加します。

• [Remove selected objects]: 選択したオブジェク ト を [Scratch Pad] ウ ィンド ウから削除します。

[Scratch Pad] ウィンドウのポップアップ メニュー

[Scratch Pad] ウ ィンド ウを右ク リ ッ クする と、 次のポップアップ メニューコマンドが表示されます。

• [Clear Scratch Pad]: [Scratch Pad] ウ ィンド ウの内容を削除します。

• [Add Objects to Scratch Pad]: 未接続、 未配置、 未配線のオブジェク ト を [Scratch Pad] ウ ィンド ウに追加します。

• [Select Array Elements]: 1 つのエレ メン トが選択されている場合に、 配列内のすべてのエレ メン ト を選択します。

• [Clone]: 選択したオブジェク トのコピーを作成します。

• [Connect Net to Output Port]: [Connect Net to Output Port] ダイアログ ボッ クスを開き、 選択したネッ ト を外部ポー

トに接続できるよ うにします。 詳細は、 図 3-56 を参照してください。

• [Elide Setting]: [Object Name] 列に収まらない長いオブジェク ト名のどの部分を切り捨てるか指定します。 [Left] (

左)、 [Middle] (中央)、 [Right] (右) のいずれかを選択します。

• [Object Properties]: [Object Properties] ダイアログ ボッ クスを開きます。

• [Report Net Route Status]: 選択したネッ トの配線ステータスをレポート します。

• [Select Driver Pin]: 選択したネッ トのド ライバー ピンを選択します。

• [Unplace]: 選択した I/O ポートの配置を解除します。

• [Configure I/O Ports]: 選択した I/O ポートのプロパティを指定します。

• [Split Diff Pair]: 選択したポートから差動ペアの関連付けを削除します。

• [Auto-place I/O Ports]: Autoplace I/O Ports ウ ィザードを使用して I/O ポート を配置します。

• [Place I/O Ports in Area]: 現在選択されているポート を指定したエリ アのピンに割り当てます。

• [Place I/O Ports Sequentially]: 現在選択されているポート をそれぞれパッケージ ピンに割り当てます。

• [Fix Ports]: 選択した配置済み I/O ポート を固定します。

• [Unfix Ports]: 選択した配置済み I/O ポートの固定を解除します。

• [Floorplanning]: 選択したセルを Pblock に割り当てます。

• [Highlight Leaf Cells]: 選択したセルのプリ ミ ティブ ロジッ クをハイライ ト します。

• [Unhighlight Leaf Cells]: 選択したセルのプリ ミ ティブ ロジッ クのハイライ ト を解除します。

• [Delete]: 選択したオブジェク ト を削除します。

• [Highlight]: 選択したオブジェク ト をハイライ ト します。

• [Unhighlight]: 選択したオブジェク トのハイライ ト を解除します。

インプリ メンテーシ ョ ン 152UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 153: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

• [Mark]: 選択したオブジェク ト をマークします。

• [Unmark]: 選択したオブジェク トのマークを削除します。

• [Schematic]: 選択したオブジェク トから回路図を作成します。

• [Show Connectivity]: 選択したオブジェク トの接続を表示します。

• [Find]: [Find] ダイアログ ボッ クスが開き、 Tcl プロパティおよびオブジェク トに基づく フ ィルターを使用して作

業中のデザインまたはデバイスに含まれるオブジェク ト を検索できます。

• [Export to Spreadsheet]: [Scratch Pad] ウ ィンド ウの内容を Microsoft Excel スプレッ ドシートに書き出します。X-Ref Target - Figure 3-56

図 3-56: [Connect Net to Output Port] ダイアログ ボックス

インプリ メンテーシ ョ ン 153UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 154: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

第 3 章: インプリ メンテーシ ョ ン結果の解析と表示

[Schematic] ウィンドウ

ネッ ト リ ス トが変更される とすぐに、 論理的な変更が回路図に反映されます。 次の図は、 図 3-56 に示すネッ ト リ ス

トの変更に基づいてアップデート された回路図です。

ヒン ト : [Mark Objects] および [Highlights Objects] コマンドを使用する と、 ネッ ト リ ス トに加えた変更を回路図のオブ

ジェク トで確認できます。

X-Ref Target - Figure 3-57

図 3-57: [Schematic] ウィンドウ

インプリ メンテーシ ョ ン 154UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 155: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 A

リモート ホストおよび LSF の使用

リモート Linux ホストでの run の実行

概要

ザイ リ ンクス Vivado® IDE では、 複数の Linux ホス トで同時に合成およびインプリ メンテーシ ョ ン run を実行できま

す。 これには、 LSF (Load Sharing Facility) を使用するか、 手動でホス ト を設定します。

LSF を使用した リモート ホス トの設定方法は、 157 ページの 「LSF を使用した リモート ホス トの設定」 を参照して

ください。

リモート ホス ト を手動で設定する方法は、 159 ページの 「リモート ホス トの手動設定」 を参照してください。

LSF について

LSF は、 ク ラスターの複数の計算サーバー間でバッチ ジ ョブを投入、 スケジュール、 実行、 監視、 ワークロード制

御するためのサブシステムです。 LSF を介して Vivado Design Suite で合成 run およびインプリ メンテーシ ョ ンを実行

するには、 bsub コマンドを使用します。

Linux およびリモート ホストのサポート

Microsoft Windows システムにはリモート シェル機能がなく、 Linux の方がセキュ リティ機能が優れている という こ

とから、 リモート ホス トは Linux でのみサポート されます。

ジ ョブ投入アルゴリズムと SSH

ジ ョブ投入アルゴ リズムは、 Linux OS のサービスであるセキュア シェル (SSH) 内の Tcl パイプを使用したラウンド

ロビン形式でインプ リ メン ト されています。

推奨: Vivado IDE で手動で設定して複数の Linux ホス トで run を実行する前に、 リモート run を実行するたびにパス

ワードを入力しなくて済むよ うに SSH を設定する必要があ り ます。

SSH の設定方法は、 161 ページの 「SSH の設定」 を参照して ください。

インプリ メンテーシ ョ ン 155UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 156: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 A: リモート ホストおよび LSF の使用

リモート ホストの実行要件

リモート Linux ホス トで合成およびインプリ メンテーシ ョ ン run を実行する際の要件は、 次のとおりです。

• Vivado ツールのインス トールをログイン シェルから使用できるよ うにするため、 $XILINX_VIVADO および

$PATH 環境変数を .cshrc/.bashrc セッ ト アップ スク リプ トで正し く設定する必要があ り ます。

手動設定では、 ログイン時に .cshrc または .bashrc で Vivado が設定されていない場合、 [Run pre-launch script] を使

用して、 環境設定スク リプ ト をすべてのジ ョブ前に実行できます。

• Vivado IDE のインス トールがリモート マシンの割り当てられたネッ ト ワークから表示できるよ うにする必要が

あ り ます。 Vivado IDE がマシンのローカル ディ スクにインス トールされている場合は、 リモート マシンからは

表示できない可能性があ り ます。

• Vivado IDE のプロジェク ト ファ イル (.xpr) およびディ レク ト リ (.dita および .runs) が、 リモート マシンの

割り当てられたネッ ト ワークから表示できるよ うにする必要があ り ます。 デザイン データがローカル ディ スク

に保存されている と、 リモート マシンからは表示できない可能性があ り ます。

インプリ メンテーシ ョ ン 156UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 157: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 A: リモート ホストおよび LSF の使用

LSF を使用したリモート ホストの設定

LSF 設定を使用して リモート Linux ホス トで合成またはインプ リ メンテーシ ョ ンを実行できるよ うに Vivado IDE を設

定するには、 次の手順に従います。

1. 次のいずれかを実行します。

° メ イン メニューから [Tools] → [Settings] をク リ ッ ク し、 左側のペインで [Remote Hosts] をク リ ッ ク します。

° [Launch Runs] ダイアログ ボッ クスで [Configure LSF] をク リ ッ ク します。

° Create New Runs ウ ィザードの [Launch Options] ページで [Configure LSF] をク リ ッ ク します。

図 A-1 に、 Create New Runs ウ ィザードの [Launch Options] ページで LSF を使用するため [Launch runs using LSF] オプ

シ ョ ンをオンにしたと ころを示します。

X-Ref Target - Figure A-1

図 A-1: Create New Runs ウィザードの [Launch Options] ページでの LSF の設定

インプリ メンテーシ ョ ン 157UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 158: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 A: リモート ホストおよび LSF の使用

2. [Settings] ダイアログ ボッ クスの [Remote Hosts] ページが開きます (図 A-2)。[LSF Configuration] をク リ ッ ク します。

3. (オプシ ョ ン) [Command line] で bsub コマンドのオプシ ョ ンを変更します。

デフォルト コマンドは次のとおりです。

bsub -R select[type=X86_64] -N -q medium

4. (オプシ ョ ン) [Test Connection] をク リ ッ ク して LSF への接続をテス ト します。

これによ り、 特別な bsub プロシージャが実行され、 次が確認されます。

- Vivado が LSF を介してジ ョブを投入できる。

- リモート ホス トが runs ディ レク ト リにアクセスできる。

注記: run をキャンセルする と、 通常は Vivado ツールから bkill コマンドがジ ョブ ID と共に送信されます。 これが

実行されない場合は、 コマンド ラインから手動で run をキャンセルできます。 「bkill <jobID>」 と入力します。

X-Ref Target - Figure A-2

図 A-2: [Settings] ダイアログ ボックスの [Remote Hosts] ページ

インプリ メンテーシ ョ ン 158UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 159: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 A: リモート ホストおよび LSF の使用

リモート ホストの手動設定

リモート Linux ホス トで合成またはインプリ メンテーシ ョ ンを実行できるよ うに Vivado IDE を設定するには、次の手

順に従います。

1. 次のいずれかを実行します。

° メ イン メニューから [Tools] → [Settings] をク リ ッ ク し、 左側のペインで [Remote Hosts] をク リ ッ ク します。

° [Launch Runs] ダイアログ ボッ クスで [Configure Hosts] をク リ ッ ク します。

° Create New Runs ウ ィザードの [Launch Options] ページで [Configure Hosts] をク リ ッ ク します。

図 A-3 に、[Launch Runs] ダイアログボ ッ クスで [Launch runs on remote hosts] オプシ ョ ンをオンにしたと ころを示

します。

X-Ref Target - Figure A-3

図 A-3: [Launch Selected Runs] ダイアログ ボックスでのリモートホストの設定

インプリ メンテーシ ョ ン 159UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 160: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 A: リモート ホストおよび LSF の使用

2. [Settings] ダイアログ ボッ クスの [Remote Hosts] ページが開きます (図 A-4)。[Manual Configuration] をク リ ッ ク し、

現在定義されている リモート Linux ホス ト を表示します。

3. [Add] ボタンをク リ ッ ク し、 リモート サーバー名を入力します。

4. [Jobs] 列で、 リモート マシンで同時実行に使用できるプロセッサの数を指定します。 各 run は個別のプロセッサ

で実行されます。

5. [Enabled] チェッ ク ボッ クスをオン/オフにして、 サーバーを使用するかど うかを指定します。 このチェッ ク ボッ

クスで、 選択した run にどのサーバーを使用するかを指定できます。

6. (オプシ ョ ン) [Launch jobs with] で run を実行する際に使用する リモート アクセス コマンドを変更します。デフォ

ルト コマンドは次のとおりです。

ssh -q -o BatchMode=yes

重要: このフ ィールドを変更する場合は、 細心の注意を払ってください。 たとえば、 BatchMode=yes を削除する と、

セキュア シェルでパスワードのプロンプ トが表示されるため、 プロセスが停止していまいます。

7. (オプシ ョ ン) [Run pre-launch script] をオンにして、 run の実行前に実行するスク リプ ト を定義します。 ログイン

時に Vivado IDE が設定されない場合、 このオプシ ョ ンを使用してホス ト環境を設定するスク リプ ト を実行でき

ます。

X-Ref Target - Figure A-4

図 A-4: リモート ホストの設定

インプリ メンテーシ ョ ン 160UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 161: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 A: リモート ホストおよび LSF の使用

8. (オプシ ョ ン) [Run post-completion script] をオンにして、 結果を移動またはコピーするなど、 run の完了後に実行

するカスタム スク リプ ト を定義します。

9. (オプシ ョ ン) [Send email to] をオンにし、 run の完了時に電子メールが送信されるよ うにします。 各ジ ョブの後に

通知を送信するか ([After each Job])、すべてのジ ョブの完了後に通知を送信するか ([After all jobs]) を選択できます。

10. 設定が終了したら、 [OK] をク リ ッ ク します。

11. 1 つまたは複数のホス ト を選択し、 [Test] をク リ ッ ク します。

サーバーが使用可能かど うか、 設定が正しいかど うかが確認されます。

推奨: ホス トで run を実行する前に、 各ホス ト をテス ト して正し く設定されているこ とを確認してください。

リモート ホストの削除

リモート ホス ト を削除するには、 右ク リ ッ ク して [Remove] をク リ ッ ク します。

SSH の設定

SSH は、 Linux ターミナルまたはシェルで次のコマンドを入力して設定します。

注記: これは一度設定しておけば、 繰り返し設定する必要はあ り ません。

1. Linux ターミナルまたはシェルで次のコマンドを実行し、 プライマ リ コンピューターで公開キーを生成します。

必須ではあ り ませんが、 セキュ リ ティ保護のため、 秘密キーを入力し、 記憶しておく こ とをお勧めします。

ssh-keygen -t rsa

2. 公開キーを リモート マシンの authorized_keys ファ イルに追加します。 remote_server をホス ト名に変更

します。

cat ~/.ssh/id_rsa.pub | ssh remote_server “cat - >> ~/.ssh/authorized_keys”

3. 次のコマンドを実行して秘密キー パス フレーズを入力し、 キー転送を有効にします。

ssh-add

これで、 どのリモート マシンでもパスワードを入力せずに使用できます。 新しいマシンに初めてアクセスする場合

は、 パスワードを入力するよ う求められますが、 次回からは入力する必要はあ り ません。

ヒン ト : 毎回パスワードの入力を求められる場合は、 システム管理者に連絡してください。

インプリ メンテーシ ョ ン 161UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 162: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

インプリ メンテーシ ョ ン 162UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.com

付録 B

ISE コマンド と Vivado コマンドの対照表

Tcl コマンド とオプシ ョ ン

Vivado® インプリ メンテーシ ョ ンには、 ISE® ツール コマンドに対応するコマンド ライン オプシ ョ ンがいくつかあ り

ます。

表 B-1 に、 ISE ツール コマンド ライン オプシ ョ ンと、 同等の Vivado Design Suite Tcl コマンドおよび Tcl コマンド オ

プシ ョ ンを示します。 Tcl コマンドの詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参

照 18] を参照するか、 「<command> -help」 と入力してください。

表 B-1: ISE コマンド と Vivado コマンドの対照表

ISE コマンド Vivado Tcl コマンド とオプシ ョ ン

ngdbuild -p partname link_design -part partname

ngdbuild -a (パッ ドを挿入) synth_design -mode out_of_context (バッファーを挿入

しない)

ngdbuild -u (未展開のブロ ッ クを許可) デフォルトでイネーブル、 ク リ ティカル警告メ ッセージを表示

ngdbuild -quiet link_design -quiet

map -detail opt_design -verbose

map -lc auto place_design でデフォルトでイネーブル

map -logic_opt opt_design および phys_opt_design

map -mt place_design を自動的にマルチスレッ ドで実行 (7 ページの

「Vivado ツールでのマルチスレッ ド」 を参照)

map -ntd place_design -non_timing_driven

map -power power_opt_design

map -u link_design -mode out_of_context、 opt_design

-retarget (定数の伝搬をスキップしてスイープ)

par -mt route_design を自動的にマルチスレッ ドで実行(7 ページの

「Vivado ツールでのマルチスレッ ド」 を参照)

par -k route_design を常に再配線モードで実行

par -nopad Vivado ツールでは -nopad の動作がデフォルト (PAR で生成さ

れていた PAD ファ イルを取得するには report_io コマンドを

使用)

par -ntd route_design -no_timing_driven

UG904 (v2017.4) 2017 年 12 月 20 日

Page 163: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 C

インプリ メンテーシ ョ ンのカテゴリ、 ス トラテジの説明、 および -directive の値

インプリ メンテーシ ョ ンのカテゴリI

インプリ メンテーシ ョ ン スト ラテジの説明

表 C-1: インプリ メンテーシ ョ ンのカテゴリ

カテゴリ 目的

Performance (パフォーマンス) デザイン パフォーマンスを向上します。

Area (エリア) LUT 数を削減します。

Power (消費電力) 消費電力 適化を実行します。

Flow (フロー ) フロー手順を変更します。

Congestion (密集) 密集および関連の問題を低減します。

表 C-2: インプリ メンテーシ ョ ン スト ラテジの説明

インプリ メンテーシ ョ ン スト ラテジ名 説明

Vivado® Implementation Defaults 適度な実行時間でタイ ミ ング ク ロージャが満たされるよ うにします。

Performance_Explore 結果を向上するため、 適化、 配置、 配線に複数のアルゴ リズムを使用します。

Performance_

ExplorePostRoutePhysOptPeformance_Explore と同様ですが、 さ らに改善できるよ うに配線後に物理 適

化 (phys_opt_design) を追加します。

Performance_WLBlockPlacement ブロ ッ ク RAM および DSP の配置の際にタイ ミ ング制約を無視してワイヤ長を

代わりに使用します。

Performance_

WLBlockPlacementFanoutOptブロ ッ ク RAM および DSP を配置する際にタイ ミ ング制約を無視してワイヤ長

を使用し、 ファンアウ トの大きいド ライバーの複製を積極的に実行します。

Performance_EarlyBlockPlacement グローバル配置の初期段階でブロッ ク RAM および DSP の配置を確定します。

Performance_NetDelay_high 良く見積もられた遅延を補正するため、 距離の長いファンアウ トの大きい接続

の遅延コス ト を増加します。 Performance_NetDelay_high では増加量が 大にな

り ます。

Performance_NetDelay_low 良く見積もられた遅延を補正するため、 距離の長いファンアウ トの大きい接続

の遅延コス ト を増加します。 Performance_NetDelay_low では増加量が 小にな

り ます。

インプリ メンテーシ ョ ン 163UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 164: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 C: インプリ メンテーシ ョ ンのカテゴリ、 ス ト ラテジの説明、 および -directive の値

Performance_Retiming phys_opt_design のリ タイ ミ ングに加えて、 追加の配置 適化を実行し、 配

線遅延コス ト を大き く します。

Performance_ExtraTimingOpt タイ ミ ング ド リブンの 適化を追加で実行し、 全体的なタイ ミ ング スラ ッ クを

改善する可能性を広げます。

Performance_RefinePlacement 配置後の 適化のエフォート を増加し、 配線でのタイ ミ ングの緩和をディ ス

エーブルにします。

Performance_SpreadSSL SSI デバイスの配置バリエーシ ョ ン (SLR をまたぐ部分を横方向に分散する傾向

あ り )。

Performance_BalanceSSL SSI デバイスの配置バリエーシ ョ ン (SLR 境界をまたぐ場合が多くなる )。

Congestion_SpreadLogic_high デバイス全体にロジッ クを分散し、 密集した領域が作成されないよ うにします。

high 設定では、 分散度が 高になり ます。

Congestion_SpreadLogic_

mediumデバイス全体にロジッ クを分散し、 密集した領域が作成されないよ うにします。

medium 設定では、 分散度が中程度になり ます。

Congestion_SpreadLogic_low デバイス全体にロジッ クを分散し、 密集した領域が作成されないよ うにします。

low 設定では、 分散度が 低になり ます。

Congestion_SpreadLogic_

ExploreCongestion_SpreadLogic_high と同様ですが、 配線の -directive オプ

シ ョ ンに Explore を使用します。

Congestion_SSI_SpreadLogic_high SSI デバイス用のス ト ラテジで、 デバイス全体にロジッ クを分散し、 密集した

領域が作成されないよ うにします。 high 設定では、 分散度が 高になり ます。

Congestion_SSI_SpreadLogic_low SSI デバイス用のス ト ラテジで、 デバイス全体にロジッ クを分散し、 密集した

領域が作成されないよ うにします。 low 設定では、 分散度が 低になり ます。

Congestion_SSI_SpreadLogic_

ExploreCongestion_SSI_SpreadLogic_high と同様ですが、 配線のために

-directive オプシ ョ ンに Explore を使用します。

Area_Explore LUT 数を削減するため、 複数の 適化アルゴ リズムを使用します。

Area_ExploreSequential Area_Explore と同様ですが、 シーケンシャル セルに 適化を追加します。

Area_ExploreWithRemap Area_Explore と同様ですが、 リマップ 適化を追加してロジッ ク レベルを

圧縮します。

Power_DefaultOpt 消費電力を削減するため、 消費電力 適化 (power_opt_design) を実行します。

Power_ExploreArea シーケンシャル エリ ア 適化と消費電力 適化 (power_opt_design) を組み

合わせ、 消費電力を削減します。

Flow_RunPhysOpt Vivado Implementation Defaults と同様ですが、 物理 適化 (phys_opt_design)

を実行します。

Flow_RunPostRoutePhysOpt Flow_RunPhysOpt と同様ですが、 配線後の物理 適化段階を -directive

Explore オプシ ョ ンで実行します。

Flow_RuntimeOptimized 各インプリ メンテーシ ョ ン段階で、 デザイン パフォーマンスよ り も実行時間を

短縮するこ とを優先します。 物理 適化 (phys_opt_design) はディ スエーブ

ルになり ます。

Flow_Quick 実行時間をできるだけ短く します。 タイ ミ ング ド リブンの処理はすべてディ ス

エーブルになり ます。 使用率を見積もる際に有益です。

表 C-2: インプリ メンテーシ ョ ン スト ラテジの説明 (続き)

インプリ メンテーシ ョ ン スト ラテジ名 説明

インプリ メンテーシ ョ ン 164UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 165: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 C: インプリ メンテーシ ョ ンのカテゴリ、 ス ト ラテジの説明、 および -directive の値

インプリ メンテーシ ョ ン スト ラテジで使用される opt_design および place_design の -directive の値

表 C-3: インプリ メンテーシ ョ ン スト ラテジで使用される opt_design および place_design の -directive の値

スト ラテジ opt_design -directive place_design -directive

Performance_Explore Explore Explore

Performance_ExplorePostRoutePhysOpt Explore Explore

Performance_WLBlockPlacement Default WLDrivenBlockPlacement

Performance_WLBlockPlacementFanoutOpt Default WLDrivenBlockPlacement

Performance_EarlyBlockPlacement Default EarlyBlockPlacement

Performance_NetDelay_high Default ExtraNetDelay_high

Performance_NetDelay_low Default ExtraNetDelay_low

Performance_Retiming Default ExtraPostPlacementOpt

Performance_ExtraTimingOpt Default ExtraTimingOpt

Performance_RefinePlacement Default ExtraPostPlacementOpt

Performance_SpreadSLLs Default SSI_SpreadSLLs

Performance_BalanceSLLs Default SSI_BalanceSLLs

Congestion_SpreadLogic_high Default AltSpreadLogic_high

Congestion_SpreadLogic_medium Default AltSpreadLogic_medium

Congestion_SpreadLogic_low Default AltSpreadLogic_low

Congestion_SpreadLogic_Explore Default AltSpreadLogic_high

Congestion_SSI_Spreadlogic_high Default SSI_SpreadLogic_high

Congestion_SSI_Spreadlogic_low Default SSI_SpreadLogic_low

Congestion_SSI_Spreadlogic_Explore Default SSI_SpreadLogic_high

Area_Explore ExploreArea Default

Area_ExploreSequential ExploreSequentialArea Default

Area_ExploreWithRemap ExploreWithRemap Default

Power_DefaultOpts Default Default

Power_ExploreArea ExploreSequentialArea Default

Flow_RunPhysOpt Default Default

Flow_RunPostRoutePhysOpt Default Default

Flow_RuntimeOptimized RuntimeOptimized RuntimeOptimized

Flow_Quick RuntimeOptimized Quick

インプリ メンテーシ ョ ン 165UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 166: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 C: インプリ メンテーシ ョ ンのカテゴリ、 ス ト ラテジの説明、 および -directive の値

インプリ メンテーシ ョ ン スト ラテジで使用される phys_opt_design および route_design の -directive の値

表 C-4: インプリ メンテーシ ョ ン スト ラテジで使用される phys_opt_design および route_design の -directive の値

スト ラテジ phys_opt_design -directive route_design -directive

Performance_Explore Explore Explore

Performance_ExplorePostRoutePhysOpt Explorea Explore

Performance_WLBlockPlacement AlternateReplication Explore

Performance_WLBlockPlacementFanoutOpt AggressiveFanoutOpt Explore

Performance_EarlyBlockPlacement Explore Explore

Performance_NetDelay_high AggressiveExplore Explore

Performance_NetDelay_low AggressiveExplore Explore

Performance_Retiming AlternateFlowWithRetiming Explore

Performance_ExtraTimingOpt Explore Explore

Performance_RefinePlacement Default NoTimingRelaxation

Performance_SpreadSLLs Explore Explore

Performance_BalanceSLLs Explore Explore

Congestion_SpreadLogic_high AggressiveExplore AlternateCLBRouting

Congestion_SpreadLogic_medium Explore AlternateCLBRouting

Congestion_SpreadLogic_low Explore AlternateCLBRouting

Congestion_SpreadLogic_Explore AggressiveExplore Explore

Congestion_SSI_SpreadLogic_high AggressiveExplore AlternateCLBRouting

Congestion_SSI_SpreadLogic_low Explore AlternateCLBRouting

Congestion_SSI_SpreadLogic_Explore AggressiveExplore Explore

Area_Explore ディ スエーブル Default

Area_ExploreSequential ディ スエーブル Default

Area_ExploreWithRemap ディ スエーブル Default

Power_DefaultOpts ディ スエーブル Default

Power_ExploreArea ディ スエーブル Default

Flow_RunPhysOpt Explore Default

Flow_RunPostRoutePhysOpt Explorea Default

Flow_RuntimeOptimized ディ スエーブル RuntimeOptimized

Flow_Quick ディ スエーブル Quick

a. Explore は配置後および配線後の phys_opt_design 両方に適用されます。

インプリ メンテーシ ョ ン 166UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 167: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 C: インプリ メンテーシ ョ ンのカテゴリ、 ス ト ラテジの説明、 および -directive の値

特定リ リースのスト ラテジの表示

開いている Vivado プロジェク トで list_property_value コマンドを使用する と、 特定のリ リースの合成および

インプリ メンテーシ ョ ン ス ト ラテジを リ ス トできます。 次は、 合成 run synth_1 と インプリ メンテーシ ョ ン run

impl_1 を含む Vivado バージ ョ ン 2017.3 プロジェク ト を使用した例です。

Vivado% join [list_property_value strategy [get_runs synth_1] ] \nVivado Synthesis DefaultsFlow_AreaOptimized_highFlow_AreaOptimized_mediumFlow_AreaMultThresholdDSPFlow_AlternateRoutabilityFlow_PerfOptimized_highFlow_PerfThresholdCarryFlow_RuntimeOptimized

Vivado% join [list_property_value strategy [get_runs impl_1] ] \nVivado Implementation DefaultsPerformance_ExplorePerformance_ExplorePostRoutePhysOptPerformance_WLBlockPlacementPerformance_WLBlockPlacementFanoutOptPerformance_EarlyBlockPlacementPerformance_NetDelay_highPerformance_NetDelay_lowPerformance_RetimingPerformance_ExtraTimingOptPerformance_RefinePlacementPerformance_SpreadSLLsPerformance_BalanceSLLsCongestion_SpreadLogic_highCongestion_SpreadLogic_mediumCongestion_SpreadLogic_lowCongestion_SpreadLogic_ExploreCongestion_SSI_SpreadLogic_highCongestion_SSI_SpreadLogic_lowCongestion_SSI_SpreadLogic_ExploreArea_ExploreArea_ExploreSequentialArea_ExploreWithRemapPower_DefaultOptPower_ExploreAreaFlow_RunPhysOptFlow_RunPostRoutePhysOptFlow_RuntimeOptimizedFlow_Quick

ス ト ラテジのリ ス トには、 ユーザー定義のス ト ラテジも含まれます。

インプリ メンテーシ ョ ン 167UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 168: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 C: インプリ メンテーシ ョ ンのカテゴリ、 ス ト ラテジの説明、 および -directive の値

特定リ リースの -directive 値の表示

特定のリ リースで使用可能なコマンドの -directive の値を リ ス トできます。 これには、 Tcl を使用して run のプロ

パティを リ ス ト します。 各デザイン run には、 デザイン run の各段階に対応するプロパティが含まれています。

STEPS.<STEP>_DESIGN.ARGS.DIRECTIVE

<STEP> には、 SYNTH、 OPT、 PLACE、 PHYS_OPT、 または ROUTE のいずれかを指定します。 このプロパティは列

挙型であ り、 list_property_value を使用してサポート されるすべての値を返すこ とができます。 次に例を示

します。

Vivado% list_property_value STEPS.SYNTH_DESIGN.ARGS.DIRECTIVE [get_runs synth_1]RuntimeOptimizedAreaOptimized_highAreaOptimized_mediumAlternateRoutabilityAreaMapLargeShiftRegToBRAMAreaMultThresholdDSPFewerCarryChainsDefault

次の Tcl では、 一時的な空のプロジェク ト を使用して、 合成およびインプ リ メンテーシ ョ ン コマンドの

-directive のモードを リ ス トする方法を示します。

create_project p1 -force -part xcku035-fbva900-2-e

#get synth_design directivesset steps [list synth]set run [get_runs synth_1]foreach s $steps {puts "${s}_design Directives:"set dirs [list_property_value STEPS.${s}_DESIGN.ARGS.DIRECTIVE $run]set dirs [regsub -all {\s} $dirs \n]puts "$dirs\n"

}

#get impl directivesset steps [list opt place phys_opt route]set run [get_runs impl_1]foreach s $steps {puts "${s}_design Directives:"set dirs [list_property_value STEPS.${s}_DESIGN.ARGS.DIRECTIVE $run]set dirs [regsub -all {\s} $dirs \n]puts "$dirs\n"

}close_project -delete

インプリ メンテーシ ョ ン 168UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 169: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 D

その他のリソースおよび法的通知

ザイリンクス リソース

アンサー、 資料、 ダウンロード、 フォーラムなどのサポート リ ソースは、 ザイ リ ンクス サポート サイ ト を参照して

ください。

ソリューシ ョ ン センター

デバイス、 ツール、 IP のサポートについては、 ザイ リ ンクス ソ リ ューシ ョ ン センターを参照して ください。 デザイ

ン アシスタン ト 、 デザイン アドバイザリ、 ト ラブルシューティングのヒン ト などが含まれます。

Documentation Navigator およびデザイン ハブ

Xilinx Documentation Navigator (DocNav) を使用する とザイ リ ンクスの資料、 ビデオ、 およびサポート リ ソースにアク

セスして情報をフィルター、 検索できます。 Xilinx Documentation Navigator を開くには、 次のいずれかを実行します。

• Vivado IDE で [Help] → [Documentation and Tutorials] をク リ ッ ク します。

• Windows で [スタート ] → [すべてのプログラム] → [Xilinx Design Tools] → [DocNav] をク リ ッ ク します。

• Linux コマンド プロンプ トに 「docnav」 と入力します。

ザイ リ ンクス デザイン ハブには、 資料やビデオへのリ ンクがデザイン タスクおよびト ピッ クごとにま とめられてお

り、 これらを参照するこ とでキー コンセプ ト を学び、 よ く ある質問を解決できます。 デザイン ハブにアクセスする

には、 次のいずれかを実行します。

• Xilinx Documentation Navigator で [Design Hubs View] タブをク リ ッ ク します。

• ザイ リ ンクス ウェブサイ トのデザイン ハブ ページを参照します。

注記: Documentation Navigator の詳細は、 ザイ リ ンクス ウェブサイ トの Documentation Navigator ページを参照してく

ださい。

注意: Xilinx Documentation Navigator からは日本語版は参照できません。 ウェブサイ トのデザイン ハブ ページの一部

は翻訳されており、 日本語版が提供されている場合はそのリ ンク も追加されています。

インプリ メンテーシ ョ ン 169UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 170: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 D: その他のリソースおよび法的通知

参考資料

注記: 日本語版のバージ ョ ンは、 英語版よ り古い場合があ り ます。

Vivado Design Suite ユーザー ガイド

1. 『Vivado Design Suite ユーザー ガイ ド : デザイン フローの概要』 (UG892)

2. 『Vivado Design Suite ユーザー ガイ ド : 階層デザイン』 (UG905)

3. 『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893)

4. 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』 (UG896)

5. 『Vivado Design Suite ユーザー ガイ ド : Tcl スク リプ ト機能の使用』 (UG894)

6. 『Vivado Design Suite ユーザー ガイ ド : システム レベル デザイン入力』 (UG895)

7. 『Vivado Design Suite ユーザー ガイ ド : IP インテグレーターを使用した IP サブシステムの設計』 (UG994)

8. 『Vivado Design Suite ユーザー ガイ ド : 合成』 (UG901)

9. 『Vivado Design Suite ユーザー ガイ ド : 制約の使用』 (UG903)

10. 『Vivado Design Suite ユーザー ガイ ド : デザイン解析およびクロージャ テクニッ ク』 (UG906)

11. 『Vivado Design Suite ユーザー ガイ ド : 消費電力解析および 適化』 (UG907)

12. 『Vivado Design Suite ユーザー ガイ ド : プログラムおよびデバッグ』 (UG908)

13. 『UltraFast 設計手法ガイ ド (Vivado Design Suite 用)』 (UG949)

14. 『Vivado Design Suite プロパティ リ ファレンス ガイ ド』 (UG912)

15. 『Vivado Design Suite ユーザー ガイ ド : パーシャル リ コンフ ィギュレーシ ョ ン』 (UG909)

その他の Vivado Design Suite 関連の資料

16. 『7 シ リーズ FPGA ク ロ ッキング リ ソース ユーザー ガイ ド』 (UG472: 英語版、 日本語版)

17. 『UltraScale™ アーキテクチャ ク ロ ッキング リ ソース ユーザー ガイ ド』 (UG572: 英語版、 日本語版)

18. 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835)

19. 『ISE から Vivado Design Suite への移行手法ガイ ド』 (UG911)

20. 『Vivado Design Suite チュート リ アル: デザイン フローの概要』 (UG888)

Vivado Design Suite の資料サイ ト

21. Vivado Design Suite の資料

インプリ メンテーシ ョ ン 170UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日

Page 171: Vivado Design Suite - XilinxTcl API を使用すると、すべてのデザイン フローをスクリプト で実行でき、デザイン フローを要件に合わせてカスタマイズできます。

付録 D: その他のリソースおよび法的通知

ト レーニング リソース

ザイ リ ンクスでは、 この資料に含まれるコンセプ ト を説明するさまざまな ト レーニング コースおよび QuickTake ビデ

オを提供しています。 次のリ ンクから関連する ト レーニング リ ソースを参照してください。

1. ト レーニング コース : Vivado Design Suite を使用した FPGA の設計 1

2. ト レーニング コース : Vivado Design Suite を使用した FPGA の設計 2

3. ト レーニング コース : Vivado Design Suite を使用した FPGA の設計 3

4. ト レーニング コース : Vivado Design Suite を使用した FPGA の設計 4

お読みください: 重要な法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同じ ) に開示される情報 (以下 「本情報」 といいます) は、 ザイ リ ンクスの製品を選択および使用するこ とのためにのみ提供されます。 適

用される法律が許容する 大限の範囲で、 (1) 本情報は 「現状有姿」、 およびすべて受領者の責任で (with all faults) とい う状態で提供

され、 ザイ リ ンクスは、 本通知をもって、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますがこれ

らに限られません)、 すべての保証および条件を負わない (否認する ) ものと します。 また、 (2) ザイ リ ンクスは、 本情報 (貴殿または

貴社による本情報の使用を含む) に関係し、 起因し、 関連する、 いかなる種類 ・ 性質の損失または損害についても、 責任を負わな

い (契約上、 不法行為上 (過失の場合を含む)、 その他のいかなる責任の法理によるかを問わない) ものと し、 当該損失または損害に

は、 直接、 間接、 特別、 付随的、 結果的な損失または損害 (第三者が起こした行為の結果被った、 データ、 利益、 業務上の信用の

損失、 その他あらゆる種類の損失や損害を含みます) が含まれるものと し、 それは、 たとえ当該損害や損失が合理的に予見可能で

あったり、 ザイ リ ンクスがそれらの可能性について助言を受けていた場合であったと しても同様です。 ザイ リ ンクスは、 本情報に

含まれるいかなる誤り も訂正する義務を負わず、 本情報または製品仕様のアップデート を貴殿または貴社に知らせる義務も負いま

せん。 事前の書面による同意のない限り、 貴殿または貴社は本情報を再生産、 変更、 頒布、 または公に展示してはなり ません。 一

定の製品は、 ザイ リ ンクスの限定的保証の諸条件に従う こ と となるので、 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンク

スの販売条件を参照してください。 IP コアは、 ザイ リ ンクスが貴殿または貴社に付与したライセンスに含まれる保証と補助的条件

に従う こ とにな り ます。 ザイ リ ンクスの製品は、 フェイルセーフと して、 または、 フェイルセーフの動作を要求するアプリ ケー

シ ョ ンに使用するために、 設計されたり意図されたり していません。 そのよ うな重大なアプリ ケーシ ョ ンにザイ リ ンクスの製品を

使用する場合のリ スク と責任は、 貴殿または貴社が単独で負う ものです。 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンク

スの販売条件を参照してください。

自動車用のアプリケーシ ョ ンの免責条項

オートモーティブ製品 (製品番号に 「XA」 が含まれる ) は、 ISO 26262 自動車用機能安全規格に従った安全コンセプ ト または余剰性

の機能 ( 「セーフティ設計」 ) がない限り、 エアバッグの展開における使用または車両の制御に影響するアプリ ケーシ ョ ン ( 「セー

フティ アプリ ケーシ ョ ン」 ) における使用は保証されていません。 顧客は、 製品を組み込むすべてのシステムについて、 その使用

前または提供前に安全を目的と して十分なテス ト を行う ものと します。 セーフティ設計なしにセーフティ アプリ ケーシ ョ ンで製品

を使用する リ スクはすべて顧客が負い、 製品の責任の制限を規定する適用法令および規則にのみ従う ものと します。

© Copyright 2012-2017 Xilinx, Inc. Xilinx、 Xilinx のロゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 およびこの文書に含

まれるその他の指定されたブランドは、 米国およびその他各国のザイ リ ンクス社の商標です。 すべてのその他の商標は、 それぞれ

の保有者に帰属します。

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの

右下にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 フ ィードバッ クは日本語で

入力可能です。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受

け付けており ません。 あらかじめご了承ください。

インプリ メンテーシ ョ ン 171UG904 (v2017.3) 2017 年 10 月 27 日 japan.xilinx.comUG904 (v2017.4) 2017 年 12 月 20 日


Recommended