SystemVerilog では、ネット/変数はすべてスタティック タイプです。これらはシミュレーションの間常に存在します。SystemVerilog には、ダイナミック タイプという新しいタイプがあり、スタティック タイプと並行して使用されます。クラス、キュー、アソシエイティブ配列などがダイナミック タイプです。
スタティック タイプの変数 (int a; wire [7:0] b;) とは異なり、ダイナミック タイプの変数にはシミュレーションを通じて固定されたサイズはありません。変数はランタイム中に変化し続けます。ダイナミック タイプの変数の値は、[Objects] ウィンドウでシミュレーション中に確認できます。
- Restart ボタンをクリックします。
- [Scope] ウィンドウで axi_vip_0__exdes_adv_mst_active_pt_mem__slv_passive スコープを選択します。
- [Objects] ウィンドウを最大化します。シミュレーションはこれから開始するところなので、[Data Type] 列でキュー (Queue) とクラス (Class) のダイナミック タイプを確認します。キューの値は空のようですが、クラスの値は null のようです。
- [Scope] ウィンドウで axi_vip_0__exdes_adv_mst_active_pt_mem__slv_passive をダブルクリックして、このテキスト ファイルを確認します。
- テキスト エディターのウィンドウで 95 行目の circle をクリックして、ブレークポイントを追加します。
-
Run All ボタンをクリックすると、シミュレーションが 95 行目で停止します。[Objects] ウィンドウでは
master_monitor_transaction_queue
の値が空に見えます。
- AMD Vivado™ シミュレータのツールバー メニューで Step ボタン をクリックします。シミュレーションが現在停止している 95 行目の文が実行されます。この文を実行すると、エレメントがプッシュされます。キューに 1 つのエレメントが自動的に入力されます。
- [Objects] ウィンドウで
master_monitor_transaction_queue
の値が自動入力されています。このようにしてダイナミック タイプの値は [Objects] ウィンドウで確認できます。