オープン・ソースのLSI検証環境Truss/Tealの解説書 ――『Hardware Verification with C++: A Practioner's Approach』
オープン・ソースのLSI検証環境Truss/Tealの解説書
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検証の参考書の一つとして,本書を読んでみてはいかがでしょうか.