メトリクスドリブン検証 メトリクスドリブン検証は、メトリックコレクションに基づく方法です。 検証作業の予測可能性、生産性、および品質を改善するために使用されます。 メソッドロジは結果が想定基準を満たすまで継続的に実行される4つのステップに基づいています: プランニング - 設計者の意図と要求仕様を詳述するドキュメントの作成と形式化。このドキュメントにより、プロジェクトマネージャまたはリーダーは、各マイルストーンに割り当てられた目標を追跡し、計画に含まれる機能に優先順位を付けることができます。 これをベリフィケーションプランと呼びます。 検証環境の構築 - この段階で、エンジニアは既存の検証IPとコンストレントランダムベースのSystemVerilog UVMまたはOSVMM環境を再利用して、ベリフィケーションプランをカバーする検証シナリオを作成しようとします。 テストシナリオの実行 - この段階で、プロジェクトのリビジョンごとにレグレッションテストが実行されます。 コードまたは機能カバレッジなどのメトリックは、ACDBテクノロジーを使用してキャプチャされます。 結果はベリフィケーションプランにマッピングされます。 プロセスの測定と解析 - これにより、実際のプロジェクトステータスを明確に把握し、主要なマイルストーンと相互参照できます。これはRiviera-PROのカバレッジ機能が非常に有用なケースです。 コードカバレッジ コードカバレッジは、デザインソースコードから自動的に生成されます。 この検証メトリックは、設計の正確さを示すものではありません。 むしろ、レグレッションテストの実行中にコードがどのように実行されるかを測定します。 カバレッジが不足している場合は、テスト中に実行されなかったコードまたは不完全なテストのいずれかを示します。 アルデックのシミュレーターでは、次のタイプのコードカバレッジを使用できます: ステートメントカバレッジ - 各実行可能ステートメントを調べて、実行された回数をカウントします。 ブランチカバレッジ - 各条件ステートメントのブランチを調べ、シミュレーション中にブランチが満たした真または偽の条件をカウントします。 パスカバレッジ - 条件文の実行順序を調べて、すべての可能な実行シーケンスがテストベンチで検証されているかどうかを示します。 エクスプレッションカバレッジ - 論理式を監視し、論理式のすべての可能な状態が実行されたかどうかを示します。 トグルカバレッジ - 信号の論理値の変化を監視し、テストベンチによって適切に実行されなかった信号を示します。. ファンクションカバレッジ - アサーション アサーションおよびcoverディレクティブは、デザインの予想される動作の特定および検証します。これらは一定期間にわたって信号値を監視するためにソースコードに直接書き込まれます。、 アサーションは、何かが常に保持されなければならないことを宣言します(アサーションの失敗はデザインのバグを意味します)。 coverディレクティブは、何かが発生することを宣言します(coverの成功はカバレッジの確認になります)。 PSLのcoverディレクティブとSystemVerilogのcoverステートメントは、アサーションカバレッジの形式です。システムを設計し検証アルゴリズムを定義する場合、プロパティの指定、およびアサーションと機能カバレッジでのプロパティの使用は不可欠です。アルデックのシミュレーターは、この目的に役立つ3つの一般的な言語をサポートしています: SystemVerilog Assertions (SVA) SVAはSystemVerilogの一部であり、モジュールバインディングレベルとビヘイビアコードの両方でVerilogコードとうまく融合します。SVAで記述された検証モジュールは、混合言語シミュレータ環境のVHDLコンポーネントにバインドすることもできます。アサーションバンドルは、アルデックのシミュレーターのハイエンド構成でデフォルトで出荷されます。バンドルが利用可能になると、関連するすべてのグラフィカルツールも利用可能になります。これにはデザインで定義されたすべてのアサーションは、それぞれのアサーションプロパティを変更できる専用のアサーションビューアに表示、アサーションブレークポイントの設定、アサーションをWaveform ViewerやAdvanced Dataflowなどの他のデバッグツールに追加など強力なデバッグ機能が含まれています。 Property Specification Language (PSL) PSLは最も完璧でありながら、学習しやすいプロパティ言語です。 他の言語との共存を支援するために、VHDL、Verilog、SystemVerilog、またはSystemCコードとうまく調和するフレーバーが用意されています。PSLのシンプルサブセット(シミュレーションが保証されている言語のセクション)は、最新バージョンのVHDL規格(IEEE Std 1076™-2008)にも組み込まれました。現在のVHDLまたはVerilog設計者にとって最も興味深いPSLの機能は、検証エンジニアが管理する個別の検証ユニットに配置できるだけでなく、設計者が管理するHDLコードに直接配置できることです。 OpenVera Assertions (OVA) OVAは、VHDLコードとよりもVerilogコードとよりよく融合しますが、両方で使用できます。 OpenVeraはSystemVerilogに取り組んでいるAccelleraグループに寄贈されたため、OpenVeraアサーションとSystemVerilogアサーションには多くの類似点があります。 ファンクションカバレッジ - SystemVerilog Covergroup Covergroupカバレッジは、SystemVerilogカバレッジモデルの統計を計算するファンクションカバレッジの形式です。これはシミュレーションセッションの実行によって検証された設計仕様の割合を測定するユーザー定義のメトリックです。Covergroupカバレッジは、生成された刺激を使用し、興味がある関連するデザイン機能(ベリフィケーションプラン内にリストされている)が観測されたことを検証します。アサーションカバレッジはデザインの機能を長期にわたって検証するために使用されますが、Covergroup カバレッジはシミュレーション全体で受け入れられた関連する値をカバーすることに重点を置いています。複雑なデザインの高度な検証に使用されます。 ファンクションカバレッジ - OSVVM ライブラリは、VHDLデザインでのOSVVMファンクションカバレッジの実装を容易にするサブプログラムを提供します。 このライブラリに含まれるCoveragePkgパッケージは、SystemVerilogハードウェア記述言語の同様のファンクションカバレッジ検証を提供します。 ファンクションカバレッジ - FSM 有限ステートマシンは、一連のステート、入力イベントと出力イベント、および論理条件で構成されます。条件付きロジック、入力イベント、および現ステートをベースにした計算、出力イベントの新しいセットと次ステートを返します。FSMカバレッジにより、ユーザーは未到達ステートと未評価遷移を識別できます。 次のFSMコンポーネントとカバレッジ統計を収集できます: ステート - マシンの出力を決定する内部条件 遷移 - 現在のマシンステートをあるステートから別のステートへ変化 シーケンス - 2つ以上の遷移のセット カバレッジデータベース - Unified Coverage Interoperability Standard アルデックカバレッジデータベース(Aldec Coverage DataBase:ACDB)は、いくつかのタイプのカバレッジデータ用の統合ストレージ形式です。 ACDBは、アルデックのAccellera UCIS(Unified Coverage Interoperability Standard)要求の実装になります。 アルデックのシミュレーターでは、あらゆる種類のカバレッジ統計が収集されACDBに保存できます。 ACDBに保存されたカバレッジ結果は、acdb rankコマンドを使用してランク付けできます 複数のACDBファイルを1つにマージできます。 この機能により、さまざまなシミュレーションセッション中に生成された統計を調べることができます(さらにマージされたACDBファイルでレポートの生成が可能です)。 テスト結果のランキング ACDBデータベースに保存されたカバレッジ結果はランク付けできます。この関数は、トータルカバレッジスコアに対する個々のテストのコントリビューションに基づいて結果を分類します。このコマンドを使用すると、単一のカバレッジ結果を他のすべてのカバレッジ結果と比較してその有用性を判断できます。シミュレーション時間やCPU時間などのコストに敏感なパラメータを考慮に入れて、最短時間で最大のカバレッジ結果をもたらすテスト実行を識別することができます。acdb rankコマンドは、最も包括的な全体的な結果を生成するために、コントリビューションテスト結果の結合に作用します。レポートは、プレーンテキストまたはHTML形式で作成できます。 ベリフィケーションプラン 詳細なカバレッジ結果にフォーカスする代わりに検証プロセスは全体的な要求を満たし、より高レベルの検証を達成することを目的としています。 要求はさまざまなデザイン機能とカバレッジメトリックをリンクするために使用可能で、詳細なカバレッジ結果の検査にフォーカスした基本的な検証手法よりも優れています。