vivado design suite...vivado design suite ユーザー ガイド ロジック...

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

Upload: others

Post on 14-Mar-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

Vivado Design Suite ユーザー ガイド

ロジック シミ ュレーシ ョ ン

UG900 (v2016.3) 2016 年 10 月 5 日

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

Page 2: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

ロジック シミ ュレーシ ョ ン 2UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

改訂履歴

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

日付 バージョ ン 改訂内容

2016 年 10 月 5 日 2016.3 • ユーザー ガイ ドの構成を次の順に変更:

° シ ミ ュレーシ ョ ンの準備をするための概要と一般情報

° サードパーティ シ ミ ュレータの使用

° Vivado シ ミ ュレータの使用

° その他の情報

• 第 5 章 「Vivado シ ミ ュレータを使用したシ ミ ュレーシ ョ ン波形の解析」 に Vivado シ

ミ ュレータのスコープ、 オブジェク ト、 波形グローバル設定に関する情報を追加。

• 第 2 章 「シ ミ ュレーシ ョ ンの準備」 に、 XPM の情報、 波形ビューアーのグ リ ッ ド線を

オフにするオプシ ョ ン、 WCFG の新しい Tcl コマンドを追加。

• 第 4 章 「Vivado シ ミ ュレータを使用したシ ミ ュレーシ ョ ン」 に [Scope] ウ ィンド ウの

[Log to Wave Database] オプシ ョ ンを追加。

• 第 4 章 「Vivado シ ミ ュレータを使用したシ ミ ュレーシ ョ ン」 に保存されたシ ミ ュレー

タのユーザー インターフェイス設定の使用に関するセクシ ョ ンを追加。

2016 年 6 月 8 日 2016.2 • 第 2 章 「シ ミ ュレーシ ョ ンの準備」 の 「完全な UNIFAST ライブラ リ 」 セクシ ョ ンの

Tcl コマンドをアップデート。

• 第 7 章 「Vivado シ ミ ュレータでのバッチまたはスク リプ ト モードを使用したシ ミ ュ

レーシ ョ ン」 の 「export_simulation」 セクシ ョ ンに export_simulation スク リプ トに関す

る注記を追加。

2016 年 4 月 6 日 2016.1 • 第 3 章 「Vivado シ ミ ュレータについて」 の 「シ ミ ュレーシ ョ ンを閉じる」 セクシ ョ ン

に注記を追加。

• 第 7 章 「バッチまたはスク リプ ト モードのシ ミ ュレーシ ョ ン」 の表 7-2 に

-dpi_absolute コマンド オプシ ョ ンを追加。

• 第 8 章 「サードパーティ シ ミ ュレータの使用」

° サードパーティ ツールを使用したシ ミ ュレーシ ョ ンの実行のセクシ ョ ンに VCS

シ ミ ュレータに関する注記を追加。

° 「ModelSim および Questa でのシ ミ ュレーシ ョ ン ステップ制御コンス ト ラ ク ト 」 セ

クシ ョ ンをアップデート。

• 付録 F 「Vivado シ ミ ュレータのダイレク ト プログラ ミ ング インターフェイス (DPI)」

をアップデート。

• 付録 G 「ザイ リ ンクス シ ミ ュレータ インターフェイス」 をアップデート。

Page 3: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

目次

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

第 1 章: ロジック シミ ュレーシ ョ ンの概要概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

サポート されるシ ミ ュレータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

シ ミ ュレーシ ョ ン フロー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

言語および暗号化サポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

第 2 章: シミ ュレーシ ョ ンの準備概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

テス トベンチおよびスティ ミ ュラス ファ イルの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

シ ミ ュレータのインス トール場所の指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

シ ミ ュレーシ ョ ン ライブラ リのコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

ザイ リ ンクス シ ミ ュレーシ ョ ン ラ イブラ リの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

シ ミ ュレーシ ョ ン設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

シ ミ ュレーシ ョ ン ソース ファ イルの追加または作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

ネッ ト リ ス トの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

第 3 章: サードパーティ シミ ュレータを使用したシミ ュレーシ ョ ン概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Vivado IDE でのサードパーティ シ ミ ュレータを使用したシ ミ ュレーシ ョ ンの実行 . . . . . . . . . . . . . . . . . . . . . . . . . 35

消費電力解析用の SAIF の出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

消費電力解析用の VCD の出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

IP のシ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

AXI バス ファンクシ ョ ン モデルを使用したデザインのシ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

統合されたシ ミ ュレーシ ョ ンの実行中のカスタム DO ファ イルの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

シ ミ ュレータ別の run ディ レク ト リの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

バッチ モードでのサードパーティ シ ミ ュレータの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Vivado シ ミ ュレータの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

論理およびタイ ミ ング シ ミ ュレーシ ョ ンの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

シ ミ ュレーシ ョ ン結果の保存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

複数のシ ミ ュレーシ ョ ン run の区別 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

シ ミ ュレーシ ョ ンを閉じる . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

シ ミ ュレーシ ョ ン起動スク リプ ト ファ イルの追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

シ ミ ュレーシ ョ ン メ ッセージの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

launch_simulation コマンドの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

デザイン変更後のシ ミ ュレーシ ョ ンの再実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

保存されたシ ミ ュレータのユーザー インターフェイス設定の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

ロジック シミ ュレーシ ョ ン 3UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 4: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

波形設定と波形ウ ィンド ウの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

前に保存したシ ミ ュレーシ ョ ン run を開く . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

波形設定の HDL オブジェク ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

波形のカスタマイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

波形表示の制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

波形の分類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

波形の解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

ソース レベルでのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

波形オブジェク ト を特定値に設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Vivado シ ミ ュレータを使用した消費電力解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

Tcl コマンド report_drivers の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

VCD 機能の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

Tcl コマンド log_wave の使用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

[Objects] ウ ィンド ウ、 波形ウ ィンド ウ、 テキス ト エディ ターでの信号のクロスプローブ . . . . . . . . . . . . . . . . . . 102

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

シ ミ ュレーシ ョ ン ファ イルとスク リプ トのエクスポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

バッチ モードでの Vivado シ ミ ュレータの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

デザイン スナップシ ョ ッ トのエラボレートおよび生成 (xelab) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

デザイン スナップシ ョ ッ トのシ ミ ュレーシ ョ ン (xsim) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

スタンドアロン モードでの Vivado シ ミ ュレータの実行例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

プロジェク ト ファ イル (.prj) の構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

定義済みマクロ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

ラ イブラ リ マップ ファ イル (xsim.ini) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

シ ミ ュレーシ ョ ン モードの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

Tcl コマンド と スク リプ トの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129export_simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

export_ip_user_files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

付録 A: コンパイル、 エラボレーシ ョ ン、 シミ ュレーシ ョ ン、 ネッ ト リス ト、 アドバンス オプシ ョ ン概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

コンパイル オプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

エラボレーシ ョ ン オプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

シ ミ ュレーシ ョ ン オプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

ネッ ト リ ス ト オプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

アドバンス シ ミ ュレーシ ョ ン オプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

付録 B: Vivado シミ ュレータの SystemVerilog サポート概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

ダイナミ ッ ク タイプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

付録 C: Vivado シミ ュレータの VHDL 2008 サポート概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

ロジック シミ ュレーシ ョ ン 4UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 5: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

コンパイルおよびシ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

サポート される機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

C コードのコンパイル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

xsc コンパイラ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

xelab を使用したコンパイル済み C コードの SystemVerilog への統合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

C と SystemVerilog の境界で使用可能なデータ型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

ユーザー定義型のマップ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

svdpi.h 関数のサポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

Vivado Design Suite に含まれる DPI 例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

付録 E: 特殊なケースの処理グローバル リセッ ト と ト ラ イステートの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

デルタ サイクルとレース コンディシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

ASYNC_REG 制約の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

コンフ ィギュレーシ ョ ン インターフェイスのシ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

シ ミ ュレーシ ョ ンでのブロ ッ ク RAM の競合チェッ クのディ スエーブル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

消費電力解析のための SAIF ファ イルの出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

AXI バス ファンクシ ョ ン モデルを使用したデザインのシ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

コンパイルまたはシ ミ ュレーシ ョ ンのスキップ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

付録 F: Vivado シミ ュレータ Tcl コマンドの値の規則概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

文字列の値の解釈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

Vivado Design Suite シ ミ ュレーシ ョ ン ロジッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

混合言語シ ミ ュレーシ ョ ンの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

VHDL 言語サポートの例外 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

Verilog 言語サポートの例外 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

付録 H: Vivado シミ ュレータ クイック リファレンス ガイド概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

ダイナミ ッ ク リ ンキング用に XSI 関数を準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

テス トベンチ コードの記述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

C/C++ プログラムのコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

デザイン共有ライブラ リの準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

XSI 関数参照 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

Vivado シ ミ ュレータの VHDL データ形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

Vivado シ ミ ュレータの Verilog データ形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

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

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

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

ロジック シミ ュレーシ ョ ン 5UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 6: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

サードパーティ シ ミ ュレータに関する情報へのリ ンク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

言語および暗号化サポート規格へのリ ンク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

OS サポートおよびリ リースの変更点へのリ ンク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

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

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

ロジック シミ ュレーシ ョ ン 6UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 7: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 1 章

ロジック シミ ュレーシ ョ ンの概要

概要

シ ミ ュレーシ ョ ンは、 実際のデザインの動作をソフ ト ウェア環境でエミ ュレートするプロセスです。 シ ミ ュレー

シ ョ ンを実行する と、 スティ ミ ュラスを挿入してデザイン出力を観察するこ とによ り、 デザインの機能を検証でき

ます。

この章では、シ ミ ュレーシ ョ ン プロセスの概要および Vivado® Design Suite の資料 のシ ミ ュレーシ ョ ン オプシ ョ ンに

ついて説明します。

シ ミ ュレーシ ョ ン プロセスには次の操作が含まれます。

• テス トベンチの作成、 ライブラ リの設定、 およびシ ミ ュレーシ ョ ン設定の指定

• ネッ ト リ スの生成 (合成後またはインプリ メンテーシ ョ ン後のシ ミ ュレーシ ョ ンを実行する場合)

• Vivado シ ミ ュレータまたはサードパーティ シ ミ ュレータを使用したシ ミ ュレーシ ョ ンの実行サポート されるシ

ミ ュレータの詳細は、 「サポート されるシ ミ ュレータ」 を参照してください。

サポート されるシミ ュレータ

Vivado Design Suite では、 次のシ ミ ュレータがサポート されます。

• Vivado シ ミ ュレータ : Vivado IDE に統合されており、 シ ミ ュレーシ ョ ンが IDE 内のウ ィンド ウに表示されます。

• Mentor Graphics 社 Questa Advanced Simulator: Vivado IDE に統合されています。

• Mentor Graphics 社 ModelSim Simulator: Vivado IDE に統合されています。

• Cadence 社 Incisive Enterprise Simulator (IES): Vivado IDE に統合されています。

• Synopsys 社 Verilog Compiler Simulator (VCS) および VCS MX: Vivado IDE に統合されています。

• Aldec Rivera-PRO Simulator: Vivado IDE でサポート されていますが、 統合されていません。

• Aldec Active-HDL: Vivado IDE でサポート されていますが、 統合されていません。

サードパーティ シ ミ ュレータのサポート されるバージ ョ ンについては、『Vivado Design Suite ユーザー ガイ ド : リ リー

ス ノート 、 インス トールおよびライセンス』 (UG973) [参照 19] を参照してください。

Vivado IDE および Vivado Design Suite フローの詳細は、 次を参照して ください。

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

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

ロジック シミ ュレーシ ョ ン 7UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 8: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 1 章: ロジック シミ ュレーシ ョ ンの概要

シミ ュレーシ ョ ン フロー シ ミ ュレーシ ョ ンは、 デザイン フローのさまざまな段階で実行できます。 デザイン入力後の 初の段階の 1 つであ

り、 終的な機能とデザイン パフォーマンスの検証を行う、 インプリ メンテーシ ョ ン後の 後の段階の 1 つでもあ

り ます。

シ ミ ュレーシ ョ ンは、 通常はデザイン機能と タイ ミ ングの両方の条件が満たされるまで繰り返す必要があ り ます。

図 1-1 は、 典型的なデザインのシ ミ ュレーシ ョ ン フローを示しています。

X-Ref Target - Figure 1-1

図 1-1: シミ ュレーシ ョ ン フロー

ロジック シミ ュレーシ ョ ン 8UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 9: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 1 章: ロジック シミ ュレーシ ョ ンの概要

レジスタ ト ランスファー レベルのビヘイビアー シミ ュレーシ ョ ン

レジスタ ト ランスファー レベル (RTL) のビヘイビアー シ ミ ュレーシ ョ ンには、 次が含まれます。

• RTL コード

• インスタンシエート済み UNISIM ラ イブラ リ コンポーネン ト

• インスタンシエート済み UNIMACRO コンポーネン ト

• UNISIM ゲート レベル モデル (Vivado 論理解析用)

• SECUREIP ライブラ リ

RTL シ ミ ュレーシ ョ ンでは、 合成またはインプリ メンテーシ ョ ン ツールを実行する前にデザインをシ ミ ュレーシ ョ

ンおよび検証できます。 デザインは、 モジュールまたはエンティティ、 ブロ ッ ク、 デバイス、 またはシステムと し

て検証できます。

RTL シ ミ ュレーシ ョ ンは、 通常コード構文を検証し、 コードが意図したとおりに機能するかど うかを確認するため

に実行されます。 この段階では、 デザインは主に RTL で記述されるので、 タイ ミ ング情報は必要あ り ません。

デザインにデバイス ラ イブラ リ コンポーネン トがインスタンシエート されていなければ、 RTL シ ミ ュレーシ ョ ンは

アーキテクチャによって異なるこ とはあ り ません。 ザイ リ ンクスでは、 インスタンシエーシ ョ ンをサポートするた

め、 UNISIM ライブラ リ を提供しています。

デザインをビヘイビアー RTL で検証する と、 早期に問題を解決できるので、 デザイン サイクルを短縮できます。

初のデザイン作成をビヘイビアー コードのみにする と、 次が可能になり ます。

• 読みやすいコード

• よ り高速でシンプルなシ ミ ュレーシ ョ ン

• コードの移植性 (別のデバイス ファ ミ リに移行可能)

• コード再利用性 (今後別のデザインに同じコードを使用可能)

合成後のシミ ュレーシ ョ ン

合成済みのネッ ト リ ス ト をシ ミ ュレーシ ョ ンする と、 合成後のデザインが論理要件を満たしているか、 意図したと

おりに動作するかど うかを検証できます。 このシ ミ ュレーシ ョ ン段階では、 一般的ではあ り ませんが、 見積もられ

たたタイ ミ ング値を使用してタイ ミ ング シ ミ ュレーシ ョ ンを実行できます。

論理シ ミ ュレーシ ョ ン ネッ ト リ ス トは、 階層状になっており、 プ リ ミ ティブ モジュールおよびエンティティ レベル

に展開されます。 階層の 下位にはプリ ミ ティブおよびマクロ プリ ミ ティブが含まれます。

これらのプリ ミ ティブは、 Verilog の場合は UNISIMS_VER ライブラ リに、 VHDL の場合は UNISIM ラ イブラ リに含

まれます。 詳細は、 19 ページの 「UNISIM ライブラ リ 」 を参照してください。

ロジック シミ ュレーシ ョ ン 9UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 10: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 1 章: ロジック シミ ュレーシ ョ ンの概要

インプリ メンテーシ ョ ン後のシミ ュレーシ ョ ン インプ リ メンテーシ ョ ン後は論理シ ミ ュレーシ ョ ンまたはタイ ミ ング シ ミ ュレーシ ョ ンを実行できます。 タイ ミ ン

グ シ ミ ュレーシ ョ ンは、 実際にデザインをデバイスにダウンロードするのに も近く、 インプリ メン ト済みデザイ

ンが論理要件およびタイ ミ ング要件を満たし、 デバイスで意図したとおりに動作するこ とを確認します。

重要 : 詳細なタイ ミ ング シ ミ ュレーシ ョ ンを実行するこ とによ り、 次のよ うなエラーが見逃されるのを防ぐこ とが

できます。

• 次が原因で合成後およびインプリ メンテーシ ョ ン後の機能が変更されている :

° 合成プロパティ または制約の不一致 (full_case および parallel_case など)

° ザイ リ ンクス デザイン制約 (XDC) ファ イルでの UNISIM プロパティの適用

° 異なるシ ミ ュレータによるシ ミ ュレーシ ョ ン中の言語の解釈

• デュアル ポート RAM の競合

• タイ ミ ング制約が適用されていないか、 不適切に適用

• 非同期パスの操作

• 適化手法による機能の問題

言語および暗号化サポート Vivado シ ミ ュレータでは、 次がサポート されます。

• VHDL ( 『IEEE Standard VHDL Language Reference Manual』 (IEEE-STD-1076-1993) [参照 14] を参照)

• Verilog ( 『IEEE Standard Verilog Hardware Description Language』 (IEEE-STD-1364-2001) [参照 15] を参照)

• SystemVerilog の合成可能なサブセッ ト ( 『IEEE Standard Verilog Hardware Description Language』

(IEEE-STD-1800-2009) [参照 16] を参照)

• IEEE P1735 暗号化 ( 『Recommended Practice for Encryption and Management of Electronic Design Intellectual Property

(IP)』 (IEEE-STD-P1735) [参照 18] を参照)

ロジック シミ ュレーシ ョ ン 10UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 11: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章

シミ ュレーシ ョ ンの準備

概要

この章では、 ザイ リ ンクス デバイスを Vivado® 統合設計環境 (IDE) でシ ミ ュレーシ ョ ンする際に必要なコンポーネ

ン トについて説明します。

シ ミ ュレーシ ョ ンを実行する前に次を設定します。

• 実行するシ ミ ュレーシ ョ ン アクシ ョ ンを反映するテス トベンチを作成します。

• Vivado IDE のインス トール ディ レク ト リ を設定します (Vivado シ ミ ュレータを使用しない場合)。

• ライブラ リ をコンパイルします (Vivado シ ミ ュレータを使用しない場合)。

• 使用する必要のあるライブラ リ を選択して宣言します。

• ターゲッ ト シ ミ ュレータ、 シ ミ ュレーシ ョ ン 上位モジュール名、 上位モジュール (テス ト中のデザイン) な

どのシ ミ ュレーシ ョ ン設定を指定し、 シ ミ ュレーシ ョ ン セッ ト を表示して、 コンパイル、 エラボレーシ ョ ン、

シ ミ ュレーシ ョ ン、 ネッ ト リ ス ト 、 およびアドバンス オプシ ョ ンを定義します。

• ネッ ト リ スを生成します (合成後またはインプリ メンテーシ ョ ン後のシ ミ ュレーシ ョ ンを実行する場合)。

テストベンチおよびステ ィ ミ ュラス ファイルの使用

テス トベンチは、 次を実行するシ ミ ュレータ用に記述されるハード ウェア記述言語 (HDL) コードです。

• デザインをインスタンシエートおよび初期化

• スティ ミ ュラスを生成および適用

• デザイン出力結果を監視および論理精度を確認 (オプシ ョ ン)

テス トベンチは、 ファ イル、 波形または表示画面へのシ ミ ュレーシ ョ ン出力を表示するためにも設定できます。 テ

ス トベンチは、 シンプルな構造で、 特定の入力にスティ ミ ュラスを順次適用するものにできます。

テス トベンチは複雑にするこ と もできます。 この場合、 次を含めるこ とができます。

• サブルーチン呼び出し

• 外部ファイルから読み出されるスティ ミ ュラス

• 条件付きスティ ミ ュラス

• その他の複雑な構造

ロジック シミ ュレーシ ョ ン 11UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 12: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

テス トベンチを使用する と、 対話型シ ミ ュレーシ ョ ンと比較して次のよ うな利点があ り ます。

• デザイン プロセスでの反復シ ミ ュレーシ ョ ンが可能になり ます。

• テス ト条件の資料が提供されます。

次に、 効果的なテス トベンチを作成するための推奨事項を示します。

• Verilog テス トベンチ ファ イルで `timescale を常に指定します。 次に例を示します。

‘timescale 1ns/1ps

• テス トベンチ内のデザインへの入力すべてをシ ミ ュレーシ ョ ン時間 0 で初期化し、 既知の値でシ ミ ュレーシ ョ

ンが正し く開始されるよ うにします。

• 論理およびタイ ミ ング ベースのシ ミ ュレーシ ョ ンで使用されるデフォルトのグローバル セッ ト / リセッ ト (GSR)

パルスを考慮し、 スティ ミ ュラス データを 100 ns 後に適用します。

• グローバル セッ ト / リセッ ト (GSR) が解除される前にクロ ッ ク ソースを開始します。 詳細は、 167 ページの 「グ

ローバル リセッ ト と ト ラ イステートの使用」 を参照してください。

テス トベンチの詳細は、 『効率的なテス トベンチの記述』 (XAPP199) [参照 5] を参照してください。

ヒン ト : テス トベンチを作成する際は、合成後およびインプ リ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンでは

GSR パルスが自動的に発生するこ とを考慮してください。 このパルスによ り、 すべてのレジスタがシ ミ ュレーシ ョ

ンの 初の 100 ns 間リセッ ト状態になり ます。

シミ ュレータのインストール場所の指定

インス トール パスを定義します。

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

2. [Vivado Options] ダイアログ ボッ クスの [General] ページで [3rdParty Tools] セクシ ョ ンにスクロールし、 該当する

フ ィールドにインス トール パスを指定します。

注記: Vivado シ ミ ュレータは Vivado IDE の一部と してインス トールされるため、 Vivado シ ミ ュレータのインス トー

ル ディレク ト リ を設定する必要はあ り ません。

ロジック シミ ュレーシ ョ ン 12UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 14: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

シミ ュレーシ ョ ン ライブラリのコンパイル

重要: Vivado シ ミ ュレータを使用する場合は、 シ ミ ュレーシ ョ ン ラ イブラ リ をコンパイルする必要はあ り ませんが、

サードパーティ シ ミ ュレータを使用する場合は、 ライブラ リ をコンパイルする必要があ り ます。

Vivado Design Suite では、 シ ミ ュレーシ ョ ン モデルのファイルセッ トおよびライブラ リ を提供しています。 デザイン

をシ ミ ュレーシ ョ ンする前に、 これらのファイルをシ ミ ュレーシ ョ ン ツールでコンパイルしておく必要があ り ます。

シ ミ ュレーシ ョ ン ラ イブラ リには、 デバイスおよび IP のビヘイビアー モデルと タイ ミ ング モデルが含まれていま

す。 コンパイルされたライブラ リは、 複数のデザイン プロジェク トで使用できます。

コンパイル プロセスでは、 シ ミ ュレータでコンパイルされたライブラ リ を参照するために使用されるデフォルトの

初期化ファイルが作成されます。 compile_simlib コマンドは、 ライブラ リ をコンパイルし、 指定されたライブラ

リ出力ディ レク ト リにファ イルを作成します。 デフォルトの初期化ファイルには、 参照するライブラ リのパスを指

定する変数、 適化、 コンパイラ、 シ ミ ュレータの設定が含まれています。 正しい初期化ファイルがパスにない場

合は、 ザイ リ ンクス プリ ミ ティブを含むデザインをシ ミ ュレーシ ョ ンできません。

初期化ファイルの名前は、 次のよ うに、 使用しているシ ミ ュレータによって異なり ます。

• Questa Advanced Simulator/ModelSim: modelsim.ini

• IES: cds.lib

• VCS: synopsys_sim.setup

シ ミ ュレータ用のコンパイルされたライブラ リ ファ イルについては、 サードパーティ シ ミ ュレーシ ョ ン ツールの資

料を参照してください。

重要: ラ イブラ リのコンパイルは、 同じバージ ョ ンのツールを使用している限り、 通常 1 回実行するだけです。

Vivado ツールまたはシ ミ ュレータのバージ ョ ンを変更した場合は、 ライブラ リ をコンパイルし直す必要があ り ます。

ライブラ リは、 次に説明するよ うに、 Vivado IDE または Tcl コマンドを使用してコンパイルできます。

ロジック シミ ュレーシ ョ ン 14UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 15: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

Vivado IDE を使用したシミ ュレーシ ョ ン ライブラリのコンパイル

1. [Tools] → [Compile Simulation Libraries] をク リ ッ ク してダイアログ ボッ クスを開きます (図 2-2)。

次のオプシ ョ ンを設定します。

• [Simulator]:ド ロ ップダウン リ ス トからシ ミ ュレータを選択します。

• [Language]: ラ イブラ リ をコンパイルする言語を指定します。 このオプシ ョ ンを指定しない場合、 選択したシ

ミ ュレータに対応する言語に設定されます。 混合言語シ ミ ュレータの場合は、 Verilog および VHDL ラ イブラ リ

の両方がコンパイルされます。

• [Library]: コンパイルするシ ミ ュレーシ ョ ン ラ イブラ リ を指定します。 デフォルトでは、 compile_simlib コ

マンドですべてのシ ミ ュレーシ ョ ン ラ イブラ リがコンパイルされます。

• [Family]: 選択したライブラ リ を指定したデバイス ファ ミ リ用にコンパイルします。 デフォルトでは、 すべての

デバイス ファ ミ リが生成されます。

• [Compiled library location]: コンパイルされたライブラ リ を保存するディ レク ト リ パスを指定します。 デフォルト

では、 非プロジェク トモードではライブラ リは現在の作業ディ レク ト リに保存され、 プロジェク ト モードでは

<project>/<project>.cache/compile_simlib ディレク ト リに保存されます。 プロジェク ト モードおよ

び非プロジェク ト モードの詳細は、 『Vivado Design Suite ユーザー ガイ ド : デザイン フローの概要』 (UG892) [参

照 11] を参照してください。

X-Ref Target - Figure 2-2

図 2-2: [Compile Simulation Libraries] ダイアログ ボックス

ロジック シミ ュレーシ ョ ン 15UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 16: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

ヒン ト : Vivado シ ミ ュレータにプリ コンパイル ラ イブラ リが含まれるので、 ラ イブラ リ ディ レク ト リ を指定する必

要はあ り ません。

• [Simulator executable path]: シ ミ ュレータ実行ファイルのディ レク ト リ を指定します。 このオプシ ョ ンは、 ター

ゲッ ト シ ミ ュレータが $PATH または %PATH% 環境変数で指定されていない場合や、 $PATH または %PATH% 環

境変数で指定されているパス とは別のパスを指定する場合に使用します。

• [Overwrite current pre-compiled libraries]: 現在のコンパイル済みライブラ リ を上書きします。

• [Compile 32-bit libraries]: デフォルトの 64 ビッ トのコンパイルではなく、 32 ビッ ト モードのシ ミ ュレータ コン

パイルを実行します。

• [Verbose]: メ ッセージの非表示設定を一時的に解除し、 コマンドからのすべてのメ ッセージを返します。

• [Command]: ダイアログ ボッ クスに入力したオプシ ョ ンと同等の Tcl コマンドを表示します。

ヒン ト : [Command] フ ィールドの値を使用する と、 Tcl または非プロジェク ト モードでシ ミ ュレーシ ョ ン ライブラ リ

を生成できます。

Tcl コマンドを使用したシミ ュレーシ ョ ン ライブラリのコンパイル

シ ミ ュレーシ ョ ン ラ イブラ リは、 compile_simlib Tcl コマンドを使用してコンパイルするこ と もできます。

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

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

次に、 各サードパーティ シ ミ ュレータのコマンド例を示します。

• Questa Advanced Simulator: すべての言語、 すべてのライブラ リ、 すべてのファ ミ リに対して Questa 用のシ ミ ュ

レーシ ョ ン ライブラ リ を現在のディレク ト リに生成します。

compile_simlib -language all -simulator questa -library all -family all

• ModelSim: ModelSim のシ ミ ュレーシ ョ ン ライブラ リ を /a/b/c に生成します。

<simulator_installation_path> は ModelSim の実行ファイルのパスです。

compile_simlib -language all -dir {/a/b/c} -simulator modelsim -simulator_exec_path {<simulator_installation_path>} -library all -family all

• IES: IES 用の Verilog 言語の UNISIM シ ミ ュレーシ ョ ン ラ イブラ リ を /a/b/c に生成します。

compile_simlib -language verilog -dir {/a/b/c} -simulator ies -library unisim -family all

• VCS: VCS 用の Verilog 言語の UNISIM シ ミ ュレーシ ョ ン ライブラ リ を /a/b/c に生成します。

compile_simlib -language verilog -dir {/a/b/c} -simulator vcs_mx -library unisim -family all

ロジック シミ ュレーシ ョ ン 16UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 17: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

ザイリンクス シミ ュレーシ ョ ン ライブラリの使用

ザイ リ ンクス シ ミ ュレーシ ョ ン ライブラ リは、 VHDL-93 および Verilog-2001 言語規格をサポートするシ ミ ュレータ

で使用できます。 ライブラ リにはザイ リ ンクス ハードウェア デバイスを正し くシ ミ ュレーシ ョ ンするのに必要な特

定の遅延およびモデル情報が組み込まれています。

ク ロ ッ ク エッジ内のブロ ッ クにはノンブロ ッキング割り当てを使用します。 これ以外の場合、 Verilog のブロッキン

グ割り当てを使用してコードを記述します。 同様に、 プロセス内のローカル計算には変数割り当てを、 プロセス間

のデータフローが必要な場合は信号割り当てを使用します。

データがクロ ッ ク と同時に変化する場合は、 データ入力がクロ ッ ク エッジ後に発生するよ うシ ミ ュレータでスケ

ジューリ ングされる可能性があ り ます。 この場合、 データを 初のクロ ッ ク エッジよ り前に供給するつも りであっ

ても、 次のクロ ッ ク エッジまで供給されません。

推奨: このよ うな意図しないシ ミ ュレーシ ョ ン結果にならないよ うにするため、 データ信号と クロ ッ ク信号は同時に

切り替えないよ うにしてください。

デザインにコンポーネン ト をインスタンシエートする際、 シ ミ ュレータでコンポーネン トの機能を記述したライブ

ラ リが参照されていないと、 シ ミ ュレーシ ョ ンが正し く実行されません。 ザイ リ ンクス ライブラ リは、 モデルの機

能に基づいてカテゴ リに分類されます。

表 2-1 は、 ザイ リ ンクスの提供するシ ミ ュレーシ ョ ン ライブラ リ を リ ス ト しています。

1. SIMPRIMS_VER は、 Verilog SIMPRIM 物理ライブラ リがマップされている論理ライブラ リ名です。

2. XPM はコンパイル済み IP と してサポート されています。 プロジェク トにソース ファイルを追加する必要はあ り ません。 サード

パーティ シ ミ ュレータを使用している場合は、 compile_simlib で生成されたコンパイル済み IP にマップされます。

表 2-1: シミ ュレーシ ョ ン ライブラリ

ライブラリ名 説明 VHDL ライブラリ名 Verilog ライブラリ名前

UNISIM ザイ リ ンクス プリ ミ ティブの

論理シ ミ ュレーシ ョ ン

UNISIM UNISIMS_VER

UNIMACRO ザイ リ ンクス マクロの論理シ ミ ュレーシ ョ ン UNIMACRO UNIMACRO_VER

UNIFAST 高速シ ミ ュレーシ ョ ン ライブラ リ UNIFAST UNIFAST_VER

SIMPRIM ザイ リ ンクス プリ ミ ティブの

タイ ミ ング シ ミ ュレーシ ョ ン

なし SIMPRIMS_VER(1)

SECUREIP PCIe® IP、 ギガビッ ト ト ランシーバーなど、 ザイ リ

ンクス デバイス機能の論理シ ミ ュレーシ ョ ンおよ

びタイ ミ ング シ ミ ュレーシ ョ ン用のシ ミ ュレー

シ ョ ン ライブラ リです。

IP のリ ス トは、「SECUREIP at the following

location:」 の下に表示されています。

<Vivado_Install_Dir>/data/secureip

SECUREIP SECUREIP

XPM ザイ リ ンクス プリ ミ ティブの

論理シ ミ ュレーシ ョ ン

XPM XPM(2)

ロジック シミ ュレーシ ョ ン 17UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 18: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

重要:- シ ミ ュレーシ ョ ン ポイン トによって異なるシ ミ ュレーシ ョ ン ライブラ リ を指定する必要があ り ます。

- インプリ メンテーシ ョ ン前と インプリ メンテーシ ョ ン後のネッ ト リ ス トのゲート レベル セルは異なり ます。

表 2-2 に、 各シ ミ ュレーシ ョ ン ポイン トで必要なシ ミ ュレーシ ョ ン ライブラ リ を リ ス ト します。

重要: Vivado シ ミ ュレータでは、 コンパイル済みのシ ミ ュレーシ ョ ン デバイス ライブラ リが使用されます。 アップ

デートがインス トールされる と自動的にこれらのライブラ リがアップデート されます。

注記: Verilog SIMPRIMS_VER では、 UNISIM と同じ ソースに加え、 タイ ミ ング アノテーシ ョ ン用に特別なブロ ッ ク

も使用されます。 SIMPRIMS_VER は Verilog SIMPRIM がマップされている論理ライブラ リ名です。

表 2-3 に、 ライブラ リのディ レク ト リ を リ ス ト します。

次のセクシ ョ ンでは、 これらのライブラ リについて詳細に説明します。

表 2-2: シミ ュレーシ ョ ン ポイン ト と関連ライブラリ

シミ ュレーシ ョ ン ポイン ト UNISIM UNIFAST UNIMACRO SECUREIP SIMPRIM(Verilog のみ)

SDF

1.レジスタ ト ランスファー レベル

(RTL) (ビヘイビアー )必要 必要 必要 必要 なし 不要

2.合成後シ ミ ュレーシ ョ ン (論理) 必要 必要 なし 必要 なし なし

3.合成後シ ミ ュレーシ ョ ン (タイ ミ ング) なし なし なし 必要 必要 必要

4.インプリ メンテーシ ョ ン後

シ ミ ュレーシ ョ ン (論理)必要 必要 なし 必要 なし なし

5.インプリ メンテーシ ョ ン後

シ ミ ュレーシ ョ ン (タイ ミ ング)なし なし なし 必要 必要 必要

表 2-3: シミ ュレーシ ョ ン ライブラリのディ レク ト リ

ライブラリ HDL タイプ ディ レク ト リ

UNISIM Verilog <Vivado_Install_Dir>/data/verilog/src/unisims

VHDL <Vivado_Install_Dir>/data/vhdl/src/unisims

UNIFAST Verilog <Vivado_Install_Dir>/data/verilog/src/unifast

VHDL <Vivado_Install_Dir>/data/vhdl/src/unifast

UNIMACRO Verilog <Vivado_Install_Dir>/data/verilog/src/unimacro

VHDL <Vivado_Install_Dir>/data/vhdl/src/unimacro

SECUREIP Verilog <Vivado_Install_Dir>/data/secureip/

ロジック シミ ュレーシ ョ ン 18UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 19: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

UNISIM ライブラリ

論理シ ミ ュレーシ ョ ンでは、 UNISIM ライブラ リが使用されます。 このライブラ リには、 デバイス プリ ミ ティブま

たは 下位構築ブロッ クの記述が含まれます。

重要: Vivado ツールでは、 IP を生成する と出力ファイルと して IP シ ミ ュレーシ ョ ン モデルが含まれるよ うにな り ま

す。 このため、 compile_simlib コマンドを使用したと きに、 IP シ ミ ュレーシ ョ ン モデルはコンパイル済みライ

ブラ リには含まれません。

暗号化されたコンポーネン ト ファイル

表 2-4 に、 IP をデザインに含めたと きにコンパイル済みの暗号化されたライブラ リ ファ イルを呼び出す UNISIM ラ

イブラ リ を リ ス ト します。 ライブラ リ検索パスに必要なパスを含めてください。

重要: Verilog モジュール名とファ イル名は大文字です。 たとえば、 モジュール BUFG は BUFG.v、 モジュール IBUF

は IBUF.v と指定します。 UNISIM プリ ミ ティブ インスタンシエーシ ョ ンが大文字の命名規則に従う よ うにして く

ださい。

VHDL UNISIM ライブラリ

VHDL UNISIM ライブラ リは、 ザイ リ ンクス デバイス ファ ミ リのプリ ミ ティブを指定する次のファイルに分割され

ています。

• コンポーネン ト宣言 (unisim_VCOMP.vhdp)

• パッケージ ファ イル (unisim_VPKG.vhd)

これらのプリ ミ ティブを使用するには、 各ファイルの 初に次の 2 行を追加する必要があ り ます。

library UNISIM;use UNISIM.Vcomponents.all;

重要: ラ イブラ リ をコンパイルし、 シ ミ ュレータにマップする必要もあ り ます。 この方法はシ ミ ュレータによって異

なり ます。

注記: Vivado シ ミ ュレータの場合、 ライブラ リ コンパイルとマッピングは統合されているので、 ユーザーがコンパイ

ルまたはマップする必要はあ り ません。

表 2-4: コンポーネン ト ファイル

コンポーネン ト ファイル 説明

<Vivado_Install_Dir>/data/verilog/src/unisim_retarget_comp.vp 暗号化された

Verilog ファ イル

<Vivado_Install_Dir>/data/vhdl/src/unisims/unisim_retarget_VCOMP.vhdp 暗号化された

VHDL ファ イル

ロジック シミ ュレーシ ョ ン 19UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 20: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

Verilog UNISIM ライブラリ

Verilog では、 各ライブラ リ モジュールは個別の HDL ファ イルで指定されます。 これによ り、 -y オプシ ョ ンでライ

ブラ リ を指定するこ とで、 指定のディ レク ト リですべてのコンポーネン ト を検索してライブラ リ を自動的に展開で

きます。

Verilog UNISIM ライブラ リは、 モジュール使用前に HDL ファ イルで指定するこ とはできません。 ライブラ リ モ

ジュールを使用するには、 すべて大文字を使用してモジュール名を指定してください。 次の例は、 インスタンシ

エート されたモジュール名とそのモジュールに関連するファイル名を示しています。

• BUFG モジュールは BUFG.v

• IBUF モジュールは IBUF.v

Verilog では大文字/小文字が区別されるので、 UNISIM プリ ミ ティブのインスタンシエーシ ョ ンではすべて大文字の

命名規則に従う よ うにしてください。

コンパイル済みライブラ リ を使用する場合は、 正しいシ ミ ュレータ コマンド ライン オプシ ョ ンを使用して、 コンパ

イル済みライブラ リ を指定してください。 次は、 Vivado シ ミ ュレータの例です。

-L unisims_ver

説明:

-L: ライブラ リ を指定するオプシ ョ ン。

UNIMACRO ライブラリ

UNIMACRO ライブラ リは、 論理シ ミ ュレーシ ョ ン中に使用されます。 このライブラ リには、 選択したデバイス プリ

ミ ティブのマクロの記述が含まれます。

重要: 『Vivado Design Suite 7 シ リーズ FPGA および Zynq-7000 All Programmable SoC ライブラ リ ガイ ド』 (UG953) [参

照 6] にリ ス ト されるデバイス マクロを含める場合は、 UNIMACRO ライブラ リ を常に指定する必要があ り ます。

VHDL UNIMACRO ライブラリ

これらのプリ ミ ティブを使用するには、 各ファイルの 初に次の 2 行を追加する必要があ り ます。

library UNIMACRO;use UNIMACRO.Vcomponents.all;

Verilog UNIMACRO ライブラリ

Verilog では、 各ライブラ リ モジュールは個別の HDL ファ イルで指定されます。 これによ り、 -y オプシ ョ ンでライ

ブラ リ を指定するこ とで、 指定のディ レク ト リですべてのコンポーネン ト を検索してライブラ リ を自動的に展開で

きます。

Verilog UNIMACRO ライブラ リは、 VHDL のよ うに、 モジュール使用前に HDL ファ イルで指定する必要はあ り ませ

ん。 ライブラ リ モジュールを使用するには、 すべて大文字を使用してモジュール名を指定して ください。 ライブラ

リ をコンパイルおよびマップする必要もあ り ます。 この方法は、 選択したシ ミ ュレータによって異なり ます。

重要: Verilog モジュール名とファ イル名は大文字です。 たとえば、 BUFG モジュールの場合は BUFG.vhd になり ま

す。 UNIMACRO プリ ミ ティブ インスタンシエーシ ョ ンが大文字の命名規則に従う よ うにしてください。

ロジック シミ ュレーシ ョ ン 20UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 21: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

SIMPRIM ライブラリ

SIMPRIM ライブラ リは、 合成またはインプリ メンテーシ ョ ン後に生成されるタイ ミ ング シ ミ ュレーシ ョ ン ネッ ト

リ ス ト をシ ミ ュレーシ ョ ンする際に使用します。

重要: タイ ミ ング シ ミ ュレーシ ョ ンは Verilog でのみサポート されます。 VHDL バージ ョ ンの SIMPRIM ライブラ リは

あ り ません。

ヒン ト : VHDL を使用する場合、 合成後およびインプリ メンテーシ ョ ン後の論理シ ミ ュレーシ ョ ンを実行できます。

この場合、 標準のデフォルト フォーマッ ト (SDF) アノテーシ ョ ンは必要なく、 シ ミ ュレーシ ョ ン ネッ ト リ ス トで

UNISIM ライブラ リが使用されます。 ネッ ト リ ス トは write_vhdl Tcl コマンドを使用して作成できます。 このコマン

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

このライブラ リは次のよ うに指定します。

-L SIMPRIMS_VER

説明:

° -L はライブラ リ指定コマンドです。

° SIMPRIMS_VER は Verilog SIMPRIM がマップされている論理ライブラ リ名です。

SECUREIP シミ ュレーシ ョ ン ライブラリ

SECUREIP ライブラ リは GT などの複雑なデバイス コンポーネン トの論理およびタイ ミ ング シ ミ ュレーシ ョ ンに使

用します。

注記: Secure IP ブロ ッ クは Vivado シ ミ ュレータで完全にサポート されています。 追加の設定は必要あ り ません。

ザイ リ ンクスでは IEEE 規格 『Recommended Practice for Encryption and Management of Electronic Design Intellectual

Property (IP)』 (IEEE-STD-P1735) [参照 18] で指定された暗号化手法を使用しています。 暗号化は、 ライブラ リ コンパ

イル プロセスで自動的に処理されます。

注記: シ ミ ュレータでライブラ リ を指定するコマンド ラ イン オプシ ョ ンについては、 それぞれのシ ミ ュレータの資

料を参照してください。

表 2-5 に、 これらのライブラ リ を使用する際のシ ミ ュレータ ベンダーごとの注意点を リ ス ト します。

表 2-5: SECUREIP ライブラリを使用する際の注意事項

シミ ュレータ名 ベンダー 要件

ModelSim SE Mentor Graphics デザイン入力が VHDL の場合は、混合言語ライセンスまたは

SECUREIP OP が必要です。 詳細はベンダーにお問い合わせ

ください。 ModelSim PE

ModelSim DE

Questa Advanced Simulator

VCS および VCS MX Synopsys

Active-HDL Aldec デザイン入力が VHDL のみの場合、 言語中立の SECUREIP

ライセンスが必要です。 詳細は、 ベンダーにお問い合わせく

ださい。 Riviera-PRO*

ロジック シミ ュレーシ ョ ン 21UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 22: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

重要: サードパーティ シ ミ ュレータのサポート バージ ョ ンは、 『Vivado Design Suite ユーザー ガイ ド : リ リース ノー

ト、 インス トールおよびライセンス』 (UG973) [参照 19] を参照してください。

VHDL SECUREIP ライブラリ

UNISIM ライブラ リには、 VHDL SECUREIP のラ ッパーが含まれます。 次の 2 行を各ファイルの 初に追加する と、

シ ミ ュレータによ りエンティティにバインド されます。

Library UNISIM;use UNISIM.vcomponents.all;

Verilog SECUREIP ライブラリ

Verilog コードを使用してシ ミ ュレーシ ョ ンを実行する場合、 ほとんどのシ ミ ュレータで SECUREIP ライブラ リ を参

照する必要があ り ます。

コンパイル済みライブラ リ を使用する場合は、 正しい指示子を使用して、 コンパイル済みライブラ リ を指定してく

ださい。 次は、 Vivado シ ミ ュレータの例です。

-L SECUREIP

重要: Verilog SECUREIP ライブラ リ を使用するには、 コンパイル時に -f オプシ ョ ンを指定します。 ファ イル リ ス ト

は、 <Vivado_Install_Dir>/data/secureip/secureip_cell.list.f から入手できます。

UNIFAST ライブラリ

UNIFAST ラ イブラ リは RTL ビヘイビアー シ ミ ュレーシ ョ ンで使用可能なオプシ ョ ンのライブラ リで、 シ ミ ュレー

シ ョ ンの実行時間を短縮します。

重要:このモデルは、 タイ ミ ング ド リブン シ ミ ュレーシ ョ ンには使用できません。

UNIFAST ライブラ リには、 フル モデルで使用可能なチェッ ク /機能がすべて含まれているわけではないので、 サイ

ンオフ シ ミ ュレーシ ョ ンには使用できません。

推奨: デザインの 初の検証には UNIFAST ライブラ リ を使用し、 完全な検証には UNISIM ライブラ リ を実行してく

ださい。

シ ミ ュレーシ ョ ン時間の短縮は、 シ ミ ュレーシ ョ ン モードのプリ ミ ティブ機能のサブセッ ト をサポートするこ とで

達成されます。

注記: このシ ミ ュレーシ ョ ン モデルでは、 サポート されない属性値のみがチェッ ク されます。

ロジック シミ ュレーシ ョ ン 22UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 23: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

MMCME2

シ ミ ュレーシ ョ ンの実行時間を短縮するため、 高速の MMCME2 シ ミ ュレーシ ョ ン モデルではフル モデルと比較し

て次の点が変更されています。

1. 基本的なクロ ッ ク生成機能のみが含まれます。 DRP、 ファ イン位相シフ ト、 ク ロ ッ ク停止およびクロ ッ ク カス

ケードなどのその他の機能はサポート されません。

2. 入力クロ ッ クは、 周波数および位相が変更されておらず、 安定している と想定されます。 入力クロ ッ ク周波数

のサンプリ ングは LOCKED 信号が High にアサート される と停止します。

3. 出力クロ ッ ク周波数、 位相、 デューティ サイクルおよびその他の機能は、 入力クロ ッ ク周波数とパラ メーター

設定から直接計算されます。

注記: 出力クロ ッ ク周波数は、 入力から VCO へのクロ ッ クから生成されるわけではあ り ません。

4. 標準の MMCME2 シ ミ ュレーシ ョ ン モデルと高速の MMCME2 シ ミ ュレーシ ョ ン モデルの LOCKED 信号のア

サート時間は異なり ます。

° 標準モデルの LOCKED アサート時間は、 M および D 設定によって異なり ます。 M および D の値が大きい

と、 標準 MMCME2 シ ミ ュレーシ ョ ン モデルのロ ッ ク時間は比較的長くな り ます。

° 高速シ ミ ュレーシ ョ ン モデルの LOCKED アサート時間は短縮されています。

DSP48E1

シ ミ ュレーシ ョ ン実行時間を短縮するため、高速 DSP48E1 シ ミ ュレーシ ョ ン モデルでは次の機能がフル モデルから

削除されています。

• パターン検出

• OverFlow/UnderFlow

• DRP インターフェイスのサポート

GTHE2_CHANNEL/GTHE2_COMMON

シ ミ ュレーシ ョ ン実行時間を短縮するため、 高速 GTHE2 シ ミ ュレーシ ョ ン モデルでは次の機能が異なっています。

• GTH リ ンクは、 近端と遠端のリ ンク パートナー間で PPM (Parts Per Million) レートの差なしで同期する必要があ

り ます。

• GTH を介したレイテンシのハード ウェア操作とのサイ クル精度は高くあ り ません。

• DRP プロダクシ ョ ン リセッ ト シーケンスはシ ミ ュレーシ ョ ンできません。 UNIFAST モデルを使用する場合は、

これをバイパスしてください。

GTXE2_CHANNEL/GTXE2_COMMON

シ ミ ュレーシ ョ ン実行時間を短縮するため、 高速 GTXE2 シ ミ ュレーシ ョ ン モデルでは次の機能が異なっています。

• GTX リ ンクは、 近端と遠端のリ ンク パートナー間で PPM (Parts Per Million) レートの差なしで同期する必要があ

り ます。

• GTX を介したレイテンシのハード ウェア操作とのサイ クル精度は高くあ り ません。

ロジック シミ ュレーシ ョ ン 23UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 24: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

方法 1: フル UNIFAST ライブラリ (推奨)

方法 1 では、 シ ミ ュレーシ ョ ンにすべての UNIFAST モデルが使用されます。 これが推奨される方法です。

Flow Navigator の [Simulation Settings] をク リ ッ ク して [Enable fast simulation models] チェッ ク ボッ クスをオンにし、

Vivado プロジェク ト環境で ModelSim に対して UNIFAST がサポート されるよ うにします。 詳細は、 22 ページの

「UNIFAST ライブラ リ 」 を参照してください。

Vivado プロジェク ト環境で Vivado シ ミ ュレータ、 ModelSim、 IES、 または VCS に対して UNIFAST サポート (高速シ

ミ ュレーシ ョ ン モデル) をイネーブルにするには、 Tcl コンソールで次の Tcl コマンドを実行します。

set_property unifast true [current_fileset –simset]

コンポーネン ト ファ イルに関する詳細は、 19 ページの 「暗号化されたコンポーネン ト ファ イル」 を参照して くだ

さい。

詳細は、 サードパーティ シ ミ ュレータのユーザー ガイ ドを参照してください。

方法 2: 特定の UNIFAST モジュールを使用

この方法は上級ユーザー用で、 UNIFAST モデルを使用してシ ミ ュレーシ ョ ンするモジュールを指定します。

個別のライブラ リ コンポーネン ト を指定するには、 Verilog コンフ ィギュレーシ ョ ン文を使用します。

config.v ファ イルで次を指定してください。

• 上位モジュールまたはコンフ ィギュレーシ ョ ンの名前 (例:config cfg_xilinx;)

• デザイン設定を適用する名前 (例: design test bench;)

• 明示的に呼び出されないセルまたはインスタンスのライブラ リ検索順

(例: default liblist unisims_ver unifast_ver;)

• 特定の CELL または INSTANCE を特定のライブラ リにマップ

(例: instance testbench.inst.O1 use unifast_ver.MMCME2;)

注記: ModelSim (vsim) の場合は、 階層名に -genblk を追加します。

(例: instance testbench.genblk1.inst.genblk1.O1 use unifast_ver.MMCME2; - VSIM)

config.v の例

config cfg_xilinx;design testbench;default liblist unisims_ver unifast_ver;//Use fast MMCM for all MMCM blocks in designcell MMCME2 use unifast_ver.MMCME2;//use fast dSO48E1for only this specific instance in the designinstance testbench.inst.O1 use unifast_ver.DSP48E1;//If using ModelSim or Questa, add in the genblk to the name(instance testbench.genblk1.inst.genblk1.O1 use unifast_ver.DSP48E1)endconfig

ロジック シミ ュレーシ ョ ン 24UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 25: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

VHDL UNIFAST ライブラリの使用

VHDL UNIFAST ライブラ リは、 Verilog と同じ基本構造を持つので、 アーキテクチャまたはライブラ リ と も使用でき

ます。 ライブラ リはテス トベンチ ファ イルに含めるこ とができます。 次の例では、 for 呼び出しでド リルダウン階

層を使用しています。

library unisim; library unifast;configuration cfg_xilinx of testbench is for xilinx .. for inst:netlist ... use entity work.netlist(inst); .......for inst.........for all:MMCME2..........use entity unifast.MMCME2; .........end for;.......for O1 inst:DSP48E1; .........use entity unifast.DSP48E1;.......end for;...end for; ..end for; end for;end cfg_xilinx;

注記: VHDL の UNIFAST モデルを使用する必要がある場合は、 エラボレーシ ョ ン中に UNIFAST ライブラ リのバイン

ド設定を使用してください。

ロジック シミ ュレーシ ョ ン 25UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 26: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

シミ ュレーシ ョ ン設定

[Project Settings] ダイアログ ボッ クスの [Simulation] ページでは、 ターゲッ ト シ ミ ュレータ、 シ ミ ュレーシ ョ ン セッ

ト、 シ ミ ュレーシ ョ ン 上位モジュール名、 上位モジュール (テス ト中のデザイン) を指定し、 コンパイル、 エラ

ボレーシ ョ ン、 シ ミ ュレーシ ョ ン、 ネッ ト リ ス ト 、 アドバンス オプシ ョ ンを設定できます。 Vivado IDE の Flow

Navigator で [Simulation] → [Simulation Settings] をク リ ッ クする と、 次の図に示す [Project Settings] の [Simulation] ペー

ジが開きます。

X-Ref Target - Figure 2-3

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

ロジック シミ ュレーシ ョ ン 26UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 27: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

[Project Settings] ダイアログ ボッ クスの [Simulation] ページには、 次のシ ミ ュレーシ ョ ン設定があ り ます。

• [Target Simulator]: ド ロ ップダウン リ ス トからシ ミ ュレータを選択します。 Vivado シ ミ ュレータがデフォルトの

シ ミ ュレータです。 サードパーティ シ ミ ュレータも多数サポート されています。

• [Simulator language]: シ ミ ュレータの言語モードを選択します。 デザインのさまざまな IP に使用されるシ ミ ュ

レーシ ョ ン モデルは、 IP でサポート される言語によって異なり ます。

• [Simulation set]: シ ミ ュレーシ ョ ン コマンドでデフォルトで使用するシ ミ ュレーシ ョ ン セッ ト を指定します。

重要: 前に定義されたシ ミ ュレーシ ョ ン セッ トのコンパイルおよびシ ミ ュレーシ ョ ン設定は、 新し く定義されたシ

ミ ュレーシ ョ ン セッ トには適用されません。

• [Simulation top module name]: シ ミ ュレーシ ョ ンで使用する別の 上位モジュールを入力します。

• [Clean up simulation files]: シ ミ ュレーシ ョ ン ディレク ト リ を削除し、 次の run を空のディ レク ト リで開始します。

• [Compiled library location]: サードパーティ シ ミ ュレータを選択した場合に表示され、 コンパイルしたライブラ リ

を保存するディ レク ト リ パスを指定します。 デフォルトでは、 ラ イブラ リは非プロジェク ト モードでは現在の

作業ディ レク ト リに保存され、 プロジェク ト モードでは <project>/<project>.cache/compile_simlib

ディ レク ト リに保存されます。

• [Compilation] タブ: コンパイラ指示子を定義および管理します。 これらの指示子はシ ミ ュレーシ ョ ン ファ イル

セッ トのプロパティ と して保存され、 xvlog および xvhdl ユーティ リ ティで Verilog および VHDL ソース ファ イ

ルをシ ミ ュレーシ ョ ン用にコンパイルする際に使用されます。

• [Elaboration ] タブ: エラボレーシ ョ ン指示子を定義および管理します。 これらの指示子はシ ミ ュレーシ ョ ン ファ

イルセッ トのプロパティ と して保存され、 xelab ユーティ リ ティでシ ミ ュレーシ ョ ン スナップシ ョ ッ ト をエラボ

レートおよび生成する際に使用されます。 表のプロパティを選択する と、 そのプロパティの詳細が表示され、

値を変更できます。

• [Simulation] タブ: シ ミ ュレーシ ョ ン指示子を定義および管理します。 これらの指示子はシ ミ ュレーシ ョ ン ファ

イルセッ トのプロパティ と して保存され、 xsim アプリ ケーシ ョ ンで現在のプロジェク ト をシ ミ ュレーシ ョ ンす

る際に使用されます。 表のプロパティを選択する と、 そのプロパティの詳細が表示され、 値を変更できます。

• [Netlist] タブ: Verilog ネッ ト リ ス トの SDF アノテーシ ョ ンおよび SDF 遅延で取り込まれるプロセス コーナーに

関するネッ ト リ ス ト設定オプシ ョ ンを指定します。 これらのオプシ ョ ンはシ ミ ュレーシ ョ ン ファ イルセッ トの

プロパティ と して保存され、 シ ミ ュレーシ ョ ン用ネッ ト リ ス ト を生成する際に使用されます。

• [Advance] タブ: [Include all design sources for simulation] オプシ ョ ンがあ り ます。 このオプシ ョ ンは、 デフォルト

でオンになっています。 このオプシ ョ ンをオンにする と、 デザイン ソースからのファイルと現在のシ ミ ュレー

シ ョ ン セッ トからのファイルすべてがシ ミ ュレーシ ョ ンで使用されます。 デザイン ソースを変更した場合で

も、 ビヘイビアー シ ミ ュレーシ ョ ンを実行する と きにその変更が反映されます。

注意: [Advanced] タブの設定は、 必要な場合にのみ変更してください。 [Include all design sources for simulation] チェッ

ク ボッ クスはデフォルトでオンになっています。 オフにする と、 予期しない結果になる可能性があ り ます。 チェッ

ク ボッ クスがオンになっていれば、 シ ミ ュレーシ ョ ン セッ トにアウ ト オブ コンテキス ト (OOC) の IP、 IP インテグ

レーター ファ イル、 および DCP が含まれます。

注記: [Compilation]、 [Elaboration]、 [Simulation]、 [Netlist]、 [Advanced] タブのプロパティの詳細は、 付録 A 「コンパ

イル、 エラボレーシ ョ ン、 シ ミ ュレーシ ョ ン、 ネッ ト リ ス ト 、 アドバンス オプシ ョ ン」 を参照して ください。

ロジック シミ ュレーシ ョ ン 27UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 28: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

シミ ュレータ言語オプシ ョ ンの理解

ほとんどのザイ リ ンクス IP には 1 つの言語に対するビヘイビアー シ ミ ュレーシ ョ ン モデルしか提供されてい

ないので、 該当する言語のライセンスがない場合、 その言語にロッ ク されたシ ミ ュレータでのシ ミ ュレーシ ョ ンは

ディ スエーブルになり ます。 simulator_language プロパティを使用する と、 IP で指定した言語のシ ミ ュレー

シ ョ ン モデルが提供されます。 シ ミ ュレーシ ョ ン言語は、 図 2-3 に示すダイアログ ボッ クスで設定できます。 たと

えば、 1 つの言語シ ミ ュレータを使用する場合、 simulator_language プロパティをシ ミ ュレータの言語と一致す

るよ うに設定します。

Vivado Design Suite では、 IP の合成ファイルを使用して言語専用の構造型シ ミ ュレーシ ョ ン モデルをオンデマンドで

生成するこ とによ り、 シ ミ ュレーシ ョ ン モデルを提供します。 ビヘイビアー モデルがない場合や、 言語がライセン

ス付与されたシ ミ ュレーシ ョ ン言語と異なる場合は、 Vivado ツールで構造型シ ミ ュレーシ ョ ン モデルが自動的に生

成され、 シ ミ ュレーシ ョ ンが可能になり ます。 これ以外の場合は、 IP には既存のビヘイビアー シ ミ ュレーシ ョ ン モ

デルが使用されます。 合成またはシ ミ ュレーシ ョ ン ファ イルが存在しない場合、 シ ミ ュレーシ ョ ンはサポート され

ません。

注記: [Generate Synthesized Checkpoint (.dcp)] がオフになっている と、 simulator_language プロパティで言語専用

のシ ミ ュレーシ ョ ン ネッ ト リ ス ト ファ イルを提供できません。

1. [Window] → [IP Catalog] をク リ ッ ク します。

2. 該当する IP を右ク リ ッ ク し、 [Customize IP] をク リ ッ ク します。

3. [Customize IP] ダイアログ ボッ クスで [OK] をク リ ッ ク します。

[Generate Output Products] ダイアログ ボッ クス (図 2-4) が表示されます。

X-Ref Target - Figure 2-4

図 2-4: [Generate Output Products] ダイアログ ボックス

ロジック シミ ュレーシ ョ ン 28UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 29: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

表 2-6 に、 simulator_language プロパティの機能を示します。

シミ ュレーシ ョ ン ランタイム精度の設定

テス トベンチで 'timescale を使用してシ ミ ュレーシ ョ ン ランタイム精度を設定します。 ザイ リ ンクス シ ミ ュ

レーシ ョ ン モデルでは、 これよ り粗い精度を使用してもシ ミ ュレータ パフォーマンスが良くなるこ とはあ り ませ

ん。 ザイ リ ンクス シ ミ ュレーシ ョ ン モデルでは、 シ ミ ュレーシ ョ ン時間のほとんどがデルタ サイクルで費やされま

すが、 デルタ サイ クルはシ ミ ュレーシ ョ ン精度の影響を受けません。

重要: 時間精度 1 ps を使用してシ ミ ュレーシ ョ ンを実行します。 MMCM などの一部のザイ リ ンクス プリ ミ ティブ コ

ンポーネン トでは、 論理シ ミ ュレーシ ョ ンまたはタイ ミ ング シ ミ ュレーシ ョ ンを正し く動作させるため、 1 ps の精

度が必要です。

[Project Settings] ダイアログ ボッ クスのシ ミ ュレーシ ョ ン オプシ ョ ンの詳細は、 付録 A の 「シ ミ ュレーシ ョ ン オプ

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

重要: テス ト ツールはタイ ミ ングをすべて一番近いピコ秒 (ps) に対してのみ計測するので、 小精度と してピコ秒が

使用されます。

表 2-6: simulator_language プロパティの機能

IP に含まれるシミ ュレーシ ョ ン モデル simulator_language の値 使用されるシミ ュレーシ ョ ン モデル

IP で VHDL および Verilog のビヘイビ

アー モデルを提供

Mixed ビヘイビアー モデル (target_language)

Verilog Verilog ビヘイビアー モデル

VHDL VHDL ビヘイビアー モデル

IP で Verilog ビヘイビアー モデルのみ

を提供

Mixed Verilog ビヘイビアー モデル

Verilog Verilog ビヘイビアー モデル

VHDL DCP から生成された VHDL シ ミ ュレーシ ョ

ン ネッ ト リ ス ト

IP で VHDL ビヘイビアー モデルのみ

を提供

Mixed VHDL ビヘイビアー モデル

Verilog DCP から生成された Verilog シ ミ ュレーシ ョ

ン ネッ ト リ ス ト

VHDL VHDL ビヘイビアー モデル

IP でビヘイビアー モデルが提供され

ない

Mixed/Verilog/VHDL DCP から生成されたネッ ト リ ス ト (target_language)

注記:1. 可能であれば、 ビヘイビアー シ ミ ュレーシ ョ ン モデルが構造型シ ミ ュレーシ ョ ン モデルよ り も優先されます。 Vivado ツール

では、 使用可能なモデルに基づいて、 ビヘイビアーまたは構造型モデルが自動的に選択されます。 この自動選択は変更できま

せん。

2. どちらの言語もシ ミ ュレーシ ョ ンに使用できる場合は target_language プロパティを使用します。Tcl: set_property target_language VHDL [current_project]

ロジック シミ ュレーシ ョ ン 29UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 30: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

シミ ュレーシ ョ ン ソース ファイルの追加または作成

シ ミ ュレーシ ョ ン ソースを Vivado Design Suite プロジェク トに追加するには、 次の手順に従います。

1. [File] → [Add Sources] をク リ ッ クするか、 または [Add Sources] ボタン をク リ ッ ク します。

Add Sources ウ ィザードが表示されます。

2. [Add or create simulation sources] をオンにし、 [Next] をク リ ッ ク します。

[Add or Create Simulation Sources] ページが開きます。 このダイアログ ボッ クスには、 次のオプシ ョ ンがあり ます。

° [Specify Simulation Set]: シ ミ ュレーシ ョ ン ソースを保存するシ ミ ュレーシ ョ ン セッ トの名前を指定します

(デフォルトは sim_1、 sim_2...)。

ド ロ ップダウン リ ス トから [Create Simulation Set] を選択する と、 新規シ ミ ュレーシ ョ ン セッ ト を定義でき

ます。 複数のシ ミ ュレーシ ョ ン セッ トが使用可能な場合は、 Vivado シ ミ ュレータによ り、 どのシ ミ ュレー

シ ョ ン セッ トがアクティブな (現在使用中の) セッ トであるかが表示されます。

ビデオ: この機能の詳細は、 Vivado Design Suite QuickTake ビデオ: ロジッ ク シ ミ ュレーシ ョ ンを参照してください。

° [Add Files]: プロジェク トに追加するシ ミ ュレーシ ョ ン ソース ファ イルを選択します。

° [Add Directories]: 選択したディ レク ト リに含まれるすべてのシ ミ ュレーシ ョ ン ソース ファ イルを追加しま

す。 指定したディ レク ト リにある有効なソース ファ イルがすべてプロジェク トに追加されます。

° [Create File]: 新規シ ミ ュレーシ ョ ン ファ イルを作成する [Create Source File] ダイアログ ボッ クスが開きま

す。 詳細は、 『Vivado Design Suite ユーザー ガイ ド : システム レベル デザイン入力』 (UG895) [参照 1] のこの

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

° ウ ィザードには、 次のボタンがあ り ます。

- [Remove]: 選択したソース ファ イルを削除します。

- [Move up]: ファ イルを リ ス トの上方向に移動します。

- [Move down]: ファ イルを リ ス トの下方向に移動します。

° ウ ィザードには、 次のチェッ ク ボッ クスがあ り ます。

- [Scan and add RTL include files into project]: 追加された RTL ファ イルをスキャンし、参照されているイン

クルード ファ イルを追加します。

- [Copy sources into project]: ソース ファ イルをプロジェク ト ディ レク ト リにコピーします。プロジェク ト

ではローカルにコピーされたバージ ョ ンが使用されます。

[Add Directories] ボタンをク リ ッ ク してソース ファ イルのディ レク ト リ を追加した場合は、 ファ イルが

ローカルのプロジェク トにコピーされる際にディ レク ト リ構造もそのまま保持されます。

- [Add sources from subdirectories]: 指定したディ レク ト リのサブディ レク ト リに含まれるソース ファ イル

をすべて追加します。

- [Include all design sources for simulation]: シ ミ ュレーシ ョ ンにデザイン ソースをすべて含めます。

ロジック シミ ュレーシ ョ ン 30UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 31: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

シミ ュレーシ ョ ン セッ トの操作

Vivado IDE では、 シ ミ ュレーシ ョ ン ソース ファ イルは [Sources] ウ ィンド ウにフォルダーと して表示されるシ ミ ュ

レーシ ョ ン ファイル セッ トに保存されます。 リモートのファ イルを参照するか、 ローカル プロジェク ト ディ レク

ト リに保存されているファイルを使用できます。

シ ミ ュレーシ ョ ン セッ トによ り、 デザインの異なる段階に異なるソースを使用できます。 たとえば、 エラボレート

済みデザインまたはデザインのモジュールのビヘイビアー シ ミ ュレーシ ョ ン用にスティ ミ ュ ラスを供給するテス ト

ベンチ ソース と、 インプリ メン ト済みデザインのタイ ミ ング シ ミ ュレーシ ョ ン用にスティ ミ ュラスを供給するテス

トベンチを別にできます。

シ ミ ュレーシ ョ ン ソースをプロジェク トに追加する際、 使用するシ ミ ュレーシ ョ ン ソース セッ ト を指定できます。

シ ミ ュレーシ ョ ン セッ ト を変更するには、 次を実行します。

1. [Sources] ウ ィンド ウで [Simulation Sources] を右ク リ ッ ク し、 [Edit Simulation Sets] をク リ ッ ク します (図 2-5)。

[Add or Create Simulation Sources] ページが表示されます。

2. [Add Files] をク リ ッ ク してファ イルを選択します。

これで、 プロジェク トに関するソースが新し く作成されたシ ミ ュレーシ ョ ン セッ トに追加されます。

3. 必要に応じてほかのファイルも追加します。

選択したシ ミ ュレーシ ョ ン セッ トがアクティブなデザイン run に使用されます。

X-Ref Target - Figure 2-5

図 2-5: [Edit Simulation Sets] オプシ ョ ン

ロジック シミ ュレーシ ョ ン 31UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 32: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

ネッ ト リス トの生成

合成済みまたはインプ リ メン ト済みデザインのシ ミ ュレーシ ョ ンを実行するには、 ネッ ト リ ス ト生成プロセスを実

行する必要があ り ます。 Tcl のネッ ト リ ス ト生成コマンドは合成済みまたはインプリ メン ト済みデザイン データベー

スを使用し、 デザイン全体に対して 1 つのネッ ト リ ス ト を生成します。

Vivado Design Suite では、 IDE または launch_simulation コマンドを使用してシ ミ ュレータを実行する と、 ネッ

ト リ ス トが自動的に生成されます。

ネッ ト リ ス ト生成コマンドでは、 SDF およびデザイン ネッ ト リ ス ト を生成できます。 Vivado Design Suite では、次の

Tcl コマンドが提供されています。

• Tcl コマンド :

° write_verilog: Verilog ネッ ト リ ス ト

° write_vhdl: VHDL ネッ ト リ ス ト

° write_sdf: SDF 生成

ヒン ト : SDF 値はデザイン プロセスの早期 (合成中など) では見積も りにすぎません。 デザイン プロセスが進むと、

データベースによ り多くの情報が含まれるよ うになり、 タイ ミ ング数値の精度も増します。

論理ネッ ト リス トの生成 Vivado Design Suite では、 論理シ ミ ュレーシ ョ ン用に Verilog または VHDL 構造ネッ ト リ ス ト を生成できます。 この

ネッ ト リ ス トは、 シ ミ ュレーシ ョ ンをタイ ミ ング情報なしで実行し、 構造ネッ ト リ ス トのビヘイビアーが予測され

るビヘイビアー モデル (RTL) シ ミ ュレーシ ョ ンと一致するかど うかをチェッ クするのに使用されます。

論理シ ミ ュレーシ ョ ン ネッ ト リ ス トは階層構造で、 モジュールまたはエンティティ レベル (プリ ミ ティブおよびマ

クロ プリ ミ ティブを含む下位階層) に展開可能なネッ ト リ ス トです。

これらのプリ ミ ティブは、 次のライブラ リに含まれます。

• Verilog シ ミ ュレーシ ョ ンの場合は UNISIMS_VER シ ミ ュレーシ ョ ン ライブラ リ

• VHDL シ ミ ュレーシ ョ ンの場合は UNISIM シ ミ ュレーシ ョ ン ライブラ リ

多くの場合、 ビヘイビアー シ ミ ュレーシ ョ ンで使用したのと同じテス トベンチを使用して、 さ らに精度の高いシ

ミ ュレーシ ョ ンを実行できます。

Verilog および VHDL の論理シ ミ ュレーシ ョ ン ネッ ト リ ス ト を生成するには、 次の Tcl コマンドを使用します。

write_verilog -mode funcsim <Verilog_Netlist_Name.v>

write_vhdl -mode funcsim <VHDL_Netlist_Name.vhd>

ロジック シミ ュレーシ ョ ン 32UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 33: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 2 章: シミ ュレーシ ョ ンの準備

タイ ミング ネッ ト リス トの生成

Verilog タイ ミ ング シ ミ ュレーシ ョ ンを使用する と、 Vivado ツールでのワース ト ケースの配置配線遅延の計算後に回

路動作を検証できます。

多くの場合、 論理シ ミ ュレーシ ョ ンで使用したのと同じテス トベンチを使用して、 さ らに精度の高いシ ミ ュレー

シ ョ ンを実行できます。

2 つのシ ミ ュレーシ ョ ンからの結果を比較し、 デザインが 初に指定したとおりに実行されているかど うかを検証し

ます。

タイ ミ ング シ ミ ュレーシ ョ ン ネッ ト リ ス ト を生成する手順は、 次のとおりです。

1. デザインのシ ミ ュレーシ ョ ン ネッ ト リ ス ト ファ イルを生成します。

2. タイ ミ ング遅延すべてをアノテート した SDF 遅延ファイルを生成します。

重要: Vivado IDE では、 Verilog タイ ミ ング シ ミ ュレーシ ョ ンのみがサポート されます。

ヒン ト : VHDL を使用する場合、 合成後およびインプリ メンテーシ ョ ン後の論理シ ミ ュレーシ ョ ンを実行できます。

この場合、 標準のデフォルト フォーマッ ト (SDF) アノテーシ ョ ンは必要なく、 シ ミ ュレーシ ョ ン ネッ ト リ ス トで

UNISIM ライブラ リが使用されます。 ネッ ト リ ス トは write_vhdl Tcl コマンドを使用して作成できます。 使用方法の

詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 7] を参照してください。

タイ ミ ング シ ミ ュレーシ ョ ン ネッ ト リ ス ト を生成するには、 次の Tcl 構文を使用します。

write_verilog -mode timesim -sdf_anno true <Verilog_Netlist_Name>

ロジック シミ ュレーシ ョ ン 33UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 34: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 3 章

サードパーティ シミ ュレータを使用したシミ ュレーシ ョ ン

概要

Vivado® Design Suite では、 サードパーティ ツールを使用したシ ミ ュレーシ ョ ンがサポート されています。 サード

パーティ ツールを使用したシ ミ ュレーシ ョ ンは、 Vivado 統合設計環境 (IDE) 内から直接実行するか、 またはカスタ

ムの外部シ ミ ュレーシ ョ ン環境を使用して実行できます。

サポート されているサードパーティ ツールは、 次のとおりです。

• Mentor Graphics 社 Questa Advanced Simulator/ModelSim: Vivado IDE に統合されています。

• Cadence 社 Incisive Enterprise Simulator (IES): Vivado IDE に統合されています。

• Synopsys 社 VCS および VCS MX: Vivado IDE に統合されています。

• Aldec Active-HDL および Rivera-PRO:

Aldec では、 これらのシ ミ ュレータをサポート しています。

Vivado IDE の使用については、『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893) [参照 3] を参照して

ください。

サードパーティ シ ミ ュレータの詳細は、 [参照 13] を参照してください。

重要: サポート されているバージ ョ ンのサードパーティ シ ミ ュレータのみを使用してください。 サポート されるシ

ミ ュレータおよび OS の詳細は、 『Vivado Design Suite ユーザー ガイ ド : リ リース ノート、 インス トールおよびライセ

ンス』 (UG973) [参照 19] の 「互換性のあるサードパーティ ツール」 の表を参照してください。

ロジック シミ ュレーシ ョ ン 34UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 35: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 3 章: サードパーティ シミ ュレータを使用したシミ ュレーシ ョ ン

Vivado IDE でのサードパーティ シミ ュレータを使用したシミ ュレーシ ョ ンの実行

重要: サードパーティ シ ミ ュレータを実行する前に、 コンパイルされたライブラ リのディ レク ト リ

(compile_simlib が実行されたパス、 または -directory オプシ ョ ンで指定されたディレク ト リ ) を確認して く

ださい。

Vivado IDE では、 シ ミ ュレーシ ョ ン設定に基づいてデザインをコンパイル、 エラボレート、 シ ミ ュレーシ ョ ンでき

ます。 シ ミ ュレータは別ウ ィンド ウで起動します。

デザインの合成前にシ ミ ュレーシ ョ ンを実行する と、 ビヘイビアー シ ミ ュレーシ ョ ンが実行されます。 各デザイン手

順 (合成およびインプリ メンテーシ ョ ン) が終了したら、論理またはタイ ミ ング シ ミ ュレーシ ョ ンを実行するオプシ ョ

ンが選択できるよ うになり ます。 シ ミ ュレーシ ョ ン run は Flow Navigator か Tcl コマンドへの入力で開始できます。

Flow Navigator で [Run Simulation] をク リ ッ ク し、 次の図に示すリ ス トから実行するシ ミ ュレーシ ョ ンをク リ ッ ク し

ます。

該当する Tcl コマンドは launch_simulation です。

ヒン ト : このコマンドには、 DO ファ イルまたは SH ファ イルを出力するための -scripts_only オプシ ョ ンがあ り

ます。 どちらのファイルが出力されるかは、 使用しているシ ミ ュレータによって決ま り ます。 IDE 環境外でシ ミ ュ

レーシ ョ ンを実行するには、 DO または SH ファ イルを使用してください。

注記: Vivado 外で VCS シ ミ ュレータを実行する場合は、 -full64 オプシ ョ ンを使用してください。 そ う しないと、

デザインにザイ リ ンクス IP が含まれている場合にシ ミ ュレータが実行されません。

X-Ref Target - Figure 3-1

図 3-1: シミ ュレーシ ョ ンの種類

ロジック シミ ュレーシ ョ ン 35UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 36: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 3 章: サードパーティ シミ ュレータを使用したシミ ュレーシ ョ ン

サードパーティ ツールを使用したタイ ミング シミ ュレーションの実行

ヒント : 合成後のタイ ミ ング シ ミ ュレーシ ョ ンは、 合成されたネッ ト リ ス トから見積もられたタイ ミ ング遅延を使用

します。 インプ リ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンでは実際のタイ ミ ング遅延が使用されます。

合成後およびインプ リ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンを実行する際、 シ ミ ュレータには次のもの

が含まれます。

• SIMPRIM ライブラ リ コンポーネン ト を含むゲート レベルのネッ ト リ ス ト

• SECUREIP

• 標準遅延フォーマッ ト (SDF) ファ イル

初にデザイン全体の機能を定義します。 デザインがインプリ メン ト される と、 正確なタイ ミ ング情報が利用でき

るよ うになり ます。

ネッ ト リ ス トおよび SDF を作成するため、 Vivado Design Suite は次の処理を実行します。

• -mode timesim オプシ ョ ンを使用してネッ ト リ ス ト ライター write_verilog、 および write_sdf (SDF ア

ノテーター ) を呼び出します。

• 生成されたネッ ト リ ス ト をターゲッ ト シ ミ ュレータに送り ます。

これらのオプシ ョ ンを変更するには、 26 ページの 「シ ミ ュレーシ ョ ン設定」 で説明されているよ うに、 Flow

Navigator の [Simulation Settings] をク リ ッ ク します。

重要: 合成後と インプリ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンは、 Verilog でのみサポート されます。

VHDL のタイ ミ ング シ ミ ュレーシ ョ ンはサポート されません。 VHDL を使用する場合、 合成後およびインプリ メン

テーシ ョ ン後の論理シ ミ ュレーシ ョ ンを実行できます。 この場合、 SDF アノテーシ ョ ンは必要なく、 シ ミ ュレー

シ ョ ン ネッ ト リ ス トで UNISIM ライブラ リが使用されます。 ネッ ト リ ス トは write_vhdl Tcl コマンドを使用して

作成できます。 使用方法の詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 7] を参照

してください。

合成後のタイ ミング シミ ュレーシ ョ ン

合成を実行する と、 [Run Simulation] → [Post-Synthesis Timing Simulation] を実行できるよ うにな り ます。

合成後のタイ ミ ング シ ミ ュレーシ ョ ンを選択する と、 タイ ミ ング ネッ ト リ ス ト と SDF ファ イルが生成されます。

ネッ ト リ ス ト ファイルには $sdf_annotate コマンドが含まれるので、生成された SDF ファ イルが自動的に指定さ

れます。

インプリ メンテーシ ョ ン後のタイ ミング シミ ュレーシ ョ ン

インプ リ メンテーシ ョ ンを実行する と、 [Run Simulation] → [Post-Implementation Timing Simulation] を実行できるよ う

になり ます。

インプ リ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンを選択する と、 タイ ミ ング ネッ ト リ ス ト と SDF ファ イル

が生成されます。 ネッ ト リ ス ト ファ イルには $sdf_annotate コマンドが含まれるので、 生成された SDF ファ イル

が自動的に指定されます。

ロジック シミ ュレーシ ョ ン 36UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 37: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 3 章: サードパーティ シミ ュレータを使用したシミ ュレーシ ョ ン

タイ ミング シミ ュレーシ ョ ン用の SDF ファイルのアノテート

シ ミ ュレーシ ョ ン設定を指定したと きに、 SDF ファ イルを作成するかど うかと、 プロセス コーナーをファース ト ま

たはスローに設定しました。

ヒン ト : SDF ファ イル オプシ ョ ンの設定を確認するには、 Vivado IDE の Flow Navigator で [Simulation Settings] をク

リ ッ ク し、 [Project Settings] ダイアログ ボッ クスの [Simulation] ページで [Netlist] タブをク リ ッ ク します。

SDF ファ イルには、 指定したプロセス コーナーに基づいて異なる min および max 数値が含まれます。

推奨: 2 つの異なるシ ミ ュレーシ ョ ンを実行して、 セッ ト アップおよびホールド違反をチェッ クをして ください。

セッ ト アップ チェッ クを実行するには、 [-process_corner] を [slow] に設定して SDF を作成し、SDF ファ イルの max 列

を使用します。

ホールド チェッ クを実行するには、 [-process_corner] を [fast] に設定して SDF ファ イルを作成し、 SDF ファ イルの

min 列を使用します。 使用する SDF 遅延フ ィールドの指定方法は、 使用するシ ミ ュレーシ ョ ン ツールによって異な

り ます。 このオプシ ョ ンの設定方法は、 ご使用のシ ミ ュレーシ ョ ン ツールの資料を参照して ください。

4 つのタイ ミ ング シ ミ ュレーシ ョ ンすべてを実行するには、 次のよ うに指定します。

° スロー コーナー : SDFMIN および SDFMAX

° ファース ト コーナー : SDFMIN および SDFMAX

スタンドアロンのタイ ミング シミ ュレーシ ョ ンの実行

Vivado IDE からタイ ミ ング シ ミ ュレーシ ョ ンを実行する場合は、 タイ ミ ング シ ミ ュレーシ ョ ン関連のオプシ ョ ンが

シ ミ ュレータに追加されますが、 スタンドアロン タイ ミ ング シ ミ ュレーシ ョ ンを実行する場合は、 エラボレーシ ョ

ン中に次のオプシ ョ ンをシ ミ ュレータに渡す必要があ り ます。

IUS の場合:

-PULSE_R/0 -PULSE_E/0

エラボレーシ ョ ン中 (ncelab を使用)

VCS の場合:

+pulse_e/<number> and +pulse_r/<number> +transport_int_delays

エラボレーシ ョ ン中 (VCS を使用)

ModelSim/Questa Advanced Simulator:

+transport_int_delays +pulse_int_e/0 +pulse_int_r/0

エラボレーシ ョ ン中 (vsim を使用)

重要: Vivado シ ミ ュレータ モデルではインターコネク ト遅延が使用されるので、 タイ ミ ング シ ミ ュレーシ ョ ンが正

し く実行されるよ うにするには、 -transport_int_delays -pulse_r 0 -pulse_int_r 0 コマンド オプ

シ ョ ンを追加する必要があ り ます。 これらのコマンドについては、 117 ページの表 7-2 で説明しています。

ロジック シミ ュレーシ ョ ン 37UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 38: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 3 章: サードパーティ シミ ュレータを使用したシミ ュレーシ ョ ン

消費電力解析用の SAIF の出力

SAIF (Switching Activity Interchange Format) は、 シ ミ ュレータ ツールで生成されたスイ ッチング アクティビティを抽

出して保存する ASCII 形式のレポートです。 このスイ ッチング アクティビティは、 ザイ リ ンクスの消費電力解析お

よび 適化ツールにバッ クアノテート して消費電力の測定および見積りに使用できます。

Questa Advanced Simulator/ModelSim での SAIF の出力

Questa Advanced Simulator/ModelSim で SAIF ファ イルを出力するには、 次の手順に従います。

1. 次のよ うに入力し、 出力する範囲または信号を指定します。

power add <hdl_objects>

2. シ ミ ュレーシ ョ ンを指定時間または run -all を使用して実行します。

3. 次のよ うに入力し、 消費電力レポート を出力します。

power report -all filename.saif

各コマンドの使用方法および詳細は、 ModelSim の資料 [参照 13] を参照してください。

DO ファイルの例

power add tb/fpga/*run 500uspower report -all -bsaif routed.saifquit

IES での SAIF の出力

IES で SAIF ファ イルを出力するには、 次の手順に従います。

1. 次のよ うに入力し、 出力する範囲と出力 SAIF ファ イル名を指定します。

dumpsaif -scope hdl_objects -output filename.saif

2. シ ミ ュレーシ ョ ンを実行します。

3. 次のよ うに入力して SAIF の出力を終了します。

dumpsaif -end

IES コマンドの使用方法および詳細は、 Cadence 社 IES の資料 [参照 13] を参照してください。

VCS での SAIF の出力

VCS で SAIF ファ イルを出力するには、 次の手順に従います。

1. 次のよ うに入力し、 出力する範囲および信号を指定します。

power <hdl_objects>

2. SAIF の出力をイネーブルにします。 シ ミ ュレータ ワークスペースでコマンド ラインを使用できます。

power -enable

3. シ ミ ュレーシ ョ ンを指定した時間実行します。

ロジック シミ ュレーシ ョ ン 38UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 39: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 3 章: サードパーティ シミ ュレータを使用したシミ ュレーシ ョ ン

4. 次のよ うに入力し、 消費電力の出力をディ スエーブルにし、 SAIF をレポート します。

power -disablepower -report filename.saif

各コマンドの使用方法および詳細は、 Synopsys 社 VCS の資料を参照してください。

SAIF (Switching Activity Interchange Format) の詳細は、 「Vivado シ ミ ュレータを使用した消費電力解析」 を参照して く

ださい。

消費電力解析用の VCD の出力

シ ミ ュレーシ ョ ン出力を記録するには、 VCD (Value Change Dump) ファ イルを使用できます。 Tcl コマンドは、 出力

される値に関連する Verilog システム タスクに基づきます。

Questa Advanced Simulator/ModelSim での VCD の出力 Questa Advanced Simulator/ModelSim で VCD ファ イルを出力するには、 次の手順に従います。

1. VCD ファ イルを開きます。

vcd file my_vcdfile.vcd

2. 出力する範囲または信号を指定します。

vcd add <hdl_objects>

3. シ ミ ュレーシ ョ ンを指定時間または run -all を使用して実行します。

各コマンドの使用方法および詳細は、 ModelSim の資料 [参照 13] を参照してください。

DO ファ イルの例:

vcd file my_vcdfile.vcdvcd add -r tb/fpga/*run 500usquit

IES での VCD の出力 1. 次のコマンドを実行する と、 vcddb という名前の VCD データベースが開きます。 ファ イル名は

verilog.dump です。 -timescale オプシ ョ ンを使用する と、 VCD ファ イルの $timescale 値が 1ns に設定

されます。 VCD ファ イルの値が 1ns に変わり ます。

database -open -vcd vcddb -into verilog.dump -default -timescale ns

2. 次の probe コマンドで、 スコープの top.counter のすべてのポートにプローブを作成します。 データはデフォル

トの VCD データベースに送信されます。

probe -create -vcd top.counter -ports

3. シ ミ ュレーシ ョ ンを実行します。

ロジック シミ ュレーシ ョ ン 39UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 40: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 3 章: サードパーティ シミ ュレータを使用したシミ ュレーシ ョ ン

VCS での VCD の出力 VCS で VCD ファ イルを生成するには、 dumpvar コマンドを使用します。 ファ イル名およびインスタンス名を指定

します (デフォルトでは階層全体になり ます)。

vcs +vcs+dumpvars+test.vcd

IP のシミ ュレーシ ョ ン

次の例では、 accum_0.xci がザイ リ ンクス IP カタログから生成された IP です。 次のコマンドを使用して、 この IP

を VCS でシ ミ ュレーシ ョ ンします。

set_property target_simulator VCS [current_project]set_property compxlib.compiled_library_dir <compiled_library_location>launch_simulation -noclean_dir -of_objects [get_files accum_0.xci]

AXI バス ファンクシ ョ ン モデルを使用したデザインのシミ ュレーシ ョ ン

AXI バス ファンクシ ョ ン モデル (BFM) は、 使用前にライセンス チェッ クを実行して AXI BFM ライセンスがあるこ

とを確認します。 AXI BFM がデザインにある場合、 ライセンス パスを参照するため、 次の追加ステップが実行され

ます。

1. 次の構文を使用して LD_LIBRARY_PATH 環境変数を設定します。

setenv LD_LIBRARY_PATH $XILINX_VIVADO/lib/lnx64.o/:$LD_LIBRARY_PATH

2. VCS オプシ ョ ン ファ イルに次のオプシ ョ ンを追加します。

"-load $XILINX_VIVADO/lib/lnx64.o/libxil_vcs.so:xilinx_register_systf"

ロジック シミ ュレーシ ョ ン 40UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 41: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 3 章: サードパーティ シミ ュレータを使用したシミ ュレーシ ョ ン

統合されたシミ ュレーシ ョ ンの実行中のカスタム DO ファイルの使用

Vivado IDE では、 シ ミ ュレーシ ョ ンを実行するたびにシ ミ ュレーシ ョ ン ディ レク ト リが削除され、 新しいディ レク

ト リが作成されます。 カスタムの DO ファ イルまたは UDO ファ イルを使用している場合は、 それをシ ミ ュレーシ ョ

ン ディレク ト リ以外の場所に移動して、 シ ミ ュレータでそのファイルを指定して ください。 カスタムの DO ファ イ

ルまたは UDO ファ イルのディレク ト リ を指定するには、 次のコマンドを使用します。

Questa Advanced Simulator/ModelSimset_property MODELSIM.CUSTOM_DO <Customized do file name> [get_filesets sim_1]

set_property MODELSIM.CUSTOM_UDO <Customized udo file name> [get_filesets sim_1]

IESset_property IES.CUSTOM_DO <Customized do file name> [get_filesets sim_1]

set_property IES.CUSTOM_UDO <Customized udo file name> [get_filesets sim_1]

VCSset_property VCS.CUSTOM_DO <Customized do file name> [get_filesets sim_1]

set_property VCS.CUSTOM_UDO <Customized udo file name> [get_filesets sim_1]

シミ ュレータ別の run ディ レク ト リの生成

Vivado IDE では、 シ ミ ュレータを変更した場合でも、 実行ファイルがデフォルトで同じディレク ト リに生成されます。

シ ミ ュレータ別にディ レク ト リ を作成するこ と もできます。 これには、 次の Tcl コマンドを使用してディレク ト リ を

作成します。

set_param project.addSimulatorDirForUnifiedSim 1

このコマンドを Vivado IDE を起動した直後に設定します。 init.tcl ファ イルにこのコマンドを含めておく と

よいでし ょ う。

ロジック シミ ュレーシ ョ ン 41UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 42: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 3 章: サードパーティ シミ ュレータを使用したシミ ュレーシ ョ ン

ModelSim および Questa でのシミ ュレーシ ョ ン ステップ制御コンストラク ト

次の表に、 DO ファ イルのフォーマッ トに基づいて実行されるステップ実行の制御に使用されるコンス ト ラ ク ト を示

します。

ネイティブ DO ファ イル: コンパイルおよびエラボレート シェル スク リプ トで vsim -c

-do<tb>_compile/elaborate.do が呼び出されます。 シ ミ ュレーシ ョ ン スク リプ トでは、 vsim -c

-do<tb>_simulate.do が呼び出されます。

デフォルト形式は次のとおりです。

(project.writeNativeScriptForUnifiedSimulation is 1)

標準 DO ファ イル: コンパイルおよびエラボレート シェル スク リプ トで vsim -c

-do<tb>_compile/elaborate.do が呼び出されます。 シ ミ ュレーシ ョ ン シェル スク リプ トでは、 vsim -c

-do<tb>_simulate.do が呼び出されます。

デフォルト形式は次のとおりです。

(project.writeNativeScriptForUnifiedSimulation is 0)

バッチ モードでのサードパーティ シミ ュレータの実行

Vivado Design Suite では、 サードパーティ検証用にバッチまたはスク リプ ト モードのシ ミ ュレーシ ョ ンがサポート されます。 すべてのデザイン ファ イルを準備し、 ターゲッ ト シ ミ ュレータをサポートするスク リプ ト を生成したら、スク リプ ト を確認して、 それらを検証環境に組み込むこ とができます。 カスタム API を構築するよ り も、export_simulation スク リプ ト をシ ミ ュレーシ ョ ン フローの開始点と して使用して、 スク リプ ト を生成するこ とをお勧めします。

スク リプ ト を実行する前に環境がそのシ ミ ュレータ用に正し く設定されているかど うかを確認してください。 詳細は、 26 ページの 「シ ミ ュレーシ ョ ン設定」 を参照してください。 バッチ モードまたはスク リプ ト モードの実行方法の詳細は、 そのシ ミ ュレータのユーザー ガイ ドを参照してください。

表 3-1: シミ ュレーシ ョ ン ステップ制御コンスト ラク トのパラメーター

パラメーター 説明 デフォルト

project.writeNativeScriptForUnifiedSimulation シ ミ ュレータ コマンドのみで (Tcl またはシェル コンス

ト ラ ク ト なしで) 純粋な DO ファ イルを書き出します。

1 (true)

simulator.quitOnSimulationComplete ModelSim/Questa Advanced Simulator のシ ミ ュレーシ ョ

ンで、 シ ミ ュレータ完了時にシ ミ ュレータを終了しま

す。 終了をディ スエーブルにするには、 このパラ メー

ターを false に設定します。

1 (true)

simulator.modelsimNoQuitOnError ModelSim/Questa Advanced Simulator のシ ミ ュレーシ ョ

ンでは、 エラーまたはブレークが発生したと きにデ

フォルトではシ ミ ュレータは終了しません。 エラーま

たはブレークが発生したと きにシ ミ ュレータを終了す

るには、 このパラ メーターを false に設定します。

1 (true)

project.enable2StepFlowForModelSim ModelSim-PE/DE/SE エディシ ョ ンのユニファイ ド シ

ミ ュレーシ ョ ンで、 2 ステップのシ ミ ュレーシ ョ ンを

実行します。

1 (true)

ロジック シミ ュレーシ ョ ン 42UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 43: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章

Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

概要

Vivado シ ミ ュレータは、 HDL イベン ト ド リブン シ ミ ュレータで、 VHDL、 Verilog、 SystemVerilog (SV)、

VHDL/Verilog または VHDL/SV 混合言語のデザインの論理およびタイ ミ ング シ ミ ュレーシ ョ ンをサポート します。

Vivado シ ミ ュレータでは、 次の機能がサポート されます。

• ソース コード デバッグ (ステップ、 ブレークポイン ト 、 現在値の表示)

• タイ ミ ング シ ミ ュレーシ ョ ン用の SDF アノテーシ ョ ン

• VCD 出力

• SAIF 出力 (電力解析および 適化用)

• HardIP ブロ ッ ク (シ リ アル ト ランシーバーおよび PCIe® など) のネイティブ サポート

• マルチスレッ ド コンパイル

• 混合言語 (VHDL、 Verilog,、 または SystemVerilog デザイン コンス ト ラ ク ト )

• 1 ク リ ッ クでシ ミ ュレーシ ョ ンを再コンパイルおよび再起動

• 1 ク リ ッ クでコンパイルおよびシ ミ ュレーシ ョ ン

• ザイ リ ンクス シ ミ ュレーシ ョ ン ライブラ リのビルト イン サポート

• リ アルタイムの波形アップデート

Vivado シ ミ ュレーシ ョ ンを実行する詳細な手順は、 『Vivado Design Suite チュート リ アル: ロジッ ク シ ミ ュレーシ ョ

ン』 (UG937) [参照 10] を参照してください。

ロジック シミ ュレーシ ョ ン 43UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 44: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

Vivado シミ ュレータの実行

重要: シ ミ ュレーシ ョ ンを実行する前に、 デザインに適切なプロジェク ト設定を指定しているこ とを確認して くださ

い。 サポート されているサードパーティ シ ミ ュレータを使用している場合は、 第 3 章 「サードパーティ シ ミ ュレー

タを使用したシ ミ ュレーシ ョ ン」 を参照してください。

Flow Navigator から [Run Simulation] をク リ ッ クし、 次の図に示す Vivado シミ ュレータのワークスペースを起動します。

メイン ツールバー

Vivado IDE でよ く使用するコマンドを 1 ク リ ッ クで実行できます。 オプシ ョ ンの上にカーソルを置く と、 詳細を示

すツール ヒ ン トが表示されます。

X-Ref Target - Figure 4-1

図 4-1: Vivado シミ ュレータのワークスペース

ロジック シミ ュレーシ ョ ン 44UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 45: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

[Run] メニュー

シ ミ ュレーシ ョ ンを実行する と、 メ イン メニューに [Run] メニューが追加されます。

図 4-2 にシ ミ ュレーシ ョ ンの [Run] メニューを示します。

Vivado シ ミ ュレータの [Run] メニュー コマンドは次のとおりです。

• [Restart]: 既存のシ ミ ュレーシ ョ ンを時間 0 から再開します。

Tcl コマンド : restart

• [Run All]: 開いているシ ミ ュレーシ ョ ンを 後まで実行します。

Tcl コマンド : run all

• [Run For]: 実行するシ ミ ュレーシ ョ ン時間を指定します。

Tcl コマンド : run <time>

ヒン ト : 「run 100 ns」 のよ うに run コマンドで時間の単位を指定できますが、 単位は省略するこ と もできます。 時

間の単位を省略する場合、 TIME_UNIT Tcl プロパティで指定された単位が使用されます。 TIME_UNIT プロパティを

確認するには、Tcl コマンド get_property time_unit [current_sim] を使用してください。TIME_UNIT プロ

パティを変更するには、Tcl コマンド set_property time_unit <unit> [current_sim] を使用してください。

<unit> には、 fs、 ps、 us、 ms、 s のいずれかを指定します。

• [Step]: 次の HDL ソース行までシ ミ ュレーシ ョ ンを実行します。

• [Break]: 実行中のシ ミ ュレーシ ョ ンを停止します。

• [Delete All Breakpoints]:ブレークポイン ト をすべて削除します。

• [Relaunch Simulation]: シ ミ ュレーシ ョ ン ファ イルを再コンパイルしてシ ミ ュレーシ ョ ンを再実行します。 詳細

は、 「デザイン変更後のシ ミ ュレーシ ョ ンの再実行」 を参照してください。

X-Ref Target - Figure 4-2

図 4-2: シミ ュレーシ ョ ンの [Run] メニュー コマンド

ロジック シミ ュレーシ ョ ン 45UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 46: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

[Simulation] ツールバー

Vivado シ ミ ュレータを実行する と、 シ ミ ュレーシ ョ ン用のツールバー (次の図を参照) が、 メ インのツールバーの右

側に開きます。

これらのボタンは 45 ページの図 4-2 のコマンド と同じで ([Delete All Breakpoints] オプシ ョ ンはなし )、 使いやすくす

るために提供されています。

[Simulation] ツールバーのボタンの説明

ツールバーのボタンの上にカーソルを置く と、 その説明がツール ヒ ン ト と して表示されます。

• [Restart]: シ ミ ュレーシ ョ ン時間を 0 にリセッ ト します。

• [Run all]: すべてのイベン トが完了するまで、 またはシ ミ ュレーシ ョ ンを停止する HDL 文に到達するまで、 シ

ミ ュレーシ ョ ンを実行します。

• [Run For]: シ ミ ュレーシ ョ ンを指定した時間実行します。

• [Step]: 次の HDL 文までシ ミ ュレーシ ョ ンを実行します。

• [Break]: 現在のシ ミ ュレーシ ョ ンを停止します。

• [Relaunch]: コード変更した後などに、 シ ミ ュレーシ ョ ン ソースを再コンパイルしてシ ミ ュレーシ ョ ンを再実行

します。 詳細は、 「デザイン変更後のシ ミ ュレーシ ョ ンの再実行」 を参照してください。

[Sources] ウィンドウ

[Sources] ウ ィンド ウには、 シ ミ ュレーシ ョ ン ソースが階層ツ リーで表示され、 [Hierarchy]、 [IP Sources]、 [Libraries]、

[Compile Order] などのビューがあ り ます (図 4-4)。

[Sources] ウ ィンド ウのボタンの上にカーソルを置く と、 その説明がツール ヒ ン ト と して表示されます。 ボタンを使

用する と、 ファ イルの検証、 展開/非展開、 追加、 開く、 フ ィルターおよびスクロールなどを実行できます。

ソース ファ イルはオブジェク ト を右ク リ ッ ク して [Go to Source Code] をク リ ッ ク しても開く こ とができます。

X-Ref Target - Figure 4-3

図 4-3: [Simulation] ツールバー

X-Ref Target - Figure 4-4

図 4-4: [Sources] ウィンドウ

ロジック シミ ュレーシ ョ ン 46UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 47: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

[Scopes] ウィンドウ

スコープとは HDL デザインを階層に分けたものです。 デザイン ユニッ ト をインスタンシエートするたび、 またはプ

ロセス、 ブロ ッ ク、 パッケージ、 サブプログラムを定義するたびに、 スコープが作成されます。

次の図に示すよ うに、 [Scopes] ウ ィンド ウにはデザイン階層が表示されます。 この階層でスコープを選択する と、

[Objects] ウ ィンド ウにそのスコープの HDL オブジェク トがすべて表示されます。 [Objects] ウ ィンド ウで HDL オブ

ジェク ト を選択し、 それを波形ビューアーに追加できます。

スコープのフ ィルター

• フ ィルター ボタンをク リ ッ クする と、 そのスコープの表示/非表示を切り替えるこ とができます。

ヒン ト : フ ィルター ボタンを使用してスコープを非表示にする と、 スコープの種類に関係なく、 そのスコープ内のす

べてのスコープが非表示になり ます。 たとえば、 上の図で、 すべての Verilog モジュール スコープを非表示にするた

め Verilog モジュールのボタンをク リ ッ クする と、 bft_tb スコープだけでなく、 VHDL エンティティ スコープであ

る uut も非表示になり ます。

• 特定の文字列を含むスコープに表示を限定するには、 [Search] ボタン をク リ ッ ク し、 テキス ト ボッ クスに

文字列を入力します。

X-Ref Target - Figure 4-5

図 4-5: [Scopes] ウィンドウ

ロジック シミ ュレーシ ョ ン 47UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 48: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

[Objects] ウ ィンド ウに表示されるオブジェク トは、 選択しているスコープによって異なり ます。 スコープを変更す

る と、 異なるオブジェク トが表示されます。

スコープを右ク リ ッ クする と、 次のメニュー オプシ ョ ンを含むポップアップ メニューが表示されます (図 4-6)。

• [Add to Wave Window]: 選択したスコープの表示可能な HDL オブジェク トすべてを波形設定に追加します。

ヒン ト : ビッ ト幅の大きな HDL オブジェク ト を波形ビューアーに追加する と、 表示に時間がかかり ます。 [Add to

Wave Window] コマンドを実行する前に、 波形設定で表示制限を設定する と、 そのよ うなオブジェク トが表示されな

いよ うにできます。 それには、 set_property DISPLAY_LIMIT <maximum bit width>

[current_wave_config] という Tcl コマンドを使用します。

[Add to Wave Window] コマンドを使用する と、 [Objects] ウ ィンド ウに表示されている HDL オブジェク ト とは多

少異なる HDL オブジェク トが追加されるこ とがあ り ます。 [Scopes] ウ ィンド ウでスコープを選択した場合、 選

択されたスコープで直接定義されているオブジェク トだけでなく、 そのスコープに含まれるスコープの HDL オ

ブジェク ト も表示されるこ とがあ り ます。 [Add to Wave Window] コマンドの場合は、 選択したスコープだけのオ

ブジェク ト を追加します。

または、 オブジェク ト を [Objects] ウ ィンド ウから波形ウ ィンド ウの [Name] 列にド ラ ッグ アンド ド ロ ップする

方法もあ り ます。

重要: 波形ウ ィンド ウには、 オブジェク トが追加されたシ ミ ュレーシ ョ ン時間から、 そのオブジェク トの値の変化が

表示されます。

ヒン ト : オブジェク ト挿入以前のオブジェク ト値を表示するには、 シ ミ ュレーシ ョ ンを実行し直す必要があ り ます。

値がないためにシ ミ ュレーシ ョ ンを再実行するのを避けるには、 シ ミ ュレーシ ョ ン run を開始する と きに、

log_wave -r / Tcl コマンドを実行してデザインの表示可能な HDL オブジェク トすべての値を取り込みます。詳細

は、 101 ページの 「Tcl コマンド log_wave の使用」 を参照してください。

波形設定の作成や HDL オブジェク トの追加などの波形設定への変更は、 WCFG ファ イルを保存しないと失われ

ます。

• [Go To Source Code]: ソース コードの選択したスコープ定義の部分を開きます。

• [Go To Instantiation Source Code]: Verilog モジュールおよび VHDL エンティティ インスタンスに対し、 インスタ

ンシエーシ ョ ン時点のソース コードを開きます。

• [Log to Wave Database]: 次のいずれかをログに記録します。

° 現在のスコープのオブジェク ト

° 現在のスコープおよびその下にあるすべてのスコープのオブジェク ト

ヒン ト : デフォルトでは、 大型の HDL オブジェク トはログに記録されません。 ログに記録されるオブジェク トのサ

イズ制限を変更するには、 set_property trace_limit <size> [current_sim] Tcl コマンドを使用して くだ

さい。 <size> には、 HDL オブジェク トのスカラー エレ メン トの数を指定します。

ロジック シミ ュレーシ ョ ン 48UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 49: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

ソース コード テキス ト エディ ターでコードの識別子にカーソルを置く と値が表示されます (図 4-7)。

重要: この機能を使用するには、 [Scopes] ウ ィンド ウで選択したソース コードにスコープが関連付けられているこ と

を確認してください。

ヒン ト : 上の図では、 上位モジュールがインスタンシエート されていないため、 上位モジュールを右ク リ ッ ク し

ても、 [Go to Instantiation Source Code] は淡色表示になっています。

ヒン ト : 現在のスコープとそれ以下のスコープのオブジェク ト をログに記録するには、 log_wave を使用します。 シ

ミ ュレーシ ョ ン後は、 波形に任意のオブジェク ト を追加して、 時間 0 から現在のシ ミ ュレーシ ョ ン時間までの値を

確認できます。

X-Ref Target - Figure 4-6

図 4-6: [Scopes] ウィンドウの右クリ ックで表示されるコマンド

ロジック シミ ュレーシ ョ ン 49UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 51: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

その他のスコープおよびソース オプシ ョ ン

[Scopes] ウ ィンド ウおよび [Sources] ウ ィンド ウで [Show Search] ボタン をク リ ッ クする と、検索フ ィールが表示

されます。

[Scopes] および [Objects] ウ ィンド ウを使用する代わりに、Tcl コンソールに次を入力して HDL デザインを表示するこ

と もできます。

get_scopes current_scope report_scopesreport_values

ヒン ト : ソース ファ イルを編集するには、 図 4-8 に示すよ うに、 [Scopes] ウ ィンド ウまたは [Objects] ウ ィンド ウでオ

ブジェク ト を右ク リ ッ ク し、 [Go to Source Code] をク リ ッ ク してファイルを開きます。

ヒン ト : ソース コードを編集してファ イルを保存したら、 [Relaunch] ボタンをク リ ッ クする と、

シ ミ ュレーシ ョ ンを閉じて再び開かずに、 シ ミ ュレーシ ョ ンを再コンパイルおよび再実行でき

ます。

X-Ref Target - Figure 4-8

図 4-8: [Scopes] ウィンドウのコンテキスト メニュー

ロジック シミ ュレーシ ョ ン 51UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 52: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

[Objects] ウィンドウ

[Objects] ウ ィンド ウには、 [Scopes] ウ ィンド ウで選択したスコープに関連付けられている HDL シ ミ ュレーシ ョ ン オ

ブジェク トが表示されます (図 4-9)。

HDL オブジェク トの横にあるアイコンは、 各オブジェク トのタイプまたはポート モードを示します。 このウ ィンド

ウにはシ ミ ュレーシ ョ ン オブジェク トの名前、 値、 データ タイプなどがリ ス ト されます。

次のコマンドを Tcl コンソールに入力する と、 オブジェク トの現在の値を取得できます。

get_value <hdl_object>

ヒン ト : ベクターの表示桁数を制限するには、 set_property array_display_limit <bits>

[current_sim] コマンドを使用してください。 <bits> には、 表示するビッ ト数を指定します。

表 4-1 に、 [Objects] ウ ィンド ウのツールバー ボタンを簡単に説明します。 これらのボタンをク リ ッ クする と、

[Objects] ウ ィンド ウで選択されたオブジェク トが表示されます。 [Objects] ウ ィンド ウのリ ス ト をさ らに絞り込むた

めに、 これらのボタンを使用できます。

X-Ref Target - Figure 4-9

図 4-9: [Objects] ウィンドウ

表 4-1: [Objects] ウィンドウのボタン

ボタン 説明

検索するオブジェク ト名を入力する検索フ ィールドを開きます。

入力信号

出力信号

入力/出力信号

内部信号

定数信号

可変信号

ロジック シミ ュレーシ ョ ン 52UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 53: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

ヒン ト : ボタンの上にカーソルを置く と、 詳細が表示されます。

特定の HDL オブジェク ト タイプを非表示にするには、 該当するオブジェク トのフ ィルター ボタンをク リ ッ ク しま

す。 ボタンの上にカーソルを置く と、 オブジェク ト タイプを示すツール ヒ ン トが表示されます。

[Objects] ウィンドウのコンテキスト メニュー

[Objects] ウ ィンド ウでオブジェク ト を右ク リ ッ クする と、 コンテキス ト メニューが表示されます (図 4-10)。 次に、

これらのコンテキス ト メニューを説明します。

• [Add to Wave Window]: 選択したオブジェク ト を波形設定に追加します。 または、 オブジェク ト を [Objects] ウ ィ

ンド ウから波形ウ ィンド ウの [Name] 列にド ラ ッグ アンド ド ロ ップします。

• [Log to Wave Database]: 選択したオブジェク トのイベン ト を、 後で波形ウ ィンド ウに表示するために波形データ

ベース (WDB) に記録します。

ヒン ト : デフォルトでは、 大型の HDL オブジェク トはログに記録されません。 ログに記録されるオブジェク トのサ

イズ制限を変更するには、 set_property trace_limit <size> [current_sim] Tcl コマンドを使用して くだ

さい。 <size> には、 HDL オブジェク トのスカラー エレ メン トの数を指定します。

• [Show in Wave Window]: 波形ウ ィンド ウで選択されているオブジェク ト をハイライ ト します。

• [Default Radix]: [Objects] ウ ィンド ウおよびテキス ト エディ ターのすべてのオブジェク トのデフォルト基数を設

定します。 デフォルト基数は、 [Hexadecimal] (16 進数) です。 このオプシ ョ ンはコンテキス ト メニューから変更

できます。

Tcl コマンド :

set_property radix <new radix> [current_sim]

<new radix> には次のいずれかを指定します。

• bin

• unsigned (符号なし 10 進数値)

• hex

• dec (符号付き 10 進数値)

X-Ref Target - Figure 4-10

図 4-10: [Objects] ウィンドウのコンテキスト メニュー

ロジック シミ ュレーシ ョ ン 53UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 54: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

• ascii

• oct

注記: 各信号の基数を変更する必要がある場合は、 コンテキス ト メニューから基数オプシ ョ ンを使用して ください。

• [Radix]: [Objects] ウ ィンド ウおよびソース コード ウ ィンド ウで選択したオブジェク トの値を表示する際に使用

する数値フォーマッ ト を選択します。

それぞれのオブジェク トの基数を次のよ うに変更できます。

a. [Objects] ウ ィンド ウでオブジェク ト を右ク リ ッ ク します。

b. コンテキス ト メニューから [Radix] をク リ ッ ク して、 フォーマッ ト を選択します。

- [Default]

- [Binary] (2 進数)

- [Hexadecimal] (16 進数)

- [Octal] (8 進数)

- [ASCII]

- [Unsigned Decimal] (符号なし 10 進数)

- [Signed Decimal] (符号付き 10 進数)

ヒン ト : [Objects] ウ ィンド ウで基数を変更しても、 波形ウ ィンド ウにはその変更は反映されません。

• [Show as Enumeration]: SystemVerilog の列挙信号または変数の値を列挙ラベルを使用して表示します。

注記: このメニュー項目は、 SystemVerilog の列挙型の場合にのみ選択可能になり ます。 オフにする と、 列挙 オブ

ジェク トの値すべてがそのオブジェク トの基数セッ トに従って数字で表示されます。 オンにする と、 エニュ メ

レーシ ョ ン宣言で定義したラベルの値がそのラベル テキス トで表示され、 その他の値は数字で表示されます。

• [Report Drivers]: 選択したオブジェク トに値を割り当てる HDL プロセスのレポート を [Tcl Console] ウ ィンド ウに

表示します。

• [Go To Source Code]: ソース コードの選択したオブジェク トの定義を開きます。

• [Force Constant]: 選択したオブジェク ト を定数に割り当てます。 詳細は、 第 6 章の 「[Force Constant] コマンド」

を参照してください。

• [Force Clock]: 選択したオブジェク ト を定期的に切り替わる値に割り当てます。 詳細は、 第 6 章の 「[Force Clock]

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

• [Remove Force]: 選択したオブジェク トに割り当てた値を削除します。 詳細は、 第 6 章の 「[Remove Force] コマン

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

ヒン ト : 波形ビューアーに表示されていない HDL オブジェク トがある場合は、 そのオブジェク トの波形ト レースが

Vivado シ ミ ュレータでサポート されていないこ とを示します。 Verilog の名前付きイベン トやローカル変数などの波

形ト レースはサポート されていません。

ロジック シミ ュレーシ ョ ン 54UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 55: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

波形ウィンドウ

Vivado シ ミ ュレータを起動する と、 デフォルトで波形ウ ィンド ウが開きます。 このウ ィンドウには、 図 4-11 に示すよ

うに、 シ ミ ュレーシ ョ ンの 上位モジュールから ト レース可能な HDL オブジェク ト を含む波形設定が表示されます。

ヒン ト : プロジェク ト を閉じて開き直したら、 波形ウ ィンド ウを表示するにはシ ミ ュレーシ ョ ンを再実行する必要が

あ り ます。 シ ミ ュレーシ ョ ン中にデフォルトの波形ウ ィンド ウを誤って閉じてしまった場合は、 メ イン メニューか

ら [Window] → [Waveform] をク リ ッ クする と波形ウ ィンド ウが再び表示されます。

波形ウ ィンド ウに個々の HDL オブジェク ト、 またはオブジェク トのセッ ト を追加するには、 そのオブジェク ト を右

ク リ ッ ク して [Add to Wave Window] をク リ ッ ク します (52 ページの図 4-9)。

Tcl コマンドを使用してオブジェク ト を追加するには、 add_wave <HDL_objects> を使用します。

add_wave コマンドを使用する と、 HDL オブジェク トへの絶対パスまたは相対パスを指定できます。

たとえば、 現在のスコープが /bft_tb/uut の場合、 uut の下のリセッ ト レジスタへの絶対パスは

/bft_tb/uut/reset、 相対パスは reset になり ます。

ヒン ト :add_wave コマンドには、 HDL スコープおよび HDL オブジェク ト を指定できます。 add_wave でスコープを指定し

た場合、 [Sources] ウ ィンド ウの [Add To Wave Window] コマンド と同じ動作になり ます。

ビッ ト幅の大きな HDL オブジェク ト を波形ビューアーに追加する と、 表示に時間がかかり ます。 [Add to Wave

Window] コマンドを実行する前に、 波形設定で表示制限を設定する と、 そのよ うなオブジェク トが表示されないよ

うにできます。 それには、 set_property DISPLAY_LIMIT <maximum bit width>

[current_wave_config] という Tcl コマンドを使用します。

X-Ref Target - Figure 4-11

図 4-11: 波形ウィンドウ

ロジック シミ ュレーシ ョ ン 55UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 56: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

波形オブジェク ト

Vivado IDE の波形ウ ィンド ウは、 多くの Vivado Design Suite ツールで共通して使用されます。 図 4-12 に、 波形設定

に含まれる波形オブジェク トの例を示します。

波形ウ ィンド ウには、 HDL オブジェク ト とその値および波形に加え、 グループ、 仕切り、 仮想バスなどの HDL オブ

ジェク ト を見やすくするためのアイテムも表示されます。

HDL オブジェク トおよびそれを見やすくするためのアイテムは、 ま とめて 「波形設定」 と呼ばれます。 波形ウ ィン

ド ウの波形部分には、 カーソル、 マーカー、 時間軸などの時間計測用のアイテムも表示されます。

Vivado IDE ではシ ミ ュレーシ ョ ン中の HDL オブジェク トの値変化が波形ウ ィンド ウに表示されるので、 ユーザーは

波形設定を使用してシ ミ ュレーシ ョ ン結果を検証します。

デザイン階層およびシ ミ ュレーシ ョ ンの波形は波形設定の一部ではなく、 別の波形データベース ファ イル (WDB) に

保存されます。

波形ウ ィンド ウの使用に関する詳細は、 第 5 章 「Vivado シ ミ ュレータを使用したシ ミ ュレーシ ョ ン波形の解析」 を

参照してください。

波形設定の保存

新規波形設定はディ スクに自動的には保存されません。 [File] → [ave Waveform Configuration As] をク リ ッ ク し、 ファ

イル名を指定して WCFG ファ イルを作成します。

波形設定を WCFG ファ イルに保存するには、 Tcl コンソールに 「save_wave_config <filename.wcfg>」 と入

力します。

指定したコマンド引数の名前で WCFG ファ イルが保存されます。

X-Ref Target - Figure 4-12

図 4-12: 波形設定の HDL オブジェク ト

ロジック シミ ュレーシ ョ ン 56UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 57: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

重要: ズーム設定は波形設定には保存されません。

複数の波形設定の作成と使用

1 つのシ ミ ュレーシ ョ ン セッシ ョ ンで、 独自の波形ウ ィンド ウを使用する複数の波形設定を作成および使用できま

す。 複数の波形ウ ィンド ウが表示されている場合は、 一番 近作成したウ ィンド ウまたは 近使用したウ ィンド ウ

がアクティブ ウ ィンド ウ とな り ます。 アクティブ ウ ィンド ウは、 現在表示されているウ ィンド ウ と、 [HDL Objects]

→ [Add to Wave Window] などの外部コマンドが適用される波形ウ ィンド ウです。

別の波形ウ ィンド ウをアクティブにするには、 そのウ ィンド ウのタイ トルをク リ ッ ク します。 詳細は、 60 ページの

「複数のシ ミ ュレーシ ョ ン run の区別」 および 67 ページの 「波形設定の新規作成」 を参照してください。

論理およびタイ ミング シミ ュレーシ ョ ンの実行

Vivado Design Suite でプロジェク ト を作成したら、 すぐにビヘイビアー シ ミ ュレーシ ョ ンを実行できます。 合成また

はインプ リ メンテーシ ョ ンを実行した後は、 論理およびタイ ミ ング シ ミ ュレーシ ョ ンを実行できます。 シ ミ ュレー

シ ョ ンを実行するには、 Flow Navigator で [Run Simulation] をク リ ッ ク し、 次の図に示すよ うに、 ポップアップ メ

ニューから実行するシ ミ ュレーシ ョ ンを選択します。

ヒン ト : ポップアップ メニューでどのオプシ ョ ンを選択できるかは、 デザイン開発段階によって異なり ます。 たとえ

ば、 合成は実行したがインプ リ メンテーシ ョ ンはまだである場合は、 ポップアップ メニューでインプリ メンテー

シ ョ ンに関するシ ミ ュレーシ ョ ンは淡色表示になり ます。

論理シミ ュレーシ ョ ンの実行

合成後の論理シミ ュレーシ ョ ン

合成が正常に完了した後合成済みデザインを開く と、 [Run Simulation] → [Post-Synthesis Functional Simulation] が使用

できるよ うになり ます (図 4-13)。

合成後は、 汎用ロジッ ク デザインがデバイス特定のプリ ミ ティブに合成されています。 合成後に論理シ ミ ュレー

シ ョ ンを実行するこ とによ り、 合成の 適化によ りデザイン機能が変わっていないこ とを確認できます。 合成後の

論理シ ミ ュレーシ ョ ンを選択する と、 論理ネッ ト リ ス トが生成され、 その UNISIM ラ イブラ リがシ ミ ュレーシ ョ ン

に使用されます。

X-Ref Target - Figure 4-13

図 4-13: [Run Simulation] のポップアップ メニュー

ロジック シミ ュレーシ ョ ン 57UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 58: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

インプリ メンテーシ ョ ン後の論理シミ ュレーシ ョ ン

インプ リ メンテーシ ョ ンが正常に完了した後インプリ メン ト済みデザインを開く と、 [Run Simulation] →

[Post-Synthesis Functional Simulation] が使用できるよ うになり ます (図 4-13)。

インプ リ メンテーシ ョ ン後は、 デザインはハード ウェアに配置配線されています。 この段階で論理検証をしておき、

インプ リ メンテーシ ョ ン中に行われた物理的 適化によ りデザインの機能が変更されていないかを確認できます。

インプ リ メンテーシ ョ ン後の論理シ ミ ュレーシ ョ ンを選択する と、 論理ネッ ト リ ス トが生成され、 その UNISIM ラ

イブラ リがシ ミ ュレーシ ョ ンに使用されます。

タイ ミング シミ ュレーシ ョ ンの実行

ヒント : 合成後のタイ ミ ング シ ミ ュレーシ ョ ンでは、 デバイス モデルから見積もられたタイ ミ ング遅延が使用され、

インターコネク ト遅延は含まれません。 インプリ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンでは実際のタイ

ミ ング遅延が使用されます。

合成後およびインプ リ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンを実行する と き、 シ ミ ュレータには次のも

のが含まれます。

• SIMPRIM ライブラ リ コンポーネン ト を含むゲート レベルのネッ ト リ ス ト

• SECUREIP

• 標準遅延フォーマッ ト (SDF) ファ イル

デザインの全体的な機能は 初に定義しています。 デザインがインプリ メン ト される と、 正確なタイ ミ ング情報が

利用できるよ うになり ます。

ネッ ト リ ス トおよび SDF を作成するため、 Vivado Design Suite は次の処理を実行します。

• -mode timesim オプシ ョ ンを使用してネッ ト リ ス ト ライター write_verilog、 および write_sdf (SDF ア

ノテーター ) を呼び出します。

• 生成されたネッ ト リ ス ト をターゲッ ト シ ミ ュレータに送り ます。

これらのオプシ ョ ンを変更するには、 Flow Navigator で [Simulation Settings] をク リ ッ ク しま

す (26 ページの 「シ ミ ュレーシ ョ ン設定」 )。

重要: 合成後と インプリ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンは、 Verilog でのみサポート されます。

VHDL のタイ ミ ング シ ミ ュレーシ ョ ンはサポート されません。 VHDL を使用する場合、 合成後およびインプリ メン

テーシ ョ ン後の論理シ ミ ュレーシ ョ ンを実行できます。 この場合、 SDF アノテーシ ョ ンは必要なく、 シ ミ ュレー

シ ョ ン ネッ ト リ ス トで UNISIM ライブラ リが使用されます。 ネッ ト リ ス トは write_vhdl Tcl コマンドを使用して作成

できます。 使用方法の詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 7] を参照して

ください。

重要: Vivado シ ミ ュレータ モデルではインターコネク ト遅延が使用されるので、 タイ ミ ング シ ミ ュレーシ ョ ンが正

し く実行されるよ うにするには、 -transport_int_delays -pulse_r 0 -pulse_int_r 0 コマンド オプシ ョ

ンを追加する必要があ り ます。

ロジック シミ ュレーシ ョ ン 58UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 59: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

合成後のタイ ミング シミ ュレーシ ョ ン

合成が正常に完了した後合成済みデザインを開く と、[Run Simulation] → [Post-Synthesis Timing Simulation] が使用でき

るよ うになり ます (図 4-13)。

合成後は、 汎用ロジッ ク デザインがデバイス特定のプリ ミ ティブに合成されており、 配線遅延およびコンポーネン

ト遅延の見積も り値が利用できます。 合成後のタイ ミ ング シ ミ ュレーシ ョ ンを実行するこ とによ り、 インプリ メン

テーシ ョ ン段階で時間を費やす前に、 タイ ミ ング ク リ ティカル パスがないかを確認できます。 合成後のタイ ミ ング

シ ミ ュレーシ ョ ンを選択する と、 タイ ミ ング ネッ ト リ ス ト と SDF ファ イルの見積も り遅延が生成されます。 シ ミ ュ

レータで生成された SDF ファ イルが含められるよ う、 ネッ ト リ ス ト ファ イルには $sdf_annotate コマンドが含ま

れます。

インプリ メンテーシ ョ ン後のタイ ミング シミ ュレーシ ョ ン

インプ リ メンテーシ ョ ンが問題なく終了した後合成したデザインを開く と、[Run Simulation] → [Post-Synthesis Timing

Simulation] が使用できるよ うになり ます (図 4-13)。

インプ リ メンテーシ ョ ン後は、 デザインはハード ウェアにインプリ メン トおよび配線されています。 この段階でタ

イ ミ ング シ ミ ュレーシ ョ ンを実行する と、 正確なタイ ミ ング遅延を使用して、 指定速度でデザインが機能している

かど うかを確認できます。 このシ ミ ュレーシ ョ ンは、 制約が設定されていないパスや、 非同期パスのタイ ミ ング エ

ラー ( リセッ トで発生するエラーなど) を検出するのに便利です。 インプリ メンテーシ ョ ン後のタイ ミ ング シ ミ ュ

レーシ ョ ンを選択する と、 タイ ミ ング ネッ ト リ ス ト と SDF ファ イルが生成されます。 ネッ ト リ ス ト ファ イルには

$sdf_annotate コマンドが含まれるので、 生成された SDF ファ イルが自動的に指定されます。

タイ ミング シミ ュレーシ ョ ン用の SDF ファイルのアノテート

シ ミ ュレーシ ョ ン設定を指定したと きに、 SDF ファ イルを作成するかど うかと、 プロセス コーナーをファース ト ま

たはスローに設定しました。

ヒン ト : SDF ファ イル オプシ ョ ンの設定を確認するには、 Vivado IDE の Flow Navigator で [Simulation Settings] をク

リ ッ ク し、 [Project Settings] ダイアログ ボッ クスの [Simulation] ページで [Netlist] タブをク リ ッ ク します。

SDF ファ イルには、 指定したプロセス コーナーに基づいて異なる min および max 値が含まれます。

推奨: 2 つの異なるシ ミ ュレーシ ョ ンを実行して、 セッ ト アップおよびホールド違反をチェッ クをして ください。

セッ ト アップ チェッ クを実行するには、 [–process_corner] を [slow] に設定して SDF を作成し、 SDF ファ イルの max

列を使用します。

ホールド チェッ クを実行するには、 [–process_corner] を [fast] に設定して SDF ファ イルを作成し、 SDF ファ イルの

min 列を使用します。 使用する SDF 遅延フ ィールドの指定方法は、 使用するシ ミ ュレーシ ョ ン ツールによって異な

り ます。 このオプシ ョ ンの設定方法は、 ご使用のシ ミ ュレーシ ョ ン ツールの資料を参照して ください。

4 つのタイ ミ ング シ ミ ュレーシ ョ ンすべてを実行するには、 次のよ うに指定します。

° スロー コーナー : SDFMIN および SDFMAX

° ファース ト コーナー : SDFMIN および SDFMAX

ロジック シミ ュレーシ ョ ン 59UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 60: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

シミ ュレーシ ョ ン結果の保存

Vivado シ ミ ュレータでは、 project.sim/simset ディ レク ト リの波形データベース (WDB) ファ イル

(<filename>.wdb) にオブジェク ト (VHDL 信号、 Verilog レジスタまたはワイヤなど) のシ ミ ュレーシ ョ ン結果が保

存されます。

オブジェク ト を波形ウ ィンド ウに追加してシ ミ ュレーシ ョ ンを実行する と、 デザインの完全な階層と追加したオブ

ジェク トの ト ランザクシ ョ ンが自動的に WDB ファイルに保存されます。 また、 log_wave コマンドを使用して、 波

形ウ ィンド ウには表示されないオブジェク ト を波形データベースに追加するこ と もできます。 log_wave コマンド

の詳細は、 第 6 章の 「Tcl コマンド log_wave の使用」 を参照してください。

複数のシミ ュレーシ ョ ン run の区別

デザインに対して複数のシ ミ ュレーシ ョ ンを実行する と、 ワークスペース上部に各シ ミ ュレーシ ョ ンの名前を示す

タブが表示され、 現在ウ ィンド ウに表示されているシ ミ ュレーシ ョ ン タイプがハイライ ト されます (図 4-14)。

シミ ュレーシ ョ ンを閉じる

シ ミ ュレーシ ョ ンを閉じるには、 Vivado IDE で次を実行します。

[File] → [Exit] をク リ ッ クするか、 プロジェク ト ウ ィンド ウの右上の X マークをク リ ッ ク します。

注意: 複数のシ ミ ュレーシ ョ ンを実行している場合は、 青いタイ トル バーの X マークをク リ ッ クする と、 すべての

シ ミ ュレーシ ョ ンが閉じます。 1 つのシ ミ ュレーシ ョ ンを閉じるには、 青いタイ トル バーの下の小さなグレーまた

は白いタブの X マークをク リ ッ ク します。

Tcl コンソールからシ ミ ュレーシ ョ ンを閉じるには、 次を入力します。

close_sim

このコマンドは、 まず保存されていない波形設定がないかど うかをチェッ ク します。 あった場合は、 エラー メ ッ

セージが表示されます。 close_sim コマンドを実行する前に未保存の波形設定を閉じるか、 または保存します。 ま

たは -force オプシ ョ ンを Tcl コマンドに追加します。

注記: close_project コマンドを使用して現在のプロジェク ト を閉じる前に、 close_sim コマンドを使用してシ

ミ ュレーシ ョ ンを完全に閉じるこ とをお勧めします。

X-Ref Target - Figure 4-14

図 4-14: アクテ ィブなシミ ュレーシ ョ ン タイプ

ロジック シミ ュレーシ ョ ン 60UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 61: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

シミ ュレーシ ョ ン起動スクリプ ト ファイルの追加

バッチ ファ イルのカスタム Tcl コマンドをプロジェク トに追加して、 それらの Tcl コマンドがシ ミ ュレーシ ョ ンで実

行されるよ うにするこ とができます。 これらのコマンドはシ ミ ュレーシ ョ ン開始後に実行されます。 このプロセス

は次のよ うになり ます。

1. シ ミ ュレーシ ョ ン ソース ファ イルに追加するシ ミ ュレーシ ョ ン コマンドを含む Tcl スク リプ ト を作成します。

たとえば、 1,000 ns 間実行するシ ミ ュレーシ ョ ンがあ り、 実行時間を長くする場合、 次のコマンドを含むファイ

ルを作成します。

run 5us

デフォルトでは 上位の信号のみが波形に追加されますが、 上位にない信号を監視する場合は、 post.tcl

スク リプ トにこれらの信号を追加します。 次は、 その例です。

add_wave/top/I1/<signalName>

2. このファ イルを 「post.tcl」 とい う名前を付けて保存します。

3. [Add Sources] ボタン を使用して Add Sources ウ ィザードを起動し、 [Add or Create Simulation Sources] をオン

にします。

4. post.tcl ファイルをシ ミ ュレーシ ョ ン ソース と して Vivado Design Suite プロジェク トに追加します。

[Simulation Sources] フォルダーに post.tcl ファ イルが表示されます (図 4-15)。

5. [Simulation] ツールバーの [Relaunch] ボタンをク リ ッ ク します。

元の時間に post.tcl ファ イルで指定された時間が追加された時間シ ミ ュレーシ ョ ンが実行されます。 Vivado

シ ミ ュレータは、 そのコマンドをすべて実行した後に、 post.tcl ファ イルを自動的に呼び出します。

X-Ref Target - Figure 4-15

図 4-15: post.tcl ファイルの使用

ロジック シミ ュレーシ ョ ン 61UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 62: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

シミ ュレーシ ョ ン メ ッセージの表示

Vivado IDE には、 情報、 警告、 エラーなどのメ ッセージが表示される メ ッセージ フ ィールドが含まれます。 Vivado

シ ミ ュレータからの一部のメ ッセージには、 図 4-16に示すよ うに、 問題の詳細と推奨回避策が記載されます。

同じ詳細を Tcl コンソールに表示するには、 次を構文を使用します。

help -message {message_number}

次に例を示します。

help -message {simulator 43-3120}

メ ッセージ出力の管理

HDL デザインで生成される メ ッセージ数が非常に多い場合 ($display Verilog システム タスクや、 report VHDL

文によ り生成されるものなど)、 Tcl コンソールおよびログ ファ イルに出力される メ ッセージ文の量を制限できます。

これによ り、 コンピューターのメモ リやディ スク容量を節約できます。 これには、 -maxlogsize オプシ ョ ンを使

用します。

1. Flow Navigator で [Simulation Settings] をク リ ッ ク します。

2. [Project Settings] ダイアログ ボッ クスで次を実行します。

a. [Simulation] カテゴ リ をク リ ッ ク します。

b. [Simulation] タブをク リ ッ ク します。

c. [xsim.simulate.xsim.more_options] フ ィールドに 「-maxlogsize <size>」 と入力します。 <size> には、

大テキス ト量を メガバイ トで指定します。

X-Ref Target - Figure 4-16

図 4-16: シミ ュレータ メ ッセージの説明と回避策情報

ロジック シミ ュレーシ ョ ン 62UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 63: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

launch_simulation コマンドの使用

launch_simulation コマンドを使用する と、 サポート されているシ ミ ュレータをスク リプ ト モードで実行でき

ます。

launch_simulation の構文は、 次のとおりです。

launch_simulation [-step <arg>] [-simset <arg>] [-mode <arg>] [-type <arg>][-scripts_only] [-of_objects <args>] [-absolute_path][-install_path <arg>] [-noclean_dir] [-quiet] [-verbose]

表 4-2 に、 launch_simulation のオプシ ョ ンを示します。

注記: -scripts_only はサポート されなくな り ました。 Vivado の今後のバージ ョ ンからはこのオプシ ョ ンは削除さ

れる予定です。 export_simulation Tcl コマンドを使用するこ とを推奨します。

• vivado_simulator を使用してビヘイビアー シ ミ ュレーシ ョ ンを実行します。

create_project project_1 project_1 -part xc7vx485tffg1157-1add_files -norecurse tmp.vadd_files -fileset sim_1 -norecurse testbench.vimport_files -force -norecurseupdate_compile_order -fileset sources_1update_compile_order -fileset sim_1launch_simulation

表 4-2: launch_simulation オプシ ョ ン

オプシ ョ ン 説明

[-step] 実行するシ ミ ュレーシ ョ ン手順を指定します。 有効な値は all、 compile、 elaborate、

simulate です。 デフォルトは all (すべてのステップを実行) です。

[-simset] シ ミ ュレーシ ョ ン ファ イルセッ トの名前を指定します。

[-mode] シ ミ ュレーシ ョ ン モードを指定します。 有効な値は behavioral、 post-synthesis、

post-implementation で、 デフォルトは behavioral です。

[-type] ネッ ト リ ス トのタイプを指定します。 有効な値は functional、 timing です。 このオプ

シ ョ ンは、 -mode を post-synthesis または post-implementation に設定している

場合にのみ有効です。

[-scripts_only] スク リプ トの生成のみを実行します。

[-of_objects] 指定したオブジェク トのコンパイル順ファイルを生成します。 -scripts_only オプシ ョ

ンを使用している場合にのみ有効です。

[-absolute_path] すべてのファイルパスを参照ディレク ト リに対する絶対パスにします。

[-install_path] インス トール ディ レク ト リ パスを指定します。

[-noclean_dir] シ ミ ュレーシ ョ ン実行ディレク ト リ ファ イルを削除しません。

[-quiet] コマンド エラーを表示しません。

[-verbose] プログラム実行中メ ッセージの非表示設定を解除し、 すべてのメ ッセージを表示します。

ロジック シミ ュレーシ ョ ン 63UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 64: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

• Questa Advanced Simulator を使用してビヘイビアー シ ミ ュレーシ ョ ン用のスク リプ ト を生成します。

create_project project_1 project_1 -part xc7vx485tffg1157-1add_files -norecurse tmp.vadd_files -fileset sim_1 -norecurse testbench.vimport_files -force -norecurseupdate_compile_order -fileset sources_1update_compile_order -fileset sim_1set_property target_simulator Questa [current_project]set_property compxlib.compiled_library_dir <compiled_library_location> [current_project]launch_simulation -scripts_only

• Synopsys VCS を使用して合成後の論理シ ミ ュレーシ ョ ンを起動します。

set_property target_simulator VCS [current_project]set_property compxlib.compiled_library_dir <compiled_library_location> [current_project]launch_simulation -mode post-synthesis -type functional

• Cadence IUS を使用してインプ リ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンを実行します。

set_property target_simulator IES [current_project]set_property compxlib.compiled_library_dir <compiled_library_location> [current_project]launch_simulation -mode post-implementation -type timing

デザイン変更後のシミ ュレーシ ョ ンの再実行

Vivado シ ミ ュレータを使用して HDL をデザインをデバッグしている 中に HDL ソース コードを修正する必要があ

るこ とがあ り ます。

デザインを変更してシ ミ ュレーシ ョ ンを実行し直す手順は、 次のとおりです。

1. Vivado コード エディ ターまたはその他のテキス ト エディ ターを使用して、 ソース コードに必要な変更を加えて

保存します。

2. Vivado IDE ツールバーの [Relaunch Simulation] ボタン をク リ ッ ク してシ ミ ュレーシ ョ ンを再実行します

(図 4-17)。 または、 Tcl コマンドの relaunch_sim を使用して、 シ ミ ュレーシ ョ ンをコンパイルし直して再起

動します。

3. 変更したデザインがコンパイルできない場合、 そのエラーの原因を示すエラー メ ッセージが表示されます。

Vivado IDE には、ディ スエーブル ステートの前のシ ミ ュレーシ ョ ン run の結果が引き続き表示されます。手順 1

に戻り、 エラーを修正して、 シ ミ ュレーシ ョ ンを再実行します。

デザインが問題なく再コンパイルされたら、 再びシ ミ ュレーシ ョ ンが開始します。

X-Ref Target - Figure 4-17

図 4-17: [Relaunch Simulation] ボタン

ロジック シミ ュレーシ ョ ン 64UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 65: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

重要: ファ イル システム エラーなど、 コンパイル エラー以外の理由でシ ミ ュレーシ ョ ンを再実行できないこ と もあ

り ます。 [Simulation] ツールバーの [Run] ボタンが再実行後に淡色表示になっている場合は、 シ ミ ュレーシ ョ ンが

ディ スエーブルになっているこ とを意味します。 Tcl コンソールの内容から、 再実行できなかった理由を確認してく

ださい。

注意: シ ミ ュレーシ ョ ンは Flow Navigator の [Run Simulation] をク リ ッ クするか、 Tcl コマンドの

launch_simulation を使用しても再実行できますが、 これらのコマンドを使用する とシ ミ ュレーシ ョ ンが閉じ、

波形の変更や基数のカスタマイズなどのシ ミ ュレーシ ョ ン設定が破棄されるこ とがあ り ます。

注記: [Relaunch Simulation] ボタン は、 launch_simulation を使用して Vivado シ ミ ュレータが一度問題なく実

行された後にのみ使用可能になり ます。 [Relaunch Simulation] ボタンは、 シ ミ ュレーシ ョ ンがバッチ/スク リプ ト モー

ドで実行される と、 淡色表示されます。

保存されたシミ ュレータのユーザー インターフェイス設定の使用

デフォルトでは、 Vivado シ ミ ュレータでユーザー インターフェイスおよび Tcl コマンドを使用した設定の変更は、

シ ミ ュレーシ ョ ンの作業ディ レク ト リにあるファ イルに保存されます。 保存される設定は、 次のとおりです。

• [Scopes] および [Objects] ウ ィンド ウのフ ィルター ボタンの状態および列の幅。

• run コマンドの配列表示制限、 デフォルト基数、 デフォルト時間単位、 ト レース制限など、 シ ミ ュレーシ ョ ンの

Tcl プロパティ。

• [Objects] ウ ィンド ウで HDL オブジェク トに設定した基数および [Show as Enumeration] の設定。

シ ミ ュレーシ ョ ンを終了した後、 Vivado シ ミ ュレータをも う一度開く と、 前回の設定が復元されます。

重要: シ ミ ュレーシ ョ ンを再起動したと きに設定ファイルが消去されないよ うにするには、 [Project Settings] ダイアロ

グ ボッ クスの [Simulation] ページで [Clean up simulation files] チェッ ク ボッ クスをオフにしてください。

ヒン ト : 設定をデフォルト値に戻すには、 設定ファイルを削除して ください。 設定ファイルは Vivado プロジェク ト

ディ レク ト リの <project>.sim/<simset>/<simtype>/xsim.dir/<snapshot>/xsimSettings.ini にあ り

ます。 たとえば、 BFT サンプル デザインのデフォルト ビヘイビアー シ ミ ュレーシ ョ ン run の設定ファイルは、

bft.sim/sim_1/behav/xsim.dir/bft_tb_behav/xsimSettings.ini にあ り ます。 ファ イルが消去されて

もかわまない場合は、 [Clean up simulation files] をオンにします。

ロジック シミ ュレーシ ョ ン 65UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 66: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 4 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン

デフォルト設定

Vivado プロジェク トの Tcl オブジェク トでは、 ク リーンアップされたまたは新し く作成されたシ ミ ュレーシ ョ ンのデ

フォルト設定を指定するためのプロパティがいくつかサポート されています。 これらのシ ミ ュレーシ ョ ンには設定

ファイルはまだあ り ません。 次に、 プロジェク トのデフォルト設定プロパティを リ ス ト します。

• XSIM.ARRAY_DISPLAY_LIMIT

• XSIM.RADIX

• XSIM.TIME_UNIT

• XSIM.TRACE_LIMIT

プロパティの現在の値を確認するには report_property [current_project] Tcl コマンドを使用し、 プロパ

ティ値を設定するには set_property <property name> <property value> [current_project] Tcl コマ

ンドを使用します。 たとえば、 配列表示を 16 に制限するには、 次のコマンドを使用します。

set_property xsim.array_display_limit 16 [current_project]

新規作成したシ ミ ュレーシ ョ ンまたはク リーンアップされたシ ミ ュレーシ ョ ンを起動する と、 シ ミ ュレーシ ョ ン Tcl

オブジェク トにはプロジェク トのプロパティが使用されます。 プロパティを確認するには、 次の Tcl コマンドを使用

します。

report_property [current_sim]

重要: プロジェク ト プロパティは、 ク リーンアップされた、 または新し く作成されたシ ミ ュレーシ ョ ンにしか適用さ

れません。 特定の run タイプおよび sim_1/behav などのシ ミ ュレーシ ョ ン セッ トのシ ミ ュレーシ ョ ンを実行する と、

別の設定ファイルが作成され、 その後の実行ではそのファイルの設定が使用されます。 プロジェク ト プロパティへ

の変更は、 そのシ ミ ュレーシ ョ ンには反映されません。 プロジェク ト プロパティは、 シ ミ ュレーシ ョ ンをク リーン

アップした場合、 または設定ファイルを削除した場合にのみ適用されます。

ロジック シミ ュレーシ ョ ン 66UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 67: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章

Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

概要

Vivado® シ ミ ュレータでは、 波形を使用してデザインを解析し、 コードをデバッグできます。 シ ミ ュレータによ り、

[Objects] ウ ィンド ウや [Scopes] ウ ィンド ウなど、 ワークスペースのほかのエリ アにデザイン信号データが自動的に

入力されます。

シ ミ ュレーシ ョ ンは、 通常シ ミ ュレーシ ョ ンをする HDL オブジェク ト を定義するテス トベンチで設定します。 テス

トベンチの詳細は、 『効率的なテス トベンチの記述』 (XAPP199) [参照 5] を参照してください。

Vivado シ ミ ュレータを起動する と、 上位 HDL オブジェク ト を含む波形設定が表示されます。 [Objects] ウ ィンド ウ

および [Scopes] ウ ィンド ウなどのワークスペースのほかのエリ アにデザイン データが自動的に入力されます。 この

後、 別の HDL オブジェク ト を追加したり、 シ ミ ュレーシ ョ ンを実行したりできます。 次の 「波形設定と波形ウ ィン

ド ウの使用」 を参照してください。

波形設定と波形ウィンドウの使用

Vivado シ ミ ュレータでは、 波形ウ ィンド ウをカスタマイズできます。 表示の現在の状態は、 波形設定と呼ばれます。

この設定を WCFG ファ イルに保存して、 後で使用できます。

波形設定には名前を付けるこ とができます。 デフォルト名は untitled です。 名前は波形設定ウ ィンド ウのタイ ト

ルバーに表示されます。 波形設定を一度もファイルに保存していない場合は、 名前は 「untitled」 になっています。

波形設定の新規作成

波形を表示するための新しい波形設定を作成するには、 次の手順に従います。

1. [File] → [New Waveform Configuration] をク リ ッ ク します。

新しい波形ウ ィンド ウが開き、 「untitled」 とい う名前の新しい波形設定が表示されます。

Tcl コマンド : create_wave_config <waveform_name>

2. 69 ページの 「波形設定の HDL オブジェク ト 」 に示す方法で HDL オブジェク ト を波形設定に追加します。

波形の新規作成の詳細は、 第 4 章 「Vivado シ ミ ュレータを使用したシ ミ ュレーシ ョ ン」 を参照して ください。 複数

波形に関する詳細は、 57 ページの 「複数の波形設定の作成と使用」 も参照してください。

ロジック シミ ュレーシ ョ ン 67UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 68: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

WCFG ファイルを開く

シ ミ ュレーシ ョ ンで使用する WCFG ファ イルを開くには、 次の手順に従います。

1. [File] → [Open Waveform Configuration] をク リ ッ ク します。

[Open Waveform Configuration] ダイアログ ボッ クスが開きます。

2. WCFG ファ イルを選択します。

注記: WCFG ファ イルにスタティ ッ ク シ ミ ュレーシ ョ ンの HDL デザイン階層にはない HDL オブジェク トへの参

照が含まれる場合、 Vivado シ ミ ュレータではこれらの HDL オブジェク トが無視され、 読み込まれた波形設定か

ら削除されます。

波形ウ ィンド ウが開き、 WCFG ファ イルにリ ス ト された波形オブジェク トの波形データが表示されます。

Tcl コマンド : open_wave_config <waveform_name>

波形設定の保存

波形設定を変更して WCFG ファ イルに保存するには、 [File] → [Save Waveform Configuration As] をク リ ッ ク し、 波形

設定の名前を指定します。

Tcl コマンド : save_wave_config <waveform_name>

前に保存したシミ ュレーシ ョ ン run を開く

前に保存したシ ミ ュレーシ ョ ンを Vivado Design Suite で開くには、 スタンドアロン、 インタラ クティブ、 プログラム

手法の 3 つの方法があ り ます。

スタンドアロン モード

次のコマンドを使用する と、 Vivado の外部から WDB ファ イルを開く こ とができます。

xsim <name>.wdb -gui

ヒン ト : xsim コマンドに -view <WCFG file> を追加する と、 WDB ファ イルと WCFG ファ イルを一緒に開く こ と

ができます。

インタラ クティブ

° Vivado Design Suite プロジェク ト を読み込んだら、 [View] → [Open Static Simulation] をク リ ッ ク し、 実行済

みシ ミ ュレーシ ョ ンの波形を含む WDB ファイルを選択します。

ヒン ト : スタティ ッ ク シ ミ ュレーシ ョ ンは Vivado シ ミ ュレータのモードで、 シ ミ ュレーシ ョ ンを実行して得たデー

タの代わりに、 WDB ファ イルからのデータがウ ィンド ウに表示されます。

° Tcl コンソールに 「open_wave_database <name>.wdb」 と入力します。

ロジック シミ ュレーシ ョ ン 68UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 69: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

プログラム手法

次の内容を含む Tcl ファ イル (design.tcl など) を作成します。

current_filesetopen_wave_database <name>.wdb

このファ イルを次のよ うに実行します。

vivado -source design.tcl

重要: Vivado シ ミ ュレータは、 サポート されている OS で作成された WDB ファ イルを開く こ とができ、 また、

Vivado Design Suite 2014.3 以降のバージ ョ ンで作成された WDB ファ イルも開く こ とができます。 2014.3 よ り も前の

バージ ョ ンの Vivado Design Suite で作成された WDB ファ イルは開く こ とはできません。

シ ミ ュレーシ ョ ンを実行して HDL オブジェク ト を波形ウ ィンド ウで表示する場合、 シ ミ ュレーシ ョ ンを実行する

と、 表示されている HDL オブジェク トの波形アクティビティを含む波形データベース (WDB) ファ イルが作成され

ます。

WDB ファ イルには、 シ ミ ュレーシ ョ ンされたデザインの HDL スコープとオブジェク トすべてに関する情報も含ま

れます。 このモードの場合、 下位に制御するライブ シ ミ ュレーシ ョ ン モデルがないので、 run コマンドのよ うなシ

ミ ュレーシ ョ ンを制御または監視するコマンドは使用できません。

ただし、 波形および HDL デザイン階層を表示するこ とはできます。

波形設定の HDL オブジェク ト HDL オブジェク ト を波形設定に追加する と、 波形ビューアーに HDL オブジェク トの波形オブジェク トが作成されま

す。 波形オブジェク トは、 関連付けられている HDL オブジェク トに リ ンク されますが、 それぞれ別のものです。

同じ HDL オブジェク トから複数の波形オブジェク ト を作成でき、 各波形オブジェク トの表示プロパティを別々に設

定できます。

たとえば、 myBus という HDL オブジェク トから作成されたある波形オブジェク ト を 16 進数で表示し、 同じ myBus

の別の波形オブジェク ト を 10 進数で表示させるこ とができます。

仕切り、 グループ、 仮想バスなどの波形オブジェク ト も波形設定に表示できます。

HDL オブジェク トから作成された波形オブジェク トは、 「デザイン波形オブジェク ト 」 と呼ばれます。 これらのオブ

ジェク トは、 対応するアイコン付きで表示されます。 デザイン波形オブジェク トの場合、 アイコンを見る と、 その

オブジェク トがスカラー なのか、 Verilog ベクターや VHDL レコードなどの複合型 なのかがわかり ます。

ヒン ト : [Objects] ウ ィンド ウにデザイン波形オブジェク トの HDL オブジェク ト を表示するには、 デザイン波形オブ

ジェク トの名前を右ク リ ッ ク し、 [Show in Object Window] をク リ ッ ク します。

ロジック シミ ュレーシ ョ ン 69UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 70: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

図 5-1 に、 波形設定ウ ィンド ウの HDL オブジェク トの例を示します。 デザイン オブジェク トには、 名前と値が表示

されます。

• [Name]: デフォルトでは、 HDL オブジェク トの名前が表示されます。 表示されるのは名前だけで、 オブジェク

トの階層パスは表示されません。 階層パスを含めた名前で表示したり、 カスタム名を指定して表示するこ と も

できます。

• [Value]: 波形ウ ィンド ウのメ イン カーソルに示されている時間におけるオブジェク トの値を表示します。 値の

フォーマッ ト または基数は、 同じ HDL オブジェク トに リ ンク されているほかのデザイン波形オブジェク トの

フォーマッ トや、 [Objects] ウ ィンド ウおよびソース コード ウ ィンド ウに表示される値のフォーマッ トに関係な

く変更できます。

[Scopes] ウ ィンド ウには、 選択したスコープに対して表示可能なすべての HDL オブジェク ト を、 波形ウ ィンド ウに

追加する機能があ り ます。 [Scopes] ウ ィンド ウの使用方法は、 第 4 章の 「[Scopes] ウ ィンド ウ」 を参照してください。

基数

バスのデータ型を理解するこ とは重要です。 デジタルおよびアナログの波形を効果的に使用するには、 基数設定と

データ型の関係を認識する必要があ り ます。

重要: 基数を変更するウ ィンド ウで基数設定を変更して ください。 [Objects] ウ ィンド ウで基数を変更しても、 波形

ウ ィンド ウまたは Tcl コンソールにはその変更は反映されません。 たとえば、 [Objects] ウ ィンド ウで

wbOutputData[31:0] とい う アイテムを [Signed Decimal] に変更しても、 波形ウ ィンド ウでは [Binary] のままです。

X-Ref Target - Figure 5-1

図 5-1: 波形 HDL オブジェク ト

ロジック シミ ュレーシ ョ ン 70UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 71: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

デフォルト基数の変更

デフォルトの波形基数は、 基数が明示的に設定されていない波形オブジェク トすべての値の数値形式を制御します。

デフォルトの波形基数は、 [Hexadecimal] (16 進数) です。

デフォルトの波形基数を変更するには、 次の手順に従います。

1. 波形ウ ィンド ウのサイ ドバーの [Waveform Options] ボタン をク リ ッ ク し、 [Waveform Options] スライ ドアウ

ト を開きます。

2. [General] ビューで [Default Radix] ド ロ ップダウン リ ス ト をク リ ッ ク します。

3. ド ロ ップダウン リ ス トから基数を選択します。

オブジェク トごとの基数の変更

波形ウ ィンド ウで波形オブジェク トの基数を変更するには、 次の手順に従います。

1. 波形オブジェク トの名前を右ク リ ッ ク します。

2. [Radix] をク リ ッ ク し、 ド ロ ップダウン リ ス トからフォーマッ ト を選択します。

° [Default]

° [Binary] (2 進数)

° [Hexadecimal] (16 進数)

° [Unsigned Decimal] (符号なし 10 進数)

° [Signed Decimal] (符号付き 10 進数)

° [Octal] (8 進数)

° [ASCII]

° [Real] (実数)

° [Real Settings] (実数設定)

注記: [Real] および [Real Settings] の使用方法は、 72 ページの 「基数およびアナログ波形の使用」 を参照してください。

Tcl コンソールから表示された値を数値の形式に変更するには、 次を Tcl コマンドを入力します。

set_property radix <radix> <wave_object>

<radix> には、 bin、 unsigned,、 hex、 dec、 ascii、 または oct を指定します。

<wave_object> には、 add_wave コマンドで返されるオブジェク ト を指定します。

ヒン ト : 波形ウ ィンド ウで基数を変更しても、 [Objects] ウ ィンド ウにはその変更は反映されません。

ロジック シミ ュレーシ ョ ン 71UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 72: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

波形のカスタマイズ

アナログ波形の使用

基数およびアナログ波形の使用

バスの値は、 バス波形オブジェク トの基数設定によって決定された数値と して処理されます。

• 2 進数、 8 進数、 16 進数、 ASCII、 および符号なしの 10 進数の基数を使用する と、 バスの値が符号なしの整数と

して処理されます。

• バス内のビッ トのいずれかが 0 でも 1 でもない場合、 バス全体の値は 0 と解釈されます。

• 符号付きの 10 進数基数を使用する と、 バスの値が符号付き整数と して処理されます。

• 基数を実数に設定する と、 [Real Settings] ダイアログ ボッ クスの設定に基づいて、 バスの値が固定小数点または

浮動小数点の実数と して処理されます。

波形オブジェク トの基数を実数に設定するには、 次の手順に従います。

1. 波形ウ ィンド ウで HDL オブジェク ト を右ク リ ッ ク し、 ポップアップ メニューを開きます。

2. [Radix] → [Real Settings] をク リ ッ ク し、 [Real Settings] ダイアログ ボッ クスを開きます (図 5-2)。

波形の基数を [Real] に設定して、 オブジェク トの値を実数で表示できます。 この基数を選択する前に、 波形ビュー

アーでの値のビッ トの処理方法を指定する必要があ り ます。

X-Ref Target - Figure 5-2

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

ロジック シミ ュレーシ ョ ン 72UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 73: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

[Real Setting] ダイアログ ボッ クスのオプシ ョ ンは、 次のとおりです。

• [Fixed Point]: 選択したバス波形オブジェク トのビッ トが固定小数点の符号付きまたは符号なし実数と して処理さ

れます。

• [Binary Point]: 2 進数小数点の右側のビッ ト数を指定します。 [Binary Point] で指定した値が波形オブジェク トの

ビッ ト幅よ り も大きい場合、 波形オブジェク トの値は固定小数点と して処理できず、 波形オブジェク トがデジ

タル波形で表示される場合はすべての値が <Bad Radix> と表示され、 アナログ波形と して表示される場合はす

べての値が 0 と して処理されます。

• [Floating Point]: 選択したバス波形オブジェク トのビッ トが IEEE 浮動小数点の実数と して処理されます。

注記: 単精度および倍精度 (および単/倍精度に設定されている値のカスタム精度) のみがサポート されています。

その他の値は、 [Fixed Point] を使用した場合と同様 <Bad Radix> と表示されます。

[Exponent Width] および [Fraction Width] を加算した値が波形オブジェク トのビッ ト幅に一致する必要があ り、 一

致しない場合は <Bad Radix> と表示されます。

ヒン ト : 行を区切る線が表示されていない場合、 77 ページの 「[Waveform Options] ダイアログ ボッ クス」 でオンにで

きます。

波形のアナログ表示

重要: HDL バス オブジェク ト をアナログ波形で表示して予測される波形を出力する場合、 HDL オブジェク トのデー

タの性質と一致する基数を選択してください。

次に例を示します。

- バスでエンコード されるデータが 2 の補数の符号付き整数の場合は、 符号付きの基数を選択する必要があ り ます。

- データが IEEE フォーマッ トでエンコード される浮動小数点の場合は、 基数に実数を選択する必要があ り ます。

アナログ波形表示のカスタマイズ

アナログ波形の表示は次のよ うにカスタマイズできます。

1. 波形設定ウ ィンド ウの [Name] 列で HDL オブジェク ト を右ク リ ッ ク し、 [Waveform Style] をク リ ッ ク します。

ポップアップ メニューに次のオプシ ョ ンが表示されます。

° [Analog]: 波形をアナログに設定します。

° [Digital]: 波形オブジェク ト をデジタルに設定します。

° [Analog Settings]: アナログ波形表示に関するオプシ ョ ンを設定する [Aanalog Settings] ダイアログ ボッ クス

(図 5-3) が開きます。

重要: 波形ウ ィンド ウでは、 幅が 64 ビッ ト以下のバスのアナログ波形のみを表示できます。

ロジック シミ ュレーシ ョ ン 73UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 74: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

[Analog Settings] ダイアログ ボックスのオプシ ョ ンの説明

• [Row Height]: 選択した波形オブジェク トの高さをピクセル数で指定します。 行の高さを変更しても波形の垂直

方向の表示域は変わり ませんが、 波形の高さが変わり ます。

アナログとデジタルを切り替える と き、 行の高さはそれぞれに合った適切なデフォルトの高さに設定されます

(デジタルの場合は 20、 アナログの場合は 100)。

ヒン ト : 行を区切る線が表示されていない場合は、 [Waveform Options] ダイアログ ボッ クスのチェッ ク ボッ クスをオ

ンにしてください。 オプシ ョ ン設定の変更方法については、 77 ページの 「[Waveform Options] ダイアログ ボッ クス」

を参照してください。 行を区切る線を波形名の左および下にド ラ ッグして、 行の高さを変更するこ と もできます。

• [Y Range]: 波形エリ アに表示される数値の範囲を指定します。

° [Auto]: 表示されている時間の範囲の値が現在の範囲を超えたと きに、 表示範囲が拡大されます。

° [Fixed]: 時間範囲を一定にします。

- [Min]: 波形エリ アの一番下に表示される値を指定します。

- [Max]: 波形エリ アの一番上に表示される値を指定します。

注記: どちらの値も浮動小数点と して指定できますが、 波形オブジェク トの基数が整数の場合、 値は整数に

切り捨てられます。

• [Interpolation Style]: データ ポイン ト を接続する線の描画方法を指定します。

° [Linear]: 2 つのデータ ポイン ト間を直線で接続します。

° [Hold]: 2 つのデータ ポイン トの、 左のポイン トから右のポイン トの X 座標に水平線を描画し、 そこから右

のポイン トに垂直線を描画して L 字型に接続します。

X-Ref Target - Figure 5-3

図 5-3: [Analog Settings] ダイアログ ボックス

ロジック シミ ュレーシ ョ ン 74UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 75: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

• [Off Scale]: 波形エリアの Y 軸を超えた値をどのよ うに描画するかを指定します。

° [Hide]: 範囲外にある値を非表示にします。 波形が波形エリ アの上下の範囲外になる と、 値が範囲内に戻る

まで非表示になり ます。

° [Clip]: 値が範囲を超える と、 範囲内に戻るまで波形エリ アの上下境界線上に水平線と して表示されます。

° [Overlap]: 波形が波形エリ アの範囲を超えてほかの波形と重なったと しても、 波形ウ ィンド ウの境界に達す

るまで値の位置に波形が描画されます。

• [Horizontal Line]: 指定した値に水平線を描画します。 このチェッ ク ボッ クスをオンにする と、 Y 軸の [Y Value]

で指定した値の位置に水平線がが描画されます (指定した値が波形の Y 範囲内である場合)。

[Min] および [Max] の場合と同様、 Y 軸の値には浮動小数点値を指定できますが、 選択した波形オブジェク トの

基数が整数の場合は、 整数値に切り捨てられます。

波形オブジェク トの命名

オブジェク ト名を変更および表示するオプシ ョ ンや、 名前の表示を変更するオプシ ョ ンがあ り ます。

オブジェク ト名の変更

デザイン波形オブジェク ト、 仕切り、 グループ、 仮想バスなどの波形設定に含まれる波形オブジェク トの名前は変

更できます。

1. [Name] 列でオブジェク ト名を選択します。

2. 右ク リ ッ ク して [Rename] をク リ ッ ク します。

[Rename] ダイアログ ボッ クスが開きます。

3. [Rename] ダイアログ ボッ クスに新しい名前を入力し、 [OK] をク リ ッ ク します。

注記: 波形設定のデザイン波形オブジェク トの名前を変更しても、 その下位の HDL オブジェク トの名前は変わり ま

せん。

オブジェク ト名の表示変更

完全な階層名 (long name)、 信号またはバス名のみ (short name)、 あるいは各デザイン波形オブジェク トのカスタム名

を表示できます。 オブジェク ト名は、 波形設定の [Name] 列に表示されます。 名前が非表示になっている場合は、 次

の操作を実行します。

1. 名前全体が表示されるよ うに [Name] 列の幅を調整します。

2. [Name] 列でスクロール バーを使用して名前を表示します。

表示名を変更するには、 次の手順に従います。

1. 信号名またはバス名を 1 つ以上選択します。 複数の信号を選択する場合は、 Shift キーまたは Ctrl キーを押しな

がら ク リ ッ ク します。

2. 右ク リ ッ ク して [Name] をク リ ッ ク します。 ポップアップ メニューに次のオプシ ョ ンが表示されます。

° [Long]: デザイン オブジェク トのフル階層名を表示します。

° [Short]: 信号名またはバス名のみを表示します。

° [Custom]: オブジェク トのカスタム名を表示します。 詳細は、 75 ページの 「オブジェク ト名の変更」 を参照してください。

ロジック シミ ュレーシ ョ ン 75UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 76: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

ヒン ト : 波形オブジェク トの名前を変更する と、 名前表示モードが [Custom] に変わり ます。 元の表示モードに戻すに

は、表示モードを [Long] または [Short] に戻す必要があ り ます。 [Long] および [Short] の名前はデザイン波形オブジェ

ク トに対してのみ意味があ り ます。 その他のオブジェク ト (仕切り、 グループ、 仮想バス) はデフォルトで [Custom]

名で表示され、 [Long] および [Short] 名に対する ID 文字列が表示されます。

バス ビッ ト順の反転

波形設定でバス ビッ ト順を反転する と、 バス値の表示を MSB から表示するか (ビッグ エンディアン)、 LSB から表

示するか ( リ トル エンディアン) を切り替えるこ とができます。

ビッ ト順を反転するには、 次の手順に従います。

1. バスを選択します。

2. 右ク リ ッ ク し、 [Reverse Bit Order] をク リ ッ ク します。

これでバス ビッ トの順序が逆になり ます。 [Reverse Bit Order] コマンドの横にチェッ ク マークが表示され、 適用

されているこ とが示されます。

重要: [Reverse Bit Order] コマンドはバスに表示されている値に対してのみ実行できます。 このコマンドを実行しても、

バス波形オブジェク ト を拡張する と きにバスの下に表示されるバス エレ メン トのリ ス トの順序は逆になり ません。

ヒン ト : バスの [Long] 名および [Short] 名に表示されるインデッ クス範囲は、 バス エレ メン トのビッ ト順を示します。

たとえば、 bus[0:7] バスに [Reverse Bit Order] を適用する と、 このバスは bus[7:0] と表示されます。

SystemVerilog の列挙フォーマッ トの変更

SystemVerilog 列挙型は数値を持つ HDL オブジェク トで、 特定の値を表すためにテキス ト ラベルが定義されます。 た

とえば、 値 1 を表すために LABEL1、 値 5 を表すために LABEL2 と定義するなどです。 コンテキス ト メニューの

[Show As Enumeration] を使用する と、 列挙値を指定したラベルまたは数値のどちらで表示するかを指定できます。

上の例の場合、 [Show As Enumeration] をオンにする と、 値 5 は LABEL2 と表示されます。 オフにする と、 [Radix] メ

ニューで列挙型にどんな基数を設定したと しても、 値 5 が表示されます。

ラベルを使用して列挙型を表示する手順は、 次のとおりです。

1. 列挙型を選択します。

2. 右ク リ ッ ク して [Display As Enumeration] をオンにします。

列挙型を数値で表示する手順は、 次のとおりです。

1. 列挙型を選択します。

2. 右ク リ ッ ク して [Display As Enumeration] をオフにします。

注記: 定義されたラベルがない列挙値の場合は、 [Display As Enumeration] 設定に関係なく、 常に数字で表示されます。

[Display As Enumeration] は、 SystemVerilog 列挙オブジェク トに対してのみイネーブルになり ます。

ロジック シミ ュレーシ ョ ン 76UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 77: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

[Waveform Options] ダイアログ ボックス

[Waveforms Options] ボタン をク リ ッ クする と、 [Waveforms Options] スライ ドアウ トが開きます (図 5-4)。

[General Waveform Options] には、 次のオプシ ョ ンがあ り ます。

• [Default Radix]: 新し く作成した波形オブジェク トに使用する数値形式を設定します。

• [Elide Setting]: 波形ウ ィンド ウで長すぎる信号名の省略方法を指定します。

° [Left]: 長い信号名の左端を切り捨てます。

° [Right]: 長い信号名の右端を切り捨てます。

° [Middle]: 長い信号名の真ん中を切り捨て、 左右両端を残します。

• [Draw Waveform Shadow]: 影付きの波形を作成します。

• [Show signal indices]: 各波形オブジェク ト名の左に行番号を表示します。 行番号を区切る線をド ラ ッグする と、

波形オブジェク トの高さを変更できます。

• [Show grid lines]: グ リ ッ ド線を表示します。 グ リ ッ ド線を非表示にする場合は、 このチェッ ク ボッ クスをオフに

します。

• [Colors] ページでは、 波形ウ ィンド ウ内のアイテムの色を設定できます。

X-Ref Target - Figure 5-4

図 5-4: [Waveform Options] スライドアウト

ロジック シミ ュレーシ ョ ン 77UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 78: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

波形表示の制御 波形表示は、 次のよ うに制御できます。

• 名前、 値、 波形ウ ィンド ウの波形列のサイズ調整ハンドル

• マウス ホイールを使用したスクロールの組み合わせ

• 波形ウ ィンド ウのサイ ドバーにあるズーム ボタン

• マウス ホイールを使用したズームの組み合わせ

• Vivado IDE Y 軸のズーム機能

• Vivado シ ミ ュレーシ ョ ンの X 軸のズーム機能。 マウス ボタンを使用したズーム表示については、 『Vivado

Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893) [参照 3] を参照して ください。

注記: ほかの Vivado Design Suite のグラフ ィ ッ ク ウ ィンド ウ とは異なり、波形ウ ィンド ウの拡大/縮小は X (時間) 軸に

適用されます。 このため、 ウ ィンド ウを拡大/縮小する範囲を指定する [Zoom Range X] が、ほかの Vivado Design Suite

ウ ィンド ウの [Zoom to Area] の代わりに使用されます。

ヒン ト : WCFG ファ イルを保存する と、 波形ウ ィンド ウの設定と、 波形オブジェク トおよびマーカーが保存されま

す。 波形ウ ィンド ウの設定は、 名前、 値の列の幅、 ズーム レベル、 スクロール位置、 グループやバスの拡張、 メ イ

ン カーソルの位置などです。

列サイズ調節ハンドルの使用

名前または値の列幅を変更するには、 列の右側の縦線にマウスを置き、 カーソルの形が変わったら、 マウスを左右

に動かします。

注記: [Name] 列の幅を広げるには、 [Value] 列の幅が既に 小である場合は、 まず [Value] 列の幅を広げる必要があ り

ます。

マウス ホイールを使用したスクロール

波形ウ ィンド ウ内でク リ ッ クする と、 マウス ホイールを使用して上下にスクロールできます。 Shift キーを押しなが

らマウス ホイールを使用する と、 波形を左右にスクロールできます。

ズーム ボタンの使用

波形ウ ィンド ウのサイ ドバーにはズーム機能用のボタンがあ り、 これを使用して波形設定を拡大および縮小

できます。

マウス ホイールを使用したズーム

波形エリアをク リ ッ ク して Ctrl キーを押しながらマウス ホイールを使用する と、 オシロスコープのダイヤル

を操作するよ うに、 表示を拡大/縮小できます。

ロジック シミ ュレーシ ョ ン 78UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 79: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

アナログ波形の Y 軸方向のズーム

X 軸方向のズームでサポート されている機能に加え、 アナログ波形の場合は、 図 5-5 に示す追加のズーム機能があ り

ます。

ズーム機能を使用するには、 マウスの左ボタンを押したまま、 図で示されている方向にマウスをド ラ ッグします。

この図の中央がマウスの位置です。

次の追加ズーム機能があ り ます。

• [Zoom Out Y]: 開始点からマウス ボタンを放した位置までの距離によ り決定される 2 のべき乗分 Y 軸方向に縮小

します。 開始点のマウス位置の Y 値をそのまま維持してズームが実行されます。

• [Zoom Y Range]: 垂直方向に線を描き、 マウス ボタンを離した位置までの Y 軸の範囲を表示します。

• [Zoom In Y]: 開始点からマウス ボタンを放した位置までの距離によ り決定される 2 のべき乗分 Y 軸方向に拡大

します。 開始点のマウス位置の Y 値をそのまま維持してズームが実行されます。

• [Reset Zoom Y]: Y の範囲を波形ウ ィンド ウに現在表示されている値にリセッ ト し、 Y の範囲モードを [Auto] に

設定します。

Y 軸の方向のズーム機能はすべて Y の範囲のアナログ値を設定します。 [Reset Zoom Y] は Y の範囲を [Auto] に設定

しますが、 ほかのズーム機能は [Fixed] に設定します。

X-Ref Target - Figure 5-5

図 5-5: アナログ ズームのオプシ ョ ン

ZoomOutY

Zoom Y

Range

ZoomInX

ZoomX

Range

ZoomFitX

Reset Zoom

Y

ZoomOutX

ZoomInY

ロジック シミ ュレーシ ョ ン 79UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 80: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

波形の分類

こ こでは、 波形内の情報を分類するオプシ ョ ンについて説明します。

信号およびオブジェク トのグループ

関連している波形オブジェク ト を見やすくするため、 グループにまとめるこ とができます。 グループに含まれてい

るオブジェク トは展開または非展開にできます。 グループ自体は波形データを表示しませんが、 その内容の表示/非

表示を切り替えるこ とができます。 グループは追加、 変更、 削除できます。

グループを追加するには、 次の手順に従います。

1. 波形ウ ィンド ウで、 グループに追加する波形オブジェク ト を 1 つまたは複数選択します。

注記: グループには、 仕切り、 仮想バス、 ほかのグループを含めるこ とができます。

2. [Edit] → [New Group] をク リ ッ クするか、 右ク リ ッ ク して [New Group] をク リ ッ ク します。

これによ り、 選択した波形オブジェク ト を含むグループが波形設定に追加されます。

Tcl コンソールで add_wave_group を入力する と、 新しいグループが追加されます。

グループは、 グループ アイコン で表されます。 HDL オブジェク ト をド ラ ッグ アンド ド ロ ップして、 グループ

に信号やバスを追加するこ と もできます。

波形設定 ファ イルを保存する と、 新しいグループとそれに含まれる波形オブジェク ト も保存されます。

グループは、 次の方法で移動または削除できます。

• グループを移動するには、 [Name] 列のグループ名を別の位置にド ラ ッグ アンド ド ロ ップします。

• グループを削除するには、 グループを選択して [Edit] → [Wave Objects] → [Ungroup] をク リ ッ クするか、 グルー

プを右ク リ ッ ク して [Ungroup] をク リ ッ ク します。 グループに含まれていた波形オブジェク トは、 波形設定の一

番上に配置されます。

グループ名も変更できます。 詳細は、 75 ページの 「オブジェク ト名の変更」 を参照してください。

注意: Delete キーを押すと、 選択されているグループと、 それに含まれている波形オブジェク トが波形設定から削除

されます。

仕切りの使用

信号やオブジェク ト を見やすくするため、 HDL オブジェク トの間に仕切り を作成できます。 波形設定に仕切り を追

加するには、 次の手順に従います。

1. 波形ウ ィンド ウの [Name] 列で信号をク リ ッ ク します。 区切りはその信号の下に追加されます。

2. 右ク リ ッ ク し、 [New Divider] をク リ ッ ク します。

新しい仕切りマークは、 波形設定ファイルを保存したと きに保存されます。

Tcl コマンド : add_wave_divider

ロジック シミ ュレーシ ョ ン 80UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 81: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

仕切りは、 次の方法で移動または削除できます。

• 仕切り を移動するには、 名前を別の位置にド ラ ッグ アンド ド ロ ップします。

• 仕切り を削除するには、 Delete キーを押すか、 または右ク リ ッ ク してポップアップ メニューから [Delete] をク

リ ッ ク します。

仕切りの名前も変更できます。 詳細は、 75 ページの 「オブジェク ト名の変更」 を参照してください。

仮想バスの定義

波形設定に仮想バスを定義できます。 仮想バスは、 論理スカラーおよびベクターをグループにまとめたものです。

仮想バスはバス波形を表示します。 バス波形の値は、 仮想バスの下に表示される順番で追加されたスカラーおよび

配列から対応する値を取り出して、 1 次元のベクターに平坦化するこ とによ り作成されます。

仮想バスを追加するには、 次の手順に従います。

1. 波形設定で、 仮想バスに追加する波形オブジェク ト を 1 つまたは複数選択します。

2. 右ク リ ッ ク して [New Virtual Bus] をク リ ッ ク します。

仮想バスは、 仮想バス アイコン で表されます。

Tcl コマンド : add_wave_virtual_bus

信号名やバス名をド ラ ッグ アンド ド ロ ップする と、 仮想バスに論理スカラーおよび配列を移動できます。

波形設定ファイルを保存する と、 新しい仮想バスとそれに含まれるものも保存されます。 また、 仮想バスの名前を

波形の別位置にド ラ ッグ アンド ド ロ ップして移動できます。

仮想バスの名前を変更するには、 75 ページの 「オブジェク ト名の変更」 を参照してください。

仮想バスを削除し、 その中に含まれるものをグループ解除するには、 仮想バスを選択して右ク リ ッ ク し、 [Ungroup]

をク リ ッ ク します。

注意: Delete キーを押すと、 仮想バス と、 それに含まれている HDL オブジェク トが波形設定から削除されます。

波形の解析

このセクシ ョ ンでは、 波形内のデータを解析する機能について説明します。

カーソルの使用

カーソルは一時的なタイム マーカーで、 2 つの波形エッジ間の時間を計測するため、 頻繁に移動させるこ とができ

ます。

ヒン ト : 波形設定ファイル (WCFG) には、 カーソル位置は記録されません。 複数の計測の時間軸を設定する場合やシ

ミ ュレーシ ョ ンでの重要なイベン ト を示す場合などは、 波形ウ ィンド ウにマーカーを追加して波形設定ファイルに

保存してください。 詳細は、 83 ページの 「マーカーの使用」 を参照してください。

ロジック シミ ュレーシ ョ ン 81UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 82: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

メイン カーソルと 2 つ目のカーソル

波形ウ ィンド ウを 1 回ク リ ッ クする と、 メ イン カーソルが配置されます。

2 つ目のカーソルを配置するには、 Ctrl キーを押しながら ク リ ッ ク し、 マウスを左または右にド ラ ッグします。 カー

ソルの上に位置を示すフラグが表示されます。 または、 Shift キーを押したまま波形のどこかをク リ ッ ク します。

2 つ目のカーソルがオンになっていない場合、 この操作によ り 2 つ目のカーソルがメ イン カーソルの現在の位置に

設定され、 メ イン カーソルがク リ ッ ク した位置に配置されます。

注記: 2 つ目のカーソルの位置を保持しながら メ イン カーソルの位置を変更するには、 Shift キーを押しながら ク リ ッ

ク します。 2 つ目のカーソルをド ラ ッグして配置する場合、 小間隔以上ド ラ ッグしないと 2 つ目のカーソルは表示

されません。

カーソルの移動

カーソルを移動するには、 ポインターが手のひらのマークになるまでマウスを動かし、 ク リ ッ ク して次の位置まで

カーソルをド ラ ッグします。

カーソルをド ラ ッグする と き、 [Snap to Transtion] がオンになっている と (デフォルト )、 白抜きの丸、 または中が塗り

つぶされた丸が表示されます。

• 白抜きの丸 は、 選択した信号の波形の遷移間にあるこ とを示します。

• 中が塗りつぶされた丸 は、 カーソルがマウスの下またはマーカーの波形の遷移にロッ ク されているこ とを

示します。

カーソル、 マーカー、 フロート しているルーラー以外の場所をク リ ッ クする と、 2 つ目のカーソルは非表示にな り

ます。

次または前の遷移の検索

波形ウ ィンド ウのサイ ドバーにあるボタンを使用して、 メ イン カーソルを、 選択されている波形の次の遷移または

前の遷移に移動できます。

メ イン カーソルを波形の次または前の遷移に移動するには、 次を実行します。

1. 波形の波形オブジェク ト名をク リ ッ ク してアクティブにします。

波形オブジェク トが選択され、 オブジェク トの波形が

通常よ り も太い線で表示されます。

2. サイ ドバーの [Next Transition] または [Previous Transition] ボタン をク リ ッ クするか、 キーボードの右方向

キーまたは左方向キーを使用して、 次または前の遷移に移動します。

ヒン ト : 複数の波形オブジェク ト を一緒に選択する と、 それらの波形の一番近い遷移に移動します。

ロジック シミ ュレーシ ョ ン 82UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 83: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

マーカーの使用

波形内の重要イベン ト を恒久的にマークする必要がある場合はマーカーを使用します。 マーカーを使用する と、

マーカーが付けられたイベン トに関連した時間を計測できます。

マーカーは、 次のよ うに追加、 移動、 削除できます。

• メ イン カーソルの位置に波形設定にマーカーを追加します。

a. 波形ウ ィンド ウの時間または遷移をク リ ッ ク して、 マーカーを追加する時間の箇所にメ イン カーソルを置

きます。

b. 右ク リ ッ ク して [Maker] → [Add Marker] を選択します。

カーソル位置にマーカーが配置されます。 マーカーがその位置に既にある場合は、 若干オフセッ ト されます。

マーカーの時間が上部に表示されます。

新しい波形マーカーを作成するには、 次の Tcl コマンドを使用します。

add_wave_marker <-filename> <-line_number>

• マーカーを波形ウ ィンド ウの別の位置に移動するには、 ド ラ ッグ アンド ド ロ ップします。 マーカー ラベル

(マーカー上部またはマーカー線) をク リ ッ ク してド ラ ッグします。

° ド ラ ッグ シンボル は、 マーカーが移動可能であるこ とを示します。 マーカーをド ラ ッグする際、

[Snap to Transtion] がオンになっている と (デフォルト )、 白抜きの丸または中が塗りつぶされた丸が表示さ

れます。

° 中が塗りつぶされている丸 は、 選択した信号の波形の遷移点、 または別のマーカー上であるこ とを示

します。

° マーカーの場合は、 丸は白く塗りつぶされています。

° 白抜きの丸 は、 マーカーがマウスの下またはマーカーの波形の遷移にロ ッ ク されているこ とを示し

ます。

新しい位置にマーカーをド ロ ップするには、 マウスのボタンを放します。

• 1 つのコマンドでマーカーを 1 つ、 またはすべて削除できます。 マーカーを右ク リ ッ ク して、 次のいずれかの操

作を実行します。

° マーカーを 1 つ削除するには、 ポップアップ メニューから [Delete Marker] をク リ ッ ク します。

° マーカーをすべて削除するには、 ポップアップ メニューから [Delete All Markers] をク リ ッ ク します。

注記: または、 Delete キーを使用して選択したマーカーを削除するこ と もできます。

コマンドの使用方法は、Vivado Design Suite のヘルプ (-help) または 『Vivado Design Suite Tcl コマンド リ ファレンス ガ

イ ド』 (UG835) [参照 7] を参照してください。

ロジック シミ ュレーシ ョ ン 83UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 84: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 5 章: Vivado シミ ュレータを使用したシミ ュレーシ ョ ン波形の解析

フロート ルーラーの使用

フロート ルーラーを使用する と、 波形ウ ィンド ウの上部にある標準ルーラーに表示される絶対シ ミ ュレーシ ョ ン時

間ではなく、 別の時間基準を使用して時間を計測できます。

フロート ルーラーの表示/非表示は切り替えるこ とができ、 波形ウ ィンド ウで垂直方向にド ラ ッグして位置を変更で

きます。 このルーラーの時間基準 (時間 0) は、 2 番目のカーソルか、 2 番目のカーソルがない場合は選択されたマー

カーです。

フロート ルーラー ボタン およびフロート ルーラーは、 2 番目のカーソルまたはたマーカーがある場合にのみ表

示されます。

1. ルーラーの表示/非表示を切り替えるには、 次のいずれかを実行します。

° 2 番目のカーソルを配置

° マーカーを選択

2. [Floating Ruler] ボタンをク リ ッ ク します。

この操作は初回のみ必要です。 それ以降は、 フロート ルーラーは、 2 番目のカーソルを置くか、 またはマー

カーを選択する と表示されます。

ルーラーを非表示にするには、 このコマンドをも う一度ク リ ッ ク します。

ロジック シミ ュレーシ ョ ン 84UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 85: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章

Vivado シミ ュレータを使用したデザインのデバッグ

概要

Vivado® シ ミ ュレータには次の機能があ り ます。

• ソース コードを確認

• ブレークポイン ト を設定し、 ブレークポイン トに達するまでシ ミ ュレーシ ョ ンを実行

• コード セクシ ョ ンをステップオーバー

• 波形オブジェク ト を特定値に設定

この章では、 デバッグ方法のほか、 デバッグ プロセスで有効な Tcl コマンドについても説明します。 また、 サード

パーティ シ ミ ュレータを使用したデバッグのフローについても説明します。

ソース レベルでのデバッグ

HDL ソース コードをデバッグする と、 デザインの予期しない動作を検出できます。 デバッグでは、 ソース コードの

実行を制御するこ とによ り、 問題の原因を見つけます。 デバッグで使用可能なス ト ラテジは、 次のとおりです。

• 1 行ずつステップ実行: 任意の開発段階で、 [Step] コマンドを使用して HDL ソース コードを 1 行ずつデバッグす

るこ とによ り、 デザインが意図どおりに動作するこ とを確認します。 コードの 1 つの行の実行が終了したら、

再び [Step] コマンドを実行して解析を続けます。 詳細は、 「シ ミ ュレーシ ョ ンのステップ実行」 を参照してくだ

さい。

• HDL コードの特定の行にブレークポイン ト を設定し、 ブレークポイン ト までシ ミ ュレーシ ョ ンを実行: 大型の

デザインでは、 HDL ソース コードの各行を実行するたびに停止する と時間がかかりすぎるので、 HDL ソース

コードの特定の位置にブレークポイン ト を設定し、 テス トベンチの 初またはデザインの現在の地点からシ

ミ ュレーシ ョ ンを実行したと きに各ブレークポイン トで停止するよ うにします。 停止後にシ ミ ュレーシ ョ ンを

続行するには、 [Step]、 [Run All]、 または [Run For] コマンドを使用します。 詳細は、 「ブレークポイン トの使用」

を参照してください。

• 条件を設定します。 ツールが各条件を評価し、 その条件が当てはまる場合は、 Tcl コマンドを実行します。 次の

コマンドを使用します。

add_condition <condition> <instruction>

詳細は、 88 ページの 「条件の追加」 を参照してください。

ロジック シミ ュレーシ ョ ン 85UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 86: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

シミ ュレーシ ョ ンのステップ実行

デザインが意図したとおりに動作するこ とを確認するため、 [Step] コマンドを使用して HDL ソース コードを 1 行ず

つ実行できます。

このコマンドが実行されているコード行はハイライ ト され、 矢印が表示されます。

ブレークポイン ト を作成して、 ステップ実行中に停止する箇所を増やすこ と もできます。 シ ミ ュレータでのデバッ

グ ス ト ラテジについては、 「ブレークポイン トの使用」 を参照して ください。

1. シ ミ ュレーシ ョ ンでステップ実行するには、 次の手順に従います。

° 現在の実行時間から [Run] → [Step] をク リ ッ クするか、 [Step] ボタンをク リ ッ ク します。

上位デザイン ユニッ トに関連付けられている HDL が波形ウ ィンド ウに新し く表示されます。

° 開始時間 (0ns) からシ ミ ュレーシ ョ ンを再開します。 [Restart] コマンドを使用する と、 テス トベンチの冒頭

に時間を リセッ トできます。 詳細は、 第 4 章 「Vivado シ ミ ュレータを使用したシ ミ ュレーシ ョ ン」 を参照

してください。

2. 波形ウ ィンド ウまたは HDL ファ イルのタブを右ク リ ッ ク して [Tile Horizontally] をク リ ッ ク し、 波形と HDL

コードを同時に表示します。

3. デバッグが終了するまで、 [Step] を繰り返します。

コマンドが 1 行ずつ実行され、 それに従って矢印がコードの下の方に移動していきます。 シ ミ ュレータが別のファ

イルの行を実行する場合は、 そのファイルが開き、 同様に実行されている行に矢印が表示されます。 ほとんどのシ

ミ ュレーシ ョ ンでは、 [Step] コマンドを実行している と きに複数のファイルが開くのが通常です。 Tcl コンソールに

も、 step コマンドの実行が HDL コードのどこまで進んだかが示されます。

ブレークポイン トの使用

ブレークポイン トは、 ユーザーが指定するソース コード内の停止点で、デザインをデバッグする際に使用できます。

ヒン ト : ブレークポイン トは、 [Step] コマンドで 1 行ずつ停止する と時間がかかりすぎてしま う よ う な大規模デザイ

ンをデバッグする場合に使用する と、 特に便利です。

シ ミ ュレータで HDL ソース コードにブレークポイン ト を設定し、 そのブレークポイン トに達するまでコードを連続

して実行するこ とができます。

注記: ブレークポイン トは実行可能なコードにのみ設定できます。 実行不可能なコードの行にブレークポイン ト を設

定しても、 ブレークポイン トは追加されません。

GUI でブレークポイン ト を設定する方法

1. シ ミ ュレーシ ョ ンを実行します。

2. ソース ファイルを表示して、 該当する行の左にある白抜きの丸をク リ ッ ク します。 ブレークポイン トが正し く

設定される と、 赤く塗りつぶされた丸になり ます。

この手順が終了する と、 シ ミ ュレーシ ョ ン ブレークポイン ト アイコンがコード行の横に表示されます。

ロジック シミ ュレーシ ョ ン 86UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 87: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

Tcl コンソールでブレークポイン ト を設定する方法

1. 次の Tcl コマンドを入力します。

add_bp <file_name> <line_number>

このコマンドによ り、 <file_name> の <line_number> にブレークポイン トが追加されます。 コマンドの使

用方法は、 コマンドのヘルプ (-help を使用) または 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』

(UG835) [参照 6] を参照してください。

ブレークポイン ト を使用してデザインをデバッグする方法

1. HDL ソース ファ イルを開きます。

2. HDL ソース ファ イルの実行可能な行にブレークポイン ト を設定します。

3. すべてのブレークポイン トが設定されるまで手順 1 および 2 を繰り返します。

4. 次の実行オプシ ョ ンを使用してシ ミ ュレーシ ョ ンを実行します。

° 初から実行する場合は、 [Run] → [Restart] をク リ ッ ク します。

° [Run] → [Run All] または [Run] → [Run For] コマンドを使用します。

シ ミ ュレーシ ョ ンがブレークポイン トに到達するまで実行され、 停止します。

HDL ソース ファ イルに矢印が表示され、 ブレークポイン トの停止ポイン トが示されます。

5. 手順 4 を繰り返して、 結果に満足するまでシ ミ ュレーシ ョ ンをブレークポイン ト ごとに進めていきます。

シ ミ ュレーシ ョ ンは、 HDL ソース ファ イルに設定した各ブレークポイン トで停止します。

デザイン デバッグ中には、 [Run] → [Step] コマンドを実行して 1 行ごとにコードを検証するこ とで、 さ らに詳細

にデザインを検証するこ と もできます。

HDL ソース コードから 1 つのブレークポイン ト またはすべてのブレークポイン ト を削除できます。

1 つのブレークポイン ト を削除するには、 [Breakpoint] ボタンをク リ ッ ク します。

すべてのブレークポイン ト を削除するには、 [Run] → [Delete All Breakpoints] をク リ ッ ク します。

または [Delete All Breakpoints] ボタンをク リ ッ ク します。

すべてのブレークポイン ト を削除するには、 次を入力します。

• remove_bps -all

ブレークポイン ト オブジェク トの指定した リ ス トに関するブレークポイン ト情報を取得するには、 次を入力します。

• report_bps

ロジック シミ ュレーシ ョ ン 87UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 88: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

条件の追加 ブレーク ポイン ト を条件に基づいて追加し、 診断メ ッセージを表示するには、 次のコマンドを使用します。

add_condition <condition> <message>

たとえば、 Vivado IDE の BFT サンプル デザインで、 wbClk 信号と reset の両方が 1 になったと きにシ ミ ュレーシ ョ ン

を停止して診断メ ッセージを出力するには、 シ ミ ュレーシ ョ ン開始時に次のコマンドを実行します。

add_condition {reset == 1 && wbClk == 1} {puts "Reset went to high"; stop}

BFT サンプル デザインは、 追加された条件によ り、 条件が満たされたと きにシ ミ ュレーシ ョ ンが 5ns 停止し、

「Reset went to high」 とい う メ ッセージがコンソールに表示されます。シ ミ ュレータは、次の step または run コ

マンドでシ ミ ュレーシ ョ ンが再開されるまで待機します。

シミ ュレーシ ョ ンの一時停止

シ ミ ュレーシ ョ ンを実行中に一時停止するには、 [Break] コマンドを使用します。 これによ り、 シ ミ ュレーシ ョ ン

セッシ ョ ンは開いたままになり ます。

シ ミ ュレーシ ョ ンを一時停止するには、 [Simulation] → [Break] をク リ ッ クするか、 [Break] ボタン をク リ ッ ク し

ます。

シ ミ ュレーシ ョ ンが次の実行可能な HDL 行で停止します。 シ ミ ュレーシ ョ ンの停止した行がテキス ト エディ ターで

表示されます。

注記: この動作は、 -debug <kind> オプシ ョ ンでコンパイルしたデザインにも適用されます。

[Run All]、 [Run]、 [Step] コマンドを使用する と、 シ ミ ュレーシ ョ ンを再開できます。 詳細は、 86 ページの 「シ ミ ュ

レーシ ョ ンのステップ実行」 を参照してください。

シミ ュレーシ ョ ン実行のト レース

シ ミ ュレーシ ョ ン実行中の各ソース行に関する注記を Tcl コンソールに表示できます。 このよ うに各行を表示するこ

とを 「行ト レース」 と呼びます。

行ト レースをオンにするには、 次のいずれかの Tcl コマンドを使用します。

ltrace on

set_property line_tracing true [current_sim]

行ト レースをオフにするには、 次のいずれかの Tcl コマンドを使用します。

ltrace off

set_property line_tracing false [current_sim]

ロジック シミ ュレーシ ョ ン 88UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 89: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

シ ミ ュレーシ ョ ン実行中の各プロセスに関する注記を Tcl コンソールに表示できます。 このよ うに各プロセスを表示

するこ とを 「プロセス ト レース」 と呼びます。

プロセス ト レースをオンにするには、 次のいずれかの Tcl コマンドを使用します。

ptrace on

set_property process_tracing true [current_sim]

プロセス ト レースをオフにするには、 次のいずれかの Tcl コマンドを使用します。

ptrace off

set_property process_tracing false [current_sim]

波形オブジェク ト を特定値に設定

force コマンドの使用

Vivado シ ミ ュレータでは、 信号、 ワイヤ、 レジスタを、 指定の時間に、 または指定の期間中、 特定の値に設定でき

ます。 また、 ある時間が経過した後にオブジェク トに適用する強制値も設定できます。

ヒン ト : force は、 ある信号に対し HDL で定義された動作を無効にするコマンドである と同時に、 Tcl のファース ト

ク ラス オブジェク トであ り、 Tcl 変数と して保存できます。

HDL 信号に対して force コマンドを使用する と、 HDL デザインで定義されている信号の動作を変更できます。 たと

えば、 信号の動作を次の目的で変更できます。

• HDL テス トベンチによ り駆動されていないテス トベンチ信号にスティ ミ ュラスを供給するため

• デバッグ中に無効な値を一時的に修正するため (問題の解析を継続できるよ うにするため)

使用可能な force コマンドは、 次のとおりです。

• 「[Force Constant] コマンド」

• 「[Force Clock] コマンド」

• 「[Remove Force] コマンド」

重要: restart コマンドを実行する と、 remove_force コマンドで削除されていない force がすべて保持されます。

シ ミ ュレーシ ョ ンを再び実行する と、 保持されている force が、 前回のシ ミ ュレーシ ョ ン実行と同じ絶対シ ミ ュレー

シ ョ ン時間で適用されます。

図 6-1 に、 次の add_force コマンドを実行したと きに、 その機能がどのよ うに適用されるかを示します。

add_force mySig {0 t1} {1 t2} {0 t3} {1 t4} {0 t5} -repeat_every tr -cancel_after tc

ロジック シミ ュレーシ ョ ン 89UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 90: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

このコマンドの詳細を表示するには、 Tcl コンソールに次を入力します。

add_force -help

[Force Constant] コマンド

[Force Constant] オプシ ョ ンを使用する と、 信号を定数値に固定し、 HDL コード内で割り当てられた値や前回適用さ

れた別の定数、 または [Force Clock] を変更できます。

[Force Constant] および [Force Clock] は、[Objects] ウ ィンド ウまたは波形ウ ィンド ウで右ク リ ッ ク して表示されるオプ

シ ョ ンです (図 6-2 を参照)。 または、 テキス ト エディ ターでソース コードを開いて使用できます。

ヒン ト : [Objects]、 [Sources]、 [Scopes] ウ ィンド ウでアイテムをダブルク リ ッ クする と、 テキス ト エディ ターが開き

ます。 テキス ト エディ ターの詳細は、 『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893) [参照 3] を

参照してください。

X-Ref Target - Figure 6-1

図 6-1: -add_force オプシ ョ ンを使用した結果

tc

tr

t1

t2

t3t4

t5

Current Time

ロジック シミ ュレーシ ョ ン 90UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 91: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

[Force Constant] をク リ ッ クする と、 [Force Constant] ダイアログ ボッ クス (図 6-3) が開き、 関連する値を入力できます。

[Force Constant] ダイアログ ボッ クスには、 次のオプシ ョ ンがあ り ます。

• [Signal name]: デフォルトの信号名 (選択したオブジェク トの完全パス名) を表示します。

• [Value radix]: 選択した信号の基数を指定します。 サポート されている基数タイプ (2 進数、 16 進数、 符号なしの

10 進数、 符号つきの 10 進数、 8 進数、 ASCII) のいずれかを選択できます。 GUI には、 基数設定に基づいた値の

入力のみが可能になり ます。 たとえば、 [Binary] を選択する と、 0 と 1 以外の数値は入力できません。

• [Force value]: 選択された基数基づいて強制する定数値を指定します。 基数の詳細は、 70 ページの 「基数」 およ

び 72 ページの 「基数およびアナログ波形の使用」 を参照して ください。

X-Ref Target - Figure 6-2

図 6-2: force 関連のコマンド

X-Ref Target - Figure 6-3

図 6-3: [Force Constant] ダイアログ ボックス

ロジック シミ ュレーシ ョ ン 91UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 92: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

• [Starting after time offset]: 指定した時間後に開始します。 デフォルトの開始時間は 0 です。 時間は、 10 や 10 ns の

よ うに、 文字列で指定できます。 単位を付けずに数値だけ入力する と、 Vivado シ ミ ュレータではデフォルト単

位の ns が使用されます。

• [Cancel after time offset]: 指定した時間後にキャンセルします。 時間は、 10 や 10 ns のよ うに、 文字列で指定でき

ます。 単位を付けずに数値だけ入力する と、 デフォルトのシ ミ ュレーシ ョ ン時間単位が使用されます。

Tcl コマンド :

add_force /testbench/TENSOUT 1 200 -cancel_after 500

[Force Clock] コマンド

[Force Clock] コマンドを使用する と、 ク ロ ッ ク信号のよ うに指定期間 2 つのステート間を指定レートで ト グルする値

を、 信号に割り当てるこ とができます。 [Objects] ウ ィンド ウで [Force Clock] コマンドをク リ ッ クする と、 [Force

Clock] ダイアログ ボッ クス (図 6-4) が開きます。

X-Ref Target - Figure 6-4

図 6-4: [Force Clock] ダイアログ ボックス

ロジック シミ ュレーシ ョ ン 92UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 93: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

[Force Clock] ダイアログ ボッ クスには、 次のオプシ ョ ンがあ り ます。

• [Signal name]: デフォルトの信号名 ([Object] ウ ィ ンド ウまたは波形で選択したアイテムの完全パス名) を表示し

ます。

ヒン ト : [Force Clock] コマンドは、 ク ロ ッ ク信号だけでなく、 任意の信号に適用して切り替わる値を定義できます。

• [Value radix]: 選択した信号の基数を指定します。 ド ロ ップダウン リ ス トから [Binary]、 [Hexadecimal]、 [Unsigned

Decimal]、 [Signed Decimal]、 [Octal]、 [ASCII] のいずれかを選択します。

• [Leading edge value]: ク ロ ッ ク パターンの 初のエッジを指定します。 [Value radix] で定義した基数が使用され

ます。

• [Trailing edge value]: ク ロ ッ ク パターンの 2 番目のエッジを指定します。 [Value radix] で定義した基数が使用され

ます。

• [Starting after time offset]: 現在のシ ミ ュレーシ ョ ンから指定した時間後に force コマンドを開始します。 デフォル

トの開始時間は 0 です。 時間は、 10 や 10 ns のよ うに、 文字列で指定できます。 単位を付けずに数値だけ入力す

る と、 デフォルトのユーザー単位が使用されます。

• [Cancel after time offset]: 現在のシ ミ ュレーシ ョ ンから指定した時間後に force コマンドをキャンセルします。 時

間は、 10 や 10 ns のよ うに、 文字列で指定できます。 単位を付けずに数値だけ入力する と、 デフォルトのシ

ミ ュレーシ ョ ン時間単位が使用されます。

• [Duty cycle (%)]: ク ロ ッ ク パルスがアクティブ ステートである時間の割合を % で指定します。 使用できる値は

0 ~ 100 で、 デフォルト値は 50 です。

• [Period]: ク ロ ッ ク パルスの長さを時間で指定します。 時間は、 10 や 10 ns のよ うに、 文字列で指定できます。

注記: 基数の詳細は、 70 ページの 「基数」 および 72 ページの 「基数およびアナログ波形の使用」 を参照してください。

Tcl コマンド例:

add_force /testbench/TENSOUT -radix binary {0} {1} -repeat_every 10ns -cancel_after 3us

[Remove Force] コマンド

オブジェク トから特定の force を削除するには、 次の Tcl コマンドを使用します。

remove_forces <force object>remove_forces <HDL object>

ロジック シミ ュレーシ ョ ン 93UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 94: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

バッチ モードでの Force コマンドの使用

次のコード例に、 add_force コマンドを使用して信号を指定の値に強制する方法を示します。 簡単な Verilog 回路

が提供されています。 初の例は、 add_force コマンドをインタラ クティブに使用する例を、 2 番目はスク リプ ト

を使用した例を示しています。

例 1: force の追加

Verilog コード (tmp.v)

次のコード例は Verilog 回路です。

module bot(input in1, in2,output out1);reg sel;assign out1 = sel? in1: in2;endmodule

module top;reg in1, in2;wire out1;bot I1(in1, in2, out1);initialbegin #10 in1 = 1'b1; in2 = 1'b0; #10 in1 = 1'b0; in2 = 1'b1;endinitial $monitor("out1 = %b\n", out1);endmodule

コマンド例

add_force の効果を観察するには、 次のコマンドを入力します。

xelab -vlog tmp.v -debug allxsim work.top

コマンド プロンプ トに次を入力します。

add_force /top/I1/sel 1run 10add_force /top/I1/sel 0run all

Tcl コマンド

add_force コマンドを使用する と、 信号、 ワイヤ、 またはレジスタを指定値に設定できます。

add_force [-radix <arg>] [-repeat_every <arg>] [-cancel_after <arg>] [-quiet] [-verbose] <hdl_object> <values>...

Tcl コマンドの詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 7] を参照してください。

ロジック シミ ュレーシ ョ ン 94UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 95: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

例 2: スクリプ トでの add_force と remove_forces の使用

Verilog コード (top.v)

次は、 カウンターをインスタンシエートする Verilog ファ イル top.v の例です。 このファイルは、 次のコマンド例で

使用できます。

module counter(input clk,reset,updown,output [4:0] out1);

reg [4:0] r1;

always@(posedge clk)begin if(reset) r1 <= 0; else if(updown) r1 <= r1 + 1; else r1 <= r1 - 1;end

assign out1 = r1;endmodule

module top;reg clk;reg reset;reg updown;wire [4:0] out1;

counter I1(clk, reset, updown, out1);

initialbegin reset = 1; #20 reset = 0;end

initialbegin updown = 1; clk = 0;end

initial #500 $finish;

initial $monitor("out1 = %b\n", out1);endmodule

ロジック シミ ュレーシ ョ ン 95UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 96: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

コマンド例

1. 次のコマンドを含む add_force.tcl という ファ イルを作成します。

create_project add_force -forceadd_files top.vset_property top top [get_filesets sim_1]set_property -name xelab.more_options -value {-debug all} -objects [get_filesets sim_1]set_property runtime {0} [get_filesets sim_1]launch_simulation -simset sim_1 -mode behavioraladd_wave /top/*

2. Vivado Design Suite を Tcl モードで起動して、 add_force.tcl ファ イルを読み込みます。

3. Tcl コンソールに次を入力します。

set force1 [add_force clk {0 1} {1 2} -repeat_every 3 -cancel_after 500]set force2 [add_force updown {0 10} {1 20} -repeat_every 30]run 100

out1 の値の増減を波形ウ ィンド ウで確認します。 start_gui コマンドを使用して、 Vivado IDE で波形を確認し

ます。

updown 信号の値を波形ウ ィンド ウで確認します。

4. Tcl コンソールに次を入力します。

remove_forces $force2run 100

out1 の値だけが増加したこ とを確認します。

5. Tcl コンソールに次を入力します。

remove_forces $force1run 100

clk 信号がト グルしないので、 out1 の値が変更していないこ とを確認します。

ロジック シミ ュレーシ ョ ン 96UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 97: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

Vivado シミ ュレータを使用した消費電力解析

SAIF (Switching Activity Interchange Format) は、 シ ミ ュレータ ツールで生成されたスイ ッチング アクティビティを抽

出して保存する ASCII 形式のレポートです。 このスイ ッチング アクティビティは、 ザイ リ ンクスの消費電力解析お

よび 適化ツールにバッ クアノテート して消費電力の測定および見積りに使用できます。

SAIF 出力は、 ザイ リ ンクス消費電力ツールおよび report_power Tcl コマンド用に 適化されています。 Vivado シ

ミ ュレータでは、 SAIF ファ イルに次の HDL タイプを記述できます。 詳細は、 『Vivado Design Suite ユーザー ガイ ド :

消費電力解析および 適化』 (UG907) [参照 8] のこのセクシ ョ ンを参照して ください。

• Verilog:

° 入力、 出力、 入出力ポート

° 内部ワイヤ宣言

• VHDL:

° std_logic、 std_ulogic、 および bit (スカラー、 ベクター、 配列) 型の入力、 出力、 入出力ポート

注記: タVivado Design Suite ではタイ ミ ング シ ミ ュレーシ ョ ン用の VHDL ネッ ト リ ス トは生成されないので、 VHDL

ソースは RTL レベルのコード専用で、 ネッ ト リ ス ト シ ミ ュレーシ ョ ンには使用できません。

RTL レベルのシ ミ ュレーシ ョ ンの場合、 ブロ ッ ク レベルのポートのみが生成され、 内部信号は生成されません。

サードパーティ シ ミ ュレータを使用した消費電力解析については、 第 3 章 「サードパーティ シ ミ ュレータを使用し

たシ ミ ュレーシ ョ ン」 の 「消費電力解析用の SAIF の出力」、 「IES での SAIF の出力」、 および 「VCS での SAIF の出

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

SAIF 出力の生成

log_saif コマンドを使用する前に、 open_saif を呼び出す必要があ り ます。 log_saif はオブジェク ト または値

を返しません。

1. RTL コードを -debug typical オプシ ョ ンを使用してコンパイルし、 SAIF 出力をイネーブルにします。

xelab -debug typical top -s mysim

2. 次の Tcl コマンドを使用して SAIF 出力を開始します。

open_saif <saif_file_name>

3. 次の Tcl コマンドのいずれかを入力して生成する範囲および信号を追加します。

log_saif [get_objects]

すべてのインスタンスを繰り返しログに記録するには、 次の Tcl コマンドを入力します。

log_saif [get_objects -r *]

4. run コマンドのいずれかを使用してシ ミ ュレーシ ョ ンを実行します。

5. シ ミ ュレーシ ョ ン データを SAIF 形式にインポートするには、 次を入力します。

close_saif

ロジック シミ ュレーシ ョ ン 97UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 98: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

SAIF コマンドの例

SAIF を記録するには、 次のコマンドを使用します。

• スコープ内のすべての信号: /tb: log_saif /tb/*

• スコープ内のすべてのポート : /tb/UUT

• a で始まって b で終わり、 ab 間に数字が含まれる名前のオブジェク ト : log_saif [get_objects -regexp {^a[0-9]+b$}]

• current_scope および children_scope のオブジェク ト : log_saif [get_objects -r *]

• current_scope のオブジェク ト : log_saif * or log_saif [get_objects]

• スコープ /tb/UUT のポートのみ:

log_saif [get_objects -filter {type == in_port || type == out_port || type == inout_port || type == port } /tb/UUT/* ]

• スコープ /tb/UUT の内部信号のみ:

log_saif [get_objects -filter { type == signal } /tb/UUT/* ]

ヒン ト : HDL オブジェク ト を必要とする Tcl コマンドすべてに、 このフ ィルター機能を使用できます。

Tcl シミ ュレーシ ョ ン バッチ ファイルを使用した SAIF の出力 sim.tcl:open_saif xsim_dump.saiflog_saif /tb/dut/*run allclose_saifquit

ロジック シミ ュレーシ ョ ン 98UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 99: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

Tcl コマンド report_drivers の使用

report_drivers Tcl コマンドを使用する と、 HDL オブジェク トの値を駆動している信号がレポート されます。 コ

マンド構文は次のとおりです。

report_drivers <hdl_object>

Tcl コンソールにド ライバーが表示され、wire または signal 型の HDL オブジェク トへの代入の右側に現在の駆動値が

表示されます。

[Objects] ウ ィンド ウまたは波形ウ ィンド ウのコンテキス ト メニュー、 あるいはテキス ト エディ ターから

report_drivers コマンドを呼び出すこ と もできます。 コンテキス ト メニューを開くには、 信号を右ク リ ッ ク し

て、 [Report Drivers] を選択します (次の図を参照)。 結果は Tcl コンソールに表示されます。

X-Ref Target - Figure 6-5

図 6-5: コンテキスト メニューの [Report Drivers] コマンド オプシ ョ ン

ロジック シミ ュレーシ ョ ン 99UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 100: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

VCD 機能の使用

シ ミ ュレーシ ョ ン出力を記録するには、 VCD (Value Change Dump) ファ イルを使用できます。 Tcl コマンドは、 出力

される値に関連する Verilog システム タスクに基づきます。

VCD 機能では、 次の表にリ ス ト される Tcl コマンドで Verilog システム タスクが記述されます。

詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 6] を参照するか、 Tcl コンソールに次

を入力してください。

<command> -help

例:

open_vcd xsim_dump.vcdlog_vcd /tb/dut/*run allclose_vcdquit

詳細は、 付録 G の 「Verilog 言語サポートの例外」 を参照してください。

VCD データを使用して、 シ ミ ュレーシ ョ ン エラーをデバッグするためにシ ミ ュレータの出力を検証できます。

表 6-1: VCD の Tcl コマンド

Tcl コマンド 説明

open_vcd シ ミ ュレーシ ョ ン出力を取り込むための VCD ファ イルを開きます。 $dumpfile

Verilog システム タスク と同様の操作を実行します。

checkpoint_vcd $dumpall Verilog システム タスク と同様の操作を実行します。

start_vcd $dumpon Verilog システム タスク と同様の操作を実行します。

log_vcd 指定した HDL オブジェク トの VCD ファ イルを記録します。$dumpvars Verilog シ

ステム タスク と同様の操作を実行します。

flush_vcd $dumpflush Verilog システム タスク と同様の操作を実行します。

limit_vcd $dumplimit Verilog システム タスク と同様の操作を実行します。

stop_vcd $dumpoff Verilog システム タスク と同様の操作を実行します。

close_vcd VCD の生成を閉じます。

ロジック シミ ュレーシ ョ ン 100UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 101: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

Tcl コマンド log_wave の使用

log_wave コマンドを実行し、 Vivado シ ミ ュレータの波形ビューアーで指定した HDL オブジェク ト を表示するため

に、 シ ミ ュレーシ ョ ン出力を記録できます。 add_wave とは異なり、 log_wave コマンドでは波形ビューアー (波形

設定) に波形オブジェク トは追加されず、 Vivado シ ミ ュレータの波形データベース (wdb) への出力が記録されるよ う

になるだけです。

ヒン ト : オブジェク ト挿入以前のオブジェク ト値を表示するには、 シ ミ ュレーシ ョ ンを実行し直す必要があ り ます。

値がないためにシ ミ ュレーシ ョ ンを再実行するのを避けるには、 シ ミ ュレーシ ョ ン run を開始する と きに、

log_wave -r / Tcl コマンドを実行してデザインの表示可能な HDL オブジェク トすべての値を取り込みます。

構文:

log_wave [-recursive] [-r] [-quiet] [-verbose] <hdl_objects>...

Tcl コマンド log_wave の使用例

波形出力を記録するには、 次を使用します。

• デザイン内のすべての信号 (代替の 上位モジュールのものを除く ):

log_wave -r /

• スコープ /tb 内のすべての信号:

log_wave /tb/*

• a で始まって b で終わり、 ab 間に数字が含まれる名前のオブジェク ト :

log_wave [get_objects -regexp {^a[0-9]+b$}]

• 現在のスコープおよびすべての下位スコープ内のすべてのオブジェク ト :

log_wave -r *

• 現在のスコープ内のオブジェク ト :

log_wave *

• スコープ /tb/UUT のポートのみ:

log_wave [get_objects -filter {type == in_port || type == out_port || type == inout_port || type == port} /tb/UUT/*]

• スコープ /tb/UUT の内部信号のみ:

log_wave [get_objects -filter {type == signal} /tb/UUT/*]

信号順、 名前形式、 基数、 色などの波形設定は、 必要に応じて波形設定 (WCFG) ファ イルに保存されます。 詳細は、

第 5 章 「Vivado シ ミ ュレータを使用したシ ミ ュレーシ ョ ン波形の解析」 を参照して ください。

ロジック シミ ュレーシ ョ ン 101UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 102: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 6 章: Vivado シミ ュレータを使用したデザインのデバッグ

[Objects] ウィンドウ、 波形ウィンドウ、 テキスト エディ ターでの信号のクロスプローブ

Vivado シ ミ ュレータでは、 [Objects] ウ ィンド ウ、 波形ウ ィンド ウ、 テキス ト エディ ターにある信号に対し、 ク ロス

プローブを実行できます。

[Objects] ウ ィンド ウから波形ウ ィンド ウに信号が表示されているかど うかを確認でき、 またはその逆も可能です。

信号を右ク リ ッ ク して次の図に示すコンテキス ト メニューを開き、 [Show in Wave Window] をク リ ッ クするか、 信号

がまだ波形ウ ィンド ウに表示されていない場合は [Add to Wave Window] をク リ ッ ク します。

テキス ト エディ ターで信号をクロスプローブするこ と もできます。 信号を右ク リ ッ ク して次の図に示すコンテキス

ト メニューを開き、 [Add to Wave Window]、 [Show in Waveform]、 または [Show in Objects] をク リ ッ ク します。 波形

ウ ィンド ウまたは [Objects] ウ ィンド ウで信号がハイライ ト されます。

X-Ref Target - Figure 6-6

図 6-6: [Objects] ウィンドウのコンテキスト メニュー

ロジック シミ ュレーシ ョ ン 102UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 104: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章

Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

概要

この章では、 コマンド ラ インでのコンパイルおよびシ ミ ュレーシ ョ ン プロセスについて説明します。

Vivado では統合シ ミ ュレーシ ョ ン フローがサポート されており、 IDE から Vivado シ ミ ュレータまたはサードパー

ティ シ ミ ュレータを起動できますが、 システム レベルのシ ミ ュレーシ ョ ンや UVM のよ うな高度な検証など、 検証

環境でシ ミ ュレーシ ョ ンをバッチ モードまたはスク リプ ト モードを実行する場合も多くあ り ます。 Vivado Design

Suite では、 Vivado シ ミ ュレータでのバッチまたはスク リプ ト モードのシ ミ ュレーシ ョ ンがサポート されます。

この章では、 必要なデザイン ファ イルを集めてターゲッ ト シ ミ ュレータ用のシ ミ ュレーシ ョ ン スク リプ ト を生成

し、 バッチ モードでシ ミ ュレーシ ョ ンを実行するプロセスについて説明します。 シ ミ ュレーシ ョ ン スク リプ トは、

上位 HDL デザインに対して、 または階層モジュール、 Manage IP プロジェク ト 、 Vivado IP からのブロ ッ ク デザイ

ン用に生成できます。 バッチ シ ミ ュレーシ ョ ンは、 プロジェク ト フローと非プロジェク ト スク リプ ト ベース フ

ローの両方でサポート されます。

シミュレーション ファイルとスクリプトのエクスポート

ビヘイビアー シ ミ ュレーシ ョ ンまたはタイ ミ ング シ ミ ュレーシ ョ ンをコマンド ラ インから実行するには、 次の手順

を実行する必要があ り ます。

1. デザイン ファイルの識別と解析

2. 実行可能なシ ミ ュレーシ ョ ン スナップシ ョ ッ トのエラボレート と生成

3. 実行可能なスナップシ ョ ッ ト を使用したシ ミ ュレーシ ョ ンの実行

Vivado Design Suite に含まれる [Export Simulation] コマンドを使用する と、 シ ミ ュレーシ ョ ンに必要なデザイン ファ

イルをすばやく集めて、 上位 RTL デザインまたは下位デザインのシ ミ ュレーシ ョ ン スク リプ ト を生成できます。

export_simulation コマンドでは、 サポート されるサードパーティ シ ミ ュレータすべて、 またはユーザーの選択

したターゲッ ト シ ミ ュレータのスク リプ トが生成されます。

Vivado IDE で [File] → [Export] → [Export Simulation] をク リ ッ ク し、 [Export Simulation] ダイアログ ボッ クス (105 ペー

ジの図 7-1) を開きます。

ロジック シミ ュレーシ ョ ン 104UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 105: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

[Export Simulation] コマンドは、 サポート されるすべてのシ ミ ュレータまたは指定したターゲッ ト シ ミ ュレータに対

してシ ミ ュレーシ ョ ン スク リプ ト ファ イルを生成します。 生成されるスク リプ トには、 デザインをコンパイル、 エ

ラボレート、 およびシ ミ ュレーシ ョ ンするシ ミ ュレータ コマンドが含まれます。

[Export Simulation] ダイアログ ボッ クスには、 次のオプシ ョ ンが含まれます。

• [Target simulator]: コマンド ラ イン スク リプ ト を生成するシ ミ ュレータを指定します。 Vivado シ ミ ュレータまた

はサポート されるサードパーティ シ ミ ュレータを選択できます。 詳細は、 第 3 章 「サードパーティ シ ミ ュレー

タを使用したシ ミ ュレーシ ョ ン」 を参照してください。

注記: Windows OS の場合は、 Windows で実行されるシ ミ ュレータに対してのみスク リプ トが生成されます。

• [Compiled library location]: [Export Simulation] コマンドで生成されるスク リプ ト を使用してシ ミ ュレーシ ョ ンを実

行するには、 compile_simlib Tcl コマンドを使用してシ ミ ュレーシ ョ ン ライブラ リ をコンパイルする必要があ り

ます。 生成されるスク リプ トでは、 コンパイル ラ イブラ リ ディ レク ト リからターゲッ ト シ ミ ュレータに必要な

セッ ト アップ ファ イルが自動的に含まれます。 詳細は、 14 ページの 「シ ミ ュレーシ ョ ン ライブラ リのコンパイ

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

ヒン ト : [Export Simulation] を実行する際は、 常に [Compile library location] にパスを指定しておく こ とをお勧めしま

す。 これによ り、 スク リプ トが常に正しいシ ミ ュレーシ ョ ン ラ イブラ リ をポイン トするよ うにな り ます。

• [Export directory]: [Export Simulation] で生成されるスク リプ トの出力ディ レク ト リ を指定します。 デフォルトで

は、 シ ミ ュレーシ ョ ン スク リプ トが現在のプロジェク トのローカル ディ レク ト リに出力されます。

• [Overwrite files]: 同じ名前のファイルが既に存在している場合でも、 新しいファイルを作成します。

• [Use absolute paths]: デフォルトでは、 生成したスク リプ トのソース ファ イルとディ レク ト リ パスは、 スク リプ

トで定義される基準ディ レク ト リに相対したものになり ます。 このオプシ ョ ンを使用する と、 スク リプ ト内の

ファイル パスが相対パスではなく、 絶対パスで記述されます。

• [Copy source files to export directory]: デザイン ファ イルを出力ディ レク ト リにコピーします。 これによ り、 シ

ミ ュレーシ ョ ン ソース ファ イルと生成されたスク リプ トがコピーされ、 シ ミ ュレーシ ョ ン フォルダー全体が移

植しやすくなり ます。

X-Ref Target - Figure 7-1

図 7-1: [Export Simulation] ダイアログ ボックス

ロジック シミ ュレーシ ョ ン 105UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 106: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

• [Command]: [Export Simulation] ダイアログ ボッ クスで指定したさまざまなオプシ ョ ンおよび設定によ り実行され

る export_simulation コマンドの Tcl コマンド構文を表示します。

[Export Simulation] コマンドでは、 プロジェク ト と非プロジェク トの両方のデザインがサポート されます。 Verilog の

‘defines および ‘include ディレク ト リのクエ リ以外は現在のプロジェク トからのプロパティは読み込まれず、

ダイアログ ボッ クスまたは export_simulation コマンド オプシ ョ ンから指示子が取得されます。 必要な結果を

取得するには、 適切なオプシ ョ ンを指定する必要があ り ます。 また、 上位デザインで使用されるすべての IP およ

びブロ ッ ク デザインの出力ファイルが必要です。

重要: export_simulation コマンドでは、 IP およびブロ ッ ク デザインの出力ファイルがない場合に、 それらが自

動的に生成されるこ とはなく、 エラー メ ッセージが表示されるか、 実行が停止されます。

[Export Simulation] ダイアログ ボッ クスで [OK] をク リ ッ クする と、 指定したデザイン オブジェク ト ( 上位デザイ

ン、 階層モジュール、 IP コア、 Vivado IP インテグレーターからのブロ ッ ク デザイン、 または複数 IP を含む Manage

IP プロジェク ト ) をシ ミ ュレーシ ョ ンするのに必要なデザイン ファ イルすべてのシ ミ ュレーシ ョ ン コンパイル順が

取得されます。 必要なデザイン ファ イルのシ ミ ュレーシ ョ ン コンパイル順は、 ターゲッ ト シ ミ ュレータのコンパイ

ラ コマンドおよびオプシ ョ ンを含めてシェル スク リプ トにエクスポート されます。

シ ミ ュレーシ ョ ン スク リプ トは [Export Simulation] ダイアログ ボッ クスで指定したエクスポート ディ レク ト リの個

別フォルダーに生成されます。 指定したシ ミ ュレータごとに個別のフォルダーが作成され、 そのシ ミ ュレータ用の

compile、 elaborate、 および simulate スク リプ トが出力されます。

[Export Simulation] コマンドで生成されたスク リプ トでは、 3 段階のプロセス (解析/コンパイル、 エラボレート、 シ

ミ ュレーシ ョ ン) が使用されます。 これは、 Vivado シ ミ ュレータを含め、 多くのシ ミ ュレータに共通していますが、

ModelSim の場合は、 生成されたスク リプ トでツールが必要とする 2 段階のプロセス (コンパイルとシ ミ ュレーシ ョ

ン) が使用されます。

ヒン ト : Questa または Aldec シ ミ ュレータで 2 段階のプロセスを使用するには、 ModelSim 用に生成されたスク リプ ト

を必要に応じて変更してください。

[Export Simulation] コマンドでは、 ファ イルセッ ト または IP からのデータ ファ イルが指定したエクスポート ディ レ

ク ト リにコピーされます。 デザインに Verilog ソースが含まれる場合は、 生成されたスク リプ トによ り glbl.v も

Vivado ソフ ト ウェア インス トール パスから出力ディレク ト リにコピーされます。

[Export Simulation] コマンドの Tcl コマンド例

set_property export.sim.base_dir C:/Data/project_wave1 [current_project]export_ip_user_files -no_script -forceexport_simulation -directory "C:/Data/project_wave1" -simulator all

ダイアログ ボッ クスから [Export Simulation] コマンドを実行する と、 Vivado IDE では、 実際にはエクスポート された

スク リプ トのベース ディレク ト リ を定義するコマンド シーケンスが実行され、 IP ユーザー ファ イルがエクスポート

されてから、 export_simulation コマンドが実行されます。

Vivado IDE では export_ip_user_files コマンドが自動的に実行され、コア コンテナーおよびコア コンテナー以

外の IP 両方のシ ミ ュレーシ ョ ンをサポートするのに必要なすべてのファイルとブロ ッ ク デザインが使用可能になり

ます。詳細は、『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』 (UG896) [参照 2] のこのセクシ ョ ンを参照し

てください。export_ip_user_files は [Export Simulation] ダイアログ ボッ クスを使用する と自動的に実行されま

すが、 export_simulation コマンドを使用する場合は実行前に必ず手動で実行するよ うにしてください。

ロジック シミ ュレーシ ョ ン 106UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 107: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

ヒン ト : Vivado IDE で export_ip_user_files コマンドが自動的に実行される際、 -no_script が指定されます。

これは、 上位デザインで使用される個別の IP およびブロ ッ ク デザインに対してシ ミ ュレーシ ョ ン スク リプ トが生

成される と コマンドの実行時間がかなり長くなるので、 生成されないよ うにするためです。 個別の IP およびブロ ッ

ク デザインのシ ミ ュレーシ ョ ン スク リプ ト を生成する場合は、 特定のオブジェク ト (-of_objects) に対して

export_ip_user_files を実行するか、 -no_script オプシ ョ ンを使用しないよ うにします。

export_ip_user_files コマンドでは、 シ ミ ュレーシ ョ ンおよび合成に必要な IP およびブロ ッ ク デザインのユー

ザー ファ イル環境が設定されます。 このコマンドでは、 インスタンシエーシ ョ ン テンプレート、 サードパーティ合

成ツールで使用するスタブ ファ イル、 ラ ッパー ファ イル、 メモ リ初期化ファイル、 およびシ ミ ュレーシ ョ ン スク リ

プ ト を含む ip_user_files という フォルダーが作成されます。

export_ip_user_files コマンドでは、 プロジェク ト内のすべての IP およびブロ ッ ク デザインで共有されるス

タティ ッ ク シ ミ ュレーシ ョ ン ファ イルもま とめられ、 ipstatic フォルダーにコピーされます。 プロジェク ト内の

複数の IP およびブロッ ク デザイン間で共有される IP ファ イルの多くは、 特定のカスタマイズ IP 用に変更されるこ

とはあ り ません。 これらのスタティ ッ ク ファ イルは ipstatic ディレク ト リにコピーされます。 シ ミ ュレーシ ョ ン

用に作成されたスク リプ トは、 このディ レク ト リの共有ファイルを必要に応じて参照します。 カスタマイズ IP に特

有のダイナミ ッ ク シ ミ ュレーシ ョ ン ファ イルは、 IP フォルダーにコピーされます。 詳細は、 『Vivado Design Suite

ユーザー ガイ ド : IP を使用した設計』 (UG896) [参照 2] の このセクシ ョ ンを参照してください。

重要: export_simulation コマンドで生成されるスク リプ トおよびファイルでは ip_user_files ディレク ト リ

のファ イルが指定されます。 export_simulation コマンド よ り も前に export_ip_user_files を実行しない

と、 シ ミ ュレーシ ョ ン エラーが発生する可能性があ り ます。

最上位デザインのエクスポート

上位 RTL デザインのシ ミ ュレーシ ョ ン スク リプ ト を作成するには、 export_simulation コマンドを使用し、

シ ミ ュレーシ ョ ン ファ イル オブジェク ト を指定します。 次の例では、 シ ミ ュレーシ ョ ン ファ イルセッ トは sim_1

で、 export_simulation によ りデザイン内のすべての RTL エンティティ、 IP、 およびブロ ッ ク デザイン オブ

ジェク トに対してシ ミ ュレーシ ョ ン スク リプ トが作成されます。

export_ip_user_files -no_scriptexport_simulation -of_objects [get_filesets sim_1] -directory C:/test_sim \-simulator questa

ザイリンクス カタログおよびブロック デザインからの IP のエクスポート

IP または Vivado IP インテグレーター ブロ ッ ク デザインのスク リプ ト を生成するには、 IP またはブロ ッ ク デザイン

オブジェク トに対してコマンドを実行します。

export_ip_user_files -of_objects [get_ips blk_mem_gen_0] -no_script -forceexport_simulation -simulator ies -directory ./export_script \-of_objects [get_ips blk_mem_gen_0]

または、 デザイン内のすべての IP およびブロッ ク デザインの ip_user_files をエクスポート します。

export_ip_user_files -no_script -forceexport_simulation -simulator ies -directory ./export_script

ロジック シミ ュレーシ ョ ン 107UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 108: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

ブロ ッ ク デザイン オブジェク トのシ ミ ュレーシ ョ ン スク リプ ト を生成するこ と もできます。

export_ip_user_files -of_objects [get_files base_microblaze_design.bd] \-no_script -force export_simulation -of_objects [get_files base_microblaze_design.bd] \-directory ./sim_scripts

重要: 上位デザインで使用されるすべての IP およびブロ ッ ク デザインの出力ファイルが必要です。

export_simulation コマンドでは、 IP およびブロ ッ ク デザインの出力ファイルがない場合に、 それらが自動的に

生成されるこ とはなく、 エラー メ ッセージが表示されるか、 実行が停止します。

Manage IP プロジェク トのエクスポート

Manage IP プロジェク トには、 カスタマイズした IP を集めた リポジ ト リ を作成して管理する機能があ り ます。

Manage IP プロジェク トの詳細は、 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』 (UG896) [参照 2] のこの

セクシ ョ ンを参照してください。 Manage IP プロジェク トの IP 出力ファイルを生成する と、 前述のよ うに、

export_ip_user_files コマンドを使用して各 IP のシ ミ ュレーシ ョ ン スク リプ ト も生成されます。

上記の Manage IP プロジェク トには、 blk_mem_gen_0、 c_addsub_0、 fifo_generator_0、 xdma_0 という 4 つ

のカスタマイズ IP が含まれています。 このプロジェク トの場合、 Vivado Design Suite で次の図のよ うに

ip_user_files フォルダーが作成されます。

X-Ref Target - Figure 7-2

図 7-2: Manage IP プロジェク ト

ロジック シミ ュレーシ ョ ン 108UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 109: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

ip_user_files フォルダーは、 前述のよ うに export_ip_user_files コマンドを実行する と生成されます。

Manage IP プロジェク トでこのコマンドを実行する と、 プロジェク ト内のすべての IP が処理され、 IP の合成および

シ ミ ュレーシ ョ ンに必要なスク リプ トおよびその他のファイルが生成されます。 ip_user_files フォルダーには、

バッチ シ ミ ュレーシ ョ ンに使用されるスク リプ トのほか、 シ ミ ュレーシ ョ ンのサポートに必要なダイナミ ッ クおよ

びスタティ ッ ク IP ファ イルが含まれます。

ユーザーのターゲッ ト シ ミ ュレータまたはすべてのサポート されるシ ミ ュレータ用のシ ミ ュレーシ ョ ン スク リプ ト

は、 109 ページの図 7-3 に示すよ うに ./sim_scripts に含まれます。 ターゲッ ト シ ミ ュレータのフォルダーに移動

し、 compile、 elaborate、 および simulate スク リプ ト をシ ミ ュレーシ ョ ン フローに組み込むこ とができます。

Vivado ツールでは、 デザイン内の複数の IP およびブロ ッ ク デザインで使用されるすべての共有シ ミ ュレーシ ョ ン

ファ イルが ./ipstatic という 1 つのフォルダーにまとめられます。 カスタマイズ IP の特性によって異なるダイナ

ミ ッ ク ファ イルは、 ./ip フォルダーに含まれます。

ヒン ト : Manage IP プロジェク トのすべての IP をエクスポートするだけでなく、 107 ページの 「ザイ リ ンクス カタロ

グおよびブロ ッ ク デザインからの IP のエクスポート 」 の手順を使用する と、プロジェク トで個別 IP のスク リプ ト を

生成できます。

X-Ref Target - Figure 7-3

図 7-3: Manage IP のディ レク ト リ構造

ロジック シミ ュレーシ ョ ン 109UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 110: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

バッチ モードでの Vivado シミ ュレータの実行

バッチ モードまたはスク リプ ト モードで実行するため、 Vivado シ ミ ュレータは export_simulation コマンドで

生成されるファ イルでサポート される 3 つのプロセスに依存します。

• 「デザイン ファイル、 xvhdl および xvlog の解析」

• 「デザイン スナップシ ョ ッ トのエラボレートおよび生成 (xelab)」

• 「デザイン スナップシ ョ ッ トのシ ミ ュレーシ ョ ン (xsim)」

タイ ミ ング シ ミ ュレーシ ョ ンの場合は、 次に示すよ うに、 シ ミ ュレーシ ョ ンを終了するのに次の追加手順および

データが必要となり ます。

• 第 2 章の 「タイ ミ ング ネッ ト リ ス トの生成」

• 128 ページの 「合成後およびインプリ メンテーシ ョ ン後のシ ミ ュレーシ ョ ン」

デザイン ファイル、 xvhdl および xvlog の解析

xvhdl および xvlog コマンドは、 それぞれ VHDL および Verilog ファ イルを解析します。 各オプシ ョ ンの詳細は、

117 ページの表 7-2 を参照してください。

xvhdl

xvhdl コマンドは VHDL アナライザー (パーサー ) です。

xvhdl の構文

xvhdl [-encryptdumps] [-f [-file] <filename>][-h [-help][-initfile <init_filename>][-L [-lib] <library_name> [=<library_dir>]][-log <filename>][-nolog] [-prj <filename>][-relax][-v [verbose] [0|1|2]][-version] [-work <library_name> [=<library_dir>][-incr][-2008][-93_mode]

このコマンドは VHDL ソース ファ イルを解析し、 解析済みデータをディ スクの HDL ライブラ リに保存します。

xvhdl の例

xvhdl file1.vhd file2.vhdxvhdl -work worklib file1.vhd file2.vhdxvhdl -prj files.prj

ロジック シミ ュレーシ ョ ン 110UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 111: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

xvlog

xvlog コマンドは Verilog パーサーです。 Verilog ソース ファ イルを解析し、 解析済みデータをディ スクの HDL ラ イ

ブラ リに保存します。

xvlog の構文

xvlog [-d [define] <name>[=<val>]][-encryptdumps][-f [-file] <filename>][-h [-help]][-i [include] <directory_name>][-initfile <init_filename>][-L [-lib] <library_name> [=<library_dir>]][-log <filename>][-nolog][-noname_unamed_generate][-relax][-prj <filename>][-sourcelibdir <sourcelib_dirname>][-sourcelibext <file_extension>][-sourcelibfile <filename>][-sv][-v [verbose] [0|1|2]][-version] [-work <library_name> [=<library_dir>][-incr]

xvlog の例

xvlog file1.v file2.vxvlog -work worklib file1.v file2.vxvlog -prj files.prj

注記: xelab、 xvlog、 xvhdl は Tcl コマンドではあ り ません。 xvlog、 xvhdl、 xelab は Vivado に依存しないコンパイラ実

行ファイルなので、 対応する Tcl コマンドはあ り ません。

シ ミ ュレーシ ョ ンの開始は Vivado に依存しているので、 Tcl コマンドの xsim で実行します。

シ ミ ュレーシ ョ ンを Vivado 外で実行するため、 xsim と同じ名前の実行ファイルが提供されます。 xsim 実行ファイ

ルは Vivado をプロジェク トのないモードで開始し、 Tcl コマンドの xsim を実行してシ ミ ュレーシ ョ ンを開始しま

す。 このため、 Vivado IDE 内から xvlog、 xvhdl、 xelab フォームのヘルプを表示する場合は、 コマンドの前に exec と

付けてください。

例: exec xvlog –help

xsim のヘルプを表示するには、 xsim -help と入力します。

ロジック シミ ュレーシ ョ ン 111UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 112: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

デザイン スナップシ ョ ッ トのエラボレートおよび生成 (xelab)Vivado シ ミ ュレータを使用するシ ミ ュレーシ ョ ンは、 次の 2 段階で実行されます。

• 初の段階では、 シ ミ ュレータ コンパイラ xelab によ り、 HDL モデルがスナップシ ョ ッ トにコンパイルされま

す。 スナップシ ョ ッ トは、 シ ミ ュレータが実行できる形式でモデルを表記したものです。

• 次に、 そのモデルをシ ミ ュレーシ ョ ンするため、 シ ミ ュレータでそのスナップシ ョ ッ トが読み込まれ、 実行さ

れます (xsim コマンドを使用)。 非プロジェク ト モードでは、 初の段階を飛ばして 2 番目の段階のみを繰り返

すと、 スナップシ ョ ッ ト を再利用できます。

シ ミ ュレータでスナップシ ョ ッ トが作成される と、 モデルの 上位モジュールの名前に基づいてスナップシ ョ ッ ト

名が付けられますが、 コンパイラに対するオプシ ョ ンと してスナップシ ョ ッ ト名を指定するこ と もできます。 ス

ナップシ ョ ッ ト名は、 ディ レク ト リ または SIMSET 内で重複しないよ うにします。 デフォルトでもカスタムでも、 同

じスナップシ ョ ッ ト名を使用する と、 前に構築されたスナップシ ョ ッ トが上書きされます。

重要: 同じディレク ト リ または SIMSET 内で同じスナップシ ョ ッ ト名を使用して、 2 つのシ ミ ュレーシ ョ ンを実行す

るこ とはできません。

xelab

xelab コマンドは、 指定した 上位ユニッ トに対して次を実行します。

• 言語結合ルールおよび -L <library> コマンド ラインで指定した HDL ライブラ リのどちらかを使用して、 下

位デザイン ユニッ ト を読み込みます。

• デザインのスタティ ッ ク エラボレーシ ョ ン (パラ メータの設定、 ジェネ リ ッ クの処理、 generate 文の実行など)

を実行します。

• 実行可能なコードを生成します。

• 生成された実行可能コードをシ ミ ュレーシ ョ ン カーネル ライブラ リに リ ンク して、 実行可能なシ ミ ュレーシ ョ

ン スナップシ ョ ッ ト を作成します。

この後、 xsim コマンドのほかのオプシ ョ ンと共に、 出力された実行可能なシ ミ ュレーシ ョ ンのスナップシ ョ ッ ト名

をオプシ ョ ンと して指定します。

ヒン ト : xelab は解析コマンドの xvlog および xvhdl を暗示的に呼び出すこ とができます。 解析手順を組み込むに

は、 xelab -prj オプシ ョ ンを使用します。 プロジェク ト ファ イルの詳細は、 125 ページの 「プロジェク ト ファ イ

ル (.prj) の構文」 を参照してください。

注記: xelab、 xvlog、 xvhdl は Tcl コマンドではあ り ません。 xvlog、 xvhdl、 xelab は Vivado に依存しないコンパイラ実

行ファイルなので、 対応する Tcl コマンドはあ り ません。

ロジック シミ ュレーシ ョ ン 112UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 113: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

xelab コマンド構文オプシ ョ ン

各オプシ ョ ンの詳細は、 117 ページの表 7-2 を参照してください。

xelab [-d [define] <name>[=<val>][-debug <kind>][-f [-file] <filename>][-generic_top <value>][-h [-help][-i [include] <directory_name>][-initfile <init_filename>][-log <filename>][-L [-lib] <library_name> [=<library_dir>][-maxdesigndepth arg][-mindelay][-typdelay][-maxarraysize arg][-maxdelay][-mt arg][-nolog][-noname_unnamed_generate][-notimingchecks][-nosdfinterconnectdelays][-nospecify][-O arg][-Odisable_acceleration arg][-Odisable_always_combine][-Odisable_pass_through_elimination][-Odisable_process_opt][-Odisable_unused_removal][-Oenable_cdfg][-Odisable_cdfg][-Oenable_always_combine][-Oenable_pass_through_elimination][-Oenable_unused_removal][-override_timeunit][-override_timeprecision][-prj <filename>][-pulse_e arg][-pulse_r arg][-pulse_int_e arg][-pulse_int_r arg][-pulse_e_style arg][-r [-run]][-R [-runall[-rangecheck][-relax][-s [-snapshot] arg][-sdfnowarn][-sdfnoerror][-sdfroot <root_path>][-sdfmin arg][-sdftyp arg][-sdfmax arg][-sourcelibdir <sourcelib_dirname>][-sourcelibext <file_extension>][-sourcelibfile <filename>]

ロジック シミ ュレーシ ョ ン 113UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 114: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

[-stats][-timescale][-timeprecision_vhdl arg][-transport_int_delays][-v [verbose] [0|1|2]] [-version][-sv_root arg][-sv_lib arg][-sv_liblist arg][-dpiheader arg][-driver_display_limit arg][-dpi_absolute][-incr][-93_mode]

xelab の例

xelab work.top1 work.top2 -s cpusimxelab lib1.top1 lib2.top2 -s fftsimxelab work.top1 work.top2 -prj files.prj -s pciesimxelab lib1.top1 lib2.top2 -prj files.prj -s ethernetsim

Verilog 検索順序 xelab コマンドは次の検索順を使用して、 インスタンシエート された Verilog デザイン ユニッ ト を検索および結合し

ます。

1. Verilog コードの ‘uselib 指示子で指定されたライブラ リ。 次に例を示します。

modulefull_adder(c_in, c_out, a, b, sum)input c_in,a,b;output c_out,sum;wire carry1,carry2,sum1;`uselib lib = adder_libhalf_adder adder1(.a(a),.b(b),.c(carry1),.s(sum1));half_adder adder1(.a(sum1),.b(c_in),.c(carry2),.s(sum));c_out = carry1 | carry2;endmodule

2. -lib|-L オプシ ョ ンを使用してコマンド ラインで指定されたライブラ リ

3. 親デザイン ユニッ トのライブラ リ

4. work ライブラ リ

ロジック シミ ュレーシ ョ ン 114UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 115: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

Verilog インスタンシエーシ ョ ン ユニッ ト

Verilog デザインにコンポーネン トがインスタンシエーシ ョ ンされる と、 xelab コマンドによ り コンポーネン ト名が

Verilog ユニッ ト と して処理され、 ユーザーの指定したユニファイ ド論理ライブラ リの リ ス ト (ユーザーの指定順) か

ら Verilog モジュールが検索されます。

• ユニッ トが見つかる と結合され、 検索が停止します。

• 大文字/小文字を区別した検索で何も見つからない場合、 ユーザーの指定したユニファイ ド論理ライブラ リの リ

ス ト (ユーザーの指定順) で、 拡張識別子と して構築された VHDL デザイン ユニッ ト名が大文字/小文字を区別

せずに検索され、 初に一致したものが選択されて検索が停止します。

• 1 つのライブラ リ特有の結合が見つかった場合は、 その名前が選択されて、 検索が停止します。

注記: 混合言語デザインの場合、 Verilog モジュールでインスタンシエート される VHDL エンティティへの関連付け

に使用されるポート名では、 常に大文字/小文字が区別されます。 また、 VHDL ジェネ リ ッ クを変更するのに

defparam 文は使用できないこ とにも注意してください。 詳細は、 付録 G 「混合言語シ ミ ュレーシ ョ ンの使用」 を

参照してください。

重要: VHDL レコード オブジェク ト全体の Verilog オブジェク トへの接続はサポート されていません。

VHDL インスタンシエーシ ョ ン ユニッ ト

VHDL デザインにコンポーネン トがインスタンシエート される と、 xelab コマンドによ りそのコンポーネン ト名が

VHDL ユニッ ト と して処理され、 論理 work ライブラ リで検索されます。

• VHDL ユニッ トが見つかる と結合され、 検索が停止します。

• VHDL ユニッ トが見つからない場合、 大文字/小文字の保持されたコンポーネン ト名が Verilog モジュール名と し

て処理され、 ユーザーの指定したユニファイ ド論理ライブラ リの リ ス ト (ユーザーの指定順) で大文字/小文字を

区別した検索が続行されます。 初に一致したものが選択されて検索が停止します。

• 大文字/小文字を区別した検索で何も見つからない場合、 ユーザーの指定したユニファイ ド論理ライブラ リの リ

ス ト (ユーザーの指定順) で、 Verilog モジュールが大文字/小文字を区別せずに検索されます。 1 つのライブラ リ

特有の結合が見つかった場合は、 その名前が選択されて、 検索が停止します。

Verilog の `uselib 指示子 ライブラ リ検索順を設定する Verilog の `uselib 指示子がサポート されています。

`uselib の構文

<uselib compiler directive> ::= `uselib [<Verilog-XL uselib directives>|<lib directive>]

<Verilog-XL uselib directives> :== dir = <library_directory> | file = <library_file> | libext = <file_extension>

<lib directive>::= <library reference> {<library reference>}

<library reference> ::= lib = <logical library name>

ロジック シミ ュレーシ ョ ン 115UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 116: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

`uselib lib 指示子

`uselib lib 指示子は、 Verilog-XL の `uselib 指示子とは一緒に使用できません。 たとえば、 次のコードは無効

です。

`uselib dir=./ file=f.v lib=newlib

1 つの `uselib 指示子で複数のライブラ リ を指定できます。

ライブラ リ を指定した順が検索順になり ます。 次に例を示します。

`uselib lib=mylib lib=yourlib

この場合、 インスタンシエート されたモジュールの検索がまず mylib で実行され、 次に yourlib で実行され

ます。

`uselib dir、`uselib file、`uselib libext などの指示子と同様、解析の 1 つのセッシ ョ ンでは `uselib

lib 指示子が HDL ファ イルすべてに適用されます。 別の `uselib 指示子があるまでは、 HDL ソースの `uselib

(Verilog XL `uselib を含む) 指示子が使用されます。 引数なしで `uselib を使用する と、 現在アクティブな

`uselib <lib|file|dir|libext> が無効になり ます。

Verific の Verilog エラボレーシ ョ ン アルゴ リズムでのインスタンシエート済みモジュールまたは UDP の解決には、

次のモジュール検索メカニズムが使用されます。

• まず、 現在アクティブな `uselib lib の論理ライブラ リの順序リ ス トでインスタンシエート済みモジュール

が検索されます。

• 見つからない場合は、 xelab コマンドで検索ライブラ リ と して指定されているライブラ リの順序リ ス トでイン

スタンシエート済みモジュールが検索されます。

• 見つからない場合は、 親モジュールのライブラ リでインスタンシエート済みモジュールが検索されます。 たと

えば、 work ライブラ リのモジュール A に mylib ライブラ リのモジュール B がインスタンシエート され、 モ

ジュール B にモジュール C がインスタンシエート されている場合、 mylib ラ イブラ リ (C の親モジュールであ

る B のライブラ リ ) でモジュール C が検索されます。

• 見つからない場合は、 次のいずれかの work ラ イブラ リでインスタンシエート されたモジュールを検索します。

° HDL ソースがコンパイルされるライブラ リ

° work ライブラ リ と して明示的に設定されるライブラ リ

° work という名前のデフォルトの作業ライブラ リ

ロジック シミ ュレーシ ョ ン 116UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 117: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

`uselib の例

xelab、 xvhdl、 xvlog xsim コマンド オプシ ョ ン

表 7-2 に、 xelab、 xvhdl、 xvlog xsim コマンドのオプシ ョ ンを リ ス ト します。

表 7-1: ‘uselib の例

adder_lib という名前の論理ライブラリにコンパイルされる half_adder.v ファイル

work という名前の論理ライブラリにコンパイルされる full_adder.v ファイル

module half_adder(a,b,c,s);

input a,b;

output c,s;

s = a ^ b;

c = a & b;

endmodule

module

full_adder(c_in, c_out, a, b, sum)

input c_in,a,b;

output c_out,sum;

wire carry1,carry2,sum1;

`uselib lib = adder_lib

half_adder

adder1(.a(a),.b(b),.

c(carry1),.s(sum1));

half_adder

adder1(.a(sum1),.b(c_in),.c

(carry2),.s(sum));

c_out = carry1 | carry2;

endmodule

表 7-2: xelab、 xvhd、 xvlog コマンド オプシ ョ ン

コマンド オプシ ョ ン 説明 使用するコマンド

-d [define] <name>[=<val>] Verilog マクロを定義します。 各 Verilog マクロに

-d|--define を使用します。 マクロのフォーマッ トは

<name>[=<val>] で、<name> はマクロの名前、 <value>

はマクロのオプシ ョ ンの値です。

「xelab」

「xvlog」

-debug <kind> 指定したデバッグ機能をオンにしてコンパイルします。

<kind> に有効な値は、 次のとおりです。

• typical: も一般的な機能で、 line および wave が含

まれます。

• line: HDL ブレークポイン ト。

• wave: 波形の生成、 条件付き実行、 強制値。

• xlibs: ザイ リ ンクス のコンパイル済みライブラ リの可

視性。 このコマンドは、 コマンド ラインでのみ使用でき

ます。

• off: すべてのデバッグ機能をオフにします (デフォルト )。

• all: すべてのデバッグ オプシ ョ ンを使用します。

「xelab」

-encryptdumps コンパイルされるデザイン ユニッ トの解析済みダンプを暗

号化します。

「xvhdl」

「xvlog」

ロジック シミ ュレーシ ョ ン 117UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 118: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

-f [-file] <filename> 指定したファイルから追加オプシ ョ ンを読み出します。 「xelab」

xsim

「xvhdl」

「xvlog」

-generic_top <value> 上位デザイン ユニッ トのジェネ リ ッ クまたはパラ メー

ターを指定した値に置き換えます。

例: -generic_top "P1=10"

「xelab」

-h [-help] ヘルプ メ ッセージを表示します。 「xelab」

xsim

「xvhdl」

「xvlog」

-i [include] <directory_name> Verilog の ̀ include を使用して含めたファイルを検索する

ディ レク ト リ を指定します。 各検索ディ レク ト リに

-i|--include を使用します。

「xelab」

「xvlog」

-initfile <init_filename> デフォルトの xsim.ini ファイルで提供される設定に追

加、 またはそれらの設定の代わりに使用する設定を含む

ユーザー定義のシ ミ ュレータ初期化ファイルを指定します。

「xelab」

「xvhdl」

「xvlog」

-L [-lib] <library_name>

[=<library_dir>]インスタンシエート された VHDL 以外のデザイン ユニッ ト

(Verilog デザイン ユニッ ト など) の検索ライブラ リ を指定し

ます。

各検索ライブラ リに -L|--lib を使用します。 引数の

フォーマッ トは <name>[=<dir>] で、 <name> はライブ

ラ リの論理名、 <library_dir> はライブラ リのオプシ ョ

ンの物理ディ レク ト リです。

「xelab」

「xvhdl」

「xvlog」

-log <filename> ログ ファ イルの名前を指定します。 デフォルトは

<xvlog|xvhdl|xelab|xsim>.log です。

「xelab」

xsim

「xvhdl」

「xvlog」

-maxarraysize arg VHDL 配列の 大サイズを 2**n に設定します。デフォルト

は n = 28、 つま り 2**28 です。

「xelab」

-maxdelay Verilog デザイン ユニッ ト を 大遅延でコンパイルします。 「xelab」

-maxdesigndepth arg エラボレーターで許容されるデザイン階層深さの 大値を

変更します。 デフォルトは 5000 です。

「xelab」

-maxlogsize arg (=-1) ログ ファ イルの 大サイズを MB で指定します。 デフォル

トは無制限です

xsim

-mindelay Verilog デザイン ユニッ ト を 小遅延でコンパイルします。 「xelab」

表 7-2: xelab、 xvhd、 xvlog コマンド オプシ ョ ン (続き)

コマンド オプシ ョ ン 説明 使用するコマンド

ロジック シミ ュレーシ ョ ン 118UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 119: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

-mt arg 並列実行可能なサブコンパイル ジ ョブの数を指定します。

有効な値は、 auto、 off、 または 1 よ り大きい整数です。

auto に設定する と、xelab でホス ト マシンの CPU 数に基

づいて並列ジ ョブの数が選択されます。 デフォルトは

auto です。

-mt オプシ ョ ンをさ らに詳細に制御するには、 次のよ うに

Tcl プロパティを設定します。

set_property XELAB.MT_LEVEL off|N

[get_filesets sim_1]

「xelab」

-nolog ログ ファ イルが生成されないよ うにします。 「xelab」

xsim

「xvhdl」

「xvlog」

-noieeewarnings VHDL IEEE 機能からの警告をオフにします。 「xelab」

-noname_unnamed_generate 名前の付いていない生成ブロッ クに対して名前を付けない

よ うにします。

「xelab」

「xvlog」

-notimingchecks Verilog 指定ブロッ クでタイ ミ ング チェッ ク コンス ト ラ ク

ト を無視します。

「xelab」

-nosdfinterconnectdelays SDF の SDF ポートおよびインターコネク ト遅延コンス ト ラ

ク ト を無視します。

「xelab」

-nospecify Verilog パス遅延と タイ ミ ング チェッ クを無視します。 「xelab」

-O arg 適化をイネーブルまたはディ スエーブルにします。

-O0: 適化をディ スエーブル

-O1: 基本的な 適化をイネーブル

-O2: もよ く使用される 適化をイネーブル (デフォルト )

-O3: アドバンス 適化をイネーブル

注記: 値が小さいほどコンパイル時間は短くなり ますが、

シ ミ ュレーシ ョ ンは低速になり ます。 値が大きいほどコン

パイル時間は長くなり ますが、 シ ミ ュレーシ ョ ンは高速に

なり ます。

「xelab」

-Odisable_acceleration arg 指定した HDL パッケージのアクセラレーシ ョ ンをオフに

します。 有効な値は all、 math_real、 math_complex、

numeric_std、 std_logic_signed、 std_logic_unsigned で、 デ

フォルトはアクセラレーシ ョ ンはオンです。

「xelab」

-Odisable_process_opt プロセス レベルの 適化をオフにします (デフォルトでは

オン)。

「xelab」

-Oenable_cdfg

-Odisable_cdfg

コン ト ロール + データ フロー グラフの構築をオン (イネー

ブル) またはオフ (ディ スエーブル) にします (デフォルトで

はオン)。

「xelab」

表 7-2: xelab、 xvhd、 xvlog コマンド オプシ ョ ン (続き)

コマンド オプシ ョ ン 説明 使用するコマンド

ロジック シミ ュレーシ ョ ン 119UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 120: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

-Oenable_unused_removal

-Odisable_unused_removal

適化による未使用の信号および文の削除をオン (イネー

ブル) またはオフ (ディ スエーブル) にします (デフォルトで

はオン)。

「xelab」

-override_timeunit すべての Verilog モジュールの時間単位を -timescale オ

プシ ョ ンで指定した値に置き換えます。

「xelab」

-override_timeprecision すべての Verilog モジュールの時間精度を -timescale オ

プシ ョ ンで指定した時間精度に置き換えます。

「xelab」

-pulse_e arg パス パルス エラー制限をパス遅延のパーセン トで指定し

ます。 有効な値は 0 ~ 100 です (デフォルトは 100)。

「xelab」

-pulse_r arg パス パルス拒否制限をパス遅延のパーセン トで指定しま

す。 有効な値は 0 ~ 100 です (デフォルトは 100)。

「xelab」

-pulse_int_e arg インターコネク ト パルス拒否制限を遅延のパーセン トで指

定します。 有効な値は 0 ~ 100 です (デフォルトは 100)。

「xelab」

-pulse_int_r arg インターコネク ト パルス拒否制限を遅延のパーセン トで指

定します。 有効な値は 0 ~ 100 です (デフォルトは 100)。

「xelab」

-pulse_e_style arg パルスがモジュール パス遅延よ り も短いこ とを示すエラー

をいつレポートするかを指定します。 有効な値は次のとお

りです。

ondetect: 違反が検出されたと きにエラーをレポート

onevent: モジュール パス遅延後にエラーをレポート

デフォルト : onevent

「xelab」

-prj <filename> vhdl|verilog <work lib> <HDL file name> の入力

が 1 つまたは複数含まれる Vivado シ ミ ュレータ プロジェク

ト ファ イルを指定します。

「xelab」

「xvhdl」

「xvlog」

-r [-run] 生成された実行可能スナップシ ョ ッ ト をコマンド ラ インの

対話型モードで実行します。

「xelab」

-rangecheck ランタイム値の範囲のチェッ クをイネーブルにします

(VHDL)。

「xelab」

-R [-runall] 生成された実行可能スナップシ ョ ッ ト ファ イルをシ ミ ュ

レーシ ョ ンの 後まで実行します。

「xelab」

xsim

-relax 厳密な言語規則を緩和します。 「xelab」

「xvhdl」

「xvlog」

-s [-snapshot] arg 出力されるシ ミ ュレーシ ョ ン スナップシ ョ ッ トの名前を指

定します。 デフォルトは <worklib>.<unit> です (例:

work.top)。 追加のユニッ ト名は # で連結します (例:

work.t1#work.t2)。

「xelab」

-sdfnowarn SDF 警告を出力しません。 「xelab」

-sdfnoerror SDF ファイルで見つかったエラーを警告と して処理します。 「xelab」

-sdfmin arg <root=file> という形式で指定し、 <file> という SDF

ファ イルの 小遅延を <root> にアノテート します。

「xelab」

表 7-2: xelab、 xvhd、 xvlog コマンド オプシ ョ ン (続き)

コマンド オプシ ョ ン 説明 使用するコマンド

ロジック シミ ュレーシ ョ ン 120UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 121: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

-sdftyp arg <root=file> という形式で指定し、 <file> という SDF

ファ イルの標準遅延を <root> にアノテート します。

「xelab」

-sdfmax arg <root=file> という形式で指定し、 <file> という SDF

ファ イルの 大遅延を <root> にアノテート します。

「xelab」

-sdfroot <root_path> SDF アノテーシ ョ ンを適用するデフォルトのデザイン階層

を指定します。

「xelab」

-sourcelibdir

<sourcelib_dirname>コンパイルされていないモジュールの Verilog ソース ファ

イルのディ レク ト リ を指定します。

各ソース ディレク ト リに -sourcelibdir

<sourcelib_dirname> を使用します。

「xelab」

「xvlog」

-sourcelibext <file_extension> コンパイルされていないモジュールの Verilog ソース ファ

イルのファイル拡張子を指定します。

ソース ファ イル拡張子に -sourcelibext <file

extension> を使用します。

「xelab」

「xvlog」

-sourcelibfile <filename> コンパイルされていないモジュールを含む Verilog ソース

ファ イルのファイル名を指定します。 -sourcelibfile

<filename> を使用します。

「xelab」

「xvlog」

-stat CPU、 メモ リ使用量、 デザイン統計を表示します。 「xelab」

-sv 入力ファイルを SystemVerilog モードでコンパイルします。 「xvlog」

-timescale Verilog モジュールのデフォルトの時間単位を指定します。

デフォルトは 1ns/1ps です。

「xelab」

-timeprecision_vhdl arg VHDL デザインの時間精度を指定します。

デフォルトは 1ps です。

「xelab」

-transport_int_delays インターコネク ト遅延に転送モデルを使用します。 「xelab」

-typdelay Verilog デザイン ユニッ ト を標準遅延 (デフォルト ) でコン

パイルします。

「xelab」

-v [verbose] [0|1|2] 表示メ ッセージの詳細レベルを指定します。 デフォルトは

0 です。

「xelab」

「xvhdl」

「xvlog」

-version コンパイラ バージ ョ ンを表示します。 「xelab」

xsim

「xvhdl」

「xvlog」

-work <library_name>

[=<library_dir>]work ライブラ リ を指定します。 この引数のフォーマッ トは

<name>[=<dir>] です。

• <name>: ライブラ リの論理名

• <library_dir>: ライブラ リの物理ディ レク ト リ (オプ

シ ョ ン)

「xvhdl」

「xvlog」

-sv_root arg DPI ライブラ リ を含むルート ディレク ト リ を指定します。

デフォルト : <current_directory/xsim.dir/xsc>

「xelab」

表 7-2: xelab、 xvhd、 xvlog コマンド オプシ ョ ン (続き)

コマンド オプシ ョ ン 説明 使用するコマンド

ロジック シミ ュレーシ ョ ン 121UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 122: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

デザイン スナップシ ョ ッ トのシミ ュレーシ ョ ン (xsim)xsim コマンドは、 シ ミ ュレーシ ョ ン スナップシ ョ ッ ト を読み込んで、 バッチ モードのシ ミ ュレーシ ョ ンを実行す

るか、 GUI または Tcl ベースの対話型シ ミ ュレーシ ョ ン環境を提供します。

xsim の構文

コマンド構文は、 次のよ うになり ます。

xsim <options> <snapshot>

説明:

• xsim はコマンドです。

• <options> はオプシ ョ ンです (表 7-3)。

• <snapshot> はシ ミ ュレーシ ョ ン スナップシ ョ ッ トです。

-sv_lib arg DPI インポート された関数の共有ライブラ リ名 (.dll/.so)

をファ イル拡張子なしで指定します。

「xelab」

-sv_liblist arg DPI 共有ライブラ リ をポイン トするブート ス ト ラ ップ ファ

イルを指定します。

「xelab」

-dpiheader arg エクスポートおよびインポート された関数のヘッダー ファ

イル名を指定します。

「xelab」

-driver_display_limit arg 指定した 大サイズまでの信号のド ライバー デバッグをイ

ネーブルにします (デフォルト : n = 65536)。

「xelab」

-dpi_absolute Linux で lib<libname>.so という形式の DPI ライブラ リ

に LD_LIBRARY_PATH ではなく絶対パスを使用します。

「xelab」

-incr シ ミ ュレーシ ョ ンでインク リ メンタル解析/エラボレーシ ョ

ンをイネーブルにします。

「xvlog」

「xvhdl」

「xelab」

-93_mode VHDL を 93 モードでコンパイルします。 「xvhdl」

「xelab」

-2008 VHDL を 2008 モードでコンパイルします。 「xvhdl」

表 7-2: xelab、 xvhd、 xvlog コマンド オプシ ョ ン (続き)

コマンド オプシ ョ ン 説明 使用するコマンド

ロジック シミ ュレーシ ョ ン 122UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 123: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

xsim のオプシ ョ ン

表 7-3: xsim コマンドのオプシ ョ ン

xsim オプシ ョ ン 説明

-f [-file] <filename> ファ イルからコマンド ライン オプシ ョ ンを読み込みます。

-g [-gui] 対話型 GUI で実行します。

-h [-help] ヘルプ メ ッセージを表示します。

-log <filename> ログ ファ イルの名前を指定します。

-maxdeltaid arg (=-1) 大差異を指定します。 同時に 大シ ミ ュレーシ ョ ン ループを上回る場合にエ

ラーをレポート します。

-maxlogsize arg (=-1) ログ ファ イルの 大サイズを MB で指定します。 デフォルトは無制限です。

-ieeewarnings VHDL IEEE 関数からの警告をイネーブルにします。

-nolog ログ ファ イルが生成されないよ うにします。

-nosignalhandlers シ ミ ュレーシ ョ ンでの OS レベル信号ハンド ラーのインス トールをディ スエーブル

にします。 シ ミ ュレータでは、 パフォーマンスの理由から、 整数の 0 での除算な

ど、 OS レベルの致命的ランタイム エラーになる可能性のある状況は明示的には

チェッ ク されません。 その代わりに信号ハンド ラーがインス トールされ、 このよ う

なエラーを検出してレポート を生成します。

信号ハンド ラーをディ スエーブルにする と、 セキュ リ ティ ソフ ト ウェアが存在し

ていてもシ ミ ュレーシ ョ ンを実行できますが、 OS レベルの致命的エラーによ り、

エラーの原因がはっき り と示されないまま突然シ ミ ュレーシ ョ ンが停止してしま う

こ とがあ り ます。

注意: このオプシ ョ ンは、 セキュ リ ティ ソフ ト ウェアによ りシ ミ ュレータがう ま く

動作しない場合にのみ使用してください。

-onfinish <quit|stop> シ ミ ュレーシ ョ ン終了時の動作を指定します。

-onerror <quit|stop> シ ミ ュレーシ ョ ン ランタイム エラーの発生した場合の動作を指定します。

-R [-runall] シ ミ ュレーシ ョ ンを 後まで実行します (例: do 'run all;quit’)。

-stats 終了する と きにメモ リおよび CPU の統計を表示します。

-testplusarg <arg> plusargs が $test$plusargs および $value$plusargs システム関数で使用

されるよ うに指定します。

-t [-tclbatch] <filename> バッチ モード実行用の Tcl ファ イルを指定します。

-tp 実行中のプロセスの階層名を表示します。

-tl 実行中の文のファイル名および行番号を表示します。

-wdb <filename.wdb> 波形データベース出力ファイルを指定します。

-version コンパイラ バージ ョ ンを表示します。

-view <wavefile.wcfg> 波形設定ファイルを開きます。 -gui オプシ ョ ンと共に使用します。

ロジック シミ ュレーシ ョ ン 123UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 124: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

ヒン ト : バッチ ファ イルまたはスク リプ トで xelab、 xsc、 xsim、 xvhdl、 または xvlog コマンドを実行する場合、

XILINX_VIVADO 環境変数で Vivado Design Suite のインス トール ディ レク ト リ を指定する必要がある場合もあ り ま

す。 XILINX_VIVADO 変数を設定するには、 次のいずれかをスク リプ ト またはバッチ ファ イルに追加します。

Windows: set XILINX_VIVADO=<vivado_install_area>/Vivado/<version>

Linux: setenv XILINX_VIVADO vivado_install_area>/Vivado/<version>

<version> には、 2014.3、 2014.4、 2015.1 など、 使用している Vivado ツールのバージ ョ ンを指定します。

スタンドアロン モードでの Vivado シミュレータの実行例

Vivado シ ミ ュレータをスタンドアロン モードで実行する場合、 コマンドを使用して次を実行できます。

• デザイン ファイルを解析

• デザインをエラボレート し、 スナップシ ョ ッ ト を作成

• Vivado シ ミ ュレータのワークスペース と波形設定ファイルを開いてシ ミ ュレーシ ョ ンを実行

手順 1: デザイン ファイルの解析

次の表に示すよ うに、 HDL ソース ファ イルをタイプ別に解析します。 各コマンドで複数ファイルを処理できます。

手順 2: デザインのエラボレート とスナップシ ョ ッ トの作成

解析を実行したら、 xelab コマンドを使用してデザインをエラボレート し、 シ ミ ュレーシ ョ ンのスナップシ ョ ッ ト

を作成します。

xelab <topDesignUnitName> -debug typical

重要: xelab を使用する と、 複数の 上位デザイン ユニッ ト名を指定できます。 launch_simulation で使用され

るのと同様の目的で Vivado シ ミ ュレータのワークスペースを使用するには、 シ ミ ュレータにデバッグ レベルを

typical に設定する必要があ り ます。

手順 3: シミ ュレーシ ョ ンの実行

xelab が問題なく終了する と、 Vivado シ ミ ュレータでシ ミ ュレーシ ョ ンを実行するのに使用するスナップシ ョ ッ ト

が作成されます。

Vivado シ ミ ュレータのワークスペースを起動するには、 次のコマンドを使用します。

xsim <SnapShotName> -gui

表 7-4: デザイン ファイル解析に使用するファイル タイプおよび関連コマンド

ファイル タイプ コマンド

Verilog xvlog <VerilogFileName(s)>

SystemVerilog xvlog -sv <SystemVerlilogFileName(s)>

VHDL xvhdl <VhdlFileName(s)>

ロジック シミ ュレーシ ョ ン 124UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 125: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

波形設定ファイルを開くには、 次のよ うに入力します。

xsim <SnapShotName> -view <wcfg FileName> -gui

複数の wcfg ファ イルを指定するには、 -view オプシ ョ ンを複数使用します。 次に例を示します。

xsim <SnapShotName> -view <wcfg FileName> -view <wcfg FileName>

プロジェク ト ファイル (.prj) の構文

注記: こ こで説明するプロジェク ト ファ イルは、 Vivado シ ミ ュレータのテキス ト ベースのプロジェク ト ファ イルで

す。 Vivado Design Suite で作成されるプロジェク ト ファ イル (.xpr) とは別のものです。

プロジェク ト ファイルを使用してデザイン ファ イルを解析するには、 <proj_name>.prj という ファ イル名のテキ

ス ト ファ イルを作成し、 そのプロジェク ト ファ イル内で次の構文を使用します。

verilog <work_library> <file_names>...[-d <macro>]...[-i <include_path>]... vhdl <work_library> <file_name>sv <work_library> <file_name>

説明:

<work_library>: 指定した行の HDL ファ イルがコンパイルされるライブラ リ。

<file_names>: Verilog ソース ファ イル。 各行に複数の Verilog ファ イルを指定できます。

<file_name>: VHDL ソース ファ イル。 1 行に 1 つの VHDL ファ イルを指定します。

° Verilog または SystemVerilog の場合: [-d <macro>] で 1 つまたは複数のマクロを定義できます。

° Verilog または SystemVerilog の場合: [-i <include_path>] で 1 つまたは複数の <include_path> ディ

レク ト リ を定義できます。

定義済みマクロ

XILINX_SIMULATOR は Verilog の定義済みマクロです。 このマクロの値は 1 です。 定義済みマクロでは、 ツール専

用の関数が実行されるか、 デザイン フローで使用するツールが特定されます。 次に使用例を示します。

`ifdef VCS // VCS specific code`endif`ifdef INCA // NCSIM specific code`endif`ifdef MODEL_TECH // MODELSIM specific code`endif`ifdef XILINX_ISIM // ISE Simulator (ISim) specific code`endif`ifdef XILINX_SIMULATOR // Vivado Simulator (XSim) specific code`endif

ロジック シミ ュレーシ ョ ン 125UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 126: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

ライブラリ マップ ファイル (xsim.ini)HDL コンパイラ プログラムの xvhdl、 xvlog、 xelab では、 xsim.ini 設定ファイルから VHDL および Verilog 論

理ライブラ リの定義および物理的な位置が検出されます。

コンパイラでは、 次の場所から リ ス ト順で xsim.ini が読み込まれます。

1. <Vivado_Install_Dir>/data/xsim

2. -initfile オプシ ョ ンで指定されたユーザー ファ イル。 -initfile が指定されない場合、 現在の作業ディレ

ク ト リで xsim.ini が検索されます。

xsim.ini ファ イルの構文は、 次のとおりです。

<logical_library1> = <physical_dir_path1><logical_library2> = <physical_dir_path2>

次は xsim.ini ファ イルの例です。

std=<Vivado_Install_Area>/xsim/vhdl/stdieee=<Vivado_Install_Area>/xsim/vhdl/ieeevl=<Vivado_Install_Area>/xsim/vhdl/vlsynopsys=<Vivado_Install_Area>/xsim/vhdl/synopsysunisim=<Vivado_Install_Area>/xsim/vhdl/unisimunimacro=<Vivado_Install_Area>/xsim/vhdl/unimacrounifast=<Vivado_Install_Area>/xsim/vhdl/unifastsimprims_ver=<Vivado_Install_Area>/xsim/verilog/simprims_verunisims_ver=<Vivado_Install_Area>/xsim/verilog/unisims_verunimacro_ver=<Vivado_Install_Area>/xsim/verilog/unimacro_verunifast_ver=<Vivado_Install_Area>/xsim/verilog/unifast_versecureip=<Vivado_Install_Area>/xsim/verilog/secureipwork=./work

xsim.ini ファ イルの機能および制限は、 次のとおりです。

• xsim.ini ファイルでは、 1 つの行で指定できるライブラ リ パスは 1 つのみです。

• 物理パスに対応するディ レク ト リがない場合、 コンパイラでそのパスに 初に書き込むと きに、 xvhd または

xvlog によ り作成されます。

• 物理パスは環境変数を使用して記述できます。 環境変数は $ 文字で開始する必要があ り ます。

• 論理ライブラ リのデフォルトの物理ディ レク ト リは、 xsim/<language>/<logical_library_name> です。

次は論理ライブラ リ名の例です。

<Vivado_Install_Area>/xsim/vhdl/unisim

• ファ イル コ メン トは -- で始める必要があ り ます。

ロジック シミ ュレーシ ョ ン 126UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 127: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

シミ ュレーシ ョ ン モードの実行

どのシ ミ ュレーシ ョ ン モードでもコマンド ラインから実行できます。 次のセクシ ョ ンでは、 コマンド ラ インから実

行する場合のシ ミ ュレーシ ョ ン モードについて説明します。

ビヘイビアー シミ ュレーシ ョ ン

図 7-4 は、 ビヘイビア シ ミ ュレーシ ョ ン プロセスを示しています。

Vivado Design Suite からビヘイビアー シ ミ ュレーシ ョ ンを実行するには、 Tcl コマンド launch_simulation

-mode behavioral を使用します。

X-Ref Target - Figure 7-4

図 7-4: ビヘイビア シミ ュレーシ ョ ン プロセス

ロジック シミ ュレーシ ョ ン 127UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 128: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

合成後およびインプリ メンテーシ ョ ン後のシミ ュレーシ ョ ン

合成後およびインプ リ メンテーシ ョ ン後のシ ミ ュレーシ ョ ンでは、 論理シ ミ ュレーシ ョ ンまたは Verilog タイ ミ ング

シ ミ ュレーシ ョ ンを実行できます。 図 7-5 に、 合成後およびインプ リ メンテーシ ョ ン後のシ ミ ュレーシ ョ ン プロセ

スを示します。

次に、 コマンド ラインから合成後の論理シ ミ ュレーシ ョ ンを実行する例を示します。

synth_design -top top -part xc7k70tfbg676-2open_run synth_1 -name netlist_1write_verilog -mode funcsim test_synth.vlaunch_simulation

ヒン ト : 合成後およびインプリ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンを実行する場合、 write_verilog

の後に write_sdf コマンドを実行する必要があ り、 エラボレーシ ョ ンおよびシ ミ ュレーシ ョ ンに適切なアノテー

ト コマンドが必要です。

X-Ref Target - Figure 7-5

図 7-5: 合成後およびインプリ メンテーシ ョ ン後のシミ ュレーシ ョ ン

ロジック シミ ュレーシ ョ ン 128UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 129: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

Tcl コマンド とスクリプ トの使用 シ ミ ュレーシ ョ ンを実行するには、 Tcl コンソールで Tcl コマンドを個別に実行するか、 コマンドを Tcl スク リプ ト

に含めます。

-tclbatch オプシ ョ ンの使用 シ ミ ュレーシ ョ ン コマンドを Tcl ファ イルに記述し、 その Tcl ファ イルを次のコマンドを使用して参照します。

-tclbatch <filename>

-tclbatch オプシ ョ ンを使用してコマンドを含むファイルを指定し、 シ ミ ュレーシ ョ ン開始時にそれらのコマンド

が実行されるよ うにします。 たとえば、 次を含む run.tcl という ファ イルがある と します。

run 20nscurrent_timequit

シ ミ ュレーシ ョ ンを実行するには、 次のコマンドを使用します。

xsim <snapshot> -tclbatch run.tcl

シ ミ ュレーシ ョ ン コマンドを表す変数を設定しておく と、 よ く使用されるシ ミ ュレーシ ョ ン コマンドをすばやく実

行できます。

Tcl コンソールからの Vivado シミ ュレータの起動

次に、 プロジェク ト を作成し、 ソース ファ イルを読み込み、 Vivado シ ミ ュレータを起動し、 配置配線を実行し、

SDF ファ イルを書き出して、 シ ミ ュレーシ ョ ンを再実行する Tcl コマンドの例を示します。

Vivado -mode TclVivado% create_project prj1Vivado% read_verilog dut.vVivado% synth_design -top dutVivado% launch_simulation -simset sim_1 -mode post-synthesis -type functionalVivado% place_designVivado% route_designVivado% write_verilog -mode timesim -sdf_anno true -sdf_file postRoute.sdf postRoute_netlist.vVivado% write_sdf postRoute.sdfVivado% launch_simulation -simset sim_1 -mode post-implementation -type timingVivado% close_project

ロジック シミ ュレーシ ョ ン 129UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 130: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

export_simulation export_simulation [-simulator <arg>] [-of_objects <arg>] [-lib_map_path <arg>] [-script_name <arg>] [-directory <arg>] [-runtime <arg>] [-absolute_path] [-single_step] [-export_source_files] [-32bit] [-force] [-quiet] [-verbose][-ip_user_files_dir <arg>] [-ipstatic_source_dir <arg>] [-define <arg>] [-generic <arg>] [-include <arg>] [-use_ip_compiled_libs]

使用法:

表 7-5: export_simulation のオプシ ョ ン

名前 説明

[-simulator] シ ミ ュレーシ ョ ン スク リプ ト を作成するシ ミ ュレータを指定します。 有効な値は all、

xsim、 modelsim、 questa、 ies、 および vcs で、 デフォルトは all です。

[-of_objects] 指定のオブジェク トのシ ミ ュレーシ ョ ン スク リプ ト をエクスポート します。 デフォルト

はあ り ません。

[-lib_map_path] コンパイル済みのシ ミ ュレーシ ョ ン ライブラ リのディ レク ト リ パスを指定します。 指定

しない場合は、 生成されたスク リプ トのヘッダーの手順に従い、 シ ミ ュレーシ ョ ン ライ

ブラ リのマップ情報を手動で指定してください。 デフォルトは空です。

[-script_name] 出力シェル スク リプ トのファ イル名を指定します。 指定しない場合は、 デフォルトで

top_module.sh/.bat とい う名前のファイルが生成されます。

[-directory] シ ミ ュレーシ ョ ン スク リプ トのエクスポート先ディ レク ト リ を指定します。 デフォルト

は export_sim です。

[-runtime] シ ミ ュレーシ ョ ンを実行する時間を指定します。 デフォルトでは、 シ ミ ュレーシ ョ ンが完

全に実行されるか、 論理的なブレークまたは終了条件に達するまで実行されます。 デフォ

ルトは空です。

[-absolute_path] すべてのファイル パスを絶対パスにします。

[-single_step] すべての手順を 1 ステップで実行するスク リプ ト を生成します。

[-export_source_files] デザイン ファ イルを出力ディ レク ト リにコピーします。

[-32bit] 32 ビッ ト コンパイルを実行します。

[-force] 既存のファイルを上書きします。

[-quiet] コマンド エラーを表示しません。

[-verbose] プログラム実行中メ ッセージの非表示設定を解除し、 すべてのメ ッセージを表示します。

[-ip_user_files_dir] ダイナミ ッ クおよび IP のその他のスタティ ッ クでないファイルのエクスポート された IP

ユーザー ファ イルのディ レク ト リ パスを指定します。

デフォルトはあ り ません。

[-ip_static_source_dir] エクスポート された IP スタティ ッ ク ファ イルへのディ レク ト リ パスを指定します。

デフォルトはあ り ません。

[-define] このオプシ ョ ンで指定した リ ス トから Verilog 定義を読み出します。

デフォルトはあ り ません。

[-generic] このオプシ ョ ンで指定した リ ス トから VHDL ジェネ リ ッ クを読み出します。

デフォルトはあ り ません。

ロジック シミ ュレーシ ョ ン 130UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 131: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

カテゴリ

simulation、 xilinxtclstore、 user-written

説明

ターゲッ ト シ ミ ュレータのシ ミ ュレーシ ョ ン スク リプ ト ファ イルをエクスポート します。 サポート されるシ ミ ュ

レータは、 下のリ ス ト を参照してください。 生成されたスク リプ トには、 デザインをコンパイル、 エラボレート、

シ ミ ュレーシ ョ ンするためのシ ミ ュレータ コマンドが含まれます。

このコマンドは、 指定したオブジェク トのシ ミ ュレーシ ョ ン コンパイル順を取得して、 この情報をコンパイラ コマ

ンド と ターゲッ ト シ ミ ュレータのデフォルト オプシ ョ ンを使用してシェル スク リプ トにエクスポート します。 オブ

ジェク ト と しては、 シ ミ ュレーシ ョ ン ファ イルセッ ト または IP を指定できます。

オブジェク ト を指定しない場合、 アクティブなシ ミ ュレーシ ョ ン top のスク リプ トが生成されます。 Verilog の イン

クルード ディレク ト リ または Verilog の define 文を含むファイルへのパスは、 コンパイラ コマンド ラインに追加さ

れます。

デフォルトでは、コンパイラ コマンド ラインのデザイン ソース ファ イルおよびインクルード ディレク ト リ パスは、

生成されるスク リプ トで定義される reference_dir 変数に相対するパス と して設定されます。 これらのパスを絶

対パスにするには、 -absolute_path オプシ ョ ンを使用します。

このコマンドでは、 ファ イルセッ トからのデータ ファ イル (存在する場合) も出力ディ レク ト リにコピーされます。

デザインに Verilog ソースが含まれる場合は、生成されるスク リプ トによ り glbl.v も ソフ ト ウェア インス トール パ

スから出力ディ レク ト リにコピーされます。

ターゲッ ト シ ミ ュレータのシ ミ ュレーシ ョ ン スク リプ トのコンパイラ コマンドで使用されるデフォルト .do ファ

イルが出力ディ レク ト リに作成されます。

注記: 生成されたスク リプ トでシ ミ ュレーシ ョ ンを実行するには、 このスク リプ ト を生成する と きに、 まずコンパイ

ル済みライブラ リ ディレク ト リ パスを指定して compile_simlib Tcl コマンドを実行し、 シ ミ ュレーシ ョ ン ライ

ブラ リ をコンパイルする必要があ り ます。 生成されるスク リプ トでは、 コンパイル ラ イブラ リ ディ レク ト リから

ターゲッ ト シ ミ ュレータのセッ ト アップ ファ イルが自動的に含まれます。 [Project Settings] の [Simulation] ページで

オプシ ョ ンを指定しても export_simulation スク リプ トには影響しません。

サポート されるシミ ュレータ

• Vivado Simulator (xsim)

• ModelSim Simulator (modelsim)

• Questa Advanced Simulator (questa)

• Incisive Enterprise Simulator (ies)

• Verilog Compiler Simulator (vcs)

[-include] このオプシ ョ ンで指定した リ ス トからインクルード ディ レク ト リ パスを読み出します。

デフォルトはあ り ません。

[-use_ip_compiled_libs] コンパイル中にコンパイル済みの IP スタティ ッ ク ライブラ リ を参照します。

表 7-5: export_simulation のオプシ ョ ン (続き)

名前 説明

ロジック シミ ュレーシ ョ ン 131UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 132: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

引数

-of_objects (オプシ ョ ン): シ ミ ュレーシ ョ ン スク リプ ト ファ イルを生成する必要のあるターゲッ ト オブジェク ト

を指定します。 ターゲッ ト オブジェク トには、 シ ミ ュレーシ ョ ン ファ イルセッ ト (simset) または IP を指定できま

す。 このオプシ ョ ンを指定しない場合、 現在のシ ミ ュレーシ ョ ン ファ イルセッ トに対するファイルが生成されます。

-lib_map_path (オプシ ョ ン): ザイ リ ンクス シ ミ ュレーシ ョ ン ライブラ リがコンパイルされた、 コンパイル済みシ

ミ ュレーシ ョ ン ライブラ リのディ レク ト リ パスを指定します。 詳細は、 生成されたスク リプ トのヘッダー セクシ ョ

ンを参照してください。

-script_name (オプシ ョ ン): シェル スク リプ トの名前を指定します。 このオプシ ョ ンを指定しない場合、

-of_objects で指定されたオブジェク ト タイプに基づいて、 次の構文を使用したファイル名が生成されます。

<simulation_top_name>_sim_<simulator>.sh<ip_name>_sim_<simulator>.sh

-absolute_path (オプシ ョ ン): スク リプ トで使用されるソースおよびインクルード ディ レク ト リ パスを絶対パス

にします。 デフォルトでは、 すべてのパスは -directory オプシ ョ ンで指定されたディ レク ト リ を基準とする相対

パスで記述されます。 スク リプ トに、 -directory オプシ ョ ンで指定されたディレク ト リ パスへの

reference_dir 変数が設定されます。

-32bit (オプシ ョ ン): 32 ビッ ト シ ミ ュレーシ ョ ンを実行するよ う指定します。 このオプシ ョ ンを指定しない場合、

デフォルトの 64 ビッ ト オプシ ョ ンがシ ミ ュレーシ ョ ン コマンド ラインに追加されます。

-force (オプシ ョ ン): 指定したスク リプ ト ファ イルが存在する場合に上書きします。 スク リプ ト ファ イルが存在す

る場合に -force が指定されていないと、 エラー メ ッセージが表示されます。

-directory (必須): スク リプ ト ファ イルをエクスポートするディ レク ト リ パスを指定します。

-simulator (必須): シ ミ ュレーシ ョ ン スク リプ トのターゲッ ト シ ミ ュレータを指定します。有効なシ ミ ュレータ名

は、 xsim、 modelsim、 questa、 ies、 および vcs (または vcs_mx) です。

-quiet (オプシ ョ ン): コマンドを メ ッセージを表示せずに実行します。 コマンド ラ イン エラーは無視され、 エラー

メ ッセージは表示されません。 実行中にエラーが発生してもしなくても、 TCL_OK が返されます。

-verbose (オプシ ョ ン): メ ッセージの非表示設定を一時的に解除し、 コマンドからのすべてのメ ッセージを返します。

ロジック シミ ュレーシ ョ ン 132UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 133: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

export_ip_user_filesプロジェク トからの IP/IP インテグレーター ユーザー ファ イルを生成およびエクスポート します。 これは、 1 つまた

は複数の IP を処理するためのコマンドです。

構文:

export_ip_user_files [-of_objects <arg>] [-ip_user_files_dir <arg>] [-ipstatic_source_dir <arg>] [-lib_map_path <arg>] [-no_script] [-sync] [-reset] [-force] [-quiet] [-verbose]

戻り値:

エクスポート されたファイルのリ ス ト

使用法

説明

スタティ ッ ク、 ダイナミ ッ ク、 ネッ ト リ ス ト 、 verilog/vhdl スタブ、 メモ リ初期化ファイルを使用して IP ユーザー

ファ イルのリポジ ト リ をエクスポート します。

表 7-6: export_ip_user_files のオプシ ョ ン

名前 説明

[-of_objects] IP、 IP インテグレーター、 またはファイルセッ ト を指定します。 デフォルトはあ

り ません。

[-ip_user_files_dir] ダイナミ ッ クおよび IP のその他のスタティ ッ クでないファイルのシ ミ ュレー

シ ョ ン ベース ディ レク ト リへのパスを指定します。 デフォルトはあ り ません。

[-ipstatic_source_dir] スタティ ッ ク IP ファ イルへのパスを指定します。 デフォルトはあ り ません。

[-lib_map_path] コンパイル済みのシミ ュレーシ ョ ン ライブラ リのディレク ト リ パスを指定します。

デフォルトはあ り ません。

[-no_script] シ ミ ュレーシ ョ ン スク リプ ト をエクスポート しません。 デフォルトは 1 です。

[-sync] IP/IP インテグレーターのダイナミ ッ ク ファ イルおよびシ ミ ュレーシ ョ ン スク リ

プ ト ファ イルを削除します。

[-reset] IP/IP インテグレーターのスタティ ッ ク、 ダイナミ ッ ク、 およびシ ミ ュレーシ ョ

ン スク リプ ト ファ イルをすべて削除します。

[-force] 既存のファイルを上書きします。

[-quiet] コマンド エラーを表示しません。

[-verbose] プログラム実行中メ ッセージの非表示設定を解除し、 すべてのメ ッセージを表示

します。

ロジック シミ ュレーシ ョ ン 133UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 134: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

第 7 章: Vivado シミ ュレータでのバッチまたはスクリプ ト モードを使用したシミ ュレーシ ョ ン

引数

-of_objects (オプシ ョ ン): エクスポートする必要のある IP スタティ ッ クおよびダイナミ ッ ク ファ イルのターゲッ

ト オブジェク ト を指定します。

-ip_user_files_dir (オプシ ョ ン): ダイナミ ッ クおよびその他のスタティ ッ クではない IP ファ イル用の IP ユー

ザー ファ イル ベース ディレク ト リへのディレク ト リ パスを指定します。 このオプシ ョ ンを使用しない場合、 デ

フォルトでは IP.USER_FILES_DIR プロジェク ト プロパティの値で指定されたパスが使用されます。

-ipstatic_source_dir (オプシ ョ ン): スタティ ッ ク IP ファ イルへのパスを指定します。 このオプシ ョ ンを使用

しない場合、 デフォル トでは SIM.IPSTATIC_SOURCE_DIR プロジェク ト プロパティ値で指定されパスが使用さ

れます。

注記: -ip_user_files_dir オプシ ョ ンを指定する と、 デフォルトで IP スタティ ッ ク ファ イルが ipstatic とい

う名前の下位ディ レク ト リにエクスポート されます。 このオプシ ョ ンを -ipstatic_source_dir と共に指定する

と、 IP スタティ ッ ク ファ イルが -ipstatic_source_dir オプシ ョ ンで指定したパスにエクスポート されます。

-clean_dir (オプシ ョ ン): 中央ディ レク ト リからすべてのファイル (スタティ ッ ク、 ダイナミ ッ ク、 およびその他

のファイル) を削除します。

例:

次のコマンドは、 IP ダイナミ ッ ク ファ イルの char_fifo を

<project>/<project>.ip_user_files/ip/char_fifo ディ レク ト リに、 IP ダイナミ ッ ク ファ イルの

char_fifo を <project>/<project>.ip_user_files/ipstatic ディ レク ト リにエクスポート します。

% export_ip_user_files -of_objects [get_ips char_fifo]

ロジック シミ ュレーシ ョ ン 134UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 135: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 A

コンパイル、 エラボレーシ ョ ン、 シミ ュレーシ ョ ン、 ネッ ト リス ト、 アドバンス オプシ ョ ン

概要

Vivado IDE の Flow Navigator で [Simulation] → [Simulation Settings] をク リ ッ クする と、[Project Settings] の [Simulation]

ページが開き、 さまざまなコンパイル、 エラボレーシ ョ ン、 シ ミ ュレーシ ョ ン、 ネッ ト リ ス ト 、 アドバンス オプ

シ ョ ンを設定できます。

コンパイル オプシ ョ ン

[Compilation] タブでは、 コンパイラ指示子を定義および管理します。 これらの指示子はシ ミ ュレーシ ョ ン ファ イル

セッ トのプロパティ と して保存され、 Verilog および VHDL ソース ファ イルをシ ミ ュレーシ ョ ン用にコンパイルする

ため xvlog および xvhdl ユーティ リ ティで使用されます。

Vivado シミ ュレータのコンパイル オプシ ョ ン

表 A-1: Vivado シミ ュレータのコンパイル オプシ ョ ン

オプシ ョ ン 説明

Verilog options Verilog インクルード パスを設定し、 マクロを定義します。

Generics/Parameters options ジェネ リ ッ ク /パラ メーター値を指定します。

xsim.compile.xvlog.nosort コンパイル中に Verilog ファイルを並べ替えません。

xsim.compile.xvhdl.nosort コンパイル中に VHDL ファ イルを並べ替えません。

xsim.compile.xvlog.relax 厳しい HDL 言語チェッ ク ルールを緩和します。

xsim.compile.xvhdl.relax 厳しい HDL 言語チェッ ク ルールを緩和します。

xsim.compile.incremental インク リ メンタル コンパイルを実行します。

xsim.compile.xvlog.more_options 追加の XVLOG コンパイル オプシ ョ ンを指定します。

xsim.compile.xvhdl.more_options 追加の XVHDL コンパイル オプシ ョ ンを指定します。

ロジック シミ ュレーシ ョ ン 135UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 136: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 A: コンパイル、 エラボレーシ ョ ン、 シミ ュレーシ ョ ン、 ネッ ト リス ト、 アドバンス オプシ ョ ン

Questa Advanced Simulator のコンパイル オプシ ョ ン

ModelSim シミ ュレータのコンパイル オプシ ョ ン

IES シミ ュレータのコンパイル オプシ ョ ン

表 A-2: Questa Advanced Simulator のコンパイル オプシ ョ ン

オプシ ョ ン 説明

Verilog options Verilog インクルード パスを設定し、 マクロを定義します。

Generics/Parameters options ジェネ リ ッ ク /パラ メーター値を指定します。

questasim.compile.vhdl_syntax VHDL 構文を指定します。

questasim.compile.use_explicit_decl すべての信号を記録します。

questasim.compile.load_glbl GLBL モジュールを読み込みます。

questasim.compile.incremental インク リ メンタル コンパイルを実行します。

questasim.compile.vlog.more_options 追加の VLOG コンパイル オプシ ョ ンを指定します。

questasim.compile.vcom.more_options 追加の VCOM コンパイル オプシ ョ ンを指定します。

表 A-3: ModelSim シミ ュレータのコンパイル オプシ ョ ン

オプシ ョ ン 説明

Verilog options Verilog インクルード パスを設定し、 マクロを定義します。

Generics/Parameters options ジェネ リ ッ ク /パラ メーター値を指定します。

modelsim.compile.vhdl_syntax VHDL 構文を指定します。

modelsim.compile.use_explicit_decl すべての信号を記録します。

modelsim.compile.load_glbl GLBL モジュールを読み込みます。

modelsim.compile.incremental インク リ メンタル コンパイルを実行します。

modelsim.compile.vlog.more_options 追加の VLOG コンパイル オプシ ョ ンを指定します。

modelsim.compile.vcom.more_options 追加の VCOM コンパイル オプシ ョ ンを指定します。

表 A-4: IES シミ ュレータのコンパイル オプシ ョ ン

オプシ ョ ン 説明

Verilog options Verilog インクルード パスを設定し、 マクロを定義します。

Generics/Parameters options ジェネ リ ッ ク /パラ メーター値を指定します。

ies.compile.v93 VHDL 93 機能をイネーブルにします。

ies.compile.relax VHDL の解釈を緩和します。

ies.compile.load_glbl GLBL モジュールを読み込みます。

ies.compile.update 書き込みの前にユニッ トが 新であるかど うかをチェッ ク します。

ies.compile.ncvhdlmore_options 追加の NCVHDL コンパイル オプシ ョ ンを指定します。

ies.compile.ncvlog.more_options 追加の NCVLOG コンパイル オプシ ョ ンを指定します。

ロジック シミ ュレーシ ョ ン 136UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 137: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 A: コンパイル、 エラボレーシ ョ ン、 シミ ュレーシ ョ ン、 ネッ ト リス ト、 アドバンス オプシ ョ ン

VCS シミ ュレータのコンパイル オプシ ョ ン

エラボレーシ ョ ン オプシ ョ ン

[Elaboration] タブでは、 エラボレーシ ョ ン指示子を定義および管理します。 これらの指示子はシ ミ ュレーシ ョ ン ファ

イルセッ トのプロパティ と して保存され、 xelab ユーティ リ ティでシ ミ ュレーシ ョ ン スナップシ ョ ッ ト をエラボレー

トおよび生成する際に使用されます。 表のプロパティを選択する と、 そのプロパティの詳細が表示され、 値を変更で

きます。

Vivado シミ ュレータのエラボレーシ ョ ン オプシ ョ ン

Questa Advanced Simulator のエラボレーシ ョ ン オプシ ョ ン

表 A-5: VCS シミ ュレータのコンパイル オプシ ョ ン

オプシ ョ ン 説明

Verilog options Verilog インクルード パスを設定し、 マクロを定義します。

Generics/Parameters options ジェネ リ ッ ク /パラ メーター値を指定します。

vcs.compile.load_glbl GLBL モジュールを読み込みます。

vcs.compile.vhdlan.more_options 追加の VHDLAN コンパイル オプシ ョ ンを指定します。

vcs.compile.vlogan.more_options 追加の VLOGAN コンパイル オプシ ョ ンを指定します。

表 A-6: Vivado シミ ュレータのエラボレーシ ョ ン オプシ ョ ン

オプシ ョ ン 説明

xsim.elaborate.snapshot シ ミ ュレーシ ョ ン スナップシ ョ ッ ト名を指定します。

xsim.elaborate.debug_level シ ミ ュレーシ ョ ン デバッグの可視化レベルを選択します。 デフォルトは

typical です。

xsim.elaborate.relax 厳しい HDL 言語チェッ ク ルールを緩和します。

xsim.elaborate.mt_level 並列実行するサブコンパイル ジ ョブ数を指定します。

xsim.elaborate.load_glbl GLBL モジュールを読み込みます。

xsim.elaborate.rangecheck VHDL のランタイム値の範囲チェッ クをイネーブルにします。

xsim.elaborate.sdf_delay タイ ミ ング シ ミ ュレーシ ョ ンで使用する SDF タイ ミ ング遅延タイプを指定し

ます。

xsim.elaborate.xelab.more_option 追加の XELAB エラボレーシ ョ ン オプシ ョ ンを指定します。

表 A-7: Questa Advanced Simulator のエラボレーシ ョ ン オプシ ョ ン

オプシ ョ ン 説明

questasim.elaborate.acc デフォルトで 適化される可能性のあるシ ミ ュレーシ ョ ン オブ

ジェク トへのアクセスをイネーブルにします。 デフォルトは npr

です。

questasim.elaborate.vopt.more_options 追加の VOPT エラボレーシ ョ ン オプシ ョ ンを指定します。

ロジック シミ ュレーシ ョ ン 137UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 138: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 A: コンパイル、 エラボレーシ ョ ン、 シミ ュレーシ ョ ン、 ネッ ト リス ト、 アドバンス オプシ ョ ン

ModelSim シミ ュレータのエラボレーシ ョ ン オプシ ョ ン

IES シミ ュレータのエラボレーシ ョ ン オプシ ョ ン

VCS シミ ュレータのエラボレーシ ョ ン オプシ ョ ン

シ ミ ュレーシ ョ ン オプシ ョ ン

[Simulation] タブでは、 シ ミ ュレーシ ョ ン指示子を定義および管理します。 これらの指示子はシ ミ ュレーシ ョ ン ファ

イルセッ トのプロパティ と して保存され、 xsim アプリ ケーシ ョ ンで現在のプロジェク ト をシ ミ ュレーシ ョ ンする際

に使用されます。 表のプロパティを選択する と、 そのプロパティの詳細が表示され、 値を変更できます。

Vivado シミ ュレータのシミ ュレーシ ョ ン オプシ ョ ン

表 A-8: ModelSim のエラボレーシ ョ ン オプシ ョ ン

オプシ ョ ン 説明

modelsim.elaborate.acc デフォルトで 適化される可能性のあるシ ミ ュレーシ ョ ン オブ

ジェク トへのアクセスをイネーブルにします。

modelsim.elaborate.vopt.more_options 追加の VOPT エラボレーシ ョ ン オプシ ョ ンを指定します。

表 A-9: IES シミ ュレータのエラボレーシ ョ ン オプシ ョ ン

オプシ ョ ン 説明

ies.elaborate.update 書き込みの前にユニッ トが 新であるかど うかをチェッ ク します。

ies.elaborate.ncelab.more_options 追加の ncelab エラボレーシ ョ ン オプシ ョ ンを指定します。

表 A-10: VCS シミ ュレータのエラボレーシ ョ ン オプシ ョ ン

オプシ ョ ン 説明

vcs.elaborate.debug_pp プロセス後のデバッグ アクセスをイネーブルにします。

vcs.elaborate.vcs.more_options 追加の VCS エラボレーシ ョ ン オプシ ョ ンを指定します。

表 A-11: Vivado シミ ュレータのシミ ュレーシ ョ ン オプシ ョ ン

オプシ ョ ン 説明

xsim.simulate.runtime Vivado シ ミ ュレータのシ ミ ュレーシ ョ ン実行時間を指定します。 シ ミ ュ

レーシ ョ ン スナップシ ョ ッ ト を読み込む際はブランクにし、 ユーザー入力

を待つよ うにします。

xsim.simulate.log_all_signals すべてのオブジェク ト信号を記録します。

xsim.simulate.wdb シ ミ ュレーシ ョ ン波形データベース ファ イルを指定 します。

xsim.simulate.saif SAIF ファ イル名を指定します。

xsim.simulate.saif_scope 消費電力見積も りが必要なデザイン階層インスタンス名を指定します。

xsim.simulate.saif_all_signals SAIF ファ イルを生成するため、 テス ト中のデザインのオブジェク ト信号を

すべて記録します。

xsim.simulate.xsim.more_option Vivado シ ミ ュレータの追加のシ ミ ュレーシ ョ ン オプシ ョ ンを指定します。

ロジック シミ ュレーシ ョ ン 138UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 139: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 A: コンパイル、 エラボレーシ ョ ン、 シミ ュレーシ ョ ン、 ネッ ト リス ト、 アドバンス オプシ ョ ン

Questa Advanced Simulator のシミ ュレーシ ョ ン オプシ ョ ン

ModelSim シミ ュレータのシミ ュレーシ ョ ン オプシ ョ ン

IES シミ ュレータのシミ ュレーシ ョ ン オプシ ョ ン

表 A-12: Questa Advanced Simulator のシミ ュレーシ ョ ン オプシ ョ ン

オプシ ョ ン 説明

questasim.simulate.runtime シ ミ ュレーシ ョ ン実行時間を指定します。

questasim.simulate.log_all_signals すべての信号を記録します。

questasim.simulate.custom_do カスタムの do ファ イルの名前を指定します。

questasim.simulate.custom_udo カスタム ユーザー do ファ イルの名前を指定します。

questa.simulate.ieee_warning IEEE 警告を表示しません。

questasim.simulate.sdf_delay sdf アノテーシ ョ ンの遅延タイプを指定します。

questasim.simulate.saif SAIF ファ イルを指定します。

questasim.simulate.saif_scope 消費電力見積も りが必要なデザイン階層インスタンス名を指定します。

questasim.simulate.vsim.more_option 追加の VSIM シ ミ ュレーシ ョ ン オプシ ョ ンを指定します。

表 A-13: ModelSim シミ ュレータのシミ ュレーシ ョ ン オプシ ョ ン

オプシ ョ ン 説明

modelsim.simulate.runtime シ ミ ュレーシ ョ ン実行時間を指定します。

modelsim.simulate.log_all_signals すべての信号を記録します。

modelsim.simulate.custom_do カスタムの do ファ イルの名前を指定します。

modelsim.simulate.custom_udo カスタム ユーザー do ファ イルの名前を指定します。

modelsim.simulate.sdf_delay sdf アノテーシ ョ ンの遅延タイプを指定します。

modelsim.simulate.ieee_warning IEEE 警告を表示しません。

modelsim.simulate.saif SAIF ファ イルを指定します。

modelsim.simulate.saif_scope 消費電力見積も りが必要なデザイン階層インスタンス名を指定します。

modelsim.simulate.vsim.more_option 追加の VSIM シ ミ ュレーシ ョ ン オプシ ョ ンを指定します。

表 A-14: IES シミ ュレータのシミ ュレーシ ョ ン オプシ ョ ン

オプシ ョ ン 説明

ies.simulate.runtime シ ミ ュレーシ ョ ン実行時間を指定します。

ies.simulate.log_all_signals すべての信号を記録します。

ies.simulate.update 書き込みの前にユニッ トが 新であるかど うかをチェッ ク します。

ies.simulate.ieee_warning IEEE 警告を表示しません。

ies.simulate.saif SAIF ファ イル名を指定します。

ies.simulate.saif_scope 消費電力見積も りが必要なデザイン階層インスタンス名を指定します。

ies.simulate.ncsim.more_option 追加の NCSIM シ ミ ュレーシ ョ ン オプシ ョ ンを指定します。

ロジック シミ ュレーシ ョ ン 139UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 140: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 A: コンパイル、 エラボレーシ ョ ン、 シミ ュレーシ ョ ン、 ネッ ト リス ト、 アドバンス オプシ ョ ン

VCS シミ ュレータのシミ ュレーシ ョ ン オプシ ョ ン

ネッ ト リス ト オプシ ョ ン

[Netlist] タブでは、 Verilog ネッ ト リ ス トの SDF アノテーシ ョ ンおよび SDF 遅延で取り込まれるプロセス コーナーに

関するネッ ト リ ス ト コンフ ィギュレーシ ョ ン オプシ ョ ンを指定します。 これらのオプシ ョ ンはシ ミ ュレーシ ョ ン

ファ イルセッ トのプロパティ と して保存され、 シ ミ ュレーシ ョ ン用ネッ ト リ ス ト を生成する際に使用されます。

Vivado シミ ュレータのネッ ト リス ト オプシ ョ ン

注記: すべてのサードパーティ シ ミ ュレータ (Questa Advanced Simulator、 ModelSim シ ミ ュレータ、 IES、 および VCS

シ ミ ュレータ ) のネッ ト リ ス ト オプシ ョ ンは、 Vivado シ ミ ュレータのネッ ト リ ス ト オプシ ョ ンと同様です。

アドバンス シミ ュレーシ ョ ン オプシ ョ ン

[Advance] タブには [Include all design sources for simulation] オプシ ョ ンがあ り ます。 このオプシ ョ ンは、 デフォルトで

オンになっています。 このオプシ ョ ンをオンにする と、 デザイン ソースからのファイルすべてと現在のシ ミ ュレー

シ ョ ン セッ トからのファイルが、 シ ミ ュレーシ ョ ンで使用されます。 デザイン ソースを変更した場合でも、 ビヘイ

ビアー シ ミ ュレーシ ョ ンを実行する と きにその変更が反映されます。

重要: これは、 アドバンス ユーザー用の機能です。 オフににする と、 予期せぬ結果となる可能性があ り ます。

[Include all design sources for simulation] チェッ ク ボッ クスはデフォルトでオンになっています。 チェッ ク ボッ クスが

オンになっていれば、 シ ミ ュレーシ ョ ン セッ トにアウ ト オブ コンテキス ト (OOC) の IP、 IP インテグレーター ファ

イル、 および DCP が含まれます。

このチェッ ク ボッ クスをオフにする と、 シ ミ ュレーシ ョ ンする必要のあるファ イルのみを含めるこ とができますが、先に述べたよ うに、 予期せぬ結果となる可能性があ り ます。

注記: アドバンス シ ミ ュレーシ ョ ン オプシ ョ ンはどのシ ミ ュレータでも同じです。

表 A-15: VCS シミ ュレータのシミ ュレーシ ョ ン オプシ ョ ン

オプシ ョ ン 説明

vcs.simulate.runtime シ ミ ュレーシ ョ ン実行時間を指定します。

vcs.simulate.log_all_signals すべての信号を記録します。

vcs.simulate.saif SAIF ファ イル名を指定します。

vcs.simulate.saif_scope 消費電力見積も りが必要なデザイン階層インスタンス名を指定します。

vcs.simulate.vcs.more_option 追加の VCS シ ミ ュレーシ ョ ン オプシ ョ ンを指定します。

表 A-16: Vivado シミ ュレータのネッ ト リス ト オプシ ョ ン

オプシ ョ ン 説明

-sdf_anno -sdf_anno オプシ ョ ンを使用します。 このオプシ ョ ンはデフォルトでオンになってい

ます。

-process_corner -process_corner を fast または slow に設定します。

ロジック シミ ュレーシ ョ ン 140UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 141: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 B

Vivado シミュレータの SystemVerilog サポート

概要 Vivado® シ ミ ュレータでは、 合成可能な SystemVerilog RTL の一部がサポート されます。 すべてを含むリ ス トは、

表 B-1 を参照して ください。

特定のファイルで SystemVerilog を使用

Vivado シ ミ ュレータのデフォルトでは、 .v ファ イルは Verilog 2001 構文で、 .sv ファ イルは SystemVerilog 構文でコ

ンパイルされます。

ロジック シミ ュレーシ ョ ン 141UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 142: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 B: Vivado シミ ュレータの SystemVerilog サポート

Vivado IDE で特定の .v ファ イルに SystemVerilog を使用するには、 次の手順に従います。

1. ファ イルを右ク リ ッ ク して [Set File Type] をク リ ッ ク します (次の図を参照)。

X-Ref Target - Figure B-1

図 B-1: コンテキスト メニューの [Set File Type] コマンド

ロジック シミ ュレーシ ョ ン 142UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 143: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 B: Vivado シミ ュレータの SystemVerilog サポート

2. [FileSet Type] ダイアログ ボッ クスで、 [File type] を [Verilog] から [SystemVerilog] に変更し、 [OK] をク リ ッ ク し

ます。

または、 Tcl コンソールで次の Tcl コマンドを使用します。

set_property file_type SystemVerilog [get_files <filename>.v]

スタンドアロンまたは PRJ モードでの SystemVerilog の実行

スタンドアロン モード

SystemVerilog ファ イルを読み込むには、 次のよ うに xvlog に -sv オプシ ョ ンを使用します。

xvlog -sv <Design file list> xvlog -sv -work <LibraryName> <Design File List> xvlog -sv -f <FileName> [Where FileName contain path of test cases]

PRJ モード

Vivado シ ミ ュレータを prj ベースのフローで実行する場合は、 verilog または vhdl のよ うにファ イル タイプを

sv に指定します。

xvlog -prj <prj File>xelab -prj <prj File> <topModuleName> <other options>

prj ファ イルのエンティティは次のよ うに表示されます。

verilog library1 <FileName>sv library1 <FileName> [File parsed in SystemVerilog mode]vhdl library2 <FileName>sv library3 <FileName> [File parsed in SystemVerilog mode]

X-Ref Target - Figure B-2

図 B-2: [File Type] を選択

ロジック シミ ュレーシ ョ ン 143UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 144: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 B: Vivado シミ ュレータの SystemVerilog サポート

表 B-1: SystemVerilog 1800-2009 の合成可能なセッ ト

プライマリ コンスト ラク ト セカンダリ コンスト ラク ト LRM セクシ ョ ン ステータス

データ型 6

単一または集合型 6.4 サポート あ り

ネッ トおよび変数 6.5 サポート あ り

変数宣言 6.8 サポート あ り

ベクター宣言 6.9 サポート あ り

2 ステート (2 値) および 4 ステート (4 値)

データ型

6.11.2 サポート あ り

単一および符号なし整数データ型 6.11.3 サポート あ り

real、 shortreal、 および realtime データ型 6.12 サポート あ り

ユーザー定義型 6.18 サポート あ り

列挙型 6.19 サポート あ り

新規データ型を列型と して定義 6.19.1 サポート あ り

列挙型の範囲 6.19.2 サポート あ り

型チェッ ク 6.19.3 サポート あ り

数式の列挙型 6.19.4 サポート あ り

列挙型メ ソ ッ ド 6.19.5 サポート あ り

型パラ メーター 6.20.3 サポート あ り

Const 定数 6.20.6 サポート あ り

型演算子 6.23 サポート あ り

キャス ト演算子 6.24.1 サポート あ り

$cast ダイナミ ッ ク キャス ト 6.24.2 サポート なし

ビッ ト ス ト リーム キャス ト 6.24.3 サポート あ り

複合データ型 7

構造体 (struct) 7.2 サポート あ り

パッ ク型/アンパッ ク型構造体 7.2.1 サポート あ り

構造体への代入 7.2.2 サポート あ り

共用体 (union) 7.3 サポート あ り

パッ ク型/アンパッ ク型共用体 7.3.1 サポート あ り

タグ付き共用体 (union) 7.3.2 サポート なし

パッ ク型配列 7.4.1 サポート あ り

アンパッ ク型配列 7.4.2 サポート あ り

配列の演算 7.4.3 サポート あ り

多次元配列 7.4.5 サポート あ り

配列のインデッ クスおよびスライス 7.4.6 サポート あ り

配列代入 7.6 サポート あ り

サブルーチンへの引数と しての配列 7.7 サポート あ り

ロジック シミ ュレーシ ョ ン 144UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 145: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 B: Vivado シミ ュレータの SystemVerilog サポート

配列クエリ関数 7.11 サポート あ り

配列操作メ ソ ッ ド (キュー型を戻さないメ

ソ ッ ド )

7.12 サポート あ り

プロセス 9

組み合わせロジッ クの always_comb プロ

シージャ

9.2.2 サポート あ り

暗示的な always_comb 設定 9.2.2.1 サポート あ り

ラ ッチ ロジッ クの always_latch プロ

シージャ

9.2.2.3 サポート あ り

順次ロジッ クの always_ff プロシージャ 9.2.2.4 サポート あ り

順次ブロッ ク 9.3.1 サポート あ り

並列ブロッ ク 9.3.2 サポート なし

手続きタイ ミ ング制御 9.4 サポート あ り

条件付きイベン ト制御 9.4.2.3 サポート あ り

順次イベン ト 9.4.2.4 サポート なし

代入文 10

連続代入文 10.3.2 サポート あ り

変数宣言代入 (変数初期化) 10.5 サポート あ り

代入のよ うなコンテキス ト 10.8 サポート あ り

配列代入パターン 10.9.1 サポート あ り

構造代入パターン 10.9.2 サポート あ り

アンパッ ク型配列連結 10.10 サポート あ り

ネッ ト エイ リ アス 10.11 サポート なし

演算子および演算式 11

定数式 11.2.1 サポート あ り

集合体式 11.2.2 サポート あ り

実数オペランドを使用する演算子 11.3.1 サポート あ り

ロジッ ク (4 ステート ) およびビッ ト (2 ス

テート ) 型の演算

11.3.4 サポート あ り

演算式内の代入 11.3.6 サポート あ り

代入演算子 11.4.1 サポート あ り

インク リ メン トおよびデク リ メン ト演算子 11.4.2 サポート あ り

符号なしおよび符号付き型を使用した演算

11.4.3.1 サポート あ り

ワイルドカード等化演算子 11.4.6 サポート あ り

連結演算子 11.4.12 サポート あ り

メ ンバーシップ演算子の設定 11.4.13 サポート あ り

表 B-1: SystemVerilog 1800-2009 の合成可能なセッ ト (続き)

プライマリ コンスト ラク ト セカンダリ コンスト ラク ト LRM セクシ ョ ン ステータス

ロジック シミ ュレーシ ョ ン 145UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 146: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 B: Vivado シミ ュレータの SystemVerilog サポート

stream_expressions の連結 11.4.14.1 サポート あ り

ジェネ リ ッ ク ス ト リームの並び替え 11.4.14.2 サポート あ り

代入ターゲッ ト と しての連結のス ト リーミ

ング (アンパッ ク型)

11.4.14.3 サポート なし

動的にサイズが決定されるデータのス ト

リーミ ング

11.4.14.4 サポート なし

手続きプログラム文 12

Unique-if、 unique0-if および priority-if

12.4.2 サポート あ り

B-if、 unique0-if、 および priority-if コ

ンス ト ラ ク トで生成された違反レポート

12.4.2.1 サポート あ り

if 文違反レポートおよび複数プロセス文 12.4.2.2 サポート あ り

unique-case、 unique0-case、 および priority-case

12.5.3 サポート あ り

unique-case、 unique0-case、 および

priority-case コンス ト ラ ク トで生成さ

れた違反レポート

12.5.3.1 サポート あ り

case 文違反レポートおよび複数プロセス文 12.5.3.2 サポート あ り

メ ンバーシップ case 文の設定 12.5.4 サポート あ り

パターン一致条件文 12.6 サポート なし

ループ文 12.7 サポート あ り

ジャンプ文 12.8 サポート あ り

タスク 13.3

スタティ ッ クおよび自動タスク 13.3.1 サポート あ り

メモ リ使用量および同時処理アクティベー

シ ョ ン

13.3.2 サポート あ り

関数 13.4

戻り値と void 関数 13.4.1 サポート あ り

スタティ ッ クおよび自動関数 13.4.2 サポート あ り

定数関数 13.4.3 サポート あ り

関数呼び出しで生成されるバッ クグラウン

ド プロセス

13.4.4 サポート なし

サブルーチン呼び出しおよび引数を渡す

13.5

値渡し 13.5.1 サポート あ り

参照渡し 13.5.2 サポート あ り

デフォルトの引数値 13.5.3 サポート あ り

名前による引数バインド 13.5.4 サポート あ り

表 B-1: SystemVerilog 1800-2009 の合成可能なセッ ト (続き)

プライマリ コンスト ラク ト セカンダリ コンスト ラク ト LRM セクシ ョ ン ステータス

ロジック シミ ュレーシ ョ ン 146UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 147: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 B: Vivado シミ ュレータの SystemVerilog サポート

オプシ ョ ンの引数リ ス ト 13.5.5 サポート あ り

インポートおよびエクスポート関数 13.6 サポート なし

タスクおよび関数名 13.7 サポート あ り

ユーティ リテ ィ システム タスクおよびシステム関数 (合成可能セッ トのみ)

20 サポート あ り

I/O システム タスクおよびシステム関数 (合成可能セッ トのみ)

21 サポート あ り

コンパイラ指示子 22 サポート あ り

モジュールおよび階層 23

デフォルトのポート値 23.2.2.4 サポート あ り

上位モジュールおよび $root 23.3.1 サポート あ り

モジュール インスタンシエーシ ョ ン構文 23.3.2 サポート あ り

入れ子のモジュール 23.4 サポート あ り

外部モジュール 23.5 サポート あ り

階層名 23.6 サポート あ り

メ ンバー選択および階層名 23.7 サポート あ り

上向きの名前参照 23.8 サポート あ り

モジュール パラ メーターの無効化 23.10 サポート あ り

スコープまたはインスタンスへの補助コー

ドのバインド

23.11 サポート なし

インターフェイス 25

インターフェイス構文 25.3 サポート あ り

入れ子のインターフェイス 25.3 サポート あ り

インターフェイスのポート 25.4 サポート あ り

指定ポート バンドルの例 25.5.1 サポート あ り

ポート バンドルの接続例 25.5.2 サポート あ り

ポート バンドルのジェネ リ ッ ク インター

フェイスへの接続例

25.5.3 サポート あ り

modport 演算式 25.5.4 サポート あ り

ク ロ ッキング ブロ ッ クおよび modport 25.5.5 サポート なし

インターフェイスおよび指定ブロ ッ ク 25.6 サポート なし

インターフェイスでのタスクの使用例 25.7.1 サポート あ り

modport でのタスクの使用例 25.7.2 サポート あ り

タスクおよび関数のエクスポート例 25.7.3 サポート あ り

複数タスクのエクスポート例 25.7.4 サポート なし

パラ メーター指定されたインターフェイス 25.8 サポート あ り

表 B-1: SystemVerilog 1800-2009 の合成可能なセッ ト (続き)

プライマリ コンスト ラク ト セカンダリ コンスト ラク ト LRM セクシ ョ ン ステータス

ロジック シミ ュレーシ ョ ン 147UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 148: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 B: Vivado シミ ュレータの SystemVerilog サポート

ダイナミ ック タイプ

次の表に示すよ うに、 Vivado シ ミ ュレータには、 よ く使用されるダイナミ ッ ク タイプの一部のサポートが追加され

ています。

仮想インターフェイス 25.9 サポート なし

パッケージ 26

パッケージ宣言 26.2 サポート あ り

パッケージでのデータ参照 26.3 サポート あ り

モジュール ヘッダーでのパッケージの使用 26.4 サポート あ り

パッケージからのインポート された名前の

エクスポート

26.6 サポート あ り

std ビルト イン パッケージ 26.7 サポート なし

generate コンスト ラク ト 27 サポート あ り

表 B-2: サポート されるダイナミ ック タイプ コンスト ラク ト

プライマリ コンスト ラク ト セカンダリ コンスト ラク ト LRM セクシ ョ ン ステータス

文字列データ型 6.16 サポート あ り

文字列演算子 (表 6-9) 6.16 サポート あ り

Len() 6.16.1 サポート あ り

Putc() 6.16.2 サポート あ り

Getc() 6.16.3 サポート あ り

Toupper() 6.16.4 サポート あ り

Tolower() 6.16.5 サポート あ り

Compare 6.16.6 サポート あ り

Icompare() 6.16.7 サポート あ り

Substr() 6.16.8 サポート あ り

Atoi()、 atohex()、 atooct()、atobin()

6.16.9サポート あ り

Atoreal() 6.16.10 サポート あ り

Itoa() 6.16.11 サポート あ り

Hextoa() 6.16.12 サポート あ り

Octtoa() 6.16.13 サポート あ り

Bintoa() 6.16.14 サポート あ り

Realtoa() 6.16.15 サポート あ り

動的配列 7.5 サポート あ り

動的配列 (新規) 7.5.1 サポート あ り

表 B-1: SystemVerilog 1800-2009 の合成可能なセッ ト (続き)

プライマリ コンスト ラク ト セカンダリ コンスト ラク ト LRM セクシ ョ ン ステータス

ロジック シミ ュレーシ ョ ン 148UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 149: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 B: Vivado シミ ュレータの SystemVerilog サポート

サイズ 7.5.2 サポート あ り

削除 7.5.3 サポート あ り

連想配列 7.8 サポート あ り

ワイルドカード インデッ クス 7.8.1 サポート あ り

文字列インデッ クス 7.8.2 サポート あ り

ク ラス インデッ クス 7.8.3 サポート あ り

積分インデッ クス 7.8.4 サポート あ り

その他のユーザー定義型 7.8.5 サポート あ り

無効インデッ クスへのアクセス 7.8.6 サポート あ り

連想配列メ ソ ッ ド 7.9 サポート あ り

Num() および Size() 7.9.1 サポート あ り

Delete() 7.9.2 サポート あ り

Exists() 7.9.3 サポート あ り

First() 7.9.4 サポート あ り

Last() 7.9.5 サポート あ り

Next() 7.9.6 サポート あ り

Prev() 7.9.7 サポート あ り

ト ラバース メ ソ ッ ドへの引数 7.9.8 サポート あ り

連想配列代入 7.9.9 サポート あ り

連想配列引数 7.9.10 サポート あ り

連想配列リテラル 7.9.11 サポート あ り

キュー 7.10 サポート あ り

キュー演算子 7.10.1 サポート あ り

キュー メ ソ ッ ド 7.10.2 サポート あ り

Size() 7.10.2.1 サポート あ り

Insert() 7.10.2.2 サポート あ り

Delete() 7.10.2.3 サポート あ り

Pop_front() 7.10.2.4 サポート あ り

Pop_back() 7.10.2.5 サポート あ り

Push_front() 7.10.2.6 サポート あ り

Push_back() 7.10.2.7 サポート あ り

キューのエレ メン トへの参照の

持続性

7.10.3サポート あ り

代入およびアンパッ ク型配列連

結を使用したキューのアップ

デート

7.10.4

サポート あ り

境界付きキュー 7.10.5 サポート あ り

表 B-2: サポート されるダイナミ ック タイプ コンスト ラク ト (続き)

プライマリ コンスト ラク ト セカンダリ コンスト ラク ト LRM セクシ ョ ン ステータス

ロジック シミ ュレーシ ョ ン 149UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 150: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 B: Vivado シミ ュレータの SystemVerilog サポート

ク ラス 8 サポート あ り

ク ラス ジェネラル 8.1 サポート あ り

概要 8.2 サポート あ り

構文 8.3 サポート あ り

オブジェク ト (ク ラス インスタ

ンス)

8.4サポート あ り

オブジェク ト プロパティおよび

オブジェク ト パラ メーター

データ

8.5

サポート あ り

オブジェク ト メ ソ ッ ド 8.6 サポート あ り

コンス ト ラ ク ター 8.7 サポート あ り

スタティ ッ ク ク ラス プロパ

ティ

8.8サポート あ り

スタティ ッ ク メ ソ ッ ド 8.9 サポート あ り

This 8.10 サポート あ り

割り当て、 名前変更、 およびコ

ピー

8.11サポート あ り

継承およびサブク ラス 8.12 サポート あ り

無効になる メンバー 8.13 サポート あ り

スーパー 8.14 サポート あ り

キャス ト演算子 8.15 サポート あ り

チェーン コンス ト ラ ク ター 8.16 サポート あ り

データ非表示およびカプセル化 8.17 サポート あ り

定数ク ラス プロパティ 8.18 サポート あ り

仮想メ ソ ッ ド 8.19 サポート あ り

抽象ク ラスおよび純仮想メ ソ ッ

8.20サポート なし

多様性: ダイナミ ッ ク メ ソ ッ ド

ルッ クアップ

8.21サポート あ り

ク ラス スコープ解決演算子 :: 8.22 サポート あ り

アウ ト オブ ブロ ッ ク宣言 8.23 サポート あ り

パラ メーター化されたク ラス 8.24 サポート あ り

パラ メーター化されたク ラスの

ク ラス解決演算子

8.24.1サポート あ り

Typedef ク ラス 8.25 サポート あ り

ク ラスおよびス ト ラ クチャ 8.26 サポート あ り

メモ リ管理 8.27 サポート あ り

表 B-2: サポート されるダイナミ ック タイプ コンスト ラク ト (続き)

プライマリ コンスト ラク ト セカンダリ コンスト ラク ト LRM セクシ ョ ン ステータス

ロジック シミ ュレーシ ョ ン 150UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 151: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 C

Vivado シミ ュレータの VHDL 2008 サポート

概要 Vivado® シ ミ ュレータでは、 VHDL 2008(IEEE 1076-2008) のサブセッ トがサポート されます。 すべてを含むリ ス トは、

表 C-1 を参照して ください。

コンパイルおよびシミ ュレーシ ョ ン

Vivado シ ミ ュレータ実行ファイルの xvhdl は、 VHDL のデザイン ユニッ ト をパーサー ダンプ (.vdb) に変換するた

めに使用します。 xvhdl のデフォルト モードでは、 VHDL 93 モードでコンパイルされます。 VHDL 2008 モードで

ファイルをコンパイルするには、 xvhdl で -2008 オプシ ョ ンを指定する必要があ り ます。

たとえば、 top.vhdl というデザインを VHDL 2008 でコンパイルするには、 次のコマンド ラインを使用します。

xvhdl -2008 -work mywork top.vhdl

Vivado シ ミ ュレータ実行ファイル xelab は、 デザインをエラボレート して、 シ ミ ュレーシ ョ ン用の実行イ メージを

作成するために使用します。

xelab では、 次のいずれかを実行できます。

• xvhdl で作成されたパーサー ダンプのエラボレート

• VHDL ソース ファ イルを直接読み込み

xvhdl で作成されたパーサー ダンプをエラボレートするのに必要なオプシ ョ ンはあ り ません。 xelab で

-vhdl2008 を指定する と、 VHDL ソース ファ イルが直接使用できます。

例 1:

xelab top -s mysim; xsim mysim -R

例 2:

xelab -vhdl2008 top.vhdl top -s mysim; xsim mysim -R

ロジック シミ ュレーシ ョ ン 151UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 152: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 C: Vivado シミ ュレータの VHDL 2008 サポート

コマンド ラインで xvhdl および xelab に VHDL ファ イルを指定する代わりに、PRJ ファ イルを使用できます。デザ

インに top.vhdl (2008 モード ) および bot.vhdl (93 モード ) という 2 つのファイルがある場合、 次のよ うに

example.prj という名前のプロジェク ト ファ イルを作成できます。

プロジェク ト ファ イルでは、 各行をファイルの言語タイプで開始し、 xil_defaultlib などのライブラ リ名をその

後に記述します。 ファ イルが複数ある場合は、 名前をスペースで区切り ます。 VHDL 93 の場合、 言語タイプと して

vhdl を使用する必要があ り ます。 VHDL 2008 の場合は、 vhdl2008 を使用して ください。

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

xelab -prj example.prj xil_defaultlib.top -s mysim; xsim mysim -R

また、 VHDL 93 および VHDL 2008 デザイン ユニッ ト を混合するには、 xvhdl で正しい言語モードを指定してファイ

ルを別々にコンパイルし、 デザインの 上位をエラボレート します。 たとえば、 bot.vhdl ファ イルに bot という

VHDL 93 モジュールが含まれ、 top.vhdl ファ イルに top という VHDL 2008 モジュールが含まれる場合、 次のよ う

にコンパイルします。

xvhdl bot.vhdlxvhdl -2008 top.vhdlxelab -debug typical top -s mysim

実行ファイルを xelab で生成したら、 シ ミ ュレーシ ョ ンを通常どおりに実行できます。

例 1:

xsim mysim -gui

例 2:

xsim mysim -R

固定および浮動小数点パッケージ: VHDL 2008 で導入された新しい改善された IEEE 規格パッケージです。 VHDL 93

規格の固定または浮動小数点パッケージを使用している場合は、 合成は可能ですが、 シ ミ ュレーシ ョ ン用に HDL を

編集する必要があ り ます。

たとえば、 VHDL 93 で固定小数点パッケージを使用している と します。

library ieee;use ieee.fixed_pkg.all;

VHDL 2008 では次を使用します。

library ieee_proposed;use ieee_proposed.fixed_pkg.all;

浮動小数点パッケージの場合も同様に変更します。

vhdl xil_defaultlib bot.vhdl

vhdl2008 xil_defaultlib top.vhdl

ロジック シミ ュレーシ ョ ン 152UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 153: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 C: Vivado シミ ュレータの VHDL 2008 サポート

サポート される機能

表 C-1: VHDL 2008 (IEEE1076-2008) でサポート される機能: アーリー アクセス

機能 例/コ メン ト

固定および浮動小数点パッケージ、 符号なしビッ ト

などを含む、 コンパイル済み VHDL 2008 STD およ

び IEEE パッケージ

XSIM がまだサポート されていない一般的なパッケージな

ど、 その他の言語機能によって制限されます。

新し く追加された std 関数はすべてまだサポート されていま

せん。 stop および finish はサポート されています。

単純化されたセンシテビティ リ ス ト process(all)

条件および選択した逐次文 process(clk)... with x select y := "111" when "110", "000" when others;

a := '1' when b = '1' else '0' when b = '0';...

保護付き型 type areaOfSquare is protected procedure setx(newx : real); impure function area return real;end protected;

type areaOfSquare is protected body variable x : real = 0.0;...

注記: 保護付き型の共有変数は HDL シ ミ ュレーシ ョ ンでサポート さ

れますが、 Tcl および GUI ではまだ保護付き型の共有変数の値は検

証できません。

プロシージャ宣言でのキーワード parameter procedure proc parameter (a : in std_logic)

サブタイプ定義の配列要素分解関数 type bit_word is array (natural range <>) of bit;function resolve_array (s : bit_word) return bit;subtype resolved_array is (resolve_array) bit_word;

ブロ ッ ク コ メン ト /*X <= 1;Process(all)...*/

定義済み配列型 boolean_vector、 integer_vector など

ジェネ リ ッ ク と して渡される型 entity test is generic (type data_type); port ( x : in data_type; s : out data_type);end entity test;

ロジック シミ ュレーシ ョ ン 153UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 154: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D

Vivado シミ ュレータのダイレク ト プログラミング インターフェイス (DPI)

概要

SystemVerilog ダイレク ト プログラ ミ ング インターフェイス (DPI) を使用する と、 C コード と SystemVerilog コードを

結合でき、 SystemVerilog コードで C 関数を呼び出したり、 C 関数から SystemVerilog タスクまたは関数をコールバッ

ク した りできます。 Vivado® シ ミ ュレータでは、 次に説明するよ うに、 DPI タスク /関数と してのオープン配列を除

き、 すべてのコンス ト ラ ク ト をサポート されます。

C コードのコンパイル

C コードをオブジェク ト コードに変換し、 複数のオブジェク ト コード ファ イルを共有ライブラ リ (Windows の場合

は .a、 Linux の場合は .so) にリ ンクするため、 xsc という新しいコンパイラ実行ファイルが提供されています。

xsc コンパイラは、 <Vivado installation>/bin ディレク ト リに含まれます。 -sv_lib を使用する と、 C コー

ドを含む共有ライブラ リ を Vivado シ ミ ュレータ /エラボレーター実行ファイルに変換できます。 xsc コンパイラは、

gcc などの C コンパイラ と同じよ うに機能します。 xsc コンパイラでは、 次が呼び出されます。

• LLVM clang コンパイラ : C コードをオブジェク ト コードに変換

• GNU リ ンカー: C ファ イルに対応する 1 つまたは複数のオブジェク ト ファ イルから共有ライブラ リ (Windows の

場合は .a、 Linux の場合は .so) を作成

xsc コンパイラで生成された共有ライブラ リは、 次に示すよ うに xelab に新し く追加されたオプシ ョ ンを 1 つまたは

複数使用する と、 Vivado シ ミ ュレータ カーネルにリ ンク されます。 xelab で作成されたシ ミ ュレーシ ョ ン スナップ

シ ョ ッ トには、 コンパイルされた C コード と コンパイルされた SystemVerilog コードを接続して、 C と SystemVerilog

間の効率的な通信を可能にする機能があ り ます。

ロジック シミ ュレーシ ョ ン 154UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 155: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

xsc コンパイラ

xsc コンパイラを使用する と、 1 つまたは複数の C ファ イルから共有ライブラ リ (Windows の場合は .a、 Linux の場合

は .so) を作成できます。 この xsc で生成された共有ライブラ リ を残りのデザインに含めるには、 xelab を使用しま

す。 共有ライブラ リ を作成するには、 次のプロセスを使用します。

1 段階プロセス :

-compile や -link オプシ ョ ンを付けずに、 すべての C ファ イルを xsc に渡します。

2 段階プロセス :

xsc -compile <C files> xsc -link <object files>

使用法:

xsc [options] <files...>

オプシ ョ ン

オプシ ョ ンには、 ダブル ダッシュ (--) かダッシュ (-) を使用できます。

表 D-1: XSC コンパイラ オプシ ョ ン

-compile オブジェク ト ファ イルをソース C ファ イルからのみ生成します。 リ ンク

ステージは実行されません。

-f [ -file ] arg 指定したファイルから追加オプシ ョ ンを読み出します。

-h [ -help ] ヘルプ メ ッセージを表示します。

-i [ -input_file ] arg コンパイルまたはリ ンク用の入力ファイルを リ ス ト します (1 つのオプ

シ ョ ンに 1 つのファイル)。

-link リ ンク ステージのみを実行して、オブジェク ト ファ イル (.a または .so)

から共有ライブラ リ を生成します。

-mt arg (=auto) 並列実行可能なサブコンパイル ジ ョブの数を指定します。 有効な値は次

のとおりです。

• auto: 自動

• 1 よ り大きい整数

• off: マルチスレッ ドをオフ

デフォルト : auto

-o [ -output ] arg 出力される共有ライブラ リの名前を指定します。 -link オプシ ョ ンとの

み使用可能です。

-work arg 出力される作業ディ レク ト リ を指定します。 デフォルトは

<current_directory>/xsim.dir/xsc です。

-v [ -verbose ] arg 表示メ ッセージの詳細レベルを指定します。

有効な値: 0、 1

デフォルト : 0

-additional_option arg コンパイラに追加オプシ ョ ンを指定します。 複数使用できます。

ロジック シミ ュレーシ ョ ン 155UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 156: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

xsc function1.c function2.cxelab -svlog file.sv -sv_lib dpi

xsc -compile function1.c function2.c -work abcxsc -link abc/function1.lnx64.o abc/function2.lnx64.o -work abc

注記: Linux では、 DPI ライブラ リの検索にデフォルトで LD_LIBRARY_PATH が使用されます。 このため、 ラ イブラ

リ名が lib* で開始している場合は、 xelab に -dpi_absolute オプシ ョ ンを使用してください。

注記: コンパイラに -additional_option オプシ ョ ンを使用する と、 追加のオプシ ョ ンを渡すこ とができます。

例:

xsc t1.c --additional_option "-I<path>"

複数のパスを渡す例:

xsc t1.c --additional_option "-I<path>" --additional_option "-I<path>"

xelab を使用したコンパイル済み C コードの SystemVerilog への統合

コンパイルした C コードを SystemVerilog に統合する xelab の DPI に関するオプシ ョ ンは、 次のとおりです。

r-sv_liblist arg の詳細は、 『IEEE Standard for SystemVerilog—Unified Hardware Design, Specification, and

Verification Language』 [参照 16] の 1228 ページ目の付録 J.4.1 を参照してください。

-C [ --cc ] arg 生成された C コードをコンパイルするためのコンパイラを指定します。

有効な値は次のとおりです。

gcc: GCC を使用

clang: CLANG C コンパイラを使用

デフォルト : gcc

-dpi_absolute Linux で lib<libname>.so という形式の DPI ライブラ リに

LD_LIBRARY_PATH ではなく絶対パスを使用します。

-sv_root arg 検索する必要のある DPI 共有ライブラ リに関連するルート ディレク ト リデ

フォルト : <current_directory>/xsim.dir/xsc

-sv_lib arg SystemVerilog にインポート される C 関数を定義する DPI 共有ライブラ リの名

前 (ファ イル拡張子なし )

-sv_liblist arg DPI 共有ライブラ リ をポイン トするブート ス ト ラ ップ ファ イル

-dpiheader arg インポートおよびエクスポート されたファンクシ ョ ンの C 宣言を含む DPI

ヘッダー ファ イルを生成

表 D-1: XSC コンパイラ オプシ ョ ン (続き)

ロジック シミ ュレーシ ョ ン 156UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 157: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

C と SystemVerilog の境界で使用可能なデータ型

SystemVerilog の IEEE 規格 [参照 16] では、 C と SystemVerilog の境界に使用できるのは C および SystemVerilog データ

型の一部のみです。 次に、 Vivado シ ミ ュレータでサポート されるデータ型と、 C と SystemVerilog データ型間のマッ

プの詳細を示します。

サポート されるデータ型

次の表に、 C と SystemVerilog の境界で使用可能なデータ型と、 C から SystemVerilog および SystemVerilog から C への

データ型のマップを示します。

SystemVerilog データ型の C データ型へのマップ方法を示す C ヘッダー ファイルを生成するには、 -dpiheader

<file name> パラ メーターを xelab に渡します。 データ型マップに関するその他の詳細は、 SystemVerilog の IEEE

規格 [参照 16] を参照して ください。

表 D-2: C と SystemVerilog の境界で使用可能なデータ型

SystemVerilog C サポート コ メン ト

byte char あ り なし

shortint short int あ り なし

int int あ り なし

longint long long あ り なし

real double あ り なし

shortreal float あ り なし

chandle void * あ り なし

string const char* あ り なし

bit unsigned char あ り sv_0、 sv_1

svdpi.h を使用した場合 C でのみ使用可能

logic、 reg unsigned char あ り sv_0, sv_1, sv_z, sv_x:

bit の配列 (パッ ク型) svBitVecVal あ り svdpi.h で定義

logic/reg の配列 (パッ ク型) svLogicVecVal あ り svdpi.h で定義

enum 基本的な enum 型 あり なし

パッ ク型 struct、 union 配列と して渡される あ り なし

bit、 logic のアンパッ ク型配列 配列と して渡される あ り C は SystemVerilog を呼び出し可能

アンパッ ク された struct struct と して渡される あ り なし

アンパッ ク された unions struct と して渡される なし なし

配列を開く svOpenArrayHandle なし なし

ロジック シミ ュレーシ ョ ン 157UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 158: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

ユーザー定義型のマップ

enum

同等の SystemVerilog 型 (enum の基本型によって svLogicVecVal または svBitVecVal) への変換には、 列挙型

(enum) を定義できます。 列挙型の配列の場合は、 同等の SystemVerilog 配列が作成されます。

例:

SystemVerilog 型:

typedef enum reg [3:0] { a = 0, b = 1, c} eType;eType e; |eType e1[4:3];

typedef enum bit { a = 0, b = 1} eTypeBit;eTypeBit e3;eTypeBit e4[3:1] ;

C 型:

svLogicVecVal e[SV_PACKED_DATA_NELEMS(4)];svLogicVecVal e1[2][SV_PACKED_DATA_NELEMS(4)];svBit e3;svBit e4[3];

ヒン ト : C 引数型は、 enum の基本的な型とその方向によって異なり ます。

パック型 struct/union パッ ク型 struct または union を使用する場合、同等の SystemVerilog 型である svLogicVecVal または svBitVecVal

が DPI の C 側に作成されます。

SystemVerilog 型:

typedef struct packed { int i; bit b; reg [3:0]r; logic [2:0] [4:8][9:1] l; } sType; sType c_obj; sType [3:2] c_obj1[5];

C 型:

svLogicVecVal c_obj[SV_PACKED_DATA_NELEMS(172)];svLogicVecVal c_obj1[5][SV_PACKED_DATA_NELEMS(344)];

ロジック シミ ュレーシ ョ ン 158UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 159: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

配列は、 パッ ク型またはアンパッ ク型のどちらでも、 svLogicVecVal または svBitVecVal の配列と して表記され

ます。

アンパック型 struct同等のアンパッ ク型が C 側で作成され、 すべてのメンバーが同等の C 表記に変換されます。

例:

SystemVerilog 型:

typedef struct { int i; bit b; reg r[3:0]; logic [2:0] l[4:8][9:1]; } sType;

C 型:

typedef struct { int i; svBit b; svLogic r[4]; svLogicVecVal l[5][9][SV_PACKED_DATA_NELEMS(3)];} sType;

ロジック シミ ュレーシ ョ ン 159UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 160: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

svdpi.h 関数のサポート

svdpi.h ヘッダー ファ イルは、 次のディ レク ト リに含まれます。 <vivado installation>/data/xsim/include

次の svdpi.h 関数がサポート されます。

svBit svGetBitselBit(const svBitVecVal* s, int i);

svLogic svGetBitselLogic(const svLogicVecVal* s, int i);

void svPutBitselBit(svBitVecVal* d, int i, svBit s);

void svPutBitselLogic(svLogicVecVal* d, int i, svLogic s);

void svGetPartselBit(svBitVecVal* d, const svBitVecVal* s, int i, int w);

void svGetPartselLogic(svLogicVecVal* d, const svLogicVecVal* s, int i, int w);

void svPutPartselBit(svBitVecVal* d, const svBitVecVal s, int i, int w);

void svPutPartselLogic(svLogicVecVal* d, const svLogicVecVal s, int i, int w);

const char* svDpiVersion(); svScope svGetScope(); svScope svSetScope(const svScope scope); const char* svGetNameFromScope(const svScope); int svPutUserData(const svScope scope, void*userKey, void* userData); void* svGetUserData(const svScope scope, void* userKey); int svIsDisabledState(); void svAckDisabledState();

注記: 次のすべての例では、 問題なく実行される と PASSED と表示されます。

次の例が含まれます。

• 「-sv_lib、 -sv_liblist、 および -sv_root を使用したインポート例」 : -sv_lib、 -sv_liblist および -sv_root オ

プシ ョ ンを使用するインポート例。

• 「出力を含む関数」 : 出力引数を含む関数。

• 「単純なインポート → エクスポート フロー (xelab -dpiheader フロー )」 : 単純なインポート /エクスポート フロー

(xelab -dpiheader <filename> フロー ) を示す例。

ロジック シミ ュレーシ ョ ン 160UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 161: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

-sv_lib、 -sv_liblist、 および -sv_root を使用したインポート例

コード

次のファイルがある と します。

• C 関数を含むファイル 2 つ

• これらの関数を使用する SystenVerilog ファ イル 1 つ

function1.c

#include "svdpi.h"

DPI_DLLESPECint myFunction1(){ return 5;}

function2.c

#include <svdpi.h>DPI_DLLESPECint myFunction2(){ return 10;}

file.sv

module m();

import "DPI-C" pure function int myFunction1 (); import "DPI-C" pure function int myFunction2 ();

integer i, j;

initialbegin#1; i = myFunction1(); j = myFunction2(); $display(i, j); if( i == 5 && j == 10) $display("PASSED"); else $display("FAILED");end

endmodule

ロジック シミ ュレーシ ョ ン 161UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 162: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

使用法

次に、 C ファ イルをコンパイルして Vivado シ ミ ュレータにリ ンクする方法を示します。

1 段階フロー (最も簡単なフロー )

xsc function1.c function2.cxelab -svlog file.sv -sv_lib dpi

フローの説明:

xsc コンパイラで C コードをコンパイルして リ ンク し、 共有ライブラ リ (xsim.dir/xsc/dpi.so) を作成して、

xelab でこの共有ライブラ リ を -sv_lib オプシ ョ ンを使用して参照します。

2 段階フロー

xsc -compile function1.c function2.c -work abcxsc -link abc/function1.lnx64.o abc/function2.lnx64.o -work abc xelab -svlog file.sv -sv_root abc -sv_lib dpi -R

フローの説明:

° 2 つの C ファ イルを作業ディ レク ト リ (abc) で該当するオブジェク ト コードにコンパイルします。

° これらの 2 つのファイルを リ ンク して共有ライブラ リ (dpi.so) を作成します。

° -sv_root オプシ ョ ンを使用して、 このライブラ リが 作業ディレク ト リ (abc) から検索されるよ うにします。

ヒン ト : -sv_root には、 -sv_lib オプシ ョ ンで指定された共有ライブラ リ を検索するディレク ト リ を指定します。

ヒン ト : Linux では、 -sv_root が指定されておらず、 DPI ライブラ リの名前に接頭辞 lib と接尾辞 .so が付いてい

る場合、 共有ライブラ リのディ レク ト リ パスには LD_LIBRARY_PATH 環境変数が使用されます。

2 段階フロー (上記よりもさらにオプシ ョ ンを追加)

xsc -compile function1.c function2.c -work "abc" -v 1xsc -link "abc/function1.lnx64.o" "abc/function2.lnx64.o" -work "abc" -o final -v 1 xelab -svlog file.sv -sv_root "abc" -sv_lib final -R

フローの説明:

ユーザーがコンパイルおよびリ ンクを実行する場合は、 -v (verbose) オプシ ョ ンを使用する と、 コンパイラが起動さ

れたパスおよびオプシ ョ ンを確認できます。 これらはこの後必要に合わせて調整できます。 上記の例の場合、 final

とい う共有ライブラ リが作成されます。 この例では、 ファ イル パスのスペースがどのよ うに処理されるかも示して

います。

ロジック シミ ュレーシ ョ ン 162UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 163: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

出力を含む関数

コード

file.sv

/*- - - -*/package pack1;import "DPI-C" function int myFunction1(input int v, output int o);import "DPI-C" function void myFunction2 (input int v1, input int v2, output int o);endpackage

/*-- ---*/module m();int i, j; int o1 ,o2, o3;

initialbegin#1;

j = 10;o3 =pack1:: myFunction1(j, o1);//should be 10/2 = 5pack1::myFunction2(j, 2+3, o2); // 5 += 10 + 2+3$display(o1, o2);if( o1 == 5 && o2 == 15)

$display("PASSED");else

$display("FAILED");end

endmodule

function.c

#include "svdpi.h"

DPI_DLLESPECint myFunction1(int j, int* o){

*o = j /2;return 0;

}

DPI_DLLESPECvoid myFunction2(int i, int j, int* o){

*o = i+j;return;

}

run.ksh

xsc function.cxelab -vlog file.sv -sv -sv_lib dpi -R

ロジック シミ ュレーシ ョ ン 163UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 164: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

単純なインポート → エクスポート フロー (xelab -dpiheader フロー )このフローでは、 次が実行されます。

• xelab を -dpiheader オプシ ョ ンを使用して実行し、 file.h ヘッダー ファ イルを作成します。

• file.c のコードを xelab で生成されたヘッダー ファ イル (file.h) に含めます。 これは 後にリ ス ト されてい

ます。

• 前と同様 file.c および test.sv のコードをコンパイルして、 シ ミ ュレーシ ョ ン実行ファイルを生成します。

file.c

#include "file.h" /* NOTE: This file is generated by xelab -dpiheader <filename> flow */

int cfunc (int a, int b) {//Call the function exported from SV.return c_exported_func (a,b);

}

test.sv

module m();export "DPI-C" c_exported_func = function func;import "DPI-C" pure function int cfunc (input int a ,b);

/*This function can be called from both SV or C side.*/function int func(input int x, y);begin

func = x + y;endendfunction

int z;

initialbegin

#5;z = cfunc(2, 3);if(z == 5)

$display("PASSED");else

$display("FAILED");

endendmodule

ロジック シミ ュレーシ ョ ン 164UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 165: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

run.ksh

xelab -dpiheader file.h -svlog test.svxsc file.cxelab -svlog test.sv -sv_lib dpi -R

file.h/**********************************************************************//* ____ ____ *//* / /\/ / *//* /___/ \ / *//* \ \ \/ *//* \ \ Copyright (c) 2003-2013 Xilinx, Inc. *//* / / All Right Reserved.*//* /---/ /\ *//* \ \ / \ *//* \___\/\___\ *//**********************************************************************/

/* NOTE: DO NOT EDIT.AUTOMATICALLY GENERATED FILE.CHANGES WILL BE LOST.*/

#ifndef DPI_H#define DPI_H#ifdef __cplusplus#define DPI_LINKER_DECL extern "C" #else#define DPI_LINKER_DECL#endif

#include "svdpi.h"

/* Exported (from SV) function */DPI_LINKER_DECL DPI_DLLISPEC int c_exported_func(

int x, int y);

/* Imported (by SV) function */DPI_LINKER_DECL DPI_DLLESPEC int cfunc(

int a, int b);

#endif

ロジック シミ ュレーシ ョ ン 165UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 166: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 D: Vivado シミ ュレータのダイレク ト プログラ ミング インターフェイス (DPI)

Vivado Design Suite に含まれる DPI 例Vivado Design Suite に含まれる 2 つの例を使用する と、 Vivado シ ミ ュレータでの DPI の使用方法が理解しやすくなり

ます。 これらの例は、

<vivado installation dir>/examples/xsim/systemverilog/dpi という インス トール ディ レク ト リ内の

次のディ レク ト リにあ り ます。 まず、 このディ レク ト リに含まれる README ファ イルを参照するこ とをお勧めしま

す。 含まれる例は、 次のとおりです。

• simple_import: 純粋な関数の単純なインポート

• simple_import: 純粋な関数の単純なエクスポート

ヒン ト : 「純粋な関数」 とは、 関数の return 値がその入力値にのみに基づいて計算される関数のこ とです。

ロジック シミ ュレーシ ョ ン 166UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 167: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 E

特殊なケースの処理

グローバル リセッ ト と ト ライステートの使用

ザイ リ ンクス デバイスには、 デバイスのすべてのレジスタに接続されている専用の配線および回路があ り ます。

グローバル セッ トおよびリセッ ト ネッ ト

コンフ ィギュレーシ ョ ン中には、 専用グローバル セッ ト / リセッ ト (GSR) 信号がアサート されます。 GSR 信号はデバ

イスのコンフ ィギュレーシ ョ ンが終了する とディアサート されます。 すべてのフ リ ップフロ ップおよびラ ッチはこ

のリセッ ト を受信し、 レジスタの定義方法によって、 セッ ト またはリセッ ト されます。

推奨: コンフ ィギュレーシ ョ ン後に GSR ネッ トにアクセスするこ とはできますが、 手動リセッ トの代わりに GSR 回

路を使用しないでください。 これは、 FPGA デバイスではシステム リセッ ト などのファンアウ トの大きい信号に対

して、 高速バッ クボーン配線が提供されているからです。 このバッ クボーン配線は専用 GSR 回路よ り も高速で、

GSR 信号を転送する専用グローバル配線よ り も簡単に解析できます。

合成後およびインプ リ メンテーシ ョ ン後のシ ミ ュレーシ ョ ンでは、 GSR 信号は自動的に 初の 100 ns 間アサート さ

れ、 コンフ ィギュレーシ ョ ン後に発生する リセッ トがシ ミ ュレーシ ョ ンされます。

オプシ ョ ンで、 GSR パルスを合成前の論理シ ミ ュレーシ ョ ンで供給できますが、 すべてのレジスタを リセッ トする

ローカル リセッ トがデザインに含まれている場合は必要あ り ません。

ヒン ト : テス トベンチを作成する際は、 合成後およびインプリ メンテーシ ョ ン後のシ ミ ュレーシ ョ ンでは GSR パル

スが自動的に発生するこ とを考慮してください。 このパルスによ り、 すべてのレジスタがシ ミ ュレーシ ョ ンの 初

の 100 ns 間リセッ ト状態になり ます。

グローバル ト ライステート ネッ ト

専用グローバル GSR だけでなく、専用グローバル ト ラ イステート (GTS) ネッ ト を使用してコンフ ィギュレーシ ョ ン

モード中に出力バッファーをハイ インピーダンス ステートに設定するこ と もできます。 通常の操作中、 汎用出力が

標準、 ト ラ イステート、 双方向出力であるかにかかわらず、 すべての汎用出力似適用されます。 このため、 FPGA が

コンフ ィギュレーシ ョ ンされたと きに、 出力が誤ってほかのデバイスを駆動するこ とはあ り ません。

シ ミ ュレーシ ョ ンでは、 GTS 信号は通常駆動されません。 GTS を駆動する回路は、 合成後およびインプ リ メンテー

シ ョ ン後のシ ミ ュレーシ ョ ンで使用可能であ り、 早期 (合成前) 論理シ ミ ュレーシ ョ ンではオプシ ョ ンで追加できま

すが、 GTS パルス幅はデフォルトで 0 に設定されます。

ロジック シミ ュレーシ ョ ン 167UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 168: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 E: 特殊なケースの処理

グローバル ト ライステートおよびグローバル セッ ト /リセッ ト信号の使用

図 E-1 に、 グローバル ト ラ イステート (GTS) およびグローバル セッ ト / リセッ ト (GSR) 信号が FPGA でどのよ うに使

用されるかを示します。

Verilog の GSR および GTSグローバル セッ ト / リセッ ト (GSR) およびグローバル ト ラ イステート (GTS) 信号は

<Vivado_Install_Dir>/data/verilog/src/glbl.v モジュールで定義されています。

ほとんどの場合、 GSR および GTS をテス トベンチで定義する必要はあ り ません。

glbl.v ファ イルはグローバル GSR および GTS 信号を宣言し、 自動的に GSR に 100 ns 間パルスを供給します。

VHDL の GSR および GTS グローバル セッ ト / リセッ ト (GSR) およびグローバル ト ラ イステート (GTS) 信号は

<Vivado_Install_Dir>/data/vhdl/src/unisims/primitive/GLBL_VHD.vhd モジュールで定義されてい

ます。

GLBL_VHD コンポーネン ト を使用するには、 テス トベンチにインスタンシエートする必要があ り ます。

GLBL_VHD ファ イルはグローバル GSR および GTS 信号を宣言し、 自動的に GSR に 100 ns 間パルスを供給します。

次のコードは、 テス トベンチに GLBL_VHD をインスタンシエート し、 ROC (Reset on Configuration) のアサート パル

ス幅を 90 ns に変更する例を示しています。

GLBL_VHD inst:GLBL_VHD generic map (ROC_WIDTH => 90000);

X-Ref Target - Figure E-1

図 E-1: ビルト イン FPGA 初期化回路図

X8352

UserProgrammableLatch/Register

Global Tri-State(GTS)

User OutputI/OPad

Output Buffer

Input Buffer

User Input

User Tri-StateEnable

General Purpose

I/Os Used forInitialization

GTSGSR

UserAsync.Reset Global

Set/Reset(GSR)

InitializationController

UserProgrammable

LogicResources

QD

CLRC

CE

ロジック シミ ュレーシ ョ ン 168UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 169: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 E: 特殊なケースの処理

デルタ サイクルとレース コンディシ ョ ン

この資料では、 イベン ト ベースのシ ミ ュレータについて説明します。 イベン ト シ ミ ュレータでは、 任意のシ ミ ュ

レーシ ョ ン時間に複数のイベン ト を処理できます。 これらのイベン トが処理中のと き、 シ ミ ュレータはシ ミ ュレー

シ ョ ン時間を進めるこ とはできません。 このイベン ト処理時間は、 一般的に 「デルタ サイ クル」 と呼ばれます。 任

意のシ ミ ュレーシ ョ ン時間ステップには複数のデルタ サイ クルを含めるこ とができます。

シ ミ ュレーシ ョ ン時間は、 そのシ ミ ュレーシ ョ ン時間で処理する ト ランザクシ ョ ンがない場合にのみ進みます。 この

ため、 イベン トが時間ステップ内でスケジュールされるタイ ミ ングによって、 シ ミ ュレータで予期しない結果となる

可能性があ り ます。 次の VHDL コードは、 予期しない結果となる例を示しています。

予測しない結果になる VHDL コード例

clk_b <= clk;clk_prcs : process (clk)beginif (clk'event and clk='1') thenresult <= data;

end if;end process;

clk_b_prcs : process (clk_b)beginif (clk_b'event and clk_b='1') thenresult1 <= result;

end if;end process;

この例には、 2 つの同期プロセスがあ り ます。

• clk_prcs

• clk_b_prcs

シ ミ ュレータは、 シ ミ ュレーシ ョ ン時間を進める前に clk_b <= clk 代入を実行します。 この結果、 2 ク ロ ッ ク エッジ内で発生するはずのイベン トが 1 ク ロ ッ ク エッジ内で発生し、 レース コンディシ ョ ンにな り ます。

このよ うな状況を回避するため、 次を推奨します。

• ク ロ ッ ク とデータは同時に変更しないでください。 出力ごとに遅延を挿入します。

• 同じクロ ッ クを使用します。

• 次の例に示すよ うに、 一時的な信号を使用してデルタ遅延を強制します。

clk_b <= clk;clk_prcs : process (clk)begin if (clk'event and clk='1') thenresult <= data;

end if;end process;

result_temp <= result;clk_b_prcs : process (clk_b)beginif (clk_b'event and clk_b='1') then

result1 <= result_temp;end if;

end process;

ロジック シミ ュレーシ ョ ン 169UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 170: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 E: 特殊なケースの処理

ほとんどのイベン ト ベース シ ミ ュレータでデルタ サイクルを表示できます。 シ ミ ュレーシ ョ ン問題をデバッグする

際、 この表示を利用して ください。

ASYNC_REG 制約の使用

ASYNC_REG 制約には、 次のよ うな特徴があ り ます。

• デザインの非同期レジスタを特定します。

• これらのレジスタの X 伝搬をディ スエーブルにします。

ASYNC_REG 制約は、 次のいずれかを使用してフロン トエンド デザインのレジスタに適用できます。

• HDL コードの属性

• ザイ リ ンクス デザイン制約 (XDC)

ASYNC_REG が適用されているレジスタでは、 タイ ミ ング シ ミ ュレーシ ョ ン中に前の値が保持され、 シ ミ ュレーシ ョ

ンで X は出力されません。 新しい値が供給されている可能性もあるので、 注意してください。

ASYNC_REG 制約は、 CLB および入出力ブロッ ク (IOB) レジスタおよびラ ッチにのみ適用できます。 ASYNC_REG 制

約については、『Vivado Design Suite プロパティ リ ファレンス ガイ ド』 (UG912) [参照 12] のこのセクシ ョ ンを参照して

ください。

推奨: 非同期データを供給するのを回避できない場合は、 IOB または CLB レジスタにのみに供給してください。

RAM、 シフ ト レジスタ LUT (SRL)、 またはその他の同期エレ メン トに非同期信号を供給する と、 結果が決定的なも

のにならないので、 避けてください。 非同期信号をまずレジスタ、 ラ ッチ、 または FIFO で同期化してから、 RAM、

シフ ト レジスタ LUT (SRL) などの同期エレ メン トに書き込むよ うにしてください。 詳細は、 『Vivado Design Suite

ユーザー ガイ ド : 制約の使用』 (UG903) [参照 9] を参照して ください。

同期エレメン トの X 伝搬のディスエーブル

タイ ミ ング シ ミ ュレーシ ョ ン中にタイ ミ ング エラーが発生する と、 デフォルトではラ ッチ、 レジスタ、 RAM または

その他の同期エレ メン トから X が出力されます。 これは、 実際の出力値が不明であるからです。 この場合、 レジス

タの出力は次のいずれかになり ます。

• 前の値を保持

• 新しい値にアップデート

• メ タステーブル状態 (同期エレ メン トにク ロ ッ クが供給された後しばら く経たないと値が確定しない)

この値は決定できず、 正確なシ ミ ュレーシ ョ ン結果は得られないので、 エレ メン トから不明の値を示す X が出力さ

れます。 X 出力は次のクロ ッ ク サイクルまで保持され、 ほかに違反がなければ、 次のクロ ッ ク サイ クルで供給され

た値によ り出力がアップデート されます。

X が出力される と、 シ ミ ュレーシ ョ ンに大き く影響するこ とがあ り ます。 たとえば、 1 つのレジスタで X が生成され

る と、 続く ク ロ ッ ク サイクルで、 その X がほかに伝搬され、 テス ト中のデザインの大部分が不明のステートになる

可能性があ り ます。

ロジック シミ ュレーシ ョ ン 170UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 171: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 E: 特殊なケースの処理

X が生成されないよ うにするには、 次を実行します。

• 同期パスを解析し、 このパスまたはほかのパスに関連したタイ ミ ング問題を修正して、 回路が正し く動作するよ

うにします。

• 非同期パスでタイ ミ ング違反を回避できない場合は、 ASYNC_REG プロパティを使用して、 タイ ミ ング違反が発

生したと きの同期エレ メン トによる X 伝搬をディ スエーブルにします。

X 伝搬をディ スエーブルする と、 レジスタの出力には前の値が保持されます。 実際のシ リ コンでは、 レジスタの値が

新しい値に変更されるこ と もあ り ます。 X 伝搬をディ スエーブルにする と、 シ ミ ュレーシ ョ ン結果がシ リ コンの動作

とは一致しない可能性があ り ます。

注意: このオプシ ョ ンを使用する場合は注意が必要です。 タイ ミ ング違反をこれ以外の方法で回避できない場合にの

み使用して ください。

コンフ ィギュレーシ ョ ン インターフェイスのシミ ュレーシ ョ ン

このセクシ ョ ンでは、 次のコンフ ィギュレーシ ョ ン インターフェイスのシ ミ ュレーシ ョ ンについて説明します。

• JTAG シ ミ ュレーシ ョ ン

• SelectMAP シ ミ ュレーシ ョ ン

JTAG シミ ュレーシ ョ ン

BSCAN コンポーネン トのシ ミ ュレーシ ョ ンはすべてのデバイスでサポート されます。

シ ミ ュレーシ ョ ンでは、 JTAG ポート と一部の JTAG 操作コマンドがサポート されます。 JTAG インターフェイスは、

スキャン チェーンへのインターフェイスを含め、 完全にはサポート されていません。 このインターフェイスをシ

ミ ュレーシ ョ ンするには、 次の手順に従います。

1. BSCANE2 コンポーネン ト をインスタンシエート し、 デザインに接続します。

2. JTAG_SIME2 コンポーネン ト を、 デザインにではなくテス トベンチにインスタンシエート します。

このインターフェイスは次のものになり ます。

• 外部 JTAG 信号 (TDI、 TDO、 TCK など) へのインターフェイス

• BSCAN コンポーネン トへの通信チャネル

コンポーネン ト間の通信は、 VPKG VHDL パッケージ ファ イルまたは Verilog グローバル モジュール glbl で実行さ

れます。 そのため、 特定の JTAG_SIME2 コンポーネン ト とデザイン間、 または特定の BSCANE2 シンボル間に暗示的

接続は必要あ り ません。

JTAG/BSCAN の動作を理解するため、 スティ ミ ュラスをテス トベンチ内の特定の JTAG_SIME2 コンポーネン トから

駆動および表示できます。 これによ り、 JTAG/BSCAN の動作が理解できます。 これらのコンポーネン トのインスタ

ンシエーシ ョ ン テンプレートは、 Vivado® Design Suite テンプレートおよびそのデバイスのライブラ リ ガイ ドから入

手できます。

ロジック シミ ュレーシ ョ ン 171UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 172: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 E: 特殊なケースの処理

SelectMAP シミ ュレーシ ョ ン

インスタンシエーシ ョ ン テンプレート を含むコンフ ィギュレーシ ョ ン シ ミ ュレーシ ョ ン モデル (SIM_CONFIGE2 お

よび SIM_CONFIGE3) を使用する と、 サポート されているコンフ ィギュレーシ ョ ン インターフェイスをシ ミ ュレー

シ ョ ンして DONE ピンが High になるのを確認できます。 このモデルは、 サポート デバイスがサポート されているコ

ンフ ィギュレーシ ョ ン インターフェイスのスティ ミ ュラスにどのよ うに応答するかを示します。

表 E-1 に、 サポート されるインターフェイスおよびデバイスを リ ス ト します。

これらのモデルは、 制御信号アクティビティを処理し、 ビッ ト ファ イルをダウンロード します。 CRC、 IDCODE な

どの内部レジスタ設定とステータス レジスタが含まれます。 同期ワードデバイスに入力され、 スタート アップ シー

ケンスで処理される と ころを監視できます。 図 E-2 に、 システムをハードウェアからシ ミ ュレーシ ョ ン環境にマップ

する方法を示します。

コンフ ィギュレーシ ョ ン プロセスは、 各デバイスのコンフ ィギュレーシ ョ ン ユーザー ガイ ドで説明されています。

これらのガイ ドには、 コンフ ィギュレーシ ョ ン シーケンスおよびコンフ ィギュレーシ ョ ン インターフェイスに関す

る情報が記載されています。

表 E-1: サポート されるコンフ ィギュレーシ ョ ン デバイスおよびモード

デバイス SelectMAP シリアル SPI BPI

7 シ リーズおよび

Zynq®-7000 AP SoC デバイス

あ り あ り なし なし

UltraScale™ デバイス あ り あ り なし なし

X-Ref Target - Figure E-2

図 E-2: モデルの通信を示すブロック図

Host Controller - Input Stimulus to Model Configuration Simulation Model

IDCODE ParameterMemory

Controller

Target FPGABit File

UserMemory

SelectMAPControlLogic

CCLKData [0-n]

RDWR

PROG_BINIT_B

CS

Mode Pins [2:0]

1 1 0X10194

ロジック シミ ュレーシ ョ ン 172UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 173: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 E: 特殊なケースの処理

システム レベルの記述

コンフ ィギュレーシ ョ ン モデルを使用する と、 ハード ウェアが使用可能になる前に、 コンフ ィギュレーシ ョ ン イン

ターフェイスの制御ロジッ クをテス トできます。 このモデルはデバイス全体をシ ミ ュレーシ ョ ンし、 次のよ うなアプ

リ ケーシ ョ ンでシステム レベルで使用されます。

• 適切なワイヤ、 制御信号処理、 データ入力アライ メン ト を確実にするため、 コンフ ィギュレーシ ョ ン ロジッ ク

を制御するためにプロセッサを使用するアプリ ケーシ ョ ン

• データ アライ メン トが正し く実行されるよ う CS (SelectMAP チップ セレク ト ) または CLK 信号を使用してデー

タ読み込みプロセスを制御するアプリ ケーシ ョ ン

• SelectMAP ABORT または Readback を実行する必要のあるシステム

このモデルに関連する ZIP ファ イルは、 次のサイ トから入手できます。

https://www.xilinx.com/txpatches/pub/documentation/misc/config_test_bench.zip

この ZIP ファ イルには、 SelectMAP ロジッ クを実行するプロセッサをシ ミ ュレーシ ョ ンするサンプル テス トベンチが

含まれています。 これらのテス トベンチには、 SelectMAP インターフェイスを制御するプロセッサをエミ ュレートす

る制御ロジッ クが含まれ、 フル コンフ ィギュレーシ ョ ン、 ABORT、 および IDCODE と ステータス レジスタの

Readback などの機能があ り ます。

シ ミ ュレーシ ョ ンされるホス ト システムには、 ファ イルの配布および制御信号管理などの機能が必要です。 これら

の制御システムは、 デバイスのコンフ ィギュレーシ ョ ン ユーザー ガイ ドの説明に従って設計する必要があ り ます。

コンフ ィギュレーシ ョ ン モデルは、 BIT ファ イルがデバイスに読み込まれる際、 コンフ ィギュレーシ ョ ン プロシー

ジャ中にデバイス内で起きているこ と も示します。

BIT ファ イルのダウンロード中、 モデルによ り各コマンドが実行され、 ハード ウェアの変更を反映してレジスタ設定

が変更されます。

CRC レジスタで CRC 値が累積されるのを監視できます。 また、 このモデルは、 デバイスがさまざまなコンフ ィギュ

レーシ ョ ン ステート を遷移していく と きに設定されるステータス レジスタ ビッ ト も示されます。

モデルを使用したデバッグ

各コンフ ィギュレーシ ョ ン モデルでは、 正しいコンフ ィギュレーシ ョ ンの例が提供されます。 デバイス プログラム

の問題が発生したと きに、 デバッグでこの例を参考にする と有益です。

Vivado デバイス プログラマを使用する と、 JTAG を介してステータス レジスタを読み出すこ とができます。 レジス

タには、 デバイスの現在のステータスに関連した情報が含まれるので、 デバッグのと きに利用できます。 ボード上で

問題が発生した場合は、 Vivado デバイス プログラマでステータス レジスタを読み込むのがデバッグの 初の手順の

1 つです。

ステータス レジスタを読み込んだら、 それをシ ミ ュレーシ ョ ンにマップし、 デバイスのコンフ ィギュレーシ ョ ン段

階を特定できます。

たとえば、 データの読み込みが正し く完了する とGHIGH ビッ トが High になり ます。 このビッ トが High になってい

ない場合、 データの読み込みは完了していません。 BitGen でセッ ト され、 スタート アップ シーケンスで解放される

GTW、 GWE および DONE 信号も監視できます。

コンフ ィギュレーシ ョ ン モデルでは、 エラー挿入も可能です。 問題が発生してデータの読み込みが一時停止されて

再開した場合、 アクティブな CRC ロジッ クで問題が検出されます。 BIT ファ イルに手動で挿入されたビッ ト フ リ ッ

プも検出され、 このエラーがデバイスで処理されるのと同様に処理されます。

ロジック シミ ュレーシ ョ ン 173UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 174: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 E: 特殊なケースの処理

サポート される機能

デバイス別のコンフ ィギュレーシ ョ ン ユーザー ガイ ドには、 各コンフ ィギュレーシ ョ ン インターフェイス との通信

にサポート される方法が示されています。 次の表に、 コンフ ィギュレーシ ョ ン ユーザー ガイ ドで説明される機能の

中で、 サポート されているものを示します。

SIM_CONFIGE2 モデルには、 次のよ うな特徴があ り ます。

• コンフ ィギュレーシ ョ ン データのリードバッ クはサポート されません。

• CRC 値は計算されますが、 供給されるコンフ ィギュレーシ ョ ン データは格納されません。

• デバイスに対して有効なコマンド シーケンスおよび信号処理が提供されているこ とを確認するため、 特定のレ

ジスタのみでのリードバッ クが可能です。

• リードバッ ク データ ファ イルを生成するためのモデルではあ り ません。

表 E-2: モデルをサポートするスレーブ SelectMAP およびシリアルの機能

スレーブ SelectMAP およびシリアルの機能 サポート

マスター モード なし

デイジー チェーン - スレーブ パラレル デイジー チェーン なし

SelectMAP データ読み込み あ り

連続 SelectMAP データ読み込み あ り

非連続 SelectMAP データ読み込み あ り

SelectMAP ABORT あ り

SelectMAP リ コンフ ィギュレーシ ョ ン なし

SelectMAP データ順序付け あ り

リ コンフ ィギュレーシ ョ ンおよびマルチブート なし

コンフ ィギュレーシ ョ ン CRC - コンフ ィギュレーシ ョ ン中の CRC

チェッ ク

あ り

コンフ ィギュレーシ ョ ン CRC - コンフ ィギュレーシ ョ ン後の CRC なし

ロジック シミ ュレーシ ョ ン 174UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 175: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 E: 特殊なケースの処理

シミ ュレーシ ョ ンでのブロック RAM の競合チェ ックのディスエーブル

ザイ リ ンクス ブロッ ク RAM メモ リは完全なデュアル ポート RAM で、 両方のポートでいつでもどのメモ リ ロケー

シ ョ ンにもアクセスできますが、 同じアドレス空間に対して同時に読み出しおよび書き込みが実行される と、 ブロ ッ

ク RAM アドレスの競合が発生します。 これは、 読み出しポートから読み出されるデータが有効ではないために発生

します。

ハードウェアでは、 読み出される値は、 以前のデータ、 新しいデータ、 または以前のデータ と新しいデータの組み合

わせとな り ます。

シ ミ ュレーシ ョ ンでは、 読み出された値が不明となるため X が出力されます。 ブロ ッ ク RAM の競合の詳細は、 デバ

イスのユーザー ガイ ドを参照してください。

アプリ ケーシ ョ ンによっては、 この状態を回避したり、 設計を変更したりできないこ とがあ り ます。 その場合、 ブ

ロ ッ ク RAM でこれらの違反が検出されないよ うに設定できます。 これは、 ブロ ッ ク RAM プリ ミ ティブのジェネ

リ ッ ク (VHDL) またはパラ メーター (Verilog) の SIM_COLLISION_CHECK 文字列で制御します。

表 E-3 に、競合が発生したと きのシ ミ ュレーシ ョ ン ビヘイビアーを制御する SIM_COLLISION_CHECK に使用可能な

文字列オプシ ョ ンを示します。

インスタンス レベルで SIM_COLLISION_CHECK を使用する と、 各ブロ ッ ク RAM インターフェイスの設定を変更で

きます。

消費電力解析のための SAIF ファイルの出力

• Vivado シ ミ ュレータ : 97 ページの 「Vivado シ ミ ュレータを使用した消費電力解析」

• 第 3 章 「サードパーティ シ ミ ュレータを使用したシ ミ ュレーシ ョ ン」 の 「消費電力解析用の SAIF の出力」、

「IES での SAIF の出力」、 および 「VCS での SAIF の出力」

表 E-3: SIM_COLLISION_CHECK 文字列

文字列 書き込み競合メ ッセージ 出力への X の書き込み

ALL あ り あ り

WARNING_ONLY あ り なし。 競合発生時にのみ適用され、 同同じアドレス空間

への後続の読み出しで、 出力に X が示される可能性があ

り ます。

GENERATE_X_ONLY なし あ り

None なし なし。 同じアドレス空間への後続の読み出しで、 出力に

X が示される可能性があ り ます。

ロジック シミ ュレーシ ョ ン 175UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 176: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 E: 特殊なケースの処理

AXI バス ファンクシ ョ ン モデルを使用したデザインのシミ ュレーシ ョ ン

詳細は、 40 ページの 「AXI バス ファンクシ ョ ン モデルを使用したデザインのシ ミ ュレーシ ョ ン」 を参照して くだ

さい。

コンパイルまたはシミ ュレーシ ョ ンのスキップ

コンパイルのスキップ

既存のスナップシ ョ ッ トにシ ミ ュレーシ ョ ンを実行し、 シ ミ ュレーシ ョ ン ファ イルセッ トに SKIP_COMPILATION

プロパティを設定して、 デザインのコンパイル (または再コンパイル) をスキップできます。

set_property SKIP_COMPILATION 1 [get_filesets sim_1]

注記: このプロパティを設定する と、 前回のコンパイル後に適用されたデザイン ファ イルへの変更はシ ミ ュレーシ ョ

ンに反映されません。

シミ ュレーシ ョ ンのスキップ

シ ミ ュレーシ ョ ンを実行せずに、 シ ミ ュレーシ ョ ン スナップシ ョ ッ ト をエラボレートおよびコンパイルして、 デザ

イン HDL ファ イルに対してセマンティ ッ ク チェッ クを実行するには、 シ ミ ュレーシ ョ ン ファ イルセッ トに

SKIP_SIMULATION プロパティを設定します。

set_property SKIP_SIMULATION true [get_filesets sim_1]

重要: 上記のいずれかのプロパティを使用する場合は、 [Project Settings] ダイアログ ボッ クスの [Simulation] ページで

[Clean up simulation files] チェッ クボッ クスをオフにします。 バッチ/Tcl モードで実行している場合は、

launch_simulation -noclean_dir を実行します。

ロジック シミ ュレーシ ョ ン 176UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 177: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 F

Vivado シミ ュレータ Tcl コマンドの値の規則

概要

この付録では、 Tcl コマンドの add_force および set_value の両方に適用される値の規則を示します。

文字列の値の解釈

文字列の値は、 HDL オブジェク トの宣言型と -radix コマンド ライン オプシ ョ ンに基づいて解釈されます。

-radix の指定が、 HDL オブジェク ト型で定義されたデフォルトの基数よ り も優先されます。

• logic 型の HDL オブジェク トの場合、 値は logic 型の 1 次元配列または指定した基数の桁数の文字列です。

° 文字列のビッ ト数が型のビッ ト数よ り も少ない場合、 文字列がその型のビッ ト数に一致するよ うにゼロ拡

張 (符号拡張ではない) されます。

° 文字列のビッ ト数が型のビッ ト数よ り も大きい場合、 上位の余分なビッ トが 0 でないと、 サイズ不一致エ

ラーになり ます。

たとえば、 基数が 16 進数で 6 ビッ トの logic 配列を使用する場合、 値 3F は 8 ビッ ト (16 進数の 1 桁ごと

に 4 ビッ ト ) になり ます。 これは、 2 進数では 0011 1111 です。ただし、上位 2 ビッ トは 0 なので、値は HDL

オブジェク トに代入できます。 値が 7F の場合は、 上位 2 ビッ トが 0 ではないので、 エラーになり ます。

° スカラー (配列またはレコード ではない) の logic 型 HDL オブジェク トの長さは 1 ビッ トです。

° a [left:right] (Verilog) または a(left TO/DOWNTO right) と宣言される logic 配列の場合、 拡張/

切り捨て後の一番左の値のビッ トが a[left] に代入され、 一番右のビッ トが a[right] に代入されます。

ロジック シミ ュレーシ ョ ン 177UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 178: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 F: Vivado シミ ュレータ Tcl コマンドの値の規則

Vivado Design Suite シミ ュレーシ ョ ン ロジック

ロジッ クは、 HDL で定義されるコンセプ トではなく、 Vivado® シ ミ ュレータによる ヒ ューリ スティ ッ クです。

• Verilog オブジェク トは、 Verilog の bit 型であるこ とが暗示される場合、 logic 型である とみなされま

す。 これには wire および reg オブジェク トや整数、 時間が含まれます。

• VHDL オブジェク トは、 オブジェク ト型が bit、 std_logic、 または列挙型 (列挙子が std_logic の列挙型の

サブセッ トで少なく と も 0 および 1 が含まれる ) の場合、 またはオブジェク トの型がこのよ うな型の 1 次元配列

である場合、 logic 型である とみなされます。

• VHDL 列挙型の HDL オブジェク トの場合、 値は列挙子リテラルの 1 つになり ます。 列挙子が文字リ テラルでは

ない場合シングル クォーテーシ ョ ン (') は含めません。 基数は無視されます。

• 整数型の VHDL オブジェク トの場合、 値をその型の範囲内の符号付き 10 進数整数にできます。 基数は無視され

ます。

• VHDL および Verilog の浮動小数点型の場合、 値は浮動小数点になり ます。 基数は無視されます。

• すべての型の HDL オブジェク トで、 Tcl コマンド set による値の設定はサポート されません。

ロジック シミ ュレーシ ョ ン 178UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 179: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G

Vivado シミ ュレータの混合言語サポートおよび例外

概要

Vivado® 統合設計環境 (IDE) では、 次の言語がサポート されます。

• VHLD ( 『IEEE Standard VHDL Language Reference Manual (IEEE-STD-1076-1993)』 [参照 14] を参照)

• Verilog ( 『IEEE Standard Verilog Hardware Description Language (IEEE-STD-1364-2001)』 [参照 15] を参照)

• SystemVerilog の合成可能なサブセッ ト ( 『IEEE Standard Verilog Hardware Description Language

(IEEE-STD-1800-2009)』 [参照 16] を参照)

• IEEE P1735 暗号化 ( 『Recommended Practice for Encryption and Management of Electronic Design Intellectual Property

(IP)』 (IEEE-STD-P1735) [参照 18] を参照)

この付録では、 Vivado シ ミ ュレータの混合言語アプリ ケーシ ョ ンおよび、 Verilog、 SystemVerilog、 および VHDL サ

ポートの例外を リ ス ト します。

混合言語シミ ュレーシ ョ ンの使用

Vivado シ ミ ュレータでは、 混合言語プロジェク ト ファ イルおよび混合言語シ ミ ュレーシ ョ ンがサポート されるの

で、 VHDL デザインに Verilog/SystemVerilog (SV) モジュールを含めるこ とができ、 またその逆も可能です。

シミ ュレーシ ョ ンでの混合言語の制限

• VHDL デザインに Verilog/SystemVerilog (SV) モジュールをインスタンシエートでき、 Verilog/SV デザインに

VHDL コンポーネン ト をインスタンシエートできます。 Verilog/SV モジュールと VHDL コンポーネン トの結合

には、 コンポーネン ト インスタンシエーシ ョ ン ベースのデフォルトの結合が使用されます。 VHDL プロセス文

で Verilog 関数を呼び出すという よ う な VHDL と Verilog の混合使用はサポート されません。

• Verilog/SV モジュールへの境界には、 VHDL 型、 ジェネ リ ッ ク、 およびポートのサブセッ ト を使用できます。 同

様に、 VHDL コンポーネン トへの境界には Verilog/SV 型、 パラ メーター、 およびポートのサブセッ ト を使用で

きます。 詳細は、 182 ページの表 G-2 を参照してください。

重要: VHDL レコード オブジェク トの Verilog オブジェク トへの接続はサポート されていませんが、 サポート される

型の VHDL レコード エレ メン トは互換性のある Verilog ポートに接続できます。

ロジック シミ ュレーシ ョ ン 179UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 180: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外

• Verilog/SV 階層参照では VHDL ユニッ トは参照できず、 VHDL 拡張/選択名では Verilog/SV ユニッ トは参照でき

ません。

ただし、 Verilog/SV ユニッ トは、 Verilog 階層参照を使用して、 中間 VHDL インスタンスを介して別の Verilog/SV

ユニッ トに到達できます。

次のコード例では、 I1.const1 は Verilog/SV モジュールの top で参照される VHDL 定数です。 このタイプの

Verilog/SV 階層参照は、 Vivado シ ミ ュレータでは使用できません。 ただし、 I1.I2.data は Verilog/SV モジュー

ルの top 内で使用できます。 この場合、 I2 は Verilog/SV インスタンスで、 I1 は VHDL インスタンスです。

-- Bottom Verilog Modulemodule bot; wire data;

endmodule

// Intermediate VHDL Entityentity mid is end entity mid;

architecture arch of mid isconstant const1 : natural := 10;

beginbot I2();end architecture arch;

-- Top Verilog Modulemodule top(input in1,output reg out1);mid I1();always@(in1)begin

// This hierarchical reference into a VHDL instance is not allowedif(I1.const1 >= 10) out1 = in1;

// This hierarchical reference into a Verilog instance traversing through a // VHDL instance is allowedif (I1.I2.data == 1)out1 = ~in1;

endendmodule

混合言語シミ ュレーシ ョ ンでの重要な手順 1. 混合言語プロジェク トのデザイン ライブラ リ内で VHDL コンポーネン ト または Verilog/SV モジュールの検索順

を指定できます (オプシ ョ ン)。

2. xelab -L を使用する と、 混合言語プロジェク トのデザイン ライブラ リ内で VHDL コンポーネン ト または

Verilog/SV モジュールの結合順を指定できます。

注記: Verilog モジュールと別の Verilog モジュールの結合にも、-L で指定したライブラ リ検索順が使用されます。

ロジック シミ ュレーシ ョ ン 180UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 181: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外

混合言語の結合と検索

VHDL コンポーネン ト を Verilog/SV モジュールに、または Verilog/SV モジュールを VHDL アーキテクチャにインスタ

ンシエートするには、 xelab コマンドを使用します。

• まず、 インスタンシエートするデザイン ユニッ ト と同じ言語のユニッ トが検索されます。

• 同じ言語のユニッ トが見つからない場合は、 -L オプシ ョ ンで指定されたライブラ リで両方の言語のデザイン ユ

ニッ トが検索されます。

この検索順は、 xelab コマンド ラインでライブラ リが表示される順序と同じです。 詳細は、 114 ページの 「Verilog

検索順序」 を参照して ください。

注記: Vivado IDE を使用する場合、 ライブラ リ検索順は自動的に指定されます。 ユーザーによる設定は必要であ り、

また不可能です。

混合言語コンポーネン トのインスタンシエーシ ョ ン

混合言語デザインでは、 次のセクシ ョ ンで説明するよ うに、 Verilog/SV モジュールを VHDL アーキテクチャに、 また

は VHDL コンポーネン ト を Verilog/SV モジュールにインスタンシエートできます。

ポート タイプが一致しているかど うかは、 182 ページの 「ポート マップおよびサポート されるポート型」 を参照し

て ください。

VHDL デザイン ユニッ トへの Verilog モジュールのインスタンシエーシ ョ ン

1. VHDL コンポーネン ト を、 インスタンシエートする Verilog モジュールと同じ名前 (大文字と小文字の区別も含む)

で宣言します。 次に例を示します。

COMPONENT MY_VHDL_UNIT PORT (Q : out STD_ULOGIC;D : in STD_ULOGIC;C : in STD_ULOGIC );

END COMPONENT;

2. 名前または位置の関連付けを使用し、 Verilog モジュールをインスタンシエート ます。 次に例を示します。

UUT : MY_VHDL_UNIT PORT MAP(Q => O,D => I,C => CLK);

Verilog/SV デザイン ユニッ トへの VHDL コンポーネントのインスタンシエーション

Verilog/SV デザイン ユニッ トに VHDL コンポーネン ト をインスタンシエートするには、 VHDL コンポーネン ト を

Verilog/SV モジュールのよ うにインスタンシエートする必要があ り ます。

次に例を示します。

module testbench ;wire in, clk;wire out;FD FD1(.Q(Q_OUT),.C(CLK);.D(A);

);

ロジック シミ ュレーシ ョ ン 181UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 182: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外

ポート マップおよびサポート されるポート型

表 G-1 に、 サポート されるポート型を リ ス ト します。

次の表に、 混合言語デザインの境界でサポート されるポートの VHDL および Verilog データ型を示します。

注記: Verilog 出力ポートの reg 型は、 混合言語の境界でサポート されます。 境界上では、 出力ポート reg が出力

ネッ ト (ワイヤ) ポートのよ うに処理されます。 これ以外の型が混合言語の境界で使用される と、 エラーとな り ます。

注記: Vivado シ ミ ュレータでは、 レコード エレ メン トは混合ド メ インにインスタンシエート される Verilog モジュール

のポート マップのアクチュアルと してサポート されます。 VHDL ポート と してサポート される型 (表 G-2 にリ ス ト )

も、 すべてレコード エレ メン ト と してサポート されます。

表 G-1: サポート されるポート型

VHDL 1 Verilog/SV 2

IN INPUT

OUT OUTPUT

INOUT INOUT

1. VHDL のバッファーおよびリ ンケージ ポートはサポート されません。

2. Verilog の双方向パス オプシ ョ ンへの接続はサポート されません。 名前の付いていない Verilog ポートは混合デザインの境界で

は使用できません。

表 G-2: サポート される VHDL および Verilog データ型

VHDL ポート Verilog ポート

bit net

std_logic net

bit_vector vector net

signed vector net

unsigned vector net

std_ulogic_vector vector net

std_logic_vector vector net

表 G-3: サポート される SV および VHDL データ型

SV データ型 VHDL データ型

Int

bit_vector

std_logic_Vector

std_ulogic_vector

signed

unsigned

byte

bit_vector

std_logic_Vector

std_ulogic_vector

ロジック シミ ュレーシ ョ ン 182UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 183: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外

signed

unsigned

shortint

bit_vector

std_logic_Vector

std_ulogic_vector

signed

unsigned

longint

bit_vector

std_logic_Vector

std_ulogic_vector

signed

unsigned

integer

bit_vector

std_logic_Vector

std_ulogic_vector

signed

unsigned

vector of bit(1D)

bit_vector

std_logic_Vector

std_ulogic_vector

signed

unsigned

vector of logic(1D)

bit_vector

std_logic_Vector

std_ulogic_vector

signed

unsigned

vector of reg(1D)

bit_vector

std_logic_Vector

std_ulogic_vector

表 G-3: サポート される SV および VHDL データ型 (続き)

SV データ型 VHDL データ型

ロジック シミ ュレーシ ョ ン 183UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 184: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外

ジェネリ ック (パラメーター ) のマップ

Vivado シ ミ ュレータでは、 次の VHDL ジェネ リ ッ ク型 (および同等の Verilog/SV) がサポート されます。

• integer

• real

• string

• boolean

注記: これ以外のジェネ リ ッ ク型が混合言語の境界で使用される と、 エラーとな り ます。

VHDL および Verilog 値のマップ

表 G-4 に、 std_logic および bit への Verilog ステートのマップを リ ス ト します。

注記: Verilog の駆動電流は無視されます。 VHDL には、 これに対応するマップがあ り ません。

signed

unsigned

logic/bit

bit

std_logic

std_ulogic

bit_vector

std_logic_Vector

std_ulogic_vector

signed

unsigned

表 G-3: サポート される SV および VHDL データ型 (続き)

SV データ型 VHDL データ型

表 G-4: std_logic および bit へマップされる Verilog ステート

Verilog std_logic bit

Z Z 0

0 0 0

1 1 1

X X 0

ロジック シミ ュレーシ ョ ン 184UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 185: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外

表 G-5 に、 Verilog ステートにマップされる VHDL 型 bit を リ ス ト します。

表 G-6 に、 Verilog ステートにマップされる VHDL 型 std_logic を リ ス ト します。

Verilog では大文字/小文字が区別されるので、 コンポーネン ト宣言で使用する関連付けおよびローカル ポート名は

Verilog ポート名の大文字/小文字と一致している必要があ り ます。

表 G-5: Verilog ステートにマップされる VHDL の bit

bit Verilog

0 0

1 1

表 G-6: Verilog ステートにマップされる VHDL の std_logic

std_logic Verilog

U X

X X

0 0

1 1

Z Z

W X

L 0

H 1

- X

ロジック シミ ュレーシ ョ ン 185UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 186: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外

VHDL 言語サポートの例外

言語のコンス ト ラ ク トの中には、 Vivado シ ミ ュレータでサポート されないものもあ り ます。 表 G-7 に、 VHDL 言語

サポートの例外を リ ス ト します。

.

表 G-7: VHDL 言語サポートの例外

サポート される VHDL コンスト ラク ト 例外

abstract_literal 基底付き リテラルと して表現される浮動小数点はサポート

されません。

alias_declaration オブジェク ト以外へのエイ リ アスは通常、 特に次の場合サ

ポート されません。

• エイ リ アスのエイ リ アス

• subtype_indication なしのエイ リ アス宣言

• エイ リ アス宣言のシグナチャ

• alias_designator と しての演算子シンボル

• 演算子シンボルのエイ リ アス

• エイ リ アス宣言と しての文字リ テラル

alias_designator alias_designator と しての operator_symbol

alias_designator と しての character_literal

association_element 結合エレ メン トのアクチュアルのスライスには、 グローバ

ル、 ローカルなスタティ ッ ク範囲を使用できます。

attribute_name 接頭語の後のシグナチャはサポート されません。

binding_indication entity_aspect を使用しない binding_indication はサポート さ

れません。

bit_string_literal 空の bit_string_literal (" ") はサポート されません。

block_statement guard_expression はサポート されません。 たとえば、 保護

付きブロッ ク、 保護付き信号、 保護付きターゲッ ト、 およ

び保護付き代入はサポート されません。

choice case 文で集合体を選択と して使用するこ とはサポート され

ません。

concurrent_assertion_statement 実行延期はサポート されていません。

concurrent_signal_assignment_statement 実行延期はサポート されていません。

concurrent_statement wait 文を含む並列手続き呼び出しはサポート されません。

conditional_signal_assignment オプシ ョ ンの一部であるキーワード guarded は、 保護付き

信号代入はサポート されないので、 サポート されません。

configuration_declaration コンフィギュレーシ ョ ンで使用される generate インデッ クス

のローカルではないスタティ ッ クはサポート されません。

entity_class エンティティ ク ラス と してのリテラル、 ユニッ ト、 ファ

イル、 グループはサポート されません。

ロジック シミ ュレーシ ョ ン 186UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 187: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外

entity_class_entry グループ テンプレート と共に使用するためのオプシ ョ ン

の < > はサポート されません。

file_logical_name file_logical_name では、 ワイルドカードを使用して

文字列値を評価できますが、 ファ イル名と して使用できる

のは文字列リテラルおよび識別子のみです。

function_call function_call 内の名前によるパラ メーター結合では、

スライス、 インデッ クス、 およびフォーマルの選択はサ

ポート されません。

instantiated_unit ダイレク ト コンフ ィギュレーシ ョ ン インスタンシエー

シ ョ ンはサポート されません。

[mode] リ ンケージおよびバッファー ポートは完全にはサポート

されません。

options guarded はサポート されません。

primary primary が使用された場所で、 アロケーターが拡張されます。

procedure_call procedure_call 内の名前によるパラ メーター結合では、

スライス、 インデッ クス、 およびフォーマルの選択はサ

ポート されません。

process_statement 実行延期プロセスはサポート されません。

selected_signal_assignment オプシ ョ ンの一部であるキーワード guarded は、 保護付き

信号代入はサポート されないので、 サポート されません。

signal_declaration signal_kind はサポート されません。 signal_kind は

サポート されない保護付き信号を宣言するために使用され

ます。

subtype_indication 分解された複合体 (配列およびレコード ) のサブタイプはサ

ポート されません。

waveform unaffected はサポート されていません。

waveform_element 空の波形エレ メン トは、 保護付き信号にのみ関連するため

サポート されません。

表 G-7: VHDL 言語サポートの例外 (続き)

サポート される VHDL コンスト ラク ト 例外

ロジック シミ ュレーシ ョ ン 187UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 188: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外

Verilog 言語サポートの例外 表 G-8 に、 Verilog の言語サポートの例外を リ ス ト します。

表 G-8: Verilog 言語サポートの例外

Verilog コンスト ラク ト 例外

コンパイラ指示子のコンスト ラク ト

`unconnected_drive サポート なし

`nounconnected_drive サポート なし

属性

attribute_instance サポート なし

attr_spec サポート なし

attr_name サポート なし

プリ ミテ ィブ ゲートおよびスイッチ タイプ

cmos_switchtype サポート なし

mos_switchtype サポート なし

pass_en_switchtype サポート なし

生成されたインスタンシエーシ ョ ン

generated_instantiation module_or_generate_item 代替はサポート されません。

規格からの出力 ( 『IEEE Standard Verilog Hardware Description

Language』 (IEEE 1364-2001) セクシ ョ ン 13.2 [参照 15] を参照)

generate_item_or_null ::=

generate_conditonal_statement |

generate_case_statement |

generate_loop_statement |

generate_block |

module_or_generate_item

シ ミ ュレータでサポート される出力

generate_item_or_null ::=

generate_conditional_statement|

generate_case_statement |

generate_loop_statement |

generate_blockgenerate_condition

ロジック シミ ュレーシ ョ ン 188UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 189: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外

genvar_assignment 部分的にサポート。

すべての generate ブロッ クに名前を付ける必要があ り ます。

規格からの出力 ( 『IEEE Standard Verilog Hardware Description

Language』 (IEEE 1364-2001) セクシ ョ ン 13.2 [参照 15] を参照)

generate_block ::=

begin

[ : generate_block_identifier ]

{ generate_item }

end

シ ミ ュレータでサポート される出力

generate_block ::=

begin:

generate_block_identifier {

generate_item }

end

ソース テキスト コンスト ラク ト

ライブラリ ソース テキスト

library_text サポート なし

library_descriptions サポート なし

library_declaration サポート なし

include_statement ライブラ リ マップ ファ イル内の include 文を参照します ( 『IEEE

Standard Verilog Hardware Description Language』 (IEEE 1364-2001) セク

シ ョ ン 13.2 [参照 15] を参照)。`include コンパイラ指示子は参照し

ません。

システム タイ ミング チェ ック コマンド

$skew_timing_check サポート なし

$timeskew_timing_check サポート なし

$fullskew_timing_check サポート なし

$nochange_timing_check サポート なし

システム タイ ミング チェ ック コマンドの引数

checktime_condition サポート なし

PLA モデリング タスク

$async$nand$array サポート なし

$async$nor$array サポート なし

$async$or$array サポート なし

$sync$and$array サポート なし

$sync$nand$array サポート なし

$sync$nor$array サポート なし

表 G-8: Verilog 言語サポートの例外 (続き)

Verilog コンスト ラク ト 例外

ロジック シミ ュレーシ ョ ン 189UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 190: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 G: Vivado シミ ュレータの混合言語サポートおよび例外

$sync$or$array サポート なし

$async$and$plane サポート なし

$async$nand$plane サポート なし

$async$nor$plane サポート なし

$async$or$plane サポート なし

$sync$and$plane サポート なし

$sync$nand$plane サポート なし

$sync$nor$plane サポート なし

$sync$or$plane サポート なし

Value Change Dump (VCD) ファイル

$dumpportson

$dumpports

$dumpportsoff

$dumpportsflush

$dumpportslimit

$vcdplus

サポート なし

表 G-8: Verilog 言語サポートの例外 (続き)

Verilog コンスト ラク ト 例外

ロジック シミ ュレーシ ョ ン 190UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 191: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 H

Vivado シミ ュレータ クイック リファレンス ガイド

概要

表 H-1 に、 よ く使用される Vivado® シ ミ ュレータ コマンドのクイ ッ ク リ ファレンスおよび例を示します。

.

表 H-1: スタンドアロン モード : コマンド ラインからの解析、 エラボレート、 シミ ュレーシ ョ ンの実行

HDL ファイルの解析

Vivado シ ミ ュレータでは、 Verilog、 SystemVerilog および VHDL の 3 つのタイプの HDL ファ イルがサポート されています。

これらのサポート されるファ イルは、 XVHDL および XVLOG コマンドを使用して解析できます。

VHDL ファイルの解析

xvhdl file1.vhd file2.vhd

xvhdl -work worklib file1.vhd file2.vhd

xvhdl -prj files.prj

Verilog ファイルの解析

xvlog file1.v file2.v

xvlog -work worklib file1.v file2.v

xvlog -prj files.prj

SystemVerilog ファイルの解析

xvlog -sv file1.v file2.v

xvlog -work worklib -sv file1.v file2.v

xvlog -prj files.prj

注記: PRJ ファイル形式に関する詳細は、 第 7 章の 「プロジェク ト ファイル (.prj) の構文」 を参照してください。

ロジック シミ ュレーシ ョ ン 191UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 192: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 H: Vivado シミ ュレータ クイック リファレンス ガイド

その他の xvlog および xvhdl オプシ ョ ン

xvlog および xvhdl の主なオプシ ョ ン

コマンド オプシ ョ ンの全リ ス トは、 117 ページの表 7-2 を参照して ください。

次は、 xvlog および xvhdl の主なオプシ ョ ンです。

主なオプシ ョ ン 適用先

「-d [define]

<name>[=<val>]」

xvlog

「-h [-help]」 xvlog、 xvhdl

「-i [include]

<directory_name>」

xvlog

「-initfile

<init_filename>」

xvlog、 xvhdl

「-L [-lib] <library_name>

[=<library_dir>]」

xvlog、 xvhdl

「-log <filename>」 xvlog、 xvhdl

「-prj <filename>」 xvlog、 xvhdl

「-relax」 xvhdl、 vlog

「-work <library_name>

[=<library_dir>]」

xvlog、 xvhdl

実行可能なスナップシ ョ ッ トのエラボレートおよび生成

解析後は、 xelab コマンドを使用してデザインを Vivado シ ミ ュレータでエラボレートできます。 xelab では、 実行可能なス

ナップシ ョ ッ トが生成されます。

注記: 解析段階を飛ばして直接 xelab コマンドを実行し、 PRJ ファイルを渡すこ と もできます。 xelab でファ イルを解析するため XVLOG および XVHDL が呼び出されます。

使用法

xelab top1 top2 2 つの 上位デザイン ユニッ ト (top1 および top2) を含むデザイン

をエラボレート します。 この例では、 デザイン ユニッ トが /work ラ

イブラ リにコンパイルされます。

xelab lib1.top1 lib2.top2 2 つの 上位デザイン ユニッ ト (top1 および top2) を含むデザイン

をエラボレート します。 この例では、 デザイン ユニッ トがそれぞれ

lib1 および lib2 にコンパイルされます。

xelab top1 top2 -prj

files.prj 2 つの 上位デザイン ユニッ ト (top1 および top2) を含むデザイン

をエラボレート します。 この例では、 デザイン ユニッ トが /work ラ

イブラ リにコンパイルされます。 files.prj ファ イルには、 次のよ

うなコードが含まれます。

verilog <libraryName> <VerilogDesignFileName>vhdl <libraryName> <VHDLDesignFileName>sv <libraryName> <SystemVerilogDesignFileName>

xelab top1 top2 -s top 2 つの 上位デザイン ユニッ ト (top1 および top2) を含むデザイン

をエラボレート します。 この例では、 デザイン ユニッ トが /work ラ

イブラ リにコンパイルされます。 コンパイル後、 xelab によ り top

という名前の実行可能なスナップシ ョ ッ トが生成されます。 -s top

オプシ ョ ンを指定しない場合、 すべてのユニッ ト名を連結してス

ナップシ ョ ッ トが作成されます。

表 H-1: スタンドアロン モード : コマンド ラインからの解析、 エラボレート、 シミ ュレーシ ョ ンの実行 (続き)

ロジック シミ ュレーシ ョ ン 192UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 193: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 H: Vivado シミ ュレータ クイック リファレンス ガイド

コマンド ライン ヘルプおよび xelab オプシ ョ ン

xelab -help

117 ページの 「xelab、 xvhd、 xvlog コマンド オプシ ョ ン」

シミ ュレーシ ョ ンの実行

解析、 エラボレート、 コンパイル段階が問題なく終了する と、 xsim によ りシ ミ ュレーシ ョ ンを実行する実行可能なスナップ

シ ョ ッ トが生成されます。

使用法

xsim top -R デザインを 後までシ ミ ュレーシ ョ ンします。

xsim top -gui Vivado シ ミ ュレータの GUI の起動します。

xsim top Vivado Design Suite コマンド プロンプ ト を Tcl モードで開きます。 こ

こから次のオプシ ョ ンを実行できます。

run -all run 100 ns

重要なシ ョート カッ ト

解析、 エラボレーシ ョ ン、 実行ファイル生成、 シ ミ ュレーシ ョ ンを 1 ~ 3 段階で実行できます。

3 段階

xvlog bot.v

xvhdl top.vhd

xelab work.top -s top

xsim top -R

2 段階

xelab -prj my_prj.prj work.top -s top

xsim top -R

my_prj.prj ファ イルには、 次が含まれます。

verilog work bot.v

vhdl work top.vhd

1 段階

xelab -prj my_prj.prj work.top -s top -R

my_prj.prj ファ イルには、 次が含まれます。

verilog work bot.v

vhdl work top.vhd

Vivado シミ ュレーシ ョ ンの Tcl コマンド

次は、 よ く使用される Tcl コマンドです。すべてのコマンドのリ ス トは、 Tcl コンソールに次のコマンドを入力してください。

• load_features simulator

• help -category simulation

Tcl コマンドの詳細は、 「-help <Tcl_command>」 と入力してください。

表 H-1: スタンドアロン モード : コマンド ラインからの解析、 エラボレート、 シミ ュレーシ ョ ンの実行 (続き)

ロジック シミ ュレーシ ョ ン 193UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 194: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 H: Vivado シミ ュレータ クイック リファレンス ガイド

よ く使用される Vivado シミ ュレータの Tcl コマンド

add_bp HDL ソースの行にブレークポイン ト を追加します。 Tcl コマンド例

は、 87 ページを参照して ください。

add_force 信号、 ワイヤ、 またはレジスタを特定の値に強制的に設定します。

Tcl コマンド例は、 92 ページを参照してください。

current_time

now

現在のシ ミ ュレーシ ョ ン時間をレポート します。 Tcl スク リプ トでの

このコマンドの例は、 129 ページの 「current_time」 を参照してくだ

さい。

current_scope 現在の作業中の HDL スコープをレポート または設定します。 詳細

は、 51 ページの 「その他のスコープおよびソース オプシ ョ ン」 を参

照してください。

get_objects 1 つまたは複数の HDL スコープで、 指定したパターンごとに HDL オ

ブジェク トの リ ス ト を取得します。 コマンドの使用例は、 98 ページ

を参照してください。

get_scopes 子 HDL スコープのリ ス ト を取得します。 詳細は、 51 ページの 「その

他のスコープおよびソース オプシ ョ ン」 を参照してください。

get_value 選択した HDL オブジェク ト (変数、 信号、 ワイヤ、 レジスタ ) の現在

の値を取得します。詳細は、 Tcl コンソールに get_value -help と

入力する と取得できます。

launch_simulation Vivado シ ミ ュレータを使用してシ ミ ュレーシ ョ ンを実行します。

remove_bps シ ミ ュレーシ ョ ンからブレークポイン ト を削除します。 Tcl コマンド

例は、 87 ページを参照して ください。

report_drivers HDL ワイヤまたは信号オブジェク トのド ライバーと現在の駆動値を

表示します。 詳細は、 99 ページの 「Tcl コマンド report_drivers の使

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

report_values 指定した HDL オブジェク ト (変数、 信号、 ワイヤ、 またはレジスタ )

の現在のシ ミ ュレーシ ョ ン値を表示します。 Tcl コマンド例は、

51 ページを参照して ください。

restart シ ミ ュレーシ ョ ンをデザインを読み込んだ後の状態に戻し、時間を 0

に設定します。 詳細は、 45 ページを参照して ください。

set_value HDL オブジェク ト (変数、 信号、 ワイヤ、 またはレジスタ ) を特定の

値に設定します。 詳細は、 付録 F 「Vivado シ ミ ュレータ Tcl コマンド

の値の規則」 を参照してください。

step シ ミ ュレーシ ョ ンを次の文に進めます。 詳細は、 86 ページの 「シ

ミ ュレーシ ョ ンのステップ実行」 を参照してください。

表 H-1: スタンドアロン モード : コマンド ラインからの解析、 エラボレート、 シミ ュレーシ ョ ンの実行 (続き)

ロジック シミ ュレーシ ョ ン 194UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 195: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I

ザイリンクス シミ ュレータ インターフェイスの使用

概要

XSI (Xilinx® Simulator Interface) は、 HDL デザインのテス トベンチと して機能する C/C++ プログラムをイネーブルに

するザイ リ ンクス Vivado シ ミ ュレータ (xsim) への C/C++ アプリ ケーシ ョ ンプログラ ミ ング インターフェイス (API)

です。 この C/C++ プログラムは、 XSI を使用し、 HDL デザインをホス トする Vivado シ ミ ュレータのアクティビティ

を制御します。

この C/C++ プログラムは次の方法でシ ミ ュレーシ ョ ンを制御します。

• HDL デザインの 上位入力ポートの値の設定

• 一定時間シ ミ ュレーシ ョ ンを実行するよ う Vivado シ ミ ュレータに指示

HDL デザインの 上位出力ポートの値を読み出すこ と も可能です。

C/C++ プログラムで XSI を使用するには、 次の手順に従います。

1. ダイナミ ッ ク リ ンクを使用して XSI API 関数を呼び出すよ う準備します。

2. C/C++ テス トベンチ コードを API 関数を使用して記述します。

3. C/C++ プログラムをコンパイルおよびリ ンク します。

4. Vivado シ ミ ュレータ と HDL デザインを 1 つの共有ライブラ リにパッケージします。

ロジック シミ ュレーシ ョ ン 195UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 196: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

ダイナミ ック リンキング用に XSI 関数を準備

XSI 関数を間接的に呼び出すには、 ダイナミ ッ ク リ ンクを使用するこ と推奨します。 この方法は XSI 関数を直接呼

び出すよ り も複雑ですが、 ダイナミ ッ ク リ ンクを使用する と、 HDL デザインのコンパイルを C/C++ プログラムのコ

ンパイルとは切り離して実行できます。 C/C++ プログラムが実行中でも、 HDL デザインをいつでもコンパイルし、

読み込むこ とができます。

ダイナミ ッ ク リ ンクを介して関数を呼び出すには、 次の手順を実行する必要があ り ます。

1. 関数を含む共有ライブラ リ を開きます。

2. 関数を名前で検索し、 そのポインターを取得します。

3. 関数ポインターを使用して関数を呼び出します。

4. 共有ライブラ リ を閉じます (オプシ ョ ン)。

手順 1、 2、 4 では、 表 I-1 に示すよ うに、 OS 用のライブラ リ呼び出しを使用する必要があ り ます。 これらの関数の詳

細は、 ご使用の OS の資料を参照してください。

XSI では、 カーネル共有ライブラ リ とデザイン共有ライブラ リの 2 つの共有ライブラ リから関数を呼び出す必要があ

り ます。 カーネル共有ライブラ リは Vivado シ ミ ュレータに含まれており、 librdi_simulator_kernel.so

(Linux) または librdi_simulator_kernel.dll (Windows) という名前です。 このライブラ リは次のディ レク ト リ

にあ り ます。

<Vivado Installation Root>/lib/<platform>

<platform> は、 lnx64.o または win64.o です。 プログラムの実行中は、 ライブラ リ パスにこのディ レク ト リ を

必ず含めてください。 Linux では LD_LIBRARY_PATH 環境変数に、 Windows では PATH 環境変数に含めます。

デザイン共有ライブラ リは、 Vivado シ ミ ュレータによ り HDL デザインのコンパイル中に作成され ( 「デザイン共有

ライブラ リの準備」 を参照)、 xsimk.so (Linux) または xsimk.dll (Windows) と呼ばれ、 通常は次のディレク ト リ

にあ り ます。

<HDL design directory>/xsim.dir/<snapshot name>

表 I-1: OS 別ライブラリ コール

関数 Linux Windows

ラ イブラ リ を開く void *dlopen(const char *filename, int flag);

HMODULE WINAPI LoadLibrary(_In_ LPCTSTR lpFileName);

関数を名前で検索 void *dlsym(void *handle, const char *symbol);

FARPROC WINAPI GetProcAddress(_In_ HMODULE hModule,_In_ LPCSTR lpProcName);

共有ライブラ リ を閉じる int dlclose(void *handle);

BOOL WINAPI FreeLibrary(_In_ HMODULE hModule);

ロジック シミ ュレーシ ョ ン 196UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 197: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

<HDL design directory> はデザイン共有ライブラ リが作成されたディレク ト リ 、 <snapshot name> はライブ

ラ リ作成中に指定するスナップシ ョ ッ ト名です。 C/C++ プログラムは、 デザイン共有ライブラ リにある

xsi_open() という XSI 関数と、 カーネル共有ライブラ リのその他すべての XSI 関数を呼び出します。

Vivado シ ミ ュレータに含まれている XSI コード例では、 XSI 関数が Xsi::Loader と呼ばれる C/C++ ク ラスにま と

められています。 このク ラスは、 2 つの共有ライブラ リの名前を受け入れて、 必要なダイナミ ッ ク リ ンク手順を内部

で実行し、 すべての XSI 関数をク ラスのメンバー関数と して使用できるよ うにします。 このよ うに XSI 関数をラ ッ

プする と、 ダイナミ ッ ク リ ンキングの OS 関数を直接呼び出す必要がなくな り ます。 このク ラスのソース コードは、

Vivado インス トール ディ レク ト リの次のディ レク ト リにあ り、 ユーザーのプログラムにコピーできます。

<Vivado Installation Root>/examples/xsim/verilog/xsi/counter/xsi_loader.h<Vivado Installation Root>/examples/xsim/verilog/xsi/counter/xsi_loader.cpp

Xsi::Loader を使用するには、 次の例に示すよ うに、 2 つの共有ライブラ リの名前を渡してインスタンシエート し

ます。

#include "xsi_loader.h"...Xsi::Loader loader("xsim.dir/mySnapshot/xsimk.so", "librdi_simulator_kernel.so");

テストベンチ コードの記述

XSI を使用する C/C++ テス トベンチでは、 通常次の手順を使用します。

1. デザインを開きます。

2. 各 上位ポートの ID をフェッチします。

3. シ ミ ュレーシ ョ ンが終了するまで、 次の手順を繰り返します。

a. 上位入力ポートに値を設定します。

b. シ ミ ュレーシ ョ ンを特定の時間実行します。

c. 上位出力ポートの値をフェッチします。

4. デザインを閉じます。

次の表に、 各手順で使用する XSI 関数と、 等価の Xsi::Loader メ ンバー関数を リ ス ト します。 各 XSI 関数の使用

方法は、 XSI 関数のリ ファレンス セクシ ョ ンを参照してください。

表 I-2: Xsi::Loader メンバー関数

アクテ ィビテ ィ XSI 関数 Xsi::Loaderメンバー関数

デザインを開く xsi_open open

ポート ID をフェッチ xsi_get_port_number get_port_number

入力ポート値を設定 xsi_put_value put_value

シ ミ ュレーシ ョ ンを実行 xsi_run run

出力ポート値をフェッチ xsi_get_value get_value

デザインを閉じる xsi_close close

ロジック シミ ュレーシ ョ ン 197UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 198: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

Vivado シ ミ ュレータで XSI を使用する C++ プログラムのサンプルは、 次のディ レク ト リにあ り ます。

<Vivado Installation Root>/examples/xsim/<HDL language>/xsi

C/C++ プログラムのコンパイル

XSI のサンプル プログラムをガイ ド ラインと して使用するこ とができます。 各例で、 サンプル コードをコンパイル

して実行するためのスク リプ トが 1 または 2 つ提供されています。 プログラムのコンパイルについては、 コンパイラ

の資料を参照して ください。 Linux の場合、 コンパイルおよび実行は 2 段階プロセスになり ます。

1. C シェルで、 set_env.csh を実行します。

2. run.csh を起動します。

Windows の場合、 run.bat というバッチ ファ イルを実行します。

スク リプ トに関して、 次の点に注意して ください。

1. コンパイル行で -I を使用して xsi.h という インクルード ファイルを含むディレク ト リ を含めるよ う指定します。

2. C++ プログラムのコンパイル中は、 デザイン共有ライブラ リ またはカーネル共有ライブラ リは指定しません。

XSI インクルード ファ イルは次のディ レク ト リにあ り ます。

<Vivado Installation Root>/data/xsim/include/xsi.h

デザイン共有ライブラリの準備

XSI ベースの C/C++ プログラムを作成する 後の手順では、 HDL デザインをコンパイルし、 それを Vivado シ ミ ュ

レータ と共にパッケージして、 デザイン共有ライブラ リにします。 HDL デザインのソース コードを変更するたびに、

この手順を繰り返します。

注意: C/C++ プログラムの実行中にそのプログラム用のデザイン共有ライブラ リ を再構築する場合は、 この手順を実

行する前にプログラムでデザインを閉じて ください。

Vivado シ ミ ュレータのユーザー インターフェイスで使用する通常のスナップシ ョ ッ トの代わりに、 HDL デザインに

対して xelab を -dll オプシ ョ ンを使用して共有ライブラ リ を作成するよ う指定して実行し、 デザイン共有ライブ

ラ リ を作成します。

次に例を示します。

Linux のコマンド ラインに次のコマンドを入力し、 ./xsim.dir/design/xsimk.so にデザイン共有ライブラ リ を

作成します。

xelab work.top1 work.top2 -dll -s design

work.top1 および work.top2 は 上位モジュール名、 design はスナップシ ョ ッ ト名です。

HDL デザインのコンパイルの詳細は、 「xelab、 xvhdl、 xvlog xsim コマンド オプシ ョ ン」 を参照して ください。

ロジック シミ ュレーシ ョ ン 198UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 199: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

XSI 関数参照

このセクシ ョ ンでは、各 XSI API 関数を標準形式 (直接 C 呼び出し ) および Xsi::Loader メ ンバー関数形式で示しま

す。 標準形式の関数には xsiHandle とい う引数を指定できますが、 メンバー関数には指定できません。

xsiHandle には、 開いている HDL デザインのステート情報が含まれます。 標準形式の xsi_open は xsiHandle

を生成します。 Xsi::Loader 内には xsiHandle が含まれています。

xsi_closevoid xsi_close(xsiHandle design_handle);void Xsi::Loader::close();

この関数は HDL デザインを閉じ、 デザインに関連づけられている メモ リ を解放します。 シ ミ ュレーシ ョ ンを終了す

るためにこの関数を呼び出します。

xsi_get_error_infoconst char* xsi_get_error_info(xsiHandle design_handle);const char* Xsi::Loader::get_error_info();

この関数は、 後に発生したエラーの説明文を返します。

xsi_get_port_numberXSI_INT32 xsi_get_port_number(xsiHandle design_handle, const char* port_name);int Xsi::Loader::get_port_number(const char* port_name);

この関数は、 HDL デザインの要求された 上位ポートの整数 ID を返します。 この ID は、 xsi_get_value および

xsi_put_value 呼び出しでポート を指定するのに使用できます。 port_name はポート名で、 Verilog でも VHDL で

も大文字/小文字が区別されます。 指定した名前のポートが存在しない場合は、 -1 が返されます。

コード例

#include "xsi.h"#include "xsi_loader.h"...Xsi::Loader loader("xsim.dir/mySnapshot/xsimk.so","librdi_simulator_kernel.so");...int count = loader.get_port_number("count");

xsi_get_statusXSI_INT32 xsi_get_status(xsiHandle design_handle);int Xsi::Loader::get_status();

この関数は、 シ ミ ュレーシ ョ ンのステータスを返します。 返されるステータスは次の識別子のいずれかです。

ロジック シミ ュレーシ ョ ン 199UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 200: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

コード例

#include "xsi.h"#include "xsi_loader.h"...Xsi::Loader loader("xsim.dir/mySnapshot/xsimk.so","librdi_simulator_kernel.so");...if (loader.get_status() == xsiError) printf("HDL run-time error encountered.\n");

xsi_get_valuevoid xsi_get_value(xsiHandle design_handle, XSI_INT32 port_number, void* value);int Xsi::Loader::get_value(int port_number, void* value);

この関数は、 ポート ID port_number で示されるポートの値をフェッチします。 値は値が示すメモ リ バッファーに

配置されます。 ポートの ID 取得については、 「xsi_get_port_number」 を参照してください。

重要: 関数を呼び出すため、 プログラムでバッファーに十分なメモ リ を割り当てておく必要があ り ます。 必要なバッ

ファー サイズを判断するには、 「Vivado シ ミ ュレータの VHDL データ形式」 および 「Vivado シ ミ ュレータの Verilog

データ形式」 を参照して ください。

コード例

#include "xsi.h"#include "xsi_loader.h"...// Buffer for value of port "count"s_xsi_vlog_logicval count_val = {0X00000000, 0X00000000};Xsi::Loader loader("xsim.dir/mySnapshot/xsimk.so","librdi_simulator_kernel.so");...int count = loader.get_port_number("count");loader.get_value(count, &count_val);

xsi_opentypedef struct t_xsi_setup_info { char* logFileName; char* wdbFileName;} s_xsi_setup_info, *p_xsi_setup_info;

xsiHandle xsi_open(p_xsi_setup_info setup_info); void Xsi::Loader::open(p_xsi_setup_info setup_info);bool Xsi::Loader::isopen() const;

表 I-3: Xsi シミ ュレーシ ョ ン ステータス識別子

ステータス コード識別子 説明

xsiNormal エラーなし。

xsiError シ ミ ュレーシ ョ ンで HDL ランタイム エラーが発生しました。

xsiFatalError シ ミ ュレーシ ョ ンでエラー コンディシ ョ ンが発生し、 Vivado シ

ミ ュレータが続行できません。

ロジック シミ ュレーシ ョ ン 200UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 201: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

この関数は、 シ ミ ュレーシ ョ ン用に HDL デザインを開きます。 この関数を使用するには、 まず関数に渡す

s_xsi_setup_info 構造体を初期化する必要があ り ます。 シ ミ ュレーシ ョ ン ログ ファ イルの名前には

logFileName を使用し、 ログをディ スエーブルにするには、 NULL を使用します。 波形ト レース機能がオンになっ

ている場合 ( 「xsi_trace_all」 を参照)、 wdbFileName は出力 WDB (波形データベース) ファ イルの名前になり ます。

xsim.wdb のデフォルト名には NULL を使用します。波形ト レース機能がオフの場合は、Vivado シ ミ ュレータによ り

wdbFileName フ ィールドは無視されます。

ヒン ト : XSI API が今後変更されないよ うにプログラムを保護するには、 「例」 に示すよ うに、 フ ィールドに挿入する

前に、 s_xsi_setup_info 構造体を 0 にするこ とを推奨します。

この関数の標準形式は、 デザインのプロセス ステート情報を含む C オブジェク ト xsiHandle を返します。 これは、

ほかのすべての標準形式 XSI 関数で使用できます。 ローダー形式のこの関数は値を返しませんが、 isopen メ ンバー

関数をクエ リするこ とによ り、 デザインを開いたかど うかをチェッ クできます。 このメンバー関数は、 open メ ン

バー関数が呼び出されている場合、 true を返します。

#include "xsi.h"#include "xsi_loader.h"...Xsi::Loader loader("xsim.dir/mySnapshot/xsimk.so","librdi_simulator_kernel.so");s_xsi_setup_info info;memset(&info, 0, sizeof(info));info.logFileName = NULL;char wdbName[] = "test.wdb"; // make a buffer for holding the string "test.wdb"info.wdbFileName = wdbName;loader.open(&info);

xsi_put_valuevoid xsi_put_value(xsiHandle design_handle, XSI_INT32 port_number, void* value);void Xsi::Loader::put_value(int port_number, const void* value);

この関数は、 value に格納されている値を、 ポート ID port_number で指定されているポートに出力します。 ポー

トの ID 取得については、 「xsi_get_port_number」 を参照してください。 value は、 プログラムが割り当てて値を挿入

する必要がある メモ リ バッファーへのポインターです。 値のフォーマッ トについては、 「Vivado シ ミ ュレータの

VHDL データ形式」 および 「Vivado シ ミ ュレータの Verilog データ形式」 を参照してください。

注意: 高のパフォーマンスを得るため、 Vivado シ ミ ュレータでは xsi_put_value に渡す値のサイズまたは型は

チェッ ク されません。 xsi_put_value にポートのサイズまたは型に一致しない値を渡すと、 Viavdo シ ミ ュレータ

およびプログラムが予期しない動作をするこ とがあ り ます。

コード例

#include "xsi.h"#include "xsi_loader.h"...// Hard-coded Buffer for a 1-bit "1" Verilog 4-state valueconst s_xsi_vlog_logicval one_val = {0X00000001, 0X00000000};

Xsi::Loader loader("xsim.dir/mySnapshot/xsimk.so","librdi_simulator_kernel.so");...int clk = loader.get_port_number("clk");loader.put_value(clk, &one_val); // set clk to 1

ロジック シミ ュレーシ ョ ン 201UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 202: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

xsi_restartvoid xsi_restart(xsiHandle design_handle);void Xsi::Loader:: restart();

この関数は、 シ ミ ュレーシ ョ ン時間を 0 にリセッ ト します。

xsi_runvoid xsi_run(xsiHandle design_handle, XSI_UINT64 time_ticks);void Xsi::Loader::run(XSI_INT64 step);

この関数は、 カーネル精度単位で指定された時間、 シ ミ ュレーシ ョ ンを実行します。 カーネル精度ユニッ トはデザイ

ンの HDL ソース ファ イルの中で 小の時間単位です。 たとえば、 デザインにソース ファ イルが 2 つあ り、 1 つは精

度が 1 ns で、 も う 1 つは 1 ps である場合、 カーネル精度単位は小さい方、 つま り 1 ps になり ます。

Verilog のソース ファ イルでは、 `timescale を使用して時間精度を指定できます。

例:

`timescale 1ns/1ps

この例では、 / の後の時間単位 (1ps) が時間精度です。 VHDL には `timescale に該当するものはあ り ません。

xelab コマンドに --timescale、 --override_timeprecision、 --timeprecision_vhdl オプシ ョ ンを使用

して、 カーネル精度単位をさ らに調整できます。 これらのコマンド ライン オプシ ョ ンの使用法は、 「xelab、 xvhdl、

xvlog xsim コマンド オプシ ョ ン」 を参照して ください。

注記: シ ミ ュレーシ ョ ンが指定された時間実行されるまで、 xsi_run はブロ ッ ク されます。 プログラムと Vivado シ

ミ ュレータは、 1 スレッ ドの実行を共有します。

xsi_trace_allvoid xsi_trace_all(xsiHandle design_handle);void Xsi::Loader:: trace_all();

HDL デザインの信号すべてに対して波形ト レース機能をオンにするため、 xsi_open の後にこの関数を呼び出しま

す。 波形ト レースをオンにした状態でシ ミ ュレーシ ョ ンを実行する と、 Vivado シ ミ ュレータで、 デザインのすべて

の信号のすべてのイベン ト を含む波形データベース (WDB) ファ イルが生成されます。 WDB ファ イルのデフォルト名

は xsim.wdb です。 別の名前を指定するには、 次のコード例に示すよ うに、 xsi_open を呼び出すと きに

s_xsi_setup_info 構造体の wdbFileName フ ィールドを設定します。

コード例

#include "xsi.h"#include "xsi_loader.h"...Xsi::Loader loader("xsim.dir/mySnapshot/xsimk.so","librdi_simulator_kernel.so");s_xsi_setup_info info;memset(&info, 0, sizeof(info));char wdbName[] = "test.wdb"; // make a buffer for holding the string "test.wdb"info.wdbFileName = wdbName;loader.open(&info);loader.trace_all();

ロジック シミ ュレーシ ョ ン 202UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 203: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

シ ミ ュレーシ ョ ンが完了したら、 Vivado で WDB ファ イルを開いて、 信号の波形を確認できます。 Vivado での WDB

ファ イルの表示方法は、 「前に保存したシ ミ ュレーシ ョ ン run を開く」 を参照してください。

重要: HDL デザインをコンパイルする と きは、 xelab に -debug all または -debug typical を指定する必要があ

り ます。 -debug を指定しないと、 波形データは Vivado シ ミ ュレータで保存されません。

Vivado シミ ュレータの VHDL データ形式

このセクシ ョ ンでは、 VHDL 値の変換方法と、 XSI 関数の 「xsi_get_value」 および 「xsi_put_value」 で使用する メモ リ

バッファーのフォーマッ トについて説明します。

IEEE の std_logic 型VHDL の std_logic および std_ulogic の 1 ビッ トは、 C/C++ では 1 バイ ト と して表現されます (char または符号

なしの char )。 表 I-4 に、 std_logic/std_ulogic およびそれに対応する C/C++ の値を リ ス ト します。

コード例

// Put a '1' on signal "clk," where "clk" is defined as// signal clk : std_logic;const char one_val = 3; // C encoding for std_logic '1'...int clk = loader.get_port_number("clk");loader.put_value(clk, &one_val); // set clk to 1

表 I-4: std_logic/std_ulogic 値およびそれに対応する C/C++ 値

std_logic 値 C/C++ バイ ト値 (10 進数)

‘U’ 0

‘X’ 1

‘0’ 2

‘1’ 3

‘Z’ 4

‘W’ 5

‘L’ 6

‘H’ 7

‘_’ 8

ロジック シミ ュレーシ ョ ン 203UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 204: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

VHDL の bit 型VHDL の bit の 1 ビッ トは、 C/C++ では 1 バイ ト と して表現されます。表 I-5 に、 bit およびそれに対応する C/C++

の値を リ ス ト します。

コード例

// Put a '1' on signal "clk," where "clk" is defined as// signal clk : bit;const char one_val = 1; // C encoding for bit '1'...int clk = loader.get_port_number("clk");loader.put_value(clk, &one_val); // set clk to 1

VHDL の character 型VHDL の 1 character 値は、 C/C++ では 1 バイ ト と して表現されます。 VHDL の character 値は C/C++ の char

リ テラルとまった く同じで、その ASCII の数値と も等し くな り ます。たとえば、VHDL の character 値 m は、C/C++ の

char リ テラル m または 10 進数 109 と同じです。

コード例

// Put a 'T' on signal "myChar," where "myChar" is defined as// signal myChar : character;const char tVal = 'T';int myChar = loader.get_port_number("myChar");loader.put_value(myChar, &tVal);

VHDL の整数型

VHDL の 1 integer 値は、 C/C++ では 1 int と して表現されます。

コード例

// Put 1234 (decimal) on signal "myInt," where "myInt" is defined as// signal myInt : integer;const int intVal = 1234;int myInt = loader.get_port_number("myInt");loader.put_value(myInt, &intVal);

表 I-5: bit およびそれに対応する C/C++ の値

bit 値 C/C++ バイ ト値 (10 進数)

‘0’ 0

‘1’ 1

ロジック シミ ュレーシ ョ ン 204UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 205: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

VHDL の real 型VHDL の 1 real 値は、 C/C++ では 1 double と して表現されます。

コード例

// Put 3.14 on signal "myReal," where "myReal" is defined as// signal myReal : real;const double doubleVal = 3.14;int myReal = loader.get_port_number("myReal");loader.put_value(myReal, &doubleVal);

VHDL の配列型

VHDL 配列は、 C/C++ では VHDL 配列のエレ メン ト タイプを表す C/C++ 型の配列と して表現されます。 表 I-6 に、

VHDL 配列およびそれと等価の C/C++ 型の例を示します。

C/C++ では、 VHDL 配列の左インデッ クスは C/C++ 配列要素 0 にマップされ、 右インデッ クスは C/C++ 要素 <array

size> - 1 にマップされます。

表 I-6: VHDL 配列およびそれと等価の C/C++ 型

VHDL の配列型 C/C++ の配列型

std_logic_vector (array of std_logic) char [ ]

bit_vector (array of bit) char [ ]

string (array of character) char [ ]

array of integer int [ ]

array of real double [ ]

表 I-7: C/C++ にマップされた VHDL 配列

C/C++ の配列指数 0 1 2 … <array size> - 1

VHDL 配列 (left TO right) 指数 left left + 1 left + 2 … right

VHDL 配列 (left DOWNTO

right) 指数left left – 1 left – 2 … right

ロジック シミ ュレーシ ョ ン 205UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 206: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

コード例

// For the following VHDL definitions

// signal slv : std_logic_vector(7 downto 0);// signal bv : bit_vector(3 downto 0);// signal s : string(1 to 11);// type IntArray is array(natural range <>) of integer;// signal iv : IntArray(0 to 3);

// do the following assignments//// slv <= "11001010";// bv <= B"1000";// s <= "Hello world";// iv <= (33, 44, 55, 66);

const unsigned char slvVal[] = {3, 3, 2, 2, 3, 2, 3, 2}; // 3 = '1', 2 = '0'loader.put_value(slv, slvVal);const unsigned char bvVal[] = {1, 0, 0, 0};loader.put_value(bv, bvVal);const char sVal[] = "Hello world"; // ends with extra '\0' that XSI ignoresloader.put_value(s, sVal);const int ivVal[] = {33, 44, 55, 66};loader.put_value(iv, ivVal);

Vivado シミ ュレータの Verilog データ形式

Verilog ロジッ ク データは、 xsi.h で定義されている次の構造体を使用した C/C++ でエンコード されています。

typedef struct t_xsi_vlog_logicval { XSI_UINT32 aVal; XSI_UINT32 bVal;} s_xsi_vlog_logicval, *p_xsi_vlog_logicval;

Verilog 値の各 4 ステート ビッ トは、 aVal の 1 ビッ ト位置および bVal のそれに対応するビッ ト位置を占めます。

2 ステートの SystemVerilog ビッ ト値の場合、 aVal ビッ トはビッ ト値を保持し、対応する bVal ビッ トは未使用です。

「xsi_put_value」 の 2 ステート値を形成する と きは、 bVal を 0 にするこ とを推奨します。

Verilog ベクターは、 C/C++ では Verilog ベクターの右インデッ クスが aVal/bVal ビッ ト位置 0 にマップされ、 左イ

ンデッ クスが aVal/bVal ビッ ト位置 <vector size> - 1 にマップされます。

表 I-8: Verilog 値マッピング

Verilog 値 aVal ビッ ト値 bVal ビッ ト値

0 0 0

1 1 0

X 1 1

Z 0 1

ロジック シミ ュレーシ ョ ン 206UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 207: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 I: ザイリンクス シミ ュレータ インターフェイスの使用

表 I-10 に、 次の Verilog ベクターと等価の Verilog および C/C++ を示します。

wire [7:4] w = 4'bXX01;

33 個以上の要素がある Verilog ベクターの C/C++ 表現は s_xsi_vlog_logicval の配列で、 Verilog ベクターの右か

ら 32 ビッ トが C/C++ 配列の要素 0 に、 次の 32 ビッ トが C/C++ 配列の要素 1 に、 という よ うにマップされます。

表 I-11 に、 Verilog ベクターのマップ例を示します。

wire [2:69] vec;

これは、 次の C/C++ 配列にマップされます。

s_xsi_vlog_logicval val[3];

つま り、 vec[2] は val[3] ビッ ト位置 3 にマップされ、 vec[69] は val[0] ビッ ト位置 0 にマップされます。

多次元 Verilog 配列は、 Verilog 配列が C/C++ へのマップ前に行優先順でフラ ッ ト化されるよ うに、

s_xsi_vlog_logicval または s_xsi_vlog_logicval 配列のビッ トにマップされます。

たとえば、 次の 2 次元配列がある と します。

reg [7:0] mem[0:1];

C/C++ にマップする前にベクターにコピーされたよ うに扱われます。

reg [15:0] vec;vec[7:0] = mem[1];vec[8:15] = mem[0];

表 I-9: Verilog ベクター

aVal/bVal ビッ ト位置 <vector size> ~ 31 <vector size> - 1 <vector size> - 2 … 1 0

指数

wire [left:right] vec

(left > right)

未使用 left left - 1 … right + 1 right

指数

wire [left:right] vec

(left < right)

未使用 left left + 1 … right - 1 right

表 I-10: Verilog ベクターと等価の Verilog および C/C++

Verilog ビッ ト インデックス 7 6 5 4

Verilog ビッ ト値 X X 0 1

C/C++ ビッ ト位置 31 ... 4 3 2 1 0

aVal ビッ ト値 未使用 ... 未使用 1 1 0 1

bVal ビッ ト値 未使用 ... 未使用 1 1 0 0

表 I-11: Verilog インデックス範囲

Verilog インデックス範囲 C/C++ の配列要素

vec[38:69] val[0]

vec[6:37] val[1]

vec[2:5] val[3]

ロジック シミ ュレーシ ョ ン 207UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 208: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

付録 J

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

ザイリンクス リソース

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

ください。

ソリューシ ョ ン センター

デバイス、 ツール、 IP のサポートについては、 ザイ リ ンクス ソ リ ューシ ョ ン センターを参照して ください。 デザイ

ン アシスタン ト 、 デザイン アドバイザリ、 ト ラブルシューティングのヒン ト などが含まれます。

Documentation Navigator およびデザイン ハブ

Xilinx Documentation Navigator (DocNav) を使用する とザイ リ ンクスの資料、 ビデオ、 およびサポート リ ソースにアク

セスして情報をフィルター、 検索できます。 Xilinx Documentation Navigator を開くには、 次のいずれかを実行します。

• Vivado IDE で [Help] → [Documentation and Tutorials] をク リ ッ ク します。

• Windows で [スタート ] → [すべてのプログラム] → [Xilinx Design Tools] → [DocNav] をク リ ッ ク します。

• Linux コマンド プロンプ トに 「docnav」 と入力します。

ザイ リ ンクス デザイン ハブには、 資料やビデオへのリ ンクがデザイン タスクおよびト ピッ クごとにま とめられてお

り、 これらを参照するこ とでキー コンセプ ト を学び、 よ く ある質問を解決できます。 デザイン ハブにアクセスする

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

• Xilinx Documentation Navigator で [Design Hubs View] タブをク リ ッ ク します。

• ザイ リ ンクス ウェブサイ トの デザイン ハブ ページを参照します。

注記: Documentation Navigator の詳細は、 ザイ リ ンクス ウェブサイ トの Documentation Navigator ページを参照してく

ださい。

注意: Xilinx Documentation Navigator からは日本語版は参照できません。 ウェブサイ トのデザイン ハブ ページの一部

は翻訳されており、 日本語版が提供されている場合はそのリ ンク も追加されています。

ロジック シミ ュレーシ ョ ン 208UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 209: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

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

参考資料

1. 『Vivado Design Suite ユーザー ガイ ド : システム レベル デザイン入力』 (UG895)

2. 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』 (UG896)

3. 『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893)

4. Vivado Design Suite ユーザー ガイ ド : Tcl スク リプ ト機能の使用』 (UG894)

5. 『効率的なテス トベンチの記述』 (XAPP199)

6. 『Vivado Design Suite 7 シ リーズ FPGA および Zynq-7000 All Programmable SoC ライブラ リ ガイ ド』 (UG953)

7. 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835)

8. 『Vivado Design Suite ユーザー ガイ ド : 消費電力解析および 適化』 (UG907)

9. 『Vivado Design Suite ユーザー ガイ ド : 制約の使用』 (UG903)

10. 『Vivado Design Suite チュート リ アル: ロジッ ク シ ミ ュレーシ ョ ン』 (UG937)

11. 『Vivado Design Suite ユーザー ガイ ド : デザイン フローの概要』 (UG892)

12. 『Vivado Design Suite プロパティ リ ファレンス ガイ ド』 (UG912)

サードパーティ シミ ュレータに関する情報へのリンク

13. サードパーティ シ ミ ュレータの資料:

° Questa Advanced Simulator/ModelSim シ ミ ュレータ :

- www.mentor.com/products/fv/questa/

- www.mentor.com/products/fv/modelsim/

° Cadence IES シ ミ ュレータ :

- www.cadence.com/products/fv/enterprise_simulator/pages/default.aspx

° Synopsys VCS シ ミ ュレータ :

- www.synopsys.com/Tools/Verification/FunctionalVerification/Pages/VCS.aspx

° Active-HDL シ ミ ュレータ :

- https://www.aldec.com/support/resources/documentation/articles/1579

° Riviera PRO シ ミ ュレータ :

- https://www.aldec.com/support/resources/documentation/articles/1525

ロジック シミ ュレーシ ョ ン 209UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 210: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

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

言語および暗号化サポート規格へのリンク

14. 『IEEE Standard VHDL Language Reference Manual』 (IEEE-STD-1076-1993)

15. 『IEEE Standard Verilog Hardware Description Language』 (IEEE-STD-1364-2001)

16. 『IEEE Standard for SystemVerilog--Unified Hardware Design, Specification, and Verification Language』 (IEEE-STD-1800-2009)

17. 『Standard Delay Format Specification (SDF)』 (Version 2.1)

18. 『Recommended Practice for Encryption and Management of Electronic Design Intellectual Property (IP)』 (IEEE-STD-P1735)

OS サポートおよびリ リースの変更点へのリンク

新のリ リースの変更点、 OS サポート、 ラ イセンス要件については、 次の資料を参照して ください。

19. 『Vivado Design Suite ユーザー ガイ ド : リ リース ノート 、 インス トールおよびライセンス』 (UG973)

ト レーニング リソース

ザイ リ ンクスでは、 この資料に含まれるコンセプ ト を説明するさまざまな ト レーニング コースおよび QuickTake ビデ

オを提供しています。 次のリ ンクから関連する ト レーニング リ ソースを参照してください。

1. Vivado デザイン ツール フロー ト レーニング コース

2. Vivado Design Suite 入門ワークシ ョ ップ ト レーニング コース

3. Vivado Design Suite QuickTake ビデオ: ロジッ ク シ ミ ュレーシ ョ ン

4. Vivado Design Suite QuickTake ビデオ チュート リ アル

ロジック シミ ュレーシ ョ ン 210UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 211: Vivado Design Suite...Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2016.3) 2016 年 10 月 5 日 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応

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

お読みください: 重要な法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同じ ) に開示される情報 (以下 「本情報」 といいます) は、 ザイ リ ンクスの製品を選択および使用するこ とのためにのみ提供されます。 適

用される法律が許容する 大限の範囲で、 (1) 本情報は 「現状有姿」、 およびすべて受領者の責任で (with all faults) とい う状態で提供

され、 ザイ リ ンクスは、 本通知をもって、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますがこれ

らに限られません)、 すべての保証および条件を負わない (否認する ) ものと します。 また、 (2) ザイ リ ンクスは、 本情報 (貴殿または

貴社による本情報の使用を含む) に関係し、 起因し、 関連する、 いかなる種類 ・ 性質の損失または損害についても、 責任を負わな

い (契約上、 不法行為上 (過失の場合を含む)、 その他のいかなる責任の法理によるかを問わない) ものと し、 当該損失または損害に

は、 直接、 間接、 特別、 付随的、 結果的な損失または損害 (第三者が起こした行為の結果被った、 データ、 利益、 業務上の信用の

損失、 その他あらゆる種類の損失や損害を含みます) が含まれるものと し、 それは、 たとえ当該損害や損失が合理的に予見可能で

あったり、 ザイ リ ンクスがそれらの可能性について助言を受けていた場合であったと しても同様です。 ザイ リ ンクスは、 本情報に

含まれるいかなる誤り も訂正する義務を負わず、 本情報または製品仕様のアップデート を貴殿または貴社に知らせる義務も負いま

せん。 事前の書面による同意のない限り、 貴殿または貴社は本情報を再生産、 変更、 頒布、 または公に展示してはなり ません。 一

定の製品は、 ザイ リ ンクスの限定的保証の諸条件に従う こ と となるので、 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンク

スの販売条件を参照してください。 IP コアは、 ザイ リ ンクスが貴殿または貴社に付与したライセンスに含まれる保証と補助的条件

に従う こ とにな り ます。 ザイ リ ンクスの製品は、 フェイルセーフと して、 または、 フェイルセーフの動作を要求するアプリ ケー

シ ョ ンに使用するために、 設計されたり意図されたり していません。 そのよ うな重大なアプリ ケーシ ョ ンにザイ リ ンクスの製品を

使用する場合のリ スク と責任は、 貴殿または貴社が単独で負う ものです。 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンク

スの販売条件を参照してください。

自動車用のアプリケーシ ョ ンの免責条項

オートモーティブ製品 (製品番号に 「XA」 が含まれる ) は、 ISO 26262 自動車用機能安全規格に従った安全コンセプ ト または余剰性

の機能 ( 「セーフティ設計」 ) がない限り、 エアバッグの展開における使用または車両の制御に影響するアプリ ケーシ ョ ン ( 「セー

フティ アプリ ケーシ ョ ン」 ) における使用は保証されていません。 顧客は、 製品を組み込むすべてのシステムについて、 その使用

前または提供前に安全を目的と して十分なテス ト を行う ものと します。 セーフティ設計なしにセーフティ アプリ ケーシ ョ ンで製品

を使用する リ スクはすべて顧客が負い、 製品の責任の制限を規定する適用法令および規則にのみ従う ものと します。

© Copyright 2012-2016 Xilinx, Inc. Xilinx、 Xilinx のロゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 およびこの文書に含

まれるその他の指定されたブランドは、 米国およびその他各国のザイ リ ンクス社の商標です。 PCI、 PCIe、 および PCI Express は PCI-SIG の商標であ り、 ライセンスに基づいて使用されています。 すべてのその他の商標は、 それぞれの保有者に帰属します。

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの

右下にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 フ ィードバッ クは日本語で

入力可能です。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受

け付けており ません。 あらかじめご了承ください。

ロジック シミ ュレーシ ョ ン 211UG900 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com