Universal VHDL Verification Methodology (UVVM) UVVMは、オープンソースのVHDL検証ライブラリおよびメソドロジであり、GithubとIEEE Standards Association Openの両方で利用でき、欧州宇宙機関(ESA)と協力して開発されています。最新のUVVMライブラリは、Active-HDLおよびRiviera-PROの最新バージョンのインストールに含まれています。 このVHDLベースのアプローチを使用する主な利点は、既知の設計言語を使用して特定のテストベンチに必要な機能を段階的に追加できることです。さらに、必要なのはVHDLだけであるため、検証がより簡単、迅速、かつ安価になります。UVVMはVHDL2008互換シミュレータで動作し、テスト対象デザイン(DUT)がVerilogであってもASIC検証に使用することができます。 UVVMは「VHDL用のUVM」と見なされますが、ユーザーのしきい値ははるかに低く、テストベンチで以下を対象とするように作成されました: 概要と読みやすさ 変更性、保守性、拡張性 デバッグ性 再利用性 UVVMには、さまざまなインタフェースにアクセスするためのインタフェースモデルが多数あります。これらは、簡単な使用のためにバスファンクションモデル(BFM)プロシージャとして提供され、より高度な検証のためにVHDL検証コンポーネント(VVC)として提供されます。これらのインタフェースモデルを使用すると、高レベルのトランザクション(プロシージャ)を記述して、理解しやすいテストケースを作成できます。 UVVMのVVCは単一プロジェクトでより効率的な検証を可能にし、さらにあらゆるレベルでの再利用を可能にする独自の機能を提供します。特徴は次のとおりです: すべてのDUTインタフェースを単一のテストシーケンサから制御可能 インタフェーススのアクティビティは相互に偏りやすい スプリットトランザクションとアウトオブオーダーインタフェースは、非常に構造化された方法で処理できます。 一般的なVVC機能を制御するための一般的なコマンド より効率的なVVC処理のためにブロードキャストとマルチキャストを使用する場合があります 完全なカプセル化により直接再利用可能 さまざまなユーザーのVVCが連携できるように標準化されたインタフェースと機能 UVVMは重要な部分でのシンプルさに重点を置いており、ソフトウェア開発者とハードウェア開発者は同様にUVVMテストケースを簡単に読み書きできます。また、このメソドロジは、説明、構文、例とともに非常に詳しく文書化されています。さらにあらゆる機能のデモおよびメンテナンステストベンチ(UVVM Supplementary内)を見つけることもできます。 UVVMは非常にエラーが発生しやすいサイクル関連のコーナーケースを対象とした検証メソドロジであり、このメソドロジの発明者であるEmLogic(ノルウェー)のEspen Tallaksen氏は現在もプロジェクトマネージャー兼チーフアーキテクトを務めています。 主な使用例 UVMはVHDLテストベンチの可読性、概要、保守性を向上させることを目的としています。シンプルなDUTはシンプルなUVMユーティリティ・ライブラリとBFMを使用して検証することができます。一方、非常に構造化されたUVMテストベンチアーキテクチャは、複雑なDUTを非常にシンプルな方法で検証することができ、効率と品質を大幅に改善します。 メリット UVVM は下記機能を提供します: 基本的なテストケースのサポートと、値のチェック、安定性のチェック、値または変更の待機、パルスとクロックの生成、フラグ/セマフォ/バリアの処理、アラート処理、ロギング、冗長性の制御、文字列のサポート、正規化などの手順を備えたインフラストラクチャ ユーザー閾値が非常に低い テストケースのコードサイズを大幅に削減すると同時に読みやすさと品質を向上 以下のバス機能モデル (BFM) および検証コンポーネント (VVC): AXI4-liteとAXI4-stream Avalon MMとAvalon-stream SPI、I2C、SBI、UART、GPIOおよびWishbone GMIIとRGMII イーサネット 検証コンポーネントのレゴ的接続: テストケースへの接続は不要 テストケースを簡素化可能 信号やポートを変更することなく、テストハーネスを変更可能 シンプル、高度、最適化されたランダム化 ファンクショナルカバレッジ 仕様カバレッジ/要件トレーサビリティ 汎用スコアボード エラーインジェクション プロトコルチェッカー機能 モニターの例 ウォッチドッグ トランザクションレベルモデリング/高レベルトランザクション トランザクション情報アクセス ローカルシーケンサー アクティビティ登録と完了検出 階層的検証コンポーネント FIFOとキュー ロックインなし。 1機能だけ選択できます。 例:await_value() - 仕様カバレッジまたは AXI ストリーム VVC あらゆる従来のテストベンチで動作 ウェビナービデオ:VHDLベースFPGAデザインのシミュレーションテストベンチの強化 (パート1) シンプルなDUTの基本テストベンチ HDLテストベンチを使用した機能シミュレーションは、FPGAデザインの機能的正しさを証明するための事実上の手法です。この3部構成のウェビナーシリーズでは、テストベンチの構築方法について、基本的な手法から高度な手法まで、ステップ・バイ・ステップで説明します。最初に単純なDUTを使用し、次に複数のインタフェースで同時にアクティビティが発生する複雑なDUTを使用します。 本ウェビナーシリーズのパート1では、検証フレームワークを使用せずに、基本的なテストベンチを使用して、低~中品質要件の比較的単純なDUTを検証する方法を紹介します。また、基本的なテストベンチインフラストラクチャの要素について説明し、冗長性とアラート制御を備えたセルフチェックテストベンチの作成方法の例を示し、検証およびデバッグを高速化するための基本的なBFMの使用方法を紹介します。次にUVMを紹介し、簡単なDUTを検証するためにUVMを使用する方法を示します。 UVVM のその他のウェビナー録画 VHDLベースFPGAデザインのシミュレーションテストベンチの強化 (パート2) シンプルなDUTの高度なテストベンチ VHDLベースFPGAデザインのシミュレーションテストベンチの強化 (パート1) 複雑なDUTの高度なテストベンチ 追加のリンク https://github.com/UVVM/UVVM https://uvvm.github.io https://forum.uvvm.org/ https://emlogic.no/uvvm/ https://github.com/HDLUtils/hdlregression