FC2カウンター FPGAの部屋 Vivado 2017.1 の新機能5(AXI Verification IPの使い方の覚書)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vivado 2017.1 の新機能5(AXI Verification IPの使い方の覚書)

Vivado 2017.1 の新機能4(AXI Verification IPのサンプル・デザイン2)”の続き。

AXI Verification IP v1.0 LogiCORE IP Product Guide Vivado Design Suite PG267 April 5, 2017”の 48 ページ、”Useful Coding Guidelines and Examples”を読みながら覚書を書いておく。

テストベンチに必要なもの
・SystemVerilog のテストベンチ

・ axi_vip_v1_0_1_pkg と <component_name>_pkg の import
  <component_name>_pkgはAXI Verification IPを生成するときに作られて、パラメータ化されたエージェントへのtypedef クラスが
含まれている。
import 文は、AXI Verification IPをIPI でインスタンスする際に指示されている。AXI Verification IPをダブルクリックして開くと書いてある。
Vivado_2017-1_46_170427.png

それをテストベンチで import すればよい。axi_vip_0_mst_stimulus.sv の一部を引用する。
Vivado_2017-1_45_170427.png

・エージェントを宣言する。AXI Verification IPの各モードに関するエージェントの名前規則の表を引用する。
Vivado_2017-1_47_170427.png

・エージェントを new でインスタンスする。その際に、<階層パス>.IF を指定する必要がある。
<例> agent = new("master vip agent",DUT.ex_design.axi_vip_mst.inst.IF);
Vivado_2017-1_48_170427.png

・エージェントをスタートさせる。
 AXI Master VIP → agent.start_master(); (エージェント名は new したもの)

 AXI Slave VIP → agent.start_slave(); (エージェント名は new したもの)
  <component_name>_slv_t が使われている場合
READ_WRITE_MODEというのがあって、READ_ONLY やWRITE_ONLY に指定できるようだ。READ_WRITE(UGに書いていないので推定だが)の場合は、Read , Write 共に応答をテストベンチに書いておく必要がある。ONLY の場合は必要なRead またはWrite についての応答をテストベンチに書くておく。

  <component_name>_slv_mem_tが使われている場合(メモリ内蔵)
Read も Write もエージェントで処理されるそうだ。サンプル・デザインを見てみよう。

 AXI pass-through VIP をスレーブ・モードで使うとき
<hierarchy_path>.set_slave_mode(); (スレーブ・モードにセットして)
passthrough_agent.start_slave();  (スレーブとしてエージェントをスタートさせる)
スレーブと同じ注意点がある。

 AXI pass-through VIP をマスタ・モードで使うとき
<hierarchy_path>.set_master_mode(); (マスタ・モードにセットして)
passthrough_agent.start_master(); (マスタとしてエージェントをスタートさせる)

 AXI pass-through VIP をパススルー・モードで使うとき
デフォルトではパススルー・モード。パススルー・モードで使うときは設定が要らないようだ。今回のテストベンチに記述が無い。
マスタ・モードやスレーブ・モードからパススルー・モードにする場合は、下の設定を行う。
<hierarchy_path>.set_passthrough_mode();.
AXI pass-through VIP をパススルー・モードにする場合に、マスタ・モードからだったら stop_master を呼ぶ必要がある。スレーブ・モードからだったら stop_slave を呼ぶ必要がある。

レディ信号の生成
rready 信号の生成は、create_readyメソッドでやるらしい?
rready_gen = mst_agent.rd_driver.create_ready("rready");

後はPG267 を読んでください。

  1. 2017年04月27日 05:08 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3787-1880fa37
この記事にトラックバックする(FC2ブログユーザー)