スコープとは HDL デザインを階層に分けたものです。デザイン ユニットをインスタンシエートするたび、またはプロセス、ブロック、パッケージ、サブプログラムを定義するたびに、スコープが作成されます。
次の図に示すように、Scope ウィンドウにはデザイン階層が表示されます。Scope ウィンドウでスコープを選択すると、Objects ウィンドウにそのスコープの HDL オブジェクトがすべて表示されます。Objects ウィンドウで HDL オブジェクトを選択し、それを波形ビューアーに追加できます。
スコープのフィルター
- [Scope] ウィンドウの右上にある Settings ボタンをクリックすると、スコープ タイプの表示/非表示を切り替えることができます。 ヒント: Setting ボタンをクリックして表示されるオプションを使用してスコープを非表示にすると、スコープの種類に関係なく、そのスコープ内のすべてのスコープが非表示になります。たとえば、上の図で、すべての Verilog モジュール スコープを非表示にするため Verilog モジュールのボタンをクリックすると、
bft_tb
スコープだけでなく、uut
は VHDL エンティティ スコープですが、uut
も非表示になります。 - 特定の文字列を含むスコープに表示を限定するには、Search ボタン をクリックし、テキスト ボックスに文字列を入力します。
Objects ウィンドウに表示されるオブジェクトは、選択しているスコープによって異なります。スコープを変更すると、Objects ウィンドウに異なるオブジェクトが表示されます。
スコープを右クリックすると、次の図に示すメニューが表示されます。
-
Add to Wave Window: 選択したスコープの表示可能な HDL オブジェクトすべてを波形設定に追加します。ヒント: ビット幅の大きな HDL オブジェクトを波形ビューアーに追加すると、表示に時間がかかります。Add to Wave Window コマンドを実行する前に、波形設定で表示制限を設定すると、そのようなオブジェクトが表示されないようにできます。それには、
set_property DISPLAY_LIMIT <maximum bit width> [current_wave_config]
という Tcl コマンドを使用します。Add to Wave Window コマンドを使用すると、Objects ウィンドウに表示ている HDL オブジェクトとは異なる HDL オブジェクトが追加されることがあります。Scope ウィンドウでスコープを選択すると、Objects ウィンドウに選択されたスコープで直接定義されているオブジェクトだけでなく、そのスコープに含まれる HDL オブジェクトも表示されることがあります。Add to Wave Window コマンドの場合は、選択したスコープのオブジェクトのみが追加されます。
または、オブジェクトを Objects ウィンドウから波形ウィンドウの [Name] 列にドラッグ アンド ドロップする方法もあります。
重要: 波形ウィンドウには、オブジェクトが追加されたシミュレーション時間から、そのオブジェクトの値の変化が表示されます。ヒント: オブジェクト挿入以前のオブジェクト値を表示するには、シミュレーションを実行し直す必要があります。シミュレーション run を開始するときに、log_wave -r /
Tcl コマンドを実行してデザインの表示可能な HDL オブジェクトすべての値を取り込んでおけば、値を表示するためにシミュレーションを実行し直さなくてすみます。詳細は、Tcl コマンド log_wave の使用 を参照してください。波形設定の作成や HDL オブジェクトの追加などの波形設定への変更は、WCFG ファイルを保存しないと失われます。
- Go To Source Code: ソース コードの選択したスコープ定義の部分を開きます。
- Go To Instantiation Source Code: Verilog モジュールおよび VHDL エンティティ インスタンスに対し、インスタンシエーション時点のソース コードを開きます。
-
Set Current Scope to Active: 現在のスコープを選択したスコープに設定します。選択したスコープがアクティブ シミュレーション スコープになります (例:
get_property active_scope [current_sim]
)。アクティブ シミュレーション スコープはその HDL プロセスのスコープであり、シミュレーションは現時点で一時停止されています。設定で follow active scope をオフにすると、Vivado シミュレータでシミュレーションが進んだ場合でも、最後の current_scope の選択が記録されます。ブレーク ポイントに到達すると、current_scope が最後のスコープをポイントしたままになり、アクティブ スコープとして設定されます。 -
Log to Wave Database: 次のいずれかをログに記録します。
- 現在のスコープのオブジェクト。
- 現在のスコープおよびその下にあるすべてのスコープのオブジェクト。
ヒント: デフォルトでは、Vivado シミュレータのログに大型の HDL オブジェクトは記録されません。ログに記録されるオブジェクトのサイズ制限を変更するには、set_property trace_limit <size> [current_sim]
Tcl コマンドを使用してください。<size>
には、HDL オブジェクトのスカラー エレメントの数を指定します。ソース コード テキスト エディターでコードの識別子にカーソルを置くと値が表示されます ([Scope] ウィンドウ)。
重要: この機能を使用するには、Scope ウィンドウで選択したソース コードにスコープが関連付けられていることを確認してください。ヒント: 上の図では、最上位モジュールがインスタンシエートされていないため、最上位モジュールを右クリックしても、Go to Instantiation Source Code は淡色表示になっています。ヒント: 現在のスコープとそれ以下のスコープのオブジェクトをログに記録するには、log_wave
を使用します。シミュレーション後は、波形に任意のオブジェクトを追加して、時間 0 から現在のシミュレーション時間までの値を確認できます。図 3. 識別子の値が表示されたソース コード
その他のスコープおよびソース オプション
Scope ウィンドウおよび Sources ウィンドウで Show Search ボタン をクリックすると、検索フィールが表示されます。
Scope および Objects ウィンドウを使用する代わりに、Tcl コンソールに次を入力して HDL デザインを表示することもできます。
get_scopes
current_scope
report_scopes
id="ai516872">report_values