41
Vivado Design Suite チュートリアル 制約の使用 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資 料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報 につきましては、必ず最新英語版をご参照ください。 すべてのバージョンを表示 UG945 (v2019.2) 2019 年 12 月 6 日 このチュートリアルは 2019.1 で検証されており、それ以降のリリースでは手順が多少異なる場合あり。

Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

Vivado Design Suite チュートリアル制約の使用UG945 (v2019.1) 2019 年 6 月 24 日

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

すべてのバージョンを表示

UG945 (v2019.2) 2019 年 12 月 6 日

このチュートリアルは 2019.1 で検証されており、それ以降のリリースでは手順が多少異なる場合あり。

Page 2: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

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

セクション 改訂内容2019 年 6 月 24 日 バージョン 2019.1

資料全体 2019.1 用に図をアップデート

改訂履歴

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 2UG945 (v2019.2) 2019 年 12 月 6 日

2019/12/06: Vivado® Design Suite 2019.2 リリース。2019.1 から内容の変更なし。

Page 3: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

目次改訂履歴..........................................................................................................................................................................2

制約チュートリアルの使用...............................................................................................................................4チュートリアル デザインの概要.................................................................................................................................... 4ハードウェアおよびソフトウェア要件..........................................................................................................................5チュートリアル デザイン ファイルの準備.................................................................................................................... 5

演習 1: 演習 1: タイミング制約および例外の定義.......................................................................... 6手順 1: サンプル プロジェクトを開く........................................................................................................................... 6手順 2: 制約セットおよびファイルの定義...................................................................................................................11手順 3: タイミング制約の作成..................................................................................................................................... 12手順 4: 制約エディターの使用..................................................................................................................................... 19手順 5: 制約の保存........................................................................................................................................................ 25手順 6: クロック関連性レポート..................................................................................................................................27手順 7: タイミング サマリ レポート............................................................................................................................28まとめ............................................................................................................................................................................ 30

演習 2: 演習 2: 物理制約の設定................................................................................................................... 31手順 1: プロジェクトを開く......................................................................................................................................... 31手順 2: 配置制約の追加................................................................................................................................................ 32手順 3: 追加の物理制約の定義..................................................................................................................................... 34手順 4: オブジェクト プロパティを使用した制約の定義........................................................................................... 35手順 5: 制約の保存........................................................................................................................................................ 38まとめ............................................................................................................................................................................ 39

付録 A: その他のリソースおよび法的通知.......................................................................................... 40ザイリンクス リソース.................................................................................................................................................40Documentation Navigator およびデザイン ハブ...................................................................................................... 40お読みください: 重要な法的通知.................................................................................................................................40

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 3UG945 (v2019.2) 2019 年 12 月 6 日

Page 4: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

制約チュートリアルの使用重要: このチュートリアルでは、Kintex®-7 ファミリのデバイスを使用します。デバイス ファミリがインストールされていない場合は、Vivado® ツールをアップデートする必要があります。デザイン ツールまたはデバイスの追加の詳細は、『Vivado Design Suite ユーザー ガイド: リリース ノート、インストール、およびライセンス』 (UG973) を参照してください。このチュートリアルは 2 つの演習から構成されており、それぞれ Vivado® Design Suite でデザインに制約を設定する方法を学びます。Vivado® Design Suite でサポートされる制約フォーマットは、ザイリンクス デザイン制約 (XDC) と呼ばれ、業界標準の Synopsys® デザイン制約およびザイリンクス独自のザイリンクス制約が組み合わされています。タイミング クロージャの詳細は、『UltraFast 設計手法タイミング クロージャ クイック リファレンス ガイド』(UG1292) を参照してください。ビデオ: また、Vivado Design Suite での制約の定義方法の詳細は、Vivado デザイン制約の概要の QuickTake ビデオをご覧ください。トレーニング: ザイリンクス では、この資料に含まれるコンセプトを説明するさまざまなトレーニング コースおよび QuickTake ビデオを提供しています。次のリンクから関連するコースを参照してください。• Vivado での FPGA 設計導入• Vivado Design Suite での FPGA 設計実践

XDC は単なる文字列ではなく、Vivado Tcl インタープリターが順次に読み出して解析する Tcl コマンドです。デザイン制約は、デザイン フローの異なる段階で複数の方法で入力できます。XDC は、Vivado プロジェクト モードでは、1 つまたは複数のファイルに保存して制約セットに追加できます。非プロジェクト モードでは、同じファイルをread_xdc コマンドを使用してメモリに直接読み込むことができます。プロジェクト モードおよび非プロジェクトモードの詳細は、 『Vivado Design Suite ユーザー ガイド: デザイン フローの概要』 (UG892) を参照してください。Vivado ツールでデザインを開いた状態で、Vivado IDE で作業している場合は [Tcl Console] ウィンドウで、IDE の環境外で作業している場合は Tcl コマンド プロンプトで、制約をコマンドとして入力できます。これは、デザインでインタラクティブに新しい制約を定義、検証、デバッグする場合に特に有益な方法です。Vivado Design Suite 合成およびインプリメンテーション ツールはタイミング ドリブンです。デザイン目標を満たし、正しい操作が実行されるようにするには、正しいタイミング制約を正確に設定しておくことが不可欠です。Vivado ツールはタイミング ドリブンなので、デザイン全体に制約を設定することが重要ですが、制約を厳しくしすぎたり、緩くしすぎたりしないようにする必要があります。制約を厳しくしすぎると、ツールが非現実的なデザイン目標を満たそうとするので、ランタイムが長くなり、最適な結果が得られない可能性があります。逆に制約を緩くしすぎる、マルチサイクル遅延のあるパスやフォルス パスの確認など、Vivado ツールで不必要な最適化が実行され、本当のクリティカル パスに焦点が置かれなくなる可能性があります。このチュートリアルでは、デザイン制約の定義および適用方法をいくつか説明します。

チュートリアル デザインの概要このチュートリアルを通して使用するサンプル デザインは、project_cpu_netlist と呼ばれる小型のデザインです。最上位の EDIF ネットリスト ソース ファイルおよび XDC 制約ファイルがあります。

制約チュートリアルの使用

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 4UG945 (v2019.2) 2019 年 12 月 6 日

Page 5: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

このデザインは、XC7K70T デバイスをターゲットにしています。最小限のハードウェア要件でチュートリアルを実行し、短時間でチュートリアルを完成させ、データ サイズを最小限を抑えることができるよう、小型のデザインが使用されます。

ハードウェアおよびソフトウェア要件このチュートリアルを実行するには、Vivado Design Suite 2016.3 以降のバージョンをインストールしておく必要があります。システムおよびソフトウェア要件については、『Vivado Design Suite ユーザー ガイド: リリース ノート、インストール、およびライセンス』 (UG973) を参照してください。

チュートリアル デザイン ファイルの準備このチュートリアルのファイルは、次の Vivado Design Suite ソフトウェア インストール ディレクトリの examples ディレクトリにあります。<Vivado_install_area>/Vivado/<version>/examples/Vivado_Tutorial.zip

ZIP ファイルの内容をソフトウェア インストール ディレクトリから書き込可能なディレクトリに解凍します。解凍された Vivado_Tutorial ディレクトリは、このチュートリアルでは <Extract_Dir> と表記されます。提供されている ZIP ファイルを解凍して、いつでもファイルを元の状態に復元できます。注記: チュートリアルの作業を進めながら、チュートリアルのデザイン データを変更していきます。このチュートリアルを開始するたびに、元の Vivado_Tutorial の新しいコピーを作成して、それを使用してください。

制約チュートリアルの使用

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 5UG945 (v2019.2) 2019 年 12 月 6 日

Page 6: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

演習 1

演習 1: タイミング制約および例外の定義この演習では、デザインの制約作成方法を 2 つ学びます。Vivado® IDE に含まれる Kintex®-7 CPU のネットリスト サンプル デザインを使用します。

手順 1: サンプル プロジェクトを開く1. Vivado IDE を開きます。

• Linux:

1. 演習ファイルが保存されているディレクトリに移動します。cd <Extract_Dir>/Vivado_Tutorial

2. 「vivado」と入力して Vivado IDE を起動します。• Windows:

1. Vivado Design Suite IDE を起動します。[Start] → [All Programs] → [Xilinx Design Tools] → [Vivado 2019.x] → [Vivado 2019.x]

注記: [スタート] メニューの Vivado Design Suite インストールの表示が [ザイリンクス Design Tools] とは異なる場合があります。注記: または、[Vivado 2019.x] デスクトップ アイコンをクリックし、Vivado IDE を起動します。

Vivado IDE の [Getting Started] ページが開き、プロジェクトを開いたり、プロジェクトを作成したり、資料を開く選択肢が表示されます。

2. [Getting Started] ページで [Open Example Project] をクリックします。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 6UG945 (v2019.2) 2019 年 12 月 6 日

Page 7: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

次の図に示す Open Example Project ウィザードの [Open an Example Project] ページが開きます。

3. [Next] をクリックします。4. [Select Project Template] ページで [CPU (Synthesized)] をクリックします。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 7UG945 (v2019.2) 2019 年 12 月 6 日

Page 8: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

5. [Next] をクリックします。6. [Project Name] ページでプロジェクト名およびディレクトリを指定します。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 8UG945 (v2019.2) 2019 年 12 月 6 日

Page 9: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

• [Project name]: project_cpu_netlist

• [Project location]: <Extract_Dir>

7. [Next] をクリックします。8. [Default Part] ページでデフォルトのパーツを選択します。

次の図に示す [New Project Summary] ページが開きます。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 9UG945 (v2019.2) 2019 年 12 月 6 日

Page 10: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

9. [Finish] をクリックしてプロジェクトを作成します。Vivado IDE が開き、次の図に示すようにプロジェクトがデフォルト ビューで表示されます。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 10UG945 (v2019.2) 2019 年 12 月 6 日

Page 11: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

手順 2: 制約セットおよびファイルの定義まず、新しい制約セットを作成し、それに空の XDC 制約ファイルを追加します。サンプル デザインには既に 2 つの制約セットが含まれていますが、この演習ではこれらは使用しません。1. Flow Navigator の [Project Manager] セクションで [Add Sources] をクリックします。2. [Add Sources] ダイアログ ボックスで [Add or create constraints] をオンにします。3. [Next] をクリックします。4. [Add or Create Constraints] ダイアログ ボックスの [Specify Constraint Set] ドロップダウン メニューから

[Create Constraint Set] を選択します。

5. [Create Constraint Set] ダイアログ ボックスで制約セット名を「lab1」に設定し、[OK] をクリックします。6. [Make active] チェック ボックスをオンにします。7. [Add] ボタン をクリックし、プロジェクトに新しい XDC ファイルを追加するため [Create File] をクリックします。[Create Constraints File] ダイアログ ボックスが開きます。

8. [File name] に「timing」と入力し、[File location] は [<Local to Project>] のままにします。9. [OK] をクリックします。

timing.xdc ファイルが lab1 制約セットに追加されます。10. [Finish] をクリックして、新しい制約セットおよび XDC ファイルの作成を完了します。

次の図に示すように、[Sources] ウィンドウに新規の制約セットおよび XDC ファイルが表示されます。制約セットを作成したときに指定したように、制約セットがアクティブになっています。

11. [Sources] ウィンドウで timing.xdc を右クリックし、[Set as Target Constraint File] をクリックします。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 11UG945 (v2019.2) 2019 年 12 月 6 日

Page 12: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

これで、timing.xdc ファイルがターゲット XDC ファイルに設定されます。デザインに追加されたすべての制約がターゲット XDC ファイルに保存されます。

手順 3: タイミング制約の作成この手順では、合成済みデザインを開いて Vivado® Timing Constraints ウィザードを使用します。Timing Constraintsウィザードは、ゲート レベルのネットリストを解析し、不足している制約を検出します。Timing Constraints ウィザードを使用して、このデザインの制約を生成します。1. Flow Navigator で [Open Synthesized Design] をクリックします。2. 合成済みデザインを開いたら、[Synthesized Design] → [Constraints Wizard] をクリックします。

Timing Constraints ウィザードの最初のページが開きます。このページには、ウィザードで作成される制約のタイプ (クロック、入力および出力ポート、クロック乗せ換え) が説明されています。

3. このページを読んだら、[Next] をクリックして次へ進みます。Timing Constraints ウィザードの [Primary Clocks] ページには、クロック定義が不足しているクロック ソースがすべて表示されます。このデザインの場合、ウィザードにより、論理パスを解析するために必要なクロック制約が5 つ不足しており、パルス幅および最小または最大周期要件のみを検証するためのクロック制約が 4 つ不足していることが検出されました。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 12UG945 (v2019.2) 2019 年 12 月 6 日

Page 13: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

デザインに不足している 5 つのプライマリ クロックの周期を設定します。[Constraints for Pulse Width CheckOnly] の表に示されている 2 番目のクロック カテゴリはオプションです。この例では、これら制約は追加しないでください。

4. [Recommended Constraints] の表には、ウィザードにより不足していると判断された制約が各行に表示されます。表で制約を指定するには、[Period] 列のセルをクリックし、次の表の値を入力して、不足している 5 つのプライマリ クロックの周期を指定します。クロックの周期を設定すると、周波数が自動的に入力されます。表 1: ウィザードの [Primary Clock] ページで指定する値

プライマリ クロック 周期 (ns)

mgtEngine/ROCKETIO_WRAPPER_i/gt0_ROCKETIO_WRAPPER_TILE_i/GT0_TXOUTCLK_OUT 12.8

mgtEngine/ROCKETIO_WRAPPER_i/gt0_ROCKETIO_WRAPPER_TILE_i/GT2_TXOUTCLK_OUT 12.8

mgtEngine/ROCKETIO_WRAPPER_i/gt0_ROCKETIO_WRAPPER_TILE_i/GT4_TXOUTCLK_OUT 12.8

mgtEngine/ROCKETIO_WRAPPER_i/gt0_ROCKETIO_WRAPPER_TILE_i/GT6_TXOUTCLK_OUT 12.8

sysClk 10.0

特定のクロックの制約を入力しない場合は、クロックの横にあるチェック ボックスをオフにします。ウィザードによるこれらの制約の検出方法の詳細は、ウィザードの左下にある [Quick Help] ボタン ([?]) をクリックします。[Quick Help] のページには、コンテキストによって、ウィザードが求めるトポロジに関する詳細と、特定の制約が推奨される理由が表示されます。完成したページは次の図のようになります。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 13UG945 (v2019.2) 2019 年 12 月 6 日

Page 14: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

5. [Next] をクリックします。これでプライマリ クロック制約がデザインに追加されました。次に、ウィザードにより、制約が設定されていない生成クロックが検索されます。生成クロックは、FPGA ファブリックのプライマリ クロックから派生したものです。分周されたクロックを作成するために使用されるバイナリ カウンターなどがその例です。ウィザードにより、このデザインには制約が設定されていない生成クロックはないと判断されました。

6. [Next] をクリックします。次に、フォワード クロックが検索されます。フォワード クロックとは、FPGA のプライマリ出力ポートで生成されたクロックのことです。これらは、一般的にキャプチャ クロックがデータと共に供給されるときに、ソース同期バスに使用されます。ウィザードにより、デザインには制約が設定されていないフォワード クロックは存在しないと判断されました。

7. [Next] をクリックします。次に、外部フィードバック遅延が検索されます。FPGA 外の MMCM または PLL フィードバック遅延は、タイミング レポートでクロック遅延の補正の計算に使用されます。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 14UG945 (v2019.2) 2019 年 12 月 6 日

Page 15: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

ウィザードにより、デザインには制約が設定されていない MMCM 外部フィードバック遅延は存在しないと判断されました。

8. [Next] をクリックします。次に、入力遅延が確認されます。次の図に、Timing Constraints ウィザードの [Input Delay] ページを示します。このページには 3 つのセクションがあります。

セクション A には、入力遅延制約が不足している入力ポートがすべて表示されます。この表で、入力に制約を設定するのに使用するタイミング テンプレートを選択します。セクション B では、テンプレートの遅延値を指定します。このセクションは、セクション A で選択したテンプレートによって異なります。セクション C には、次の 3 つのタブがあります。• [Tcl Command Preview]: デザインに制約を設定するために使用される Tcl コマンドを表示します。• [Existing Set Input Delay Constraints]: デザインに存在する入力遅延制約を表示します。• [Waveform]: テンプレートに関連付けられている波形を表示します。次に、下の表に基づいてこのページに入力します。

9. [Clock] 列の見出しをクリックして、クロック名をアルファベット順に並べ替えます。10. セクション A でテンプレートを選択し、セクション B で値を入力し、セクション C で Tcl コマンド、既存の入力

遅延、テンプレート別の波形を確認します。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 15UG945 (v2019.2) 2019 年 12 月 6 日

Page 16: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

11. 次の表の上部 4 つの制約は、左横にあるチェック ボックスをオフにします。この演習では、GTPRESET_IN ポートからのこれらのパスをフォルス パスにします。この信号はデザイン内で同期化される非同期のリセット信号だからです。次の表の色付きの行は、Timing Constraints ウィザードの [Input Delays] ページで色ごとに同時に入力可能です。次の図に示すように、ウィザードで複数行を選択し ([Shift] キーまたは [Ctrl] キーを押しながら複数行を選択)、値を一度に入力します。一部の入力は仮想クロックに対して制約されています。これは、これらの入力が、ボードのクロックとは波形が異なるの部生成されたクロックによりキャプチャされるからです。この場合、ウィザードで内部クロックと同じ周波数および波形の仮想クロックが作成されるので、仮想クロックに対する制約が推奨されます。次の表で色付きの行は、この方法で入力可能な信号のグループを示しています。

表 2: 入力制約の値インターフェイス クロック 同期 アライメント データ レートおよびエッジ tco_mi

n (ns)tco_max (ns) trce_dly_min (ns) trce_dly_max

(ns)

GTPRESET_IN mgtEngine/... システム エッジ 1 回の立ち上がり 制約をオフ (後でフォルス パスに設定)

GTPRESET_IN mgtEngine/... システム エッジ 1 回の立ち上がり 制約をオフ (後でフォルス パスに設定)

GTPRESET_IN mgtEngine/... システム エッジ 1 回の立ち上がり 制約をオフ (後でフォルス パスに設定)

GTPRESET_IN mgtEngine/... システム エッジ 1 回の立ち上がり 制約をオフ (後でフォルス パスに設定)

DataIn_pad_0_i[*]

sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

DataIn_pad_1_i[*]

sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

LineState_pad_0_i[*]

sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

LineState_pad_1_i[*]

sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

VStatus_pad_0_i[*]

sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

VStatus_pad_1_i[*]

sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

RxActive_pad_0_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

RxActive_pad_1_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

Rx_Error_pad_0_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

Rx_Error_pad_1_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

Rx_Valid_pad_0_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

Rx_Valid_pad_1_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

TxReady_pad_0_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

TxReady_pad_1_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

usb_vbus_paf_0_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

usb_vbus_paf_1_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1

or1200_clmode VIRTUAL_cpuClk_5

システム エッジ 1 回の立ち上がり 0.1 2.5 0.1 0.2

or1200_pic_ints VIRTUAL_cpuClk_5

システム エッジ 1 回の立ち上がり 0.1 2.5 0.1 0.2

reset VIRTUAL_cpuCLK_5

システム エッジ 1 回の立ち上がり 0.1 2.5 0.1 0.2

次の図に、完成した [Input Delays] ページを示します。4 つの制約がオフになっていることに注目してください。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 16UG945 (v2019.2) 2019 年 12 月 6 日

Page 17: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

12. すべての入力制約の値を入力したら、[Next] をクリックします。ウィザードの [Output Delays] ページには、デザインで制約が設定されていない出力すべてが表示されます。このページのレイアウトは [Input Delays] ページと同様です。

13. [Output Delays] ページで、[Clock] 列の見出しをクリックしてクロック名をアルファベット順に並べ替えます。14. 入力制約の値を設定したのと同様に、次の表を使用してすべての出力を制約します。ウィザードで複数の行を選

択し、一度に編集できます。表 3: 出力制約の値インターフェイス クロック 同期 アライメント データ レートおよびエッジ tsu (ns) thd

(ns)trce_dly_max

(ns) trce_dly_min (ns)

OpMode_pad_0_o[*]

sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

OpMode_pad_1_o[*]

sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

VControl_pad_0_o[*]

sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

VControl_pad_0_o[*]

sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

SuspendM_pad_0_o

sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

SuspendM_pad_1_o

sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 17UG945 (v2019.2) 2019 年 12 月 6 日

Page 18: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

表 3: 出力制約の値 (続き)

インターフェイス クロック 同期 アライメント データ レートおよびエッジ tsu (ns) thd(ns)

trce_dly_max(ns) trce_dly_min (ns)

TermSel_pad_0_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

TermSel_pad_1_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

TxValid_pad_0_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

TxValid_pad_1_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

VControl_Load_pad_0_o

sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

VControl_Load_pad_1_o

sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

XcvSelect_pad_0_o

sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

XcvSelect_pad_1_o

sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

phy_rst_pad_0_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

phy_rst_pad_1_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1

DataOut_pad_0_o[*]

VIRTUAL_wbClk_4 システム セットアップ/ホールド 1 回の立ち上がり 2.1 0.6 0.1 0.0

DataOut_pad_1_o[*]

VIRTUAL_wbClk_4 システム セットアップ/ホールド 1 回の立ち上がり 2.1 0.6 0.1 0.0

Or1200_pm_out[*]

VIRTUAL_wbClk_4 システム セットアップ/ホールド 1 回の立ち上がり 2.1 0.6 0.1 0.0

15. [Next] をクリックします。ウィザードにより、制約が設定されていない組み合わせパスが検索されます。組み合わせパスは、FPGA を順次エレメントを通過せずに配線されるパスのことです。このデザインには組み合わせパスは含まれていません。

16. [Next] をクリックします。物理的に排他的なクロックのグループは、デザインに同時に存在しないクロックです。このデザインには、制約が設定されていない物理的に排他的なクロック グループはありません。

17. [Next] をクリックします。関連性のない論理的に排他的なクロックは、共有されているクロック ツリー セクションを除き、同時にアクティブになるクロックで、お互いの間と、共有セクション外に論理パスはないので、論理的に排他的です。このデザインには、制約が設定されていない、関連性のない論理的に排他的なクロック グループはありません。

18. [Next] をクリックします。関連性のある論理的に排他的なクロックは、共有されているクロック ツリーのセクションを除き、同時にアクティブになるクロックで、これらのクロック間に論理パスがある場合、共有のクロック ツリー セクションに限定されているクロックのみが論理的に排他的になるので、関連性のない論理的な排他的クロックとは異なる方法で制約されます。このデザインには、制約が設定されていない、関連性のある論理的に排他的なクロック グループはありません。

19. [Next] をクリックします。[Asynchronous Clock Domain Crossings] ページでは、安全なクロック乗せ換えのために推奨される制約が表示されています。このデザインには、制約が設定されていないクロック乗せ換えは含まれていません。

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

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 18UG945 (v2019.2) 2019 年 12 月 6 日

Page 19: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

次の図に、Timing Constraints ウィザードの最終ページを示します。リンクをクリックすると、ウィザードで生成された制約をすべて確認できます。ウィザードの終了後にレポートを生成する場合は、該当するチェック ボックスをオンにします。

21. [Finish] をクリックして、Timing Constraints ウィザードを終了します。

手順 4: 制約エディターの使用1. Flow Navigator の [Synthesized Design] で [Edit Timing Constraints] をクリックします。

Vivado IDE に [Timing Constraints] ウィンドウが開きます。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 19UG945 (v2019.2) 2019 年 12 月 6 日

Page 20: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

[Timing Consteraints] ウィンドウには、上の図に示すように 3 つのセクションがあります。• 制約ツリー ビュー: セクション A。標準的なタイミング制約がカテゴリ別に表示されます。このセクションの制約をダブルクリックすると、選択した制約を定義するためのダイアログ ボックスが開きます。

• 制約のスプレッドシート: セクション B。制約ツリー ビューで選択されているタイプのタイミング制約が表示されます。制約ウィザードを使用せず、このスプレッドシートを使用して制約を直接定義または編集できます。

• すべての制約: セクション C。デザインに現在存在するタイミング制約がすべて表示されます。Timing Constraints ウィザードでは、不足しているクロック、I/O 遅延、およびクロック乗せ換えの例外が特定されますが、一般的なタイミング例外は処理されません。このデザインに存在する例外を作成するには、タイミング制約エディターを使用します。まず、GTPRESET_IN 入力にフォルス パスを設定します。これは、Timing Constraints ウィザードの入力遅延を設定するページでチェック ボックスをオフにしてスキップした入力制約です。GTPRESET_IN 信号は、非同期リセットで、デザイン内で正しく同期化しています。フォルス パスの詳細は、『Vivado Design Suite ユーザー ガイド: 制約の使用』 (UG903) のこのセクションを参照してください。

2. 制約ツリー ビューで [Exceptions] カテゴリまでスクロール ダウンします。3. [Set False Path] をダブルクリックします。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 20UG945 (v2019.2) 2019 年 12 月 6 日

Page 21: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

4. [From] テキスト ボックスの右側にある [Choose Start Points] ボタン をクリックします。[Specify Start Points] ダイアログ ボックスが開きます。

5. [Find names of type] ドロップダウン リストから [I/O Ports] を選択します。6. [Options] で [NAME] および [contains] を選択し、検索キーワードを入力するテキスト ボックスに「GTPRESET_IN」と入力します。

7. [Find] をクリックします。8. [Results] の [Found] ボックスで [GTPRESET_IN] を選択し、右向き矢印をクリックして [Selected] ボックスに移動

します。ヒント: [GTPRESET_IN] をダブルクリックして [Found] から [Selected] に移動することもできます。これらの操作を実行すると、ダイアログ ボックスの下部にある [Command] フィールドに表示される内容が変わることに注意してください。get_ports コマンドは次のように変わります。get_ports "*GTPRESET_IN*"

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 21UG945 (v2019.2) 2019 年 12 月 6 日

Page 22: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

9. [Specify Start Points] ダイアログ ボックスで [Set] をクリックします。設定が完了した [Set False Path] ダイアログ ボックスは次の図のようになります。このダイアログ ボックスの[Command] フィールドには次のコマンドが表示されています。set_false_path -from [get_ports "*GTPRESET_IN*"]

Vivado IDE では、このダイアログ ボックスで作成したすべての制約の Tcl コマンドが表示され、確認できるようになっています。Tcl コマンドの構文を学んだり、追加前に最終的な制約を確認するのに便利です。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 22UG945 (v2019.2) 2019 年 12 月 6 日

Page 23: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

10. [OK] をクリックしてタイミング制約エディターを閉じます。Vivado でフォルス パス例外が作成されます。

マルチサイクル パスの追加次に、制約エディターを使用してマルチサイクル パスを追加します。1. [Excepstions] の下にある [Set Multicycle Path] をダブルクリックします。2. [Set Multicycle Path] ダイアログ ボックスで [Path Multiplier] を [2] に設定します。3. [Through] 入力ボックスに次の文字列を入力します (またはコピーして貼り付け)。

[get_pins cpuEngine/or1200_cpu/or1200_alu/*]

[Command] フィールドに、この Tcl コマンドが表示されます。4. [OK] をクリックします。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 23UG945 (v2019.2) 2019 年 12 月 6 日

Page 24: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

次の図に示すように、制約エディターの <unsaved_constraints> セクションに新しくマルチサイクル パスが追加されます。

マルチサイクル パスを追加すると、デフォルトでセットアップ タイミングが指定のサイクル数 (N) にプッシュされますが、ホールド タイミングも N - 1 サイクルにプッシュされます。これは通常意図した操作ではないので、大きなホールド違反の修正に Vivado ツールで時間を取られてしまう可能性があります。このケースでは、セットアップ パスのクロックが必要です。これを達成するには、ホールド エッジにある別のマルチサイクル パスを1 に定義して、N-1 が 0 になるようにします。この状況の詳細は、『Vivado Design Suite ユーザー ガイド: 制約の使用』 (UG903) のこのセクションを参照してください。

5. もう一度 [Excepstions] の下にある [Set Multicycle Path] をダブルクリックします。これまでに入力したフィールドにすべて値が今も入力されていることを確認します。

6. [Set Multicycle Path] ダイアログ ボックスで [Path Multiplier] を [1] に設定します。7. [Options] タブをクリックします。8. [Setup/Hold] の下にある [Use path multiplier] チェック ボックスをオンにします。9. プルダウン メニューから [hold (minimum delay)] を選択します。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 24UG945 (v2019.2) 2019 年 12 月 6 日

Page 25: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

10. [OK] をクリックします。これでメモリ内でデザインにすべての制約を設定しました。制約をディスクに保存するには、手順 5: 制約の保存に進んでください。

手順 5: 制約の保存制約の管理はデザイン フローの重要な手順です。Vivado Design Suite には、デザインの変更を記録したり、不足している制約を追加するために、新しい制約を既存の制約ファイルに追加するか、既存の制約ファイルに上書きするか、または新しい制約ファイルを作成するかを選択できます。これまでにデザインにいくつかのタイミング例外を作成しましたが、これらの例外はメモリに存在するだけで、ディスクにはまだ保存されていません。これらの例外を timing.xdc ファイルに保存する必要があります。1. Vivado の [Sources] ウィンドウで、[Constraints] → [lab1] に含まれる timing.xdc をダブルクリックして開きます。

2. このファイルを末尾までスクロールダウンします。このファイルには set_false_path および set_multicycle_path制約はありません。これらの制約は、次の図に示すように、タイミング制約エディターの<unsaved_constraints> (保存されていない制約) の下にリストされています。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 25UG945 (v2019.2) 2019 年 12 月 6 日

Page 26: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

3. [Save Constraints] ボタン をクリックするか、またはメイン メニューから [File] → [Constraints] → [Save As] をクリックします。

4. [timing.xdc] タブのバナーにある [Reload] リンクをクリックして、ディスクから制約ファイルを再度読み込みます。次の図に示すように、timing.xdc ファイルにフォルス パスおよびマルチサイクル パスが表示されるようになりました。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 26UG945 (v2019.2) 2019 年 12 月 6 日

Page 27: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

手順 6: クロック関連性レポート制約の作成中または作成後に、制約が完全かつ安全であることを検証する必要があります。Vivado Design Suite では、クロック グループまたはその他のタイミング例外が定義されていなければ、デフォルトですべてのクロックが一緒にタイミング解析されます。set_clock_groups コマンドは、非同期または排他的なクロック ドメインを指定し、これらのドメイン間のタイミング解析をディスエーブルにします。set_false_path 例外は、2 つのクロック間のすべてのパスのタイミングをディスエーブルにするために使用したり、特定のネットリスト オブジェクトに設定して一部のパスのみをディスエーブルにするために使用したりできます。set_multicycle_path 例外は、タイミング解析で使用するクロック エッジを、デフォルトの 1 サイクルから変更します。これらの制約の詳細は、『Vivado Design Suiteユーザー ガイド: 制約の使用』 (UG903) を参照してください。Vivado では、異なる 2 つのクロック ドメイン間のパス (クロック間パス) に対してタイミング パス要件が自動的に推論され、位相およびオフセットが想定されます。[Report Clock Interaction] コマンドを実行すると、クロック間パスがレポートされるので、2 つのクロック間の非現実的なセットアップまたはホールド要件などの問題や、不安定なハードウェア動作の原因となる非同期クロック間の危険なタイミングを特定するのに役立ちます。クロック関連性レポートの詳細は、 『Vivado Design Suite ユーザー ガイド: デザイン解析およびクロージャ テクニック』 (UG906) の「クロック関連性レポートの詳細」セクションを参照してください。1. Flow Navigator で [Synthesized Design] → [Report Clock Interaction] をクリックし、[Report Interaction] ダイアロ

グ ボックスでデフォルト設定のまま [OK] をクリックします。

上の図に示すように、Vivado IDE にデザインのさまざまなクロックの関連性を示すグラフィカルなマトリックスが生成されます。このデザインでは、プライマリ クロック (sysClk) が 6 つのクロックを生成する MMCM に接続されます。示されているクロックの関連性は、これらの生成クロック間の関連性です。さらに、TimingConstraints ウィザードで、デザインを完全に制約するために追加の生成クロックおよび仮想クロックが作成されています。クロック関連性レポートには、クロック間にパスがないクロック ペア (黒)、安全にタイミング解析されるパスがあるクロック ペア (緑色および水色)、安全にタイミング解析されないパスがあるクロック ペア (赤およびオレンジ色)、set_max_delay -datapath_only 制約が設定されているパスがあるクロックのペアが示されます。このデザインでは、マトリックスに黒色のセルと緑色のセルのみが表示されています。

重要: マトリックスの緑色のセルは、タイミングが満たされているわけではなく、タイミング制約およびクロック ツリーのトポロジに基づいて安全なタイミング解析および正確なスラック計算が実行されるという意味です。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 27UG945 (v2019.2) 2019 年 12 月 6 日

Page 28: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

クロック関連性レポートで「危険 (unsafe)」とは、共通のプライマリ クロックがない (既知の位相関係がない)、共通ノードがない (一般的でなく位相関係が不明)、またはソース クロックとデスティネーション クロックの最初の 1000 クロック サイクル内に共通クロック周期が見つからないということです。Vivado タイミング エンジンにより、最初の 1000 クロック サイクルに基づいてソース クロックとデスティネーション クロックが選択されますが、これらのエッジはクロック間の最悪の条件での解析を反映していない可能性があります。

ヒント: ここで説明した色はデフォルトの色です。デフォルト設定を変更している場合は、上の図とは異なる色で表示されます。

2. [Close] ボタン をクリックして [Clock Interaction] ウィンドウを閉じます。

手順 7: タイミング サマリ レポートタイミング パスは、クロックが供給されるエレメントで開始し、終了します。入力および出力ポートは順次エレメントではないので、入力/出力遅延解析が指定されていなければ、デフォルトでは Vivado タイミング解析でデザインのI/O ポートとの間のパスはタイミング解析されません。この手順では、Vivado でタイミング レポートを生成して確認します。1. [Reports] → [Timing] → [Report Timing Summary] をクリックします。2. [OK] をクリックし、デフォルトのオプションを使用してレポートを生成します。次の図に示すように、[Timing Summary] タブが表示されます。

デザインのセットアップ タイミングは満たされていますが、ホールド要件は満たされていません。デザインをインプリメントする前は、タイミング解析では理想的な配置での見積もりネット遅延が使用されます。フローのこの段階では多少のホールド違反が発生するのは普通で、配線段階で修正されます。ここでは、レポートの内容を確認します。

3. デザインのタイミング サマリ セクションで [Worst Negative Slack] リンクをクリックし、デザインのワースト タイミング パスを確認します。

4. ワースト パスを選択し、[F4] キーを押して回路図を表示します。次の図に、デザインのワースト セットアップパスを示します。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 28UG945 (v2019.2) 2019 年 12 月 6 日

Page 29: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

5. タイミング サマリ ツリーで [Check Timing] を選択します。• 次の図に示すように、[Check Timing] に表示される問題は 9 つあります。• このうち 8 つは pulse_width_clock チェックで、Timing Constraints ウィザードでも示されましたが、制約しませんでした。タイミング ロジック パスには対応する不足したクロックは不要なので、これらの違反の重要性は低くなります。

• [Check Timing] で検出されたもう 1 つの問題は、no_input_delay チェックです。これは、フォルス パスに設定されているリセット信号に入力制約が不足していることが原因です。この例では、これも無視しても問題はありません。

6. タイミング サマリ ツリーで [Clock Summary] を選択します。タイミング サマリ レポートのクロック サマリ セクションには、デザイン内のクロックがすべてリストされ、各クロックの周波数および波形が示されます。階層は、生成クロックとプライマリ クロックの関係を示しています(cpuClk_5 と sysClk など)。たとえば、cpuClk_5 はプライマリ クロック SysClk から生成されており、その周期は sysClk の周期の 2 倍です。

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 29UG945 (v2019.2) 2019 年 12 月 6 日

Page 30: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

タイミング サマリ レポートのこれ以外のセクションでは、パスがタイプごとにグループ化されています。各セクションには、グループの上位 10 個のパスがリストされます (レポート生成時に指定)。これらのパスには、クロック間パス、クロック内のパス、その他のパス グループ、ユーザーが無視したパス、制約が設定されていないパスがあります。ルートをクリックすると、その下のパスのサマリが表示されます。ツリーをさらに展開していくと、各グループの上位タイミング パスが表示されます。

まとめこの後すぐに演習 2 の「物理制約の設定」に進むか、Vivado Design Suite をいったん終了して後で演習 2 に進むことができます。演習 2 では、この演習で作成したプロジェクトを使用するので、ここまでの作業を削除しないようにしてください。この演習では、次のことを学びました。• 制約セットの作成方法およびターゲット制約ファイルの設定方法• Timing Constraints ウィザードを使用したデザインへのタイミング制約の追加方法• Timing Constraint Editor を使用したタイミング例外の追加方法• メモリの制約をディスクに保存する重要性• クロック関連性レポートの生成方法および結果のマトリックスの解釈方法• タイミング サマリ レポートの生成方法および結果の解釈方法

演習 1: 演習 1: タイミング制約および例外の定義

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 30UG945 (v2019.2) 2019 年 12 月 6 日

Page 31: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

演習 2

演習 2: 物理制約の設定この演習では、CPU ネットリスト デザインの物理制約を作成し、GUI での操作がどのように Tcl コマンドに変換されるのかを確認します。Tcl コマンドを使用すると、複雑な操作を簡単にスクリプト化して、フローのさまざまな段階で繰り返し使用することが可能です。注記: 演習 1 から続けて実行しており、デザインが開いた状態である場合は、手順 2: 配置制約の追加 に進んでください。

手順 1: プロジェクトを開くこの演習は、演習 1 の終わりから始まります。演習 2 を始める前に、演習 1 を必ず終わらせてください。演習 1 の最後にツールを終了した場合、またはチュートリアル プロジェクトを閉じた場合は、もう一度ツールを起動してプロジェクトを開く必要があります。1. 次のいずれかの方法で Vivado® 統合設計環境 (IDE) を起動します。

• Windows デスクトップの Vivado IDE のアイコンをダブルクリックします。• [Windows] → [Programs] → [Xilinx Design Tools] → [Vivado 2019.x] → [Vivado 2019.x] をクリックします。• コマンド ターミナルで「vivado」と入力します。Getting Started ページから最近開いたプロジェクトを開くことができます。

2. [Recent Projects] の下の [project_cpu_netlist] をクリックします。

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 31UG945 (v2019.2) 2019 年 12 月 6 日

Page 32: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

手順 2: 配置制約の追加デザイン階層の一部を確認して、物理制約を作成するためにロジック エレメントを配置します。1. Flow Navigator で [Open Synthesized Design] をクリックします。この手順に直接進んだ場合は、合成済みのデザインが既に開いているかもしれません。合成済みネットリストが開き、[Device] ウィンドウが表示されます。

2. [Netlist] ウィンドウをクリックし、[clkgen] 階層を展開します。3. [Leaf Cells] フォルダーを展開し、[mmcm_adv_inst] (MMCME2_ADV) インスタンスを選択します。

4. [Cell Properties] ビューの [Properties] タブを確認します。[STATUS] が [UNPLACED] になっており、IS_LOC_FIXED または IS_BEL_FIXED プロパティはありません。

5. [Tcl Console] ウィンドウに次を入力します。get_property IS_LOC_FIXED [get_cells clkgen/mmcm_adv_inst]

0 が返されます。つまり、このオブジェクトは特定のロケーションに固定されていません。6. [Device] ウィンドウの右下を拡大表示し、クロック領域 X1Y0 の下半分を表示し、選択したオブジェクトを配置する準備をします。次の図を参照してください。

ヒント: [Routing Resources] をオフにして配線リソースを非表示にすると、[Device] ウィンドウでロジックを配置しやすくなります。[Routing Resources] がオンになっている場合は、ツールバーの [Routing Resources] ボタン をクリックしてオフにします。

演習 2: 演習 2: 物理制約の設定

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 32UG945 (v2019.2) 2019 年 12 月 6 日

Page 33: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

7. [Netlist] ウィンドウで [mmcm_adv_inst] を選択し、[Device] ウィンドウにドラッグして、右下にあるMMCME2_ADV に配置します。

8. [Tcl Console] ウィンドウを確認します。次の 3 つのコマンドが表示されているはずです。startgroupplace_cell clkgen/mmcm_adv_inst MMCME2_ADV_X1Y0/MMCME2_ADVendgroup

startgroup および endgroup Tcl コマンドは、Vivado ツールで取り消し機能をサポートするためコマンド シーケンスを囲みます。間違えた場合は、[Tcl Console] ウィンドウで undo コマンドを使用するか、または [Edit] → [Undo] をクリックします。現在の配置が解除され、やり直すことができます。startgroup、endgroup、および undo の詳細は、『Vivado Design Suite Tcl コマンド リファレンス ガイド』 (UG835) を参照してください。

9. [Cell Properties] ウィンドウの [Properties] タブで配置した MMCM セルを確認します。次の図に示すように、オブジェクトが配置されたことを反映して、IS_BEL_FIXED および IS_LOC_FIXED プロパティがオンになっています。STATUS プロパティも FIXED に設定されています。注記: [Device] ウィンドウの [Cell Drag and Drop] モードにより、オブジェクトを配置したときに IS LOC FIXED のみを設定するか、IS BEL FIXED も設定するかが決定されます。[Device] ウィンドウの詳細は、『Vivado DesignSuite ユーザー ガイド: Vivado IDE の使用』 (UG893) のこのセクションを参照してください。

演習 2: 演習 2: 物理制約の設定

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 33UG945 (v2019.2) 2019 年 12 月 6 日

Page 34: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

オブジェクトの IS_BEL_FIXED および IS_LOC_FIXED プロパティは物理制約で、オブジェクトの配置を反映しています。これらの制約は Vivado インプリメンテーションで使用され、ツールでは変更されません。これらのプロパティが無効な場合、デザイン フローの後の段階でエラーが発生します。[Device] ウィンドウで mmcm_adv_inst を配置すると、[Save Constraints] ボタン がイネーブルになります。物理制約は Vivado ツールのインメモリ デザインには追加されていますが、ターゲット制約ファイルには保存されていません。

手順 3: 追加の物理制約の定義この手順では、PACKAGE_PIN や PROHIBIT などの追加の物理制約をデザインに定義します。1. [Layout] → [I/O Planning] をクリックし、[I/O Planning] レイアウトを開きます。

[I/O Planning] レイアウトには、I/O ポートを割り当てやすくすため、[Package] ウィンドウに加え、[I/O Ports]および [Package Pins] ウィンドウが表示されます。ここでは PCB レイアウトは完了していると想定しており、FPGA パッケージの一部のピンにはアクセスできません。配置配線中に Vivado ツールでこれらのピンにアクセスできないようにすることが可能です (すべての I/O割り当てを完了していないと想定)。

2. [Package] ウィンドウで [AA8] ピンを選択します。ヒント: [Package] ウィンドウの X 軸および Y 軸の値を使用すると、パッケージ上でピンの位置を特定しやすくなります。

3. ピンを選択して右クリックし、[Set Prohibit] をクリックします。

演習 2: 演習 2: 物理制約の設定

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 34UG945 (v2019.2) 2019 年 12 月 6 日

Page 35: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

このピンの選択を解除すると、サイトに斜線が入った赤丸が表示されます。これは、このピンを使用できないことを示します。

4. [Tcl Console] ウィンドウで、Vivado IDE で生成された Tcl コマンドを確認します。startgroupset_property prohibit 1 [get_bels IOB_X1Y34/PAD]set_property prohibit 1 [get_sites AA8]endgroup

手順 4: オブジェクト プロパティを使用した制約の定義ここまでこのチュートリアルで、タイミング制約および配置制約の作成方法を学びました。Vivado インプリメンテーションでの処理方法を制御するため、セルのプロパティも変更できます。多くの物理制約は、セル オブジェクトのプロパティとして定義されます。たとえば、デザインの RAM にタイミング問題があることが発覚した場合、再合成を避けるため、その RAM セルのプロパティを変更してパイプライン レジスタに追加できます。この方法を設計者および検証チームが承認したら、デザインを変更できます。

セル プロパティの設定合成後に RTL に戻るのは時間とコストがかかりすぎるので、ネットリストで次のように変更できます。1. [Edit] → [Find] をクリックし [Find] ダイアログ ボックスを開きます。

a. [Find] に [Cells] を選択します。

演習 2: 演習 2: 物理制約の設定

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 35UG945 (v2019.2) 2019 年 12 月 6 日

Page 36: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

b. [Properties] で [PRIMITIVE_TYPE] を選択し、値を [BMEM.BRAM] に設定します。c. [Search hierarchically] がオンになっていることを確認します。d. [OK] をクリックします。

[Find Results] ウィンドウが開きます。2. [Find Results] ウィンドウのツールバーで [Show Search] ボタン をクリックします。3. 「ingressLoop」を検索し、セル fftEngine/fftInst/ingressLoop[7].ingressFifo/ を選択します。

[Cell Properties] ウィンドウの [Properties] タブで、DOA_REG および DOB_REG が 0 に設定されており、出力レジスタがディスエーブルになっていることを確認できます。

4. [Tcl Console] ウィンドウからこのセルのカスタム タイミング レポートを生成します。次の Tcl コマンドを入力します。report_timing -from [get_cells fftEngine/fftInst/ingressLoop[7].ingressFifo/buffer_fifo/infer_fifo.block_ram_performance.fifo_ram_reg]

ヒント: [Cell Properties] ウィンドウの [General] タブからセル名をコピーし、Tcl コンソールに貼り付けることができます。

5. [Tcl Console] ウィンドウの右上にある [Maximize] ボタン をクリックしてウィンドウを最大化し、タイミングレポートを見やすくします。

6. レポートのデータパスのセクションを見ると、この RAMB により 1.800 ns 追加されています。

演習 2: 演習 2: 物理制約の設定

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 36UG945 (v2019.2) 2019 年 12 月 6 日

Page 37: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

7. [Tcl Console] ウィンドウを標準サイズに戻します。8. [Cell Properties] ウィンドウの [Properties] タブで、このセルの DOA_REG および DOB_REG プロパティを選択し、それぞれの値を 0 から 1 に変更します。[Tcl Console] ウィンドウで set_property コマンドが 2 回実行されているのがわかります。set_property DOA_REG {1} [get_cells {fftEngine/fftInst/ingressLoop[7].ingressFifo/buffer_fifo/infer_fifo.block_ram_performance.fifo_ram_reg}] set_property DOB_REG {1} [get_cells {fftEngine/fftInst/ingressLoop[7].ingressFifo/buffer_fifo/infer_fifo.block_ram_performance.fifo_ram_reg}]

9. 選択したセルのタイミング レポートを実行します。次の Tcl コマンドを入力します。report_timing -from [get_cells fftEngine/fftInst/ingressLoop[7].ingressFifo/buffer_fifo/infer_fifo.block_ram_performance.fifo_ram_reg]

10. RAM のデータパス遅延が 0.622 ns になりました。

デザイン プロパティの設定次に、デザインにコンフィギュレーション モードを設定します。これも物理制約になるプロパティの 1 つですが、セルのプロパティではなくデザインのプロパティです。まず、現在のデザイン プロパティをすべてリストします。1. [Tcl Console] ウィンドウで、次のコマンドを使用してデザインのプロパティをリストします。

list_property [current_design]

このコマンドを実行すると、現在のデザインに定義されているプロパティがすべてリストされます。このリストをもう少し読みやすくするには、標準 Tcl コマンド join を使用し、出力されるプロパティを \n 改行文字で連結し、各プロパティが 1 行ごとに表示されるようにします。join [list_property [current_design]] \n

2. CONFIG_MODE プロパティを確認します。このプロパティに使用可能な値を表示するには、次のlist_property_value Tcl コマンドを使用します。join [list_property_value CONFIG_MODE [current_design]] \n

3. [Tools] → [Edit Device Properties] をクリックし、現在のデザインに CONFIG_MODE プロパティを設定します。[Edit Device Properties] ダイアログ ボックスが開きます。

4. [Configuration Modes] をクリックして [Configuration Modes] ページを開きます。5. このページをスクロール ダウンし、[Mater Serial] というコンフィギュレーション モード オプションを表示しま

す。

演習 2: 演習 2: 物理制約の設定

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 37UG945 (v2019.2) 2019 年 12 月 6 日

Page 38: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

6. [Master Serial] をオンにし、[OK] をクリックしてダイアログ ボックスを閉じます。[Tcl Console] ウィンドウに、CONFIG_MODE を設定する set_property コマンドが表示されます。set_property CONFIG_MODE M_SERIAL [current_design]

これでコンフィギュレーション モードが設定されました。7. get_property コマンドを使用し、CONFIG_MODE プロパティが正しく設定されていることを確認します。

get_property CONFIG_MODE [current_design]

Vivado ツールにより、プロパティ値 M_SERIAL が返されます。

手順 5: 制約の保存新しいデザイン制約を追加したので、[Save Constraints] アイコンが有効になっています。演習 2 で変更したセルおよびデザイン プロパティは Vivado ツールのインメモリ デザインには追加されていますが、ターゲット制約ファイルには保存されていません。

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

演習 2: 演習 2: 物理制約の設定

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 38UG945 (v2019.2) 2019 年 12 月 6 日

Page 39: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

演習 2 で定義した物理制約がターゲット制約ファイルに保存されます。2. [Sources] ウィンドウでアクティブになっている制約セットからターゲット XDC をダブルクリックし、Vivado

IDE のテキスト エディターで開きます。注記: このファイルを既に開いている場合は、[Reload] リンクをクリックしてファイルをアップデートします。演習 2 で使用した 7 つの set_property コマンドが制約ファイルに保存されています。XDC ファイルにはデザイン制約のみが書き込まれ、この演習で使用したオブジェクト クエリやレポート コマンドは書き込まれません。

3. 開いている制約ファイルに次の制約があることを確認します。set_property BEL MMCME2_ADV [get_cells clkgen/mmcm_adv_inst]set_property LOC MMCME2_ADV_X1Y0 [get_cells clkgen/mmcm_adv_inst]set_property PROHIBIT true [get_bels IOB_X1Y34/PAD]set_property PROHIBIT true [get_sites AA8]set_property DOA_REG 1 [get_cells \{fftEngine/fftInst/ingressLoop[7].ingressFifo/buffer_fifo/infer_fifo.block_ram_\performance.fifo_ram_reg}]set_property DOB_REG 1 [get_cells \{fftEngine/fftInst/ingressLoop[7].ingressFifo/buffer_fifo/infer_fifo.block_ram_\performance.fifo_ram_reg}]set_property CONFIG_MODE M_SERIAL [current_design]

4. Vivado IDE を終了します。

まとめこの演習では、Vivado IDE および Tcl コンソールの両方を使用して、物理制約を作成および検証する方法を学びました。IDE で実行したほとんどの操作は、Tcl コンソールで実行される Tcl コマンドに変換されました。Vivado IDE には、物理制約およびタイミング制約を設定するための優れた対話型機能があり、制約は制約ファイルに保存して必要に応じて再利用できます。

演習 2: 演習 2: 物理制約の設定

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 39UG945 (v2019.2) 2019 年 12 月 6 日

Page 40: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

付録 A

その他のリソースおよび法的通知

ザイリンクス リソースアンサー、資料、ダウンロード、フォーラムなどのサポート リソースは、ザイリンクス サポート サイトを参照してください。

Documentation Navigator およびデザイン ハブザイリンクス Documentation Navigator (DocNav) では、ザイリンクスの資料、ビデオ、サポート リソースにアクセスでき、特定の情報を取得するためにフィルター機能や検索機能を利用できます。DocNav を開くには、次のいずれかを実行します。• Vivado® IDE で [Help] → [Documentation and Tutorials] をクリックします。• Windows で [スタート] → [すべてのプログラム ] → [Xilinx Design Tools] → [DocNav] をクリックします。• Linux コマンド プロンプトに「docnav」と入力します。ザイリンクス デザイン ハブには、資料やビデオへのリンクがデザイン タスクおよびトピックごとにまとめられており、これらを参照することでキー コンセプトを学び、よくある質問 (FAQ) を参考に問題を解決できます。デザイン ハブにアクセスするには、次のいずれかを実行します。• DocNav で [Design Hub View] タブをクリックします。• ザイリンクス ウェブサイトでデザイン ハブ ページを参照します。注記: DocNav の詳細は、ザイリンクス ウェブサイトの Documentation Navigator ページを参照してください。DocNav からは、日本語版は参照できません。ウェブサイトのデザイン ハブ ページをご利用ください。

お読みください: 重要な法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には「貴殿」、法人その他の団体の場合には「貴社」。以下同じ) に開示される情報 (以下「本情報」といいます) は、ザイリンクスの製品を選択および使用することのためにのみ提供されます。適用される法律が許容する最大限の範囲で、(1) 本情報は「現状有姿」、およびすべて受領者の責任で (with all faults) という状態で提供され、ザイリンクスは、本通知をもって、明示、黙示、法定を問わず (商品性、非侵害、特定目的適合性の保証を含みますがこれらに限られません)、すべての保証および条件を負わない (否認する) ものとします。また、(2) ザイリンクスは、本情報 (貴殿または貴社による本情報の使用を含む) に関係し、起

付録 A: その他のリソースおよび法的通知

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 40UG945 (v2019.2) 2019 年 12 月 6 日

Page 41: Vivado Design Suite チュートリアル: 制約の使用€¦ · ハードウェアおよびソフトウェア要件..... 5 チュートリアル デザイン ファイルの準備

因し、関連する、いかなる種類・性質の損失または損害についても、責任を負わない (契約上、不法行為上 (過失の場合を含む)、その他のいかなる責任の法理によるかを問わない) ものとし、当該損失または損害には、直接、間接、特別、付随的、結果的な損失または損害 (第三者が起こした行為の結果被った、データ、利益、業務上の信用の損失、その他あらゆる種類の損失や損害を含みます) が含まれるものとし、それは、たとえ当該損害や損失が合理的に予見可能であったり、ザイリンクスがそれらの可能性について助言を受けていた場合であったとしても同様です。ザイリンクスは、本情報に含まれるいかなる誤りも訂正する義務を負わず、本情報または製品仕様のアップデートを貴殿または貴社に知らせる義務も負いません。事前の書面による同意のない限り、貴殿または貴社は本情報を再生産、変更、頒布、または公に展示してはなりません。一定の製品は、ザイリンクスの限定的保証の諸条件に従うこととなるので、https://japan.xilinx.com/legal.htm#tos で見られるザイリンクスの販売条件を参照してください。IP コアは、ザイリンクスが貴殿または貴社に付与したライセンスに含まれる保証と補助的条件に従うことになります。ザイリンクスの製品は、フェイルセーフとして、または、フェイルセーフの動作を要求するアプリケーションに使用するために、設計されたり意図されたりしていません。そのような重大なアプリケーションにザイリンクスの製品を使用する場合のリスクと責任は、貴殿または貴社が単独で負うものです。https://japan.xilinx.com/legal.htm#tos で見られるザイリンクスの販売条件を参照してください。

自動車用のアプリケーションの免責条項オートモーティブ製品 (製品番号に「XA」が含まれる) は、ISO 26262 自動車用機能安全規格に従った安全コンセプトまたは余剰性の機能 (「セーフティ設計」) がない限り、エアバッグの展開における使用または車両の制御に影響するアプリケーション (「セーフティ アプリケーション」) における使用は保証されていません。顧客は、製品を組み込むすべてのシステムについて、その使用前または提供前に安全を目的として十分なテストを行うものとします。セーフティ設計なしにセーフティ アプリケーションで製品を使用するリスクはすべて顧客が負い、製品責任の制限を規定する適用法令および規則にのみ従うものとします。

商標© Copyright 2012-2019 Xilinx, Inc. Xilinx、Xilinx のロゴ、Alveo、Artix、Kintex、Spartan、Versal、Virtex、Vivado、Zynq、およびこの文書に含まれるその他の指定されたブランドは、米国およびその他各国のザイリンクス社の商標です。 すべてのその他の商標は、それぞれの保有者に帰属します。

この資料に関するフィードバックおよびリンクなどの問題につきましては、[email protected] まで、または各ページの右下にある [フィードバック送信] ボタンをクリックすると表示されるフォームからお知らせください。フィードバックは日本語で入力可能です。いただきましたご意見を参考に早急に対応させていただきます。なお、このメール アドレスへのお問い合わせは受け付けておりません。あらかじめご了承ください。

付録 A: その他のリソースおよび法的通知

UG945 (v2019.1) 2019 年 6 月 24 日 japan.xilinx.com制約の使用 41UG945 (v2019.2) 2019 年 12 月 6 日