FC2カウンター FPGAの部屋 2010年02月27日
FC2ブログ

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

FPGAの部屋

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

無償ツールで実践する「ハード・ソフト協調検証」をやってみる2(SystemVerilogコードとCコード)

無償ツールで実践する「ハード・ソフト協調検証」(4) ―― SystemVerilog側のDPI-Cの記述を作成する”からSystemVerilogのコード(tb_prog.sv)をダウンロードして確認した。今のところ、Verilog2001のコードとそんなに違いがないような。。。
'h3とビット幅を省略しても書けたのか?早速、VeritakのVerilogチュートリアルのデータ型を確認した。それによると、あまり推奨されないけど、’h 837FFのように書けるとのことだった。tb_prog.svは見ただけだが、大体納得した。つまり、tb_prog.svは、BFMでインスタンスを定義されたAvalon Bus Fuction Model(BFM)に対して、メソッドをコールして、Avalonバスに対して、Write, Readアクセスを発生させる。また、initial文でC言語で書かれたテストベンチをコールする。

次に、”無償ツールで実践する「ハード・ソフト協調検証」(5) ―― テスト・プログラムの作成とBFMのコードの生成”でC言語のコード、dpi_func.hとdpi_func.c をダウンロードした。今度はすぐに分かった。SystemVerilog側でbfm_writeやbfm_read、bfm_nopなどのtaskをC側から呼び出してテストするようだ。最初にCのルーチンdpi_main()は、SystemVerilog側から

import "DPI-C" context task dpi_main();


で宣言しておいて、initial文で呼び出している。
当然、Cから呼ばれるSystemVerilogのtask文も

export "DPI-C" task bfm_write32;
export "DPI-C" task bfm_read32;
export "DPI-C" task bfm_write16;
export "DPI-C" task bfm_read16;
export "DPI-C" task bfm_write8;
export "DPI-C" task bfm_read8;
export "DPI-C" task bfm_nop;


で外部参照宣言されている。
と言うことはCで自由にテストベンチを書けると言うことなんだろう?

次にQuartus2 9.1(久しぶりです)を立ち上げて、avalon_bfmというプロジェクトを作った。無償ツールで実践する「ハード・ソフト協調検証」(5) ―― テスト・プログラムの作成とBFMのコードの生成”で言うと図6と図7の間あたり。
hard_soft_1_100227.png

プロジェクトができたら、SOPC Builderを立ち上げる。SOPC BuilderはToolsメニューからも起動することができる。図8が出てくる前にCreate New Systemダイアログが出る。System Name が入っていなかったので、avalon_bfmを入力した。
hard_soft_2_100227.png

Create New SystemダイアログのOKボタンをクリックすると、SOPC Builderが開いた。図8まで来た。
次に、図9。SOPC Builderの左のペインからLibrary のAvalon Verification Suite を展開して、Altera Avalon MM Master BFMをクリックし、Addボタンをクリックすると、Altera Avalon MM Master BFMのダイアログ(図10)が現れた。デフォルト値で良いようなので、そのままFinish。mm_master_bfm_0ができた。
hard_soft_3_100227.png

図11、図12で、On-Chip Memory のRAMを追加した。そして、onchip_memory2_0が追加された。追加した2つのIPコアを接続した。
hard_soft_4_100227.png

これで、GenerateボタンをクリックしてVerilogコードを生成した。Simulation : Create project simulator files. をチェックした。
hard_soft_5_100227.png

第5回まで終わった。
ここでは、SOPC BuilderでAvalonバスのバス・ファンクションモデルを生成して、Avalonバスに接続されるOn-Chip Memory のRAMモジュール(今回このモジュールがテスト対象)生成して、それぞれを接続した。
  1. 2010年02月27日 21:04 |
  2. SystemVerilog
  3. | トラックバック:0
  4. | コメント:0