ModelSim / Questa に踏査されている各検証機能について、紹介します。
ModelSim/Questa の検証機能
![]() |
ModelSim PE : + シミュレーションをサポートする 3つの機能 ・ModelSim DE/Questa Core : + 基本的なアサーションベース検証 ・Questa Prime : + 本格的なアサーションベース検証 ・Questa Ultra : + アサーションベース検証を効率化する機能を 備えています。 |
コードカバレッジ
![]() |
テストベンチが回路をどの程度動かしたかをチェックする機能です。 シミュレーション実行中に HDL コード内で評価対象となる行や分岐の実行回数をカウントして、カバー率をレポートします。 コードカバレッジで実行されなかった箇所が 『必要な機能』 ならテストベンチに漏れがあり、『不要な機能』 なら、該当する HDL を削除できるので回路面積を小さくして、消費電力やコストを削減できます。 どうしてもカバレッジを上げることができない時は、 「Questa CoverCheck」ツールを使うと、そもそもコードカバレッジで検出できない箇所を検証対象から外したり、カバーするためのテストパターンを自動生成します。 |
波形比較
![]() |
既に検証済みの波形を基準として、別のシミュレーション結果と比較する機能です。 高位合成前後の論理比較、論理合成前後の論理比較、回路変更前後に影響しない箇所の論理確認、デバック時に実機とシミュレータの波形を比較するなど、色々と応用が利く機能です。 |
データフロー
![]() |
シミュレーション結果の”X”の原因を見つける機能です。 波形の"X"をダブルクリックすると、RTLから該当する箇所の回路図を自動生成します。更に、調べたい信号をさかのぼって”X”の原因となる箇所まで階層をまたいで自動で探索します。 デバックは信号の流れと逆に解析するので面倒ですが、この機能を使うと簡単に解析できます。 波形⇔回路図⇔元のRTL が相互にリンクされ、波形の位置をカーソルで変えるとその時の各ノードのステータスも同時に変わります。 |
アサーション・ベース検証(ABV)
ダイレクトテスト(従来の検証方法) | アサーション・ベース検証 |
アサーション・ベース検証は、回路内部に内部信号のふるまいを定義して、回路が仕様通りに動作することを自動的に監視させる検証のことです。
従来のシミュレーション方法は、内部で誤動作が発生しても誤信号が出力ピンに到達しないとバグに気が付きません。アサーションは例えば FIFO のオーバー/アンダーフロー、ステートマシンの割り込みやリセット、アービトレーションの公平性などの誤動作しやすい箇所や、各ブロックの入力条件などをアサーション制約で定義するとシミュレーション中に違反を見つかると即座にアラームを発生します。
アサーション・ベース検証は今や一般的な検証手法なので、Questaシリーズではアサーション・ベース検証用の様々なオプションを用意しています。
制約付ランダムテスト
検証が不要なパターンを省く制約を付けたランダムなテストパターンを自動生成させて、アサーション制約を付けた箇所を検証する手法です。
テストベンチを作成したり、期待値と照合する手間は不要です。
設計者が作成する機能テスト用のテストベンチは、機能が正しく動くことを想定して作るので 設計者が意図しない不具合を見過ごす可能性があります。ランダムテストは文字通りにランダムにテストパターンを発生させるので、予想外の使用方法による不具合を減少させる効果があります。
OVM/UVM
検証のスペシャリストが、長年の経験を元にして作成した検証手法とアサーションなどを標準化して、オープンソースとして公開しています。
OVM/UVM を利用することで、アサーションやテストベンチを作成する手間が省かれて検証の効率化が図れます。
制約付ランダムテストと機能カバレッジの付いたシミュレータ と SystemVerilogを使っていればご利用できます。
機能カバレッジ
制約付ランダムテストを行う際に、自動で生成したテストベンチがどの程度までカバーしたのかを観測する機能です。
ランダムテストを終了させるタイミングを把握することができます。
ランダムテストでエラーが発生しないと、シミュレーションを終了させるタイミングの判断に困ります。
そこで、例えば FIFO でデータが空や一杯になった時の検証を行ったかどうか等の検証条件を設定して、ランダムテストでカバーしたかどうかを確認します。
インテリジェント・テストベンチ・オートメーション
回路規模が大きくなると、制約付ランダムテストのテストベンチが長くなるのでシミュレーションに時間がかかります。
インテリジェント・テストベンチ・オートメーション は、テストベンチを解析して、既に検証済みのパターンを省くことでテストベンチを最大で約75%も削減します。
回路規模が大きく、制約付ランダムテストでの検証に時間がかかる場合に便利な機能です。
上記以外にも、多くの検証手法をご用意していますので、FPGA の検証手法、設計フロー、検証ツールの組み合わせなどにお困りの方は遠慮なくご相談ください。
お問い合わせ
本記事に関してご質問などありましたら、以下よりお問い合わせください。