FC2カウンター FPGAの部屋 無償ツールで実践する「ハード・ソフト協調検証」をやってみる4(シミュレーション)
FC2ブログ

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

FPGAの部屋

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

無償ツールで実践する「ハード・ソフト協調検証」をやってみる4(シミュレーション)

今日は、無償ツールで実践する「ハード・ソフト協調検証」(6) ―― 協調シミュレーションを実行するの2ページ目から、

15.シミュレーションを行う
ModelSim AE 6.5bを起動し、avalon_bfm_sim.mpfをオープンして(オープンしてあった)、Transcriptペインで、

do setup_sim.do


を実行した。(setup_sim.do は”無償ツールで実践する「ハード・ソフト協調検証」をやってみる3(協調シミュレーション準備)”で、書き換えてある。更に後で使用するためにsetup_sim_org.doにコピーしておく)次に

_vsim

を実行すると、シミュレーションがスタートした。
hard_soft_12_100301.png

同様にTranscriptペインで

do wave.do

を実行すると、ModelSimにwaveペインが追加され、信号がロードされた。
hard_soft_13_100301.png

Transcriptペインで、

run -All

を実行すると、下に示すように、シミュレーションが終了し、Write3回、Read3回実行されているのが見えた(波形が見えないので、waveウインドウをアンドックしました)。
hard_soft_14_100301.png
hard_soft_15_100301.png

これで、DPI-Cでのバスアクセスのシミュレーションが完了した。一瞬でシミュレーションが終了する。これがNios2のIPコアを使用して、同様にシミュレーションすると長いシミュレーション時間が必要になるということだ。たぶんそうなんだろう?
ここで、なぜCのテストベンチが動作するかだが、_vsimの記述の最初の方には下のように記述されている

alias _vsim {vsim -t ps +nowarnTFMPC -sv_root prog -sv_lib dpi_main ...


-sv_lib dpi_mai でdpi_main.dll を呼び出しているのだと思う(14.C言語プログラムをコンパイルする)。

シミュレーションの流れを下の図に示す。
hard_soft_18_100302.png

最初に、SystemVerilogファイル(tb_prog.sv)のinitial文からCの関数 dpi_main()を呼び出す。dpi_main()から test32(), test16(), test8() を呼び出し、その中から tb_prog.svのtaskを呼び出す。そこから、Avalon-MM Master BFMのAvalon Master BFM API(set_command_addressなど)を呼び出して、Avalon-MM Slave(onchi_memory2_0)に読み書きする。今のところ、以上のように理解している。

1つ疑問がある。それは、gcc でコンパイルしたdpi_main.c をdpi_main.dllにして、vsimでリンクしているようだが、このDLLを読み込みタイミングはいつか?ということだ。Cのテストベンチを書き換えたときに、いつから反映されるのか?という疑問がある。vsimをquitする必要があるのか?restart すれば更新されてリンクされるのか?DLLの知識があれば自明なのかもしれないが、わからないのでやってみようと思う。(必要なときにリンクされるはずなので、書き換えば大丈夫のような気もするし、そもそも使用中で書き換えさせてくれない?と言う可能性もあるのかな?)

Avalon Verification IP Suite User Guideを眺めていると、普通にVerilogのテストベンチからもスティミュラスを入力できるようだ。
  1. 2010年03月02日 06:00 |
  2. SystemVerilog
  3. | トラックバック:0
  4. | コメント:2

コメント

GUIのvsimであれば、コマンドとして、"quit -sim"を実行して、シミュレータvsimを終了すればいいです。

再度、シミュレーションを実行するには、do setup_sim.do以降をやればいいです。
  1. 2010/03/03(水) 22:25:00 |
  2. URL |
  3. Verification Engineerの戯言 #YTIpxIas
  4. [ 編集 ]

Verification Engineerの戯言さん、こんにちは。
いろいろ教えていただいてありがとうございます。了解しました。後でやってみたいと思います。
また、わからないことがありましたら、ブログのコメントでお聞きすると思いますので、よろしくお願いします。
  1. 2010/03/04(木) 04:27:35 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


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

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1392-83a968fb
この記事にトラックバックする(FC2ブログユーザー)