カバレッジ機能
検証は、設計期間の非常に多くの部分を費やす長期にわたるプロセスです。アサーション言語の使用や期待値との比較によるモデルの振る舞いの確認のほかにも、カバレッジによってテストが十分に行われているかどうかを確認する手法があります。
テストベンチの開発に多くの時間と工数がかかっており、検証の進捗状況における信頼できるフィードバックが非常に重要となります。カバレッジ機能によってそのようなフィードバック情報を得ることができます。デザイン中の特定の領域が実行されているかどうかをカバレッジ情報から確認し、テストベンチ開発の指標とすることができます。
さらに、基準となるカバレッジを満たしているかどうかの情報をテストベンチにフィードバックすることができます。カバレッジ基準を満たしているかどうかによって、その振る舞いを決定するテストベンチを作成することができます。
ステートメント/ブランチカバレッジ
ステートメントカバレッジによって、ソースコードの個々のラインが何回実行されたかを確認できます。テストベンチによって全く実行されなかったソースコードも簡単に特定することができます。
ブランチカバレッジでは、if 文や case 文などのステートメントの分岐条件についての実行状況を確認できます。各々の条件が True または False に何回なっているかをレポートします。
ステートメント/ブランチカバレッジの情報を得る為に特別な操作をする必要はありません。シミュレータのオプションを一つ追加するだけで、コードに対する変更は一切必要ありません。カバレッジエンジンは、シミュレーションカーネルに統合されており、シミュレーションスピードに対する影響もほとんどありません。
トグルカバレッジ
ステートメントカバレッジを補完する機能としてトグルカバレッジがあります。 コード中の個々のラインの実行状況についてレポートするのではなく、 デザイン中の信号のトグルについての情報を提供します。トグルカバレッジでは、 どの信号がシミュレーション実行中に値が割り付けられていないか、どの信号が立ち上がり、立下りを行っていないかといった情報をレポートします。
ステートメント/ブランチカバレッジと同様、トグルカバレッジの情報を得る為の特別な操作は必要ありません。
ファンクショナルカバレッジ
ファンクショナルカバレッジは Riviera-PRO で利用可能なカバレッジの中で最も洗練された機能です。個別のステートメントあるいは信号に焦点を合わせる代わりに、ファンクショナルカバレッジはデザインの機能がどれだけテストされたかを示します。
ファンクショナルカバレッジ情報は 検証エンジニアが PSL、OVA または SystemVerilog で記述した仕様に基づいて集められます。 その仕様には抽象度の高い必要条件、テストシナリオ、エラーケースとコーナーケースを含めることができます。ファンクショナルカバレッジの基準には、FIFO がフルになったときステートマシン中の個々のステートがテストされたかどうか、また割り込みがそれぞれのオペレーションコードの前に報告されたかどうかなどがあります。
ファンクショナルカバレッジからの情報をテストベンチにフィードバックできます。エンジニアはカバレッジ基準を満たした際にどのような振る舞いをするかを規定したテストベンチを作成できます。例えば、テストプランが100%を満たしたとき、テストベンチは自動的にシミュレーションを終えるという内容を規定できます。
カバレッジウィンドウ
カバレッジ結果の表示には専用のウィンドウがあります。そのウィンドウはシミュレータによって作られたファイルからすべてのデータを読み込みます。下の図はステートメント、ブランチ、ファンクショナルカバレッジデータを読み込んだカバレッジウィンドウです。

カバレッジウィンドウは2つのペインでデータを示します。左のペインにはそれぞれのデザインでのデザイン階層と統計値を示します。 失敗したアサーションと実行しなかったコードを含んでいるインスタンスが赤で示されます。右のペインではソースコードの表示とカバレッジデータの円グラフ表示をタブで切り替えることができます。
カバレッジ結果の統合
デザインは通常、何百というテストベンチやテストベクタで検証されることになります。検証の進捗状況を把握する際には、個々のシミュレーション結果よりもすべてのシミュレーション実行からの統合されたデータがより重要です。Riviera-PRO にはカバレッジマージ機能があり、多数のステートメント、ブランチ、ファンクショナルカバレッジ結果を統合することができます。
|