FPGA/CPLD ホーム 製品・サービス ソフトウェア メンター・グラフィックス 機能検証 ModelSim DE に搭載された検証機能【2】−コードカバレッジ−

ModelSim DE に搭載された検証機能【2】−コードカバレッジ−

はじめに

メンター・グラフィックスの ModelSim DE は、検証に便利な機能を豊富に備えています。

今回はその検証機能の1つである 『コードカバレッジ』 についてご紹介します。


 ModelSim DE に搭載された検証機能


【1】アサーション検証とは

  【2】コードカバレッジとは

【3】波形比較とは

【4】エンハンスド・データフローとは


HDLの設計現場の状況

FPGA の大規模化により、HDL やテストベンチ全体を理解するのは困難になってきました。

それにより、テストに穴が空いたり、不要な HDL 記述による無駄な回路増大が起きています。


コードカバレッジとそのメリット

コードカバレッジとは、シミュレーションを実行しながら、HDL コード内の各実行回数をカウントする機能です。コードカバレッジを使うと下記のメリットがあります。

(1) テスト品質の向上
コードカバレッジで実行されなかった箇所が 『必要な機能』 なら、テストに穴があることになります。

テストベンチを追加してテスト品質を向上できます。

(2)回路面積の低減

コードカバレッジで実行されなかった箇所が 『不要な機能』 なら、該当する HDL 記述を削除して回路
面積を小さくすることができます。

(3) FPGA の開発依頼元やプロジェクト・マネージャからの信頼度が向上

FPGA 開発をデザインハウスへ 委託した依頼主やプロジェクト・マネージャーには、

開発を依頼したデザインのテスト品質や回路のオーバヘッドが見えません。


コードカバレッジによる高いカバー率を開発依頼元やプロジェクト・マネージャへレポート

すると、信頼性の高い開発を行っていることをアピールできます。

コードカバレッジの種類

ModelSim は様々な種類のコードカバレッジをサポートしています。

(1) ステートメントカバレッジ:各ステートメントの実行回数を測定します。

(2) ブランチカバレッジ: if / then / else やcase の実行回数を測定します。

(3) コンディション・カバレッジ: ブランチカバレッジの拡張機能で、分岐条件の

  入力と出力の各組み合わせの実行回数を測定します。

(4) エクスプレッション・カバレッジ コンディション・カバレッジと同様ですが、
代入文の右辺の式の実行回数を測定します。

例えば、”x <= a xor (not b(0))”は、”a”、”b(0)”、”(a xor (not b(0))”の各組み合わせの実行回数を
測定します。


(5) FSM カバレッジ 論理ステートマシンの遷移回数を測定します。

(6) トグル・カバレッジ ”L”、”H”、”X”、”Z”へ遷移する回数を測定します。

コードカバレッジのレポート

ModelSim のコードカバレッジは、レポート内容をカスタマイズして、グラフィック とファイルで出力することができます。

(1)コードカバレッジ結果の グラフィック 表示


図1.Source ウィンドウのカバレッジ結果例

図1.は HDL ソースにコードカバレッジ結果を合わせた “Source ウィンドウ” 例です。
58 行目のように、カーソルを置いた箇所のカウント数を表示します。

Hits:コードカバレッジ統計
BC:ブランチ・カバレッジ
In #:HDLの行番号
緑のチェックマーク:その行のステートメント、ブランチ、エクスプレッションがカバーされたことを示します。
赤のX:ステートメントまたはブランチがカバーされなかったことを示します。
XT:条件ステートメントの分岐がカバーされなかったことを示します。


    図2.カバレッジデータの表示

図2.のように詳細なカバレッジ・レポートの表示も可能です。


(2) コードカバレッジ結果のファイル出力
コードカバレッジの結果は、GUI だけでなくファイルでも出力可能です。
出力する際に、下記のように様々な形式でレポートすることができます。

1. カバレッジ率のしきい値を変えて解析できます。

例えば、カバー率が30%以下の箇所だけを表示できます。

2. カバレッジの解析結果からレポート除外する箇所を設定できます。

3. カバーされなかったステートとトランジションをレポートできます。

テストベクタを追加する際の情報になります。

4. 複数シミュレーション結果をマージできます。
一般的に、各ブロック内とブロック間の検証は論理シミュレーションで行い、 システムレベルの検証は
FPGA を使って実機で検証します。
複数のテストベンチによるコードカバレッジ結果をマージして、回路全体のカバー率をレポートでき
ます。

5. インスタンス別、デザインユニット別、HDL のファイル別に出力できます。

6. テキスト、XML ファイル、HTML のファイルフォーマットで出力できます。

HTMLによるレポートは豊富な情報を階層化とカラー化で見やすくしています。

お勧めするレポート形式の1つです。


JPEGを表示できません
図3.HTMLによるレポート例


上記内容についてのお問い合わせやご質問がございましたら、お気軽に弊社までご連絡ください。

 ModelSim の詳細はコチラ 


【1】アサーション検証とは

  【2】コードカバレッジとは

【3】波形比較とは

【4】エンハンスド・データフローとは