MAGAZINE ARTICLES
|
ロジック設計の検証を行う際には、どこかの段階で、「これで検証が完了した」と判断する必要がある。その判断の指標となるのが各種検証カバレッジのメトリクスである。本稿では、コードカバレッジ、機能カバレッジ、アサーションカバレッジ、さらには形式的検証などの概要を説明するとともに、これらの手法を組み合わせて現実的な解を得るにはどうすればよいのか考察する。
|
「現在、多くの設計マネジャは、3つの重要な疑問に対する答えを得るために、検証カバレッジ(Verification Coverage)のメトリクス(Metrics:定義された検証法から導き出される尺度)を利用している」──米Mentor Graphics社の主席検証サイエンティストを務めるHarry Foster氏の言葉である。ここでいう3つの疑問とは、最終的な開発目標に対して、「どこまで進んでいるのか」、「今はどこに向かっているのか」、「いつゴールに到達するのか」というものである。
ICに実装するロジック設計が完了したら、正しく設計が行われていることを検証する必要がある。しかし、多種多様な検証ツールからさまざまなカバレッジに関するメトリクスが得られる上に、それぞれが異なる意味を持つなど、メトリクスに関する情報は氾濫している状態にある。このため、設計マネジャは、それらのメトリクスが示す本当の意味を理解するとともに、複数のメトリクスを、Foster氏が挙げる3つの疑問に対する答えが得られるよう1つに統合する必要がある。
「いつゴールに到達するのか」という疑問は、「いつになったら検証を終了してもよいのか」という問いかけに言い換えることができる。最も重要なのは、これに対する正しい答えを得ることである。この判断を下すためには、メトリクスを統合する以外に、アーキテクチャ設計が最初に行われたころから存在し、それ以降、設計技術の進化とともに拡大/確立されてきた詳細な検証プランが必要となる。
現在、回路設計に携わる技術者は、ソフトウエアを検証する際に用いられる「コードカバレッジ」の手法をそのまま拝借している。この概念は、単純明快なものだ。まず、RTL(レジスタ転送レベル)シミュレーションを実行する際に、RTLソースの各コード行に対応する1ビット幅のテーブルを用意しておく。そして、シミュレーションを開始するときに、テーブルのビットをすべて0に初期化する。その上で、各行が最初に実行されたときに、その行に対応するテーブルのビットを1にする。シミュレーションを終えたときには、すべてのコードのうちどの行が実行され、どの行が実行されなかったのかがわかるという仕組みだ。基本的には、実行されていない行は検証が済んでいないと見なすことになる。
専門家は、コードカバレッジの考え方を一般化し、RTLビューに基づくほかの多くのカバレッジ測定手法へと展開を図っている。この手法を利用すれば、RTLコード中の式や分岐の検証、あるいはレジスタのトグルのカバレッジをレポートするツールを開発することができる。また、そうしたレポートのほとんどは、市販のシミュレーションツールを使って、特別なモニタリングを行うことなく得ることができる。
コードカバレッジメトリクスは、何年も前に登場し、簡単に使用できることもあって広く普及した。「当社の調査によれば、設計チームの約半数が、検証フローのどこかでコードカバレッジメトリクスを使用している」とFoster氏は語る。
しかし、コードカバレッジには重大な問題が存在する。米Synopsys社フェローのJanick Bergeron氏によると、最大の問題は「カバレッジメトリクスは確かに有効だが、どこまで検証をカバーできているのかを判断するには十分ではない」ことだという。すなわち、RTLコードのある行を実行したからといって、意図したとおりに動作したとは限らないのである。
より正確に言うと、問題になるのは、観測可能性と完全性に関することである。コード行を実行したとき、その結果はそのシミュレーション実行時に実際に観測していたノードへと引き渡されているのだろうか。もし、引き渡されていないとすれば、コードが意図したとおりに動作したかどうかを判断できない。これが観測可能性の問題である。Foster氏は「行カバレッジが100%でも、シミュレーション中に実際に動作を確認できたのは行全体のわずか70%だ
ったというケースもある」と例を挙げる。
一方の完全性は、これとはまた別の問題である。先述したテーブル上でコード行を実行したという結果が得られたとしよう。しかし、この手法では、そのコード行が実行される可能性があるすべてのケースに対して実行されたかどうかは確認できない。何らかの問題が発生するケースが1つも存在しないということまでは確認できないのである。
コードカバレッジには欠点があることから、機能カバレッジを用いる設計チームが多い。機能カバレッジは、設計した機能のうち、いくつの機能が意図したとおりの動作を行ったのかを確認して示すというものだ。この手法は、設計マネジャらが、回路検証のために用いた最初の手段であり、現在でも多くの設計チームにとって心のよりどころとなっている。
フランスAlcatel-Lucent社の光部門でハードウエア研究開発担当技術マネジャを務めるHans Sahm氏は、自社で採用している機能カバレッジメトリクスの最新の手法について、以下のように説明した。
「まず、要件(requirements)仕様書を基に、社内で開発したスクリプトを用いて検証プランのスプレッドシートを作成する。そのスプレッドシートには、自然言語(英語)で記述された機能要件と、各要件を検証するために検証チームが選択したテストケースが列挙される。なお、このスプレッドシートは、検証チームがシミュレーションの進行に応じて完了したテストケースに印を付けていくための単一のドキュメントとなる。また、検証の進捗を機能ごとに示したチャートとしても利用する」。
この概念は、すべての形式における機能カバレッジメトリクスの中枢となるものだが、大きな課題をいくつか抱えている。Sahm氏は、「機能要件とそれを検証するために必要となるテストケースは、自動的に関連付けられるものではない」と指摘する。要件を理解し、その要件を適切にカバーするテストケースを用意できるかどうかは、検証エンジニアのスキルと経験に依存するのだ。このことについて、Mentor社のFoster氏は「思考を自動化することなどできない」と語る。
米Altera社の主席検証アーキテクトであるJeff Fox氏は、「要件仕様書を解釈する際には必ず問題が生じる。同じドキュメントを読んでも、エンジニアによって機能の動作に対する理解がまったく異なる場合があるのだ。そのため、われわれは、要件仕様書をできる限り実行可能コードに近いものとして記述している。もちろん、その記述は正確なものでなければならない」と語る。Synopsys社のBergeron氏もこれに同意する。その上で、「ある機能を検証するために、手作業で作成したテスト(ダイレクトテスト)を使うことがある。ここに1つの課題がある。すなわち、テストの結果からは、テスト自体にバグが存在しないことを証明することはできないということだ」(同氏)と語った。
上述したような人為的ミスを避けるための最も一般的な方法は、アサーション(Assertion:プログラムの形式検証における成立条件)と制約条件付きランダム(乱数)テストを使用することであった。この手法はもともと、2005年に米Cadence Design Systems社が傘下に収めたVerisity社が採用していたものである。Mentor社の調査データによると、制約条件付きランダムテストを使用しているのは検証チームの約40%ほどだという。つまり、機能カバレッジメトリクスを使用している設計チームの比率も約40%だということになる。初期のころから、アサーションを記述するための専用言語はいくつもあったが、最近ではハードウエア記述言語とハードウエア検証言語を統合した「SystemVerilog」に収束しつつあるようだ。結果として、現在では次のような新しい設計/検証手法が使われるようになってきている。つまり、SystemVerilogによってアサーションを記述し、制約条件付きランダムテストによってアサーションをテストし、アサーションのカバレッジによって検証メトリクスを表現するという手法である。
多くの設計チームが、徐々にこのプロセスへと移行している。インドWipro Technologies社の半導体およびソリューションビジネス部門のゼネラルマネジャを務めるGiri Raju氏は、同氏の設計チームが採用している方法について、以下のように説明する。
「以前は、相互参照テーブルを手作業で追跡することにより得られたコードカバレッジメトリクスだけを使用して、検証作業を管理していた。当時のわれわれの目標は、単純にコードカバレッジで100%を達成することであった。徐々に機能カバレッジ検証ツールを使う方向に移行したが、検証の進捗状況については、引き続きテーブルを使って手作業で確認していた。現在は、SystemVerilogと検証メソドロジのOVM(Open Verification Methodology)を利用する方向に移行中だ」。
Raju氏は、「このような対策を進めてはいるものの、検証エンジニアには、習得しなければならないエンジニアリングスキルがまだかなりあるだろう」と語る。「検証エンジニアは、検証用のカバレッジポイントを特定し、それらを設計エンジニアとともにレビューして確認する。このプロセスの80~90%を自動化できると信じているが、人手で実施しなければならない部分が必ず存在する。しかし、この問題については、アサーションを利用することで有効な対処が可能になる。現在では、当社の設計エンジニアにとっては、コードへのアサーションの挿入が習慣になっている」(同氏)という。
1 設計マネジャが抱く3つの疑問
CheckerコグネックスのシンプルでパワフルなビジョンセンサCheckerビジョンセンサは、照明と…
Visual System Simulator(VSS)は、今日の複雑なコミュニケーションシステム設…
Microwave Officeデザインスイートは、急速に成長しているマイクロ波回路設計用プラットフ…
AWRのAXIEM電磁界(EM)ソフトウェアは、業界初の真の最先端の設計技術を持ったEM解析です。そ…
運転方式:常時インバータ給電方式/常時商用給電方式定格出力容量:1000VA、1500VA、3000…
ハンドヘルド設計に携わる技術者はパワーを最小限にすることがいかに重要かを知っています。エンべデッド設計のI/Oサブシステムから最後のミリワットまでを搾り取る超低…[ラティスセミコンダクター]
3G/3.5G移動通信ネットワークは、分散基地局トポロジを使用するCDMA2000やWCDMA/UMTS、およびTD-SCDMAなどのテクノロジによって新しい機…[ラティスセミコンダクター]
アナログ・デバイセズ:ソリューション・ブリテン2008年No.10 産業&計測用 IC
画期的な性能を実現するPulSAR ADC駆動と通信をシングル・ステップで可能にするDACSAR ADCによるモータ制御の素化高速測定用の ADC最高のデータ・…[アナログ・デバイセズ]
アナログ・デバイセズに寄せられた珍問/難問集より<Issue 37>
そのノイズを捕まえろ‐逃がすなQ. スイッチングモード電源のノイズで回路性能が台無しにされるのを防ぐにはどうしたらいいでしょうか?[アナログ・デバイセズ]
IF信号チェーンの注意深い設計による、16ビット、105Msps ADCの最高性能の実現-デザインノート468
現代の通信システムは、アナログ信号を受信し、それをFPGAで処理可能なデジタル信号に変換するのにADCを必要とします。ミックスシグナルのエンジニアの仕事は、AD…[リニアテクノロジー]
最小2.2Vの入力で動作する降圧同期整流式コントローラ
テレコムとコンピュータ関係のアプリケーションは、非常に低い入力電圧で動作可能な高効率降圧DC/DCコンバータを必要とします。高出力電力同期整流式コントローラLT…[リニアテクノロジー]
高精度トランスインピーダンスアンプ
フォトダイオードなどの微小電流信号を増幅するためには,入力バイアス電流が少なく,入力オフセット電圧やドリフトも小さなアンプを用いてI-V変換するのが一般的です。…[日本テキサス・インスツルメンツ]
新しい検証アプローチEVEはハードウェア検証支援システムのパイオニアとして新しいアプローチを切り開いてきました。従来のエミュレーション・システムとラピッド・プロ…[日本イヴ]
システムレベル・仮想プラットフォームを手早く構築するためのトランザクタからなる仮想コンポーネント・ライブラリをご紹介します。ZeBuの仮想プラットフォームは、M…[日本イヴ]
電磁波解析専用ソフトウェア PAM-CEM
電磁波関連機器・部品の解析設計を支援する電磁波解析専用ソフトウェア(CAE)です[特長]・「EMC・EMI問題への対策」を支援 有限差分時間領域法(FDTD)の「PAM-CEM/FD」または有限要素時...[日本イーエスアイ]
|
アナログ電子回路コミュニティ
技術者のための掲示板サイト |
|
Design Hint&Tips
アナログ設計回路の基礎から最新技術動向まで |
|
FPGA Insights
FPGAの総合情報サイト |
|
ANALOG TECH & INFO
アナログ半導体の総合情報サイト |
|
EMC設計・対策
ムラタの先進ソリューション |
|
特集 Denali MemCon Tokyo 2010 |
|
特集 テクノフロンティア2010 |
|
特集 カーエレJAPAN |