Universal Verification Methodology (UVM) UVMは少なくとも10年以上にわたってASICデザインのデファクト検証手法として使用されてきたが、現在では高密度・高信頼性のFPGAやSoC FPGAデザインにも普及しつつあります。UVMはもともと2011年にAccelleraによって作成され、2020年にはIEEE 1800.2-2020としてIEEE標準となりました。UVMはSystemVerilogで書かれたオープンソースのライブラリで、ハードウェアデザインにオブジェクト指向プログラミングの力を活用しています。 スケーラブルでモジュール化された再利用可能な検証コンポーネントを開発するための基本クラスライブラリを定義するAPIセットにより、UVMは、コンストレントランダムスティミュラス生成とファンクショナルカバレッジ手法を使用して強力なテスト環境を構築できるようにすることで、検証プロセスをより柔軟にすることを目指しています。 アルデックツールは、UVMのコンパイルとシミュレーションをサポートしており、最新版のActive-HDLとRiviera-PROのインストーラには最新のUVMライブラリが含まれています。Riviera-PROは自動UVMテストベンチジェネレータ、UVM RALジェネレータ、UVMビューワ(グラフ、階層、コンフィギュレーションウィンドウ)など、UVMに特化した機能を提供しています。 主な使用例 UVMはVHDL、Verilog、SystemVerilogによるデザインをサポートし、ASIC、大規模FPGA、SoC FPGAプロジェクトに取り組む大規模チームに最適です。UVMは相互運用性を向上させ、新規プロジェクトでIPを再利用する際のコストを削減し、ブロックレベルからシステムレベルまでの検証コンポーネントの再利用を容易にします。全体として、この規格の採用は検証コストの削減と設計品質の向上につながります。 メリット UVMは、再利用性を最大化するために、検証におけるいくつかのベストプラクティスを定義する標準化されたメソドロジになります。 オブジェクト指向プログラミングとクラスリファレンス。このライブラリは、次のカテゴリに分類されたクラス、ユーティリティ、マクロで構成されています: ベース、レポーティング、レコーディング、ファクトリ、フェージング、シンクロナイゼーション、コンテナ、TLM、コンポーネント、シーケンス、シーケンサ、ポリシ、レジスタレイヤ、マクロ、コンフィギュレーションとリソース、パッケージスコープ、コマンドラインプロセッサ。 基本クラスライブラリ。uvm_object(クラスベースのコア操作のインターフェイスを定義)、uvm_component(シミュレーション中に存在する階層モジュールやプログラムブロックなどの準静的オブジェクト)、uvm_transaction(uvm_objectのすべてのメソッドを継承し、タイミングとレコーディングインターフェイスを含む)を使用することで、モジュール化、拡張、再利用可能な検証コンポーネントとテスト環境の設計を容易にする基本的なビルディングブロックを提供する。 定義済みコンポーネントクラス。これらのコンポーネントは、テストベンチ内のドライバ、スコアボード、その他のオブジェクトの動作をカプセル化することによりUVMの要となります。基本クラスライブラリは、定義済みのコンポーネントタイプのセットを提供します。 トランザクションレベルモデリング(TLM)。これは、トランザクションに基づいてコンポーネントとシステムの高度に抽象化されたモデルを構築するためのモデリングスタイルになります。UVMは、トランザクションレベルで様々なコンポーネントを接続するために使用できるトランザクションレベルの通信インタフェースとチャネルのセットを提供します。TLMインタフェースを使用することで、各コンポーネントが環境全体の他コンポーネントの変更から確実に隔離されます。UVMの適切に構造化されたフレームワークと段階的で柔軟なビルドインフラストラクチャを統合すると、TLMは再利用性をサポートおよび促進し、同じインタフェースを共有している場合に限り、任意のコンポーネントを別のコンポーネントに置き換えることができます。 テストとテストベンチの分離。スティミュラス/シーケンサの観点からのテストは、実際のテストベンチ階層から分離されているため、異なるユニット間やプロジェクト間でスティミュラスを再利用することができます。 モジュール性と再利用性。このメソドロジは、ドライバ、シーケンサ、エージェントなどのモジュラコンポーネントとして設計されており、ユニットレベルからマルチユニットレベルまたはチップレベルの検証、およびプロジェクト全体にわたってコンポーネントを再利用できます。 シミュレーションに依存しない。ベースクラスライブラリとメソドロジはすべてのシミュレータでサポートされているため、特定のシミュレータに依存することはありません。 シーケンスメソドロジ。スティミュラス生成をロバストに制御します。ランダマイズ、レイヤシーケンス、バーチャルシーケンスなど、シーケンスを開発する方法がいくつかあります。これは優れた制御と豊富なスティミュラス激生成能力を提供します。 レポートメカニズム。これは多くのエージェントが存在する環境のデバッグに役立ちます。詳細機能を利用して、メッセージをフィルタリングしてログに記録できます。詳細度を変更することで、メッセージの出力を制御できます。メッセージの重大度は、致命的、エラー、警告、情報、ファイル名および行番号(ファイルと行はデフォルト)に分類されます。 ウェビナービデオ:UVMを恐れないで(ハードウェア設計者のためのUVM) ハードウェア設計者は通常、業務に非常に忙しく、新しいメソドロジをテストする時間はほとんどありません。残念なことに、UVM(Universal Verification Methodology)の公式ドキュメントは、検証エンジニアが検証エンジニアのために記載したもので高レベルの機能に集中しており、UVMテストベンチをデザインに接続するような低レベルの詳細は完全に無視されています。このウェビナでは、まずSystemVerilogのインタフェースについて、特にバーチャルインタフェースに注目しながら、しっかりとレビューします。そして、シーケンサで処理され、ドライバを経由してテスト対象のデザインに供給されるシーケンスとその他のデータアイテムに進みます。結果の解析におけるモニタとスコアボードの役割について説明します。最後に、環境設定とトップレベルモジュールからのテスト実行について説明します。 UVMのその他のウェビナー録画 Automating UVM flow using Riviera-PRO’s UVM Generator High-Performance PCIe 5.0 IP + VIP UVM Verification Environment UVM-based Verification of Custom Instructions with RISC-V Cores UVM for FPGAs (Part 1): Get, Set, Go – Be Productive with UVM UVM for FPGAs (Part 2): Solving FPGA Verification Challenges with UVM UVM for FPGAs (Part 3): Verifying Zynq MPSoC Designs? Learn how UVM Register Access Layer (RAL) can help UVM for FPGAs (Part 4): IEEE 1800.2 UVM Updates 追加のリンク 1800.2-2020 - IEEE Standard for Universal Verification Methodology Language Reference Manual UVM 2020-2.0 Reference Implementation UVM 1.2 Reference Implementation UVM 1.2 User Guide UVM 1.0 Reference Implementation