• 検索結果がありません。

Vivado Design Suite ユーザー ガイド : 合成 (UG901)

N/A
N/A
Protected

Academic year: 2021

シェア "Vivado Design Suite ユーザー ガイド : 合成 (UG901)"

Copied!
152
0
0

読み込み中.... (全文を見る)

全文

(1)

Vivado Design Suite

ユーザー

ガ イ ド

合成

UG901 (v2014.1) 2014 年 5 月 1 日

本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。 資料

によっては英語版の更新に対応していないものがあります。 日本語版は参考用としてご使用の上、最新情報に

つきましては、必ず最新英語版をご参照ください。

(2)

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

日付 バージ ョ ン 改訂内容

2014 年 4 月 23 日 2014.1 2014.1 用の リ リ ース

(3)

改訂履歴 . . . 2

第 1 章 : Vivado 合成

概要 . . . 5 合成手法 . . . 6 合成の使用 . . . 6 レ ポー ト の表示 . . . 26 ロ ジ ッ ク の解析 . . . 28 Tcl での合成の実行 . . . 30

第 2 章 : 合成属性

概要 . . . 33 サポー ト さ れ る 属性 . . . 33

第 3 章 : SystemVerilog サポー ト

概要 . . . 47 特定の フ ァ イ ルで SystemVerilog を使用 . . . 47 デー タ 型 . . . 48 プ ロ セ ス . . . 52 手続 き プ ロ グ ラ ム代入文 . . . 54 タ ス ク お よ び関数 . . . 55 モジ ュ ールお よ び階層 . . . 56 イ ン タ ーフ ェ イ ス . . . 58

第 4 章 : HDL コ ーデ ィ ング手法

概要 . . . 61 VHDL の利点 . . . 61 Verilog の利点 . . . 61 SystemVerilog の利点 . . . 62 フ リ ッ プ フ ロ ッ プ、 レ ジ ス タ 、 お よ び ラ ッ チ . . . 62 ラ ッ チ . . . 66 ト ラ イ ス テー ト . . . 68 シ フ ト レ ジ ス タ . . . 72 ダ イ ナ ミ ッ ク シ フ ト レ ジ ス タ . . . 76 乗算器 . . . 78 FIR フ ィ ル ター . . . 86 RAM の HDL コ ーデ ィ ン グ手法 . . . 88 RAM の HDL コ ー ド 記述のガ イ ド ラ イ ン . . . 89 ブ ラ ッ ク ボ ッ ク ス . . . 141 FSM コ ンポーネ ン ト . . . 143 ROM の HDL コ ーデ ィ ン グ手法 . . . 148

(4)

ソ リ ュ ーシ ョ ン セン ター . . . 151 Vivado 資料 . . . 151 法的通知 . . . 152

(5)

Vivado 合成

概要

合成は、RTL で記述 さ れたデザ イ ン を ゲー ト レベル記述に変換す る プ ロ セ ス です。 Vivado® 合成は タ イ ミ ン グ ド リ ブンであ り 、 メ モ リ 使用量お よ びパフ ォーマ ン ス で最適化 さ れてい ます。Vivado 合成では、 次の言語の合成可能なサ ブセ ッ ト がサポー ト さ れます。 • SystemVerilog

SystemVerilog (統合ハー ド ウ ェ ア設計、 仕様、 および検証言語) の IEEE 規格 (IEEE 標準規格 1800-2012) • Verilog

Verilog ハー ド ウ ェ ア記述言語の IEEE 標準規格 (IEEE 標準規格 1364-2005)

• VHDL

VHDL 言語の IEEE 標準規格 (IEEE 標準規格 1076-2002)

• 混合言語

VHDL、 Verilog、 および SystemVerilog を混合し て使用する こ と も サポー ト さ れてい ます。

Vivado ツールでは、業界標準の Synopsys Design Constraints (SDC) に基づ く ザ イ リ ン ク ス デザ イ ン制約 (XDC) も サポー ト さ れてい ます。

重要 : Vivado 合成では、UCF 制約はサポー ト されません。 UCF 制約は XDC 制約に変換する必要があ り ます。詳細は、

『ISE か ら Vivado Design Suite への移行ガ イ ド 』 (UG911) [参照 6] の 「UCF 制約の XDC 制約への移行」 を参照し て く だ さ い。

合成を設定 し て実行する には、 次の 2 つの方法があ り ます。

• プ ロ ジ ェ ク ト モー ド を使用

• 非プ ロ ジ ェ ク ト モー ド を使用 (Tcl コ マン ド ま たは ス ク リ プ ト を実行 し、 デザ イ ン フ ァ イ ルをユーザーが制御)

操作モー ド の詳細は、 『Vivado Design Suite ユーザー ガ イ ド : デザ イ ン フ ローの概要』 (UG892) [参照 7] を参照し て く だ さ い。 こ の章では、 両方のモー ド を使用 し た合成を個別のセ ク シ ョ ンで説明 し ます。

(6)

合成手法

Vivado IDE では、 合成およびイ ンプ リ メ ンテーシ ョ ン run を ボ タ ン を ク リ ッ ク する だけで実行可能な環境が提供 さ れ

てい ます。run のデータ は自動的に管理 さ れ、 さ ま ざ ま な RTL ソ ース バージ ョ ン、 タ ーゲ ッ ト デバ イ ス、 合成お よ び イ ンプ リ メ ン テーシ ョ ン オプシ ョ ン、 物理制約およびタ イ ミ ン グ制約を使用 し て繰 り 返 し実行で き ます。 Vivado IDE では、 次の操作を実行で き ます。 • ス ト ラ テジ を作成お よ び保存。 ス ト ラ テジ と は、 合成ま たは イ ンプ リ メ ン テーシ ョ ンのデザ イ ン run に適用 さ れ る コ マ ン ド オプシ ョ ンの設定です。 詳細は、10 ページの 「run ス ト ラ テジの作成」 を参照 し て く だ さ い。 • 複数の合成お よ び イ ンプ リ メ ン テーシ ョ ン run を設定し 、 順次に、 ま たはマルチプ ロ セ ッ サ マシ ンで同時に実 行。 詳細は、14 ページの 「合成の実行」 を参照 し て く だ さ い。 • 合成ま たは イ ンプ リ メ ン テーシ ョ ンの進捗状況を監視、 ロ グ レ ポー ト を確認、run を キ ャ ンセル。詳細は、22 ペー ジの 「合成実行の監視」 を参照 し て く だ さ い。

合成の使用

こ のセ ク シ ョ ンでは、Vivado 統合設計環境 (IDE) を使用 し て Vivado 合成を設定および実行する方法を説明し ます。各

Vivado IDE 操作の下に、 同等の Tcl コ マン ド を示し ます。

Tcl コ マン ド の詳細および Tcl の使用方法は、 次のガ イ ド を参照し て く だ さ い。 • 『Vivado Design Suite Tcl コ マン ド リ フ ァ レ ン ス ガ イ ド 』 (UG835) [参照 3]

(7)

合成設定

デザ イ ンの合成オプシ ョ ン を設定する には、 次の手順に従い ます。

1. Flow Navigator で [Synthesis] → [Synthesis Settings] を ク リ ッ ク し ます (図 1-1)。

図 1-2 に示す [Project Settings] ダ イ ア ロ グ ボ ッ ク ス が開き ます。

X-Ref Target - Figure 1-1

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

X-Ref Target - Figure 1-2

(8)

2. [Project Settings] ダ イ ア ロ グ ボ ッ ク ス で、 次の よ う に設定 し ます。

a. [Synthesis] ページの [Constraints] で、 [Default Constraint Set] にア ク テ ィ ブな制約セ ッ ト と する制約セ ッ ト を 選択 し ます。 制約セ ッ ト は、 ザ イ リ ン ク ス デザ イ ン制約 (XDC) で記述 さ れたデザ イ ン制約を含む複数の制 約フ ァ イ ルのセ ッ ト です。 デザ イ ン制約には、 次の 2 種類があ り ます。 - 物理制約 : ピ ン配置、 ブ ロ ッ ク RAM、 LUT、 フ リ ッ プフ ロ ッ プな どのセルの絶対配置ま たは相対配置、 お よ びデバ イ ス の コ ン フ ィ ギ ュ レーシ ョ ン設定を定義 し ます。 - タ イ ミ ン グ制約 : デザ イ ンの周波数要件を定義し ます。 タ イ ミ ン グ制約を設定し ない場合、 デザ イ ンが ワ イ ヤの長 さ お よ び配線の密集度にのみ基づいて最適化 さ れます。

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

選択 し た制約セ ッ ト は新 し い run に使用 さ れ、 デザ イ ンの変更 も こ の制約セ ッ ト に保存 さ れます。

タ ーゲ ッ ト 制約セ ッ ト を設定する Tcl コ マン ド : -constrset <arg>

b. [Options] エ リ アで、 [Strategy] ド ロ ッ プダ ウ ン リ ス ト か ら 合成 run に使用する合成ス ト ラ テジ を選択 し ます。 あ ら か じ め定義 さ れた ス ト ラ テジか ら 選択する か、 ま たは独自の ス ト ラ テジ を定義で き ます。 合成ス ト ラ テ ジ を選択す る と 、 使用可能な Vivado ス ト ラ テ ジがダ イ ア ロ グ ボ ッ ク ス に表示 さ れます。 オプシ ョ ンの値を 変更する と 、10 ページの 「run ス ト ラ テジの作成」 に説明 さ れてい る よ う に、 合成ス ト ラ テジの設定を変更 で き ます。 表 1-1 に、 run ス ト ラ テジ、 そのデフ ォル ト 設定、 およびその他のオプシ ョ ン を示し ます。 表の後に、 オプシ ョ ンの詳細を説明 し ます。 c. 表示 さ れてい る オプシ ョ ン を選択 し ます。 次のオプシ ョ ンがあ り ます。 - [tcl.pre] および [tcl.post] : 合成の前後に実行する Tcl フ ァ イ ルを指定し ます。

注記 : tcl.pre および tcl.post ス ク リ プ ト 内のパスは、 現在のプ ロ ジ ェ ク ト に関連付け ら れてい る run デ ィ レ ク ト リ <project>/<project.runs>/<run_name> を基準 と し ています。

Tcl ス ク リ プ ト の詳細は、 『Vivado Design Suite ユーザー ガ イ ド : Tcl ス ク リ プ ト 機能の使用』 (UG894) [参 照 4] を参照 し て く だ さ い。

表 1-1 : Vivado Defaults と Flow_RunTimeOptimized ス ト ラ テジ

オプ シ ョ ン/ス ト ラ テ ジ Defaults Flow_RuntimeOptimized

-flatten_hierarchy rebuilt none

-gated_clock_conversion off off

-bufg 12 12

-fanout_limit 10,000 10,000

-directive default RunTimeOptimized

-fsm_extraction auto off

-keep_equivalent_registers オ フ オ フ

-resource_sharing auto auto

-control_set_opt_threshold 4 4

-no_lc オ フ オ フ

-shreg_min_size 3 3

-max_bram -1 -1

(9)

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

プ ロパテ ィ を取得する Tcl コ マン ド

- get_property DIRECTORY [current_project] - get_property DIRECTORY [current_run]

- [-flatten_hierarchy] : Vivado 合成での階層の制御方法を指定し ます。 - [none] : 階層を フ ラ ッ ト 化し ません。 合成の出力には、 元の RTL と 同 じ階層が含まれます。 - [full] : 最上位以外の階層をすべて フ ラ ッ ト 化 し ます。 - [rebuilt] : 階層を フ ラ ッ ト 化し て合成を実行し た後に、 元の RTL に基づいて階層を再構築し ます。 こ の 設定を使用する と 、 境界を越え た最適化を実行で き る ので QoR が向上し 、 最終的な階層は RTL と 似た も のにな る ので解析 し やす く な り ます。 - [-gated_clock_conversion] : ゲーテ ッ ド ク ロ ッ ク を イ ネーブルに変換する機能をオン/オ フに し ます。 ゲーテ ッ ド ク ロ ッ ク の変換を使用する には、RTL 属性も 必要です。詳細は、38 ページの「GATED_CLOCK」 を参照 し て く だ さ い。 - [-bufg] : デザ イ ンで推論可能な BUFG の最大数を指定 し ます。 こ のオプシ ョ ンは、 デザ イ ン ネ ッ ト リ ス ト のほかの BUFG が合成プ ロ セ ス で認識 さ れない場合に使用し ます。 RTL に イ ン ス タ ン シエー ト さ れてい る BUFG の数が検出 さ れ、 指定 さ れた数ま での BUFG が推論 さ れ ます。 た と えば、 –bufg オプシ ョ ン を 12 に設定 し、 RTL に 3 つの BUFG が イ ン ス タ ン シエー ト さ れて い る と する と 、 あ と 9 個の BUFG を推論可能です。 - [-fanout_limit] : 信号で駆動可能な ロー ド の最大数を指定し ます。 ロー ド の数が こ れよ り 大き く な る場合 は、 ロ ジ ッ ク が複製 さ れます。 こ のグ ローバル設定は一般的なガ イ ド ラ イ ンであ り 、 ツールで必要 と 判 断 さ れた場合は無視 さ れます。 制限を強制す る 必要があ る 場合は、第 2 章 「合成属性」 に説明 さ れてい る MAX_FANOUT を参照 し て く だ さ い。 注記 : -fanout_limit オプシ ョ ンは、 制御信号 (セ ッ ト 、 リ セ ッ ト 、 ク ロ ッ ク イ ネーブルな ど) には適 用 さ れません。 こ れ ら の信号を複製する 必要があ る 場合は、 MAX_FANOUT を使用し て く だ さ い。

- [-directive] : [-effort_level] に置き換わ る オプシ ョ ンで、 Vivado 合成の最適化方法を指定し ます。 設定可

能な値は [Default] と [RuntimeOptimized] です。 [RuntimeOptimized] を選択する と 、 合成が最適化を少な く し て高速に実行 さ れます。 - [-fsm_extraction] : 有限ス テー ト マシ ンの抽出およびマ ッ プ方法を指定し ます。 オプシ ョ ンは、36 ページ の 「FSM_ENCODING」 お よ び 143 ページの 「FSM 記述」 で詳細に説明 さ れてい ます。 - [-keep_equivalent_registers] : 同じ 入力ロ ジ ッ ク を使用する レ ジ ス タ が統合 さ れない よ う に し ます。 詳細 は、39 ページの 「KEEP」 を参照 し て く だ さ い。 - [-resource_sharing] : 異な る信号間での算術演算子の共有を設定 し ます。設定可能な値は [auto]、[on]、[off] です。 [auto] に設定す る と リ ソ ー ス の共有はデザ イ ン の タ イ ミ ン グ に応 じ て実行 さ れ、 [on] に設定す る と リ ソ ース の共有は常にオン、[off] に設定する と 常にオ フです。 - [-control_set_opt_threshold] : ク ロ ッ ク イ ネーブル最適化の し き い値を設定し 、 制御セ ッ ト の数を削減し ます。 デフ ォル ト 値は 1 です。 制御セ ッ ト を レ ジ ス タ の D ロ ジ ッ ク に移動する ために必要な フ ァ ン ア ウ ト の数を指定 し ます。 フ ァ ン ア ウ ト が指定の値 よ り 大 き い場合は、 その信号で レ ジ ス タ の制御セ ッ ト ピ ンが駆動 さ れ る よ う 試み ら れ ます。 - [-no_lc] : オンにする と 、 LUT の結合がオフにな り ます。

(10)

ヒ ン ト : レ ジ ス タ が統合さ れないよ う にするには、 KEEP 属性を使用で き ます。 KEEP 属性は、 信号が削除さ れた り ロ ジ ッ ク ブ ロ ッ ク に吸収 さ れる よ う な最適化が実行 さ れない よ う に し ます。 こ の属性が設定 さ れた信号は保持 さ れ、 ネ ッ ト リ ス ト に含まれます。 詳細は、39 ページの 「KEEP」 を参照 し て く だ さ い。 - [-shreg_min_size] : SRL の推論の し き い値を設定し ます。 デフ ォ ル ト 値は 3 です。 こ の値は、 遅延が固定 さ れたチ ェ ーン の SRL ( ス タ テ ィ ッ ク SRL) が推論 さ れ る 順次エ レ メ ン ト の数を設定 し ます。 詳細は、 44 ページの 「SHREG_EXTRACT」 を参照 し て く だ さ い。 - [-max_bram] : デザ イ ンで使用可能なブ ロ ッ ク RAM の最大数を指定し ます。 こ のオプシ ョ ンは通常、 デ ザ イ ン にブ ラ ッ ク ボ ッ ク ス ま たはサー ド パーテ ィ ネ ッ ト リ ス ト が含まれてお り 、 こ れ ら のネ ッ ト リ ス ト 用にエ リ ア を確保する ために使用 し ます。 注記 : デフ ォル ト 設定は -1 で、 指定のパーツで使用可能な最大数が選択 さ れます。 - [-max_dsp] : デザ イ ンで使用可能な DSP ブ ロ ッ ク の最大数を指定し ます。 こ のオプシ ョ ンは通常、 デザ イ ンにブ ラ ッ ク ボ ッ ク ス ま たはサー ド パーテ ィ ネ ッ ト リ ス ト が含まれてお り 、 こ れ ら のネ ッ ト リ ス ト 用にエ リ ア を確保する ために使用 し ます。 注記 : デフ ォル ト 設定は -1 で、 指定のパーツで使用可能な最大数が選択 さ れます。

run ス ト ラ テ ジの作成

ス ト ラ テジは、 合成ツールお よ び イ ンプ リ メ ン テーシ ョ ンで実行 さ れ る さ ま ざ ま なユーテ ィ リ テ ィ やプ ロ グ ラ ムのオ プシ ョ ンのあ ら か じ め定義 さ れたセ ッ ト です。 ス ト ラ テジは、 ツールお よ びバージ ョ ン特定です。 各 メ ジ ャ ー リ リ ー ス には、 そのバージ ョ ン専用の ス ト ラ テジがあ り ます。

1. フ ロ ーの現在の ス ト ラ テジ を確認する には、[Tools] → [Options] を ク リ ッ ク し、 左側のペ イ ンで [Strategies] を ク リ ッ ク し ます。

2. [Flow] ド ロ ッ プダ ウ ン リ ス ト か ら [Vivado Synthesis] を選択し ます。 右側に表示 さ れ る オプシ ョ ンは、 [Project Settings] ダ イ ア ロ グ ボ ッ ク ス の [Synthesis] ページに表示 さ れ る も の と 同じ です。

カ ス タ ム ス ト ラ テジ を作成する には、 次のいずれかを実行 し ます。

° [User Defined Strategies] を右 ク リ ッ ク し、 [Create New Strategy] を ク リ ッ ク し ます。

° ツールバーの [Create New Strategy] ボ タ ン を ク リ ッ ク し 、[New Strategy] ダ イ ア ロ グ ボ ッ ク ス (図 1-3) を

開き ます。

3. [New Strategy] ダ イ ア ロ グ ボ ッ ク ス で ス ト ラ テジの名前 ([Name])、 ス ト ラ テジの タ イ プ ([Type])、 およびツール バージ ョ ン ([Tool version]) を指定 し ま す。 説明 ([Description]) も 入力で き ます。

4. オプシ ョ ン を設定 し た ら [OK] を ク リ ッ ク し ます。

X-Ref Target - Figure 1-3

(11)

合成への入力

Vivado 合成には、 RTL ソ ース コ ー ド およびタ イ ミ ン グ制約を入力で き ます。

RTL ま たは制約 フ ァ イ ル を 追加す る には、 Flow Navigator で [Project Manager] → [Add Sources] を ク リ ッ ク し 、 Add

Sources ウ ィ ザー ド (図 1-4) を開き、 追加する フ ァ イ ルに対応する オプシ ョ ン をオンに し ます。図 1-5 は、 最初のペー

ジ で [Add or Create Design Sources] を オ ン に し て [Next] を ク リ ッ ク し た と き に 表示 さ れ る [Add or Create Design Sources] ページ を示 し ます。

X-Ref Target - Figure 1-4

図 1-4 : Add Sources ウ ィ ザー ド

X-Ref Target - Figure 1-5

(12)

制約、RTL、 ま たはその他のプ ロ ジ ェ ク ト フ ァ イ ルを追加し ます。 Add Sources ウ ィ ザー ド の詳細は、 『Vivado Design Suite ユーザー ガ イ ド : Vivado IDE の使用』 (UG893) [参照 2] を参照し て く だ さ い。

Vivado 合成では、 ザ イ リ ン ク ス ツールでサポー ト さ れる VHDL、 Verilog、 ま たは SystemVerilog のフ ァ イ ルの合成可 能なサブセ ッ ト を読み込む こ と がで き ます。第 3 章 「SystemVerilog サポー ト 」 に、 サポー ト さ れ る SystemVerilog コ ン ス ト ラ ク ト が説明 さ れてい ます。

Vivado 合成では、 合成での処理を制御す る い く つかの RTL 属性 も サポー ト さ れてい ます。 こ れ ら の属性の説明は、

第 2 章 「合成属性」 を参照 し て く だ さ い。

Vivado 合成は、 タ イ ミ ン グ制約に XDC フ ァ イ ルが使用 さ れます。

重要 : Vivado Design Suite では、 UCF フ ォーマ ッ ト はサポー ト されません。 UCF か ら XDC への変換手順は、 『ISE か ら Vivado Design Suite への移行ガ イ ド 』 (UG911)[参照 6] を参照 し て く だ さ い。

フ ァ イルの コ ンパイル順

あ る フ ァ イ ルに宣言が含まれ、別の フ ァ イ ルがその宣言に依存 し てい る 場合、特定の コ ンパ イ ル順が必要にな り ます。 Vivado IDE では、 RTL ソ ース フ ァ イ ルの コ ンパ イ ル順は、 [Sources] ビ ューの [Compile Order] タ ブに上か ら 下への順 序で表示 さ れます。

Vivado ツールでは、 最上位モジ ュール と し て最適なモジ ュールが自動的に特定 さ れ、 コ ンパ イ ル順が自動的に管理 さ

れます。ア ク テ ィ ブ階層に含まれ る 最上位モジ ュ ール フ ァ イ ルおよびすべての ソ ース フ ァ イ ルが、合成およびシ ミ ュ

レーシ ョ ンで正 し い順序で使用 さ れます。

[Sources] ビ ューのポ ッ プア ッ プ メ ニ ューには [Hierarchy Update] コ マン ド があ り 、 最上位モジ ュールへの変更、 デザ

イ ンの ソ ース フ ァ イ ルへの変更な どの処理方法を指定 し て階層を ア ッ プデー ト で き ます。

デフ ォル ト 設定は [Automatic Update and Compile Order] で、 次の よ う に処理 さ れます。

• [Compile Order] タ ブに示すよ う に コ ンパ イ ル順が管理 さ れます。

• [Hierarchy] タ ブにどのモジ ュ ールが使用 さ れ、 階層ツ リ ーのど こ に位置する かが表示 さ れます。

ソ ース フ ァ イ ルを変更する と 、 コ ンパ イ ル順が自動的に更新 さ れます。

合成の前に コ ンパ イ ル順を変更する には、 次の手順に従い ます。

1. [Hierarchy Update] → [Automatic Update, Manual Compile Order] を ク リ ッ ク し 、 デザ イ ンに最適な最上位モジ ュー ルは自動的に選択 さ れ、 コ ンパ イ ル順は手動で指定で き る よ う に し ます。

2. [Sources] ビ ューの [Compile Order] タ ブで、 フ ァ イ ルを ド ラ ッ グする か、 ポ ッ プア ッ プ メ ニ ューの [Move Up] ま

たは [Move Down] コ マン ド を使用 し て、 コ ンパ イ ル順を変更 し ます。

[Sources] ビ ューの詳細は、 『Vivado Design Suite ユーザー ガ イ ド : Vivado IDE の使用』 (UG893) [参照 2] を参照し て く だ さ い。

グ ローバル イ ン クルー ド フ ァ イルの定義

Vivado IDE では、 1 つま たは複数の Verilog ま たは Verilog ヘ ッ ダー フ ァ イ ルを グ ローバル イ ン ク ルー ド フ ァ イ ル と し て指定で き ます。 こ れ ら の フ ァ イ ルは、 ほかの ソ ース の前に処理 さ れます。

Verilog では通常、 別の Verilog フ ァ イ ルやヘ ッ ダー フ ァ イ ルか ら の内容を参照する Verilog ソ ース フ ァ イ ルの冒頭に `include 文を含め る 必要があ り ます。 共通ヘ ッ ダー フ ァ イ ルを使用するデザ イ ンでは、 複数の Verilog ソ ース にそ れぞれ複数の `include 文を含め る必要があ る 場合 も あ り ます。

Verilog フ ァ イ ルま たは Verilog ヘ ッ ダー フ ァ イ ルを グ ローバル イ ン ク ルー ド フ ァ イ ル と し て指定する には、 次のい ずれかを実行 し ます。

(13)

1. [Sources] ビ ューで フ ァ イ ルを右 ク リ ッ ク し ます。

2. [Set Global Include] を ク リ ッ ク し ます。 ま たは、 [Source File Properties] ビ ューで [Global Include] チ ェ ッ ク ボ ッ ク ス を オンに し ます (図 1-6)。

ヒ ン ト : Verilog では、 1 つの Verilog ソースのみに適用するヘ ッ ダー フ ァ イル (特定の `define マ ク ロ な ど) は、 グ

ロ ーバル イ ン ク ルー ド フ ァ イ ル と し て指定する のではな く `include 文を使用し て参照する必要があ り ます。

[Sources] ビ ューの詳細は、 『Vivado Design Suite ユーザー ガ イ ド : Vivado IDE の使用』 (UG893) [参照 2] を参照し て く だ さ い。

X-Ref Target - Figure 1-6

(14)

合成の実行

合成 run では、 合成中に使用 さ れ るデザ イ ンの詳細を定義および設定で き ます。 合成 run は次を定義 し ます。 • 合成中に タ ーゲ ッ ト と する ザ イ リ ン ク ス デバ イ ス • 適用する 制約セ ッ ト • 1 つま たは複数の合成 run を起動する オプシ ョ ン • 合成エン ジ ンの結果を制御する オプシ ョ ン RTL ソ ース フ ァ イ ルの run および制約を定義する には、 次の手順に従い ます。

1. メ イ ン メ ニ ューか ら [Flow] → [Create Runs] を ク リ ッ ク する か、[Design Runs] ビ ューのツールバーの [Create Runs]

ボ タ ン を ク リ ッ ク し ます。

Create New Runs ウ ィ ザー ド が開き ます (図 1-7)。

2. [Synthesis] をオンに し、 [Next] を ク リ ッ ク し ます。

[Configure Synthesis Runs] ページが表示 さ れます (15 ページの図 1-8)。

X-Ref Target - Figure 1-7

(15)

run の名前 ([Name])、 制約セ ッ ト ([Constraints Set])、 デバ イ ス ([Part])、 ス ト ラ テジ ([Strategy]) を選択し 、 こ の run を ア ク テ ィ ブ run と する場合は [Make Active] をオンに し ます。

Vivado IDE にはデフ ォ ル ト の ス ト ラ テジが含まれています。 ス ト ラ テジ run には、 特定の名前を指定する か、 デ

フ ォル ト 名 (synth_1、 synth_2 な ど) を使用し ます。

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

カ ス タ ム ス ト ラ テジの作成方法は、10 ページの 「run ス ト ラ テジの作成」 を参照 し て く だ さ い。

[Next] を ク リ ッ ク し ます。 [Launch Options] ページが表示 さ れます (図 1-9)。

X-Ref Target - Figure 1-8

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

X-Ref Target - Figure 1-9

(16)

3. [Launch Options] ページで次のオプシ ョ ン を設定し 、 [Next] を ク リ ッ ク し ます。

° [Launch Directory] ド ロ ッ プダ ウ ン リ ス ト か ら run を実行する デ ィ レ ク ト リ を選択し ます。

° [Options] エ リ アで次のいずれかをオンに し ます。

- [Launch runs on local host] : 作業中のマシ ンで run を実行し ます。 [Number of jobs] で起動する run の数を 指定 し ます。

- [Launch runs on local host] : Linux のみのオプシ ョ ンで、 run を リ モー ト ホ ス ト で実行し 、 そのホ ス ト を設 定 し ます。

Linux の リ モー ト ホ ス ト での run の実行については、 『Vivado Design Suite ユーザー ガ イ ド : イ ンプ リ メ ン テーシ ョ ン』 (UG904) [参照 5] の付録 A 「 リ モー ト ホ ス ト および LSF の使用」 を参照し て く だ さ い。 [Configure Hosts] を ク リ ッ ク する と 、 ホ ス ト を設定する ダ イ ア ロ グ ボ ッ ク ス が開き ます。

- [Generate scripts only] : 後で実行する ス ク リ プ ト を生成し ます。runme.bat (Windows) ま たは runme.sh (Linux) を使用し て run を開始 し ます。

- [Do not launch now] : 前のページの設定を保存し 、 run を後で実行で き る よ う に し ます。

4. [Finish] を ク リ ッ ク し て run を作成し ます。 作成し た run を実行する と 、 [Design Runs] ビ ューに結果が表示 さ れま す (図 1-10)。

[Design Runs] ビ ュ ーの使用

[Design Runs] ビ ュ ーには、 プ ロ ジ ェ ク ト で作成 さ れた合成 run と イ ンプ リ メ ン テーシ ョ ン run のすべてが表示 さ れ、 それ ら を設定、 管理、 実行する ための コ マ ン ド を実行で き ます。

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

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

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

[Design Runs] ビ ューには、 run のス テータ ス (実行 さ れていない、 進行中、 完了、 最新の状態でない) が示 さ れます。

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

リ セ ッ ト ま たは削除する には、run を右 ク リ ッ ク し て [Reset Runs] ま たは [Delete] を ク リ ッ ク し ます。

ア ク テ ィ ブ run の設定

Vivado IDE で一度にア ク テ ィ ブにで き る には、 1 つの合成 run と 1 つの イ ンプ リ メ ン テーシ ョ ン run のみです。 すべ ての レ ポー ト お よ びビ ュ ーには、 ア ク テ ィ ブな run の情報が表示 さ れます。 [Project Summary] ビ ューには、 ア ク テ ィ

ブな run の コ ンパ イ ル、 リ ソ ース、 およびサマ リ 情報が表示 さ れます。

別の run を ア ク テ ィ ブにす る には、 [Design Runs] ビ ュ ーで run を右 ク リ ッ ク し 、 ポ ッ プア ッ プ メ ニ ュ ーか ら [Make Active] コ マン ド を ク リ ッ ク し ます。

X-Ref Target - Figure 1-10

(17)

合成 run の起動

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

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

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

• [Design Runs] ビ ューで run を右 ク リ ッ ク し、 [Launch Runs] を ク リ ッ ク し ます。

最初の 2 つのオプシ ョ ン では、 ア ク テ ィ ブな合成 run が実行 さ れ ま す。 3 つ目のオプシ ョ ン では、 [Launch Selected

Runs] ダ イ ア ロ グ ボ ッ ク ス が開き ます。 こ のダ イ ア ロ グ ボ ッ ク ス で、 run を ローカル ホ ス ト ま たは リ モー ト ホ ス ト で 実行する か、 あ る いはス ク リ プ ト を生成する かを指定で き ます。

リ モー ト ホ ス ト の使用については、『Vivado Design Suite ユーザー ガ イ ド : イ ンプ リ メ ン テーシ ョ ン』 (UG904) [参照 5]

の付録 A 「 リ モー ト ホ ス ト の使用」 を参照し て く だ さ い。 ヒ ン ト : run を実行する たびに、 別のプ ロ セスが開始 さ れます。 メ ッ セージを確認する際は、 プ ロ セ ス特定の も のに 注意 し て く だ さ い。

アウ ト オブ コ ン テキス ト (OOC) フ ローを使用 し たボ ト ムア ッ プ

フ ローの設定

HDL オブジ ェ ク ト を独立階層モジ ュール と し て実行する こ と に よ り 、 ボ ト ム ア ッ プ フ ローを設定で き ます。 次の手 順に従い ます。

1. オブジ ェ ク ト を右 ク リ ッ ク し て [Set As Out-of-Context Module] を ク リ ッ ク し ます (図 1-11)。

2. [Set as Out-of-Context Module] ダ イ ア ロ グ ボ ッ ク ス で次を実行し ます。

a. [Block File Set Name] フ ィ ール ド に独立階層モジ ュール用の run の名前を入力し ます。

b. オプシ ョ ンで、 [Use auto-generated blackbox stub for top level synthesis] をオンに し て独立階層モジ ュールを イ

ン ス タ ン シエー ト する 合成 run で使用する ス タ ブ フ ァ イ ルを作成し ます。

注記 : ス タ ブ フ ァ イ ルは、 ブ ラ ッ ク ボ ッ ク ス属性セ ッ ト の入力 と 出力を示し ます。 デフ ォ ル ト では、 こ のオ

プシ ョ ンはオンにな っ てい ます。 こ のオプシ ョ ン を オフ に し た場合、run 用にユーザーが ス タ ブ フ ァ イ ルま

たは コ ンポーネ ン ト 文を作成する 必要があ り ます。

X-Ref Target - Figure 1-11

(18)

3. ア ウ ト オブ コ ンテ キ ス ト (OOC) フ ローを設定する と 、 新 し い run が設定 さ れます。 こ の run を実行する には、 run を 右 ク リ ッ ク し て [Launch Runs] を ク リ ッ ク し ま す (17 ページ の 「合成 run の起動」 を 参照)。図 1-13 に、 [Launch Runs] コ マン ド を示 し ます。 こ れに よ り 下位モジ ュ ールが最上位モジ ュ ール と し て設定 さ れ、I/O バ ッ フ ァ ーを作成せずに合成が実行 さ れま す。 合成で生成 さ れたネ ッ ト リ ス ト が保存 さ れ、 後で使用で き る よ う に ス タ ブ フ ァ イ ルが作成 さ れます。 ス タ ブ フ ァ イ ルは、 ブ ラ ッ ク ボ ッ ク ス属性が設定 さ れた、 入力 と 出力を持つ下位モジ ュ ールです。 最上位モジ ュールを 再実行す る と 、 ボ ト ム ア ッ プ合成に よ り ス タ ブ フ ァ イ ルがフ ローに挿入 さ れ、 下位モジ ュールがブ ラ ッ ク ボ ッ ク ス と し て コ ンパ イ ル さ れます。 イ ンプ リ メ ン テーシ ョ ン run では下位ネ ッ ト リ ス ト が挿入 さ れ、 デザ イ ン を完 了 し ます。 注記 : OOC モジ ュールの下位に IP が含まれ る場合は、 こ のフ ローは使用で き ません。 フ ローの後の方で問題が発生 し ます。 ま た、OOC モジ ュールにパ ラ メ ーターが設定 さ れてい る場合や、 OOC モジ ュ ールのポー ト がユーザー定義 タ イ プであ る 場合 も 、 こ の フ ローを使用 し ないで く だ さ い。 こ れ ら の状況では、 フ ロ ーの後の方で問題が発生 し ます。 [Synthesis Settings] を ク リ ッ ク し て [More Options] に 「-mode out_of_context」 と 入力する こ と も 可能です (19 ペー

ジの図 1-14)。 こ の よ う に設定する と 、 合成でモジ ュ ールに I/O バ ッ フ ァ ーは挿入 さ れません。

X-Ref Target - Figure 1-12

図 1-12 : [Set as Out-of-Context Module] ダ イ ア ログ ボ ッ ク ス

X-Ref Target - Figure 1-13

(19)

OOC フ ローでの制約の設定

デフ ォル ト では、 作成 し た新 し い フ ァ イ ル セ ッ ト に関連付け ら れてい る XDC フ ァ イ ルはあ り ません。 制約は最上位

か ら 継承 さ れません。

下位 OOC フ ローに タ イ ミ ン グ制約を関連付け る には、 まず新し い制約セ ッ ト を作成 し ます。 こ れには、 次の手順に従い ます。

1. Flow Navigator で [Add Sources] を ク リ ッ ク し 、 [Add or Create Constraints] をオンに し て、 [Next] を ク リ ッ ク し ます。

2. Add Sources ウ ィ ザー ド の [Add or Create Constraints] ページで、[Specify Constraint Set] ド ロ ッ プダ ウ ン リ ス ト か ら [Create Constraint Set] を選択し 、 次の名前を入力し ます。

<block file set name>_constraints

X-Ref Target - Figure 1-14

(20)

制約セ ッ ト を設定 し た ら 、 新規フ ァ イ ルを作成する か、 既存の フ ァ イ ルを追加 し ます。 こ の制約セ ッ ト は OOC モジ ュールに関連付け ら れる ので、 XDC フ ァ イ ルに リ ス ト さ れてい る信号およびポー ト はそのモジ ュ ールか ら の信号を参照 し ます。 3. フ ァ イ ルを作成する か追加 し た ら 、OOC ブ ロ ッ ク に関連付け ます。 こ れには、 次の Tcl コ マン ド を使用し ます。 重要 : Tcl コ マン ド は、 [Tcl Console] ビ ューに入力し ます。 制約セ ッ ト を OOC ブ ロ ッ クに関連付ける Tcl コ マン ド

add_files -fileset <block file set name> [get_files <name>.xdc]

4. XDC フ ァ イ ルが OOC フ ロー中にのみ使用 さ れる よ う 設定し ます。 XDC フ ァ イ ルを設定する には、 次の Tcl コ マ

ン ド を使用 し ます。

XDC フ ァ イルを OOC フ ローで使用する よ う 設定する Tcl コ マン ド

set_property USED_IN {out_of_context synthesis implementation} \ [get_files <name>.xdc]

X-Ref Target - Figure 1-15

(21)

手動ボ ト ムア ッ プ フ ローの設定およびサー ド パーテ ィ 合成ツー

ルから のネ ッ ト リ ス ト のイ ンポー ト

ボ ト ム ア ッ プ フ ローを手動で実行する には、 下位ネ ッ ト リ ス ト ま たはサー ド パーテ ィ ネ ッ ト リ ス ト をブ ラ ッ ク ボ ッ ク ス と し て イ ン ス タ ン シエー ト し ます。 こ の よ う にす る と 、Vivado ツールに よ り 合成の完了後にデザ イ ンにブ ラ ッ ク ボ ッ ク ス が挿入 さ れます。 次のセ ク シ ョ ンに、 こ のプ ロ セ ス について説明 し ます。

下位ネ ッ ト リ ス ト の作成

下位ネ ッ ト リ ス ト を作成する には、 ネ ッ ト リ ス ト を最上位モジ ュ ール と し て指定 し てプ ロ ジ ェ ク ト を設定 し ます。 合 成を実行する 前に、19 ページの図 1-14 に示すよ う に OOC モー ド を設定 し ます。合成が終了し た ら 合成済みデザ イ ン を開き 、[Tcl Console] ビ ューに次の コ マン ド を入力し ます。 下位ネ ッ ト リ ス ト を作成する Tcl コ マン ド write_edif <design_name>.edf

下位ネ ッ ト リ ス ト のデザイ ンへのイ ン ス タ ン シ エーシ ョ ン

最上位デザ イ ン を下位ネ ッ ト リ ス ト ま たはサー ド パーテ ィ ネ ッ ト リ ス ト と 共に実行する には、下位ネ ッ ト リ ス ト をブ ラ ッ ク ボ ッ ク ス と し て イ ン ス タ ン シエー ト し ます。 こ れには、 下位ネ ッ ト リ ス ト のポー ト を Vivado ツールに示す必 要があ り ます。 重要 : Vivado ツールに示すポー ト 名 と ネ ッ ト リ ス ト のポー ト 名が一致し ている必要があ り ます。 VHDL では、 次の コー ド 例に示すよ う に、 component 文にポー ト を記述 し ます。 component <name>

port (in1, in2 : in std_logic; out1 : out std_logic);

end component;

Verilog には コ ンポーネン ト に相当する も のはないので、 ラ ッ パー フ ァ イ ルを使用 し て Vivado ツールにポー ト を示し

ます。 ラ ッ パー フ ァ イ ルは通常の Verilog フ ァ イ ル と 同 じ ですが、 次の例に示すよ う に、 ポー ト リ ス ト のみが含まれ

ます。

module <name> (in1, in2, out1); input in1, in2;

output out1; endmodule

下位ネ ッ ト リ ス ト のプ ロ ジ ェ ク ト への追加

下位ネ ッ ト リ ス ト を作成 し て最上位ネ ッ ト リ ス ト に正 し く イ ン ス タ ン シエー ト し た ら 、プ ロ ジ ェ ク ト モー ド では下位

ネ ッ ト リ ス ト を Vivado プ ロ ジ ェ ク ト に追加し 、非プ ロ ジ ェ ク ト モー ド では read_edif ま たは read_verilog コ マ ン ド を使用 し て下位ネ ッ ト リ ス ト を読み込みます。

ど ち ら のモー ド で も 、 合成後にネ ッ ト リ ス ト が結合 さ れます。

注記 : デザ イ ンがサー ド パーテ ィ ネ ッ ト リ ス ト でのみ構成 さ れてお り 、 プ ロ ジ ェ ク ト にほかの RTL フ ァ イ ルがない

場合は、 プ ロ ジ ェ ク ト を それ ら のネ ッ ト リ ス ト のみで作成す る か、 非プ ロ ジ ェ ク ト モー ド では read_edif お よ び

(22)

Vivado IP と サー ド パーテ ィ 合成ツール

Vivado IP カ タ ロ グか ら 使用可能なザ イ リ ン ク ス IP は、 Vivado Design Suite で作成、 制約、 および検証 し ます。 ザ イ リ ン ク ス が提供する ほ と んど の IP には IEEE P1735 で暗号化 さ れた HDL があ り 、サー ド パーテ ィ 合成ツールでのサポー ト は提供 さ れてい ません。 Vivado IDE で提供 さ れ る ザ イ リ ン ク ス IP をサー ド パーテ ィ 合成ツールに イ ン ス タ ン シエー ト する には、 次のフ ロー を使用する こ と をお勧め し ます。 1. [Manage IP] 環境で IP カ ス タ マ イ ズ を作成し ます。 2. 合成デザ イ ン チ ェ ッ ク ポ イ ン ト (DCP) を含めた IP の出力フ ァ イ ルを生成 し ます。

Vivado IDE で ス タ ブ HDL フ ァ イ ル (_stub.v|.vhd) が作成 さ れます。 こ の ス タ ブ HDL フ ァ イ ルをサー ド パー

テ ィ 合成ツールで使用 し て、IP のブ ラ ッ ク ボ ッ ク ス を推論し ます。

ス タ ブ フ ァ イ ルには、 I/O バ ッ フ ァ ーが推論 さ れない よ う にす る Synopsys® Synplify Pro 指示子が含まれてい ま す。 ほかの合成ツールの指示子をサポー ト する には、 こ れ ら の フ ァ イ ルを変更する 必要があ る 場合があ り ます。

3. ザ イ リ ン ク ス IPの ス タ ブ フ ァ イ ルを含むデザ イ ン を合成し ます。

4. サー ド パーテ ィ 合成ツールで生成 さ れたネ ッ ト リ ス ト と ザ イ リ ン ク ス IP の DCP フ ァ イ ルを使用し て、 Vivado イ ンプ リ メ ン テーシ ョ ン を実行 し ます。

詳細は、 『Vivado Design Suite ユーザー ガ イ ド : IP を使用し た設計』 (UG896) [参照 18] を参照し て く だ さ い。

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

Vivado IDE で合成ま たは イ ンプ リ メ ン テーシ ョ ン を実行す る と 、 ダ イ ア ロ グ ボ ッ ク ス にプ ロ セ ス をバ ッ ク グ ラ ウ ン ド で実行す る オプシ ョ ンが表示 さ れます。run をバ ッ ク グ ラ ウ ン ド に移動する と 、 レ ポー ト を表示す る な ど、 Vivado IDE でほかの機能を実行で き る よ う にな り ます。

合成実行の監視

合成 run の ス テータ ス は、 [Log] ビ ュ ー (図 1-16) で確認し ます。 合成中に こ のビ ューに表示 さ れる メ ッ セージは、 合 成 ロ グ フ ァ イ ルに も 含まれます。

X-Ref Target - Figure 1-16

(23)

合成終了後の フ ロー

run が完了する と 、 [Synthesis Completed] ダ イ ア ロ グ ボ ッ ク ス が表示 さ れます (図 1-17)。

次のいずれかを オンに し ます。

° [Run Implementation] : イ ンプ リ メ ン テーシ ョ ン を現在の イ ンプ リ メ ン テーシ ョ ン プ ロ ジ ェ ク ト 設定を使用

し て実行 し ます。

° [Open Synthesized Design] : 合成済みネ ッ ト リ ス ト 、 ア ク テ ィ ブな制約セ ッ ト 、 ターゲ ッ ト デバ イ ス を合成済

みデザ イ ン環境で開き 、I/O ピ ン配置、 デザ イ ン解析、 フ ロ アプ ラ ン を実行で き る よ う に し ます。

° [View Reports] : [Reports] ビ ューを開き、 レ ポー ト を表示で き る よ う に し ます。

[Don't show this dialog again] をオンにする と 、 次回か ら こ のダ イ ア ロ グ ボ ッ ク スは表示 さ れな く な り ます。 ヒ ン ト : こ のダ イ ア ロ グ ボ ッ ク スが再び表示 される よ う にするには、 [Tools] → [Options] を ク リ ッ ク し、 左側のペイ ンで [Window Behavior] を ク リ ッ ク し ます。

X-Ref Target - Figure 1-17

(24)

合成結果の解析

合成が終了 し た ら 、 合成レ ポー ト を表示 し 、 合成済みデザ イ ン を開いて解析で き ます。[Reports] ビ ュ ーには、 合成お よ び イ ンプ リ メ ン テーシ ョ ンで生成 さ れた レ ポー ト の リ ス ト が表示 さ れます。 [Reports] ビ ュー (図 1-18) を開き 、 レ ポー ト を開いて特定の run の詳細を確認し ます。

合成済みデザイ ン環境の使用

Vivado IDE には、 デザ イ ン を さ ま ざ ま な面か ら 解析する環境が含まれてい ます。 合成済みデザ イ ン を開 く と 、 合成済 みネ ッ ト リ ス ト 、 ア ク テ ィ ブな制約セ ッ ト 、 お よ び タ ーゲ ッ ト デバ イ ス が読み込まれます。 詳細は、 次の資料を参照 し て く だ さ い。

• 『Vivado Design Suite チ ュー ト リ アル : デザ イ ン解析および ク ロージ ャ テ ク ニ ッ ク 』 (UG938) [参照 10]

• 『Vivado Design Suite ユーザー ガ イ ド : デザ イ ン解析および ク ロージ ャ テ ク ニ ッ ク 』 (UG906) [参照 9]

合成済みデザ イ ン を開 く には、Flow Navigator で [Synthesis] → [Open Synthesized Design] を ク リ ッ ク する か、 メ イ ン メ ニ ュ ーか ら [Flow] → [Open Synthesized Design] を ク リ ッ ク し ます。

X-Ref Target - Figure 1-18

(25)

合成済みデザ イ ン を開 く と 、[Device] ビ ュー (図 1-19) が表示 さ れます。

こ の環境か ら 、 デザ イ ン ロ ジ ッ ク と 階層の確認、 リ ソ ー ス 使用率お よ び タ イ ミ ン グ予測の表示、 デザ イ ン ルール

チ ェ ッ ク (DRC) を実行で き ます。

X-Ref Target - Figure 1-19

(26)

レ ポー ト の表示

レ ポー ト を表示する には、[Tools] → [Report] を ク リ ッ ク し ます。 ド ロ ッ プダ ウ ン メ ニ ューに生成可能な レ ポー ト が表 示 さ れます (図 1-20)。

ロ ジ ッ ク イ ン ス タ ン スの使用率の表示

Vivado IDE には、 デザ イ ンに含まれ るデバ イ ス リ ソ ース数を予測する 機能があ り ます。

最上位お よ び ロ ジ ッ ク セルの使用率は、 [Netlist Properties] お よ び [Cell Properties] ビ ュ ーに表示 さ れ ま す。 [Netlist]

ビ ュ ーで最上位モジ ュ ールま たは任意の イ ン ス タ ン ス を選択 し ます (図 1-21)。

[Netlist Properties] ま たは [Cell Properties] ビ ューが表示 さ れない場合は、モジ ュールを右 ク リ ッ ク し 、[Netlist Properties] ま たは [Cell Properties] を ク リ ッ ク し ます。 リ ソ ース使用率を表示する には、 [Netlist Properties] ま たは [Cell Properties] ビ ュ ーで [Statistics] タ ブを ク リ ッ ク し ます (図 1-22)。

X-Ref Target - Figure 1-20

図 1-20 : [Tools] → [Report] を ク リ ッ ク

X-Ref Target - Figure 1-21

(27)

[Properties] ビ ューには、 選択 し たオブジ ェ ク ト の タ イ プに応 じ て さ ま ざ ま な タ ブが表示 さ れます。図 1-22 の clkgen に対 し ては、 次の タ ブが表示 さ れます。

• [General] : 選択し たセルの名前、 参照名、 タ イ プ、 セル ピ ンの数、 ネ ッ ト の数を示し ます。

• [Properties] : セルのプ ロ パテ ィ を リ ス ト し ます。

• [Power] : 信号レー ト ([Signal Rate])、 High に駆動 さ れる 期間の割合 ([Percentage High]) を示し ます (設定可能)。

• [Nets] : ネ ッ ト の ID、名前、イ ン ス タ ン ス ピ ン、フ ラ ッ ト ピ ン数、 ド ラ イ バー、および配線ス テー タ ス を示 し ます。

• [Cell Pins] : イ ン ス タ ン ス ピ ンの ID、 名前、 方向、 BEL ピ ン、 およびネ ッ ト を リ ス ト し ます。

• [Children] : 子イ ン ス タ ン ス の ID、 名前、 セル、 およびイ ン ス タ ン ス ピ ン数を リ ス ト し ます。

X-Ref Target - Figure 1-22

(28)

ロ ジ ッ クの解析

Vivado IDE では、 ロ ジ ッ ク を解析する ビ ューが複数あ り ます。 1 つのビ ューで選択し た情報はほかのビ ューで も 選択 さ れ る よ う にな っ てお り 、 必要な情報をすばや く 見つけ る こ と がで き ます。 • [Netlist] および [Hierarchy] ビ ュ ーには、 ナビゲー ト 可能な階層ツ リ ー形式の表示が含まれます。 • [Schematic] ビ ューでは、 選択 し た ロ ジ ッ ク を展開 し た り 階層表示にで き ます。 • [Device] ビ ューは、 デバ イ ス、 配置ロ ジ ッ ク オブジ ェ ク ト 、 および接続を グ ラ フ ィ カルに表示し ます。

ロ ジ ッ ク 階層の表示

[Netlist] ビ ューには、 合成済みデザ イ ンの ロ ジ ッ ク 階層が表示 さ れます。 ネ ッ ト リ ス ト 内の ロ ジ ッ ク イ ン ス タ ン ス ま たはネ ッ ト を、 展開 し て選択で き ます。 別の ビ ュ ーで ロ ジ ッ ク オブジ ェ ク ト を選択する と 、[Netlist] ビ ューが自動的に展開 さ れて選択 し た ロ ジ ッ ク オブジ ェ

ク ト が表示 さ れ、[Instance Properties] ま たは [Net Properties] ビ ュ ーに イ ン ス タ ン ス ま たはネ ッ ト に関する 情報が表示 さ れます。

[Hierarchy] ビ ュ ーには、 RTL ロ ジ ッ ク 階層がグ ラ フ ィ カルに表示 さ れます。 各モジ ュ ールの大 き さ が、 その他のモ ジ ュ ールに相対的な比率で表示 さ れ る ので、 選択 し た ロ ジ ッ ク モジ ュールのサ イ ズや位置を判断で き ます。

[Hierarchy] ビ ュ ーを開 く には、 次の手順に従い ます。 1. [Netlist] ビ ューを右 ク リ ッ ク し ます。

2. [Show Hierarchy] を ク リ ッ ク し ます (図 1-23)。 F6 キーを押 し て も [Hierarchy] ビ ューを開 く こ と がで き ます。

ロ ジ ッ ク 回路図の解析

[Schematic] ビ ューでは、 選択し た ロ ジ ッ ク を展開し て表示で き ます。 [Schematic] ビ ューを表示する には、 少な く と も 1 つの ロ ジ ッ ク オブジ ェ ク ト を選択する必要があ り ます。 [Schematic] ビ ュ ーで、 任意の ロ ジ ッ ク を選択およ び表示 し ます。 タ イ ミ ン グ パ ス のグループを表示 し て、 そのパ ス 上のすべての イ ン ス タ ン ス を表示で き ます。 こ れに よ り 、 タ イ ミ ン グ ク リ テ ィ カルなモジ ュールが含まれる箇所を視 覚的に表示で き る ので、 フ ロ アプ ラ ン し やす く な り ます。 [Schematic] ビ ューを開 く には、 次の手順に従い ます。 1. 1 つま たは複数の イ ン ス タ ン ス、 ネ ッ ト 、 タ イ ミ ン グ パス を選択 し ます。 2. ツールバーま たは右 ク リ ッ ク メ ニ ューで [Schematic] を ク リ ッ ク する か、 F4 キーを押 し ます。

X-Ref Target - Figure 1-23

(29)

[Schematic] ビ ューが開き、 選択 し たモジ ュールが表示 さ れます (図 1-24)。 こ の後、 ピ ン、 イ ン ス タ ン ス、 階層モジ ュ ールを選択 し て、 ロ ジ ッ ク を展開で き ます。

タ イ ミ ング解析の実行

合成済みデザ イ ンの タ イ ミ ン グ解析は、 イ ンプ リ メ ン テーシ ョ ン を効率的に実行す る ために必要な制約がパ ス に設定 さ れてい る か ど う か を確認す る のに有益です。Vivado 合成は タ イ ミ ン グ ド リ ブンであ り 、 設定 し た制約に基づいて 出力が調整 さ れます。 Pblock や LOC 制約の よ う な物理制約をデザ イ ンに割 り 当て てい く と 、 よ り 正確な タ イ ミ ン グ解析結果が得 ら れ る よ う にな り ますが、 こ れ ら の結果に含まれ る のはパ ス遅延の予測値です。 合成済みデザ イ ンでは、 予測 さ れ る 配線遅延 を使用 し て解析が実行 さ れます。 こ の時点で タ イ ミ ン グ解析を実行する と 、 パ ス が正 し く 制約 さ れてい る か、お よ び タ イ ミ ン グ パス の全体的な状況を 確認で き ます。 重要 : 実際の配線遅延が含まれるのは、 イ ンプ リ メ ンテーシ ョ ン (配置配線) 後の タ イ ミ ング解析のみです。 合成済み デザ イ ンの タ イ ミ ン グ解析は、 イ ンプ リ メ ン ト 済みデザ イ ンの タ イ ミ ン グ解析ほど正確ではあ り ません。

X-Ref Target - Figure 1-24

(30)

Tcl での合成の実行

合成を実行す る Tcl コ マン ド は synth_design です。 通常 こ の コ マン ド は、 次の例の よ う に複数のオプシ ョ ン を使

用 し て実行 し ます。

synth_design -part xc7k30tfbg484-2 -top my_top

こ の例では、 synth_design が –part オプシ ョ ンおよび –top オプシ ョ ン を使用し て実行 さ れます。

Tcl コ ン ソ ールか ら 、Tcl コ マン ド オプシ ョ ン を使用し て合成オプシ ョ ン を設定し て合成を実行で き ます。[Tcl Console] ビ ュ ーで 「synth_design –help」 と 入力す る と 、 オプシ ョ ンの リ ス ト を取得で き ます。 次に、 -help オプシ ョ ン を使用 し た と き の コ マ ン ド 出力の一部を示 し ます。

次に、 -help オプシ ョ ン を使用し た と き の コ マン ド 出力の一部を示し ます。 Syntax:

synth_design [-name <arg>] [-part <arg>] [-constrset <arg>] [-top <arg>] [-include_dirs <args>] [-generic <args>] [-verilog_define <args>]

[-flatten_hierarchy <arg>] [-gated_clock_conversion <arg>] [-directive <arg>] [-rtl] [-bufg <arg>] [-no_lc] [-fanout_limit <arg>] [-shreg_min_size <arg>] [-mode <arg>] [-fsm_extraction <arg>] [-keep_equivalent_registers] [-resource_sharing <arg>] [-control_set_opt_threshold <arg>] [-max_bram <arg>] [-max_dsp <arg>] [-quiet] [-verbose] Returns: design object Usage: Name Description [-name] Design name [-part] Target part

[-constrset] Constraint fileset to use [-top] Specify the top module name

[-include_dirs] Specify verilog search directories

[-generic] Specify generic parameters.Syntax: -generic <name>=<value> -generic <name>=<value> ... [-verilog_define] Specify verilog defines.Syntax:

-verilog_define <macro_name>[=<macro_text>] -verilog_define <macro_name>[=<macro_text>] [-flatten_hierarchy] Flatten hierarchy during LUT mapping. Values: full, none, rebuilt

Default: rebuilt

[-gated_clock_conversion] Convert clock gating logic to flop enable. Values: off, on, auto

Default: off

[-directive] Synthesis directive.Values: default, runtimeoptimized

Default: default

[-rtl] Elaborate and open an rtl design

[-bufg] Max number of global clock buffers used by synthesis. Default: 12

[-no_lc] Disable LUT combining. Do not allow combining LUT pairs into single dual output LUTs. [-fanout_limit] Fanout limit

Default: 10000

[-shreg_min_size] Minimum length for chain of registers to be mapped onto SRL. Default: 3

(31)

[-mode] The design mode. Values: default, out_of_context Default: default

[-fsm_extraction] FSM Extraction Encoding. Values: off, one_hot, sequential, johnson, gray, auto Default: auto Default: auto

[-keep_equivalent_registers] Prevents registers sourced by the same logic from being merged. (Note that the merging can otherwise be prevented using the synthesis KEEP attribute)

[-resource_sharing] Sharing arithmetic operators. Value: auto, on, off

Default: auto

[-control_set_opt_threshold] Threshold for synchronous control set

optimization to lower number of control sets. Default: 4

[-max_bram] Maximum number of block RAM allowed in design. (Note -1 means that the tool will choose the max number allowed for the part in question. Default: -1

[-max_dsp] Maximum number of block DSP allowed in design. (Note -1 means that the tool will choose the max number allowed for the part in question. Default: -1

[-quiet] Ignore command errors

[-verbose] Suspend message limits during command execution -generic オプシ ョ ンで VHDL ブール値および std_logic ベ ク ター型を指定する場合、こ れ ら はほかの形式には存 在 し ないので特別な処理が必要です。 た と えば、TRUE/FALSE ま たは 0010 の代わ り に Verilog 標準を使用する必要が あ り ます。 ブール値の場合、FALSE 値は次の よ う に指定し ます。 -generic my_gen=1‘b0 std_logic ベ ク ターを値 0010 に設定する には、 次の よ う に指定し ます。 -generic my_gen=4‘b0010 重要 : 文字列ジ ェ ネ リ ッ ク ま たはパ ラ メ ーターの変更はサポー ト さ れていません。

コ マ ン ド の詳細は、 『Vivado Design Suite Tcl コ マ ン ド リ フ ァ レ ン ス ガ イ ド 』 (UG835) [参照 3] を参照 し て く だ さ い。 Vivado IDE での操作に対応する Tcl コ マン ド を確認する には、 Vivado IDE で コ マン ド を実行 し、 [Tcl Console] ビ ュー ま たは ロ グ フ ァ イ ルを参照 し て く だ さ い。

(32)

Tcl ス ク リ プ ト 例

次に、 synth_design の Tcl ス ク リ プ ト 例を示し ます。 # Setup design sources and constraints

read_vhdl -library bftLib [ glob ./Sources/hdl/bftLib/*.vhdl ] read_vhdl ./Sources/hdl/bft.vhdl

read_verilog [ glob ./Sources/hdl/*.v ] read_xdc ./Sources/bft_full.xdc

# Run synthesis

synth_design -top bft -part xc7k70tfbg484-2 -flatten_hierarchy rebuilt # Write design checkpoint

write_checkpoint -force $outputDir/post_synth # Write report utilization and timing estimates report_utilization -file utilization.txt

report_timing > timing.txt

制約の設定

表 1-2 に、 Vivado タ イ ミ ン グ制約にサポー ト さ れる Tcl コ マン ド を示し ます。 こ れ ら の コ マ ン ド の詳細は、 次の資料を参照 し て く だ さ い。

• 『Vivado Design Suite Tcl コ マン ド リ フ ァ レ ン ス ガ イ ド 』 (UG835) [参照 3]

• 『Vivado Design Suite ユーザー ガ イ ド : 制約の使用』 (UG903) [参照 8]

• 『Vivado Design Suite ユーザー ガ イ ド : デザ イ ン解析および ク ロージ ャ テ ク ニ ッ ク 』 (UG906) [参照 9]

• 『Vivado Design Suite チ ュー ト リ アル : デザ イ ン解析および ク ロージ ャ テ ク ニ ッ ク 』 (UG938) [参照 10]

• 『Vivado Design Suite チ ュー ト リ アル : 制約の使用』 (UG945) [参照 11]

表 1-2 : サポー ト さ れる合成 Tcl コ マ ン ド

コ マ ン ド タ イ プ コ マ ン ド

タ イ ミ ング制約

create_clock create_generate_clock set_false_path set_input_delay set_output_delay set_max_delay set_multicycle_path

set_clock_latency set_clock_groups set_disable_timing オブ ジ ェ ク ト

ア ク セス

all_clocks all_inputs all_outputs get_cells

(33)

合成属性

概要

Vivado® 合成では、 さ ま ざ ま な タ イ プの合成属性を使用で き ます。 ほ と んどの場合、 こ れ ら の属性は同じ 構文で、 同 じ 動作にな り ます。 • Vivado 合成で属性がサポー ト さ れる場合、 その属性が使用 さ れ、 その属性を反映し た ロ ジ ッ ク が作成 さ れます。 • 指定 し た属性が ツールで認識 さ れない場合、 その属性 と 値は生成 さ れたネ ッ ト リ ス ト に渡 さ れます。 認識 さ れない属性は、 フ ロ ーのダ ウ ン ス ト リ ームで使用 さ れ る と 想定 さ れます。 た と えば、LOC 制約は合成では使用 さ れませんが、 配置ツールで使用 さ れ る ので、 合成ツールか ら 転送 さ れます。

サポー ト さ れる属性

ASYNC_REG

ASYNC_REG 属性は、 Vivado ツール フ ローの さ ま ざ ま なプ ロ セ ス に影響し ます。 こ の属性は、 レ ジ ス タ の D 入力ピ ン で ソ ース ク ロ ッ ク に非同期のデータ を受信で き る こ と 、ま たはレ ジ ス タ が同期化チ ェーン内の同期化レ ジ ス タ であ る こ と を示 し ます。

Vivado 合成では、 こ の属性は DONT_TOUCH 属性 と し て処理 さ れ、ASYNC_REG プ ロ パテ ィ を ネ ッ ト リ ス ト に挿入し ま す。 こ れに よ り 、 ASYNC_REG プ ロ パテ ィ が設定 さ れたオブジ ェ ク ト が最適化で削除 さ れ る こ と はな く な り 、 フ ロー の後のほ う の ツールで適切に処理 さ れます。

Vivado のほかのツールで こ の属性がどの よ う に処理 さ れる かは、 『Vivado Design Suite プ ロ パテ ィ リ フ ァ レ ン ス ガ イ ド 』 (UG912) [参照 12] を参照 し て く だ さ い。

こ の属性はレ ジ ス タ に設定で き、有効な値は FALSE (デフ ォル ト ) および TRUE です。RTL ま たは XDC で設定で き ます。

ASYNC_REG の Verilog 例

(* ASYNC_REG = "TRUE" *) reg [2:0] sync_regs;

ASYNC_REG の VHDL 例

attribute ASYNC_REG : string;

(34)

BLACK_BOX

BLACK_BOX 属性は、 すべての階層レベルをオ フに し 、 合成でそのモジ ュールま たはエンテ ィ テ ィ に対し てブ ラ ッ ク ボ ッ ク ス を作成で き る よ う にする デバ ッ グ用の属性です。 こ の属性を指定す る と 、 モジ ュ ールま たはエン テ ィ テ ィ に 対 し て有効な ロ ジ ッ ク があ っ た と し て も 、合成ツールでその レベルに対 し てブ ラ ッ ク ボ ッ ク ス が作成 さ れます。 こ の 属性はモジ ュ ール、 エン テ ィ テ ィ 、 コ ン ポーネ ン ト に設定で き ます。 こ の属性は合成コ ンパ イ ラ に影響する ので、RTL でのみ設定可能です。

BLACK_BOX の Verilog 例

(* black_box *) module test(in1, in2, clk, out1);

重要 : Verilog では、 値は必要あ り ません。 こ の属性があれば、 ブ ラ ッ ク ボ ッ ク スが作成さ れます。

BLACK_BOX の VHDL 例

attribute black_box : string;

attribute black_box of beh : architecture is "yes";

ブ ラ ッ ク ボ ッ ク ス の コ ーデ ィ ン グ ス タ イ ルの よ り 詳細な情報は、141 ページの 「ブ ラ ッ ク ボ ッ ク ス」 を参照 し て く だ さ い。

CLOCK_BUFFER_TYPE

CLOCK_BUFFER_TYPE 属性は入力 ク ロ ッ ク に設定 し、 使用する ク ロ ッ ク バ ッ フ ァ ーの タ イ プを指定し ます。

デフ ォル ト では、 ク ロ ッ ク バ ッ フ ァ ー と し て BUFG が使用 さ れます。

有効な値は、BUFG、 BUFH、 BUFIO、 BUFMR、 BUFR、 および none です。 none に設定する と 、 どの タ イ プの ク ロ ッ

ク バ ッ フ ァ ー も 推論 さ れません。

CLOCK_BUFFER_TYPE 属性は、 最上位 ク ロ ッ ク ポー ト に設定で き ます。 RTL でのみ設定可能で、 XDC ではサポー ト さ れてい ません。

CLOCK_BUFFER_TYPE の Verilog 例

(* clock_buffer_type = "none" *) input clk1;

CLOCK_BUFFER_TYPE の VHDL 例

entity test is port(

in1 : std_logic_vector (8 downto 0); clk : std_logic;

out1 : std_logic_vector(8 downto 0)); attribute clock_buffer_type : string;

attribute clock_buffer_type of clk: signal is "BUFR"; end test;

(35)

DONT_TOUCH

KEEP ま たは KEEP_HIERARCHY の代わ り に DONT_TOUCH 属性を使用 し て く だ さ い。DONT_TOUCH 属性は KEEP ま た は KEEP_HIERARCHY 属性 と 同 じ よ う に機能 し ますが、 KEEP お よび KEEP_HIERARCHY と は異な り 配置配線にフ ォ

ワ ー ド ア ノ テー ト さ れる ので、 ロ ジ ッ ク 最適化で削除 さ れる こ と はあ り ません。

\

注意 : KEEP および KEEP_HIERARCHY 属性 と 同様に、 DONT_TOUCH を使用する際には注意が必要です。 ほかの属性

が DONT_TOUCH 属性 と 競合する場合、 DONT_TOUCH 属性が優先 さ れます。

DONT_TOUCH 属性に有効な値は、 TRUE/FALSE ま たは yes/no です。 こ の属性は信号、 モジ ュール、 エン テ ィ テ ィ 、 コ ンポーネ ン ト に設定で き ます。

注記 : モ ジ ュ ール ま たはエ ン テ ィ テ ィ のポー ト には設定で き ま せん。 特定のポー ト を保持す る 必要が あ る 場合は、 -flatten_hierarchy none 設定を使用する か、モジ ュールま たはエンテ ィ テ ィ 自体に DONT_TOUCH を設定し ます。

推奨 : こ の属性は RTL のみで設定し て く だ さ い。 XDC フ ァ イルが読み込まれる前に、 保持する必要のあ る信号が最

適化で削除 さ れて し ま う こ と があ り ます。 こ の属性を RTL で設定し ておけば、 必ず適用 さ れます。

DONT_TOUCH の Verilog 例

Verilog のワ イ ヤ例

(* dont_touch = "true" *) wire sig1; assign sig1 = in1 & in2;

assign out1 = sig1 & in2;

Verilog のモ ジ ュ ール例

(* DONT_TOUCH = "true|yes" *) module example_dt_ver (clk, In1, In2, out1);

Verilog のイ ン ス タ ン ス例

(* DONT_TOUCH = "true|yes" *) example_dt_ver U0 (.clk(clk), .in1(a), .in2(b), out1(c));

DONT_TOUCH の VHDL 例

VHDL の信号例

signal sig1 : std_logic

attribute dont_touch : string;

attribute dont_touch of sig1 : signal is "true"; ....

....

sig1 <= in1 and in2; out1 <= sig1 and in3;

(36)

VHDL のエ ン テ ィ テ ィ 例

entity example_dt_vhd is port ( clk : in std_logic; In1 : in std_logic; In2 : in std_logic; out1 : out std_logic );

attribute dont_touch : string;

attribute dont_touch of example_dt_vhd : entity is "true|yes"; end example_dt_vhd;

VHDL の コ ンポーネ ン ト 例

entity rtl of test is

attribute dont_touch : string; component my_comp

port (

in1 : in std_logic; out1 : out std_logic); end component;

atribute dont_touch of my_comp : component is “yes”;

VHDL のアーキテ ク チ ャ例

entity rtl of test is

attribute dont_touch : string;

attribute dont_touch of rtl : architecture is “yes”;

FSM_ENCODING

FSM_ENCODING 属性は、 ス テー ト マシ ンのエン コー ド 方法を指定し ます。 通常は、 Vivado ツールに よ り ス テー ト マ

シ ンに対 し てほ と んど のデザ イ ンで最適な結果が生成 さ れ る エン コ ー ド プ ロ ト コ ルが選択 さ れます。デザ イ ンの タ イ

プに よ っ ては、 特定のエン コ ー ド プ ロ ト コ ルが適 し てい る も の も あ り ます。

FSM_ENCODING 属性は、ス テー ト マシ ン レ ジ ス タ に設定で き ます。有効な値は one_hot、sequential、johnson、 gray、 auto です。 デフ ォル ト は auto で、 ツールに よ り 最適なエン コー ド が選択 さ れます。 RTL ま たは XDC で設 定で き ます。

FSM_ENCODING の Verilog 例

(* fsm_encoding = "one_hot" *) reg [7:0] my_state;

FSM_ENCODING の VHDL 例

type count_state is (zero, one, two, three, four, five, six, seven); signal my_state : count_state;

attribute fsm_encoding : string;

(37)

FSM_SAFE_STATE

FSM_SAFE_STATE 属性は、ス テー ト マシ ンが不正な ス テー ト にな っ た と き に次の ク ロ ッ ク サ イ ク ルで既知の ス テー ト にす る ロ ジ ッ ク を、 ス テー ト マシ ンに挿入 し ます。 た と えば、 onehot エ ン コ ー ド に設定 さ れた ス テー ト マシ ン が不正な 0101 ス テー ト にな っ た場合に回復可能です。 FSM_ENCODING 属性は、 ス テー ト マシ ン レ ジ ス タ に設定で き ます。RTL ま たは XDC で設定で き ます。 有効な値は、 次の と お り です。 • auto : 1 ビ ッ ト /フ リ ッ プの自動訂正にハ ミ ン グ 3 エン コー ド を使用し ます。 • reset_state : 1 ビ ッ ト /フ リ ッ プのハ ミ ン グ 2 エン コー ド 検出を使用し て、 ス テー ト マシ ン を強制的に リ セ ッ ト ス テー ト に し ます。 • power_on_state : 1 ビ ッ ト /フ リ ッ プのハ ミ ン グ 2 エン コー ド 検出を使用し て、 ス テー ト マシ ン を強制的にパ ワ ーオ ン ス テー ト に し ます。 • default_state : 1 ビ ッ ト /フ リ ッ プのハ ミ ン グ 2 エン コー ド 検出を使用し て、ス テー ト マシ ン を RTL でデフ ォ ル ト ス テー ト と し て指定 さ れた ス テー ト に、 その ス テー ト に到達で き ない場合で も 強制 し ます。

FSM_SAFE_STATE の Verilog 例

(* fsm_safe_state = "reset_state" *) reg [7:0] my_state;

FSM_SAFE_STATE の VHDL 例

type count_state is (zero, one, two, three, four, five, six, seven); signal my_state : count_state;

attribute fsm_safe_state : string;

attribute fsm_safe_state of my_state : signal is "power_on_state";

FULL_CASE (Verilog のみ)

FULL_CASE は、 case、 casex ま たは casez 文で可能性のあ るすべての case 値が指定 さ れる こ と を示し ます。 case

値が指定 さ れてい る 場合、Vivado 合成で case 値に対 し て余分な ロ ジ ッ ク は作成 さ れません。 こ の属性は、 case 文に

設定で き ます。 こ の属性は合成 コ ンパ イ ラ に影響 し 、 デザ イ ンの論理動作を変更する 可能性があ る ので、RTL でのみ 設定可能です。

FULL_CASE の Verilog 例

(* full_case *) case select 3’b100 : sig = val1; 3’b010 : sig = val2; 3’b001 : sig = val3; endcase

図 1-1 : Flow Navigator : [Synthesis] セ ク シ ョ ン
表 1-1 :  Vivado Defaults  と  Flow_RunTimeOptimized ス ト ラ テジ
図 1-3 : [New Strategy] ダ イ ア ログ ボ ッ ク ス
図 1-5 : Add Sources ウ ィ ザー ド  : [Add or Create Design Sources] ページ
+7

参照

関連したドキュメント

I give a proof of the theorem over any separably closed field F using ℓ-adic perverse sheaves.. My proof is different from the one of Mirkovi´c

Keywords: continuous time random walk, Brownian motion, collision time, skew Young tableaux, tandem queue.. AMS 2000 Subject Classification: Primary:

Kilbas; Conditions of the existence of a classical solution of a Cauchy type problem for the diffusion equation with the Riemann-Liouville partial derivative, Differential Equations,

This paper presents an investigation into the mechanics of this specific problem and develops an analytical approach that accounts for the effects of geometrical and material data on

The object of this paper is the uniqueness for a d -dimensional Fokker-Planck type equation with inhomogeneous (possibly degenerated) measurable not necessarily bounded

In the paper we derive rational solutions for the lattice potential modified Korteweg–de Vries equation, and Q2, Q1(δ), H3(δ), H2 and H1 in the Adler–Bobenko–Suris list.. B¨

While conducting an experiment regarding fetal move- ments as a result of Pulsed Wave Doppler (PWD) ultrasound, [8] we encountered the severe artifacts in the acquired image2.

We will study the spreading of a charged microdroplet using the lubrication approximation which assumes that the fluid spreads over a solid surface and that the droplet is thin so