1

Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

Vivado Design Suite ユーザー ガイド

制約の使用

UG903 (v2012.3) 2012 年 10 月 16 日

Page 2: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 2UG903 (v2012.3) 2012 年 10 月 16 日

Notice of DisclaimerThe information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of Xilinx products.To the maximum extent permitted by applicable law:(1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort, including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising under, or in connection with, the Materials (including your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage (including loss of data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if such damage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.Xilinx assumes no obligation to correct any errors contained in the Materials or to notify you of updates to the Materials or to product specifications.You may not reproduce, modify, distribute, or publicly display the Materials without prior written consent.Certain products are subject to the terms and conditions of the Limited Warranties which can be viewed at http://www.xilinx.com/warranty.htm; IP cores may be subject to warranty and support terms contained in a license issued to you by Xilinx.Xilinx products are not designed or intended to be fail-safe or for use in any application requiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in Critical Applications:http://www.xilinx.com/warranty.htm#critapps.© Copyright 2012 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Zynq, and other designated brands included herein are trademarks of Xilinx in the United States and other countries.All other trademarks are the property of their respective owners.

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

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、[email protected] までお知らせください。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受け付けており ません。 あらかじめご了承ください。

Page 3: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 3UG903 (v2012.3) 2012 年 10 月 16 日

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

日付 バージョ ン 改訂内容

2012 年 10 月 16 日 2012.3 • マイナーなレイアウ ト 、 フォーマッ ト 、 テキス トの変更

• 一部の図をアップデート

• 第 3 章の図 3-3

• 第 4 章の図 4-1

• 新しい図を追加

• 第 4 章の図 4-4

• 第 4 章の図 4-5

• 第 4 章の図 4-6

• 第 3 章の 「ホールド チェッ ク」 を更新

• 第 3 章の 「ホールド パス要件の例」 のホールド要件を更新

• 第 4 章の 「生成クロ ッ クについて」 を更新

• 第 4 章の 「ユーザー定義の生成クロ ッ ク」 のコード例を更新

• 第 4 章の 「自動的に派生したクロ ッ ク」 のコード例を更新

• 第 4 章の 「ク ロ ッ ク グループ」 に 「また、 [Report Clock Interaction] コマンドを使用して、」 で始まる文を追加

• 第 4 章の 「ユーザー定義の生成クロ ッ ク」 に 「-source オプシ ョ ンではピンまたはポート ネッ ト リ ス ト オブジェク トのみを指定できます。クロ ッ ク オブジェク トは指定できません」 という重要な注記を追加

2012 年 9 月 4 日 2012.2 次を含むマイナーなアップデート

• 文章のマイナーなアップデート

• 図をアップデート

• 30 ページの 「セッ ト アップ パス要件の例」 を編集

• 32 ページの 「ホールド パス要件の例」 を編集

Page 4: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 4UG903 (v2012.3) 2012 年 10 月 16 日

目次

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

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

XDC 制約の入力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

第 2 章 : 制約の入力方法制約の管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

制約の順序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

制約の入力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

合成制約の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

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

第 3 章 : タイ ミ ング解析タイ ミ ング パス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

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

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

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

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

仮想クロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

生成クロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

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

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

I/O 遅延 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

第 5 章 : タイ ミ ング例外小/ 大遅延制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

第 6 章 : XDC の優先順位XDC 制約の順序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

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

第 7 章 : 物理制約制約の適用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

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

I/O 制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

配置制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

配線制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

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

Page 5: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 5UG903 (v2012.3) 2012 年 10 月 16 日

付録 A : その他のリソースザイ リ ンクス リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

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

リ ファレンス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Page 6: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 6UG903 (v2012.3) 2012 年 10 月 16 日

第 1 章

概要Vivado™ 統合設計環境 (IDE) では、 ザイ リ ンクス デザイン制約 (XDC) を使用します。

UCF 制約から XDC 制約への変換ザイ リ ンクス デザイン制約 (XDC) とユーザー制約ファイル (UCF) の制約には、 重要な違いがあ り ます。 XDC は、 業界標準の Synopsys Design Constraints (SDC) フォーマッ トに基づいています。 SDC は 20 年以上も使用され、 向上してきており、 デザイン制約を記述するのに もよ く使用される確立したフォーマッ トです。 UCF に慣れていて XDC を初めて使用する場合は、付録 A 「その他のリ ソース」 のリ ンクから 『Vivado Design Suite 移行手法ガイ ド』 (UG911) の「UCF 制約を XDC に移行」 の章にある 「XDC と UCF 制約の違い」 を参照して ください。 この章には、 XDC 制約を作成する開始点と して既存の UCF ファ イルを XDC に変換する方法が説明されています。

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

XDC 制約についてXDC 制約は、 次を組み合わせたものです。

• 業界標準の Synopsys Design Constraints (SDC)

• ザイ リ ンクス独自の物理制約

XDC には、 次の特徴があ り ます。

• 単純な文字列ではなく、 Tcl のフォーマッ トに従ったコマンドです。

• Vivado Tcl インタープリ ターによ り、 ほかの Tcl コマンド と同様に解釈されます。

• ほかの Tcl コマンド と同様に、 順次読み込まれ、 解析されます。

Page 7: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 7UG903 (v2012.3) 2012 年 10 月 16 日

XDC 制約の入力

XDC 制約の入力XDC 制約は、 フローの異なる段階でいくつかの方法で入力できます。

• 制約を 1 つまたは複数のファイルに保存し、 プロジェク トの制約セッ トに追加できます。

• ファ イルを読み込むには、 read_xdc コマンドを使用します。

• デザインがメモリに読み込まれたら、 Tcl コンソールに制約を直接入力します。

これは、 新しい制約を個別に入力、 検証、 デバッグするのに有益な方法です。

Page 8: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 8UG903 (v2012.3) 2012 年 10 月 16 日

第 2 章

制約の入力方法この章では、 推奨される制約入力フローを示します。

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

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

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

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

図 2-1 「1 つの XDC ファ イルまたは複数の XDC ファ イル」 に、 プロジェク トに制約セッ トが 2 つ含まれている例を示します。

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

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

Page 9: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 9UG903 (v2012.3) 2012 年 10 月 16 日

制約の管理

非プロジェク ト フロー

非プロジェク ト フローで同じ結果を得るには、 コンパイル コマンドを実行する前に各ファ イルをそれぞれ読み込みます。

次に、 合成およびインプリ メンテーシ ョ ンで複数の XDC ファ イルを使用するスク リプ ト例を示します。

スクリプ ト例

read_verilog [glob src/*.v]read_xdc wave_gen_timing.xdcread_xdc wave_gen_pins.xdcsynth_design –top wave_gen opt_designplace_designroute_design

合成またはインプリ メンテーシ ョ ンでの制約ファイルの使用

制約ファイルは、 次のよ うに使用できます。

• 合成のみ

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

• 合成およびインプリ メンテーシ ョ ンの両方

X-Ref Target - Figure 2-1

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

Page 10: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 10UG903 (v2012.3) 2012 年 10 月 16 日

制約の管理

制約ファイルのプロパティを変更して、 その制約ファイルを合成のみに使用するか、 インプ リ メンテーシ ョ ンのみに使用するか、 両方に使用するかを指定します。

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

1. [Sources] ビューで制約ファイルを選択します。

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

a. [Synthesis] をオフ

b. [Implementation] をオン

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

同等の Tcl コマンドは、 次のとおりです。

set_property used_in_synthesis false [get_files wave_gen_pins.xdc]set_property used_in_implementation true [get_files wave_gen_pins.xdc]

プロジェク ト なしで Vivado IDE を実行する場合、 フローのどの段階の間でも制約を直接読み込むこ とができます。

X-Ref Target - Figure 2-2

図 2-2 : [Source File Properties] ビュー

Page 11: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 11UG903 (v2012.3) 2012 年 10 月 16 日

制約の順序

次に、 2 つの XDC ファ イルを読み込む Tcl スク リプ ト例を示します。

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

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

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

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

2. [Tcl Console] または [Messages] ビューメ ッセージを確認します。

推奨される制約の順序

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

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

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

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

まずクロッ ク定義から開始します。 クロ ッ クを作成しないと、 ほかの制約で使用できません。 ク ロ ッ ク定義の前にクロ ッ クを参照する と、 エラーが発生し、 その制約は無視されます。 これは、 1 つの XDC ファ イル内であっても、 デザイン内の複数の XDC ファ イルであっても同様です。

表 2-1 : 2 つの XDC ファイルの読み込み

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

wave_gen_timing.xdc 合成前 • 合成

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

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

Page 12: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 12UG903 (v2012.3) 2012 年 10 月 16 日

制約の順序

XDC ファイルの順序

XDC ファ イルの順序は重要です。 各ファイル内の制約が、 ほかのファ イル内の制約に依存しないよ うにする必要があ り ます。 あるファ イル内の制約がほかのファイル内の制約に依存している場合は、依存する制約を含むファイルを後に読み込む必要があ り ます。 2 つの制約ファイルにお互いのファイル内にある制約に依存する制約が含まれてい

る場合は、 次のいずれかを実行します。

• 2 つのファイルを 1 つにま とめ、 制約を適切な順序に並べ替えます。

• ファ イルを複数のファイルに分割し、 正しい順序で読み込みます。

制約ファイルの順序

プロジェク ト フローでは、制約は制約セッ トに含まれます。エラボレート されたネッ ト リ ス ト または合成済みネッ トリ ス ト を開く と、 制約ファイルは制約セッ トに リ ス ト された順序で読み込まれます。 これは、 Vivado IDE の表示では上から下への順序になり ます。

たとえば、 9 ページの図 2-1 「1 つの XDC ファ イルまたは複数の XDC ファ イル」 で constr_1 に含まれる 2 つの XDCファ イルは、 次の順序で読み込まれます。

読み込み順の変更

読み込み順を変更するには、 次の手順に従います。

1. 移動する XDC ファ イルを選択します。

2. XDC ファ イルをド ラ ッグして、 適切な位置に移動します。

9 ページの図 2-1 「1 つの XDC ファ イルまたは複数の XDC ファ イル」 に示す例では、 Tcl コマンドは次のよ うになります。

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

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

制約ファイルを含むネイティブ IP を使用する場合は、IP の XDC ファ イルはデザインのほかの XDC ファ イルの後に、[IP Sources] タブにリ ス ト される IP の順に読み込まれます。 たとえば、図 2-3 「IP ソースの XDC ファ イル」 ではプロジェク ト IP の 1 つに XDC ファ イルが付属しています。

表 2-2 : 制約ファイルの順序

ファイルの順序 ファイル名 読み込み順

1 番目 wave_gen_timing.xdc 1 番目

2 番目 wave_gen_pins.xdc 2 番目

Page 13: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 13UG903 (v2012.3) 2012 年 10 月 16 日

制約の順序

デザインを開く と、 ログ ファ イルに IP の XDC ファ イルが 後に読み込まれているこ とが示されます。

Parsing XDC File [C:/project_wave_gen.srcs/constrs_2/wave_gen_all.xdc]INFO: [Timing 38-35] Done setting XDC timing constraints.[C:/project_wave_gen.srcs/constrs_2/wave_gen_all.xdc:9]INFO: [Timing 38-2] Deriving generated clocks [C:/project_wave_gen.srcs/constrs_2/wave_gen_all.xdc:9]Finished Parsing XDC File [C:/project_wave_gen.srcs/constrs_2/wave_gen_all.xdc]Parsing XDC File [c:/project_wave_gen.srcs/sources_1/ip/clk_core/clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst'Finished Parsing XDC File [c:/project_wave_gen.srcs/sources_1/ip/clk_core/clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst'

IP の XDC ファ イルの順序を直接変更するこ とはできません。 変更が必要な場合は、 次を実行します。

1. IP の XDC ファ イルをディ スエーブルにします ([Properties] ビューで [Enabled] をオフ)。

2. そのファイルの内容をコピーします。

3. 制約セッ トに含まれる XDC ファ イルのいずれかにコピーした内容を貼り付けます。

4. コピーした IP の XDC 制約で名前を完全な階層パスを含むものに変更します。

X-Ref Target - Figure 2-3

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

Page 14: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 14UG903 (v2012.3) 2012 年 10 月 16 日

制約の入力

制約の順序の編集

Vivado IDE では、 編集した制約は XDC ファ イルの元の位置に保存されます。 新しい制約は、 ターゲッ ト とマーク された制約ファイルの 後に追加されます。 制約セッ トに複数の XDC ファ イルが含まれている場合、 通常ターゲッ ト制約ファイルはリ ス トの 後のファイルではないので、デザインを開いたと きまたは読み込み直したと きに 後に読み込まれるわけではあ り ません。 そのため、ディ スクに保存された制約の順序がメモ リ内での順序と異なってしま う可能性があ り ます。

重要 : 制約ファイルに保存されている 終的な順序が正しいこ とを確認する必要があ り ます。 順序を変更する必要がある場合は、 XDC ファ イルを直接編集します。 これは、 特にタイ ミ ング制約で重要です。

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

メモリ内の制約の保存

編集中の制約を検証するには、 メモ リ内にデザインが読み込まれているこ とが必要です。 Vivado IDE ユーザー インターフェイスを使用して制約を編集する場合は、Tcl コンソールで同等の XDC コマンドが実行され、 メモ リ内にも適用されます ([Timing Constraints] ビューを除く )。

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

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

• [Save Constraints] ボタンをク リ ッ ク します。

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

制約編集フロー

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

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

• 手動で編集

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

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

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

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

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

Page 15: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 15UG903 (v2012.3) 2012 年 10 月 16 日

制約の入力

手動で編集

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

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

• メモ リ内の変更を破棄

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

• XDC ファ イルを上書き

制約の作成は反復作業になり ます。一部にインターフェイス機能を使用し、 ほかの部分は制約ファイルを手動で変更するこ と も可能です。

図 2-4 「制約編集フロー」 に示すフローを実行する と きに、 同時に両方のフローを使用しないでください。

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

X-Ref Target - Figure 2-4

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

Page 16: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 16UG903 (v2012.3) 2012 年 10 月 16 日

制約の入力

ピン割り当て

上位ポート を作成および既存の配置を変更するには、 次の手順に従います。

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

2. 次の表に示すビューを使用して、 ポート を作成または変更します。

ピン割り当ての詳細は、 付録 A 「その他の リ ソース」 の リ ス トから 『Vivado Design Suite ユーザー ガイ ド : I/O およびクロ ッ クの配置』 (UG899) を参照して ください。

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

ク ロ ッ ク ツ リーの配置を表示および変更するには、 次の手順に従います。

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

2. 次の表に示すビューを使用して、 ク ロ ッ ク リ ソースを表示または変更します。

ク ロ ッ ク リ ソース割り当ての詳細は、 付録 A 「その他の リ ソース」 の リ ス トから 『Vivado Design Suite ユーザー ガイ ド : I/O およびクロ ッ クの配置』 (UG899) を参照して ください。

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

ビュー 機能

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

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

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

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

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

ビュー 機能

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

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

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

Page 17: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 17UG903 (v2012.3) 2012 年 10 月 16 日

制約の入力

フロアプラン

Pblock を作成および変更するには、 次の手順に従います。

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

2. 次の表に示すビューを使用して、 Pblock を作成または変更します。

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

1. [Netlist] ビューでセルを選択します。

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

フロアプランの詳細は、 付録 A 「その他のリ ソース」 の リ ス ト から 『Vivado Design Suite ユーザー ガイ ド : デザイン解析およびクロージャ テクニッ ク』 (UG906) を参照して ください。

タイ ミ ング制約

[Timing Constraints] ビューは、合成済みデザインおよびインプリ メン ト済みデザインでのみ使用可能です。エラボレート されたデザインの制約については、 「合成制約の作成」 を参照してください。

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

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

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

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

表 2-5 : Pblock を作成および変更するのに使用するビュー

ビュー 機能

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

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

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

X-Ref Target - Figure 2-5

図 2-5 : [Timing Constraints] ビューを開く方法

Page 18: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 18UG903 (v2012.3) 2012 年 10 月 16 日

制約の入力

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

• XDC ファ イルで記述されているのと同じ順序

• [Tcl Console] ビューで入力したのと同じ順序

制約の表

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

制約の作成にはダイアログ ボッ クスを使用するこ とをお勧めしますが、 表の右側にある [+] ボタンをク リ ッ ク して、表に表示されている制約と同じタイプの制約を作成できます。表に新しい行が追加され、各オプシ ョ ンの値を入力できるよ うにな り ます。

新し く追加した制約が制約の 後に追加されているかど うかは、 [Position] 列の番号で確認できます。

新し く追加した制約は [Apply] をク リ ッ クする と検証され、 メモ リ内のデザインに適用されます。 [Apply] をク リ ッ クする と、 次のよ うにな り ます。

• 適用する前にメモリ内のタイ ミ ング制約がリセッ ト されます。

• 制約は XDC ファ イルには保存されません。

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

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

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

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

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

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

Page 19: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 19UG903 (v2012.3) 2012 年 10 月 16 日

制約の入力

すべての制約

[Timing Constraints] ビューの下部には、 メモリに読み込まれている全制約のリ ス トが適用されている順に表示されます。

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

• 表で制約を変更し、 再適用します。

[Tcl Console] ビューで有効なタイ ミ ング制約を入力する と、 [Timing Constraints] ビューの全制約のリ ス トの 後にすぐに追加されます。

[Timing Constraints] ビューの表で新しい制約を追加した り変更した りする と、 その制約は [Apply] をク リ ッ クするまでメモリに適用されません。

注意 : [Timing Constraints] ビューの表に適用されていない制約がある と きに、[Tcl Console] ビューで新しい制約を入力しないでください。 [Timing Constraints] ビューのリ ス トでの制約の順序と メモリでの制約の順序が異なるものになる可能性があ り ます。 混乱を避けるため、 制約を追加したり変更したら、 必ずすべての制約を適用し直すよ うにしてください。

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

X-Ref Target - Figure 2-6

図 2-6 : [Timing Constraints] ビュー

Page 20: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 20UG903 (v2012.3) 2012 年 10 月 16 日

制約の入力

XDC テンプレート

XDC テンプレートには、 [Language Templates] ビューからアクセスできます。

XDC テンプレートの内容

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

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

° ク ロ ッ ク定義

° ジッ ター

° 入力/出力遅延

° 例外

• 物理制約

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

XDC テンプレートの使用

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

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

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

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

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

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

システム同期およびソース同期 I/O 遅延制約などのアドバンス制約では、 Tcl 変数を使用してデザイン要件を取得し、set_input_delay および set_output_delay 制約で使用します。

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

Page 21: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 21UG903 (v2012.3) 2012 年 10 月 16 日

合成制約の作成

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

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

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

• RTL 属性

• タイ ミ ング制約

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

X-Ref Target - Figure 2-7

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

Page 22: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 22UG903 (v2012.3) 2012 年 10 月 16 日

合成制約の作成

RTL 属性

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

詳細は、 付録 A 「その他の リ ソース」 の リ ス トから 『Vivado Design Suite ユーザー ガイ ド : 合成』 (UG901) を参照して ください。

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

DONT_TOUCH 属性の例

set_property DONT_TOUCH true [get_cells fsm_reg]

タイ ミ ング制約

タイ ミ ング制約は、 XDC ファ イルで合成エンジンに渡す必要があ り ます。 セッ ト アップ解析に関する次の制約のみが、 合成結果に影響します。

• create_clock

• create_generated_clock

• set_input_delay

• set_output_delay

• set_clock_groups

• set_false_path

• set_max_delay

• set_multicycle_path

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

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

RTL ベースの XDC

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

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

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

XDC ファ イルを保存する前に、[Tcl Console] ビューを使用して XDC コマンドの構文を確認してください。エラボレート されたネッ ト リ ス トでは、 タイ ミ ング レポートはサポート されていません。

Page 23: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 23UG903 (v2012.3) 2012 年 10 月 16 日

合成制約の作成

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

• 上位ポート

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

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

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

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

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

• 階層名

X-Ref Target - Figure 2-8

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

Page 24: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 24UG903 (v2012.3) 2012 年 10 月 16 日

合成制約の作成

1 ビッ ト レジスタの名前

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

VHDL での 1 ビッ ト レジスタ名の例

signal wbDataForInputReg : std_logic;

Verilog での 1 ビッ ト レジスタ名の例

reg wbDataForInputReg;

エラボレート されたデザインでの 1 ビッ ト レジスタ名の例

wbDataForInputReg_reg

図 2-9 「エラボレート されたデザインでの 1 ビッ ト レジスタ」 に、 ピンを含むレジスタの回路図を示します。 必要であれば、 XDC コマンドでレジスタのピンを参照するこ と も可能です。

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

デフォルトでは、 RTL 名の後に _reg が付いた名前になり ます。 エラボレート されたデザインでクエ リできない場合でも、 XDC 制約で個々のビッ ト参照できます。

VHDL での複数ビッ ト レジスタ名の例

signal validForEgressFifo : std_logic_vector(13 downto 0);

Verilog での複数ビッ ト レジスタ名の例

reg [13:0] validForEgressFifo;

エラボレート されたデザインでの複数ビッ ト レジスタ名の例

validForEgressFifo_reg

図 2-10 「エラボレート されたデザインでの複数ビッ ト レジスタ」 に、 レジスタの回路図を示します。 ピンは、 見やすくするためベクターと して表示されます。

X-Ref Target - Figure 2-9

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

Page 25: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 25UG903 (v2012.3) 2012 年 10 月 16 日

合成制約の作成

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

• レジスタ ビッ ト 0 のみ

validForEgressFifo[0]

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

validForEgressFifo[*]

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

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

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

階層名

Vivado 合成でデザインの階層を完全に保持するよ う指定しない場合、合成中に一部またはすべての階層がフラ ッ ト化されます。詳細は、付録 A 「その他のリ ソース」 の リ ス ト から 『Vivado Design Suite ユーザー ガイ ド : 合成』 (UG901)を参照して ください。

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

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

RTL のデザイン例

inst_A/inst_B/control_reg

合成中、 このレジスタに特別な 適化は実行されないとする と、 ツール オプシ ョ ンでフラ ッ ト ネッ ト リ ス ト または階層ネッ ト リ ス トのどちらが指定されているかによって、 フラ ッ ト名または階層名が得られます。

フラ ッ ト ネッ ト リス トの例

inst_A/inst_B/control_reg (F)

階層ネッ ト リス トの例

inst_A/inst_B/control_reg (H)

X-Ref Target - Figure 2-10

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

Page 26: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 26UG903 (v2012.3) 2012 年 10 月 16 日

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

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

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

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

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

• RTL デザインに表示されるすべての階層レベルを / を使用して示します。

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

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

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

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

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

詳細は、 付録 A 「その他の リ ソース」 の リ ス ト から 『Vivado Design Suite ユーザー ガイ ド : デザイン解析およびクロージャ テクニッ ク』 (UG906) を参照して ください。

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

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

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

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

インプリ メンテーシ ョ ン制約の作成合成済みネッ ト リ ス トが生成されたら、 インプ リ メンテーシ ョ ンに適用する XDC ファ イルと共にメモ リに読み込みます。 次の目的でタイ ミ ング解析を実行できます。

• タイ ミ ング制約をネッ ト リ ス トの名前で修正し、 インプリ メンテーシ ョ ンのみの XDC ファ イルに保存

• 非同期および排他的なクロ ッ ク グループなどの欠けている制約を追加

• 複数サイクル パスや 大遅延制約などのタイ ミ ングの例外を追加

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

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

Page 27: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 27UG903 (v2012.3) 2012 年 10 月 16 日

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

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

インプ リ メ ンテーシ ョ ンに進む前に、 大きなタ イ ミ ング違反がないこ とを確認する必要があ り ます。 インプ リ メ ンテーシ ョ ンでは、 も ク リ ティカルなパスのセルがお互いに近くに配置され、 速の配線リ ソースが使用されますが、大きい違反は解決できません。

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

詳細は、 付録 A 「その他の リ ソース」 の リ ス トから 『Vivado Design Suite ユーザー ガイ ド : 合成』 (UG901) を参照して ください

X-Ref Target - Figure 2-11

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

Page 28: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 28UG903 (v2012.3) 2012 年 10 月 16 日

第 3 章

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

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

一般的なタイ ミング パス

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Page 29: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 29UG903 (v2012.3) 2012 年 10 月 16 日

タイ ミング パス

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

入力ポートから出力ポート までのパスでは、データが入力ポートからデバイス内でラ ッチされるこ となく出力ポートに伝搬されます。 これらのパスは、 通常 in-to-out データ パス と呼ばれます。 ポート ク ロ ッ ク と しては、 仮想クロ ックまたはデザイン クロ ッ クを使用できます。

パスの例

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

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

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

• ソース クロ ッ ク パス

• データ パス

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

ソース クロック パス

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

データ パス

内部回路では、データ パスはソース シーケンシャル セルとデスティネーシ ョ ン シーケンシャル セルの間のパスです。

• ソース シーケンシャル セルのアクティブ ク ロ ッ ク ピンは、 パスの開始点と呼ばれます。

• デスティネーシ ョ ン シーケンシャル セルのデータ入力ピンは、 パスの終点と呼ばれます。

入力ポート パスでは、 データ パスは入力ポートから開始します。 入力ポートがパスの開始点とな り ます。

出力ポート パスでは、 データ パスは出力ポートで終了します。 出力ポートがパスの終点とな り ます。

X-Ref Target - Figure 3-1

図 3-1 : パスの例

Page 30: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 30UG903 (v2012.3) 2012 年 10 月 16 日

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

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

デスティネーシ ョ ン クロ ッ ク パスは、デスティネーシ ョ ン ク ロ ッ クがソース ポイン ト (通常は入力ポート ) からデスティネーシ ョ ン シーケンシャル セルのクロ ッ ク ピンまで伝搬されるパスです。

出力ポートで終了するタイ ミ ング パスには、 デスティネーシ ョ ン クロ ッ ク パスはあ り ません。

図 3-2 に、 典型的なタイ ミ ング パスのこれら 3 つのセクシ ョ ンを示します。

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

セッ トアップ チェ ック

セッ ト アップ解析で使用するデータ所要時間を算出するため、 タイ ミ ング エンジンは次を実行します。

1. ソース クロ ッ ク とデスティネーシ ョ ン クロ ッ クの共通周期を検出します。共通周期が見つからない場合は、1,000ク ロ ッ ク サイクルまでが解析に使用されます。

2. 開始点クロッ ク と終点クロ ッ クのすべての立ち上がりエッジと立ち下がりエッジを、 共通周期の間調べます。

3. 2 つのアクティブ エッジの 小の正の差を特定します。この差が、セッ ト アップ解析のタイ ミ ング パス要件になり ます。

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

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

• clk0 の周期は 6ns です。

• clk1 の周期は 4ns です。

X-Ref Target - Figure 3-2

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

Page 31: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

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

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

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

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

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

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

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

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

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

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

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

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

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

• デスティネーシ ョ ン セルのセッ ト アップ タイム

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

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

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

• ソース クロ ッ ク遅延

• データパス遅延

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

X-Ref Target - Figure 3-3

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

Page 32: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 32UG903 (v2012.3) 2012 年 10 月 16 日

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

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

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

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

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

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

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

ホールド チェ ック

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

• 前のデスティネーシ ョ ン クロ ッ ク エッジで同じデータが間違って受信されない。

• 次のソース ク ロ ッ ク エッジで送信されたデータがセッ ト アップ解析に使用されるデスティネーシ ョ ン ク ロ ッ クエッジで受信されない。

ホールド解析用のタイ ミ ング パス要件を算出するため、 タイ ミ ング エンジンでセッ ト アップ解析のソース ク ロ ッ クエッジおよびデスティネーシ ョ ン クロ ッ ク エッジの可能な組み合わせすべてが考慮されます。

可能なセッ ト アップ ク ロ ッ ク エッジの組み合わせに対して、 タイ ミ ング エンジンで対応するホールド解析エッジが検証されます。

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

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

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

ホールド パス要件の例

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

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

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

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

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

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

Page 33: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 33UG903 (v2012.3) 2012 年 10 月 16 日

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

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

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

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

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

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

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

• ク ロ ッ クのばらつき

• データパス遅延

• デスティネーシ ョ ン レジスタのホールド タイム

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

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

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

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

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

X-Ref Target - Figure 3-4

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

Page 34: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 34UG903 (v2012.3) 2012 年 10 月 16 日

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

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

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

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

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

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

リカバリ チェ ック

次のものの算出方法を式で示します。

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

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

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

リムーバル チェ ック

次のものの算出方法を式で示します。

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

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

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

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

Page 35: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 35UG903 (v2012.3) 2012 年 10 月 16 日

第 4 章

クロックの定義

クロックについてデジタル デザインでは、 ク ロ ッ クがレジス タから レジス タにデータ を転送するための時間の基準と な り ます。Vivado™ 統合設計環境 (IDE) では、 タイ ミ ング エンジンはクロッ クの特性を使用して次を実行します。

• タイ ミ ング パス要件を算出

• スラ ッ クを算出してデザインのタイ ミ ング マージンをレポート

詳細は、 第 3 章 「タイ ミ ング解析」 を参照して ください。

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

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

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

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

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

図 4-1 の例では、クロ ッ ク Clk0 は周期が 10ns、デューティ サイ クルが 50%、位相シフ トが 0ns になり、ク ロ ッ ク Clk1は周期が 8ns、 デューティ サイ クルが 75%、 位相シフ トが 2ns になり ます。

Clk0: period = 10, waveform = {0 5}Clk1: period = 8, waveform = {2 8}

X-Ref Target - Figure 4-1

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

Page 36: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 36UG903 (v2012.3) 2012 年 10 月 16 日

プライマリ クロック

伝搬されたクロック

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

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

• ク ロ ッ ク ジッター

• 位相エラー

• その他指定したばらつき

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

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

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

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

• MMCM

• PLL

• BUFR

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

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

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

• 入力ポート

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

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

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

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

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

Page 37: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 37UG903 (v2012.3) 2012 年 10 月 16 日

プライマリ クロック

プライマリ クロックの例

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

• 周期 : 10ns

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

• 位相シフ ト : なし

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

対応する XDC :

create_clock –period 10 [get_ports sysclk]

sysclk と同様に、 ボード クロ ッ ク devclk はポート ClkIn からデバイスに入力されます。

• 周期 : 10ns

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

• 位相シフ ト : 90 度

対応する XDC :

create_clock –name devclk –period 10 –waveform {2.5 5} [get_ports ClkIn]

図 4-3 では、 ト ランシーバー gt0 はボード上の高速リ ンクから ク ロ ッ ク rxclk を再生します。 クロ ッ ク rxclk は周期が3.33ns、デューティ サイクルが 50% で、MMCM に入力されます。MMCM は、補正されたクロ ッ クを複数生成します。

GT0 の出力ド ライバー ピン上に rxclk を定義する際、 MMCM で駆動される生成されたクロ ッ クのソース ポイン トはすべて gt0/RXOUTCLK とな り ます。 これらの間のパスのスラ ッ ク算出では、 適切なクロ ッ ク レイテンシおよびばらつきの値が使用されます。

create_clock –name rxclk –period 3.33 [get_pins gt0/RXOUTCLK]

X-Ref Target - Figure 4-2

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

Page 38: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 38UG903 (v2012.3) 2012 年 10 月 16 日

仮想クロック

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

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

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

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

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

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

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

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

create_clock –name clk_virt –period 10

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

X-Ref Target - Figure 4-3

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

Page 39: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 39UG903 (v2012.3) 2012 年 10 月 16 日

生成クロック

生成クロック生成クロッ クには、 次の 2 種類があ り ます。

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

• 自動的に派生したクロッ ク

生成クロックについて

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

生成クロッ クは、マスター クロ ッ クに関連付けられています。次のクロ ッ クをマスター クロ ッ ク と して使用できます。

• プライマ リ クロ ッ ク

• 別の生成クロッ ク

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

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

• 単純な周波数の分周

• 単純な周波数の逓倍

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

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

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

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

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

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

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

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

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

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

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

Page 40: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 40UG903 (v2012.3) 2012 年 10 月 16 日

生成クロック

例 1 : 2 分周

プラ イマ リ ク ロ ッ ク clk1 の周期は 10ns です。 このク ロ ッ クはレジスタ REGA で 2 分周され、 ほかのレジスタのクロッ ク ピンを駆動します。 このクロ ッ クを clkdiv2 と呼びます。

この生成クロッ クを指定する 2 つの例を次に示します。

create_clock –name clkin –period 10 [get_ports clkin]

# Option 1: master clock source is the primary clock source pointcreate_generated_clock –name clkdiv2 –source [get_ports clkin] –divide_by 2 \[get_pins REGA/Q]

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

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

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

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

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

X-Ref Target - Figure 4-4

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

Page 41: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 41UG903 (v2012.3) 2012 年 10 月 16 日

生成クロック

例 3 : –edges および –edge_shift オプシ ョ ンを使用したデューテ ィ サイクルおよび位相シフ トの指定

生成クロッ ク波形の各エッジは、 –edge_shift オプシ ョ ンで正または負の値を指定して、 個別にシフ トできます。

–edge_shift オプシ ョ ンは、 次のオプシ ョ ンと同時に使用するこ とはできません。

• -divide_by

• -multiply_by

• -invert

マスター クロ ッ ク clkin の周期が 10ns、デューティ サイクルが 50% だと します。 このク ロ ッ クはセル mmcm0 に入力され、 このセルによ りデューティ サイ クルが 25% で位相が 90 度シフ ト されたクロ ッ クが生成されます。生成クロ ックの定義には、 マスター ク ロ ッ クのエッジ 1、 2、 および 3 が使用されています。 これらのエッジは、 それぞれ 0ns、5ns、 および 10ns で発生します。 適切な波形を得るには、 1 番目と 3 番目のエッジを 2.5ns シフ ト します。

create_clock –name clkin –period 10 [get_ports clkin]create_generated_clock –name clkshift –source [get_pins mmcm0/CLKIN] –edges {1 2 3} \ -edge_shift {2.5 0 2.5} [get_pins mmcm0/CLKOUT]

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

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

X-Ref Target - Figure 4-5

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

Page 42: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 42UG903 (v2012.3) 2012 年 10 月 16 日

生成クロック

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

Vivado IDE では、 –divide_by と –multiply_by オプシ ョ ンを同時に指定できます。 これは、 標準 SDC のサポート を拡張したものです。 これらのオプシ ョ ンを同時に指定する と、MMCM または PLL インスタンス で生成されたクロッ クを手動で定義する際に便利です。 ただし、 これらの制約はツールで自動的に作成されるよ うにするこ とをお勧めします。

詳細は、 「自動的に派生したクロ ッ ク」 を参照してください。

たとえば、 たとえば、 「例 3 : –edges および –edge_shift オプシ ョ ンを使用したデューティ サイ クルおよび位相シフ トの指定」 の mmcm0 セルでマスター ク ロ ッ クの周波数が 4/3 で逓倍される とする と、 この生成クロ ッ クの定義は次のよ うにな り ます。

create_generated_clock –name clk43 –source [get_pins mmcm0/CLKIN] –multiply_by 4 \ -divide_by 3 [get_pins mmcm0/CLKOUT]

MMCM または PLL の出力に生成クロ ッ ク制約を作成する場合は、波形の定義が MMCM または PLL のコンフ ィギュレーシ ョ ンに一致するこ とを確認して ください。

自動的に派生したクロック

自動的に派生したクロ ッ クは、 自動生成ク ロ ッ ク と も呼ばれます。 関連のマスター ク ロ ッ クが既に定義されていれば、Vivado IDE によ り ク ロ ッ ク調整ブロ ッ ク (CMB) の出力ピンに自動的に制約が作成されます。CMB には、MMCMx、PLLx、 BUFR プリ ミ ティブがあ り ます (MIG IP の PHASER_x を含む)。

同じ定義ポイン ト のネッ ト リ ス ト オブジェク ト (ネッ ト またはピン) に既にユーザー定義ク ロ ッ ク (プラ イマ リ または生成) が定義されている場合は、 ク ロ ッ クは自動生成されません。 自動生成クロ ッ クの名前は、 定義ポイン トに直接接続されているネッ トの名前に基づきます。

自動的に派生したクロッ クの例

次に、 MMCM によ り生成されたクロ ッ クの例を示します。

マスター クロ ッ ク clkin が MMCME2 インスタンス clkip/mmcm0 の入力 CLKIN を駆動する とする と、自動生成クロ ックの名前は cpuClk とな り、 その定義ポイン トは clkip/mmcm0/CLKOUT とな り ます。

X-Ref Target - Figure 4-6

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

Page 43: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 43UG903 (v2012.3) 2012 年 10 月 16 日

クロック グループ

ローカル ネッ ト名

CMB インスタンスがデザインの階層内に配置されている場合、 生成クロ ッ クの名前にローカル ネッ ト名 (親セル名を含まない名前) が使用されます。

たとえば、 階層ネッ ト名が clkip/cpuClk である とする と、 次のよ うになり ます。

• 親セル名は clkip です。

• 生成クロッ ク名は cpuClk です。

名前の競合

2 つの生成クロ ッ クの名前が競合する場合、 Vivado IDE で次のよ うにこれらを区別する接尾辞が付けられます。

• usrclk

• usrclk_1

• usrclk_2

• ...

生成クロッ クの名前を指定するには、 次のいずれかの方法を使用します。

• RTL で固有のわかりやすいネッ ト名を選択します。

• create_generated_clock を使用して生成クロ ッ ク制約を定義します。

クロック グループVivado IDE では、 ク ロ ッ ク グループ制約を使用して指定しない限り、 すべてのク ロ ッ クが関連している と想定されます。 set_clock_groups コマンドを使用する と、 クロ ッ ク グループ間のタイ ミ ング解析がディ スエーブルになります。

[Schematic] ビューまたは [Report Clock Networks] コマンドを使用してク ロ ッ ク ツ リーの ト ポロジを表示し、 どのクロ ッ クの関連性を保持する必要があるかを確認して ください。 また、 [Report Clock Interaction] コマンドを使用して、2 つのクロ ッ ク間の既存の制約を確認したり、 同じプライマ リ ク ロ ッ ク (同じソース ポイン ト ) を共有しているかを判断できます。

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

同期クロック

2 つのクロ ッ クの位相関係が予測可能である場合、 これらのク ロッ クは同期しています。 クロ ッ ク ツ リーがネッ ト リス トの同じルートから出発している場合、 2 つのクロ ッ クは通常同期しています。

たとえば、生成クロ ッ ク とそのマスター ク ロ ッ クは、生成クロッ クのソース ポイン ト までは同じネッ ト リ ス ト リ ソースを伝搬されるので、 同期しています。

Page 44: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 44UG903 (v2012.3) 2012 年 10 月 16 日

クロック グループ

非同期クロック グループ

2 つのクロ ッ クの位相関係を特定できない場合、 これらのク ロ ッ クは非同期です。 たとえば、 2 つのクロ ッ クがボード上の異なるオシレーターで生成され、 異なる入力ポートから入力される場合、 位相関係は不明なので、 これらのクロッ クは非同期と して扱う必要があ り ます。2 つのクロ ッ クがボード上の同じオシレーターで生成されている場合は、非同期ではあ り ません。

ほとんどの場合、 プライマ リ ク ロ ッ ク同士は非同期と して扱う こ とができます。 プライマ リ ク ロ ッ ク とそれを基に生成されたクロッ クをま とめて、 非同期クロ ッ ク グループを構成できます。

非同期クロック グループの例

• プライマ リ ク ロ ッ ク clk0 が入力ポート上に定義され、 MMCM に入力されてクロ ッ ク usrclk および itfclk が生成されます。

• 2 番目のプライマ リ ク ロ ッ ク clk1 は GTP インスタンスの出力で定義される再生されたクロッ クで、 2 番目のMMCM に入力されてクロ ッ ク gtclkrx および gtclktx が生成されます。

非同期クロック グループの作成

非同期クロッ ク グループを作成するには、 –asynchronous オプシ ョ ンを使用します。

set_clock_groups –name async_clk0_clk1 –asynchronous –group {clk0 usrclk itfclk} \–group {clk1 gtclkrx gtclktx}

生成クロック名の取得

生成クロッ クの名前をあらかじめ予測できない場合は、 get_clocks –include_generated_clocks を使用して取得します。 –include_generated_clocks オプシ ョ ンは SDC からの拡張です。

上記の例は、 次のよ うにも記述できます。

set_clock_groups –name async_clk0_clk1 –asynchronous \–group [get_clocks –include_generated_clocks clk0] \–group [get_clocks –include_generated_clocks clk1]

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

デザインによっては、 異なるク ロ ッ クを使用するいくつかの動作モードがあ り ます。 この場合、 通常クロ ッ クは次のエレ メン ト を使用して選択されます。

• BUFGMUX および BUFGCTRL などのクロ ッ ク マルチプレクサー

• LUT

推奨 : クロ ッ ク ツ リーでは LUT をできるだけ使用しないでください。

これらのセルは組み合わせセルであるため、 すべての入力クロ ッ クは出力に伝搬されます。 Vivado IDE では、 1 つのクロ ッ ク ツ リーに複数のタイ ミ ング ク ロ ッ クを同時に存在させるこ とができ、 すべての動作モードに対するレポート を同時に生成できるので便利です。 これはハードウェアでは不可能です。

このよ うなク ロ ッ クは排他的クロ ッ ク と呼ばれ、 set_clock_groups で次のいずれかのオプシ ョ ンを使用して制約します。

• -logically_exclusive

• -physically_exclusive

Page 45: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 45UG903 (v2012.3) 2012 年 10 月 16 日

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

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

MMCM インスタンスで clk0 および clk1 が生成され、 BUFGMUX インスタンス clkmux に接続されています。 clkmuxの出力はデザインのクロッ ク ツ リーを駆動します。

clk0 と clk1 は同じ ク ロ ッ ク ツ リーを共有していても同時に存在するこ とはあ り ませんが、 デフォルトではこれらのクロッ ク間のパスが解析されます。

これらのク ロッ ク間のパスの解析をディ スエーブルにするには、 次の制約を入力します。

set_clock_groups –name exclusive_clk0_clk1 –physically_exclusive \–group clk0 –group clk1

次のオプシ ョ ンは、 ザイ リ ンクス FPGA デバイスでは同等です。

• -physically_exclusive

• -logically_exclusive

physically および logically は、 ASIC テク ノ ロジでのさまざまなシグナル インテグ リ ティ解析 (ク ロス トーク ) を表しており、 ザイ リ ンクス FPGA デバイスでは必要あ り ません。

クロック レイテンシ、 ジッ ター、 ばらつきク ロ ッ ク波形の定義に加え、 動作条件および環境による予測可能でランダムな変動を指定する必要があ り ます。

クロック レイテンシ

ク ロ ッ ク エッジは、ボードおよび FPGA デバイスを伝搬された後、ある遅延でデスティネーシ ョ ンに到達します。 この遅延は、 通常次のもので表されます。

• ソース レイテンシ (ク ロ ッ ク ソース ポイン ト前、 通常デバイス外部の遅延)

• ネッ ト ワーク レイテンシ

ネッ ト ワーク レイテンシによる遅延 (挿入遅延) の算出は、 次のよ うにな り ます。

• 自動的に予測 (配線前)

• 正確に算出 (配線後)

set_propagated_clock コマンドを使用する と、 通常の SDC ツールでは伝搬遅延が算出されます。 このコマンドは、 Vivado IDE では次の理由から必要あ り ません。

• すべてのクロッ クが伝搬クロ ッ ク と して処理されます。

• 生成クロッ クのレイテンシには、 親プライマ リ ク ロ ッ クの挿入遅延と、 その生成クロ ッ クのネッ ト ワーク レイテンシが含まれます。

ザイ リ ンクス FPGA では、 set_clock_latency コマンドを使用してデバイス外部のクロッ ク レイテンシを指定します。

set_clock_latency の例

# Minimum source latency value for clock sysClk (for both Slow and Fast corners)set_clock_latency –source –early 0.2 [get_clocks sysClk]# Maximum source latency value for clock sysClk (for both Slow and Fast corners)set_clock_latency –source –late 0.5 [get_clocks sysClk]

Page 46: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 46UG903 (v2012.3) 2012 年 10 月 16 日

I/O 遅延

クロック ジッ ターおよびクロックのばらつき

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

入力ジッ ター

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

各クロ ッ クの入力ジッ ターを個別に設定するには、 set_input_jitter コマンドを使用します。 入力ジッ ターは、マスター クロ ッ クからその派生クロ ッ クへは伝搬されません。このため、派生クロ ッ クにも入力ジッターを手動で指定する必要があ り ます。

システム ジッ ター

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

• 電源ノ イズ

• ボード ノ イズ

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

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

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

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

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

• set_input_delay

• set_output_delay

入力遅延

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

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

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

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

Page 47: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 47UG903 (v2012.3) 2012 年 10 月 16 日

I/O 遅延

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

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

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

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

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

• -clock_fall オプシ ョ ン

• -add_delay オプシ ョ ン

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

-min および -max オプシ ョ ンは、 次の解析用の値を指定します。

• 小遅延解析 (ホールド / リ ムーバル)

• 大遅延解析 (セッ ト アップ/ リ カバリ )

どちらのオプシ ョ ンも使用しない場合、 入力遅延値は 小値および 大値の両方に適用されます。

-clock_fall オプシ ョ ン

-clock_fall オプシ ョ ンを使用する と、 相対ク ロ ッ クの立ち下がり ク ロ ッ ク エッジで送信されるタイ ミ ング パスに入力遅延制約が適用されます。 このオプシ ョ ンを使用しない場合、相対クロ ッ クの立ち上がりエッジのみが考慮されます。

-clock_fall オプシ ョ ンを -rise および -fall オプシ ョ ンと混同しないでください。 -rise および -fall オプシ ョ ンは、 ク ロ ッ ク エッジではなくデータ エッジを参照します。

-add_delay オプシ ョ ン

-add_delay オプシ ョ ンは、 次の両方の条件が満たされる場合に使用する必要があ り ます。

• 大 (または 小) 入力遅延制約が存在する。

• 2 番目の 大 (または 小) 入力遅延制約を指定する必要がある。

このオプシ ョ ンは通常、 DDR インターフェイスのよ うに、 複数のクロ ッ ク エッジに対して入力ポートに遅延制約を設定する場合に使用されます。

入力遅延制約は、 入力ポート または双方向ポートに適用できます。 ただし、 クロ ッ ク入力ポートには適用できず、 これらは自動的に無視されます。 内部ピンには適用できません。

入力遅延の例 1

次の例では、前に定義した sysClk に対して、 小遅延解析と 大遅延解析の両方に使用する入力遅延を定義します。

> create_clock –name sysClk –period 10 [get_ports CLK0]> set_input_delay –clock sysClk 2 [get_ports DIN]

Page 48: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 48UG903 (v2012.3) 2012 年 10 月 16 日

I/O 遅延

入力遅延の例 2

次の例では、 前に定義した仮想クロ ッ クに対して入力遅延を定義します。

> create_clock –name clk_port_virt –period 10> set_input_delay –clock clk_port_virt 2 [get_ports DIN]

入力遅延の例 3

次の例では、 sysClk に対して 小遅延解析と 大遅延解析に異なる入力遅延値を定義します。

> create_clock –name sysClk –period 10 [get_ports CLK0]> set_input_delay –clock sysClk –max 4 [get_ports DIN]> set_input_delay –clock sysClk –min 1 [get_ports DIN]

入力遅延の例 4

次の例では、 DDR クロ ッ クに対して入力遅延値を定義します。

> create_clock –name clk_ddr –period 6 [get_ports DDR_CLK_IN]> set_input_delay –clock clk_ddr –max 2.1 [get_ports DDR_IN]> set_input_delay –clock clk_ddr –max 1.9 [get_ports DDR_IN] –clock_fall –add_delay> set_input_delay –clock clk_ddr –min 0.9 [get_ports DDR_IN]> set_input_delay –clock clk_ddr –min 1.1 [get_ports DDR_IN] –clock_fall –add_delay

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

出力遅延

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

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

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

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

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

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

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

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

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

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

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

• -clock_fall オプシ ョ ン

• -add_delay オプシ ョ ン

Page 49: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 49UG903 (v2012.3) 2012 年 10 月 16 日

I/O 遅延

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

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

-clock_fall オプシ ョ ン

-clock_fall オプシ ョ ンを使用する と、 相対ク ロ ッ クの立ち下がり ク ロ ッ ク エッジで受信されるタイ ミ ング パスに出力遅延制約が適用されます。 このオプシ ョ ンを使用しない場合、デバイス外部の相対クロ ッ クの立ち上がりエッジのみが考慮されます。

-clock_fall オプシ ョ ンを -rise および -fall オプシ ョ ンと混同しないでください。 -rise および -fall オプシ ョ ンは、 ク ロ ッ ク エッジではなくデータ エッジを参照します。

-add_delay オプシ ョ ン

-add_delay オプシ ョ ンは、 次の両方の条件が満たされる場合に使用する必要があ り ます。

1. 大出力遅延制約が存在する。

2. 2 番目の 大出力遅延制約を指定する必要がある。

小出力遅延制約の場合も同様に使用する必要があ り ます。 このオプシ ョ ンは通常、 DDR インターフェイスの立ち上がりおよび立ち下がりエッジや、異なるク ロ ッ クを使用する複数のデバイスに出力ポートが接続されている場合など、 複数のクロッ ク エッジに対して出力ポート を制約する場合に使用されます。

重要 : 出力遅延制約は、 出力ポート または双方向ポートにのみ適用できます。 内部ピンには適用できません。

出力遅延の例 1

次の例では、 前に定義した sysClk に対して、 小遅延解析と 大遅延解析の両方に使用する出力遅延を定義します。

> create_clock –name sysClk –period 10 [get_ports CLK0]> set_output_delay –clock sysClk 6 [get_ports DOUT]

出力遅延の例 2

次の例では、 前に定義した仮想クロ ッ クに対して出力遅延を定義します。

> create_clock –name clk_port_virt –period 10> set_output_delay –clock clk_port_virt 6 [get_ports DOUT]

出力遅延の例 3

次の例では、 DDR ク ロ ッ クに対して、 出力遅延を 小遅延 (ホールド ) および 大遅延 (セッ ト アップ) 解析で異なる値に指定します。

> create_clock –name clk_ddr –period 6 [get_ports DDR_CLK_IN]> set_output_delay –clock clk_ddr –max 2.1 [get_ports DDR_OUT]> set_output_delay –clock clk_ddr –max 1.9 [get_ports DDR_OUT] –clock_fall –add_delay> set_output_delay –clock clk_ddr –min 0.9 [get_ports DDR_OUT]> set_output_delay –clock clk_ddr –min 1.1 [get_ports DDR_OUT] –clock_fall –add_delay

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

Page 50: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 50UG903 (v2012.3) 2012 年 10 月 16 日

第 5 章

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

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

最小/最大遅延制約set_min_delay および set_max_delay コマンドは、 次の目的で使用できます。

• in-to-out I/O パスなど、 特別なパスを制約

• 通常クロッ クで定義される選択されたパスのデフォルト パス要件を変更

スラ ッ クの算出には、 次の場合を除き、 デフォルトでパスのクロ ッ ク スキューが含まれます。

• 制約の開始点が適切でないためにパスが分割され、 デスティネーシ ョ ン クロ ッ クのみが考慮される場合。

• set_max_delay コマンドでのみサポート される -datapath_only オプシ ョ ンが使用され、ソース ク ロ ッ ク とデスティネーシ ョ ン クロ ッ クの両方が無視される場合。 詳細は、 次のセクシ ョ ンを参照して ください。

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

コマンド 機能

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

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

set_max_delay

set_min_delay小パス遅延または 大パス遅延の値を指定します。 このコマンドを使用する と、デ

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

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

表 5-2 : 最小/最大遅延制約

制約 機能

小遅延 ホールドおよびリ ムーバル解析に使用されるパス要件に対応

小遅延 セッ ト アップおよびリ カバリ解析に使用されるパス要件に対応

Page 51: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 51UG903 (v2012.3) 2012 年 10 月 16 日

最小/最大遅延制約

コマンド オプシ ョ ン

–datapath_only オプシ ョ ンは、 set_max_delay コマンドでのみサポート されます。

オプシ ョ ンは、 通常表 5-3 「コマンド オプシ ョ ン」 に示すよ うに使用します。

set_max_delay をパスに使用しても、同じパスの 小遅延解析に影響はあ り ません。同様に、 set_min_delay も大遅延解析には影響しません。同じパスの 小遅延または 大遅延要件を削除するには、フォルス パス制約を使用

する必要があ り ます。

たとえば、 次のコマンドは、 大遅延解析 (セッ ト アップ チェッ ク ) 用にパス要件を 5ns に設定し、 同じパスを 小遅延解析 (ホールド チェッ ク ) ではディ スエーブルにしています。

> set_max_delay –from [get_pins FD1/C] –to [get_pins FD2/D] 5> set_false_path –from [get_pins FD1/C] –to [get_pins FD2/D] -hold

-datapath_only オプシ ョ ン

-datapath_only オプシ ョ ンを使用する と、 set_max_delay の使用をさ らに制限できます。 -from オプシ ョ ンを必ず使用する必要があ り ます。

-datapath_only オプシ ョ ンの例 1

data1_0_reg/Q が data12_0_reg に直接接続されている場合を示します。 この場合は、 -from/-to オプシ ョ ンを使用できます。

> set_max_delay –from data1_0_reg/C –to data12_0_reg/D 5 –datapath_only

パス分割

set_max_delay または set_min_delay の –from オプシ ョ ンで有効な開始点以外のピンを指定した場合、 そのピンを通過するタイ ミ ング パスが分割され、 これらのピンが開始点と して使用されます。

このコマンドで無効な終点を指定した場合も、指定したピンが終点となるので、 それらのピンを通過するタイ ミ ングパスが分割されます。 これは問題とな り ます。 パスが分割される と、 分割されたパスのクロ ッ クの伝搬が中断され、これらのパスのスキューが大き くなってしまいます。 これは、制約で指定した 小および 大遅延値に含める必要があ り ます。 set_max_delay または set_min_delay コマンドを不適切に使用してパスが分割された場合も、 小遅延解析および 大遅延解析の両方に影響します。

推奨 : パスが分割されないよ うにするため、 有効な開始点と終点を注意して選択して ください。

表 5-3 : コマンド オプシ ョ ン

オプシ ョ ン 適用箇所

• -from

• -rise from

• -fall_from

入力または双方向ポート、シーケンシャル セルのクロ ッ ク ピン、ク ロ ッ クなどの有効な開始点

• -to

• -rise_to

• -fall_to

出力または双方向ポート、 シーケンシャル セルの入力データ ピン、 ク ロ ッ クなどの有効な終点

• -through

• -rise_through

• -fall_through

任意のネッ ト またはピン

Page 52: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 52UG903 (v2012.3) 2012 年 10 月 16 日

第 6 章

XDC の優先順位ザイ リ ンクス デザイン制約 (XDC) の優先順位は、 Synopsys Design Constraints (SDC) と同じです。 この章では、 制約の競合および重複がどのよ うに解決されるかを説明します。

XDC 制約の順序XDC 制約は順次解釈されるコマンドで、 優先順位が同じ場合は、 後のものが優先されます。

制約順序の例

> create_clock –name clk1 –period 10 [get_ports clk_in1]> create_clock –name clk2 –period 11 [get_ports clk_in1]

この例では、 次の理由で 初のクロ ッ ク定義が 2 つ目のクロッ ク定義で置き換えられます。

• どちら も同じ入力に設定されています。

• create_clock –add オプシ ョ ンは使用されていません。

例外の優先順位複数のタイ ミ ング例外が同じパスに適用されているなど、 制約が重複する場合は、 優先順位は次のよ うにな り ます。

1. ク ロ ッ ク グループ (set_clock_groups)

2. フォルス パス (set_false_path)

3. 大/ 小遅延パス (set_max_delay/set_min_delay)

4. 複数サイクル パス (set_multicycle_path)

注記 : 同じ例外の場合は、 制約が詳細に指定されているものほど優先されます。

例外の優先順位の例

> set_max_delay 12 –from [get_clocks clk1] –to [get_clocks clk2]> set_max_delay 15 –from [get_clocks clk1]

この例では、 clk1 から clk2 へのパスに対しては、 2 つ目の制約ではなく 1 つ目の制約が適用されます。

Page 53: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 53UG903 (v2012.3) 2012 年 10 月 16 日

例外の優先順位

タイ ミ ング例外を指定するのに使用されるオブジェ ク ト タ イプやフ ィルター オプシ ョ ンも優先順位に関係します。オプシ ョ ンの優先順位は、 次のよ うにな り ます。

1. –from pin

2. –to pin

3. –through pin

4. –from clock

5. –to clock

Page 54: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 54UG903 (v2012.3) 2012 年 10 月 16 日

第 7 章

物理制約Vivado™ 統合設計環境 (IDE) では、 デザイン オブジェク トの物理制約はオブジェク ト プロパティ を設定するこ とによ り指定します。 次に例を示します。

• ロケーシ ョ ンおよび I/O 規格などの I/O 制約

• セル ロケーシ ョ ンなどの配置制約

• 固定配置などの配線制約

• コンフ ィギュレーシ ョ ン モードなどのコンフ ィギュレーシ ョ ン制約

制約の適用制約は、 次の方法で適用できます。

• XDC 制約ファイルからの制約の適用

• Tcl コマンドを使用した制約の適用

XDC 制約ファイルからの制約の適用

XDC 制約ファ イルを使用する と、 制約はネッ ト リ ス トが処理される と きにファ イルに記述されている順序で適用されます。

Tcl コマンドを使用した制約の適用 Tcl コマンドまたは Tcl スク リプ ト を使用する と、 制約は次のよ うに適用されます。

• メモ リ内のデザイン オブジェク トにすぐに適用されます。

• XDC set_property コマンドを使用して適用されます。

次の構文を使用します。

set_property <property> <value> <object list>

LOC プロパティ を使用したロケーシ ョ ン制約の例

set_property LOC SLICE_X32Y49 [get_cells XCOUNTER/BU5]

Page 55: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 55UG903 (v2012.3) 2012 年 10 月 16 日

ネッ ト リスト制約

ク リテ ィ カル警告

デザインに存在しないオブジェク トに適用されている制約など、 XDC ファ イルの無効な制約に対しては、 ク リ ティカル警告が表示されます。

推奨 : デザインを適切に制約するため、 ク リ ティカル警告をすべて確認するこ とをお勧めします。 無効な制約をインタラ クティブに適用する と、 エラーが発生します。

制約の定義および使用方法は、 付録 A 「その他のリ ソース」 にリ ス ト されている 『Vivado Design Suite 制約リ ファレンス ガイ ド』 (UG912) を参照して ください。

ネッ ト リス ト制約ネッ ト リ ス ト制約は、 ポート、 ピン、 ネッ ト 、 セルなどのネッ ト リ ス ト オブジェク トに設定され、 コンパイル ツールで特別な方法で処理される必要があ り ます。

• CLOCK_DEDICATED_ROUTE

ネッ ト またはピンに設定し、 ク ロ ッ ク信号をどのよ うに配線するかを指定します。

• MARK_DEBUG

RTL のネッ ト に設定し、 保持してネッ ト リ ス トに含まれるよ うにします。 これによ り、 コンパイル フローの任意の時点で、 ネッ ト をロジッ ク デバッグ ツールに接続できます。

• DONT_TOUCH

セルまたは階層インスタンスに設定し、 ネッ ト リ ス ト 適化中に保持されるよ うにします。

I/O 制約I/O 制約は、 次のものを設定します。

• ポート

• ポートに接続されているセル

一般的な制約は、 次のとおりです。

• I/O 規格

• I/O ロケーシ ョ ン

Vivado 統合設計環境 (IDE) では、 ISE® Design Suite の I/O 制約の多くがサポート されています。

• DRIVE

出力バッファーの駆動電流を mA で指定します。 一部の I/O 規格でのみ使用可能です。

• IOSTANDARD

I/O バッファーに I/O 規格を設定します。

Page 56: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 56UG903 (v2012.3) 2012 年 10 月 16 日

I/O 制約

• SLEW

デバイス出力のスルー レート (遷移レート ) を設定します。

• IN_TERM

入力ポートの入力終端抵抗のコンフ ィギュレーシ ョ ンを設定します。

• OUT_TERM

出力ポートの出力終端抵抗のコンフ ィギュレーシ ョ ンを設定します。

• DIFF_TERM

IBUFDS_DIFF_OUT などのプリ ミ ティブに対して 100 オームの差動終端のオン/オフを指定します。

• KEEPER

ト ラ イステート出力または双方向ポートにウ ィーク ド ラ イバーを適用し、 駆動されていないと きに値を保持します。

• PULLDOWN

ト ラ イステート出力または双方向ポートにウ ィーク Low を適用し、 フローティングしないよ うにします。

• PULLUP

ト ラ イステート出力または双方向ポートにウ ィーク High を適用し、 フローティングしないよ うにします。

• DCI_VALUE

IBIS ファ イルを生成する と きに IOB エレ メン トに関連付けるバッファーのビヘイビアー モデルを指定します。

• DCI_CASCADE

マスターおよびスレーブ バンクのセッ ト を定義します。DCI 基準電圧は、マスター バンクからスレーブにチェーン接続されます。

• INTERNAL_VREF

I/O バンクの Vref ピンを解放し、 代わりに内部で生成された Vref を使用します。

• IODELAY_GROUP

IDELAY および IODELAY セルのセッ ト を IDELAYCTRL とグループにし、デザインの IDELAYCTRL が自動的に複製および配置されるよ うにします。

• IOBDELAY

IDELAY または IODELAY 遅延ライン セルのタ ップ遅延値を設定します。

• IOB

フ リ ップフロップおよびラ ッチをスライス ファブ リ ッ クではなく I/O ロジッ クに配置するよ う試みます。

制約の詳細は、 付録 A 「その他の リ ソース」 の リ ス ト から 『Vivado Design Suite プロパテ ィ リ フ ァレンス ガイ ド』(UG912) を参照して ください。

Page 57: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 57UG903 (v2012.3) 2012 年 10 月 16 日

配置制約

プロパティは、 Tcl リ ス ト を使用して 1 つまたは複数のオブジェク トに設定できます。

次の例では、 I/O 規格を mode0 および mode1 ポートに設定しています。

% set_property IOSTANDARD LVCMOS18 [get_ports {mode0 mode1}]

配置制約配置制約はセルに適用し、 デバイス内でのロケーシ ョ ンを制御します。 Vivado IDE では、 ISE Design Suite およびPlanAhead™ ツールの配置制約の多くがサポート されています。

• LUTNM

2 つの LUT に固有の名前を指定し、 1 つの LUT サイ トに配置します。

• HLUTNM

同じ階層にある 2 つの LUT に固有の名前を指定し、 1 つの LUT サイ トに配置します。

• PROHIBIT

サイ トへの配置を禁止します。

• PBLOCK

論理ブロッ クに設定し、 FPGA の物理領域に制約します。

• PACKAGE_PIN

ターゲッ ト デバイス パッケージのピンのデザイン ポートのロケーシ ョ ンを指定します。

• LOC

ネッ ト リ ス トの論理エレ メン ト をデバイス上のサイ トに配置します。

• BEL

ネッ ト リ ス トの論理エレ メン ト をデバイス上のスライス内の特定の BEL に配置します。

Page 58: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 58UG903 (v2012.3) 2012 年 10 月 16 日

配置制約

配置タイプ

次の 2 種類の配置があ り ます。

• 固定配置

• 固定されていない配置

固定配置

固定配置は、 次の方法でユーザーが指定する配置です。

• 手動で配置

• XDC 制約

• メモ リに読み込まれているデザインのセル オブジェク トに次を使用して指定

° IS_LOC_FIXED

° IS_BEL_FIXED

固定されていない配置

固定されていない配置は、 インプリ メンテーシ ョ ン ツールで実行される配置です。配置が固定されている と、制約されてるセルはインプ リ メ ンテーシ ョ ンで移動できません。 固定配置は、 単純な LOC または BEL と して XDC ファ イルに保存されます。

• IS_LOC_FIXED

LOC 制約を固定されていないものから固定されたものに変更します。

• IS_BEL_FIXED

BEL 制約を固定されていないものから固定されたものに変更します。

配置制約の例 1

次の例では、 ブロッ ク RAM を RAMB18_X0Y10 に配置し、 固定します。

% set_property LOC RAMB18_X0Y10 [get_cells u_ctrl0/ram0]

配置制約の例 2

次の例では、 LUT をスライスの C5LUT BEL に配置し、 その BEL 割り当てを固定します。

% set_property BEL C5LUT [get_cells u_ctrl0/lut0]

配置制約の例 3

次の例では、 入力遅延を短くするため入力バス レジスタを ILOGIC セルに配置します。

% set_property IOB TRUE [get_cells mData_reg*]

配置制約の例 4

次の例では、 2 つの小型の LUT を、 O5 および O6 出力の両方を使用する 1 つの LUT6_2 に結合します。

% set_property LUTNM L0 [get_cells {u_ctrl0/dmux0 u_ctrl0/dmux1}]

Page 59: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 59UG903 (v2012.3) 2012 年 10 月 16 日

配線制約

配置制約の例 5

次の例では、 ブロッ ク RAM の 初の列が使用されないよ うにします。

% set_property PROHIBIT TRUE [get_sites {RAMB18_X0Y* RAMB36_X0Y*}]

配線制約配線制約はネッ ト オブジェク トに適用し、 配線リ ソースを制御します。

ピン固定

LOCK_PINS はセル プロパティで、 論理 LUT 入力 (I0、 I1、 I2、 …) と LUT 物理入力ピン (A6、 A5、 A4、 …) の間のマップを指定します。

通常、 タイ ミ ング ク リ ティカル LUT 入力を高速の A6 および A5 物理 LUT 入力にマップするために使用されます。

LOCK_PINS 制約の例 1

次の例では、 I1 を A6 に、 I0 を A5 にマップしています (デフォルトのマップをスワップ)。

% set myLUT2 [get_cell u0/u1/i_365]% set_property LOCK_PINS {I0:A5 I1:A6} $myLUT2# Which you can verify by typing the following line in the Tcl Console:% get_property LOCK_PINS $myLUT2

LOCK_PINS 制約の例 2

次の例では、 LUT6 の I0 を A6 にマップしています。 I1 ~ I5 のマップは固定されません。

% set_property LOCK_PINS I0:A6 [get_cell u0/u1/i_768]

固定配線

固定配線は、 ISE の指定配線と同様に、 配線を固定します。 ネッ トの配線リ ソースの固定には、 3 つのネッ ト プロパティが関係します。 次の表を参照して ください。

ネッ トの配線が確実に固定されるよ うにするには、 その配線のすべてのセルを固定しておく必要があ り ます。

表 7-1 : ネッ ト プロパティ

プロパティ 機能

ROUTE 読み取り専用のネッ ト プロパティ

IS_ROUTE_FIXED 配線全体を固定するよ うマーク

FIXED_ROUTE ネッ トの固定配線部分

Page 60: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 60UG903 (v2012.3) 2012 年 10 月 16 日

配線制約

次に、 配線を完全に固定する例を示します。 この例では、 図 7-1 「配線制約の例を示すためのシンプルなデザイン」のデザインのネッ ト a (青色でハイライ ト ) の配線を固定する制約を作成します。

インプリ メン ト済みデザインを メモリに読み込むと、 ネッ トの配線情報をクエリできるよ うにな り ます。

% set net [get_nets a]% get_property ROUTE $net{ CLBLL_LL_CQ CLBLL_LOGIC_OUTS6 FAN_ALT5 FAN_BOUNCE5 { IMUX_L17 CLBLL_LL_B3 } IMUX_L11 CLBLL_LL_A4 }

配線は、 配線ノード名の リ ス トで示され、 ファンアウ トは中かっこ ({ }) で示されます。 配線を固定するには、 次のコマンドを使用します。

% set_property IS_ROUTE_FIXED $net

制約を今後のために XDC ファ イルにバッ クアノテートするには、 固定されたネッ トに接続されているすべてのセルの配置も保持する必要があ り ます。この情報は、[Schematic] または [Device] ビューでセルを選択し、[Properties] ビューの LOC/BEL プロパティ値で確認するか、 Tcl コンソールでこれらの値をクエリ します。

% get_property LOC [get_cells {a0 L0 L1}]SLICE_X0Y47 SLICE_X0Y47 SLICE_X0Y47% get_property BEL [get_cells {a0 L0 L1}]SLICEL.CFF SLICEL.A6LUT SLICEL.B6LUT

固定された配線はタイ ミ ング ク リ ティカルであるこ とが多いので、 LUT ピンのマップも LOCK_PINS 制約で指定し、配線時にピンがスワップされないよ うにする必要があ り ます。 スワップされる と、固定された配線とネッ トのピンが揃わなくな り ます。

% get_site_pins -of [get_pins {L0/I1 L0/I0}]SLICE_X0Y47/A4 SLICE_X0Y47/A2% get_site_pins -of [get_pins {L1/I1 L1/I0}]SLICE_X0Y47/B3 SLICE_X0Y47/B2

X-Ref Target - Figure 7-1

図 7-1 : 配線制約の例を示すためのシンプルなデザイン

Page 61: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 61UG903 (v2012.3) 2012 年 10 月 16 日

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

ネッ ト a の配線を固定するために必要な XDC 制約は、 次のよ うになり ます。

set_property LOC SLICE_X0Y47 [get_cells {a0 L0 L1}]set_property BEL CFF [get_cells a0]set_property BEL A6LUT [get_cells L0]set_property BEL B6LUT [get_cells L1]set_property LOCK_PINS {I1:A4 I0:A2} [get_cells L0]set_property LOCK_PINS {I1:A3 I0:A2} [get_cells L1]set_property FIXED_ROUTE { CLBLL_LL_CQ CLBLL_LOGIC_OUTS6 FAN_ALT5 FAN_BOUNCE5 { IMUX_L17 CLBLL_LL_B3 } IMUX_L11 CLBLL_LL_A4 } [get_nets a]

XDC ではなく Tcl コマンドを使用する場合は、 次の制約を 1 つの place_cell コマンドで設定できます。

• LOC

• BEL

• IS_LOC_FIXED

• IS_BEL_FIXED

place_cell a0 SLICE_X0Y47/CFF L0 SLICE_X0Y47/A6LUT L1 SLICE_X0Y47/B6LUT

place_cell コマンドの詳細は、付録 A 「その他のリ ソース」 の リ ス トから 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) を参照してください。

コンフ ィギュレーシ ョ ン制約コンフ ィギュレーシ ョ ン制約は、 ビッ ト ス ト リーム生成用のグローバル制約で、 現在のデザインに適用します。 コンフ ィギュレーシ ョ ン モードなど制約が含まれます。

コンフ ィギュレーシ ョ ン制約の例 1

次の例では、 CONFIG_MODE を M_SELECTMAP に設定しています。

% set_property CONFIG_MODE M_SELECTMAP [current_design]

コンフ ィギュレーシ ョ ン制約の例 2

次の例では、 デバイス ピン E11 および F11 を電圧基準ピンに設定しています。

% set_property VREF {E11 F11} [current_design]

コンフ ィギュレーシ ョ ン制約の例 3

次の例では、 CRC チェッ クをディ スエーブルにしています。

% set_property BITSTREAM.GENERAL.CRC Disable [current_design]

ビッ ト ス ト リーム生成プロパティおよび定義のリ ス トは、付録 A 「その他のリ ソース」 の リ ス ト から 『Vivado DesignSuite Tcl コマンド リ ファレンス ガイ ド』 (UG835) を参照して ください。

Page 62: Vivado Design Suite...制約の使用 japan.xilinx.com 8 UG903 (v2012.3) 2012 年 10 月 16 日 第2 章 制約の入力方法 この章では、推奨される制約入力フローを示します。デザイン制約は、デザインがボード上で正しく機能するようにするために、コンパイル

制約の使用 japan.xilinx.com 62UG903 (v2012.3) 2012 年 10 月 16 日

付録 A

その他のリソース

ザイリンクス リソースアンサー、 資料、 ダウンロード、 フォーラムなどのサポート リ ソースは、 次のザイ リ ンクス サポート サイ ト を参照して ください。

http://japan.xilinx.com/support

ザイ リ ンクス資料で使用される用語集は、 次を参照して ください。

http://japan.xilinx.com/company/terms.htm.

ソリューシ ョ ン センターデバイス、 ツール、 IP のサポートについては、 ザイ リ ンクス ソ リ ューシ ョ ン センターを参照して ください。 ト ピックには、 デザイン アシスタンス、 アドバイザリ、 ト ラブルシュート ヒ ン ト などが含まれます。

リファレンス このガイ ドの補足情報は、 次のサイ トに リ ス ト されている資料を参照して ください。

• Vivado Design Suite 2012.3 資料ページhttp://japan.xilinx.com/support/documentation/dt_vivado_vivado2012-3.htm