Universal Verification Methodology (UVM) は、SystemVerilog 設計の検証を支援する一般的な方法であり、これには 構成システム 残念ながら、速度と使用方法にいくつかの問題があります。 Siemens EDA の Rich Edelman は、これらの問題を回避する方法をテーマにした詳細な 20 ページの論文を執筆しました。私はそれを読んで要点を要約しました。検証エンジニアは UVM 構成データベースを使用して値を設定し、後の UVM テストで値を取得します。値「T」を設定および取得する一例は次のとおりです。
uvm_config#(T)::set(スコープ、インスタンスパス名、フィールド名、値); uvm_config#(T)::get(スコープ、インスタンスパス名、フィールド名、値);
UVM テストベンチをテスト対象のデバイスに接続するには、構成データベースを使用して仮想インターフェイスを渡します。 UVM 構成の使用には 3 つの問題があります。
- 巨大なコード、約 2,600 行のコード
- 正確な型の一致が必要なため、「int」と「bit」は同じではありません
- スローコード
遅いコードの場合を考えてみましょう。ワイルドカードを含む名前を使用して set() を何千回も呼び出すと、「set」フェーズと「get」フェーズが完了するまでに最大 30 分かかることがあります。
Rich は、比較するとわずか数秒しかかからない、はるかに高速な UVM 構成の新しいソリューションを提案しています。
UVM コードでワイルドカードの使用を回避し、「set」コマンドがほとんどない場合、コードはより高速に実行されます。
UVM 構成の問題に対する考えられる解決策は次のとおりです。
- 代わりにグローバル変数を使用してください
- 1 つの set() で UVM 構成を使用する
- いくつかの set() で UVM 構成を使用する
- 構成ツリーを使用する
- 別のものを試してください
何か別のものを試す最後のアプローチが新しいソリューションであり、引き続き set() および get() API を使用し、構成のパラメータ化を削除することで簡素化し、優先順位を削除し、検索アルゴリズムの変更を削除します。この新しいアプローチの結果、高速化が実現します。
新しい構成アイテムは「config_item」の派生クラスで定義されており、以下の例では、設定されるプロパティとして「int value」を示しています。デバッグの目的で、pretty-print 関数を追加します。
クラス my_special_config_item は config_item を拡張します。 function new(string name = "my_special_config_item"); super.new(名前); endfunction int 値;仮想関数文字列convert2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string());エンド関数エンドクラス
「config_item」には name 属性があり、この名前とインスタンス名が検索されます。構成オブジェクトには、名前を返す get_name() 関数もあります。 「instance_name.field_name」を検索するために、構成データベースは高速な検索と作成速度のために連想配列を使用します。
ファイル名と行番号は set() および get() 関数呼び出しのフィールドであるため、追跡可能性のために、誰が set または誰が get を呼び出したかを知ることができます。
set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", Speedconfig, `__FILE__, `__LINE__)
デバッグ中にアクセサー キューを出力して、誰が set() および get() を呼び出したかを確認できます。
ワイルドカードをサポートするには、コンテナを使用した検索メカニズムを追加する必要がありました。インスタンス名「top.abcd*_0」について考えてみましょう。
インスタンス名のワイルドカード部分は、連想配列ではなくコンテナ ツリーを使用して処理されます。
まとめ
UVM テストベンチのモジュール/インスタンスとクラスベースの世界の間でのデータの共有は、UVM 構成データベースを使用して行うことができますが、速度の低下に注意してください。方法論で多くの構成を使用する場合は、UVM 構成データベース ファイル内の 300 行のコードの代わりに約 2,600 行のコードを使用するパッケージを備えた、導入された新しいアプローチの使用を検討してください。
20ページの論文を全部読んで、 構成の狂気を回避する簡単な方法 シーメンスEDAにて。
関連ブログ
この投稿を共有する:
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- PlatoData.Network 垂直生成 Ai。 自分自身に力を与えましょう。 こちらからアクセスしてください。
- プラトアイストリーム。 Web3 インテリジェンス。 知識増幅。 こちらからアクセスしてください。
- プラトンESG。 カーボン、 クリーンテック、 エネルギー、 環境、 太陽、 廃棄物管理。 こちらからアクセスしてください。
- プラトンヘルス。 バイオテクノロジーと臨床試験のインテリジェンス。 こちらからアクセスしてください。
- 情報源: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- :持っている
- :は
- :not
- $UP
- 30
- 300
- 600
- a
- 私たちについて
- 加えます
- 追加
- アルゴリズム
- また
- an
- および
- どれか
- API
- アプローチ
- です
- 配列
- AS
- At
- 避ける
- 知って
- b
- BE
- なぜなら
- さ
- 以下
- の間に
- by
- 呼ばれます
- コール
- 缶
- 場合
- 変化する
- class
- コード
- 比較
- コンプリート
- 検討
- コンテナ
- コンテナ
- 続ける
- 創造
- データ
- データベース
- 定義済みの
- 派生
- デザイン
- 詳細な
- デバイス
- 異なります
- 行われ
- 間に
- 簡単に
- エンジニア
- エーテル(ETH)
- 例
- 拡張する
- スピーディー
- 速いです
- 少数の
- フィールズ
- File
- もう完成させ、ワークスペースに掲示しましたか?
- から
- フル
- function
- 取得する
- 受け
- グローバル
- 行って
- 助けます
- ハイライト
- 認定条件
- How To
- HTTPS
- if
- in
- 含ま
- を取得する必要がある者
- インターフェース
- 導入
- 問題
- IT
- JPG
- ただ
- 姓
- 後で
- LINE
- ライン
- 見
- 検索
- たくさん
- 作成
- マッチング
- 最大幅
- メカニズム
- 方法論
- 分
- 分
- ずっと
- 名
- 名
- 新作
- 新しいソリューション
- 数
- オブジェクト
- of
- on
- ONE
- の
- or
- でる
- パッケージ
- 紙素材
- 部
- パス
- 相
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- さらに
- 人気
- ポスト
- 優先順位
- 問題
- 財産
- 提案する
- 目的
- 除去する
- 除去
- の提出が必要です
- 結果
- return
- 富裕層
- ラン
- スコープ
- 秒
- セッションに
- 設定
- 作品
- ジーメンス
- 簡素化する
- 遅く
- スローダウン
- So
- 溶液
- ソリューション
- 一部
- 何か
- スピード
- 速度
- 文字列
- まとめる
- スーパー
- サポート
- T
- 取る
- 取得
- test
- それ
- アプリ環境に合わせて
- その後
- そこ。
- ボーマン
- この
- 数千
- 三
- 介して
- 時間
- 〜へ
- top
- トピック
- トレーサビリティ
- ツリー
- しよう
- type
- 下
- 残念ながら
- ユニバーサル
- 使用法
- つかいます
- 使用されます
- 値
- 価値観
- 変数
- Verification
- 確認する
- 、
- バーチャル
- 仕方..
- which
- 誰
- 意志
- 世界
- 書いた
- 貴社
- あなたの
- ゼファーネット