vivado design suite - xilinx€¦ · vivado design suite ユーザー ガイド ロジック...

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

Upload: others

Post on 20-Oct-2019

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

Vivado Design Suite ユーザー ガイド

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

UG900 (v2015.2) 2015 年 6 月 24 日

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

Page 2: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 2UG900 (v2015.2) 2015 年 6 月 24 日

改訂履歴

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

日付 バージョ ン 改訂内容

2015 年 6 月 24 日 2015.2 第 2 章 「シ ミ ュレーシ ョ ンの準備」

° 「Verilog UNIFAST ライブラ リの使用」 をアップデート

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

° 「xelab コマンド構文オプシ ョ ン」 を新し く追加、 「xelab、 xvhd、 xvlog コマンド オプシ ョ ン」 の表をアップデート

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

° 「シ ミ ュレーシ ョ ン ラ イブラ リのコンパイル」 をアップデート

° 「シ ミ ュレータ別の run ディ レク ト リの生成」 セクシ ョ ンを追加

全体的な変更

° 2015.2 リ リースでの機能変更に合わせて図をアップデート、一部の図を見やすく変更

2015 年 4 月 1 日 2015.1 第 1 章 「ロジッ ク シ ミ ュレーシ ョ ンの概要」

° サポート されるシ ミ ュレータのリ ス トに Aldec Active-HDL および Rivera-PRO を追加

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

° 「UNIFAST ライブラ リ 」 「GTXE2_CHANNEL/GTXE2_COMMON」 セクシ ョ ンに、UNIFAST モデルを使用する際の DRP プロダクシ ョ ン リセッ ト シーケンスをバイパスする注記を追加

第 3 章 「Vivado シ ミ ュレータについて」

° 「[Objects] ビュー」 に新しい右ク リ ッ クのオプシ ョ ンの詳細を追加

第 5 章 「Vivado シ ミ ュレータを使用したデザインのデバッグ」

° 新しいセクシ ョ ン 「[Objects] ビュー、波形ビュー、 テキス トエディ ターでの信号のクロスプローブ」 を追加

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

° 新し く 「xelab コマンド構文オプシ ョ ン」 を追加 :

°-Oenable_pass_through_elimination、

°-Odisable_pass_through_elimination、 -Oenable_always_combine、

°-Odisable_always_combine

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

° サポート されるサードパーティ シ ミ ュレータのリ ス トに Riviera PRO シ ミ ュレータ(Aldec) を追加

付録 D 「Vivado シ ミ ュレータでサポート される SystemVerilog コンス ト ラ ク ト 」

° 表 D-1、 合成可能なSystemVerilog 1800-2009 セッ トに新し くサポート されるコンス トラ ク トに関する注記を追加

° 表 D-2、サポート されるダイナミ ッ ク タイプのコンス ト ラ ク ト : 早期アクセスを追加

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

° 表 E-2、 C および SystemVerilog バウンダ リで使用可能なデータ型をアップデート

全体的な変更

° デザイン フロー構造を反映されるために本書の内容を並び替え内容を拡張

° 2015.1 リ リースでの機能変更に合わせて図をアップデート、一部の図を見やすく変更

Page 3: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

目次

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

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

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

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

OS サポートおよびリ リースの変更点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

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

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

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

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

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

シ ミ ュレータ言語オプシ ョ ンについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

推奨されるシ ミ ュレーシ ョ ン精度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

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

第 3章 : Vivado シミ ュレータについて概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Vivado シ ミ ュレータの機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

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

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

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

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

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

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

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

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

第 4章 : シミ ュレーシ ョ ン波形の解析概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

波形コンフ ィギュレーシ ョ ンと波形ビューの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

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

波形コンフ ィギュレーシ ョ ンの HDL オブジェク ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

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

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

波形の分類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

波形の解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 3UG900 (v2015.2) 2015 年 6 月 24 日

Page 4: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

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

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

VCD 機能の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

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

[Objects] ビュー、 波形ビュー、 テキス トエディ ターでの信号のクロスプローブ . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

第 6章 : 特殊なケースの処理グローバル リセッ ト と ト ラ イステートの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

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

ASYNC_REG 制約の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

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

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

消費電力解析のための SAIF ファ イルのダンプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

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

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

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

Vivado シ ミ ュレータのコマンド ラ インのステップ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

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

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

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

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

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

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

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

Tcl コマンド と スク リプ トの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

第 8章 : サードパーティ  シミ ュレータの使用概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

サードパーティ ツールを使用したシ ミ ュレーシ ョ ンの準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

Tcl モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

サードパーティ ツールでのシ ミ ュレーシ ョ ンの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

サードパーティ ツールでシ ミ ュレーシ ョ ンを実行した後 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

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

Verilog UNIFAST ラ イブラ リの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

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

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

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

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

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

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

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

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 4UG900 (v2015.2) 2015 年 6 月 24 日

Page 5: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

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

付録 D : Vivado シミ ュレータでサポート される SystemVerilog コンス ト ラク ト概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

ダイナミ ッ ク タイプ : アーリー アクセス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

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

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

xsc コンパイラーの説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

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

C および SystemVerilog のバウンダ リで使用可能なデータ型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

ユーザー定義型のマッピング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

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

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

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

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

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

参照資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

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

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

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

法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 5UG900 (v2015.2) 2015 年 6 月 24 日

Page 6: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

第 1章

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

概要シ ミ ュレーシ ョ ンは、 現実のデザイン ビヘイビアーをソフ ト ウェア環境でエミ ュレートするプロセスです。 シ ミ ュレーシ ョ ンをする と、 スティ ミ ュラスを挿入してデザイン出力を観察するこ とで、 デザインの機能を検証できます。

この章では、シ ミ ュレーシ ョ ン プロセスの概要および Vivado® Design Suite の資料 のシ ミ ュレーシ ョ ン オプシ ョ ンについて記述します。Vivado 統合設計環境 (IDE) では、Vivado シ ミ ュレータを使用した統合シ ミ ュレーシ ョ ン環境が提供されています。

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

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

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

シミ ュレーシ ョ ン  フロー シ ミ ュレーシ ョ ンは、デザイン フローのさまざまな段階で実行できます。シ ミ ュレーシ ョ ンは、デザイン入力に続く初期段階の 1 つであ り、 また、 終的な機能やデザインのパフォーマンスを検証する、 インプリ メンテーシ ョ ン後の

終段階の 1 つ でもあ り ます。

シ ミ ュレーシ ョ ンはインタラ クティブなプロセスで、通常はデザイン機能と タイ ミ ングの両方の要件が満たされるまで繰り返し行われます。

ロジック  シミ ュレーシ ョ ン www.xilinx.com 6UG900 (v2015.2) 2015 年 6 月 24 日

Page 7: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

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

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

• RTL コード

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

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

• UNISIM ゲート レベル モデル (Vivado ロジッ ク解析用)

• SECUREIP ライブラ リ

X-Ref Target - Figure 1-1

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 7UG900 (v2015.2) 2015 年 6 月 24 日

Page 8: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

RTL シ ミ ュレーシ ョ ンでは、 合成またはインプ リ メ ンテーシ ョ ン ツールを実行する前にデザインをシ ミ ュレーシ ョンおよび検証できます。デザインは、 モジュールまたはエンティティ、 ブロ ッ ク、デバイス、 またはシステム レベルで検証できます。

RTL シ ミ ュレーシ ョ ンは、通常コードの構文を検証し、 コードが記述したとおりに機能しているかど うかを確認するために実行されます。 この段階では、 デザインは主に RTL で記述されているので、 タイ ミ ング情報は不要です。

RTL シ ミ ュレーシ ョ ンは、 デザインにインスタンシエート されたデバイス ラ イブラ リ コンポーネン トが含まれない限り、 アーキテクチャごとに異なるこ とはあ り ません。 ザイ リ ンクスでは、 インスタンシエーシ ョ ンをサポートするため、 UNISIM ライブラ リ を提供しています。

デザインをビヘイビアー RTL で検証する と、 早期にデザインに関する問題を修正できるため、 デザイン サイクルを無駄なく有効に利用するこ とができます。

初のデザイン作成をビヘイビアー コードのみに限定する と、 次の利点があ り ます。

• よ り読みやすいコード

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

• コード ポータビ リティ (別のデバイス ファ ミ リへ移行できる )

• コード再利用 (後で別のデザインに同じコードを再利用できる)

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

合成済みのネッ ト リ ス ト をシ ミ ュレーシ ョ ンする と、合成後のデザインがロジッ クの要件を満たしているか、予期どおりに動作するかど うかを検証できます。 一般的ではあ り ませんが、 この段階のシ ミ ュレーシ ョ ンでも、 予測タイ ミング値を使用してタイ ミ ング シ ミ ュレーシ ョ ンを実行できます。

論理シ ミ ュレーシ ョ ン ネッ ト リ ス トは階層になっており、 プ リ ミ ティブ モジュールおよびエンティティ レベルに展開できます。 階層の 下位にはプリ ミ ティブおよびマクロ プリ ミ ティブが含まれます。

これらのプリ ミ ティブは、 Verilog の場合は UNISIMS_VER ラ イブラ リに、 VHDL の場合は UNISIM ラ イブラ リに含まれています。 詳細は、 14 ページの 「UNISIM ライブラ リ 」 を参照してください。

インプリ メンテーシ ョ ン後のシミ ュレーシ ョ ン  

インプ リ メンテーシ ョ ン後は論理シ ミ ュレーシ ョ ンまたはタイ ミ ング シ ミ ュレーシ ョ ンを実行できます。タイ ミ ングシ ミ ュレーシ ョ ンは、デバイスにデザインを実際にダウンロードするのに近い状態で行われます。 インプリ メン ト されたデザインがロジッ ク要件およびタイ ミ ング要件を満たし、デバイスで予測どおりの動作をするこ とを確認できます。

重要 : タイ ミ ング シ ミ ュレーシ ョ ンをしっかりやっておく と、 デザインはエラーのない状態にするこ とができます。たとえば、 次のよ うな問題をタイ ミ ング シ ミ ュレーシ ョ ンで検証できます。

• 合成後およびインプ リ メンテーシ ョ ン後の機能変更。 このタイプの変更は次のよ うなこ とが原因で行われます。

° full_case や parallel_case などの不一致を引き起こす合成プロパティ または制約

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

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

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

• タイ ミ ング制約が抜けていたり、 不正適用されている

• 非同期パスの動作

• 適化によって発生する機能上の問題

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 8UG900 (v2015.2) 2015 年 6 月 24 日

Page 9: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

• Vivado シ ミ ュレータ : Vivado IDE 内に完全統合されており、シ ミ ュレーシ ョ ンは IDE 内のウ ィンド ウで実行されます。 第 3 章 「Vivado シ ミ ュレータについて」 を参照してください。

• ザイ リ ンクスでは、 次のサードパーティ シ ミ ュレータがサポート されます。

° Mentor Graphics 社の QuestaSim/ModelSim : Vivado IDE に統合されています。

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

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

° Aldec 社の Active-HDL および Rivera-PROAldec 社からこれらのシ ミ ュレータのサポートが提供されています。

注記 :詳細は、 第 8 章 「サードパーティ シ ミ ュレータの使用」 を参照してください。

サードパーテ ィ シ ミ ュレータのサポー ト バージ ョ ンについては、 『Vivado Design Suite ユーザー ガイ ド : リ リースノート、 インス トールおよびライセンス』 (UG973) [参照 1] を参照してください。

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

• VHDL、 Verilog、 SystemVerilog、標準遅延フォーマッ ト (SDF)[参照 4]。 付録 D 「Vivado シ ミ ュレータでサポートされる SystemVerilog コンス ト ラ ク ト 」 も参照してください。

• 言語および暗号化の IEEE 規格。 「Recommended Practice for Encryption and Management of Electronic DesignIntellectual Property (IP)」 (P1735) [参照 5] を参照してください。

OS サポートおよびリ リースの変更点新のリ リースの変更点、 OS サポート、 ライセンス要件については、 『Vivado Design Suite ユーザー ガイ ド : リ リー

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 9UG900 (v2015.2) 2015 年 6 月 24 日

Page 10: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

第 2章

シミ ュレーシ ョ ンの準備

概要本章では、ザイ リ ンクス デバイスを Vivado® 統合設計環境 (IDE) でシ ミ ュレーシ ョ ンする際に必要なコンポーネン トについて説明します。

シ ミ ュレーシ ョ ン プロセスでは次を実行する必要があ り ます。

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

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

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

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

• ザイ リ ンクス デバイスのグローバル リセッ ト と ト ラ イステートの使用を理解

テストベンチおよびスティ ミ ュラス ファイルの使用テス トベンチは、 シ ミ ュレータ用に記述されたハード ウェア記述言語 (HDL) コードで、 次を実行します。

• デザインをインスタンシエート し初期化する

• スティ ミ ュラスを生成しデザインに適用する

• デザイン出力結果をモニターし、 機能を検証する (オプシ ョ ン)

また、シ ミ ュレーシ ョ ン出力をファイル、波形、表示画面に出力するよ う、テス トベンチを設定するこ と もできます。テス トベンチの構造はシンプルにし、 特定入力にスティ ミ ュラスを順次適用するこ とができます。

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

• サブルーチン呼び出し

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

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

• その他のよ り複雑な構造

インタラ クティブなシ ミ ュレーシ ョ ンと比較する と、 テス トベンチには次のよ うな利点があ り ます。

• デザイン プロセスを通して反復シ ミ ュレーシ ョ ンが可能

• テス ト条件の記述を提供

効果的なテス トベンチを作成するにあったり、 次の点が推奨されます。

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 10UG900 (v2015.2) 2015 年 6 月 24 日

Page 11: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

‘timescale 1ns/1ps

• テス トベンチ内のデザインへのすべての入力をシ ミ ュレーシ ョ ン時間 0 で初期化し、既知の値でシ ミ ュレーシ ョンが正し く始まるよ うにします。

• 論理およびタイ ミ ング ベースのシ ミ ュレーシ ョ ンで使用されるデフォルトのグローバル セッ ト / リセッ ト (GSR)パルス用に、 100ns 後にスティ ミ ュラス データを適用します。

• グローバル セッ ト / リセッ ト (GSR) が解放される前にクロ ッ ク ソースを開始します。 詳細は、 79 ページの 「グローバル リセッ ト と ト ラ イステートの使用」 を参照してください。

テス トベンチの詳細は、 『Writing Efficient Testbenches』 (XAPP199) [参照 5] を参照してください、。

ヒン ト : テス トベンチを作成する と き、 合成後およびインプ リ メ ンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンでGSR が自動的に発生する点に注意してください。 この GSR によ り、 すべてのレジスタがシ ミ ュレーシ ョ ンの 初の100ns 間リセッ ト状態になり ます。

シミ ュレーショ ン ソース ファイルの追加または作成シ ミ ュレーシ ョ ン ソースを 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 ビデオ チュート リ アル : ロジッ ク シ ミ ュレーシ ョ ンを参照して ください。

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

° [Add Directories] : 選択したディ レク ト リにあるすべてのシ ミ ュレーシ ョ ン ソース ファ イルを追加します。指定ディ レク ト リにある、 有効な拡張子のソース ファ イルがすべてプロジェク トに追加されます。

° [Create File] : 新規シ ミ ュレーシ ョ ン ファ イルを作成する [Create Source File] ダイアログ ボッ クスが開きます。プロジェク ト ソース ファ イルの詳細は、 『Vivado Design Suite ユーザー ガイ ド : システム レベル デザイン入力』 (UG895) [参照 2] の 「ソース ファ イルの操作」 を参照してください。

° ダイアログ ボッ クスには、 次のよ うなボタンがあ り ます。

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

- [Move Selected File Up] : 指定ファイルを リ ス トの上に移動させます。

- [Move Selected File Down] : 指定ファイルを リ ス トの下に移動させます。

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

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 11UG900 (v2015.2) 2015 年 6 月 24 日

Page 12: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

- [Copy sources into project] : ソース ファ イルをプロジェク ト ディレク ト リにコピーします。プロジェク トではローカルにコピーされたバージ ョ ンが使用されます。

[Add Directories] ボタンをク リ ッ ク してソース ファ イルのディ レク ト リ を追加した場合は、 ファ イルがプロジェク トにローカルにコピーされる と き、 ディ レク ト リ構造もそのままの状態でコピーされます。

- [Add sources from subdirectories] : [Add Directories] で指定したディ レク ト リのサブディ レク ト リに含まれるソース ファ イルをすべて追加します。

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

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

Vivado IDE では、シ ミ ュレーシ ョ ン ソース ファ イルはシ ミ ュレーシ ョ ン ファ イル セッ トに保存され、[Sources] ビューにフォルダーと して表示されます。 リモートのものを参照した り、 ローカル プロジェク ト ディ レク ト リに保存されているものを使用できます。

シ ミ ュレーシ ョ ン セッ ト を使用する と、それぞれのデザイン段階にあわせてソースを定義して使用できます。たとえば、あるテス トベンチ ソースは、エラボレート されたデザイン、またはデザインのモジュールのビヘイビアー シ ミ ュレーシ ョ ン用にスティ ミ ュラスを供給するためのものであったり、別のテス トベンチは、 インプ リ メン ト済みデザインのタイ ミ ング シ ミ ュレーシ ョ ン用にスティ ミ ュラスを供給するためのもの、 と使い分けるこ とができます。

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

シ ミ ュレーシ ョ ン セッ トは次の手順で変更できます。

1. [Sources] ビューで [Simulation Sources] を右ク リ ッ ク し、 [Edit Simulation Sets] をク リ ッ ク します (図 2-1)。

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

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

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

3. 必要であればほかのファイルも追加します。

X-Ref Target - Figure 2-1

図 2‐1 : [Edit Simulation Sets] オプシ ョ ン

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 12UG900 (v2015.2) 2015 年 6 月 24 日

Page 13: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

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

重要 : Vivado シ ミ ュレータを使用する場合、シ ミ ュレーシ ョ ン ラ イブラ リ をコンパイルする必要はあ り ません。 しかし、サードパーティ シ ミ ュレータを使用する場合は、 ライブラ リ をコンパイルする必要があ り ます。詳細は、第 8 章「サードパーティ シ ミ ュレータの使用」 を参照してください。

ザイ リ ンクス シ ミ ュレーシ ョ ン ライブラ リは、 VHDL-93 および Verilog-2001 言語規格をサポートするシ ミ ュレータで使用できます。 ラ イブラ リにはザイ リ ンクス ハードウェア デバイスを正し くシ ミ ュレーシ ョ ンするのに必要な特定の遅延およびモデル情報がビルト インされています。

ク ロ ッ ク エッジ内のブロ ッ クにはノンブロ ッキング割り当てを使用します。 これ以外の場合、 Verilog のブロ ッキング割り当てを使用してコードを記述します。 同様に、 プロセス内のローカル計算には変数割り当てを、 プロセス間のデータフローが必要な場合は信号割り当てを使用します。

データがク ロ ッ ク と同時に変わる場合は、 シ ミ ュレータでデータ入力がク ロ ッ ク エッジ後に発生するよ うにスケジュールできます。 初のクロ ッ ク エッジの前にデータを入力させるこ とは可能ではあるのですが、データは次のクロ ッ ク エッジまで通過しません。

推奨 : このよ うな思わぬシ ミ ュレーシ ョ ン結果にならないよ うにするため、 データ信号と クロ ッ ク信号は同時に切り替えないよ うにしてください。

デザインにコンポーネン ト をインスタンシエートする際、シ ミ ュレータでコンポーネン トの機能を記述したライブラリが参照されていないと、シ ミ ュレーシ ョ ンが正し く実行されません。ザイ リ ンクス ライブラ リは、モデルの機能に基づいてカテゴ リに分類されます。

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

重要 :- シ ミ ュレーシ ョ ン ポイン トによって異なるシ ミ ュレーシ ョ ン ライブラ リ を指定する必要があ り ます。- インプリ メンテーシ ョ ン前と インプリ メンテーシ ョ ン後のネッ ト リ ス トのゲート レベル セルは異なり ます。

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

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

UNISIM ザイ リ ンクス プリ ミ ティブの論理シ ミ ュレーシ ョ ン UNISIM UNISIMS_VER

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

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

SIMPRIM ザイ リ ンクス プリ ミ ティブのタイ ミ ング シ ミ ュレーシ ョ ン なし SIMPRIMS_VERa

SECUREIP PCIe® IP、 ギガビッ ト ト ランシーバーなどのザイ リ ンクス デバイス機能の論理シ ミ ュレーシ ョ ンおよびタイ ミ ング シ ミ ュレーシ ョ ン両方のシ ミ ュレーシ ョ ン ライブラ リ

次のディレク ト リに IP のリ ス トがあ り ます。<Vivado_Install_Dir>/data/secureip

SECUREIP SECUREIP

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 13UG900 (v2015.2) 2015 年 6 月 24 日

Page 14: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

表 2-2 は、 各シ ミ ュレーシ ョ ン ポイン ト で必要なシ ミ ュレーシ ョ ン ラ イブラ リ が リ ス ト されます。

重要 : Vivado シ ミ ュレータでは、 あらかじめコンパイルされたシ ミ ュレーシ ョ ン デバイス ラ イブラ リが使用されます。 アップデートがインス トールされる と自動的にこれらのライブラ リがアップデート されます。

注記 : Verilog の SIMPRIMS_VER では、 UNISIM と同じ ソースだけでなく、 タイ ミ ング アノテーシ ョ ン用のブロ ッ クも使用されます。 SIMPRIMS_VER は Verilog の物理的な SIMPRIM がマップされている論理ライブラ リ名です。

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

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

UNISIM ライブラリ

論理シ ミ ュレーシ ョ ンでは UNISIM が使用され、このライブラ リにはデバイス プリ ミ ティブまたは下位の構築ブロックの記述が含まれています。

重要 : Vivado ツールでは、 IP を生成する と き、 出力ファイルと して IP シ ミ ュレーシ ョ ン モデルが生成されます。 このため、 compile_simlib コマンドを使用する場合、 IP シ ミ ュレーシ ョ ン モデルは あらかじめコンパイルされているライブラ リには含まれません。

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

シミ ュレーシ ョ ン ポイン ト

UNISIM UNIFAST UNIMACRO SECUREIPSIMPRIM

(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/

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 14UG900 (v2015.2) 2015 年 6 月 24 日

Page 15: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

表 2-4 は、IP をデザインに含める と きに、あらかじめコンパイルされている暗号化されたライブラ リ ファ イルを呼び出すこ とができる、 UNISIM ラ イブラ リ を リ ス ト しています。 ラ イブラ リ検索パスに必要なパスを含めて ください。詳細は、 19 ページの 「方法 1 : 完全 UNIFAST ライブラ リ (推奨)」 を参照して ください。

VHDL UNISIM ライブラリ

VHDL の UNISIM ラ イブラ リは、 ザイ リ ンクス デバイス ファ ミ リのプ リ ミ ティブを指定する次のファイルに分けられています。

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

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

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

library UNISIM;use UNISIM.Vcomponents.all;

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

注記 : Vivado シ ミ ュレータの場合、 ライブラ リ コンパイルとマッピングは統合されているので、ユーザーがさらにコンパイルまたはマップする必要はあ り ません。

Verilog UNISIM ライブラリ

Verilog の場合、 個々のライブラ リ モジュールが別々の HDL ファ イルで指定されています。 このため、 ライブラ リ を指定する -y オプシ ョ ンを使用する と、 指定ディ レク ト リですべてのコンポーネン トが検索され、 ライブラ リが自動的に展開します。

Verilog UNISIM ラ イブラ リは、 モジュールを使用する前に HDL ファ イルで指定するこ とはできません。 ライブラ リモジュールを使用するには、 すべて大文字でモジュール名を指定してください。 次の例は、 インスタンシエート されたモジュール名とそのファイル名です。

• BUFG モジュールは BUFG.v

• IBUF モジュールは IBUF.v

Verilog では大文字/小文字が区別されるので、 UNISIM プリ ミ ティブ インスタンシエーシ ョ ンには、 必ず大文字のみを使用してください。

あらかじめコンパイルされたライブラ リ を使用する場合は、 正しいシ ミ ュレータ コマンド ライン オプシ ョ ンを使用して、 ライブラ リ を指定してください。 次は、 Vivado シ ミ ュレータでの例です。

-L unisims_ver

表 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 ファ イル

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 15UG900 (v2015.2) 2015 年 6 月 24 日

Page 16: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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.v、 モジュール IBUFは IBUF.v になり ます。 UNISIM プリ ミ ティブ インスタンシエーシ ョ ンには、 必ず大文字のみを使用してください。

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 がマップされている論理ライブラ リ名です。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 16UG900 (v2015.2) 2015 年 6 月 24 日

Page 17: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

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

注記 : セキュ リティ保護の付いている IP ブロ ッ クは Vivado シ ミ ュレータで完全にサポート されているため、 追加設定は不要です。

ザイ リ ンクスでは、 「Recommended Practice for Encryption and Management of Electronic Design Intellectual Property (IP)」(IEEE-STD-P1735) [参照 5] という IEEE 規格で指定された暗号化手法を使用しています。ライブラ リ コンパイル プロセスで自動的に暗号化処理が行われます。

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

表 2-5 は、 これらのライブラ リ を使用するにあたり、注意事項をシ ミ ュレータ ベンダーごとに分けて リ ス ト しています。

重要 : サードパーティ シ ミ ュレータのサポート されるバージ ョ ンについては、 『Vivado Design Suite ユーザー ガイ ド :リ リース ノート 、 インス トールおよびライセンス』 (UG973) [参照 1] を参照してください。

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 から入手できます。

表 2‐5 : SECUREIP ライブラリを使用する際の考慮事項

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

ModelSim SE Mentor Graphics デザイン入力が VHDL で行われる場合は、混合言語ライセンスまたは SECUREIP OP が必要です。 詳細はベンダーにお問い合わせください。

ModelSim PE

ModelSim DE

QuestaSim

VCS および VCS MX Synopsys

Active-HDL Aldec デザイン入力が VHDL のみの場合、言語左右されないタイプの SECUREIP ライセンスが必要になり ます。 詳細はベンダーにお問い合わせください。

Riviera-PRO*

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 17UG900 (v2015.2) 2015 年 6 月 24 日

Page 18: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

UNIFAST ライブラリ

UNIFAST ラ イブラ リは RTL ビヘイビアー シ ミ ュレーシ ョ ンで使用できる、 オプシ ョ ンのラ イブラ リ で、 シ ミ ュレーシ ョ ン ランタ イムを速く します。

重要 :このモデルは、 タイ ミ ング ド リブン シ ミ ュレーシ ョ ンには使用できません。 UNIFAST ライブラ リには、 フル モデルで使用可能なチェッ ク /機能がすべて含まれているわけではないので、 終的なシ ミ ュレーシ ョ ンには使用できません。

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

シ ミ ュレーシ ョ ン ランタイムは、 シ ミ ュレーシ ョ ン モードでプリ ミ ティブ機能のサブセッ ト をサポートする と、 短縮できます。

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

MMCME2

シ ミ ュレーシ ョ ン ランタイムを短縮するため、 高速 MMCME2 シ ミ ュレーシ ョ ン モデルでは、 フル モデルから次の点が変更されています。

1. 高速シ ミ ュレーシ ョ ン モデルでは基本的なクロ ッ ク生成ファンクシ ョ ンのみが提供されています。DRP、ファ イン位相シフ ト、 ク ロ ッ ク停止、 ク ロ ッ ク カスケードなどのほかのファンクシ ョ ンはサポート されていません。

2. 入力クロ ッ クは、 周波数および位相が変わるこ とな く、 安定しているものとみなされます。 入力クロ ッ ク周波数サンプルは LOCKED 信号が High になる と停止します。

3. 出力クロ ッ ク周波数、位相、デューティ サイクルなどの機能は入力クロ ッ ク周波数およびパラ メーター設定から直接計算されます。

注記 :出力クロ ッ ク周波数は、 入力から VCO ク ロ ッ クまで生成されません。

4. MMCME2 シ ミ ュレーシ ョ ン モデルの LOCKED 信号のアサート時間は、 標準版と高速版とでは異なり ます。

° 標準モデルの LOCKED 信号のアサート時間は M および D 設定に左右されます。標準 MMCME2 シ ミ ュレーシ ョ ン モデルの場合、 M および D の値が大きいと、 ロ ッ ク時間が比較的長くなり ます。

° 高速シ ミ ュレーシ ョ ン モデルの場合は、 LOCKED アサート時間は短くな り ます。

DSP48E1

高速 DSP48E1 シ ミ ュレーシ ョ ン モデルでは、シ ミ ュレーシ ョ ン ランタイムを短縮するため、そのフル モデルの一部の機能が削除されています。

• パターン検出

• OverFlow/UnderFlow

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 18UG900 (v2015.2) 2015 年 6 月 24 日

Page 19: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

GTHE2_CHANNEL/GTHE2_COMMON

高速 GTHE2 シ ミ ュレーシ ョ ン モデルでは、 シ ミ ュレーシ ョ ン ランタイムを短縮するため、 そのフル モデルと比較する と、 次の点が異なり ます。

• GTH リ ンクは、 同じ PPM (Parts Per Million) レートで、 近端のエンド リ ンク パートナーと遠端のエンド リ ンクパートナー間で同期している必要があ り ます。

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

• DRP プロダクシ ョ ン リセッ ト シーケンスをシ ミ ュレートするこ とはできません。UNIFAST モデルを使用している場合は、 これを無視してください。

GTXE2_CHANNEL/GTXE2_COMMON

高速 GTXE2 シ ミ ュレーシ ョ ン モデルでは、 シ ミ ュレーシ ョ ン ランタイムを短縮するため、 そのフル モデルと比較する と、 次の点が異なり ます。

• GTX リ ンクは、 同じ PPM (Parts Per Million) レートで、 近端のエンド リ ンク パートナーと遠端のエンド リ ンクパートナー間で同期している必要があ り ます。

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

Verilog UNIFAST ライブラリの使用

UNIFAST モデルを使用してシ ミ ュレーシ ョ ンするには、 次の 2 つの方法があ り ます。

• 方法 1 は、 すべての UNIFAST モデルを使用してシ ミ ュレーシ ョ ンする場合に推奨される方法です。

• 方法 2 は、 UNIFAST モデルと一緒に使用するモジュールを指定する方法で、 アドバンス ユーザー向けです。

これらのシ ミ ュレーシ ョ ン方法については、 次のセクシ ョ ンで説明します。

方法 1 : 完全 UNIFAST ライブラリ  (推奨) 

Vivado シ ミ ュレータ、 ModelSim、 IES、 VCS を使用している Vivado プロジェク ト環境で UNIFAST サポート (高速シミ ュレーシ ョ ン モデル) をイネーブルにするには、 次のコマンドを実行します。

Tcl コンソールで次の Tcl コマンドを使用します。

set_property unifast true [current_fileset –simset]

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

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

方法 2 : 特定 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)

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 19UG900 (v2015.2) 2015 年 6 月 24 日

Page 20: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

サンプルの 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

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;

シミ ュレーシ ョ ン設定Flow Navigator で [Simulation] → [Simulation Settings] をク リ ッ クする と、Vivado IDE でシ ミ ュレーシ ョ ン設定ができます。 図 2-2 は Flow Navigator の [Simulation] を示しています。

• [Simulation Settings] : Vivado シ ミ ュレータを選択および設定するダイアログ ボッ クスが開きます。 22 ページの「Vivado シ ミ ュレータのプロジェク ト設定」 を参照してください。

X-Ref Target - Figure 2-2

図 2‐2 : Flow Navigator のシミ ュレーシ ョ ン  オプシ ョ ン

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 20UG900 (v2015.2) 2015 年 6 月 24 日

Page 21: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

• [Run Simulation] : シ ミ ュレーシ ョ ン設定に基づいてデザインをコンパイル、 エラボレート、 シ ミ ュレーシ ョ ンするコマンド オプシ ョ ンを設定します。 デザインの合成前にシ ミ ュレーシ ョ ンを実行する と、 Vivado シ ミ ュレータではビヘイビアー シ ミ ュレーシ ョ ンが実行され、 波形ビューが開き (37 ページの図 3-11)、 信号およびバスの値の付いた HDL オブジェク トがデジタルまたはアナログ形式で表示されます。

各デザイン段階 (合成後と インプ リ メ ンテーシ ョ ン後) で、 論理シ ミ ュレーシ ョ ンおよびタイ ミ ング シ ミ ュレーシ ョ ンを実行できます。

これに該当する Tcl コマンドを使用する場合は、 launch_simulation と入力します。

ヒン ト : このコマンドに -scripts_only オプシ ョ ンを使用する と、Vivado シ ミ ュレータを実行するスク リプ トが書き出されます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 21UG900 (v2015.2) 2015 年 6 月 24 日

Page 22: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

Vivado シミ ュレータのプロジェク ト設定

Flow Navigator で [Simulation Settings] をク リ ッ ク して [Project Settings] ダイアログ ボッ クス (図 2-3) を開きます。

X-Ref Target - Figure 2-3

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

1 シ ミ ュレータを選択します。

2 シ ミ ュレータの言語を選択します。

3 シ ミ ュレーシ ョ ン セッ ト を選択します。

4 シ ミ ュレーシ ョ ンの 上位デザイン名を参照します。

5 再実行前にシ ミ ュレーシ ョ ン ファ イルを消去します。 このオプ

シ ョ ンはオンにしたままにしておく こ とを推奨します。

6 シ ミ ュレーシ ョ ンを実行せずにスク リプ ト を生成します。

7 それぞれのカテゴ リでオプシ ョ ンを設定するためのタブを選択し

ます。

8 [Compilation] のみです。 インクルード パスを設定またはマクロを

定義するディレク ト リ を指定します。

9 [Compilation] のみです。 ジェネ リ ッ ク /パラ メーターのロケーシ ョ

ンを選択するディレク ト リ を指定します。

10 それぞれのページに対し、 オプシ ョ ン リ ス トがウ ィンド ウに表示

されます。 オプシ ョ ンを選択する と、 その説明が表示されます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 22UG900 (v2015.2) 2015 年 6 月 24 日

Page 23: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

ヒン ト : Vivado シ ミ ュレータにはあらかじめコンパイルされたライブラ リが含まれているので、ライブラ リ ディ レクト リ を指定する必要はあ り ません。

注意 : ど う し て も必要な場合にのみ [Advanced] タブで設定を変更し て く だ さい。 [Include all design sources forsimulation] チェッ クボッ クスはデフォルトでオンになっています。 このチェッ クボッ クスをオフにする と、 予測しない結果になる可能性があ り ます。 チェ ッ クボッ クスがオンになっている と、 シ ミ ュレーシ ョ ン セッ トには、 アウ トオブ コンテキス ト (OOC) の IP、 IP インテグレーター ファ イル、 DCP が含まれます。

シミ ュレータ言語オプシ ョ ンについてザイ リ ンクス IP では、 1 言語のビヘイビアー シ ミ ュレーシ ョ ン モデルしか提供されていないものがほとんどです。該当言語のライセンスがない場合、 その言語しか対応していないシ ミ ュレータでのシ ミ ュレーシ ョ ンはできません。simulator_language プロパティを使用する と、 IP は指定した言語のシ ミ ュレーシ ョ ン モデルを配布します。 図 2-3 は、シ ミ ュレータ言語を設定できる箇所を示しています。 たとえば、 1 言語のシ ミ ュレータを使用している場合、 そのシミ ュレータの言語と同じになるよ うに simulator_language プロパティを設定して ください。

Vivado Design Suite では、 言語別の構造シ ミ ュレーシ ョ ン モデルをオンデマンドで生成するため、 IP の合成ファイルを使用して、シ ミ ュレーシ ョ ン モデルが利用できるよ うになっています。ビヘイビアー モデルがなかったり、シ ミ ュレータのライセンスが付与されている言語とモデルの言語が一致していない場合、Vivado ツールでは構造シ ミ ュレーシ ョ ン モデルが自動的に生成され、 シ ミ ュレーシ ョ ンができるよ うにな り ます。 そ う したこ とがなければ、 IP の既存ビヘイビアー シ ミ ュレーシ ョ ン モデルが使用されます。合成またはシ ミ ュレーシ ョ ン ファ イルが存在しない場合、シ ミ ュレーシ ョ ンはサポート されません。

注記 : simulator_language プロパティでは、生成された合成済みチェッ クポイン ト (.dcp) がオフになっている と、言語別シ ミ ュレーシ ョ ン ネッ ト リ ス ト ファ イルは提供されません。

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

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

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

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 23UG900 (v2015.2) 2015 年 6 月 24 日

Page 24: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

X-Ref Target - Figure 2-4

図 2‐4 : [Generate Synthesized Checkpoint (.dcp)] オプシ ョ ンを含むダイアログ ボックス

表 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]

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 24UG900 (v2015.2) 2015 年 6 月 24 日

Page 25: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

推奨されるシミ ュレーシ ョ ン精度

重要 : 1ps の時間精度を使用してシ ミ ュレーシ ョ ンを実行します。MMCM などの一部のザイ リ ンクス プリ ミ ティブ コンポーネン トは、 論理またはタイ ミ ング シ ミ ュレーシ ョ ンで正し く動作するのに 1ps の精度を必要と します。

ザイ リ ンクス シ ミ ュレーシ ョ ン モデルではこれよ り荒い精度を使用してもシ ミ ュレータ パフォーマンスが良くなるこ とはあ り ません(ザイ リ ンクス シ ミ ュレーシ ョ ン モデルの場合、シ ミ ュレーシ ョ ン時間の多くはデルタ サイクルで消費されます。 また、 デルタ サイ クルはシ ミ ュレーシ ョ ン精度に左右されません)。

重要 : テス ト機器は 近似値のピコ秒 (ps) でタイ ミ ングを計測するので、 小精度と してピコ秒が使用されます。

ネッ ト リス トの生成合成済みまたはインプ リ メン ト済みデザインのシ ミ ュレーシ ョ ンを実行するには、ネッ ト リ ス ト生成プロセスを実行する必要があ り ます。 Tcl のネッ ト リ ス ト生成コマンドは合成済みまたはインプリ メン ト済みデザイン データベースを読み込んで、 デザイン全体に対して 1 つのネッ ト リ ス ト を書き出します。

Vivado Design Suite では、Vivado 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 シ ミ ュレーシ ョ ン ライブラ リ

一般的には、ビヘイビアー シ ミ ュレーシ ョ ンで使用したのと同じテス トベンチを使用して、さ らに精度の高いシ ミ ュレーシ ョ ンを実行できます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 25UG900 (v2015.2) 2015 年 6 月 24 日

Page 26: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

次の Tcl コマンドで、 Verilog および VHDL の論理シ ミ ュレーシ ョ ン ネッ ト リ ス トがそれぞれ生成されます。

write_verilog -mode funcsim <Verilog_Netlist_Name.v>

write_vhdl -mode funcsim <VHDL_Netlist_Name.vhd>

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

Vivado ツールでのワース ト ケースの配置配線後の遅延を計算した後に回路動作を検証するには、 Verilog タイ ミ ングシ ミ ュレーシ ョ ンを使用します。

一般的には、論理シ ミ ュレーシ ョ ンで使用したのと同じテス トベンチを使用して、 さ らに精度の高いシ ミ ュレーシ ョンを実行できます。

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

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

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

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

重要 : Vivado IDE では、 Verilog タイ ミ ング シ ミ ュレーシ ョ ンしかサポート されません。

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

write_verilog -mode timesim -sdf_anno true <Verilog_Netlist_Name>

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 26UG900 (v2015.2) 2015 年 6 月 24 日

Page 27: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

第 3章

Vivado シミ ュレータについて

概要本章では、 Vivado® 統合設計環境 (IDE) で使用可能な Vivado® シ ミ ュレータ機能について説明します。 プッシュボタンで波形を ト レースおよびデバッグできる機能も含めてこ こで説明します。

Vivado シ ミ ュレータは、ハード ウェア記述言語 (HDL) のイベン ト ド リブン シ ミ ュレータで、VHDL、Verilog、SystemVerilog (SV)、 混合言語の VHDL/Verilog または VHDL/SV の論理およびタイ ミ ング シ ミ ュレーシ ョ ンがサポート されています。

Vivado シ ミ ュレーシ ョ ンを実行する詳細な手順は、 『Vivado Design Suite チュート リ アル : ロジッ ク シ ミ ュレーシ ョン』 (UG937) [参照 10] を参照してください。

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

• ソース コード デバッグ (ステップ、 ブレークポイン ト 、 現在値の表示)

• タイ ミ ング シ ミ ュレーシ ョ ン用の SDF アノテーシ ョ ン

• VCD ダンプ

• SAIF ダンプ (電力解析および 適化用)

• HardIP ブロ ッ ク (シ リ アル ト ランシーバーおよび PCIe® など) のネイティブ サポート

• マルチスレッ ド コンパイル

• 混合言語 (VHDL、 Verilog,、 または SystemVerilog デザイン コンス ト ラ ク ト )

• 1 ク リ ッ クでシ ミ ュレーシ ョ ンを再コンパイルおよび再起動

• 1 ク リ ッ クでコンパイルおよびシ ミ ュレーシ ョ ン

• ザイ リ ンクス シ ミ ュレーシ ョ ン ライブラ リのビルト イン サポート

• リ アルタイムの波形アップデート

Vivado シミ ュレータの実行

重要 : シ ミ ュレーシ ョ ンを実行する前に、 デザインに適切なプロジェク ト設定を指定しているこ とを確認してください。 Vivado シ ミ ュレータを使用している場合は、第 2 章の 「Vivado シ ミ ュレータのプロジェク ト設定」 を参照してください。 サポート されているサードパーティ シ ミ ュレータを使用している場合は、 第 8 章 「サードパーティ シ ミ ュレータの使用」 を参照してください。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 27UG900 (v2015.2) 2015 年 6 月 24 日

Page 28: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

Flow Navigator から [Run Simulation] をク リ ッ ク し、次の図にあるよ うに、Vivado シ ミ ュレータのワークスペースを起動します。

X-Ref Target - Figure 3-1

図 3‐1 : Vivado シミ ュレータのワークスペース

1 メ イン ツールバー

2 [Run] メニュー

3 [Objects] ビュー

4 [Simulation] ツールバー

5 波形オブジェク ト

6 波形ビュー

7 [Scopes] ビュー

8 [Sources] ビュー

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 28UG900 (v2015.2) 2015 年 6 月 24 日

Page 29: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

メイン  ツールバー

Vivado IDE で もよ く使用されるコマンドに 1 ク リ ッ クでアクセスできます。 オプシ ョ ンの上にカーソルを置く と、詳細を示すツール ヒ ン トが表示されます。

[Run] メニュー

メニューは Vivado IDE と同じですが、 シ ミ ュレーシ ョ ンを実行した後には [Run] メニューが追加されます。

シ ミ ュレーシ ョ ンの [Run] メニューは、 図 3-2 のよ うになり ます。

Vivado シ ミ ュレーターの [Run] メニュー オプシ ョ ンは次のとおりです。

• [Restart] : 既存のシ ミ ュレーシ ョ ンを時間 0 から再開します。 Tcl コマンド : restart

• [Run All] : 開いているシ ミ ュレーシ ョ ンを 後まで実行します。Tcl コマンド : run all

• [Run For] : 実行するシ ミ ュレーシ ョ ン時間を指定します。Tcl コマンド :run <time>

• [Step] : 次の HDL ソース行までシ ミ ュレーシ ョ ンを実行します。

• [Break] : 実行中のシ ミ ュレーシ ョ ンを停止します。

• [Delete All Breakpoints] : すべてのブレークポイン ト を削除します。

• [Relaunch Simulation] : シ ミ ュレーシ ョ ン ファ イルを再コンパイルして run を再実行します。

[Simulation] ツールバー

Vivado シ ミ ュレータを実行する と、 シ ミ ュレーシ ョ ン用のツールバー (次の図を参照) が、 メ インのツールバーの右側に開きます。

これらは、 前出の 29 ページの図 3-2 にあるのと同じボタンで ([Delete All Breakpoints] オプシ ョ ンはなし )、 使いやすくするために提供されています。

X-Ref Target - Figure 3-2

図 3‐2 : シミ ュレーシ ョ ンの [Run] のメニュー オプシ ョ ン

X-Ref Target - Figure 3-3

図 3‐3 : [Simulation] ツールバー

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 29UG900 (v2015.2) 2015 年 6 月 24 日

Page 30: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

[Simulation] ツールバーのボタンの説明

ツールバーのボタンの上にカーソルを移動させる と、 ボタンを説明するツールチップが表示されます。

• [Restart] : シ ミ ュレーシ ョ ン時間を 0 にリセッ ト します。

• [Run all] : すべてのイベン トが完了するまで、 またはシ ミ ュレーシ ョ ンを停止するよ う HDL 文で表示されるまで、 シ ミ ュレーシ ョ ンを実行します。

• [Run For] : 指定された時間実行します。

• [Step] : 次の HDL 文までシ ミ ュレーシ ョ ンを実行します。

• [Break] : 現在のシ ミ ュレーシ ョ ンを停止します。

• [Relaunch] : シ ミ ュレーシ ョ ン ソースを再コンパイルし、シ ミ ュレーシ ョ ンを再開始します (コード変更した後など)。

[Sources] ビュー

[Sources] ビューには階層ツ リーでシ ミ ュレーシ ョ ン ソースが [Hierarchy]、 [IP Sources]、 [Libraries]、 [Compile Order] などのタブで表示されます (図 3-4)。

[Sources] ビューのボタンの上にカーソルを置く と、 その説明がツール ヒ ン ト と して表示されます。 ボタンを使用する と、 ファ イルの検証、 展開/非展開、 追加、 開く、 フ ィルターおよびスクロールなどができます。

ソース ファ イルはオブジェク ト を右ク リ ッ ク して [Go to Source Code] をク リ ッ ク しても開く こ とができます。

X-Ref Target - Figure 3-4

図 3‐4 : [Sources] ビュー

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 30UG900 (v2015.2) 2015 年 6 月 24 日

Page 31: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

[Scopes] ビュー

スコープとは HDL デザインを階層に分けたものです。 デザイン ユニッ ト をインスタンシエートするたび、 またはプロセス、 ブロ ッ ク、 パッケージ、 サブプログラムを定義するたびに、 スコープを作成します。

次の図に示すよ うに、 [Scopes] ビューにはデザイン階層が表示されます。この階層でスコープを選択する と、 [Objects]ビューに、 そのスコープの HDL オブジェ ク トがすべて表示されます。 [Objects] ビューで HDL オブジェ ク ト を選択し、 それを波形ビューアに追加するこ とができます。

スコープのフ ィルター

• フ ィルター ボタンをク リ ッ クする と、 そのスコープの表示/非表示を切り替えるこ とができます。

ヒン ト : フ ィルター ボタンを使用してスコープを非表示にする と、 スコープの種類に関係なく、そのスコープ内のすべてのスコープが非表示になり ます。 たとえば、 上の図で、 すべての Verilog モジュール スコープを非表示にするため Verilog モジュールのボタンをク リ ッ クする と、 bft_tb スコープだけでなく、 VHDL エンティティ スコープである uut も非表示になり ます。

• 特定の文字列を含むスコープに表示を制限するには、 [Search] ボタンをク リ ッ ク します。テキス ト ボッ クスに文字列を入力します。

X-Ref Target - Figure 3-5

図 3‐5 : [Scopes] ビュー

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 31UG900 (v2015.2) 2015 年 6 月 24 日

Page 32: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

[Objects] ビューで表示されるオブジェク トは、 現在どのスコープが選択されているかによって変わり ます。 [Objects]ビューでオブジェク ト を変更するには、 該当するスコープを選択します。

スコープを右ク リ ッ クする と、 ポップアップ メニューが表示され、 次のよ うなメニュー オプシ ョ ンがあ り ます (図 3-6)。

• [Add to Wave Window] : 選択したスコープの HDL オブジェク トすべてを波形コンフ ィギュレーシ ョ ンに追加します。

ヒン ト : ビッ ト幅の大きな HDL オブジェク ト を波形ビューアに追加する と、表示に時間がかかってしまいます。[Addto 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] 列にド ラ ッグ アンド ド ロ ップする方法もあ ります。

重要 : 波形ビューには、 オブジェク トが追加された時点から継続的に、 シ ミ ュレーシ ョ ン中のそのオブジェク トの値の変化が表示されます。

ヒン ト : オブジェク ト挿入以前のオブジェク ト値を表示させるには、シ ミ ュレーシ ョ ンを再開始する必要があ り ます。シ ミ ュレーシ ョ ンの再開を避けるには、デザインの表示可能な HDL オブジェク トすべての値を取り込むため、シ ミ ュレーシ ョ ン run を開始する と きに、log_wave -r / Tcl コマンドを実行します。詳細は、76 ページの「Tcl コマンド log_waveの使用」 を参照してください。

波形コンフ ィギュレーシ ョ ンの作成や HDL オブジェク トの追加など、波形コンフ ィギュレーシ ョ ンへの変更は、WCFG ファ イルを保存するまで保存されません。

• [Go To Source Code] : 選択したスコープの定義でソース コードを開きます。

• [Go To Instantiation Source Code] : Verilog モジュールおよび VHDL エンティティ インスタンスの場合、 選択したインスタンスのインスタンシエーシ ョ ン時点でソース コードを開きます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 32UG900 (v2015.2) 2015 年 6 月 24 日

Page 33: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

ソース コード テキス ト エディ ターでコードの識別子にカーソルを置く と値が表示されます (図 3-7)。

重要 : この機能を使用するには、 [Scopes] ビューで選択したソース コードにスコープが関連付けられているこ とを確認してください。

ヒン ト : 上位モジュールがインスタンシエート されていないため、そのモジュールを選択しても、上の図では、 [Goto Instantiation Source Code] がグレー表示になっています。

X-Ref Target - Figure 3-6

図 3‐6 : [Scopes] ビューの右クリ ックで表示されるオプシ ョ ン

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 33UG900 (v2015.2) 2015 年 6 月 24 日

Page 34: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

その他のスコープおよびソース オプシ ョ ン

[Scopes] または [Sources] ビューでは、 [Show Search] ボタンをク リ ッ クする と検索フ ィールが表示されます。

[Scopes] および [Objects] ビューを使用する代わりに、Tcl コンソールに次を入力して HDL デザインを表示するこ と もできます。

get_scopes current_scope report_scopesreport_values

ヒン ト : ソース ファ イルにアクセスして編集するには、図 3-8 に示す [Go to Source Code] をク リ ッ ク して、[Scopes] または [Objects] ビューからファ イルを開きます。

X-Ref Target - Figure 3-7

図 3‐7 :識別子が表示されたソース コード

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 34UG900 (v2015.2) 2015 年 6 月 24 日

Page 35: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

ヒン ト : ソース コードを編集し、 ファ イルを保存したら、 [Re-launch] ボタンをク リ ッ ク して、 シミ ュレーシ ョ ンを閉じて再び開かずに、 シ ミ ュレーシ ョ ンを再コンパイルおよび再起動します。

[Objects] ビュー

[Objects] ビューには、 [Scopes] ビューで選択したスコープに関連付けられている HDL シ ミ ュレーシ ョ ン オブジェクトが表示されます (図 3-9)。

HDL オブジェク トの横にあるアイコンは、 各オブジェク トのタイプまたはポート モードを示します。 このビューにはシ ミ ュレーシ ョ ン オブジェク トの名前、 値、 データ タイプなどがリ ス ト されます。

次のコマンドを Tcl コンソールに入力する と、 オブジェク トの現在の値を取得できます。

get_value <hdl_object>

表 3-1 は、 [Objects] ビューの上部のボタンを簡単に説明しています。 これらのボタンをク リ ッ クする と、 [Objects]ビューで選択されたオブジェク トが表示されます。 [Objects] ビューのコンテンツを絞り込むには、 このボタンを使用します。

X-Ref Target - Figure 3-8

図 3‐8 : [Scopes] ビューのコンテキスト  メニュー

X-Ref Target - Figure 3-9

図 3‐9 : [Objects] ビュー

表 3‐1 : [Objects] ビューのボタン

ボタン 説明

[Search] ボタンをク リ ッ クする と、 検索するオブジェク ト名を入力できるフ ィールドが開きます。

入力信号

出力信号

入力/出力信号

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 35UG900 (v2015.2) 2015 年 6 月 24 日

Page 36: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

ヒン ト : ボタンの上にカーソルを置く と、 説明が表示されます。

一部の HDL オブジェク ト タイプは、1 つまたは複数のオブジェク ト フ ィルター ボタンをク リ ッ ク して、 表示/非表示を切り替えるこ とができます。 ボタンの上にカーソルを置く と、 オブジェク ト タイプを示すツール ヒ ン トが表示されます。

[Objects] ビューのコンテキスト  メニュー

[Objects] ビューのオブジェク ト を右ク リ ッ クする と、コンテキス ト メニューが表示されます (図 3-10)。コンテキス トメニューのオプシ ョ ンは次のよ うになっています。

• [Add to Wave Window] : 選択したオブジェク ト を波形コンフ ィギュレーシ ョ ンに追加します。 または、 オブジェク ト を [Objects] ビューから波形ビューの [Name] 列までド ラ ッグ アンド ド ロ ップします。

• [Show in Wave Window] : 波形ビューで選択されたオブジェク ト をハイライ ト します。

• [Radix] : 選択したオブジェク トの値を [Objects] ビューおよびソース コード ビューで表示する際に使用する数値フォーマッ ト を選択します。

それぞれのオブジェク トの基数を次のよ うに変更できます。

a. [Objects] ビューでオブジェク ト を右ク リ ッ ク します。

b. コンテキス ト メニューから [Radix] をク リ ッ ク して、 フォーマッ ト を選択します。

- [Binary] (デフォルト )

- [Hexadecimal] (16 進数)

- [Octal] (8 進数)

- [ASCII]

- [Unsigned Decimal] (符号なし 10 進数)

- [Signed Decimal] (符号付き 10 進数)

内部信号

一定信号

可変信号

表 3‐1 : [Objects] ビューのボタン  (続き)

ボタン 説明

X-Ref Target - Figure 3-10

図 3‐10 : [Objects] ビューのコンテキスト  メニュー

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 36UG900 (v2015.2) 2015 年 6 月 24 日

Page 37: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

ヒン ト : [Objects] ビューで基数を変更する と、 波形ビューではその変更が反映されません。

• [Report Drivers] : 選択したオブジェク トに値を割り当てる HDL プロセスのレポートが Tcl コンソールに表示されます。

• [Go To Source Code] : 選択したオブジェク トの定義でソース コードを開きます。

• [Force Constant] : 選択したオブジェク ト を定数に割り当てます。この詳細は、第 5 章の 「[Force Constant] オプシ ョン」 を参照してください。

• [Force Clock] : 選択したオブジェク ト を定期的に変わる値に割り当てます。詳細は、第 5 章の 「[Force Clock] オプシ ョ ン」 を参照してください。

• [Remove Force] : 選択したオブジェク トに割り当てた値を削除します。 詳細は、 第 5 章の 「[Remove Force] オプシ ョ ン」 を参照してください。

ヒン ト : 波形ビューアで一部の HDL オブジェク トが表示されていない場合は、 そのオブジェク トの波形ト レースがVivado シ ミ ュレータでサポート されていないこ とを示します。 Verilog で名前が指定されているイベン トや、 ローカル変数などがそ ういったオブジェク トにあたり ます。

波形ビュー

Vivado シ ミ ュレータを起動する と、デフォルトで波形ビューが開きます。 このビューには、図 3-11 にあるよ うに、シミ ュレーシ ョ ンの 上位モジュールからの ト レース可能な HDL オブジェ ク ト からなる、 新しい波形コンフ ィギュレーシ ョ ンが表示されます。

ヒン ト : プロジェク ト をいったん閉じてから も う 1 度開いた場合は、 波形ビューを表示させるためにシ ミ ュレーシ ョンを再実行する必要があ り ます。 しかし、 シ ミ ュレーシ ョ ン中にデフォルトの波形ビューを う っかり と閉じてしまった場合は、 メ イン メニューから [Window] → [Waveform] をク リ ッ ク して、 ビューを復活させるこ とができます。

波形ビューに個々の HDL オブジェク ト、またはオブジェク トのセッ ト を追加するには、そのオブジェク ト を右ク リ ック して [Add to Wave Window] をク リ ッ ク します (35 ページの図 3-9)。

Tcl コマンドを使用してオブジェク ト を追加するには、 add_wave <HDL_objects> と入力します。

X-Ref Target - Figure 3-11

図 3‐11 :波形ビュー

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 37UG900 (v2015.2) 2015 年 6 月 24 日

Page 38: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

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 コマンドを使用します。

波形オブジェク ト

Vivado IDE の波形ビューは、 多くの Vivado Design Suite ツールで共通して使用されます。 次の図 3-12 は、 波形コンフ ィギュレーシ ョ ンに含まれる波形オブジェク トの例を示しています。

波形ビューには、 HDL オブジェク ト とその値および波形に加え、 グループ、 仕切り、 仮想バスなどの HDL オブジェク ト を見やすくするためのアイテムも表示されます。

HDL オブジェク トおよびそれを見やすくするためのアイテムは、 ひとま とめにして 「波形コンフ ィギュレーシ ョ ン」と呼ばれます。 波形ビューの波形部分には、 カーソル、 マーカー、 時間軸などの時間計測ためのアイテムも表示されます。

Vivado IDE はシ ミ ュレーシ ョ ン中に波形ビューで HDL オブジェ ク ト を ト レースするので、 その波形コンフ ィギュレーシ ョ ンを使用してシ ミ ュレーシ ョ ン結果を検証できます。

X-Ref Target - Figure 3-12

図 3‐12 :波形コンフ ィギュレーシ ョ ンの HDL オブジェク ト

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 38UG900 (v2015.2) 2015 年 6 月 24 日

Page 39: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

デザイン階層およびシ ミ ュレーシ ョ ンの波形は波形コンフ ィギュレーシ ョ ンの一部ではなく、別の波形データベースファイル (WDB) に保存されます。

波形ビューの使用に関する詳細は、 第 4 章 「シ ミ ュレーシ ョ ン波形の解析」 を参照してください。

波形の保存

新規波形コンフ ィギュレーシ ョ ンはディ スクに自動的には保存されません。 [File] → [ave Waveform Configuration As]をク リ ッ ク して、 ファ イル名を指定して、 WCFG ファ イルを作成します。

波形コ ンフ ィ ギ ュ レーシ ョ ンを WCFG フ ァ イルに保存するには、 Tcl コ ン ソールに 「save_wave_config<filename.wcfg>」 と入力します。

指定したコマンド引数の名前で WCFG ファ イルが保存されます。

重要 : ズーム設定は波形コンフ ィギュレーシ ョ ンには保存されません。

複数波形コンフ ィギュレーシ ョ ンの作成と使用

シ ミ ュレーシ ョ ン セッシ ョ ンでは、複数の波形コンフ ィギュレーシ ョ ンをそれぞれの波形ビューで作成および使用できます。 複数の波形ビューが表示されている場合は、 一番 近に作成したビューまたは 近使用したビューがアクティブ ビューにな り ます。 アクティブ ビューは、 現在表示されているビューだけでなく、 外部コマンドが適用される波形ビューでもあ り ます。 たとえば、 [HDL Objects] → [Add to Wave Window] などのコマンドです。

別の波形ビューをアクティブ ビューにするには、そのビューのタイ トルをク リ ッ ク します。詳細は、 42 ページの 「複数シ ミ ュレーシ ョ ン run の区別」および47 ページの「波形コンフ ィギュレーシ ョ ンの新規作成」を参照してください。

論理およびタイ ミング シミ ュレーシ ョ ンの実行Vivado Design Suite でプロジェク ト を作成する と、すぐにビヘイビアー シ ミ ュレーシ ョ ンを実行するこ とができます。合成またはインプ リ メ ンテーシ ョ ンを実行した後は、 論理およびタイ ミ ング シ ミ ュレーシ ョ ンを実行できます。 シミ ュレーシ ョ ンを実行するには、 Flow Navigator で [Run Simulation] をク リ ッ ク し、 次の図に示すよ うに、 ポップアップ メニューから該当オプシ ョ ンを選択します。

ヒン ト : ポップアップ メニューでどのオプシ ョ ンを選択できるかは、デザイン開発段階によって異なり ます。たとえば、合成は実行したけれどもインプリ メンテーシ ョ ンはまだである という場合は、ポップアップ メニューでインプ リメンテーシ ョ ンに関するオプシ ョ ンがグレー表示になっています。

X-Ref Target - Figure 3-13

図 3‐13 : シミ ュレーシ ョ ンの Run オプシ ョ ン

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 39UG900 (v2015.2) 2015 年 6 月 24 日

Page 40: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

論理シミ ュレーシ ョ ンの実行

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

合成を実行した後は、[Run Simulation] → [Post-Synthesis Functional Simulation] が使用できるよ うになり ます (図 3-13)。

合成後は、 一般的なロジッ ク デザインがデバイス別のプ リ ミ テ ィブに合成されています。 合成後に論理シ ミ ュレーシ ョ ンを実行するこ とによ り、合成の 適化によ りデザイン機能が変わっていないこ とを確認できます。合成後の論理シ ミ ュレーシ ョ ンを選択する と、論理ネッ ト リ ス トが生成され、その UNISIM ライブラ リがシ ミ ュレーシ ョ ンに使用されます。

インプリ メンテーシ ョ ン後の論理シミ ュレーシ ョ ン

インプ リ メンテーシ ョ ンを実行した後は、 [Run Simulation] → [Post-Implementation Functional Simulation] が使用できるよ うになり ます (図 3-13)。

インプ リ メ ンテーシ ョ ン後は、 デザインはハード ウェアに配置配線されています。 この段階で論理検証をしておき、インプ リ メンテーシ ョ ン中に行われた物理的 適化によ りデザインの機能が変更されていないか確認できます。

インプ リ メンテーシ ョ ン後の論理シ ミ ュレーシ ョ ンを選択する と、論理ネッ ト リ ス トが生成され、その UNISIM ライブラ リがシ ミ ュレーシ ョ ンに使用されます。

タイ ミング シミ ュレーシ ョ ンの実行

ヒント : 合成後のタイ ミ ング シ ミ ュレーシ ョ ンでは、デバイス モデルの予測タイ ミ ング遅延が使用され、インターコネク ト遅延は含まれません。インプリ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンでは実際のタイ ミ ング遅延が使用されます。

合成後およびインプ リ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンを実行する と き、シ ミ ュレータには次のものが含まれます。

• SIMPRIM ライブラ リ コンポーネン ト を含むゲート レベルのネッ ト リ ス ト

• SECUREIP

• 標準遅延フォーマッ ト (SDF) ファ イル

デザインの全体的な機能は 初に定義しています。デザインがインプリ メン ト される と、正確なタイ ミ ング情報が利用できるよ うになり ます。

ネッ ト リ ス トおよび SDF を作成するには、 Vivado Design Suite は次の作業を行います。

• -mode timesim オプシ ョ ンを使用してネッ ト リ ス ト ライター write_verilog、 および write_sdf (SDF アノテーター )を呼び出します。

• 生成されたネッ ト リ ス ト をターゲッ ト シ ミ ュレータに送り ます。

これら のオプシ ョ ンは、 20 ページの 「シ ミ ュ レーシ ョ ン設定」 で説明されている る シ ミ ュ レーシ ョ ン設定 から変更できます。

重要 : 合成後と インプ リ メ ンテーシ ョ ン後のタ イ ミ ング シ ミ ュレーシ ョ ンは、 Verilog でのみサポー ト されます。VHDL のタイ ミ ング シ ミ ュレーシ ョ ンはサポート されません。 VHDL を使用する場合、 合成後およびインプ リ メ ンテーシ ョ ン後の論理シ ミ ュレーシ ョ ンを実行できます (この場合、 SDF アノテーシ ョ ンは必要なく、 シ ミ ュレーシ ョン ネッ ト リ ス トで UNISIM ライブラ リが使用されます)。ネッ ト リ ス トは write_vhdl Tcl コマンドを使用して作成できます。 使用方法の詳細は、 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835) [参照 7] を参照して ください。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 40UG900 (v2015.2) 2015 年 6 月 24 日

Page 41: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

重要 : Vivado シ ミ ュレータ モデルはインターコネク ト遅延を使用します。 タイ ミ ング シ ミ ュレーシ ョ ンを正し く実行するには、 次のよ うなコマンドが追加で必要になり ます。

-transport_int_delays -pulse_r 0 -pulse_int_r 0

合成後のタイ ミング シミ ュレーシ ョ ン

合成を実行した後は、 [Run Simulation] → [Post-Synthesis Timing Simulation] が使用できるよ うにな り ます (図 3-13)。

合成後は、一般的なロジッ ク デザインがデバイス別のプリ ミ ティブに合成されており、配線遅延およびコンポーネント遅延の予測値が利用できます。 合成後のタイ ミ ング シ ミ ュレーシ ョ ンを実行するこ とによ り、 インプ リ メ ンテーシ ョ ン段階で調査する前に、 タイ ミ ング ク リ テ ィカル パスがないか確認するこ とができます。 合成後のタイ ミ ングシ ミ ュレーシ ョ ンを選択する と、 タイ ミ ング ネッ ト リ ス トが生成され、 SDF ファ イルで予測遅延値が生成されます。シ ミ ュレータで生成された SDF ファ イルが含められるよ う、 ネッ ト リ ス ト ファ イルには $sdf_annotate コマンドが含まれています。

インプリ メンテーシ ョ ン後のタイ ミング シミ ュレーシ ョ ン

インプ リ メンテーシ ョ ンを実行した後は、 [Run Simulation] → [Post-Implementation Timing Simulation] が使用できるようになり ます (図 3-13)。

インプ リ メンテーシ ョ ン後は、デザインはハード ウェアにインプリ メン トおよび配線されています。 この段階でタイミ ング シ ミ ュレーシ ョ ンを実行する と、正確なタイ ミ ング遅延を使用して、指定速度でデザインが機能しているかどうかを確認するこ とができます。 このシ ミ ュレーシ ョ ンは、 制約が設定されていないパスや、 非同期パスのタイ ミ ング エラー ( リセッ ト などで起きるエラーなど) を検出するのに便利です。 インプリ メンテーシ ョ ン後のタイ ミ ング シミ ュレーシ ョ ンを選択する と、 タイ ミ ング ネッ ト リ ス ト と SDF ファ イルが生成されます。 ネッ ト リ ス ト ファ イルには $sdf_annotate コマンドが含まれるので、 生成された SDF ファ イルが自動的に指定されます。

タイ ミング シミ ュレーシ ョ ン用の SDF ファイルのアノテート

シ ミ ュレーシ ョ ン設定を指定したと きに、 SDF ファ イルを作成するかど うか、 そして、 プロセス コーナーを高速にするか低速にするかを設定しました。

ヒン ト : SDF ファ イル オプシ ョ ンの設定を確認するには、 Vivado IDE の Flow Navigator で、 [Simulation Settings] を選択します。[Project Settings] ダイアログ ボッ クスの [Netlist] タブが開きます 第 2 章の「Vivado シ ミ ュレータのプロジェク ト設定」 も参照してください。

SDF ファ イルには、 指定したプロセス コーナーに基づいて異なる min および max 数値が含まれます。

推奨 : 2 つの異なるシ ミ ュレーシ ョ ンを実行して、 セッ ト アップおよびホールド違反をチェッ クをして ください。

セッ ト アップ チェッ クを実行するには、 –process コーナーを slow にして SDF を作成し、 SDF ファ イルからの max 列を使用します。

ホールド チェッ クを実行するには、 –process コーナーを fast にして SDF ファ イルを作成し、 SDF ファ イルからのmin 列を使用します。 どの SDF 遅延フ ィールドを使用するか指定する方法は、 使用するシ ミ ュレーシ ョ ン ツールによって異なり ます。このオプシ ョ ンの設定方法については、ご使用のシ ミ ュレーシ ョ ン ツールの資料を参照してください。

4 つのタイ ミ ング シ ミ ュレーシ ョ ンすべてを確認するには、 次のよ うに指定します。

° 低速コーナー : SDFMIN および SDFMAX

° 高速コーナー : SDFMIN および SDFMAX

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 41UG900 (v2015.2) 2015 年 6 月 24 日

Page 42: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

シミ ュレーシ ョ ン結果の保存Vivado シ ミ ュレータは、project/simset ディレク ト リの波形データベース (WDB) ファ イル (<filename>.wdb) にオブジェク ト (VHDL 信号や Verilog レジスタまたはワイヤなど) のシ ミ ュレーシ ョ ン結果を保存します。

オブジェク ト を波形ビューに追加してシ ミ ュレーシ ョ ンを実行する と、デザイン全体の階層と追加したオブジェク トの ト ランザクシ ョ ンが自動的に WDB ファ イルに保存されます。 また、 log_wave コマンドを使用して、 波形ビューには表示されないオブジェ ク ト を波形データベースに追加する こ と もできます。 log_wave コマン ドの詳細は、第 5 章の 「Tcl コマンド log_wave の使用」 を参照してください。

複数シミ ュレーシ ョ ン  run の区別デザインに対して複数のシ ミ ュレーシ ョ ンを実行した場合、 Vivado シ ミ ュレータでは、 現在ハイラ イ ト されているビューのシ ミ ュレーシ ョ ンがワークスペース上部に示されます (図 3-14)。

シミ ュレーシ ョ ンを閉じるシ ミ ュレーシ ョ ンを閉じるには、 Vivado IDE で次を実行します。

• [File] → [Exit] をク リ ッ クするか、 プロジェク ト ビューの右上の X マークをク リ ッ ク します。

注意 : 複数のシ ミ ュレーシ ョ ンを実行している場合は、青いタイ トル バーの Xマークをク リ ッ クする と、すべてのシミ ュレーシ ョ ンが閉じます。 1 つのシ ミ ュレーシ ョ ンを閉じるには、青いタイ トル バーの下の小さなグレーまたは白いタブの X マークをク リ ッ ク します。

Tcl コンソールからシ ミ ュレーシ ョ ンを閉じるには、 次のコマンドを入力します。

close_sim

このコマンドがまず、保存されていない波形コンフ ィギュレーシ ョ ンがないかど うかチェッ ク します。あった場合は、エラー メ ッセージが表示されます。 close_sim コマンドを実行する前に未保存の波形コンフ ィギュレーシ ョ ンを閉じるか、 または保存します。 または -force オプシ ョ ンを Tcl コマンドに追加します。

シミ ュレーシ ョ ン起動スクリプ ト  ファイルの追加カスタムの Tcl コマンドをシ ミ ュレーシ ョ ンで実行するよ うに、 バッチ ファ イルに Tcl コマンドを含めて、 プロジェク トに追加するこ とができます。 これらのコマンドはシ ミ ュレーシ ョ ン開始後に実行されます。 このプロセスは次のよ うになり ます。

X-Ref Target - Figure 3-14

図 3‐14 : アクテ ィブなシミ ュレーシ ョ ン  タイプ

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 42UG900 (v2015.2) 2015 年 6 月 24 日

Page 43: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

1. シ ミ ュレーシ ョ ン ソース ファ イルに追加するシ ミ ュレーシ ョ ン コマンドを使用して Tcl スク リプ ト を作成します。 たとえば、 1,000ns 間実行するシ ミ ュレーシ ョ ンがあ り、 それをも う少し長く実行したい場合、 次のコマンドを含むファイルを作成します。

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 プロジェク トに追加します。 [SimulationSources] フォルダーに post.tcl ファ イルが表示されます (図 3-15)。

5. [Simulation] ツールバーから [Relaunch] ボタンをク リ ッ ク します。

post.tcl ファ イルの指定時間 (元の時間に追加された時間) でシ ミ ュレーシ ョ ンが再実行されます。 Vivado シミ ュレータは、 そのコマンドをすべて実行した後に、 post.tcl ファ イルを自動的に呼び出します。

X-Ref Target - Figure 3-15

図 3‐15 : post.tcl ファイルの使用

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 43UG900 (v2015.2) 2015 年 6 月 24 日

Page 44: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

シミ ュレーシ ョ ン  メ ッセージの表示Vivado IDE には、 情報、 警告、 エラーなどのメ ッセージが表示される メ ッセージ フ ィールドが含まれます。 図 3-16に示すよ うに、 Vivado シ ミ ュレータからの一部のメ ッセージには問題の詳細と推奨回避策が記載されています。

同じ詳細を 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 3-16

図 3‐16 : シミ ュレータ  メ ッセージの説明と回避策情報 

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 44UG900 (v2015.2) 2015 年 6 月 24 日

Page 45: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

launch_simulation コマンドの使用launch_simulation コマンドを使用する と、 スク リプ ト モードでサポート されているシ ミ ュレータを実行できます。

launch_simulation の構文は、 次のよ うにな り ます。

launch_simulation [-step <arg>] [-simset <arg>] [-mode <arg>] [-type <arg>][-scripts_only] [-of_objects <args>] [-absolute_path <arg>][-install_path <arg>] [-noclean_dir] [-quiet] [-verbose]

表 3-2 は、 launch_simulation のオプシ ョ ンを示しています。

• 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

• QuestaSim を使用してビヘイビアー シ ミ ュレーシ ョ ン用のスク リプ ト を生成します。

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_1

表 3‐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] プログラム実行中メ ッセージの制限を解除し、 すべてのメ ッセージを表示します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 45UG900 (v2015.2) 2015 年 6 月 24 日

Page 46: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 3 章 : Vivado シミ ュレータについて

update_compile_order -fileset sim_1set_property target_simulator ModelSim [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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 46UG900 (v2015.2) 2015 年 6 月 24 日

Page 47: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

第 4章

シミ ュレーシ ョ ン波形の解析

概要Vivado® シ ミ ュレータでは、波形を使用してデザインを解析し、コードをデバッグできます。シ ミ ュレータは、[Objects]ビューや [Scopes] ビューなど、 ワークスペースのほかのエリ アにデザイン信号データを自動入力します。

通常、シ ミ ュレート をする必要のある HDL オブジェク ト を定義するテス トベンチでシ ミ ュレーシ ョ ンを設定します。テス トベンチの詳細は、 『Writing Efficient Testbenches』 (XAPP199) [参照 5] を参照してください、。

Vivado シ ミ ュレータを起動する と、 上位 HDL オブジェク ト を含む波形コンフ ィギュレーシ ョ ンが表示されます。Vivado シ ミ ュレータは、 [Objects] ビューや [Scopes] ビューなどのほかのエリ アにデザイン データを自動入力します。この後、 さ らに HDL オブジェク ト を追加したり、シ ミ ュレーシ ョ ンを実行したりできます。次の 「波形コンフ ィギュレーシ ョ ンと波形ビューの使用」 を参照してください。

波形コンフ ィギュレーシ ョ ンと波形ビューの使用Vivado シ ミ ュレータでは、波形ビューをカスタマイズするこ とができます。ビューの現在の状態は波形コンフ ィギュレーシ ョ ン と呼ばれます。 このコンフ ィギュレーシ ョ ンを WCFG ファ イルに保存して、 後でまた使用するこ とができます。

波形コンフ ィギュレーシ ョ ンには名前が付けられているか、「untitled」 になっています。名前は波形コンフ ィギュレーシ ョ ン ビューのタイ トルバーに表示されます。波形コンフ ィギュレーシ ョ ンがまだ 1 度もファイルに保存されていない場合は、 「untitled」 になっています。

波形コンフ ィギュレーシ ョ ンの新規作成

波形を表示する新しい波形コンフ ィギュレーシ ョ ンを作成します。

1. [File] → [New Waveform Configuration] をク リ ッ ク します。

新しい波形ビューが開き、 「untitled」 とい う名前の新しい波形コンフ ィギュレーシ ョ ンが表示されます。Tcl コマンド : add_wave <HDL_Object>

2. 49 ページの 「波形コンフ ィギュレーシ ョ ンの HDL オブジェク ト 」 で説明されている方法で HDL オブジェク トを波形コンフ ィギュレーシ ョ ンに追加します。

波形の新規作成についてはは、 第 3 章 「Vivado シ ミ ュレータについて」 を参照して ください。 複数の波形については、 39 ページの 「複数波形コンフ ィギュレーシ ョ ンの作成と使用」 も参照してください。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 47UG900 (v2015.2) 2015 年 6 月 24 日

Page 48: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

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 で開く方法には、 インタラ クティブ手法とプログラム手法の 2つがあ り ます。

インタラクテ ィブ手法

° Vivado Design Suite プロジェク ト を読み込んだら、 [View] → [Open Static Simulation] をク リ ッ ク し、前に実行したシ ミ ュレーシ ョ ンの波形を含む WDB ファ イルを選択します。

ヒン ト : 「スタティ ッ ク シ ミ ュレーシ ョ ン」 とは Vivado シ ミ ュレータのモードで、 シ ミ ュレーシ ョ ンを実行して得たデータの代わりに、 WDB ファ イルからのデータがビューに表示されます。

° または、 Tcl コンソールに次を入力します。

open_wave_database <name>.wdb

プログラム手法

次の内容を含めた Tcl ファ イルを作成します (design.tcl など)。

current_filesetopen_wave_database <name>.wdb

このファ イルを次のよ うに実行します。

vivado -source design.tcl

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 48UG900 (v2015.2) 2015 年 6 月 24 日

Page 49: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

重要 : Vivado シ ミ ュレータは、サポート されている OS で作成された WDB ファ イルを開く こ とができ、また、VivadoDesign Suite 2014.3 以降のバージ ョ ンで作成された WDB ファ イルも開く こ とができます。それよ り も前のバージ ョ ンの Vivado Design Suite で作成された WDB ファ イルは開く こ とはできません。

シ ミ ュレーシ ョ ンを実行して HDL オブジェク ト を波形ビューで表示する場合、 シ ミ ュレーシ ョ ンを実行する と、 表示されている HDL オブジェク トの波形アクティビティを含む波形データベース (WDB) ファ イルが作成されます。

WDB ファ イルには、 シ ミ ュレート されたデザインの HDL スコープとオブジェク トすべてに関する情報も含まれます。 このモードの場合、 制御すべき基本ラ イブ シ ミ ュレーシ ョ ン モデルがないので、 run コマンドのよ う なシ ミ ュレーシ ョ ンを制御または監視するコマンドは使用できません。

ただし、 スタティ ッ ク シ ミ ュレーシ ョ ンで波形および HDL デザイン階層を表示するこ とはできます。

波形コンフ ィギュレーシ ョ ンの HDL オブジェク ト  HDL オブジェ ク ト を波形コンフ ィギュレーシ ョ ンに追加する と、 波形ビューアで HDL オブジェ ク ト の 「波形オブジェク ト 」 が作成されます。 波形オブジェク トは、 関連付けられている HDL オブジェク トに リ ンク されますが、 それぞれ別のものです。

1 つの HDL オブジェク トから複数の波形オブジェク ト を作成でき、 各波形オブジェク トの表示プロパティを別々に設定できます。

たとえば、 myBus とい う HDL オブジェク トから作成されたある波形オブジェク ト を 16 進数で表示し、 同じ myBusの別の波形オブジェク ト を 10 進数で表示させるこ とができます。

仕切り、 グループ、 仮想バスなどの別の種類の波形オブジェク ト も波形コンフ ィギュレーシ ョ ンに表示できます。

HDL オブジェク トから作成された波形オブジェク トは特に 「デザイン波形オブジェク ト 」 と呼ばれます。 これらのオブジェク トは、 それぞれアイコンで表示されます。 デザイン波形オブジェク トの場合、 アイコンを見る と、 そのオブジェク トがスカラー なのか、 Verilog ベクターや VHDL レコードなどの複合型 なのかがわかり ます。

ヒン ト : [Objects] ビューでデザイン波形オブジェク トの HDL オブジェク ト を表示させるには、デザイン波形オブジェク トの名前を右ク リ ッ ク し、 [Show in Object Window] をク リ ッ ク します。

図 4-1 に、 波形コンフ ィギュレーシ ョ ン ビューの HDL オブジェク トの例を示します。 デザイン オブジェク トには、名前と値が表示されます。

• [Name] : デフォルトでは、 HDL オブジェク トの名前が表示されます。表示されるのは名前だけで、オブジェク トの階層パスは表示されません。階層パスを含めた名前で表示したり、 カスタム名を指定して表示するこ と もできます。

• [Value] : オブジェク トの値を波形ビューのメ イン カーソルに示される時間で表示します。値のフォーマッ ト または基数は、 同じ HDL オブジェク トに リ ンク されているほかのデザイン波形オブジェク トのフォーマッ トに関係なく、 また [Objects] ビューおよびソース コード ビューに表示される値のフォーマッ トに関係なく、 変更できます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 49UG900 (v2015.2) 2015 年 6 月 24 日

Page 50: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

[Scopes] ビューには、 選択したスコープに対し表示可能なすべての HDL オブジェク ト を、 波形ビューに追加する機能があ り ます。 [Scopes] ビューの使用方法については、 第 3 章 31 ページの 「[Scopes] ビュー」 を参照してください。

基数

バスのデータ タイプを理解するこ とは重要です。デジタルおよびアナログの波形を効果的に使用するには、基数設定とデータ タイプの関係を認識する必要があ り ます。

重要 : 変更を加えたいビューで基数設定を変更してください。 [Objects] ビューで基数を変更しても、 波形ビューまたは Tcl コンソールでは、 その変更は反映されません。 たとえば、 [Objects] ビューで wbOutputData[31:0] という アイテムを [Signed Decimal] に変更しても、 波形ビューでは [Binary] のままです。

デフォルト基数の変更

明示的に基数が設定されていない波形オブジェク トの数値は、すべてデフォルトの波形基数になり ます。デフォルトの波形基数は、 2 進数です。

デフォルトの波形基数を変更するには、 次の手順に従ってください。

1. 波形ビューのサイ ドバーで [Waveform Options] ボタンをク リ ッ ク します。 波形オプシ ョ ンのビューが開きます。

2.[General] ページで [Default Radix] ド ロ ップダウン メニューをク リ ッ ク します。

3.ド ロ ップダウン リ ス トから基数を選択します。

オブジェク トごとの基数の変更

波形ビューで波形オブジェク トの基数を変更するには、 次の操作を行います。

1. 波形オブジェク トの名前を右ク リ ッ ク します。

X-Ref Target - Figure 4-1

図 4‐1 :波形 HDL オブジェク ト

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 50UG900 (v2015.2) 2015 年 6 月 24 日

Page 51: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

2. [Radix] をク リ ッ ク し、 ド ロ ップダウン メニューからフォーマッ ト を選択します。

° [Binary] (デフォルト )

° [Hexadecimal] (16 進数)

° [Unsigned Decimal] (符号なし 10 進数)

° [Signed Decimal] (符号付き 10 進数)

° [Octal] (8 進数)

° [ASCII]

° [Real] (実数)

° [Real Settings] (実数設定)

Tcl コンソールで、 表示された値のフォーマッ ト を変更するには、 次の Tcl コマンドを入力します。

set_property radix <radix> <wave_object>

<radix> には、 bin、 unsigned,、 hex、 dec、 ascii、 または oct を指定します。<wave_object> には、 add_wave コマンドで返されたオブジェク ト名になり ます。

ヒン ト : 波形ビューで基数を変更しても、 [Objects] ビューではその変更が反映されません。

波形のカスタマイズ

アナログ波形の使用

基数およびアナログ波形の使用

バスの値が数値と して処理される方法は、 バス波形オブジェク トの基数設定によって決ま り ます。

• 2 進数、 8 進数、 16 進数、 ASCII、 および符号なしの 10 進数の基数を使用する と、 バスの値が符号なしの整数として処理されます。

• バス内のビッ トのいずれかが 0 でも 1 でもない場合、 バス全体の値は 0 と処理されます。

• 符号付きの 10 進数基数を使用する と、 バスの値が符号付き整数と して処理されます。

• 実数基数を使用する と、 バスの値は固定小数点または浮動小数点の実数と して処理されます。 これは、 [RealSettings] ダイアログ ボッ クスの設定によって決ま り ます。

波形オブジェク トの基数を実数に設定する手順は、 次のとおりです。

1. 波形コンフ ィギュレーシ ョ ン ビューの [Name] 列で HDL オブジェク ト を右ク リ ッ ク し、 ド ロ ップダウン メニューから [Radix] → [Real Settins] をク リ ッ ク して、 [Real Settings] ダイアログ ボッ クスを開きます (図 4-2)。

このダイアログ ボッ クスで、バスの値を実数に変換する方法を指定するパラ メーターを設定します。次の図はデフォルト値を示しています。 実数の基数を使用する前に、 これらのパラ メーターを設定する必要があ り ます。

2. も う 1 度同じ HDL オブジェク ト を右ク リ ッ ク し、 [Radix] → [Real] をク リ ッ ク して、HDL オブジェク トの値を実数で表示させます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 51UG900 (v2015.2) 2015 年 6 月 24 日

Page 52: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

I

[Real Settings] ダイアログ ボックスのオプシ ョ ンの説明

• [Fixed Point] : 選択したバス波形オブジェク トのビッ トが固定小数点の符号付きまたは符号なしの実数と して処理されます。

° [Binary Point] : 固定小数点の小数部分に何ビッ ト使用するかを指定します。

注意 : [Binary Point] で指定する値が波形オブジェク トのビッ ト幅よ り も大きい場合、 波形オブジェク トの値は固定小数点と しては処理されず、波形オブジェク トがデジタル波形で表示されたと きにすべての値が <Bad Radix> と表示されます。 アナログ波形と して表示される場合、 すべての値は 0 と して処理されます。

• [Floating Point] :選択したバス波形オブジェク トのビッ トが IEEE の浮動小数点の実数と して処理されます。

注記 :単精度および倍精度 (および単/倍精度に設定されている値のカスタム精度) のみがサポート されています。 その他の値は、[Fixed Point] の場合と同様 <Bad Radix> 値になり ます。 [Exponent Width] および [Fraction Width] は、波形オブジェク トのビッ ト幅に必ず追加しておく必要があ り、追加されていない場合は <Bad Radix> になり ます。

次の制限に注意してください。

• 実数での 大バス幅は 64 ビッ トです。

• Verilog real および VHDL real はアナログ波形のよ うにサポート されません。

• 浮動小数点では 32 ビッ トおよび 64 ビッ トのアレイのみがサポート されています。

波形のアナログ表示

重要 : HDL バス オブジェク ト をアナログ波形で表示して予測される波形を出力する場合、 HDL オブジェク トのデータ と一致する基数を選択してください。 次に例を示します。

X-Ref Target - Figure 4-2

図 4‐2 : [Real Settings] ダイアログ ボックス

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 52UG900 (v2015.2) 2015 年 6 月 24 日

Page 53: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

- バスでエンコード されるデータが 2 の補数の符号付き整数の場合は、 符号付きの基数を選択する必要があ り ます。 - データが IEEE フォーマッ トでエンコード される浮動小数点の場合は、 基数に実数を選択する必要があ り ます。

アナログ波形表示のカスタマイズ

アナログ波形の表示は次のよ うにカスタマイズできます。

1. 波形コンフ ィギュレーシ ョ ン ビューの [Name] 列で HDL オブジェク ト を右ク リ ッ ク し、 ド ロ ップダウン メニューから [Waveform Style] を選択します。 ポップアップ メニューが表示され、 次のオプシ ョ ンが含まれています。

° [Analog] : 波形をアナログに設定します。

° [Digital] : 波形オブジェク ト をデジタルに設定します。

° [Analog Settings] : アナログ波形表示に関するオプシ ョ ンを設定する [Aanalog Settings] ダイアログ ボッ クスが開きます (図 4-3)。

重要 : 波形ビューでは、 幅が 64 ビッ ト以下のバスのアナログ波形のみを表示できます。

[Analog Settings] ダイアログ ボックスのオプシ ョ ンの説明

• [Row Height] : 選択した波形オブジェク トの高さをピクセルで指定します。 行の高さを変更しても波形の垂直方向の表示域は変わり ませんが、 波形の高さの伸縮が変わり ます。

アナログとデジタルを切り替える と き、 行の高さはそれぞれに合った適切なデフォルトの高さに設定されます (デジタルの場合は 20、 アナログの場合は 100)。

ヒン ト : 行を区切るラインが表示されていない場合は、 [Waveform Options] ダイアログ ボッ クスのチェッ クボッ クスをオンにしてください。 オプシ ョ ン設定の変更方法については、 56 ページの 「[Waveform Options] ダイアログ ボッ クス」 を参照してください。 行を区切るラインを波形名の左および下にド ラ ッグして、 行の高さを変更するこ と もできます。

X-Ref Target - Figure 4-3

図 4‐3 : [Analog Settings] ダイアログ ボックス

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 53UG900 (v2015.2) 2015 年 6 月 24 日

Page 54: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

• [Y Range] : 波形エリ アに表示される数値の範囲を指定します。

° [Auto] : 表示されている時間の範囲の値が現在の範囲を超えたと きに、 表示範囲が拡大されます。

° [Fixed] : 時間範囲を一定にします。

- [Min] : 波形エリアの一番下に表示される値を指定します。

- [Max] : 波形エリ アの一番上に表示される値を指定します。

注記 : どちらの値も浮動小数点と して指定できますが、 波形オブジェク トの基数が整数の場合、 値は整数に切り捨てられます。

• [Interpolation Style] : データ ポイン ト を接続するラインの描画方法を指定します。

° [Linear] : 2 つのデータ ポイン ト間のラインを直線にします。

° [Hold] : 2 つのデータ ポイン トのうち、 左のポイン トから右のポイン トの X 軸に向かって水平ラインを描画し、 そのラインから右のポイン トに向かって別のラインを L 字型に描画します。

• [Off Scale] : 波形エリ アの Y 軸を超えた値をどのよ うに描画するかを指定します。

° [Hide] : 範囲外にある値を非表示にします。 波形エリ アの上下の範囲外にあるものは、 範囲内に戻るまでは非表示になり ます。

° [Clip] : 範囲外にある値は変更され、波形エリ アの上下境界線を超える と範囲内に戻るまでは水平ラインと して表示されます。

° [Overlap] : 波形エリ アの境界線を越えていて、 ほかの波形と重なっていても、 波形ビューの境界に達するまでは波形の値がどこにあっても波形が描画されます。

• [Horizontal Line] : 指定した値で水平方向のラインを描画するかど うか指定します。 このチェッ クボッ クスがオンの場合、 グ リ ッ ド ラインが指定した Y 軸の位置で描画されます (値が波形の Y 軸の範囲内にある場合)。

[Min] および [Max] の場合と同様、 Y 軸の値には浮動小数点値を指定できますが、 選択した波形オブジェク トの基数が整数の場合は、 整数値に切り捨てられます。

波形オブジェク トの命名

オブジェク ト名を変更および表示するオプシ ョ ンや、 名前の表示を変更するオプシ ョ ンがあ り ます。

オブジェク ト名の変更

デザイン波形オブジェ ク ト、 仕切り、 グループ、 仮想バスなどの波形コンフ ィギュレーシ ョ ンに含まれる波形オブジェク トの名前は変更できます。

1. [Name] 列でオブジェク ト名を選択します。

2. 右ク リ ッ ク し、 [Rename] をク リ ッ ク します。

[Rename] ダイアログ ボッ クスが開きます。

3. [Rename] ダイアログ ボッ クスに新しい名前を入力し、 [OK] をク リ ッ ク します。

注記 :波形コンフ ィギュレーシ ョ ンのデザイン波形オブジェク トの名前を変更しても、その下位の HDL オブジェク トの名前は変わり ません。

オブジェク ト名の表示変更

フル階層名 (long name)、 信号またはバス名のみ (short name)、 または各デザイン波形オブジェク トのカスタム名を表示できます。 オブジェク ト名は、 波形コンフ ィギュレーシ ョ ンの [Name] 列に表示されます。 名前が非表示になっている場合は、 次の操作を実行します。

1. 名前全体が表示されるよ うに [Name] 列の幅を調整します。

2. [Name] 列でスクロール バーを使用して名前を表示します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 54UG900 (v2015.2) 2015 年 6 月 24 日

Page 55: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

表示名を変更するには、 次の手順に従います。

1. 信号名またはバス名を 1 つ以上選択します。複数の信号を選択する場合は、Shift キーまたは Ctrl キーを押しながら ク リ ッ ク します。

2. [Name] をク リ ッ ク し、 次を選択します。

° [Long] : デザイン オブジェク トのフル階層名を表示します。

° [Short] : 信号名またはバス名のみを表示します。

° [Custom] : オブジェク トのカスタム名を表示します。 54 ページの 「オブジェク ト名の変更」 を参照してください。

ヒン ト : 波形オブジェク トの名前を変更する と、名前表示モードが [Custom] に変わり ます。元の表示モードに戻すに

は、 表示モードを [Long] または [Short] に戻す必要があ り ます。 [Long] および [Short] はデザイン波形オブジェク トに

対しての設定です。 仕切り、 グループ、 仮想バスなど、 その他のオブジェク トの場合は、 デフォルトの名前表示モー

ドは [Custom] です。 表示モードが [Long] および [Short] の場合は ID 文字列が表示されます。

バス ビッ ト順序の反転

波形コンフ ィギュレーシ ョ ンでバス ビッ ト順序を反転するこ とができます。 MSB から始まる (ビッグ エンディアン)と LSB から始まる ( リ トル デンディアン) のビッ ト順序を切り替えるこ とで、 バス値を表示できます。

ビッ ト順序を逆にするには、 次の手順に従います。

1. バスを選択します。

2. 右ク リ ッ ク し、 [Reverse Bit Order] をク リ ッ ク します。

これでバス ビッ トの順序が逆になり ます。[Reverse Bit Order] コマンドの横にチェッ ク マークが表示されるので、順序が反転しているこ とがわかり ます。

重要 : [Reverse Bit Order] コマン ドはバスに表示されている値に対してのみ実行できます。 このコマンドを実行しても、 バス波形オブジェク ト を拡張する と きにバスの下に表示されるバス エレ メン トの リ ス トの順序は逆にな り ません。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 55UG900 (v2015.2) 2015 年 6 月 24 日

Page 56: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

[Waveform Options] ダイアログ ボックス

[Waveforms Options] ボタン をク リ ッ クする と、 [Waveforms Options] ダイアログ ボッ クスが開きます (図 4-4)。

[General Waveform Options] には、 次のオプシ ョ ンがあ り ます。

• [Default Radix] : 新し く作成した波形オブジェク トに使用する数値形式を設定します。

• [Elide Setting] : 波形ビューに対して長すぎる信号名を短く します。

° [Left] : 長い信号名の左端を切り捨てます。

° [Right] : 長い信号名の右端を切り捨てます。

° [Middle] : 長い信号名の真ん中を切り捨て、 左右両方端を残します。

• [Draw Waveform Shadow] : 影付きの波形が作成されます。

• [Show signal indices] : このチェッ クボッ クスをオンにする と、波形オブジェク ト名の左に行番号を表示できます。行を区切る線をド ラ ッグする と、 波形オブジェク トの高さを変更できます。

• [Colors] ページでは、 波形ビュー内のアイテムの色を設定できます。

X-Ref Target - Figure 4-4

図 4‐4 : [Waveform Options] ダイアログ ボックス

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 56UG900 (v2015.2) 2015 年 6 月 24 日

Page 57: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

波形表示の制御 波形表示は、 次のよ うに制御できます。

• 波形ビューのサイ ドバーにあるズーム ボタン

• マウス ホイールを使用したズームの組み合わせ

• Vivado IDE Y 軸のズーム機能

• Vivado シ ミ ュレーシ ョ ンの X 軸のズーム機能マウス ボタンを使用したズーム表示については、 『Vivado DesignSuite ユーザー ガイ ド :Vivado IDE の使用』 (UG893) [参照 3] を参照してください。

注記 : ほかの Vivado Design Suite のグラフ ィ ッ ク ビューとは異なり、波形ビューの拡大/縮小は X (時間) 軸に適用されます。 このため、 ビューを拡大/縮小する範囲を指定するには、 ほかの Vivado Design Suite ビューでは [Zoom to Area]が使用されていますが、 波形ビューでは [Zoom Range X] が使用されます。

ズーム ボタンの使用

波形ビューのサイ ドバーにはズーム機能用のボタン があ り、 これを使用して波形コンフ ィギュレーシ ョ ンを適宜拡大/縮小表示させるこ とができます。

マウス ホイールを使用したズーム

波形をク リ ッ ク して Ctrl キーを押しながらマウス ホイールを使用する と、 オシロスコープのダイヤル操作のよ うに拡大/縮小するこ と もできます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 57UG900 (v2015.2) 2015 年 6 月 24 日

Page 58: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

アナログ波形の Y 軸方向のズーム

X 軸方向のズームでサポート されている機能に加え、 アナログ波形の場合は、 図 4-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 4-5

図 4‐5 : アナログ ズームのオプシ ョ ン

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 58UG900 (v2015.2) 2015 年 6 月 24 日

Page 59: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

波形の分類こ こでは、 波形内の情報をわかりやすくするためのオプシ ョ ンについて説明します。

信号およびオブジェク トのグループ

関連している波形オブジェク ト を見やすくするため、 グループにまとめるこ とができます。 グループに含まれているものは拡張表示させるこ とができます。 グループ自体は波形データを表示しませんが、 グループに含まれているものの表示/非表示を切り替えるこ とができます。 グループは追加、 変更、 削除できます。

グループを追加するには、 次の手順に従います。

1. 波形ビューで、 グループに追加する波形オブジェク ト を 1 つまたは複数選択します。

注記 : グループには、 仕切り、 仮想バス、 ほかのグループを含めるこ とができます。

2. [Edit] → [New Group] をク リ ッ クするか、 右ク リ ッ ク して [New Group] をク リ ッ ク します。

これで、 選択した波形オブジェク ト を含むグループが波形コンフ ィギュレーシ ョ ンに追加されます。

Tcl コンソールで 「add_wave_group」 と入力する と、 新しいグループが追加されます。

グループは、 グループ アイコン で表されます。 HDL オブジェク ト をド ラ ッグ アンド ド ロ ップして、 グループに信号やバスを追加するこ と もできます。

波形コンフ ィギュレーシ ョ ン ファイルを保存する と、新しいグループとそれに含まれる波形オブジェク ト も保存されます。

グループは、 次の方法で移動または削除できます。

• グループを移動するには、 [Name] 列のグループ名を別の位置にド ラ ッグ アンド ド ロ ップします。

• グループを削除するには、グループを選択して [Edit] → [Wave Objects] → [Ungroup] をク リ ッ クするか、グループを右ク リ ッ ク して [Ungroup] をク リ ッ ク します。グループに含まれていた波形オブジェク トは、波形コンフ ィギュレーシ ョ ンの一番上に配置されます。

グループ名も変更できます。 詳細は、 54 ページの 「オブジェク ト名の変更」 を参照してください。

注意 : Delete キーを押すと、 選択されているグループと、 それに含まれている波形オブジェク トが波形コンフ ィギュレーシ ョ ンから削除されます。

仕切りの使用

信号やオブジェク ト を見やすくするため、HDL オブジェク トの間に仕切り を作成するこ とができます。波形コンフ ィギュレーシ ョ ンに仕切り を追加するには次の手順に従います。

1. 波形ビューの [Name] 列で信号をク リ ッ ク します。 区切りはその信号の下に追加されます。

2. 右ク リ ッ ク し、 [New Divider] をク リ ッ ク します。

新しい仕切りマークは、 波形コンフ ィギュレーシ ョ ン ファ イルを保存したと きに保存されます。

Tcl コマンド : add_wave_divider

仕切りは、 次の方法で移動または削除できます。

• 仕切り を移動するには、 名前を別の位置にド ラ ッグ アンド ド ロ ップします。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 59UG900 (v2015.2) 2015 年 6 月 24 日

Page 60: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

• 仕切り を削除するには、 Delete キーを押すか、 または右ク リ ッ ク してポップアップ メニューから [Delete] をクリ ッ ク します。

仕切りの名前も変更できます。 詳細は、 54 ページの 「オブジェク ト名の変更」 を参照してください。

仮想バスの定義

論理スカラーおよびベク ターをグループにま とめて追加できる仮想バスを波形コンフ ィギュレーシ ョ ンに定義するこ とができます。

仮想バスはバス波形を表示します。仮想バスの下に垂直方向に追加されたスカラーおよびアレイの値を取り込み、 それらの値を 1 次元ベクターにフラ ッ トにして、 バス波形は表示されます。

仮想バスを追加するには、 次の手順に従います。

1. 波形コンフ ィギュレーシ ョ ンで、 仮想バスに追加する波形オブジェク ト を 1 つまたは複数選択します。

2. 右ク リ ッ ク して [New Virtual Bus] をク リ ッ ク します。

仮想バスは、 仮想バス アイコン で表されます。

Tcl コマンド :add_wave_virtual_bus

信号名やバス名をド ラ ッグ アンド ド ロ ップする と、 仮想バスに論理スカラーおよびアレイを移動できます。

波形コンフ ィギュレーシ ョ ン ファ イルを保存する と、 新しい仮想バス とその中に含まれるものが保存されます。 また、 仮想バスの名前は、 波形の別位置にド ラ ッグ アンド ド ロ ップして移動するこ と もできます。

仮想バスの名前を変更する場合は、 54 ページの 「オブジェク ト名の変更」 を参照してください。

仮想バスを削除し、 その中に含まれるものをグループ解除するには、 仮想バスを選択して右ク リ ッ ク し、 [Ungroup]をク リ ッ ク します。

注意 : Delete キーを押すと、仮想バスと、それに含まれている HDL オブジェク トが波形コンフ ィギュレーシ ョ ンから削除されます。

波形の解析こ こでは、 波形内のデータを解析する機能について説明します。

カーソルの使用

カーソルは一時的なタイム マーカーで、 2 つの波形エッジ間の時間を計測するため、頻繁に移動させるこ とができます。

ヒン ト : 波形コンフ ィギュレーシ ョ ン ファ イル (WCFG) には、カーソル位置は記録されません。複数の計測の時間軸を設定する場合やシ ミ ュレーシ ョ ンでの重要なイベン ト を印す場合など、波形コンフ ィギュレーシ ョ ン ファ イルに保存するには、波形ビューにマーカーを追加してください。詳細は、61 ページの「マーカーの使用」を参照してください。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 60UG900 (v2015.2) 2015 年 6 月 24 日

Page 61: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

メイン  カーソルと  2 つ目のカーソル

波形ビューを 1 回ク リ ッ クする と、 メ イン カーソルが配置されます。

2 つ目のカーソルを配置するには、 Ctrl キーを押しながら ク リ ッ ク し、 マウスを左または右にド ラ ッグします。 カーソルの上に位置を示すフラグが表示されます。 または、 Shift キーを押したまま波形のどこかをク リ ッ ク します。

2 つ目のカーソルが配置されていないと、2 つ目のカーソルのつも りで配置したものがメ イン カーソルとな り、ク リ ック した位置にメ イン カーソルが配置されます。

注記 : 2 つ目のカーソルの位置を保持しながら メ イン カーソルの位置を変更するには、Shift キーを押しながら ク リ ック します。 2 つ目のカーソルをド ラ ッグして配置する場合、 小間隔以上ド ラ ッグしないと 2 つ目のカーソルは表示されません。

カーソルの移動

カーソルを移動するには、 ポインターが手のひらのマークになるまでマウスを動かし、 ク リ ッ ク して次の位置までカーソルをド ラ ッグします。

カーソルをド ラ ッグする と き、 [Snap to Transtion] がオンになっている と (デフォルト )、 白抜きの丸、 または中が塗りつぶされた丸が表示されます。

• 白抜きの丸 は、 選択した信号の波形が遷移中であるこ とを示します。

• 中が塗りつぶされた丸 は、 マウス位置またはマーカー位置でカーソルがロ ッ ク されているこ とを示します。

カーソル、マーカー、フロート しているルーラー以外の場所をク リ ッ クする と、2 つ目のカーソルが非表示になり ます。

次または前の遷移の検索

波形ビューのサイ ドバーにあるボタンを使用して、 メ イン カーソルを、選択されている波形の次の遷移または前の遷移に移動させるこ とができます。

メ イン カーソルを波形の次または前の遷移に移動するには、 次を実行します。

1. 波形の波形オブジェク ト名をク リ ッ ク してアクティブにしておきます。

これで波形オブジェク トが選択され、 オブジェク トの波形が通常よ り も太いラインで表示されます。

2. サイ ドバーの [Next Transition] または [Previous Transition] ボタン をク リ ッ クするか、 キーボードの右矢印または左矢印キーを使用して、 次または前の遷移に移動します。

ヒン ト : 複数の波形オブジェク ト を一緒に選択しておく と、 それらをま とめて一番近い遷移に移動させるこ とができます。

マーカーの使用

波形内の重要イベン ト を消えないよ うにしっかり とマーク しておく必要がある場合はマーカーを使用します。 マーカーを使用する と、 マーカーの付いたイベン トに関連した時間を計測できます。

マーカーは、 次のよ うに追加、 移動、 削除できます。

• メ イン カーソルの位置に波形コンフ ィギュレーシ ョ ンにマーカーを追加します。

a. 波形ビューの時間または遷移をク リ ッ ク して、 マーカーを追加する時間の箇所にメ イン カーソルを置きます。

b. 右ク リ ッ ク して [Maker] → [Add Marker] を選択します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 61UG900 (v2015.2) 2015 年 6 月 24 日

Page 62: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 4 章 : シミ ュレーシ ョ ン波形の解析

カーソル位置にマーカーが配置されます。 マーカーがその位置に既にある場合は、若干ずらした位置に配置されます。 マーカーの時間が上部に表示されます。

新しい波形マーカーを作成するには、 次の Tcl コマンドを使用します。

add_wave_marker <-filename> <-line_number>

• マーカーを波形ビューの別の位置に移動するには、ド ラ ッグ アンド ド ロ ップします。マーカー ラベル (マーカー上部またはマーカー ライン) をク リ ッ ク してド ラ ッグします。

° ド ラ ッグ シンボル は、 マーカーが移動可能であるこ とを示します。 マーカーをド ラ ッグする際、 [Snapto Transtion] がオンになっている と (デフォルト )、白抜きの丸または中が塗りつぶされた丸が表示されます。

° 中が塗りつぶされている丸 は、 選択した信号の波形の遷移上、 または別のマーカー上であるこ とを示します。

° マーカーの場合は、 丸は白く塗りつぶされています。

° 白抜きの丸 は、 マーカーがマウスの下の波形の遷移に、 またはマーカーにロ ッ ク されているこ とを示します。

新しい位置にマーカーをド ロ ップするには、 マウスのボタンを放します。

• 1 つのコマンドでマーカーを 1 つ、 またはすべて削除できます。 マーカーを右ク リ ッ ク して、 次のいずれかの操作を実行します。

° マーカーを 1 つ削除するには、 ポップアップ メニューから [Delete Marker] をク リ ッ ク します。

° マーカーをすべて削除するには、 ポップアップ メニューから [Delete All Markers] をク リ ッ ク します。

注記 : また、 Delete キーを使用して選択したマーカーを削除するこ と もできます。

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

フロート  ルーラーの使用

波形ビューの上部にある標準ルーラーの絶対シ ミ ュレーシ ョ ン時間以外の時間ベースを使用して時間を計測するには、 フロート ルーラーを使用する と便利です。

フロート ルーラーの表示/非表示は切り替えるこ とができ、 波形ビューで垂直方向にド ラ ッグして位置に変更することができます。 このルーラーの時間ベース (時間 0) は 2 番目のカーソルで、 このカーソルがない場合は、 選択されたマーカーになり ます。

フロート ルーラー ボタン およびフロート ルーラーは、 2 番目のカーソルまたはたマーカーがある場合にのみ表示されます。

1. ルーラーの表示/非表示を切り替えるには、 次のいずれかを実行します。

° 2 番目のカーソルを配置

° マーカーを選択

2. [Floating Ruler] ボタンをク リ ッ ク します。

この操作は 初に 1 回だけ実行し、繰り返す必要はあ り ません。フロート ルーラーは 2 番目のカーソルが置くたび、 またはマーカーが選択されるたびに表示されます。

ルーラーを非表示にするには、 このコマンドをも う 1 度ク リ ッ ク します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 62UG900 (v2015.2) 2015 年 6 月 24 日

Page 63: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

第 5章

Vivado シミ ュレータを使用したデザインのデバッグ

概要Vivado® シ ミ ュレータには次の機能があ り ます。

• ソース コードを確認

• ブレークポイン ト を設定し、 ブレークポイン トに達するまでシ ミ ュレーシ ョ ンを実行

• コード セクシ ョ ンをステップオーバー

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

本章では、 デバッグ方法のほか、 デバッグ プロセスで有効な Tcl コマンドについても説明します。 また、 サードパーティ シ ミ ュレータを使用したデバッグのフローについても説明します。

ソース レベルでのデバッグ予期しない動作をデザインで検出するため、 HDL ソース コードをデバッグできます。 問題の原因を見極めるため、ソース コードをコン ト ロールしながら実行する方法でデバッグを行います。デバッグ ス ト ラテジは次のとおりです。

• コードを 1 行ずつ実行 : 任意開発段階において、 [Step] コマンドを使用して、 デザインが予期動作をしていることを検証するため、 1 度に 1 行ずつ HDL ソース コードをデバッグします。 1 つの行でデバッグを終えたら、 次の行で再び [Step] コマンドを実行して、解析を続けていきます。詳細は、「シ ミ ュレーシ ョ ンのステップ実行」 を参照してください。

• HDL コードの特定行にブレークポイン ト を設定し、ブレークポイン トに達するまでシ ミ ュレーシ ョ ンを実行 : 大きなデザインの場合、HDL ソース コードを 1 行ごとに停止する方法では、時間がかかってしまいます。HDL ソース コードの任意の位置にブレークポイン ト を設定し、テス トベンチの 初から、 または現在点から、シ ミ ュレーシ ョ ンを実行し、各ブレークポイン トで停止するよ うにします。停止後にシ ミ ュレーシ ョ ンを進めるには、[Step]、[Run All]、または [Run For] コマンドを使用します。詳細は、次の「ブレークポイン トの使用」を参照してください。

• 条件を設定します。 ツールが各条件を評価し、 その条件が当てはまる場合は、 Tcl コマンドを実行します。 次のTcl コマンドを使用します。

add_condition <condition> <instruction>

詳細は、 65 ページの 「条件の追加」 を参照してください。

シミ ュレーシ ョ ンのステップ実行

デザインが予期動作をしているこ とを検証するため、 [Step] コマンドを使用し、1 度に 1 行ずつ HDL ソース コードを実行するこ とができます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 63UG900 (v2015.2) 2015 年 6 月 24 日

Page 64: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

このコマンドが実行されているコード行はハイライ ト され、 矢印が表示されます。

また、 ブレークポイン ト を作成して、 ステップ実行中に停止箇所を追加するこ と もできます。 シ ミ ュレータでのデバッグ ス ト ラテジについては、 「ブレークポイン トの使用」 を参照してください。

1. シ ミ ュレーシ ョ ンでステップ実行するには、 次の手順に従ってください。

° 現在の実行時間から [Run] → [Step] をク リ ッ クするか、 [Step] ボタンをク リ ッ ク します。

上位デザイン ユニッ トに関連付けられている HDL が波形ビューに新し く表示されます。

° 開始点 (0ns) からシ ミ ュレーシ ョ ンを再開します。テス トベンチの冒頭に時間を リセッ トするには、 [Restart]コマンドを使用します。 詳細は第 3 章 「Vivado シ ミ ュレータについて」 を参照してください。

2. 波形コンフ ィギュレーシ ョ ン ビューで、波形を右ク リ ッ クするか、HDL のタブをク リ ッ ク して、[Tile Horizontally]をク リ ッ ク し、 波形と HDL コードを同時に表示します。

3. デバッグが終了するまで、 [Step] を繰り返します。

コマンドが 1 行ずつ実行されていくので、 それに従って矢印がコードの下方に移動していきます。 シ ミ ュレータが別のファイルの行を実行する場合は、 そのファイルが開き、同じよ うにステップが実行されている行に矢印が表示されます。 複数のファ イルをシ ミ ュレート している場合は、 一般的には、 [Step] コマンドを実行する と きに、 そのファイルが開きます。 Tcl コンソールにも step コマンドの進捗状況が表示されます。

ブレークポイン トの使用

ブレークポイン トは、 ソース コード内で、ユーザーが指定できる停止地点で、デザインをデバッグする と きに使用できます。

ヒン ト : ブレークポイン トは、 [Step] コマンドで 1 行ずつデバッグしていく と時間がかかりすぎてしま う よ う な大規模なデザインをデバッグする場合に使用する と、 特に便利です。

シ ミ ュレータで HDL ソース コードにブレークポイン ト を設定し、 そのブレークポイン トに達するまでコードを連続して実行するこ とができます。

注記 : ブレークポイン トは実行可能なコードにのみ設定できます。 実行不可能なコードの行にブレークポイン ト を設定しても、 ブレークポイン トは追加されません。

ワークスペース (GUI) でブレークポイン ト を設定する方法

1. ブレークポイン ト を設定するには、 シ ミ ュレーシ ョ ンを実行します。

2. ソース ファ イルを表示して、ブレークポイン ト を設定したい行の左側にある白抜きの丸をク リ ッ ク します。 赤い点は、 ブレークポイン トが正し く設定されたこ とを示します。

この後、 シ ミ ュレーシ ョ ン ブレークポイン ト ボタンがコード行の横に表示されるよ うになり ます。

Tcl コンソールでブレークポイン ト を設定する方法

1. 次の Tcl コマンドを実行します。

add_bp <file_name> <line_number>

このコマンドによ り、 <file_name> の <line_number> にブレークポイン トが追加されます。 コマンドの使用方法については、 Vivado Design Suite のヘルプ (-help) または 『Vivado Design Suite Tcl コマン ド リ フ ァ レンス ガイ ド』(UG835) [参照 6] を参照してください。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 64UG900 (v2015.2) 2015 年 6 月 24 日

Page 65: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

ブレークポイン ト を使用してデザインをデバッグする方法

1. HDL ソース ファ イルを開きます。

2. HDL ソース ファ イルの実行可能な行にブレークポイン ト を設定します。

3. 手順 1 および 2 を繰り返し、 ブレークポイン ト をすべて設定します。

4. 次のよ うにシ ミ ュレーシ ョ ンを実行します。

° 初から実行する場合は、 [Run] → [Restart] をク リ ッ ク します。

° [Run] → [Run All] または [Run] → [Run for Specified Time] コマンドを使用します。

ブレークポイン トに到達するまでシ ミ ュレーシ ョ ンが実行されて、 停止します。

HDL ソース ファ イルに矢印が表示され、 ブレークポイン トの停止ポイン トが示されます。

5. 手順 4 を繰り返して、 結果に納得がいく まで、 シ ミ ュレーシ ョ ンをブレークポイン ト ごとに進めていきます。

HDL ソース ファ イルに設定した各ブレークポイン トでシ ミ ュレーシ ョ ンを停止させながら、 シ ミ ュレーシ ョ ンを実行します。

デザインのデバッグ中に、 [Run] → [Step] コマンドを実行して 1 行ごとにコードを検証するこ とで、 さ らに詳細にデザインをデバッグするこ と もできます。

HDL ソース コードから 1 つのブレークポイン ト またはすべてのブレークポイン ト を削除するこ とができます。

1 つのブレークポイン ト を削除するには、 [Breakpoint] ボタンをク リ ッ ク します。

すべてのブレークポイン ト を削除するには、 [Run] → [Breakpoint] → [Delete All Breakpoints] をク リ ッ ク します。または [Delete All Breakpoints] ボタンをク リ ッ ク します。

すべてのブレークポイン ト を削除するには、

• 「 remove_bps -all」 と入力します。

指定したブレークポイン ト オブジェク トの リ ス トでブレークポイン ト情報を表示させるには

• 「 report_bps」 と入力します。

条件の追加

ブレーク ポイン ト を条件に基づいて追加し、 診断メ ッセージを表示させるには、 次のコマンドを使用します。

add_condition <condition> <message>

Vivado IDE BFT サンプル デザインを使用し、 wbClk 信号と reset の両方がアクティブ High のと きに停止するよ うに、シ ミ ュレーシ ョ ン開始時に次のコマンドを実行して、 診断メ ッセージを出力し、 リセッ トが 1 になり、 wbClk が 1 になったと きにシ ミ ュレーシ ョ ンを停止します。

add_condition {reset == 1 && wbClk == 1} {puts "Reset went to high"; stop}

BFT サンプル デザインでは、 追加された条件によ り、 条件が満たされたと きにシ ミ ュレーシ ョ ンが 5ns 停止し、 リセッ トが High になったこ とを知らせる メ ッセージがコンソールに表示されます。 シ ミ ュレータは、 次のステップまたは run コマンドがシ ミ ュレーシ ョ ンを再開するまで待機します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 65UG900 (v2015.2) 2015 年 6 月 24 日

Page 66: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

シミ ュレーシ ョ ンの一時停止

シ ミ ュレーシ ョ ン実行中に一時停止するには、 [Break] コマンドを使用します。 これによ り、 シ ミ ュレーシ ョ ン セッシ ョ ンは開いたままになり ます。

シ ミ ュレーシ ョ ンを一時停止するには、 [Simulation] → [Break] をク リ ッ クするか、 [Break] ボタンをク リ ッ ク します。

シ ミ ュレータは次の実行可能な HDL 行で停止します。 シ ミ ュレーシ ョ ンの停止した行がテキス ト エディ ターで表示されます。

注記 :デザインを-debug <kind> オプシ ョ ンでコンパイルした場合も、 この動作になり ます。

[Run All]、 [Run]、 [Step] コマン ドを使用する と、 シ ミ ュレーシ ョ ンをいつでも再開できます。 詳細は、 63 ページの「シ ミ ュレーシ ョ ンのステップ実行」 を参照してください。

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

Force コマンドの使用

Vivado シ ミ ュレータでは、 信号、 ワイヤ、 レジスタを、 指定時間に、 または指定期間中に、 特定値に設定するこ とができます。 また、 経時的に変更するよ う、 オブジェク トに値を強制設定するこ と もできます。

ヒン ト : 「force」 とは、 ある信号に対し HDL で定義された動作を上書きさせる動作である と同時に、 Tcl の第一級オブジェク トであ り、 Tcl 変数で保持できるものです。

HDL デザインで定義されている信号の動作を上書きするため、 HDL 信号に force コマンドを使用します。 たとえば、信号の動作を次の目的で上書きするこ とができます。

• HDL テス トベンチ自体が駆動していないテス トベンチ信号にスティ ミ ュラスを供給するため

• デバッグ中に一時的に不正値を正すため (問題を引き続き分析できるよ うにするため)

使用可能な force コマンドは、 次のとおりです。

• 「[Force Constant] オプシ ョ ン」

• 「[Force Clock] オプシ ョ ン」

• 「[Remove Force] オプシ ョ ン」

重要 : restart コマンドを実行する と、remove_force コマンドで消去されていない force 設定がすべて保持されます。 シ ミ ュレーシ ョ ンを再び実行する と、 保存されている force 設定が、 前回のシ ミ ュレーシ ョ ン実行と同じ絶対シミ ュレーシ ョ ン時間で行われます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 66UG900 (v2015.2) 2015 年 6 月 24 日

Page 67: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

図 5-1は、 add_force コマンドを次のよ うに実行したと きに、 その機能がどのよ うに適用されるかを示しています。

add_force mySig {0 t1} {1 t2} {0 t3} {1 t4} {0 t5} -repeat_every tr -cancel_after tc

さ らに詳細を表示するには、 Tcl コンソールに次を入力します。

add_force -help

[Force Constant] オプシ ョ ン

[Force Constant] オプシ ョ ンを使用する と、 信号を定数値に固定し、 HDL コード内で割り当てられた値や前回適用された別の定数、 または [Force Clock] を上書きするこ とができます。

[Force Constant] および [Force Clock] は、[Objects] ビューまたは波形ビューで右ク リ ッ ク して表示されるオプシ ョ ンです (図 5-2を参照)。 あるいは、 テキス ト エディ ターでソース コードを開いて使用できるオプシ ョ ンです。

ヒン ト : [Objects]、 [Sources]、 [Scopes] ビューでアイテムをダブルク リ ッ クする と、 テキス ト エディ ターが開きます。テキス ト エディ ターの詳細は、 『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893) [参照 3] を参照してください。

X-Ref Target - Figure 5-1

図 5‐1 : ‐add_force オプシ ョ ンを使用した結果

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 67UG900 (v2015.2) 2015 年 6 月 24 日

Page 68: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

[Force Constant] をク リ ッ クする と、[Force Constant] ダイアログ ボッ クス (図 5-3) が開き、関連する値を入力できます。

[Force Constant] ダイアログ ボッ クスでは、 次のこ とが設定できます。

• [Signal name] : デフォルトの信号名 (選択したオブジェク トのフル パス) が表示されます。

• [Value radix] : 選択した信号の現在の基数設定が表示されます。 サポート されている基数タイプ (2 進数、 16 進数、 符号なしの10 進数、 符号つきの  10 進数、 8 進数、 ASCII) の中から、 1 つ選択できます。 GUI には、 この基数設定に基づいた値しか入力できなくな り ます。 たとえば、 [Binary] を選択する と、 0 と 1 以外の数値は入力できません。

• [Force value] : 定義済みの基数値を使用して定数値を指定します。 基数についての詳細は、 50 ページの 「基数」および51 ページの 「基数およびアナログ波形の使用」 を参照してください。

• [Starting at 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

X-Ref Target - Figure 5-2

図 5‐2 : Force 関連のオプシ ョ ン

X-Ref Target - Figure 5-3

図 5‐3 : [Force Constant] ダイアログ ボックス

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 68UG900 (v2015.2) 2015 年 6 月 24 日

Page 69: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

[Force Clock] オプシ ョ ン

[Force Clock] コマンドを使用する と、 ク ロ ッ ク信号と して、 指定時間内を 2 つのステート間を指定レートで ト グルする値に、信号を割り当てるこ とができます。 [Objects] ウ ィンド ウのメニューから [Force Clock] オプシ ョ ンをク リ ッ クする と、 [Force Clock] ダイアログ ボッ クス (図 5-4) が開きます。

[Force Clock] ダイアログ ボッ クスのオプシ ョ ンは、 次のとおりです。

• [Signal name] : デフォルトの信号名 ([Object] ビューまたは波形で選択したアイテムのフル パス) が表示されます。

ヒン ト : 切り替わる値を定義するため、 [Force Clock] コマンドは、 ク ロ ッ ク信号だけでなく任意の信号に適用することができます。

• [Value radix] : 選択した信号の現在の基数設定が表示されます。 ド ロ ップダウン メニューに表示される、[Binary]、 [Hexadecimal]、 [Unsigned Decimal]、 [Signed Decimal]、 [Octal]、 [ASCII] の中から、 基数タイプを 1 つ選択します。

• [Leading edge value] : ク ロ ッ ク パターンの 初のエッジを指定します。 この値には [Value radix] で定義した基数が使用されます。

• [Trailing edge value] : ク ロ ッ ク パターンの 2 つ目のエッジを指定します。 この値には [Value radix] で定義した基数が使用されます。

• [Starting at time offset] : 現在のシ ミ ュレーシ ョ ンから指定した時間後 force コマンドを開始します。 デフォルトの開始時間は 0 です。 時間は、 10 や 10 ns のよ うに、 文字列で指定できます。 単位を付けずに数字だけ入力する場合、 Vivado シ ミ ュレータではデフォルトのユーザー単位が使用されます。

• [Cancel after time offset] : 現在のシ ミ ュレーシ ョ ン時間から指定した時間後 force コマンドをキャンセルします。時間は、 10 や 10 ns のよ うに、 文字列で指定できます。 単位を付けずに数字だけ入力する場合、 Vivado シ ミ ュレータではデフォルトのシ ミ ュレーシ ョ ン時間単位が使用されます。

• [Duty cycle (%)] : ク ロ ッ ク パルスがアクティブ ステートにある時間の割合を % で指定します。 使用できる値は 0 から 100 で、 デフォルト値は 50 です。

• [Period] : 時間の値と して定義されたクロ ッ ク パルスの長さを指定します。 時間は、 10 や 10 ns のよ うに、 文字列で指定できます。

X-Ref Target - Figure 5-4

図 5‐4 : [Force Clock] ダイアログ ボックス 

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 69UG900 (v2015.2) 2015 年 6 月 24 日

Page 70: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

注記 :基数についての詳細は、 50 ページの 「基数」 および51 ページの 「基数およびアナログ波形の使用」 を参照してください。

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>

バッチ モードでの Force コマンドの使用

次のコード例は、 add_force  コマンドを使用して、 信号を指定値に設定する方法を示しています。 簡単な Verilog回路が提供されています。 初の例は、 add_force コマンドをインタラ クティブに使用する例を、 2 番目はスク リプ ト を使用した例を示しています。

例 1 : Add 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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 70UG900 (v2015.2) 2015 年 6 月 24 日

Page 71: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

コマンド プロンプ トに次のよ うに入力します。

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].を参照してください。

例 2 : remove_forces を使用した add_force のスクリプ ト作成 

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 71UG900 (v2015.2) 2015 年 6 月 24 日

Page 72: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

initialbegin updown = 1; clk = 0;end

initial #500 $finish;

initial $monitor("out1 = %b\n", out1);endmodule

コマンド例

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 の値が変更していないこ とを確認します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 72UG900 (v2015.2) 2015 年 6 月 24 日

Page 73: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : 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 (スカラー、 ベクター、 配列) 型の入力、 出力、 入出力ポート

注記 : タイ ミ ング シ ミ ュレーシ ョ ン用の VHDL ネッ ト リ ス トは、 Vivado Design Suite で生成されませんので、 VHDLソースは RTL レベルのコード専用で、 ネッ ト リ ス ト シ ミ ュレーシ ョ ンには使用できません。

RTL レベルのシ ミ ュレーシ ョ ンの場合、 ブロ ッ ク レベルのポートのみが生成され、 内部信号は生成されません。

サードパーティ  シ ミ ュレータを使用した消費電力解析については、第 8 章 「サードパーティ シ ミ ュレータの使用」、121 ページの 「消費電力解析用の 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

SAIF コマンドの例

SAIF を記録するには、 次のコマンドを使用します。

• スコープ内のすべての信号 : /tb: log_saif /tb/*

• スコープ内のすべてのポート : /tb/UUT

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 73UG900 (v2015.2) 2015 年 6 月 24 日

Page 74: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

• 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

Tcl コマンド  report_drivers の使用Tcl コマンドの report_drivers を使用する と、どの信号が HDL オブジェク トの値を駆動しているかを判断できます。コマンド構文は、 次のよ うになり ます。

report_drivers <hdl_object>

Tcl コンソールにはド ライバーが表示され、wire または signal 型の HDL オブジェク トへの代入の右側には現在の駆動値が表示されます。

また、 [Objects] ビューまたは波形ビューのコンテキス ト   メニュー、 あるいはテキス ト  エディ ターから report_drivers  コマンドを呼び出すこ と もできます。 コンテキス ト メニューを開くには (次の図を参照)、 信号を右ク リ ッ ク して、 [Report Drivers] を選択します。 結果は Tcl コンソールに表示されます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 74UG900 (v2015.2) 2015 年 6 月 24 日

Page 75: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

VCD 機能の使用シ ミ ュレーシ ョ ン出力を取得するには、 Value Change Dump (VCD) ファ イルを使用します。 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

詳細は、 付録 B の 「Verilog 言語サポートの例外」 を参照してください。

X-Ref Target - Figure 5-5

図 5‐5 : コンテキスト  メニューの [Report Drivers] コマンド  オプシ ョ ン

表 5‐1 : VCD の Tcl コマンド

Tcl コマンド 説明

open_vcd シ ミ ュレーシ ョ ン出力を取り込むための VCD ファ イルを開きます。 この Tcl コマンドは、 $dumpfile Verilog システム タス クのビヘイビアーをモデル化しています。

checkpoint_vcd $dumpall Verilog システム タスクのビヘイビアーをモデル化しています。

start_vcd $dumpon Verilog システム タスクのビヘイビアーをモデル化しています。

log_vcd 指定した HDL オブジェク トの VCD ファ イルを記録します。 この Tcl コマンドは、$dumpvars Verilog システム タスクのビヘイビアーをモデル化しています。

flush_vcd $dumpflush Verilog システム タスクのビヘイビアーをモデル化しています。

limit_vcd $dumplimit Verilog システム タスクのビヘイビアーをモデル化しています。

stop_vcd $dumpoff Verilog システム タスクのビヘイビアーをモデル化しています。

close_vcd VCD の生成を閉じます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 75UG900 (v2015.2) 2015 年 6 月 24 日

Page 76: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

VCD データを使用して、 シ ミ ュレーシ ョ ン エラーをデバッグするためにシ ミ ュレータの出力を検証するこ とができます。

Tcl コマンド  log_wave の使用log_wave コマンドを実行し、 Vivado シ ミ ュレータの波形ビューアーで指定した HDL オブジェク ト を表示するために、 シ ミ ュレーシ ョ ン出力を記録するこ とができます。 add_wave とは異なり、 log_wave コマンドでは波形ビューアー (波形コンフ ィギュレーシ ョ ン) に波形オブジェ ク ト が追加されず、 Vivado シ ミ ュレータの波形データベース(wdb) への出力が記録されるよ うになるだけです。

ヒン ト : オブジェク ト挿入以前のオブジェク ト値を表示させるには、シ ミ ュレーシ ョ ンを再開始する必要があ り ます。シ ミ ュレーシ ョ ンの再開を避けるには、デザインの表示可能な HDL オブジェク トすべての値を取り込むため、シ ミ ュレーシ ョ ン run を開始する と きに、 log_wave -r / Tcl コマンドを実行します。

構文 :

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) ファ イルに保存されます。 第 4 章 「シ ミ ュレーシ ョ ン波形の解析」 を参照して ください。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 76UG900 (v2015.2) 2015 年 6 月 24 日

Page 77: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

[Objects] ビュー、 波形ビュー、 テキストエディ ターでの信号のクロスプローブVivado シ ミ ュレータでは、 [Objects] ビュー、 波形ビュー、 テキス ト エディ ターにある信号に対し、 ク ロスプローブを実行するこ とができます。

[Objects] ビューで、 波形ビューにも信号が表示されているかど うか確認します (またはその逆のチェッ ク も可能)。 次の図に示すコンテキス ト ビューを開くには、 信号を右ク リ ッ ク します。 [Show in Wave Window] をク リ ッ クするか、信号がまだ波形ウ ィンド ウに表示されていない場合は [Add to Wave Window] をク リ ッ ク します。

X-Ref Target - Figure 5-6

図 5‐6 : [Objects] ビューのコンテキスト   メニュー オプシ ョ ン

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 77UG900 (v2015.2) 2015 年 6 月 24 日

Page 78: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 5 章 : Vivado シミ ュレータを使用したデザインのデバッグ

テキス ト エディ ターで信号をクロスプローブするこ と もできます。次の図に示すコンテキス ト ビューを開くには、信号を右ク リ ッ ク します。 [Add to Wave Window]、 [Show in Waveform]、 または [Show in Objects] をク リ ッ ク します。 波形ビューまたは [Objects] ビューで信号がハイライ ト されます。

X-Ref Target - Figure 5-7

図 5‐7 : テキスト  エディ ターのコンテキスト   メニュー

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 78UG900 (v2015.2) 2015 年 6 月 24 日

Page 79: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 6 章 : 特殊なケースの処理

第 6章

特殊なケースの処理

グローバル リセッ ト と ト ライステートの使用ザイ リ ンクス デバイスには、 デバイスのすべてのレジスタに接続する、 専用の配線および回路があ り ます。

グローバル セッ トおよびリセッ ト  ネッ ト

コンフ ィギュレーシ ョ ン中には、 専用グローバル セッ ト / リセッ ト (GSR) 信号がアサート されます。 GSR 信号はデバイスのコンフ ィギュレーシ ョ ンが終了する とディアサート されます。すべてのフ リ ップフロ ップおよびラ ッチはこのリセッ ト を受け、 レジスタがどのよ うに定義されているかによって、 セッ ト またはリセッ トのどちらかになり ます。

推奨 : コンフ ィギュレーシ ョ ン後に GSR ネッ トにアクセスはできますが、 手動リセッ トの代わりに GSR 回路を使用するのは避けて ください。 これは FPGA デバイスが、 システム リ セッ ト のよ う なファンアウ トの大きい信号に対して、 高速バッ クボーン配線を提供しているためです。 このバッ クボーン配線は専用 GSR 回路よ り も高速で、 GSR 信号を転送する専用グローバル配線よ り も簡単に解析ができます。

合成後およびインプ リ メ ンテーシ ョ ン後のシ ミ ュレーシ ョ ンでは、 GSR 信号は自動的に 初の 100ns 間アサート され、 コンフ ィギュレーシ ョ ン後に発生する リセッ ト をシ ミ ュレート します。

オプシ ョ ンで、 GSR パルスを合成前の論理シ ミ ュレーシ ョ ンで供給できますが、 すべてのレジスタを リセッ トするローカル リセッ トがデザインに含まれている場合は必要あ り ません。

ヒン ト : テス トベンチを作成する と き、GSR パルスは合成後およびインプリ メンテーシ ョ ン後のシ ミ ュレーシ ョ ンで自動的に発生します。 これによ り、 すべてのレジスタがシ ミ ュレーシ ョ ンの 初の 100ns 間リセッ ト状態に保持されます。

グローバル ト ライステート  ネッ ト

専用グローバル GSR だけでなく、 専用グローバル ト ラ イステート (GTS) ネッ ト を使用してコンフ ィギュレーシ ョ ンモード中に出力バッファーをハイ インピーダンス ステートに設定するこ と もできます。 標準操作中に汎用出力が標準、 ト ラ イステート、 双方向出力であるかによって、 汎用出力への影響は変わり ます。 このため、 FPGA がコンフ ィギュレーシ ョ ンされたと きに、 出力が間違ってほかのデバイスを駆動するこ とはあ り ません。

シ ミ ュレーシ ョ ンでは、 GTS 信号は通常駆動されません。 GTS を駆動する回路は、 合成後およびインプ リ メ ンテーシ ョ ン後のシ ミ ュレーシ ョ ンで使用でき、合成前の論理シ ミ ュレーシ ョ ンにはオプシ ョ ンで追加できますが、GTS パルス幅はデフォルトで 0 に設定されます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 79UG900 (v2015.2) 2015 年 6 月 24 日

Page 80: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 6 章 : 特殊なケースの処理

グローバル ト ライステートおよびグローバル セッ ト /リセッ ト信号の使用

図 6-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 をインスタンシエート し、 Reset on Configuration (ROC) のアサート パルス幅を 90ns に変更します。

GLBL_VHD inst:GLBL_VHD generic map (ROC_WIDTH => 90000);

デルタ  サイクルとレース コンディシ ョ ン本書では、イベン ト ベースのシ ミ ュレータについて説明します。イベン ト シ ミ ュレータでは、任意のシ ミ ュレーシ ョン時間に複数のイベン ト を処理できます。 これらのイベン トが処理中のと き、 シ ミ ュレータはシ ミ ュレーシ ョ ン時間を進めるこ とはできません。 このイベン ト処理時間は、 一般的に 「デルタ サイ クル」 と呼ばれます。 任意のシ ミ ュレーシ ョ ン時間ステップには複数のデルタ サイクルを含めるこ とができます。

X-Ref Target - Figure 6-1

図 6‐1 : ビルト イン  FPGA 初期化回路図

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 80UG900 (v2015.2) 2015 年 6 月 24 日

Page 81: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 6 章 : 特殊なケースの処理

シ ミ ュレーシ ョ ン時間は、 そのシ ミ ュレーシ ョ ン時間で処理する ト ランザクシ ョ ンがない場合にのみ、進めるこ とができます。 このため、 イベン トが時間ステップ内でスケジュールされるタイ ミ ングによって、 シ ミ ュレータで予期せぬ結果が出る可能性があ り ます。 次の 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;

ほとんどのイベン ト ベース シ ミ ュレータは、 デルタ サイクルを表示できるよ うになっています。 シ ミ ュレーシ ョ ン問題をデバッグする場合はこの表示を利用してください。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 81UG900 (v2015.2) 2015 年 6 月 24 日

Page 82: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 6 章 : 特殊なケースの処理

ASYNC_REG 制約の使用ASYNC_REG 制約には、 次のよ うな機能があ り ます。

• デザインの非同期レジスタを識別します。

• これらのレジスタの X 伝搬をディ スエーブルにします。

ASYNC_REG 制約は、 次のいずれかを使用してフロン トエンド デザインのレジスタに適用できます。

• HDL コードの属性

• ザイ リ ンクス デザイン制約 (XDC) の制約

ASYNC_REG が適用されているレジスタは、 タイ ミ ング シ ミ ュレーシ ョ ン中に前の値を保持し、 シ ミ ュレーシ ョ ンに X を出力しません。 新しい値も クロ ッ ク信号が供給された可能性があるので、 注意してください。

ASYNC_REG 制約は CLB および入出力ブロッ ク (IOB) レジスタおよびラ ッチにのみ適用できます。 ASYNC_REG 制約に関しては、『Vivado Design Suite プロパティ リ ファレンス ガイ ド』 (UG912)[参照 12] の 「AYNC_REG」 を参照してください。

推奨 : 非同期データでクロ ッキングを避けられない場合は、IOB または CLB レジスタにのみにクロ ッ クを供給してください。 RAM、 シフ ト レジスタ LUT (SRL)、 またはその他の同期エレ メン トへ、 非同期信号でクロ ッキングする場合は、 決定的な結果にはならないので、 避けてください。 できる限り、 まず、 レジスタ、 ラ ッチ、 または FIFO で非同期信号を正し く同期してから、 RAM、 シフ ト レジスタ LUT (SRL) などの同期エレ メン トへ書き込むよ うにしてください。 詳細は、 『Vivado Design Suite ユーザー ガイ ド :制約の使用』 (UG903) [参照 9] を参照して ください。

同期エレメン トの X 伝搬のディスエーブル

タイ ミ ング シ ミ ュレーシ ョ ン中にタイ ミ ング エラーが発生する と、 ラ ッチ、 レジスタ、 RAM またはその他の同期エレ メン トはデフォルトで X をシ ミ ュレータに出力します。実際の出力値が未知のために、 こ う な り ます。可能性と しては、 レジスタの出力は次のよ うになり ます。

• 前の値を保持

• 新しい値へアップデート

• 同期エレ メン トのクロ ッ ク供給後しばら く経ってから、 値が決定されないメ タステーブル状態になる

この値は決定できず、 正確なシ ミ ュレーシ ョ ン結果は得られないので、 エレ メ ン トは未知の値を示す X を出力します。 X 出力は次のクロ ッ ク サイ クルまでそのまま保持されます。 そのサイ クルで、 ほかに違反がなければ、 次のクロ ッ ク供給を受けた値が出力をアップデート します。

X が出力される と、 シ ミ ュレーシ ョ ンに大きな影響が出るこ とがあ り ます。 たとえば、 1 つのレジスタで X が生成される と、 続く ク ロ ッ ク サイ クルで、 その X がほかに伝搬される可能性があ り ます。 そ う なる と、 テス ト中のデザインの大部分が未知のステートになってしまいます。

X が生成されないよ うにするには、 次の作業を行ってください。

• 同期パスに関しては、 そのパスを解析し、 このパスまたはほかのパスに関連したタイ ミ ング問題を修正して、 回路が正し く動作するよ うにします。

• 非同期パスに関しては、 タイ ミ ング違反をほかの方法で回避できない場合にのみ、 ASYNC_REG プロパティを使用して、 タイ ミ ング違反が発生している間に同期エレ メン トの X 伝搬をディ スエーブルにします。

X 伝搬がディ スエーブルになる と、、 レジスタの出力には前の値が保持されます。 実際のシ リ コンでは、 レジスタは新しい値に変更されるこ と もあ り ます。 X 伝搬をディ スエーブルにする と、 シ リ コンの動作とは一致しないシ ミ ュレーシ ョ ン結果になるこ とがあ り ます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 82UG900 (v2015.2) 2015 年 6 月 24 日

Page 83: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 6 章 : 特殊なケースの処理

注意 : このオプシ ョ ンを使用する場合は注意が必要です。 タイ ミ ング違反をこれ以外の方法で回避できない場合にのみ使用してください。

コンフ ィギュレーシ ョ ン インターフェイスのシミ ュレーシ ョ ンこのセクシ ョ ンでは、 次のコンフ ィギュレーシ ョ ン インターフェイスのシ ミ ュレーシ ョ ンについて説明します。

• 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 コンポーネン トから駆動および表示できます。 これらのコンポーネン ト両方のインスタンシエーシ ョ ン テンプレートは、 Vivado® DesignSuite テンプレートおよびそのデバイスのライブラ リ ガイ ドから入手できます。

SelectMAP シミ ュレーシ ョ ン

インスタンシエーシ ョ ン テンプレート を含むコンフ ィギュレーシ ョ ン シ ミ ュレーシ ョ ン モデル (SIM_CONFIGE2 および SIM_CONFIGE3) を使用する と、 終的に DONE ピンが High になるのを確認するために、 サポート されているコンフ ィギュレーシ ョ ン インターフェイスをシ ミ ュレートできます。これは、サポート されているコンフ ィギュレーシ ョ ン インターフェイスで、 サポート デバイスがスティ ミ ュラスにどのよ うに反応するかを示すモデルです。

表 6-1 には、 サポート されるインターフェイスおよびデバイスを リ ス ト しています。

表 6‐1 :サポート されるコンフ ィギュレーシ ョ ン  デバイスおよびモード

デバイス SelectMAP シリアル SPI BPI

7 シ リーズおよび

Zynq®-7000 AP SoC デバイス あ り あ り なし なし

UltraScale™ デバイス あ り あ り なし なし

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 83UG900 (v2015.2) 2015 年 6 月 24 日

Page 84: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 6 章 : 特殊なケースの処理

これらのモデルは、制御信号アクティビティを処理し、 ビッ ト ファ イルをダウンロード します。 CRC、 IDCODE のような内部レジスタ設定とステータス レジスタが含まれています。 Sync Word がデバイスに入力され、 スタート アップシーケンスで処理される と ころが監視できます。 図 6-2 は、 システムをハード ウェアからシ ミ ュレーシ ョ ン環境にマップする方法を示しています。

コンフ ィギュレーシ ョ ン プロセスは、各デバイスのコンフ ィギュレーシ ョ ン ユーザー ガイ ドにま とめられています。これらのガイ ドには、 コンフ ィギュレーシ ョ ン シーケンスおよびコンフ ィギュレーシ ョ ン インターフェイスに関する情報が記載されています。

システム レベルの記述

コンフ ィギュレーシ ョ ン モデルを使用する と、 ハード ウェアが利用可能になる前に、 コンフ ィギュレーシ ョ ン インターフェイス制御ロジッ クをテス トできます。このモデルはデバイス全体をシ ミ ュレート し、次のよ うにシステム レベルで使用されます。

• ワイヤ、制御信号処理、データ入力アライ メン トが正し く実行されるよ う、 コンフ ィギュレーシ ョ ン ロジッ クを制御するためにプロセッサを使用するアプリ ケーシ ョ ン

• データ アライ メン トが正し く実行されるよ う CS (SelectMAP Chip Select) または CLK 信号を使用してデータ読み込みプロセスを制御するアプリ ケーシ ョ ン

• SelectMAP ABORT または Readback を実行する必要のあるシステム

このモデルに関連する ZIP ファ イルは、 次から入手できます。

http://www.xilinx.com/txpatches/pub/documentation/misc/config_test_bench.zip

この ZIP ファ イルには、SelectMAP ロジッ クを実行するプロセッサをシ ミ ュレートするサンプル テス トベンチが含まれています。 これらのテス トベンチには、 SelectMAP インターフェイスを制御するプロセッサをエミ ュレートする制御ロジッ クが含まれ、 フル コンフ ィギュレーシ ョ ン、 ABORT、 および IDCODE と ステータス レジスタの Readbackなどの機能があ り ます。

シ ミ ュレート されたホス ト システムには、ファ イル配信および制御信号管理などの機能が必要です。これらの制御システムはデバイスのコンフ ィギュレーシ ョ ン ユーザー ガイ ドの説明にしたがって設計する必要があ り ます。

コンフ ィギュレーシ ョ ン モデルは、 BIT ファ イルがデバイスに読み込まれたと きに、 コンフ ィギュレーシ ョ ン プロシージャ中にデバイス内で起きているこ と も示します。

BIT ファ イルのダウンロード中、 モデルは各コマンドを実行し、 ハード ウェアの変更と同じになるよ うにレジスタ設定を変更します。

X-Ref Target - Figure 6-2

図 6‐2 : モデル インタラクシ ョ ンを示すブロック図 

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 84UG900 (v2015.2) 2015 年 6 月 24 日

Page 85: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 6 章 : 特殊なケースの処理

CRC レジスタが CRC 値を累積するのを監視するこ とができます。 また、 このモデルは、 デバイスがさまざまなコンフ ィギュレーシ ョ ン ステート を遷移していく と きに設定されるステータス レジスタ ビッ ト も示します。

モデルを使用したデバッグ

各コンフ ィギュレーシ ョ ン モデルは、 正しいコンフ ィギュレーシ ョ ンの例を提供します。 デバイス プログラムの問題が発生したと きにこの例を参考にする と、 デバッグがしやすくな り ます。

ステータス レジスタは Vivado デバイス プログラマを使用する と、 JTAG を介して読み出すこ とができます。 レジスタには、 デバイスの現在のステータスに関連した情報が含まれるので、 デバッグのと きに利用できます。 ボードに問題がある場合は、 まず Vivado デバイス プログラマにステータス レジスタを読み込んでデバッグを始めます。

ステータス レジスタが読み込まれたら、それをシ ミ ュレーシ ョ ンにマップして、デバイスのコンフ ィギュレーシ ョ ン段階を確かめるこ とができます。

たとえば、 GHIGH ビッ トはデータの読み込みが完了した後に High に設定されます。 このビッ トが設定されていない場合は、データの読み込みは完了していないこ とにな り ます。また、スタート アップ シーケンスで解放される BitGenで設定された GTW、 GWE および DONE 信号も監視できます。

コンフ ィギュレーシ ョ ン モデルでは、エラー挿入も可能です。データの読み込みが一時停止され、問題があるまま読み込みが再開される と、 アクティブな CRC ロジッ クが問題を検出します。 BIT ファ イルに手動で挿入されたビッ トフ リ ップも検出し、 デバイスがこのエラーを処理するのと同じよ うに、 処理します。

サポート される機能 

デバイス別のコンフ ィギュレーシ ョ ン ユーザー ガイ ドには、 各コンフ ィギュレーシ ョ ン インターフェイスの使用にサポート される方法の概要が示されています。 次の表は、 コンフ ィギュレーシ ョ ン ユーザー ガイ ドで説明される機能の中で、 サポート されているものを示しています。

SIM_CONFIGE2 モデルのサポートは次のよ うになっています。

• コンフ ィギュレーシ ョ ン データのリードバッ クはサポート されません。

• CRC 値は計算されますが、 提供されるコンフ ィギュレーシ ョ ン データは格納されません。

• 有効なコマンド シーケンスおよび信号処理がデバイスに対して提供されているこ とを確認するため、特定のレジスタのみでのリードバッ クが可能です。

• リードバッ ク データ ファ イルを生成するためのモデルではあ り ません。

表 6‐2 : モデルをサポートするスレーブ SelectMAP およびシリアルの機能

スレーブ SelectMAP およびシリアルの機能 サポートあり

マスター モード なし

デイジー チェーン - スレーブ パラレル デイジー チェーン なし

SelectMAP データ読み込み あ り

連続 SelectMAP データ読み込み あ り

非連続 SelectMAP データ読み込み あ り

SelectMAP ABORT あ り

SelectMAP リ コンフ ィギュレーシ ョ ン なし

SelectMAP データ順序付け あ り

リ コンフ ィギュレーシ ョ ンおよびマルチブート なし

コンフ ィギュレーシ ョ ン CRC - コンフ ィギュレーシ ョ ン中の CRCチェッ ク

あ り

コンフ ィギュレーシ ョ ン CRC - コンフ ィギュレーシ ョ ン後の CRC なし

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 85UG900 (v2015.2) 2015 年 6 月 24 日

Page 86: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 6 章 : 特殊なケースの処理

シミ ュレーシ ョ ンでのブロック  RAM の競合チェ ックのディスエーブルザイ リ ンクス ブロ ッ ク RAM メモ リは真のデュアル ポート RAM で、 どちらのポート もいつでもどのメモ リ ロケーシ ョ ンからでもアクセスできますが、 同じアドレス空間が同時に読み出しおよび書き込みされる と、 ブロ ッ ク RAMアドレスの競合が発生します。 これらは有効な競合で、読み出しポートから読み出されるデータが有効ではないために発生します。

ハードウェアでは、 読み出された値が古いデータか、 新しいデータか、 古いデータ と新しいデータの組み合わせである可能性があ り ます。

シ ミ ュレーシ ョ ンでは、読み出された値が予期値でないため X が出力されます。 ブロ ッ ク RAM の競合の詳細については、 デバイスのユーザー ガイ ドを参照してください。

アプリ ケーシ ョ ンによっては、 この状態を回避できなかったり、 設計変更できないこ とがあ り ます。 そのよ うな場合は、 ブロ ッ ク RAM でこれらの違反が検出されないよ うに設定するこ とができます。 これは、 ブロ ッ ク RAM プリ ミティブのジェネ リ ッ ク (VHDL) またはパラ メーター (Verilog) の SIM_COLLISION_CHECK 文字列で制御できます。

表 6-3 は、 競合が発生したと きのシ ミ ュレーシ ョ ン動作を制御するため、 SIM_COLLISION_CHECK で使用できる文字列オプシ ョ ンを示しています。

インスタンス レベルで SIM_COLLISION_CHECK を使用する と、各ブロ ッ ク RAM インターフェイスの設定を変更できます。

消費電力解析のための SAIF ファイルのダンプ• Vivado シ ミ ュレータ : 73 ページの 「Vivado シ ミ ュレータを使用した消費電力解析」

• 第 8 章 「サードパーティ シ ミ ュレータの使用」 121 ページの 「消費電力解析用の SAIF のダンプ」

AXI バス ファンクシ ョ ン  モデルを使用したデザインのシミ ュレーシ ョ ンこの ト ピッ クの詳細は、 123 ページの 「AXI バス ファンクシ ョ ン モデルを使用したデザインのシ ミ ュレーシ ョ ン」 を参照してください。

表 6‐3 : SIM_COLLISION_CHECK 文字列

文字列 書き込み競合メ ッセージ 出力での X の書き込み

ALL あ り あ り

WARNING_ONLY あ り なし。 競合発生時にのみ適用され、 同じアド レス空間の後に続く読み出しで、 出力に X が表示される可能性あ り

GENERATE_X_ONLY なし あ り

None なし なし。 競合発生時にのみ適用され、 同じアド レス空間の後に続く読み出しで、 出力に X が表示される可能性あ り

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 86UG900 (v2015.2) 2015 年 6 月 24 日

Page 87: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 6 章 : 特殊なケースの処理

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

コンパイルのスキップ

既存のスナップシ ョ ッ トにシ ミ ュレーシ ョ ンを実行し、シ ミ ュレーシ ョ ン ファ イルセッ トに SKIP_COMPILATION プロパティを設定して、 デザインのコンパイル (または再コンパイル) をスキップするこ とができます。

set_property SKIP_COMPILATION 1 [get_filesets sim_1]

注記 : このプロパティを設定する と、前回コンパイルした後のデザイン ファ イルへの変更はシ ミ ュレーシ ョ ンには反映されません。

シミ ュレーシ ョ ンのスキップ

シ ミ ュレーシ ョ ンを実行せずに、シ ミ ュレーシ ョ ン スナップシ ョ ッ ト をエラボレートおよびコンパイルして、デザイン HDL フ ァ イルに対し てセマンテ ィ ッ ク チェ ッ ク を実行するには、 シ ミ ュ レーシ ョ ン フ ァ イルセ ッ ト にSKIP_SIMULATION プロパティを設定します。

set_property SKIP_SIMULATION true [get_filesets sim_1]

重要 : 上記のいずれかのプロパティ を使用する場合は、 シ ミ ュレーシ ョ ン 設定で [clean up simulation files] チェ ッ クボッ クスをオフにします。また、バッチ/Tcl モードで実行している場合は、launch_simulation -noclean_dir を実行します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 87UG900 (v2015.2) 2015 年 6 月 24 日

Page 88: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

第 7章

バッチまたはスクリプ ト  モードでの Vivado シミ ュレータの使用

概要本章では、 コマンド ラインのコンパイルおよびシ ミ ュレーシ ョ ン プロセスについて説明し、 Vivado® Design Suite シミ ュレータの実行ファイルおよび対応するオプシ ョ ン、 およびシ ミ ュレーシ ョ ンを実行する Tcl コマンドを リ ス ト しています。

Vivado シ ミ ュレータの Tcl コマンドの リ ス トは、 次を入力する と表示されます。

help -category sim

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

してください。

シ ミ ュレータ コマンドを実行する と、 Vivado シ ミ ュレータは次のこ とを実行します。

• xvlog および xvhdl を実行して、 デザインを解析

• バッ クグランドで xelab を実行し、 デザインをエラボレート し、 シ ミ ュレーシ ョ ン スナップシ ョ ッ トにコンパイル (スナップシ ョ ッ トは Vivado シ ミ ュレータで実行可能)

2 番目のプロセスが完了する と、 Vivado ツールは xsim を起動して、 シ ミ ュレーシ ョ ンを実行します。

Vivado シミ ュレータのコマンド  ラインのステップビヘイビアーまたはタイ ミ ング シ ミ ュレーシ ョ ンのいずれかをコマンド ラ インから実行するには、 次のステップを実行する必要があ り ます。

1. 「デザイン ファ イル、 xvhdl および xvlog の解析」

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

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

次のセクシ ョ ンでは、 これらの手順について説明します。

次のセクシ ョ ンで説明するよ うに、 タイ ミ ング シ ミ ュレーシ ョ ンには追加要件があ り ます。

• 第 2 章の 「タイ ミ ング ネッ ト リ ス トの生成」

• 106 ページの 「合成後およびインプリ メンテーシ ョ ン後のシ ミ ュレーシ ョ ン」

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 88UG900 (v2015.2) 2015 年 6 月 24 日

Page 89: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

デザイン  ファイル、 xvhdl および xvlog の解析

xvhdl および xvlog コマン ドは、 それぞれ VHDL および Verilog ファ イルを解析します。 各オプシ ョ ンの詳細は、96 ページの表 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>]

このコマンドは VHDL ソース ファ イルを解析し、 解析済みデータをディ スクの HDL ライブラ リに保存します。

xvhdl の例

xvhdl file1.vhd file2.vhdxvhdl -work worklib file1.vhd file2.vhdxvhdl -prj files.prj

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 89UG900 (v2015.2) 2015 年 6 月 24 日

Page 90: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

xvlog

xvlog コマンドは Verilog パーサーです。 xvlog コマンドは 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>]

xvlog の例

xvlog file1.v file2.vxvlog -work worklib file1.v file2.vxvlog -prj files.prj

デザイン  スナップシ ョ ッ トのエラボレートおよび生成 (xelab)Vivado シ ミ ュレータを使用するシ ミ ュレーシ ョ ンは、 次の 2 段階に分けて行われます。

• まず、シ ミ ュレータ コンパイラの xelab が、HDL モデルをスナップシ ョ ッ トにコンパイルします。スナップシ ョ ットは、 シ ミ ュレータが実行できる形式でモデルを表記したものです。

• 次に、そのモデルをシ ミ ュレートするため、シ ミ ュレータがそのスナップシ ョ ッ ト を読み込み、実行します (xsimコマンドを使用)。 非プロジェク ト モードの場合は、 初の段階を飛ばして次の段階を繰り返すこ とで、 スナップシ ョ ッ ト を再利用できます。

シ ミ ュレータでスナップシ ョ ッ トが作成される と、 モデルの 上位モジュールの名前に基づいて、 スナップシ ョ ッ ト名が割り当てられます。 しかし、 コンパイラへのオプシ ョ ンと してスナップシ ョ ッ ト名を指定する と、 このデフォルト設定を上書きできます。 スナップシ ョ ッ ト名は、 ディ レク ト リ または SIMSET 内で重複しないよ うにします。 デフォルトでもカスタムでも、同じスナップシ ョ ッ ト名を使用する と、前にビルド したスナップシ ョ ッ トがその名前で上書きされてしまいます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 90UG900 (v2015.2) 2015 年 6 月 24 日

Page 91: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

重要 : 同じディ レク ト リ または SIMSET 内で同じスナップシ ョ ッ ト名を使用して、 2 つのシ ミ ュレーシ ョ ンを実行するこ とはできません。

xelab

xelab コマンドは、 指定した 上位ユニッ トに対して次のこ とを実行します。

• 言語結合ルールおよび –L <library> コマンド ラ インで指定した HDL ライブラ リのどちらかを使用して、 下位デザイン ユニッ ト を読み込みます。

• デザインのスタティ ッ ク エラボレーシ ョ ン (パラ メーターの設定、 ジェネ リ ッ クの処理、 generate 文の実行など)を実行します。

• 実行可能なコードを生成します。

• 生成された実行可能コードをシ ミ ュレーシ ョ ン カーネル ライブラ リに リ ンク して、 実行可能なシ ミ ュレーシ ョン スナップシ ョ ッ ト を作成します。

このあと、 出力された実行可能なシ ミ ュレーシ ョ ンのスナップシ ョ ッ ト名を xsim コマンドのオプシ ョ ンと して、 別のオプシ ョ ンと共に使用します。

ヒン ト : xelab は解析コマンドの xvlog および xvhdl を暗示的に呼び出すこ とができます。解析ステップは xelab -prj オプシ ョ ンを使用して組み込むこ とができます。プロジェク ト ファ イルの詳細は、 103 ページの 「プロジェク ト ファ イル (.prj) の構文」 を参照してください。

xelab コマンド構文オプシ ョ ン

各オプシ ョ ンの詳細は、 96 ページの表 7-2を参照して ください。

Lxelab [-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]

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 91UG900 (v2015.2) 2015 年 6 月 24 日

Page 92: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

[-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>][-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]

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 92UG900 (v2015.2) 2015 年 6 月 24 日

Page 93: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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 ライブラ リ

Verilog インスタンシエーシ ョ ン  ユニッ ト

Verilog デザインにコンポーネン ト がインスタンシエー ト される と、 xelab コマン ドによ り、 コンポーネン ト名がVerilog ユニッ ト と して処理され、ユーザーの指定したユニファイ ド論理ライブラ リの リ ス トからユーザーの指定した順序で Verilog モジュールが検索されます。

• 検出される と、 xelab はユニッ ト を結合して、 検索を停止します。

• 大文字/小文字の区別をつけて検索ができなかった場合、 xelab は、 ユーザーの指定した リ ス ト とユニファイ ド論理ライブラ リの順序で、 拡張識別子と してコンス ト ラ ク ト された VHDL デザイン ユニッ ト名を、 大文字/小文字の区別をつけて検索します。 初に一致する名前が見つかる と、 検索は停止されます。

• xelab で、 1 つのライブラ リに 1 つの結合が見つかった場合は、 その名前を選択して、 検索を停止します。

注記 :混合言語デザインの場合、Verilog モジュールでインスタンシエート される VHDL エンティティへの関連付けに使用されるポート名では、 常に大文字/小文字が区別されます。 また、 VHDL ジェネ リ ッ クの変更に defparam 文は使用できないので注意してください。 詳細は、 付録 B 「混合言語シ ミ ュレーシ ョ ンの使用」 を参照してください。

重要 : VHDL レコード オブジェク ト全体を Verilog オブジェク トに接続するこ とはサポート されていません。

VHDL インスタンシエーシ ョ ン  ユニッ ト

VHDL デザインにコンポーネン トがインスタンシエート される と、xelab コマンドはそのコンポーネン ト名を VHDLユニッ ト と して処理し、 論理 work ライブラ リでそれを検索します。

• VHDL ユニッ トが検出される と、 xelab コマンドでそれが結合されて、 検索が停止します。

• xelab で VHDL ユニッ トが検出されない場合、大文字/小文字の区別が維持されたコンポーネン ト名が Verilog モジュール名と して処理され、ユーザーの指定した リ ス トおよびユニファイ ド論理ライブラ リの順序で大文字/小文字の区別をつけた検索が引き続き行われます。 初に一致する名前が見つかる と、 検索は停止します。

• 大文字/小文字の区別をつけて検索ができなかった場合、 xelab は、 ユーザーの指定した リ ス ト とユニファイ ド論理ライブラ リの順序で、大文字/小文字の区別をつけて検索を実行します。 1 つのライブラ リに 1 つの結合が見つかれば、 検索は停止します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 93UG900 (v2015.2) 2015 年 6 月 24 日

Page 94: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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>

`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 などの指示子と同様、 `uselib lib 指示子も、 解析が実行される と、 HDL ファ イル全体で使用されます。別の `uselib 指示子が処理されるまでは、 HDL ソースの `uselib (すべての Verilog XL `uselib を含む) 指示子が使用されます。 引数なしで `uselib を使用する と、 実行中の `uselib <lib|file|dir|libext> は無効になり ます。

次のモジュール検索メカニズムは、インスタンシエート されたモジュールまたは UDP の解決のため、Verific の Verilogエラボレーシ ョ ン アルゴ リズムによって使用されます。

• まず、 インスタンシエート されたモジュールを `uselib lib の論理ライブラ リの順序リ ス トで検索します。

• 見つからない場合は、 xelab コマンド ラインで検索ライブラ リ と して指定されているライブラ リの順序リ ス トでインスタンシエート されたモジュールを検索します。

• 見つからない場合は、親モジュールのライブラ リでインスタンシエート済みモジュールを検索します。たとえば、work ライブラ リのモジュール A が mylib ライブラ リのモジュール B をインスタンシエート し、 モジュール B がモジュール C をインスタンシエートする場合、mylib ライブラ リ (C の親モジュール B のライブラ リ ) でモジュール C を検索します。

• 見つからない場合は、 次のいずれかの work ライブラ リでインスタンシエート されたモジュールを検索します。

° HDL ソースがコンパイルされるライブラ リ

° work ライブラ リ と して明示的に設定されるライブラ リ

° work という名前のデフォルトの作業ライブラ リ

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 94UG900 (v2015.2) 2015 年 6 月 24 日

Page 95: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

`uselib の例

表 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

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_adderadder1(.a(a),.b(b),.c(carry1),.s(sum1));half_adderadder1(.a(sum1),.b(c_in),.c(carry2),.s(sum));c_out = carry1 | carry2;endmodule

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 95UG900 (v2015.2) 2015 年 6 月 24 日

Page 96: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

xelab、 xvhdl、 xvlog コマンド  オプシ ョ ン

表 7-2 は、 xelab、 xvhdl、 xvlog コマンドのオプシ ョ ンを リ ス ト しています。

表 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」

-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」

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 96UG900 (v2015.2) 2015 年 6 月 24 日

Page 97: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

-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」

-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」

表 7‐2 : xelab、 xvhd、 xvlog コマンド  オプシ ョ ン  (続き)

コマンド  オプシ ョ ン 説明 コマンドで使用

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 97UG900 (v2015.2) 2015 年 6 月 24 日

Page 98: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

-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」

-Oenable_unused_removal-Odisable_unused_removal

適化での未使用の信号と文の削除をオンまたはオフにします (デフォルトではオン)。

「xelab」

-override_timeunit -timescale オプシ ョ ンで指定した値で、すべての Verilog モジュールの時間単位を上書きします。

「xelab」

-override_timeprecision -timescale オプシ ョ ンで指定した時間精度で、 すべての Verilog モジュールの時間精度を上書きします。

「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

表 7‐2 : xelab、 xvhd、 xvlog コマンド  オプシ ョ ン  (続き)

コマンド  オプシ ョ ン 説明 コマンドで使用

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 98UG900 (v2015.2) 2015 年 6 月 24 日

Page 99: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

-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> SDF は <file> を 小遅延を含めて <root> でアノテート します。

「xelab」

-sdftyp arg <root=file> SDF は <file> を標準遅延を含めて <root> でアノテート します。

「xelab」

-sdfmax arg <root=file> SDF は <file> を 大遅延を含めて <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」

表 7‐2 : xelab、 xvhd、 xvlog コマンド  オプシ ョ ン  (続き)

コマンド  オプシ ョ ン 説明 コマンドで使用

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 99UG900 (v2015.2) 2015 年 6 月 24 日

Page 100: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

デザイン スナップショ ッ トのシミ ュレーション (xsim)xsim コマンドは、シ ミ ュレーシ ョ ン スナップシ ョ ッ ト を読み込んで、バッチ モードのシ ミ ュレーシ ョ ンを実行するか、 ワークスペース (GUI) または Tcl ベースのインタラ クティブなシ ミ ュレーシ ョ ン環境を提供します。

xsim の構文

コマンド構文は、 次のよ うになり ます。

xsim <options> <snapshot>

説明 :

• xsim はコマンドです。

• <options> はオプシ ョ ンです (表 7-3)。

• <snapshot> はシ ミ ュレーシ ョ ン スナップシ ョ ッ トです。

xsim のオプシ ョ ン

-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」

-sv_lib arg DPI インポート されたファンクシ ョ ンの共有ライブラリ名 (.dll/.so)。 ファ イル拡張子は不要。

「xelab」

-sv_liblist arg DPI 共有ライブラ リ をポイン トするブート ス ト ラ ップ ファ イル

「xelab」

-dpiheader arg エクスポートおよびインポート されたファンクシ ョ ンのヘッダー ファイル名

「xelab」

表 7‐2 : xelab、 xvhd、 xvlog コマンド  オプシ ョ ン  (続き)

コマンド  オプシ ョ ン 説明 コマンドで使用

表 7‐3 : xsim コマンドのオプシ ョ ン

xsim オプシ ョ ン 説明

-f [-file] <filename> ファ イルからコマンド ライン オプシ ョ ンを読み込みます。

-g [-gui] インタラ クティブなワークスペースで実行します。

-h [-help] ヘルプ メ ッセージを画面に表示します。

-log <filename> ログ ファ イルの名前を指定します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 100UG900 (v2015.2) 2015 年 6 月 24 日

Page 101: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 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 ツールのバージ ョ ンになり ます。

-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 オプシ ョ ンと一緒に使用します。

表 7‐3 : xsim コマンドのオプシ ョ ン (続き)

xsim オプシ ョ ン 説明

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 101UG900 (v2015.2) 2015 年 6 月 24 日

Page 102: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

スタンドアロン  モードでの Vivado シミ ュレータの実行例Vivado シ ミ ュレータをスタンドアロン モードで実行する場合、 次のコマンドを実行できます。

• デザイン ファ イルを解析

• デザインをエラボレート し、 スナップシ ョ ッ ト を作成

• Vivado シミ ュレータのワークスペースと波形コンフィギュレーシ ョ ン ファイルを開いてシミ ュレーシ ョ ンを実行

手順 1 : デザイン  ファイルを解析

まず、 次の表に示すよ うに HDL ソース ファイルをタイプ別に解析します。 各コマンドで複数ファイルを処理できます。

手順 2 : エラボレートおよびスナップシ ョ ッ トの作成

解析を実行したら、 xelab コマンドを使用してデザインをエラボレート し、 シ ミ ュレーシ ョ ンのスナップシ ョ ッ ト を作成します。

xelab <topDesignUnitName> -debug typical

重要 : xelab を使用する と、 複数の 上位デザイン ユニッ ト名を指定できます。 launch_simulator 実行中と同様の目的で Vivado シ ミ ュレータのワークスペースを使用するには、 デバッグ レベルを typical に設定する必要があ り ます。

手順 3 : シミ ュレーシ ョ ンの実行

xelab が終了する と、 Vivado シ ミ ュレータでシ ミ ュレーシ ョ ンを実行するためにスナップシ ョ ッ トが作成されます。

Vivado シ ミ ュレータのワークスペースを起動するには、 次のコマンドを使用します。

xsim <SnapShotName> -gui

波形コンフ ィギュレーシ ョ ン ファイルを開くには、 次のよ うに入力します。

xsim <SnapShotName> -view <wcfg FileName> -gui

-view オプシ ョ ンを複数使用すれば、 複数の wcfg ファ イルを指定できます。 次に例を示します。

xsim <SnapShotName> -view <wcfg FileName> -view <wcfg FileName>

表 7‐4 :デザイン  ファイル解析に使用するファイル タイプおよび関連コマンド

ファイル タイプ コマンド

Verilog xvlog <VerilogFileName(s)>

SystemVerilog xvlog -sv <SystemVerlilogFileName(s)>

VHDL xvhdl <VhdlFileName(s)>

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 102UG900 (v2015.2) 2015 年 6 月 24 日

Page 103: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

プロジェク ト  ファイル (.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 ソース ファ イル。 各行に複数の 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

ライブラリ  マップ ファイル (xsim.ini)HDL コンパイラ プログラムの xvhdl、 xvlog、 xelab では、 xsim.ini コンフ ィギュレーシ ョ ン ファ イルを使用して、 VHDL および Verilog 論理ライブラ リの定義および物理的な位置が検出されます。

コンパイラはこれらの位置から次の順序で xsim.ini を読み出そう と します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 103UG900 (v2015.2) 2015 年 6 月 24 日

Page 104: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

• ファ イル コ メン トは -- で開始する必要があ り ます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 104UG900 (v2015.2) 2015 年 6 月 24 日

Page 105: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

シミ ュレーシ ョ ン  モードの実行シ ミ ュレーシ ョ ン モードはすべてコマンド ラインから実行できます。 次は、 コマンド ラインから実行される場合のシ ミ ュレーシ ョ ン モードについて説明しています。

ビヘイビアー シミ ュレーシ ョ ン

図 7-1 は、 ビヘイビアー シ ミ ュレーシ ョ ン プロセスを示しています。

Vivado Design Suite から ビヘイ ビアー シ ミ ュ レーシ ョ ンを実行するには、 Tcl コマン ド launch_simulator -modebehavioral. を使用します。

X-Ref Target - Figure 7-1

図 7‐1 : ビヘイビアー シミ ュレーシ ョ ン  プロセス

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 105UG900 (v2015.2) 2015 年 6 月 24 日

Page 106: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

合成後およびインプリ メンテーシ ョ ン後のシミ ュレーシ ョ ン

合成後およびインプ リ メ ンテーシ ョ ン後のシ ミ ュレーシ ョ ンでは、 論理シ ミ ュレーシ ョ ンまたは Verilog タイ ミ ングシ ミ ュレーシ ョ ンが実行できます。 図 7-2は、 合成後およびインプリ メンテーシ ョ ン後のシ ミ ュレーシ ョ ン プロセスを示しています。

次は、 コマンド ラインから合成後の論理シ ミ ュレーシ ョ ンを実行する例です。

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-2

図 7‐2 :合成後およびインプリ メンテーシ ョ ン後のシミ ュレーシ ョ ン

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 106UG900 (v2015.2) 2015 年 6 月 24 日

Page 107: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

第 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_simulator -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_simulator -simset sim_1 -mode post-implementation -type timingVivado% close_project

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 107UG900 (v2015.2) 2015 年 6 月 24 日

Page 108: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

第 8章

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

概要

Vivado® Design Suite は、サードパーティ ツールを使用したシ ミ ュレーシ ョ ンをサポート しています。サードパーティツールを使用したシ ミ ュレーシ ョ ンは、 Vivado 統合設計環境 (IDE) 内で直接実行できます。 またはカスタムの外部シミ ュレーシ ョ ン環境を使用して実行できます。

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

• QuestaSim

• ModelSim (PE および DE)

• IES

• VCS

• Riviera PRO シ ミ ュレータ (Aldec)

重要 : サポート されているバージ ョ ンのサードパーティ シ ミ ュレータのみを使用して ください。 サポート されるシミ ュレータおよび OS の詳細は、 『Vivado Design Suite ユーザー ガイ ド : リ リース ノート、 インス トールおよびライセンス』 (UG973) [参照 1] の 「互換性のあるサードパーティ ツール」 の表を参照してください。

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

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

サードパーティ  ツールを使用したシミ ュレーシ ョ ンの準備

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

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

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

2. [Vivado Options] ダイアログ ボッ クスの [General] ページにあるインス トール パスを指定するフ ィールドまでスクロールダウンし、 インス トール パスを指定します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 108UG900 (v2015.2) 2015 年 6 月 24 日

Page 109: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

Vivado Design Suite では、 シ ミ ュレーシ ョ ン モデルのファイルセッ トおよびライブラ リ を提供しています。 デザインをシ ミ ュレートする前に、 これらのファ イルをシ ミ ュレーシ ョ ン ツールでコンパイルしておく必要があ り ます。 シミ ュレーシ ョ ン ライブラ リには、 デバイスおよび IP のビヘイビアーおよびタイ ミ ング モデルが含まれています。 コンパイルされたライブラ リは、 複数のデザイン プロジェク トで使用できます。

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

重要 : Vivado ツールまたはシ ミ ュレータ バージ ョ ンを変更する と、 ラ イブラ リ を再度コンパイルする必要があ り ます。

シ ミ ュレーシ ョ ンを始める前に、 Tcl コマンドの compile_simlib を実行して、 ターゲッ ト シ ミ ュレータのザイ リンクス シ ミ ュレーシ ョ ン ライブラ リ をコンパイルしてください。

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

サードパーティ ツールを変更するたびに、 必ずシ ミ ュレーシ ョ ン ライブラ リ を再コンパイルする必要があ り ます。

X-Ref Target - Figure 8-1

図 8‐1 : [Vivado Options] ダイアログ ボックスの [General] ページでのインストール パスの指定

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 109UG900 (v2015.2) 2015 年 6 月 24 日

Page 110: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

ダイアログ ボックスのオプシ ョ ン

[Simulator] : [Simulator] ド ロ ップダウン メニューからシ ミ ュレータを選択します (図 8-3)。

• [Language] : 指定した言語用にライブラ リ をコンパイルします。 このオプシ ョ ンを指定しない場合、 言語は上記で選択したシ ミ ュレータに対応するものに設定されます。混合言語シ ミ ュレータの場合は、Verilog および VHDLライブラ リの両方がコンパイルされます。 詳細は図 8-4 を参照してください。

X-Ref Target - Figure 8-2

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

X-Ref Target - Figure 8-3

図 8‐3 : [Simulator] ドロップダウンの選択肢

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 110UG900 (v2015.2) 2015 年 6 月 24 日

Page 111: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

• [Library] : コンパイルするシ ミ ュレーシ ョ ン ライブラ リ を指定します。 デフォルトでは、 compile_simlib コマンドですべてのシ ミ ュレーシ ョ ン ラ イブラ リがコンパイルされます。 詳細は図 8-5 を参照してください。

• [Family] : 選択したライブラ リ を指定したデバイス ファ ミ リに対してコンパイルします。 デフォルトでは、 すべてのデバイス ファ ミ リが生成されます。 詳細は図 8-6 を参照してください。

X-Ref Target - Figure 8-4

図 8‐4 :言語の選択

X-Ref Target - Figure 8-5

図 8‐5 : シミ ュレーシ ョ ン ライブラリ

X-Ref Target - Figure 8-6

図 8‐6 : ファ ミ リ  オプシ ョ ン

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 111UG900 (v2015.2) 2015 年 6 月 24 日

Page 112: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

• [Compiled library location] : コンパイルしたライブラ リの結果を保存するディ レク ト リ パスを指定します。デフォルトでは、 非プロジェク ト モードではライブラ リは現在の作業ディ レク ト リに保存され、 プロジェク ト モードでは <project>/<project>.cache/compile_simlib ディ レク ト リに保存されます。 プロジェク ト モードおよび非プロジェク ト モードの詳細は、 『Vivado Design Suite ユーザー ガイ ド : デザイン フローの概要』 (UG892)[参照 11] を参照してください。

• [Simulator executable path] : シ ミ ュレータ実行ファイルのディ レク ト リ を指定します。 このオプシ ョ ンは、 ターゲッ ト シ ミ ュレータが $PATH または %PATH% 環境変数で指定されていない場合や、 $PATH または %PATH% 環境変数で指定されているパス とは別のパスを指定する場合に使用します。

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

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

• [Verbose] : メ ッセージの制限を一時的に上書きし、 すべてのメ ッセージを返します。

ヒン ト : [Compile Simulation Libraries] ダイアログ ボッ クスの一番下には [Command] という フ ィールドがあ り ます (図 8-2)。 このフ ィールドの値は選択したオブジェク トによって変更されます。 [Command] フ ィールドの値を使用する と、 Tcl または非プロジェク ト モードでシ ミ ュレーシ ョ ン ラ イブラ リ を生成できます。

Tcl モード

構文 : 

compile_simlib [-directory <arg>] [-family <arg>] [-force] [-language <arg>] [-library <arg>] [-print_library_info <arg>] -simulator <arg>[-simulator_exec_path <arg>] [-source_library_path <arg>][-32bit] [-quiet] [-verbose]

表 8‐1 : Tcl モード  オプシ ョ ン

名前 説明

[-directory] コンパイルした結果を保存するディ レク ト リ パスを指定します。

[-family] デバイス アーキテクチャを選択します。 デフォルトは all です。

[-force] コンパイル済みライブラ リ を上書きします。

[-language] こ こで指定した言語のライブラ リ をコンパイルします。デフォルトは all です。

[-library] コンパイルするライブラ リ を選択します。 デフォルトは all です。

[-print_library_info] コンパイル済みライブラ リの情報を表示します。

-simulator 指定したシ ミ ュレータ用にライブラ リ をコンパイルします。

[-simulator_exec_path] 指定したディ レク ト リにあるシ ミ ュレータの実行ファイルを使用します。

[-source_library_path] Vivado 用の環境変数 XILINX_VIVADO で指定されているデフォルト パスを検索する前に、 指定したディ レク ト リでラ イブラ リ ソース ファ イルを検索します。

[-32bit] 32 ビッ トのコンパイルを実行します。

[-quiet] コマンド エラーを無視します。

[-verbose] プログラム実行中のメ ッセージの制限を解除し、 すべてのメ ッセージを表示します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 112UG900 (v2015.2) 2015 年 6 月 24 日

Page 113: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

詳細を表示するには、 Vivado Design Suite の Tcl コンソールで compile_simlib -help と入力してください。

コマンド例

• 現在のディ レク ト リのすべての言語、すべてのライブラ リ、すべてのファ ミ リに対するシ ミ ュレーシ ョ ン ライブラ リ を生成します。

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

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

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

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

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

• ModelSim の実行ファイルのパスが <simulator_installation_path> の場合に、 ModelSim のシ ミ ュレーシ ョ ン ライブラ リ を /a/b/c に生成します。

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

コンパイル済みのライブラリ

コンパイル プロセスで、Vivado は、 コンパイルされたライブラ リ を参照するためにシ ミ ュレータが使用する、デフォルトの初期化ファ イルを作成します。 compile_simlib コマンドは、 ライブラ リのコンパイル中に、 指定されたライブラ リ出力ディ レク ト リにファ イルを作成します。 デフォル トの初期化ファ イルには、 リ ファレンス ラ イブラ リパスを指定する変数、 適化、 コンパイラー、 シ ミ ュレータの設定が含まれています。 正しい初期化ファイルがパスにない場合は、 ザイ リ ンクス プリ ミ ティブを含むデザインをシ ミ ュレートできません。

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

シ ミ ュレータ別のコンパイルされたライブラ リ ファ イルについては、 サードパーティ シ ミ ュレーシ ョ ン ツールの資料を参照してください。

表 8‐2 : コンパイルされたライブラリを参照するのにシミ ュレータが使用するファイル

QuestaSim/ModelSim IES VCS

modelsim.ini cds.lib synopsys_sim.setup

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 113UG900 (v2015.2) 2015 年 6 月 24 日

Page 114: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

サードパーティ  ツールでのシミ ュレーシ ョ ンの実行Flow Navigator で [Simulation Settings] をク リ ッ クする と、 Vivado IDE のシ ミ ュレーシ ョ ン設定ができます。 次の図 はFlow Navigator の [Simulation] を示しています。

[Simulation Settings] をク リ ッ クする と、 シ ミ ュレータの選択やその詳細を設定できるダイアログ ボッ クスが開きます。

X-Ref Target - Figure 8-7

図 8‐7 : [Simulation Settings]

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 114UG900 (v2015.2) 2015 年 6 月 24 日

Page 115: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

サードパーティ  ツールを使用したシミ ュレーシ ョ ン  オプシ ョ ンの選択

Flow Navigator で [Simulation Settings] をク リ ッ ク して [Project Settings] ダイアログ ボッ クスを開きます。

X-Ref Target - Figure 8-8

図 8‐8 : [Project Settings] ダイアログ ボックス : サードパーティ  ツールの設定

1 シ ミ ュレータを選択します。

2 シ ミ ュレータの言語を選択します。

3 シ ミ ュレーシ ョ ン セッ ト を選択します。

4 シ ミ ュレーシ ョ ンの 上位デザイン名を参照します。

5 再実行前にシ ミ ュレーシ ョ ン ファ イルを消去します。 このオ

プシ ョ ンはオンにしたままにしておく こ とを推奨します。

6 シ ミ ュレーシ ョ ンを実行せずにスク リプ ト を生成します。

7 それぞれのカテゴ リでオプシ ョ ンを設定するためのタブを選

択します。

8 コンパイルされたシ ミ ュレーシ ョ ン ラ イブラ リのディ レ

ク ト リ を指定します。

9 [Compilation] のみでの設定 : インクルード パスを設定また

はマクロを定義するディ レク ト リ を指定します。

10 [Compilation] のみでの設定 : ジェネ リ ッ ク /パラ メーターの

ロケーシ ョ ンを選択するディ レク ト リ を指定します。

11 それぞれのページに対し、オプシ ョ ン リ ス トがウ ィンド ウ

に表示されます。 オプシ ョ ンを選択する と、 その説明が表

示されます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 115UG900 (v2015.2) 2015 年 6 月 24 日

Page 116: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

注意 : ど う し て も必要な場合にのみ [Advanced] タブで設定を変更し て く だ さい。 [Include all design sources forsimulation] チェッ クボッ クスはデフォルトでオンになっています。 このチェッ クボッ クスをオフにする と、 予測しない結果になる可能性があ り ます。 チェッ クボッ クスがオンになっている限り、 シ ミ ュレーシ ョ ン セッ トでアウ ト オブ コンテキス ト (OOC) の IP、 IP インテグレーター ファ イル、 DCP などが含まれます。

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

シ ミ ュレーシ ョ ン ソースはシ ミ ュレーシ ョ ン セッ ト に含まれており、 デザイン ファ イルやシ ミ ュレーシ ョ ン専用ファイルが含まれている場合があ り ます。プロジェク トにファ イルを追加する と き、シ ミ ュレーシ ョ ン セッ ト を指定し、 シ ミ ュレーシ ョ ンおよびインプ リ メンテーシ ョ ンに対する関連付けを指定するこ とができます。

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

1. [File] → [Add] をク リ ッ クするか、 または [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 シ ミ ュレータで、 どのシミ ュレーシ ョ ン セッ トが現在使用中なのかが表示されます。

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

° [Add Directories] : 選択したディ レク ト リに含まれるすべてのシ ミ ュレーシ ョ ン ソース ファ イルを追加します。 指定したディ レク ト リにある有効なソース ファ イルがすべてプロジェク トに追加されます。

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

ダイアログ ボッ クスには、 次のよ うなボタンがあ り ます。

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

° [Move Selected File Up] : ファ イルを リ ス トの上方向に移動します。

° [Move Selected File Down] : ファ イルを リ ス トの下方向に移動します。

ウ ィザードのチェッ クボッ クスには、 次のオプシ ョ ンがあ り ます。

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

° [Copy sources into project] :ソース ファ イルをプロジェク ト ディ レク ト リにコピーします。プロジェク トではローカルにコピーされたバージ ョ ンが使用されます。

注記 : [Add Directories] ボタンをク リ ッ ク してソース ファ イルのディ レク ト リ を追加した場合は、 ファ イルがプロジェク トにローカルにコピーされる と き、 ディ レク ト リ構造もそのままの状態でコピーされます。

° [Add sources from subdirectories] : [Add Directories] で指定したディ レク ト リのサブディ レク ト リに含まれるソース ファ イルをすべて追加します。

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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 116UG900 (v2015.2) 2015 年 6 月 24 日

Page 117: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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

Vivado IDE では、 シ ミ ュレーシ ョ ン ソース ファ イルはシ ミ ュレーシ ョ ン ファ イル セッ ト にま とめられ、 [Sources]ビューにフォルダーと して表示されます。 リモートのものを参照した り、 ローカル プロジェク ト ディ レク ト リに保存されているものを使用できます。

シ ミ ュレーシ ョ ン セッ ト を使用する と、 それぞれのデザイン段階にあわせてソースを定義して使用できます。

たとえば、あるシ ミ ュレーシ ョ ン ソースは、エラボレート されたデザイン、 またはデザインのモジュールのビヘイビアー シ ミ ュレーシ ョ ン用にスティ ミ ュラスを供給するためのものであったり、別のテス トベンチは、インプリ メン ト済みデザインのタイ ミ ング シ ミ ュレーシ ョ ン用にスティ ミ ュラスを供給するためのもの、と使い分けるこ とができます。

ファ イルをプロジェク トに追加する際、 どのシ ミ ュレーシ ョ ン ソース セッ トにファ イルを追加するかを指定できます。

シ ミ ュレーシ ョ ン セッ トは次の手順で変更できます。

1. [Sources] ビューで [Simulation Sources] を右ク リ ッ ク し、 [Edit Simulation Sets] をク リ ッ ク します (図 8-9)。

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

2. [Add Files] をク リ ッ ク してファ イルを選択します。 これで、 プロジェク トに関連付けられているソースが、 新しく作成されたシ ミ ュレーシ ョ ン セッ トに追加されます。

3. 必要であればほかのファイルも追加します。

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

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

重要 : サードパーティ シ ミ ュレータを実行する前に、コンパイルされたライブラ リのディ レク ト リ を確認してください (compile_simlib が実行されたパス、 または -directory オプシ ョ ンで指定されたディ レク ト リ )

X-Ref Target - Figure 8-9

図 8‐9 : [Edit Simulation Sets] オプシ ョ ン

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 117UG900 (v2015.2) 2015 年 6 月 24 日

Page 118: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

Vivado IDE およびサードパーティ  ツールを使用したシミ ュレーシ ョ ンの実行

[Run Simulation] ボタンをク リ ッ クする と、 シ ミ ュレーシ ョ ン設定に基づいてデザインをコンパイル、 エラボレート、シ ミ ュレートするコマンド オプシ ョ ンが設定され、 別ウ ィンド ウが開いてシ ミ ュレータが起動します。

デザインの合成前にシ ミ ュレーシ ョ ンを実行する と、ビヘイビアー シ ミ ュレーシ ョ ンが実行されます。各デザイン手順 (合成およびインプリ メンテーシ ョ ン) が終了したら、論理またはタイ ミ ング シ ミ ュレーシ ョ ンを実行するオプシ ョンが選択できるよ うにな り ます。 シ ミ ュレーシ ョ ン run は Flow Navigator から実行するか、 または Tcl コマンドを入力して開始できます。

Flow Navigator からの場合は、 図 8-10 のよ うに [Run Simulation] をク リ ッ ク します。

これに該当する Tcl コマンドを使用する場合は、 launch_simulation

ヒン ト : このコマンドには、 DO ファ イルまたは SH ファ イルを出力するための -scripts_only オプシ ョ ンがあ り ます。どちらのファイルが出力されるかは、 使用しているシ ミ ュレータによって決ま り ます。 IDE 環境外でシ ミ ュレーシ ョンを実行するには、 DO または SH ファ イルを使用してください。

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

シ ミ ュレーシ ョ ンを実行するには、 Flow Navigator で [Run Simulation] をク リ ッ ク し、 次の図に示すよ うに、 ポップアップ メニューから該当オプシ ョ ンを選択します。

ヒン ト : ポップアップ メニューでどのオプシ ョ ンを選択できるかは、デザイン開発段階によって異なり ます。たとえば、合成は実行したけれどもインプリ メンテーシ ョ ンはまだである という場合は、ポップアップ メニューでインプ リメンテーシ ョ ンに関するオプシ ョ ンがグレー表示になっています。

X-Ref Target - Figure 8-10

図 8‐10 :  Flow Navigator のシミ ュレーシ ョ ン  オプシ ョ ン

X-Ref Target - Figure 8-11

図 8‐11 : シミ ュレーシ ョ ンの Run オプシ ョ ン

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 118UG900 (v2015.2) 2015 年 6 月 24 日

Page 119: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

サードパーティ  ツールを使用した RTL/ビヘイビアー シミ ュレーシ ョ ンの実行

compile_simlib コマンドを実行し、エラーもなくプロジェク ト を作成できたら、ビヘイビアー /RTL レベル シ ミ ュレーシ ョ ンを実行するこ とができます。このシ ミ ュレーシ ョ ンを実行しておく と、RTL に目的の機能が反映されます。

ビヘイビアー シ ミ ュレーシ ョ ンを実行するには、 Flow Navigator で [Run Simulation] → [Run Behavioral Simulation] をク リ ッ ク します (図 8-11)。

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

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

合成を実行した後、 [Run Simulation] → [Post-Synthesis Functional Simulation] が使用できるよ うにな り ます (図 8-11)。

合成後は、 シ ミ ュレーシ ョ ン情報がさ らに増えるので、 デザインの機能がどの程度要件を満たしているかど うかを、よ り正確に確認できます。合成後の論理シ ミ ュレーシ ョ ンを選択する と、論理ネッ ト リ ス トが生成され、その UNISIMライブラ リがシ ミ ュレーシ ョ ンに使用されます。

インプリ メンテーシ ョ ン後の論理シミ ュレーシ ョ ン

インプ リ メンテーシ ョ ンを実行した後は、 [Run Simulation] → [Post-Implementation Functional Simulation] が使用できるよ うになり ます (図 8-11)。

インプ リ メンテーシ ョ ン後には、 シ ミ ュレーシ ョ ン情報がさらに増えるので、デザインの機能がどの程度要件を満たしているかど うかを、 よ り正確に確認できます。

インプ リ メンテーシ ョ ン後の論理シ ミ ュレーシ ョ ンを選択する と、論理ネッ ト リ ス トが生成され、その UNISIM ライブラ リがシ ミ ュレーシ ョ ンに使用されます。

タイ ミング シミ ュレーシ ョ ンの実行

ヒン ト : 合成後のタイ ミ ング シ ミ ュレーシ ョ ンは、 合成されたネッ ト リ ス ト からの予測タイ ミ ング遅延を使用します。 インプ リ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンでは実際のタイ ミ ング遅延が使用されます。

合成後およびインプ リ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンを実行する と き、シ ミ ュレータには次のものが含まれます。

• SIMPRIM ライブラ リ コンポーネン ト を含むゲート レベルのネッ ト リ ス ト

• SECUREIP

• 標準遅延フォーマッ ト (SDF) ファ イル

始めに、 デザイン全体の機能を定義します。 デザインがインプリ メン ト される と、 正確なタイ ミ ング情報が利用できるよ うになり ます。

ネッ ト リ ス トおよび SDF を作成するには、 Vivado Design Suite は次の作業を行います。

• -mode timesim オプシ ョ ンを使用してネッ ト リ ス ト ライター write_verilog、 および write_sdf (SDF アノテーター )を呼び出します。

• 生成されたネッ ト リ ス ト をターゲッ ト シ ミ ュレータに送り ます。

これら のオプシ ョ ンは、 20 ページの 「シ ミ ュ レーシ ョ ン設定」 で説明されている る シ ミ ュ レーシ ョ ン設定 で変更できます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 119UG900 (v2015.2) 2015 年 6 月 24 日

Page 120: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

重要 : 合成後と インプ リ メ ンテーシ ョ ン後のタ イ ミ ング シ ミ ュレーシ ョ ンは、 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

96 ページの表 7-2 にはこれらのコマンドが説明されています。

合成後のタイ ミング シミ ュレーシ ョ ン

合成を実行した後は、 [Run Simulation] → [Post-Synthesis Timing Simulation] が使用できるよ うにな り ます (図 8-11)。

合成後のタイ ミ ング シ ミ ュレーシ ョ ンを選択する と、タイ ミ ング ネッ ト リ ス ト と SDF ファ イルが生成されます。ネット リ ス ト ファ イルには $sdf_annotate コマンドが含まれるので、 生成された SDF ファ イルが自動的に指定されます。

インプリ メンテーシ ョ ン後のタイ ミング シミ ュレーシ ョ ン

インプ リ メンテーシ ョ ンを実行した後は、 [Run Simulation] → [Post-Implementation Timing Simulation] が使用できるようになり ます (図 8-11)。

インプ リ メンテーシ ョ ン後のタイ ミ ング シ ミ ュレーシ ョ ンを選択する と、 タイ ミ ング ネッ ト リ ス ト と SDF ファ イルが生成されます。 ネッ ト リ ス ト ファ イルには $sdf_annotate コマンドが含まれるので、 生成された SDF ファ イルが自動的に指定されます。

タイ ミング シミ ュレーシ ョ ン用の SDF ファイルのアノテート

シ ミ ュレーシ ョ ン設定を指定したと きに、 SDF ファ イルを作成するかど うか、 そして、 プロセス コーナーを高速にするか低速にするかを設定しました。

ヒン ト : SDF ファ イル オプシ ョ ンの設定を確認するには、 Vivado IDE の Flow Navigator で、 [Simulation Settings] を選択します。[Project Settings] ダイアログ ボッ クスの [Netlist] タブが開きます 第 2 章の「Vivado シ ミ ュレータのプロジェク ト設定」 も参照してください。

SDF ファ イルには、 指定したプロセス コーナーに基づいて異なる min および max 数値が含まれます。

推奨 : 2 つの異なるシ ミ ュレーシ ョ ンを実行して、 セッ ト アップおよびホールド違反をチェッ クをして ください。

セッ ト アップ チェッ クを実行するには、 –process コーナーを slow にして SDF を作成し、 SDF ファ イルからの max 列を使用します。

ホールド チェッ クを実行するには、 –process コーナーを fast にして SDF ファ イルを作成し、 SDF ファ イルからのmin 列を使用します。 どの SDF 遅延フ ィールドを使用するか指定する方法は、 使用するシ ミ ュレーシ ョ ン ツールによって異なり ます。このオプシ ョ ンの設定方法については、特定のシ ミ ュレーシ ョ ン ツールの資料を参照してください。

4 つのタイ ミ ング シ ミ ュレーシ ョ ンすべてを確認するには、 次のよ うに指定します。

° 低速コーナー : SDFMIN および SDFMAX

° 高速コーナー : SDFMIN および SDFMAX

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 120UG900 (v2015.2) 2015 年 6 月 24 日

Page 121: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

サードパーティ  ツールでシミ ュレーシ ョ ンを実行した後

消費電力解析用の SAIF のダンプ

° 「QuestaSim/ModelSim での SAIF のダンプ」

° 「IES での SAIF のダンプ」

° 「VCS での SAIF のダンプ」

SAIF (Switching Activity Interchange Format) に関する詳細は、 86 ページの 「消費電力解析のための SAIF ファ イルのダンプ」 を参照してください。

QuestaSim/ModelSim での SAIF のダンプ

QuestaSim/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. 次のよ うに入力し、 生成する範囲または信号を指定します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 121UG900 (v2015.2) 2015 年 6 月 24 日

Page 122: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

power <hdl_objects>

2. SAIF ダンプをイネーブルにします。 シ ミ ュレータ ワークスペースでコマンド ラインを使用できます。

power -enable

3. 特定時間、 シ ミ ュレーシ ョ ンを実行します。

4. 次のよ うに入力し、 消費電力のダンプをディ スエーブルにし、 SAIF をレポート します。

power -disablepower -report filename.saif

各コマンドの使用方法や詳細については、 Synopsys 社の VCS の資料を参照してください。

消費電力解析またはデバッグ用の VCD のダンプ

° 「QuestaSim/ModelSim での VCD のダンプ」

° 「IES での VCD ダンプ」

° 「VCSでの VCD のダンプ」

QuestaSim/ModelSim での VCD のダンプ 

QuestaSim/ModelSim では、 VCD コマンドを使用して、 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. シ ミ ュレーシ ョ ンを実行します。

VCSでの VCD のダンプ 

VCS では、dumpvar コマンドを使用して VCD ファ イルを生成するこ とができます。ファ イル名およびインスタンス名を指定します (デフォルトでは階層全体になり ます)。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 122UG900 (v2015.2) 2015 年 6 月 24 日

Page 123: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

vcs +vcs+dumpvars+test.vcd

IP のシミ ュレーシ ョ ン次の例では、 accum_0.xci がザイ リ ンクス IP カタログから生成された IP です。 シ ミ ュレーシ ョ ンを次のコマンドを使用して実行します。

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]

Verilog UNIFAST ライブラリの使用 UNIFAST モデルを使用してシ ミ ュレートするには、 次の 2 つの方法があ り ます。

方法 1 : 

すべての UNIFAST モデルを使用してシ ミ ュレーシ ョ ンするのに推奨される方法です。

[Simulation Settings] をク リ ッ ク して [Enable fast simulation models] チェッ クボッ クスをオンにして、Vivado プロジェクト環境の ModelSim で UNIFAST がサポート されるよ うにします。 詳細は、 18 ページの 「UNIFAST ライブラ リ 」 を参照してください。

方法 2 : 

上級ユーザー用で、 UNIFAST モデルと一緒に使用するモジュールを指定します。 この方法については、 19 ページの「方法 2 : 特定 UNIFAST モジュールの使用」 を参照してください。

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"

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 123UG900 (v2015.2) 2015 年 6 月 24 日

Page 124: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

統合されたシミ ュレーシ ョ ンの実行中のカスタム DO ファイルの使用Vivado IDE は、 起動のたびにシ ミ ュレーシ ョ ン ディ レク ト リ を削除し、 新しいディレク ト リ を作成します。 そこで、カスタムの DO ファ イルまたは UDO ファ イルを使用している場合は、 それをシ ミ ュレーシ ョ ン ディ レク ト リ以外の場所に移動させて、 シ ミ ュレータがそのファイルをポイン トするよ うにしてください。 次のコマンドを使用して、 カスタムの DO ファ イルまたは UDO ファ イルのディ レク ト リ を指定します。

QuestaSim/ModelSim

set_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]

IES

set_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]

VCS

set_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 ファ イルにこのコマンドを含めておく とよいでし ょ う。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 124UG900 (v2015.2) 2015 年 6 月 24 日

Page 125: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 A : Vivado シミ ュレータの Tcl コマンドの値の規則

付録 A

Vivado シミ ュレータの Tcl コマンドの値の規則

概要この付録には、 Tcl コマンドの add_force および set_value の両方に適用される値の規則が含まれます。

文字列の値の解釈文字列の値は、 HDL オブジェク トの宣言型と -radix コマンド ラ イン オプシ ョ ンで決ま り ます。 -radix を使用する と、HDL オブジェク ト型で決定されたデフォルトの基数が常に上書きされます。

• logic 型の HDL オブジェク トの場合、値は or で、 1 次元配列の logic 型の場合、値は指定した基数の桁数の文字列です。

° 文字列の指定するビッ トが予測される型よ り も小さい場合、 文字列はその型の長さに一致するよ うに暗示的にゼロ拡張 (符号拡張ではない) になり ます。

° 文字列の指定するビッ トが予測されるがたよ り も大きい場合、 MSB 側の余分ビッ トが 0 になっていないと、サイズの不一致エラーになり ます。

たとえば、 基数が 16 進数で 6 ビッ トの logic 配列を使用する場合、 値 3F は 8 ビッ ト (16 進数の桁ごとに 4ビッ ト ) にな り ます。 これは、 2 進数では 0011 1111 です。 しかし、 3 のうち上位 2 ビッ トが 0 なので、 値はHDL オブジェク トに代入できます。反対に、7F の場合、上位 2 ビッ トが 0 ではないので、エラーになり ます。

° scalar (array または record ではない) の logic の HDL オブジェク トの暗示的長さは 1 ビッ トです。

° a [left:right] (Verilog) または a(left TO/DOWNTO right) と宣言される logic 配列の場合、一番左の値のビッ ト (拡張/切り捨て後) が a[left] に代入され、 一番右のビッ トが a[right] に代入されます。

Vivado Design Suite シミ ュレーシ ョ ン  ロジックlogic は、 HDL で定義される概念ではあ り ませんが、 Vivado® シ ミ ュレータで使用される発見的なものです。

• Verilog オブジェク トは、 暗示的な Verilog の bit 型の場合は wire および reg オブジェク トや整数、 時間を含めたlogic 型の一部と して考えられます。

• VHDL オブジェク トは、 オブジェク ト型が bit、 std_logic、 または列挙型 (列挙子が std_logic の列挙型のサブセットで少なく と も 0 および 1 が含まれる ) の場合、 またはオブジェク トの型がこのよ う な型の 1 次元配列である場合は、 logic 型の一部と して考えられます。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 125UG900 (v2015.2) 2015 年 6 月 24 日

Page 126: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 A : Vivado シミ ュレータの Tcl コマンドの値の規則

• VHDL 列挙型の HDL オブジェク トの場合、値は列挙子文字列のいずれかになり ます。 列挙子が文字ではない場合シングル クォーテーシ ョ ン (') は含めません。 基数は無視されます。

• 整数型の VHDL オブジェク トの場合、 その型の範囲内で値は符号付きの 10 進数の整数にできます。 基数は無視されます。

• VHDL および Verilog の浮動小数点型の場合、 値は浮動小数点になり ます。 基数は無視されます。

• すべての型の HDL オブジェク トで Tcl コマンド set による値の設定はサポート されません。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 126UG900 (v2015.2) 2015 年 6 月 24 日

Page 127: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 B

Vivado シミ ュレータの混合言語サポートおよび例外

概要Vivado® Integrated Design Environment (IDE) では、 次の言語がサポート されます。

• VHLD の場合は、 『IEEE 規格 VHDL 言語リ ファレンス マニュアル (IEEE-STD-1076-1993) [参照 1] を参照してください。

• Verilog の場合は、『IEEE 規格 Verilog ハードウェア記述言語 (IEEE-STD-1364-2001) [参照 2] を参照してください。

• 合成可能な SystemVerilog サブセッ トの場合は、『IEEE 規格 Verilog ハードウェア記述言語 (IEEE-STD-1800-2009)』[参照 3] を参照して ください。

• IEEE P1735 暗号化の場合は、 『Recommended Practice for Encryption and Management of Electronic Design IntellectualProperty (IP)』 (IEEE-STD-P1735) [参照 5] を参照して ください。

この付録では、 Vivado シ ミ ュレータで適用される混合言語と、 Verilog、 SystemVerilog、 VHDL サポートに対する例外について説明します。

混合言語シミ ュレーシ ョ ンの使用Vivado シ ミ ュレータでは、混合言語プロジェク ト ファ イルおよび混合言語シ ミ ュレーシ ョ ンがサポート されるので、Verilog モジュールを VHDL デザインに含めたり、 VHDL モジュールを Verilog/System Verilog (SV) デザインに含めたりできます。

シミ ュレーシ ョ ンでの混合言語の制限

• VHDL デザインには Verilog/System Verilog (SV) モジュールをインスタンシエートでき、 Verilog/SV デザインにはVHDL コンポーネン ト をインスタンシエートできます。Verilog/SV モジュールと VHDL コンポーネン トの結合には、 コンポーネン ト インスタンシエーシ ョ ン ベースのデフォルトの結合が使用されます。 VHDL プロセス文でVerilog ファンクシ ョ ンを呼び出すといったよ うな VHDL と Verilog の混合使用はサポート されません。

• VHDL 型、 ジェネ リ ッ ク、 ポートのサブセッ トが Verilog/SV モジュールへのバウンダ リ上で使用できます。 同様に、 Verilog/SV 型、 パラ メーター、 ポートのサブセッ トが VHDL コンポーネン トに対するバウンダ リ上で使用できます。 詳細は、 130 ページの表 B-2を参照してください。

重要 : Verilog オブジェク トへの VHDL レコード オブジェク トの接続はサポート されていませんが、 サポート されるがたの VHDL レコード エレ メン トは互換性のある Verilog ポートに接続できます。

• Verilog/SV 階層参照では VHDL ユニッ トは参照できず、 VHDL 拡張/選択名では Verilog/SV ユニッ トは参照できません。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 127UG900 (v2015.2) 2015 年 6 月 24 日

Page 128: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 B : Vivado シミ ュレータの混合言語サポートおよび例外

ただし、 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 で指定したライブラ リ検索順が使用されます。

混合言語の結合と検索

VHDL コンポーネン ト または Verilog/SV モジュールに、 Verilog/SV モジュールを VHDL アーキテクチャにインスタンシエートするには、 xelab コマンドを使用します。

• まず、 インスタンシエートするデザイン ユニッ ト と して同じ言語のユニッ ト を検索します。

• 同じ言語のユニッ トが見つからない場合は、xelab を使用し、 -L オプシ ョ ンで指定したライブラ リ内で両方の言語のデザイン ユニッ ト を検索します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 128UG900 (v2015.2) 2015 年 6 月 24 日

Page 129: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 B : Vivado シミ ュレータの混合言語サポートおよび例外

この検索順は、 xelab コマンド ラインでライブラ リが表示される順序と同じです。 詳細は、 19 ページの 「方法 1 : 完全 UNIFAST ライブラ リ (推奨)」 を参照してください。

注記 : Vivado IDE を使用する場合、 ライブラ リ検索順は自動的に指定されます。ユーザーは設定する必要がないので、設定できません。

混合言語コンポーネン トのインスタンシエーシ ョ ン

混合言語デザインの場合、 次のセクシ ョ ンで説明するよ うに、 Verilog/SV モジュールを VHDL アーキテクチャに、 または VHDL コンポーネン ト を Verilog/SV モジュールにインスタンシエートできます。

ポート タイプが一致しているかど うかは、 130 ページの 「ポート マップおよびサポート されるポート タイプ」 を参照して ください。

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);

);

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 129UG900 (v2015.2) 2015 年 6 月 24 日

Page 130: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 B : Vivado シミ ュレータの混合言語サポートおよび例外

ポート  マップおよびサポート されるポート  タイプ

表 B-1 は、 サポート されるポート タイプを リ ス ト しています。

次の表は、混合言語デザインのバウンダ リでサポート されるポートの VHDL および Verilog データ型を示しています。

注記 : Verilog 出力ポートの reg 型は、混合言語バウンダ リでサポート されます。バウンダ リ上では、出力ポート reg が出力ネッ ト (ワイヤ) ポートのよ うに処理されます。 これ以外の型が混合言語バウンダ リで使用される と、 エラーとなり ます。

注記 : Vivado シ ミ ュレータでは、 混合ド メ インにインスタンシエー ト される Verilog モジュールのポート マップでactual と してレコード エレ メン トがサポート されます。 VHDL ポートでサポート されるこれらのタイプ (表 B-2) はすべてレコード エレ メン ト と してもサポート されます。

表 B‐1 :サポート されるポート  タイプ  

VHDL 1 Verilog/SV 2 

IN INPUT

OUT OUTPUT

INOUT INOUT

1. VHDL のバッファおよびリ ンケージ ポートはサポート されません。

2. Verilog の双方向パス オプシ ョ ンへの接続はサポート されません。名前の付いていない Verilog ポートは混合デザインのバウンダ

リでは使用できません。

表 B‐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

表 B‐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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 130UG900 (v2015.2) 2015 年 6 月 24 日

Page 131: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 B : 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

表 B‐3 :サポート される  SV および VHDL データ型 (Cont’d)

SV データ型 VHDL データ型

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 131UG900 (v2015.2) 2015 年 6 月 24 日

Page 132: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 B : Vivado シミ ュレータの混合言語サポートおよび例外

ジェネリ ック  (パラメーター ) のマップ

Vivado シ ミ ュレータでは、 次の VHDL ジェネ リ ッ ク タイプ (および Verilog/System Verilog (SV) の対応するもの) がサポート されます。

• integer

• real

• string

• boolean

注記 : これ以外のジェネ リ ッ ク型が混合言語バウンダ リで使用される と、 エラーとな り ます。

VHDL および Verilog 値のマップ

表 B-4 は、 std_logic および bit への Verilog ステートのマップを リ ス ト しています。

注記 : Verilog の駆動電流は無視されます。 VHDL には、 これに対応するマップがあ り ません。

表 B-5 は、 Verilog ステートにマップされる VHDL 型 bit を リ ス ト しています。

signed

unsigned

logic/bit

bit

std_logic

std_ulogic

bit_vector

std_logic_Vector

std_ulogic_vector

signed

unsigned

表 B‐3 :サポート される  SV および VHDL データ型 (Cont’d)

SV データ型 VHDL データ型

表 B‐4 : std_logic および bit へマップされる Verilog ステート

Verilog std_logic bit

Z Z 0

0 0 0

1 1 1

X X 0

表 B‐5 : Verilog ステートにマップされる VHDL の bit

bit Verilog

0 0

1 1

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 132UG900 (v2015.2) 2015 年 6 月 24 日

Page 133: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 B : Vivado シミ ュレータの混合言語サポートおよび例外

表 B-6 は、 Verilog ステートにマップされる VHDL 型 std_logic を リ ス ト しています。

Verilog では大文字/小文字が区別されるので、 コンポーネン ト宣言で使用する関連付けおよびローカル ポー ト名はVerilog ポート名の大文字/小文字と一致している必要があ り ます。

VHDL 言語サポートの例外言語のコンス ト ラ ク トの中には、 Vivado シ ミ ュレータでサポート されないものもあ り ます。 表 B-7 は、 VHDL 言語サポートの例外を リ ス ト しています。

.

表 B‐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

表 B‐7 : VHDL 言語サポートの例外

サポート される VHDL コンス ト ラク ト 例外

abstract_literal 底付き定数と して表示される浮動小数点はサポート されません。

alias_declaration オブジェク ト以外へのエイ リ アスは通常、 特に次の場合サポート されません。

エイ リ アスのエイ リ アス

subtype_indication なしのエイ リ アス宣言 エイ リ アス宣言のシグナチャ

alias_designator と しての演算子シンボル 演算子シンボルのエイ リ アス エイ リ アス宣言と しての文字リテラル

alias_designator alias_designator と しての operator_symbolalias_designator と しての character_literal

association_element 結合エレ メン トの実際のスライスについては、グローバル、ローカルな固定範囲を使用できます。

attribute_name 接頭語の後のシグナチャはサポート されません。

binding_indication entity_aspect を使用しない binding_indication はサポート されません。

bit_string_literal 空の bit_string_literal (" ") はサポート されません。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 133UG900 (v2015.2) 2015 年 6 月 24 日

Page 134: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 B : Vivado シミ ュレータの混合言語サポートおよび例外

block_statement guard_expression はサポート されません。 たとえば、 保護付きブロ ッ ク、 保護付き信号、 保護付きターゲッ トおよび保護付き代入はサポート されません。

choice case 文での choice と しての aggregate の使用はサポート されません。

concurrent_assertion_statement postponed はサポート されていません。

concurrent_signal_assignment_statement postponed はサポート されていません。

concurrent_statement wait 文を含む並列手続き呼び出しはサポート されません。

conditional_signal_assignment オプシ ョ ンの一部であるキーワード guarded は、 保護付き信号代入がサポート されないため、 サポート されません。

configuration_declaration コンフ ィギュレーシ ョ ンで使用される generate インデッ クスのローカルではない固定範囲はサポート されません。

entity_class エンティティ ク ラス と してのリテラル、 ユニッ ト、 ファ イル、 グループはサポート されません。

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 postponed プロセスはサポート されません。

selected_signal_assignment オプシ ョ ンの一部であるキーワード guarded は、 保護付き信号代入がサポート されないため、 サポート されません。

signal_declaration signal_kind はサポート されません。 signal_kind はサポートされない保護付き信号を宣言するために使用されます。

subtype_indication 分解された複合体 (配列およびレコード ) のサブタイプはサポート されません。

waveform unaffected はサポート されていません。

waveform_element 空の waveform エレ メン トは、保護付き信号にのみ関連するため、 サポート されません。

表 B‐7 : VHDL 言語サポートの例外 (Cont’d)

サポート される VHDL コンス ト ラク ト 例外

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 134UG900 (v2015.2) 2015 年 6 月 24 日

Page 135: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 B : Vivado シミ ュレータの混合言語サポートおよび例外

Verilog 言語サポートの例外 表 B-8 では、 Verilog の言語サポートの例外について リ ス ト します。

表 B‐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 規格 Verilog ハードウェア記述言語 (IEEE 1364-2001) セクシ ョ ン 13.2 [参照 2]) からの出力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

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 135UG900 (v2015.2) 2015 年 6 月 24 日

Page 136: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 B : Vivado シミ ュレータの混合言語サポートおよび例外

genvar_assignment 部分的にサポート。 すべての generate ブロッ クに名前を付ける必要があ り ます。 規格 ( 『IEEE 規格 Verilog ハードウェア記述言語 (IEEE 1364-2001) セクシ ョ ン 13.2 [参照 2]) からの出力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 規格Verilog ハードウェア記述言語』 (IEEE 1364-2001) セクシ ョ ン 13.2 [参照 2])。 これは、 `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 サポート なし

$sync$or$array サポート なし

$async$and$plane サポート なし

$async$nand$plane サポート なし

表 B‐8 : Verilog 言語サポートの例外 (Cont’d)

Verilog コンス ト ラク ト   例外

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 136UG900 (v2015.2) 2015 年 6 月 24 日

Page 137: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 B : Vivado シミ ュレータの混合言語サポートおよび例外

$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

サポート なし

表 B‐8 : Verilog 言語サポートの例外 (Cont’d)

Verilog コンス ト ラク ト   例外

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 137UG900 (v2015.2) 2015 年 6 月 24 日

Page 138: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 C : Vivado シミ ュレータ  クイック  リファレンス ガイド

付録 C

Vivado シミ ュレータ  クイック  リファレンス ガイド

概要表 C-1 は、 よ く使用される Vivado® シ ミ ュレータ コマンドのク イ ッ ク リ ファレンスおよび例を示しています。

.

表 C‐1 :標準モード  : コマンド  ラインからの解析、 エラボレート、 シミ ュレーシ ョ ンの実行

HDL ファイルの解析

Vivado シ ミ ュレータでは、 Verilog、 SystemVerilog および VHDL の 3 つのタイプの HDL ファ イルがサポート されています。 これらのサポート されるファ イルは XVHDL および XVLOG コマンドを使用して解析できます。

VHDL ファイルの解析

xvhdl file1.vhd file2.vhdxvhdl -work worklib file1.vhd file2.vhdxvhdl -prj files.prj

Verilog ファイルの解析

xvlog file1.v file2.vxvlog -work worklib file1.v file2.vxvlog -prj files.prj

SystemVerilog ファイルの解析

xvlog -sv file1.v file2.vxvlog -work worklib -sv file1.v file2.vxvlog -prj files.prj 注記 : PRJ ファ イル形式に関する詳細は、 第 7 章の 「プロジェク ト ファイル (.prj) の構文」 を参照してく

ださい。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 138UG900 (v2015.2) 2015 年 6 月 24 日

Page 139: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 C : Vivado シミ ュレータ  クイック  リファレンス ガイド

その他の xvlog および xvhdl オプシ ョ ン

xvlog および xvhdl の主なオプシ ョ ン

コマンド オプシ ョ ンの全リ ス トについては、 96 ページの表 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 オプシ ョ ンを付けない場合、 xelab ではすべてのユニ ッ ト 名を ま と めてスナップシ ョ ッ トが作成されます。

コマン ド  ライン  ヘルプおよび xelab オプシ ョ ン

xelab -help

96 ページの 「xelab、 xvhd、 xvlog コマンド オプシ ョ ン」

シミ ュレーシ ョ ンの実行 

表 C‐1 :標準モード  : コマンド  ラインからの解析、 エラボレート、 シミ ュレーシ ョ ンの実行 (続き)

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 139UG900 (v2015.2) 2015 年 6 月 24 日

Page 140: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 C : Vivado シミ ュレータ  クイック  リファレンス ガイド

解析、 エラボレート、 コンパイル段階が問題なく終了したら、 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.vxvhdl top.vhdxelab work.top -s topxsim top -R

2 段階

xelab -prj my_prj.prj work.top -s topxsim top -R

my_prj.prj ファ イルには、 次が含まれます。

verilog work bot.vvhdl work top.vhd

1 段階

xelab -prj my_prj.prj work.top -s top -R

my_prj.prj ファ イルには、 次が含まれます。verilog work bot.vvhdl work top.vhd

Vivado シ ミ ュレーシ ョ ンの Tcl コマン ド

次は、 よ く使用される Tcl コマンドです。 すべてのリ ス トについては、 Tcl コンソールで次のコマンドを入力してください。 • load_features simulator• help -category simulation

Tcl コマンドの詳細は、 次を入力してください。 -help <Tcl_command>

表 C‐1 :標準モード  : コマンド  ラインからの解析、 エラボレート、 シミ ュレーシ ョ ンの実行 (続き)

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 140UG900 (v2015.2) 2015 年 6 月 24 日

Page 141: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 C : Vivado シミ ュレータ  クイック  リファレンス ガイド

よ く使用される  Vivado シミ ュレータの Tcl コマンド  

add_bp HDL ソースの行にブレークポイン ト を追加します。 Tcl コマンド例は、 64 ページを参照して ください。

add_force 信号、 ワイヤ、 またはレジスタを特定の値に強制的に設定します。 Tcl コマンド例は、 68 ページを参照してください。

current_timenow

現在のシ ミ ュレーシ ョ ン時間をレポート します。 Tcl スク リプ トでのこのコマンドの例は、 107 ページの 「current_time」を参照してください。

current_scope 現在の作業中の HDL スコープをレポート または設定します。詳細は、 34 ページの 「その他のスコープおよびソース オプシ ョ ン」 を参照してください。

get_objects 1 つまたは複数の HDL スコープで、 指定したパターンごとに HDL オブジェク トの リ ス ト を取得します。 たとえば、 コマンドの使用方法については、 74 ページの 「log_saif [get_objects -filter {type == in_port || type == out_port || type == inout_port || type == port } /tb/UUT/* ]」 を参照してください。

get_scopes 子 HDL スコープのリ ス ト を取得します。 詳細は、 34 ページの 「その他のスコープおよびソース オプシ ョ ン」 を参照してください。

get_value 選択した HDL オブジェク ト (変数、信号、 ワイヤ、 レジスタ) の現在の値を取得します。 詳細は、 Tcl コンソールに get_value -help と入力する と取得できます。

launch_simulation Vivado シ ミ ュレータを使用してシ ミ ュレーシ ョ ンを実行します。

remove_bps シ ミ ュレーシ ョ ンからブレークポイン ト を削除します。 Tcl コマンド例は、 65 ページを参照して ください。

report_drivers HDL ワイヤまたは信号オブジェク トのド ライバーと現在の駆動値を表示します。 詳細は74 ページの 「Tcl コマンド report_drivers の使用」 を参照してください。

report_values 指定した HDL オブジェク ト (変数、 信号、 ワイヤ、 またはレジスタ ) の現在のシ ミ ュレーシ ョ ン値を表示します。 Tcl コマンド例は、 34 ページを参照して ください。

restart シ ミ ュレーシ ョ ンをデザインを読み込んだ後のよ うな状態に戻し、 時間を 0 に設定します。 詳細は、 29 ページを参照してください。

set_value HDL オブジェク ト (変数、 信号、 ワイヤ、 またはレジスタ ) を特定の値に設定します。 詳細は付録 A 「Vivado シ ミ ュレータの Tcl コマンドの値の規則」 を参照して ください。

step シ ミ ュレーシ ョ ンを次の文に進めます。 63 ページの 「シミ ュレーシ ョ ンのステップ実行」 を参照してください。

表 C‐1 :標準モード  : コマンド  ラインからの解析、 エラボレート、 シミ ュレーシ ョ ンの実行 (続き)

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 141UG900 (v2015.2) 2015 年 6 月 24 日

Page 142: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 D : Vivado シミ ュレータでサポート される  SystemVerilog コンスト ラク ト

付録 D

Vivado シミ ュレータでサポート される SystemVerilog コンスト ラク ト

概要 Vivado® シ ミ ュレータでは、合成可能な SystemVerilog RTL の一部がサポート されます。そのリ ス トは、表 D-1 を参照して ください。

特定のファイルで SystemVerilog を使用

Vivado シ ミ ュレータは、 デフォルトで、 Verilog 2001 構文の V ファ イル、 SystemVerilog 構文の SV ファ イルをコンパイルします。

Vivado IDE で特定の V ファ イルに SystemVerilog を使用するには、 次の手順に従います。

1. ファ イルを右ク リ ッ ク して [Set File Type] をク リ ッ ク します (次の図を参照)。X-Ref Target - Figure D-1

図 D‐1 : [Set File Type] コンテキスト  メニュー

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 142UG900 (v2015.2) 2015 年 6 月 24 日

Page 143: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 D : Vivado シミ ュレータでサポート される  SystemVerilog コンスト ラク ト

2. 次の図に示すよ うに、[Set 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 D-2

図 D‐2 : [Source Node Properties] → [Set File Type]

表 D‐1 : SystemVerilog 1800‐2009 の合成可能なセッ ト

プライマリ  コンスト ラク ト セカンダリ  コンスト ラク ト LRM セクシ ョ ン ステータス

データ型 6

単一または集成型 6.4 サポート あ り

ネッ トおよび変数 6.5 サポート あ り

変数宣言 6.8 サポート あ り

ベクター宣言 6.9 サポート あ り

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 143UG900 (v2015.2) 2015 年 6 月 24 日

Page 144: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 D : Vivado シミ ュレータでサポート される  SystemVerilog コンスト ラク ト

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 サポート あ り

ユニオン 7.3 サポート あ り

パッ ク /パッ クなしユニオン 7.3.1 サポート あ り

タグ付きユニオン 7.3.2 サポート なし

パッ ク配列 7.4.1 サポート あ り

パッ クなし配列 7.4.2 サポート あ り

配列の演算 7.4.3 サポート あ り

多次元配列 7.4.5 サポート あ り

配列のインデッ ク スおよびスライス

7.4.6 サポート あ り

配列代入 7.6 サポート あ り

サブルーチンへの引数と しての配列

7.7 サポート あ り

配列クエリー関数 7.11 サポート あ り

配列操作メ ソ ッ ド (キュー型を返さないメ ソ ッ ド )

7.12 サポート あ り

プロセス 9

表 D‐1 : SystemVerilog 1800‐2009 の合成可能なセッ ト  (続き)

プライマリ  コンスト ラク ト セカンダリ  コンスト ラク ト LRM セクシ ョ ン ステータス

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 144UG900 (v2015.2) 2015 年 6 月 24 日

Page 145: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 D : Vivado シミ ュレータでサポート される  SystemVerilog コンスト ラク ト

組 み 合 わ せ ロ ジ ッ ク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 サポート あ り

stream_expressions の連結

11.4.14.1 サポート あ り

ジェネ リ ッ ク ス ト リームの並び替え

11.4.14.2 サポート あ り

表 D‐1 : SystemVerilog 1800‐2009 の合成可能なセッ ト  (続き)

プライマリ  コンスト ラク ト セカンダリ  コンスト ラク ト LRM セクシ ョ ン ステータス

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 145UG900 (v2015.2) 2015 年 6 月 24 日

Page 146: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 D : Vivado シミ ュレータでサポート される  SystemVerilog コンスト ラク ト

代入ターゲッ ト と しての連結のス ト リ ー ミ ング (アンパック )

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 サポート あ り

u n i q u e - c a s e 、unique0-case、 お よ びpriority-case

12.5.3 サポート あ り

u n i q u e - c a s e 、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 サポート あ り

表 D‐1 : SystemVerilog 1800‐2009 の合成可能なセッ ト  (続き)

プライマリ  コンスト ラク ト セカンダリ  コンスト ラク ト LRM セクシ ョ ン ステータス

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 146UG900 (v2015.2) 2015 年 6 月 24 日

Page 147: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 D : Vivado シミ ュレータでサポート される  SystemVerilog コンスト ラク ト

名前による引数バインディ ング

13.5.4 サポート あ り

オプシ ョ ンの引数リ ス ト 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 サポート なし

表 D‐1 : SystemVerilog 1800‐2009 の合成可能なセッ ト  (続き)

プライマリ  コンスト ラク ト セカンダリ  コンスト ラク ト LRM セクシ ョ ン ステータス

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 147UG900 (v2015.2) 2015 年 6 月 24 日

Page 148: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 D : Vivado シミ ュレータでサポート される  SystemVerilog コンスト ラク ト

インターフェ イスおよび指定ブロッ ク

25.6 サポート なし

インターフェ イスでのタス クの使用例

25.7.1 サポート あ り

modport でのタスクの使用例 25.7.2 サポート あ り

タ ス ク および関数のエ ク スポート例

25.7.3 サポート あ り

複数タスクのエクスポート例 25.7.4 サポート なし

パラ メーター指定されたインターフェイス

25.8 サポート あ り

仮想インターフェイス 25.9 サポート なし

パッケージ 26

パッケージ宣言 26.2 サポート あ り

パッケージでのデータ参照 26.3 サポート あ り

モジュール ヘッダーでのパッケージの使用

26.4 サポート あ り

パッケージからのインポー トされた名前のエクスポート

26.6 サポート あ り

std ビルト イン パッケージ 26.7 サポート なし

generate コンスト ラク ト 27 サポート あ り

表 D‐1 : SystemVerilog 1800‐2009 の合成可能なセッ ト  (続き)

プライマリ  コンスト ラク ト セカンダリ  コンスト ラク ト LRM セクシ ョ ン ステータス

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 148UG900 (v2015.2) 2015 年 6 月 24 日

Page 149: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

付録 D : Vivado シミ ュレータでサポート される  SystemVerilog コンスト ラク ト

ダイナミ ック  タイプ : アーリー アクセス次の表に示すよ うに、Vivado シ ミ ュレータには、 よ く使用されるダイナミ ッ ク タイプの一部の基本サポートが追加されています。

重要 : このサポートは現時点ではアーリー アクセスになっています。

表 D‐2 :サポート されるダイナミ ック  タイプ コンスト ラク ト  : アーリー アクセス

コンスト ラク ト名 サポート機能の詳細

文字列 • 文字列割り当て

• ス ト ラ ク ト メ ンバーと しての文字列

• すべての文字列演算子

• 文字列メ ソ ッ ド

° len()、 putc()、 getc()

° toupper()、 tolower()

° compare()、 icompare()

° substr()、 atoi()

° atobin()、 atohex()

キュー • 一定順序でのキュー挿入。 システム メモ リがいっぱいになるまでキューをダイナミ ッ クに増やすこ と も、 これに含まれます。

° push_front()、 push_back()• 一定順序でのキューの削除

• キュー ファンクシ ョ ン

° size()、 delete()• 一定順序でのランダム アクセス (my_queue[i] で読み出しおよび書き込み

の両方)• 前回ロケーシ ョ ンでのインデッ クス化による挿入をサポート

連想配列 次のタイプのキーをサポート : • ベクター、 multi-D array、 packed struct、 class

° ダイナミ ッ ク タイプを含む、 サポート されているタイプの値

• 連想配列メ ソ ッ ド

° size()、 number()、 delete()

° first()、 next()、 last()、 prev()

ク ラス • new で呼び出されるコンス ト ラ ク タ

• 初期値でのメンバー

• メ ンバー ファンクシ ョ ン

• キーワード this

合成できないコンス ト ラ ク ト • fork-join_none

• $urandom および $urandom_range

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 149UG900 (v2015.2) 2015 年 6 月 24 日

Page 150: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

付録 E

Vivado シミ ュレータのダイレク ト  プログラミング インターフェイス (DPI)

概要SystemVerilog ダイレク ト プログラ ミ ング インターフェイス (DPI) を使用する と、 C コード と SystemVerilog コードをま とめるこ とができるほか、 SystemVerilog コードで C 関数を呼び出した り、 C 関数から SystemVerilog タスクまたは関数を呼び戻したりできます。 Vivado® シ ミ ュレータでは、 現在のと ころ、 次に示す DPI の機能がサポート されています。

C コードのコンパイルxsc という コンパイラ実行ファイルが新し く含まれており、 C コードをオブジェク ト コードに変換して、複数のオブジェク ト コード ファ イルを共有ライブラ リ (Windows の場合は .a、 Linux の場合は .so) にリ ンクできるよ うになっています。 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間の効率的な通信を可能にする機能があ り ます。

xsc コンパイラーの説明xsc コンパイラーを使用する と、 1 つまたは複数の C ファ イルから共有ライブラ リ (Windows の場合は .a、 Linux の場合は .so) を作成できます。 この xsc で生成された共有ライブラ リ を残りのデザインに含めるには、 xelab を使用します。 共有ライブラ リ を作成するには、 1 段階プロセス と 2 段階プロセスの 2 つの方法があ り ます。

ワンステップ プロセス :

-compile や -link オプシ ョ ンを付けずに、 すべての C ファ イルを xsc に渡します。

ツー ステップ プロセス :

xsc -compile <C files>

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 150UG900 (v2015.2) 2015 年 6 月 24 日

Page 151: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

xsc -link <object files>

使用方法 : 

xsc [options] <files...>

オプシ ョ ン

オプシ ョ ンには、 ダブル ダッシュ (--) かダッシュ (-) を使用できます。

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

表 E‐1 : XSC コンパイラ  オプシ ョ ン

-compile オブジェク ト ファ イルをソース C ファ イルからのみ生成します。 リ ンク ステージは実行されません。

-f [ -file ] arg 指定したファイルから追加オプシ ョ ンを読み出します。

-h [ -help ] このヘルプ メ ッセージを表示します。

-i [ -input_file ] arg コンパイルまたはリ ンク用の入力ファイルを リ ス ト します (1 つのオプシ ョ ンに 1 つのファイル)。

-link リ ンク ステージのみを実行して、 オブジェク ト ファ イル (.a または .so) から共有ライブラ リ を生成します。

-mt arg (=auto) 並列実行可能なサブコンパイル ジ ョブの数を指定します。 選択肢は次のとおりです。

auto : 自動

n : n は 1 よ り大きい整数

off : マルチスレッ ドをオフ

(デフォルト : auto)

-o [ -output ] arg 出力される共有ライブラ リの名前を指定します。 -link オプシ ョ ンとのみ併用できます。

-work arg 出力される作業ディ レク ト リ を指定します。(デフォルト : <current_directory>/xsim.dir/xsc)

-v [ -verbose ] arg 表示メ ッセージの詳細レベルを指定します。 使用できる値 : 0、 1(デフォルト : 0)

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 151UG900 (v2015.2) 2015 年 6 月 24 日

Page 152: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

xelab を使用したコンパイル済み C コードの SystemVerilog への統合コンパイルした C コードを SystemVerilog に統合する xelab の DPI に関するオプシ ョ ンは、 次のとおりです。

r-sv_liblist arg の詳細は、『IEEE Standard for SystemVerilog—Unified Hardware Design, Specification, and VerificationLanguage』 [参照 3] の 1228 ページ目の付録 J.4.1 を参照してください。

C および SystemVerilog のバウンダリで使用可能なデータ型『IEEE Standard for SystemVerilog』 [参照 3] では、C および SystemVerilog バウンダ リの C および SystemVerilog データ型のサブセッ トのみが許可されています。 次は、 Vivado シ ミ ュレータでサポート されるデータ型と、 C と SystemVerilogデータ型間のマッピングの詳細について示しています。

-sv_root arg 検索する必要のある DPI 共有ラ イブラ リ に関連するルー ト ディ レ ク ト リ (デフォルト : <current_directory>/xsim.dir/xsc)

-sv_lib arg SystemVerilog にインポート される C 関数を定義する DPI 共有ライブラ リの名前 (ファ イル拡張子なし )

-sv_liblist arg DPI 共有ライブラ リ をポイン トするブート ス ト ラ ップ ファ イル

-dpiheader arg インポー ト およびエク スポー ト されたフ ァ ン クシ ョ ンの C 宣言を含む DPIヘッダー ファ イルを生成

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 152UG900 (v2015.2) 2015 年 6 月 24 日

Page 153: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

サポート されるデータ型

次の表は、 C および SystemVerilog バウンダ リで使用可能なデータ型と、 C から SystemVerilog または SystemVerilog から C へのデータ型のマッピングについてまとめています。

SystemVerilog データ型の C データ型へのマップ方法を示す C ヘッダー フ ァ イルを生成するには、 -dpiheader<file name> パラ メーターを xelab に渡します。 データ型マッピングに関するその他の詳細については、 『IEEEStandard for SystemVerilog』 [参照 3] を参照してください。

ユーザー定義型のマッピング

enum

同等の SystemVerilog 型 (enum の基本型によって svLogicVecVal または svBitVecVal) への変換には、 列挙型(enum) を定義できます。 列挙型のアレイの場合は、 同等の SystemVerilog アレイが作成されます。

表 E‐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, sv_z, sv_x

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 型 あり なし

bit、 logic のパッ ク されたアレイ

アレイ と して渡される あ り なし

パッ ク された struct、 union アレイ と して渡される あ り なし

bit、 logic のアンパッ ク されたアレイのみ

アレイ と して渡される エクスポートのみ C は SystemVerilog を呼び出し可能

アンパッ ク された struct struct と して渡される あ り なし

アンパッ ク された unions struct と して渡される × なし

アレイを開く svOpenArrayHandle × なし

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 153UG900 (v2015.2) 2015 年 6 月 24 日

Page 154: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

例 :

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)];

アレイは、 パッ ク されていても されていなくても、 svLogicVecVal または svBitVecVal のアレイ と して表記されます。

アンパックされた struct/union 

同等のアンパッ ク型は C 側で作成され、 すべてのメンバーが同等の C 表記に変換されます。

例 :

SystemVerilog 型 :

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 154UG900 (v2015.2) 2015 年 6 月 24 日

Page 155: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

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;

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);

例注記 :次のすべての例は、 問題なく実行される と PASSED と表示されます。

次に例を示します。

• 「-sv_lib、 -sv_liblist、 および -sv_root を使用したインポート例」 : -sv_lib、 -sv_liblist および -sv_root オプシ ョ ンを使用するインポート例

• 「出力を含む関数」 :出力引数を含む関数

• 「単純なインポート → エクスポート フロー (xelab -dpiheader フロー )」 : 単純なインポートからエクスポートのフロー ( xelab -dpiheader <filename> フロー ) を示す例

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 155UG900 (v2015.2) 2015 年 6 月 24 日

Page 156: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

‐sv_lib、 ‐sv_liblist、 および ‐sv_root を使用したインポート例

コード

次のファイルが存在する と仮定します。

• C 関数を含むファイル 2 つ

• これらの関数を使用する SystenVerilog ファ イル 1 つ

cat function1.c

#include "svdpi.h"

DPI_DLLESPECint myFunction1(){ return 5;}

cat function2.c

#include <stdio.h>DPI_DLLESPECint myFunction2(){ return 10;}

cat 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

使用法

次に C ファ イルをコンパイルして Vivado シ ミ ュレータにリ ンクする方法を示します。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 156UG900 (v2015.2) 2015 年 6 月 24 日

Page 157: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

ワンステップ フロー (最も簡単なフロー )

xsc function1.c function2.cxelab -svlog file.sv -sv_lib dpi

フローの説明 :

xsc コンパイ ラーが C コードをコンパイルして リ ンク して、 共有ラ イブラ リ (xsim.dir/xsc/dpi.so) を作成し、 xelab がこの共有ライブラ リ を -sv_lib オプシ ョ ンを使用して参照します。

ツーステップ フロー : 

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 オプシ ョ ンで指定された共有ライブラ リ を検索するディレク ト リ を指定します。

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 という共有ライブラ リが作成されます。この例では、ファ イル パスのスペースがどのよ うに処理されるかも示しています。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 157UG900 (v2015.2) 2015 年 6 月 24 日

Page 158: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

出力を含む関数

コード

cat file.sv

/*- - - -*/package pack1;import "DPI-C" pure function int myFunction1(input int v, output int o); import "DPI-C" pure 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

cat 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;

}

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 158UG900 (v2015.2) 2015 年 6 月 24 日

Page 159: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

cat run.ksh

xsc function.cxelab -vlog file.sv -sv -sv_lib dpi -R

単純なインポート  → エクスポート  フロー (xelab ‐dpiheader フロー )

このフローでは、 次が実行されます。

• xelab に -dpiheader オプシ ョ ンを付けて実行し、 file.h ヘッダー ファ イルを作成します。

• file.c のコードを xelab で生成されたヘッダー ファ イル (file.h) に含めます。 これは 後にリ ス ト されます。

• 前と同様 file.c および test.sv のコードをコンパイルして、 シ ミ ュレーシ ョ ン実行ファイルを生成します。

cat 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);

}

cat 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

cat run.ksh

xelab -dpiheader file.h -svlog test.svxsc file.cxelab -svlog test.sv -sv_lib dpi -R

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 159UG900 (v2015.2) 2015 年 6 月 24 日

Page 160: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

cat 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

Vivado Design Suite に含まれる  DPI 例Vivado Design Suite に含まれる 2 つの例を使用する と、 Vivado シ ミ ュレータでの DPI の使用方法が理解しやすくな ります。 これらの例は、 <vivado installation dir>/examples/xsim/systemverilog/dpi とい う インス トール ディ レク ト リ内の次のディ レク ト リにあ り ます。まず、このディ レク ト リに含まれる README ファ イルを参照するこ とをお勧めします。含まれる例は、 次のとおりです。

• simple_import : 純粋な関数の単純なインポート

• simple_import : 純粋な関数の単純なエクスポート

ヒン ト : 「純粋な関数」 とは、 関数の return 値がその入力値にのみに基づいて計算される関数のこ とです。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 160UG900 (v2015.2) 2015 年 6 月 24 日

Page 161: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

付録 F

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

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

ソリューシ ョ ン センターデバイス、 ツール、 IP のサポートについては、 ザイ リ ンクス ソ リ ューシ ョ ン センターを参照して ください。 ト ピックには、 デザイン アシスタン ト、 アドバイザリ、 ト ラブルシュート ヒ ン ト などが含まれます。

参照資料Vivado® Design Suite の資料 :

1. 『Vivado Design Suite ユーザー ガイ ド : リ リース ノート、 インス トールおよびライセンス』 (UG973)

2. 『Vivado Design Suite ユーザー ガイ ド : システム レベル デザイン入力』 (UG895)

3. 『Vivado Design Suite ユーザー ガイ ド : Vivado IDE の使用』 (UG893)

4. Vivado Design Suite ユーザー ガイ ド : Tcl スク リプ ト機能の使用』 (UG894)

5. 『Writing Efficient Testbenches』 (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)

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 161UG900 (v2015.2) 2015 年 6 月 24 日

Page 162: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

サードパーティ  シミ ュレータに関する情報へのリンク13. 詳細は、 該当するシ ミ ュレータのリ ンクを参照して ください。

° QuestaSim/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

言語および暗号化サポート規格へのリンク1. 『IEEE 規格 VHDL 言語参照マニュアル』 (IEEE-STD-1076-1993)

2. 『IEEE 規格 Verilog ハードウェア記述言語』 (IEEE-STD-1364-2001)

3. SystemVerilog (統合ハードウェア設計、 仕様、 および検証言語) の IEEE 規格 (IEEE-STD-1800-2009)

4. 『標準遅延フォーマッ ト仕様』 (SDF) (Version 2.1)

5. 『Recommended Practice for Encryption and Management of Electronic Design Intellectual Property (IP)』 (IEEE-STD-P1735)

ト レーニング リソースザイ リ ンクスでは、本書に含まれるコンセプ ト を説明するさまざまな ト レーニング コースおよびオンライン ビデオを提供しています。 次のリ ンクから関連する ト レーニング リ ソースを参照してください。

1. Vivado デザイン ツール フロー ト レーニング コース

2. Vivado Design Suite 入門ワークシ ョ ップ ト レーニング コース

3. Vivado Design Suite ビデオ チュート リ アル : ロジッ ク シ ミ ュレーシ ョ ン

4. Vivado Design Suite ビデオ チュート リ アル

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 162UG900 (v2015.2) 2015 年 6 月 24 日

Page 163: Vivado Design Suite - Xilinx€¦ · Vivado Design Suite ユーザー ガイド ロジック シミュレーション UG900 (v2015.2) 2015 年 6 月 24 日 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。

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

法的通知The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of Xilinx products.To the maximum extentpermitted by applicable law:(1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES ANDCONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort,including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising under, or in connectionwith, the Materials (including your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage(including loss of data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if suchdamage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.Xilinx assumes no obligation to correct anyerrors contained in the Materials or to notify you of updates to the Materials or to product specifications.You may not reproduce, modify, distribute,or publicly display the Materials without prior written consent.Certain products are subject to the terms and conditions of Xilinx’s limited warranty,please refer to Xilinx’s Terms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos; IP cores may be subject to warranty and supportterms contained in a license issued to you by Xilinx.Xilinx products are not designed or intended to be fail-safe or for use in any applicationrequiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in such critical applications, please refer to Xilinx’sTerms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos.

PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license.All other trademarks are the property of their respective owners.

© Copyright 2012-2015 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, and other designated brandsincluded herein are trademarks of Xilinx in the United States and other countries.All other trademarks are the property of their respective owners.

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの

右下にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 フ ィードバッ クは日本語で

入力可能です。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受

け付けており ません。 あらかじめご了承ください。

ロジック  シミ ュレーシ ョ ン japan.xilinx.com 163UG900 (v2015.2) 2015 年 6 月 24 日