オープン・ソースのLSI検証環境Truss/Tealの解説書 ――『Hardware Verification with C++: A Practioner's Approach』

宮下晴信

tag: 組み込み

書評 2007年3月15日

オープン・ソースのLSI検証環境Truss/Tealの解説書

f1.jpg

Michael Mintz,Robert Ekendahl著
Springer-Verlag New York
ISBN-10:0387255435
ISBN-13:978-0387255439
341ページ
119ドル
2006年8月



 論理検証,特にシミュレーション・ベースの検証に関する文献のほとんどは洋書です.ここで紹介する書籍「Hardware Verification with C++: A Practitioner's Approach」も英語です.そして,本書はここ数年,話題になっているSystemCやSystemVerilogに関する書籍ではありません.

 本書を知ったのは,二人の検証エンジニアが立ち上げたWebサイト「Trusster」の出版の告知でした.そのとき,出版元のSpringer社の国内販売代理店に価格と納期を確認しましたが,そのままになっていました.今年(2007年)の2月15日の米国EETimes誌の「Open-source libraries boost SystemVerilog」という記事を読んで,忘れていた本書を購入することにしました.

 本書は,Trussterを運営しているMichael Mintz氏とRobert Ekendahl氏が開発した「Truss/Teal」の解説書です.Truss/Tealは,SystemCと同じようにオープン・ソースとして提供されている検証環境(検証用ライブラリ)です.ユーザ登録を行うだけで入手できます.Truss/Tealは,C++言語を検証に利用するためのベース・システムで,HDLとの接続部分はVerilog HDLのPLI(programming language interface)を利用して構築しています.

 サポートしているシミュレータは,米国Cadence Design Systems社,米国Mentor Graphics社,米国Synopsys社といった大手のものだけではありません.最近,FPGA向けとして勢力を拡大している米国Aldec社のシミュレータもサポートしています.また,オープン・ソースのVerilog HDLシミュレータであるCverもサポートしています.

 オープン・ソースの検証環境としては,Cadence社が公開し,SCV(SystemC Verification Library)のベースとなったTestBuilderが存在します.TestBuilderはVerilog HDLとVHDL(ただし,Mentor社のシミュレータであるModelSimのみ)に対応した検証環境でした.TestBuilderからSCVへ移行したため,その後のバージョン・アップはありませんが,今でもWebサイトの運営は継続されています.また,Synopsys社の検証環境である「Vera」の開発者が公開した,Veraによく似た「Jeda」という環境もありました(残念ながら,現在は公開されていない).

 さて本題ですが,本書は4部構成になっています.

 第1部は,オブジェクト指向を使った検証環境について説明しています.そして,なぜLSIの検証にC++を使っているのかについて述べています(TrussterのWebサイトでもC++を採用した理由について述べられている.一つ目の理由は,開発開始当時,まだSystemVerilogが十分に安定していなかったため,二つ目は,SystemVerilogよりC++の方をよく知っていたため,とのこと).

 第2部では,Truss/Tealについて解説しています.Truss/TealはSynopsys社のVMM(Verification Methodology Manual)やMentor社のAVM(Advanced Verification Methodology)ほど道具はそろっていませんが,階層構造ベースのモデリングやランダム生成など,検証に必要なものはそれなりにそろっています(Tealのユーザ・マニュアルはTrussterのWebサイトで公開されている).

 第3部では,C++言語のオブジェクト指向の利点や利用方法をTruss/Tealを使って説明しています.この部分では,C++言語のオブジェクト指向がどうして検証モデル(検証環境)にとって有効なのかをかなりのページを割いて説明しています.SystemCもC++言語で実装されています.しかし,SystemCの解説本などではC++言語のオブジェクト指向手法が前提となっており,「なぜオブジェクト指向にするべきなのか」が分かりにくいように思います.この点をきちんと説明しているところが本書の評価できる点です.

 第4部では,Truss/Tealの例題として,UARTに対するブロック・レベル検証とチップ・レベル検証について説明しています.いくらすばらしい検証環境であっても,どのように使うのかがわからないと使いづらいものです.こうした例題は,理解するための初めの1歩として非常に有用です.例題の内容はそれほど実践的ではありません.しかし,Truss/Tealの使い方を学ぶには十分な内容だと思います.

 本書の内容を確認できるように,Springer社は,本書の第6章の「Truss: A Standard Verification Framework」をPDFとして公開しています.このPDFと前述のTealのユーザ・マニュアルを読むだけでも,Truss/Tealの検証環境がどういうものであるのか,だいたい分かると思います.

 Springer社の新刊情報によると,本書と同じ構成でSystemVerilogベースのTruss/Tealの解説書が今年(2007年)後半に出版されるようです(TrussterのWebサイトでも,SystemVerilog版のレビューアを募集していた).C++言語ではなくSystemVerilogであれば,VMMやAVMと比較しやすくなることでしょう.LSI検証の参考書の一つとして,本書を読んでみてはいかがでしょうか.


宮下晴信
http://blog.yahoo.co.jp/verification_engineer/

組み込みキャッチアップ

お知らせ 一覧を見る

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