第3回「アサーション」(201207)

近年のLSI/FPGAは製造技術の進歩により大規模化、多機能化が急速に進んでいます。
これに伴い回路を検証するポイントが増加する傾向ですが、検証ポイントが増えても開発工数は増えることはなく、激しい競争により開発期間は短くなっているのが現状です。
この限られた期間内に回路品質を向上させるために、沢山の検証ポイントを効率良くかつ精度良く行うことが非常に重要な課題になっています。
最近では制約付きランダムテスト、カバレッジ、アサーション検証といった検証手法が採用されており、今回は『アサーション検証』について説明したいと思います。



・アサーションとは

設計物が仕様通りに動作しているかをチェックするものであり、仕様が満たされていない(仕様通りに 動作していない)場合はエラーメッセージを表示して、バグがあることを通知します。


・従来検証の課題

従来の検証では波形の目視確認やC/C++などのリファレンスモデルを使用した出力端子での結果比較を行う方法がとられています。
目視確認の場合、見落とす可能性があることやチェックポイントが多いと時間を費やす必要があります。
また、回路の修正が発生した場合は同じ時間を費やして再度チェックしなければなりません。
リファレンスモデルを使用した結果比較では、出力端子で結果を確認しているため、回路内部のバグが回路構造により出力端子まで出力されなければ、バグを見落としてしまいます。
出力端子にバグが出力されたとしても、バグの発生した時間やタイミング、発生回路を特定するのに多くの時間を費やすことになります。
この他よくある例として、バグが有ることを設計者に伝えると設計者はまず、他人が設計したモジュールや検証者が作成した検証環境/テストパターンを疑う傾向があり、結果、バグの特定に時間を費やすことにもなります。



・アサーションでできること

アサーションを回路内部や入出力端子(例えば、目視確認していた箇所など)に挿入することで、論理シミュレーションを実行した際にツールの方でエラーのメッセージ出力やパス/エラーの回数をレポートします。






onepoint3_1




この様にアサーションを挿入することで観測ポイントが増え、回路の動作を自動的に監視してくれるので、バグの特定や解析時間が短縮される可能性があります。


アサーションには数サイクルにわたって動作する仕様を表現するための文法が用意されており、例えばマスタモジュールがREQ信号を出力後、スレーブモジュールは5サイクル以内にACK信号を出力するといったプロトコル動作のチェックやステートマシンの状態遷移チェックなどを行うことが可能です。




onepoint3_2



以上の様にアサーションを導入することによって従来検証での課題を補い、回路品質の向上に役立ちます。ただし、アサーションは回路と同じ様に言語で記述する必要がありますので、ある程度記述する時間が必要です。しかし、一度記述して回路に挿入することで論理シミュレーションを実行するたびに自動的に監視し、設計資産を流用した場合でもアサーションを再利用できるためトータル的に検証工数は短縮されます。


まだ、アサーションを導入されていない方は今後、積極的に導入してみては如何でしょうか。




今回ご紹介した内容については、以下の講座、書籍で詳しく解説しています。


●講座

SystemVerilogセミナー(アサーションコース)


●書籍

RTL設計スタイルガイド

XILINX
教育サービス
HDLABトレーニング(SystemC)
HDLABトレーニング(SystemVerilog)
HDLABトレーニング(Verilog HDL)
HDLABトレーニング(フレッシュマン向け)
HDLABトレーニング(専門分野)
HDLABトレーニング(組込み分野)
HDLABトレーニング(XILINX認定)
HDLABトレーニング日程表
HDLABトレーニング開催リクエスト
Eラーニング
STIL講座
STIL講座ログイン
設計スキルアセスメント
設計技能検定試験「ESA」
設計技能検定試験「ESA Basic」
設計・コンサルティング
ARM CPUモデル環境
SystemC
Design Style Guide
設計・検証のワンポイント
購入・見積もり
ダウンロード
お問い合わせ

XAP