無償ツールで実践する「ハード・ソフト協調検証」(2) ―― テスト・プログラムはC言語で書く

Verification Enginnerの戯言

tag: 半導体

技術解説 2009年12月11日

無償のSystemVerilog対応シミュレータと無償のFPGA用オンチップ・バス・モデルを用いて,ハードウェア・ソフトウェア協調検証の一手法について解説する連載の第2回である.今回は記述例を示しながら,DPI-Cの使い方を説明する.DPI-Cを使用する局面には,SystemVerilog側からC言語を呼び出す場合と,C言語側からSystemVerilogを呼び出す場合がある.(編集部)
 

 

技術解説シリーズ「無償ツールで実践する『ハード・ソフト協調検証』」
  第1回 SystemVerilogのDPI-C機能

 

3.DPI-Cのユース・ケース

 DPI-Cには,SystemVerilog側からC言語を呼び出す使い方と,C言語からSystemVerilogを呼び出す使い方の2通りがあります.

1) SystemVerilog側からC言語を呼び出す

 DPI-Cの典型的な使い方は,SystemVerilog側からC言語を呼び出すというものです.例えば図2のように,言語で開発したリファレンス・モデルをSystemVerilog側に取り込んだり,画像表示用のC言語ライブラリを使用し,画像処理後のデータをビジュアルに表示するために使います.

 DPI-Cを使うことにより,SystemVerilog側で簡単な宣言を行うだけでC言語の関数をあたかもSystemVerilogのtaskやfunctionであるかのように呼び出せます.

 



図2 DPI-Cの典型的な使い方

 

2) C言語側からSystemVerilogを呼び出す

 DPI-Cのもう一つの使い方は,C言語からSystemVerilogのtaskやfunctionを呼び出すというものです.この場合も,SystemVerilogからC言語を呼び出すのと同じように簡単な宣言を行うだけで使えます.特にC言語からSystemVerilogのtaskを呼べるのは,非常に便利です.この機能は,Verilog HDLのPLIやVPIにはなかった機能です.本稿では,この機能をフルに活用し,検証におけるテスト・ケースをC言語のプログラムとして実装する方法について説明します.

 一般にSystemVerilogの検証機能を使えば,テスト・ケースをSystemVerilogのテスト・プログラムとして作成できます.一方,SOC(System on a Chip)を開発し,そのチップが実機に搭載されたあとは,CPU上で動くソフトウェア(ブート・コードやファームウェア,デバイス・ドライバなど)によって動作を確認することになります.

 この時点では,ソフトウェアはC言語(一部はアセンブリ言語)を使って記述します.シミュレータ上でしか動作しないSystemVerilogのテスト・プログラムは使えません.ましてや,ソフトウェア・エンジニアがSystemVerilogのテスト・プログラムの内容を簡単に理解できるはずもありません.

 そこで,検証用のテスト・ケースをソフトウェア・エンジニアが理解できるC言語のテスト・プログラムとして作成します.こうすることで,実機の動作確認フェーズにおいて,検証用プログラムの再利用が可能になります.テスト・プログラムの開発期間の短縮ばかりでなく,テスト・プログラムの品質の向上も期待できます.

 また,テスト・プログラムを(ハードウェアの)検証エンジニアが作成するのではなく,実機のソフトウェア・プログラムを開発するソフトウェア・エンジニアが作成するようになれば,実機で動作するソフトウェアをまだ実機が用意されていない段階(検証フェーズ)で開発できます.そして,この段階で開発したソフトウェア・プログラムを稼働させることにより,検証においてもより実機に近い環境で動作を確認ができるというメリットがあります.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日