無償ツールで実践する「ハード・ソフト協調検証」(1) ―― SystemVerilogのDPI-C機能

Verification Enginnerの戯言

tag: 半導体

技術解説 2009年12月 6日

SoC(System on a Chip)などのハードウェア・ソフトウェア協調検証というと,何百万円もするツールが必要となる高度な開発手法と思いがちだ.しかし,その基本的な考え方は決して複雑なものではない.また,最近ではFPGAベンダなどが提供する無償ツールを使って,かなりの設計・検証が行えるようになってきた.ここでは,SystemVerilogをサポートする無償のシミュレータと無償のFPGA用オンチップ・バス・モデルを用いて,ハードウェア・ソフトウェア協調検証の一手法について解説する.(編集部)

 筆者は,日本で唯一のLSI検証関連ブログ「Verification Enginnerの戯言」を運営しています.このブログでは,LSIの設計や検証に利用される記述言語「SystemC」,「SystemVerilog」を中心に,ハイレベル合成(HLS:High Level Synthesis)やVMM(Verification Methodolog Manual for SystemVerilog),OVM(Open Verification Methodolog)などについての記事を掲載しています.

 また,「Verification Enginnerの戯言」では,SystemVerilogに関するWebサイト「All of SystemVerilog」も運営しています.このサイトでは,SystemVerilogについての技術情報を体系的に提供しています.

 筆者への連絡は,ブログ「Verification Engineerの戯言」へのコメントにてお願いします.


(a) Verification Engineerの戯言


(b) All of SystemVerilog
図1 「Verification Engineerの戯言」と「All of SystemVerilog」のWebサイト

 

●無料の環境で新しい検証手法を試せる

 近年,組み込み機器はLSI(ハードウェア)と組み込みソフトウェアが絡み合った複雑なシステムになっています.LSIの開発においては,HDL(ハードウェア記述言語)で実装し,HDLやHVL(ハードウェア検証言語)などで検証を行っています.一方,ソフトウェアについては,検証されたハードウェアを制御するためにプログラム(主にC言語)を実装し,テストを行っています.つまり,ハードウェアとソフトウェアで二度も動作確認を行っていることになります.2回の動作確認の多くを1回にすることができれば,開発期間や開発工数を減らせます.

 本稿では,SystemVerilogの一機能として用意されているDPI-Cを活用する検証/テスト技法について解説します.この方法により,ハードウェア技術者とソフトウェア技術者の両方が利用できる検証/テスト環境を構築できます.

 解説のための題材として,ここでは米国Altera社の開発ツールであるSOPC Builderで利用できるAvalon IP(同社独自のオンチップ・バス)の動作を検証/テストしてみます.一般に,Avalon IPを検証/テストする際には,Nios CPUによるシミュレーションを行う必要があります.しかし,Nios CPUをHDLシミュレータで動作させると,シミュレーション速度が非常に遅くなってしまいます.

 今回はこのシミュレーション速度の問題を解決するために,Altera社が提供している「Avalon Verification IP Suite」をBFM(Bus Functional Model)として利用し,このBFMをSystemVerilogのDPI-C(Direct Programming Interface-C)経由でC言語からアクセスできるようにします.これにより,Nios CPUでC言語のプログラムを動作させるのと同等のことが行え,Nios CPUを使わなくてもシミュレーションを高速に実行できます.

 Altera社の開発ツール(Quartus II,SOPC Builder,ModelSim Altera Edition Starter)について,ユーザ登録を行う必要はありますが,費用はかかりません.無料です.まずは,無料のツールを使って試してみて,いいものかどうかを確認できます.今の時代,自分自身の手で手軽に確認できるということは重要です.ぜひ,自身で確認してみてください.

 

●複数言語の併用に起因する問題を解消したSystemVerilog

 SystemVerilog は2005年にIEEE 1800として標準化されました.そして,SystemVerilogとVerilog HDLを統合したIEEE1800-2009の標準化作業もほぼ終わり,早くて年内(2009年),遅くても年明けの早い時期に新しいバーションのSystemVerilogが登場します.

 SystemVerilogが標準化されたことから,すでに多くのEDAツールがSystemVerilogをサポートしています.特に,SystemVerilogが検証専用言語(eやOpenVera,PSL)と同等の機能を仕様に取り込んだことから,従来,複数の言語(例えばVerilog HDLとeの組み合わせ)で行ってきた実装設計と検証を一つの言語(SystemVerilog)で行えるようになりました.つまり,複数の言語に対応したツールの購入や言語の使い方の習得にかかるコストを削減できるわけです.

 特にVerilog HDLを実装設計に使ってきた場合は,今まで使っていた機能シミュレータがそのまま使えます(ほとんどのVerilog HDLシミュレータはSystemVerilogをサポートしている.ただし,機能の一部,例えばアサーションが別ライセンスになっているシミュレータもある).また,複数の言語を使用する場合,一般に言語間をPLI(Programming Language Interface)やVPI(Verilog Procedure Interface)などを使って接続します.これらのインターフェースにはオーバヘッドが大きいという問題があり,全体のシミュレーション速度が低下しがちでした.この問題も,一つの言語になることにより解消に向かいます.

 SystemVerilogが備える主な検証機能は,以下の五つです.

  • アサーション
  • C/C++と同等なデータ・タイプとクラス
  • 制約付きランダム生成
  • 機能カバレッジ
  • DPI-C

 アサーション,C/C++と同等なデータ・タイプとクラス,制約付きランダム生成,機能カバレッジについては,EDAベンダのセミナなどを中心に,いろいろな場所で紹介されています.前述のVMMやOVMは,これらの機能を応用した代表的な例です.

1  2  »
組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! 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日