色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡化UVM寄存器模型的使用教程

jf_78858299 ? 來源:blogs ? 作者:Vidyashankar Ramaswam ? 2023-01-30 15:25 ? 次閱讀

當我開始使用UVM RAL時,我無法理解UVM基類庫對更新Desired和Mirror 寄存器的解釋。覺得使用的術語并不能準確地反映里面的真實的意思。花了一些時間后,我想出了一個表格,它可以幫助我理解寄存器模型API 的行為,以及如何最好地調用它們。

在介紹表格之前,我們先來看看寄存器模型的創建過程:

  1. 創建寄存器格式規范
  2. 將規范轉換為 UVM 寄存器模型
  3. 使用寄存器模型

創建寄存器格式規范:有許多寄存器格式可用于描述DUT的寄存器規范。您可能熟悉廣泛使用的 Synopsys RALF 格式。下圖說明了使用 Synopsys Ralgen 工具將 RALF 格式轉換為寄存器模型的流程。虛線表示您可以為不同的方法生成寄存器模型:

圖片

使用寄存器模型:寄存器模型具有一組用于Desired和Mirror寄存器值的變量。UVM文檔使用了術語Desired 和Mirror, 但我在下面將它們稱為Main和Mirror以避免混淆。Mirror變量的目的是始終保持或表示RTL的值,以便它可以用作Scoreboard。有很多 API 可對這些變量進行操作。此處的目的是闡明在仿真期間調用這些API時Main變量和Mirror變量會發生什么。

圖片

讓我們看一下可用的 API。我將它們分為三組:Active、Passive和Indirect。

Active: 在總線上通過物理事務做讀寫操作。Read()、write()、update() 和 mirror() 是Active API,它們使用物理接口在 DUT 上運行。您可以選擇使用后門機制,在這種情況下它不會消耗仿真周期。與使用前門訪問相同的RTL寄存器行為一致。

Passive:僅使用寄存器模型操作。set()、get() 和 predict() 是直接在模型上操作的Passive API。調用Passive peek() 不會在讀取過程中改變寄存器值。例如,讀取以清除寄存器——執行 peek() 時寄存器不會被清除。

Indirect: 有一組 API 可以間接在 DUT 上運行,它們是 peek() 和 poke()。請注意 peek() 和 poke() API 只是后門訪問。盡管 poke 可以更新 RTL 寄存器,但它不能模擬物理讀取期間可能發生的實際寄存器行為。例如,寫1來清除寄存器。

讓我們簡要介紹一下廣泛使用的 API 定義。您可以在 UVM 類參考指南中找到更多詳細信息

Read():使用前門或后門訪問從 DUT 寄存器中讀取值。

Write():使用前門或后門訪問更新 DUT 寄存器。

Update(): 如果您使用 set() 更改了主寄存器變量中的任何值,則可以使用這種方法(批量更新)將所有這些寄存器寫入 DUT。您可以調用單獨的 write() 方法來實現相同的結果。

Mirror(): Mirror 維護DUT寄存器值的副本。Mirror() 方法讀取寄存器,如果啟用檢查,則可選擇將回讀值與當前鏡像值進行比較。 可以使用物理接口(前門)或 peek()(后門)機制執行鏡像。

Peek(): 使用后門訪問機制從DUT寄存器中讀取值。

Poke():使用后門訪問機制將指定值寫入DUT寄存器。

Predict():您可以使用此方法將鏡像變量值更改為期望值。

我進行了一些實驗,下表顯示了當從Testbench執行任何這些 API 時,寄存器模型和 DUT 中發生的情況。

縮寫

UMV – 更新主變量,UMrV – 更新鏡像變量,AP – Auto Predict

RDR – 讀取DUT寄存器,UDR – 更新DUT寄存器,RMV – 讀取Main變量

FD – 前門,BD – 后門,* – 檢查是否使用了 UVM_CHEK, NA – 不適用

圖片

要記住的幾點

沒想到 peek() 和 poke() 方法會無條件更新鏡像值。查看UVM源碼后,發現在peek()和poke()方法內部無條件調用do_preedit()方法。我還注意到使用后門機制的 write() 和 read() 方法會在調用 do_predict() 時更新鏡像寄存器,而無需檢查此 get_auto_predict() 方法的輸出。我看到這個有條件調用的唯一地方是具有前門訪問的 write() 和 read() 方法。

在與專家討論后,了解到這樣設計是有意的,是為了確保鏡像變量中具有最新的寄存器值。類似地,使用后門訪問的 read()/write() 也會更新鏡像寄存器——這也是有意的。因為使用了后門,所以不會在物理接口上觀察到(當auto predict關閉時)更新寄存器模型的事務。因此,它必須在所有情況下進行更新。

作者:Vidyashankar Ramaswamy

來源:

https://blogs.synopsys.com/vip-central/2015/01/06/using-uvm-register-model/

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5342

    瀏覽量

    120274
  • API
    API
    +關注

    關注

    2

    文章

    1499

    瀏覽量

    61981
  • UVM
    UVM
    +關注

    關注

    0

    文章

    182

    瀏覽量

    19168
收藏 人收藏

    評論

    相關推薦

    UVM寄存器模型的常規方法有哪些呢?

    在應用寄存器模型時, 除了利用它的寄存器信息, 還可以利用它來跟蹤寄存器的值。
    的頭像 發表于 11-25 09:27 ?1867次閱讀
    <b class='flag-5'>UVM</b><b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>的常規方法有哪些呢?

    從設計的角度一塊兒來看下這些UVM寄存器模型

    對于搞驗證的同學來講,UVM里面中關于寄存器的概念自然是耳熟能詳,對于搞設計的小伙伴來講,也許我們對于使用的場景和UVM寄存器模型對照并沒有
    發表于 06-23 16:06

    介紹UVM寄存器模型訪問上的一些內容

    模型的構建和集成到驗證環境的基礎上。本文將展開介紹寄存器模型訪問上的一些內容,包括寄存器域段的成員值、寄存器的前后門訪問以及具體各種訪問方法
    發表于 07-04 15:36

    如何構建UVM寄存器模型并將寄存器模型集成到驗證環境中

    ),通常也叫寄存器模型,顧名思義就是對寄存器這個部件的建模。本文要介紹的內容,包括對UVM寄存器模型
    發表于 09-23 14:29

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定義  寄存器是中央處理內的組成部分。寄存器是有限存貯容量
    發表于 03-08 14:26 ?2.2w次閱讀

    數據寄存器,數據寄存器是什么意思

    數據寄存器,數據寄存器是什么意思 數據寄存器數據寄存器包括累加AX、基址寄存器BX、計數
    發表于 03-08 14:38 ?1.3w次閱讀

    集成級的UVM寄存器模型

    UVM使得驗證測試平臺的結構得以標準化,各種復用策略及標準對于提高驗證質量、縮短項目周期都非常有效。垂直重用是常見的復用策略之一,即同一項目測試平臺復用于不同驗證層次。驗證中常將最底層的IP級驗證平臺向更高的集成層復用,而UVM寄存器
    發表于 09-15 11:49 ?16次下載
    集成級的<b class='flag-5'>UVM</b><b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>

    五個廣泛使用的特殊寄存器

      下一步是學習如何在 IP-XACT 或 SystemRDL 中定義這些特殊寄存器。還需要學習如何在 RTL 中對其進行編碼,并創建 UVM 寄存器模型并完成
    的頭像 發表于 06-08 09:55 ?4563次閱讀
    五個廣泛使用的特殊<b class='flag-5'>寄存器</b>

    簡述RAL寄存器模型基礎

    RAL(Register Abstract Layer,寄存器抽象層),通常也叫寄存器模型,顧名思義就是對寄存器這個部件的建模。本文要介紹的內容,包括對
    的頭像 發表于 02-14 16:55 ?2710次閱讀
    簡述RAL<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>基礎

    RAL寄存器模型操作圖鑒

    寄存器模型操作,指的是通過寄存器模型對RTL中寄存器進行讀寫訪問,或者同步寄存器
    的頭像 發表于 05-17 09:01 ?929次閱讀
    RAL<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>操作圖鑒

    UVM為什么要引入寄存器模型呢?

    新需求:為帶寄存器的DUT搭建UVM仿真環境
    的頭像 發表于 05-26 14:57 ?1811次閱讀
    <b class='flag-5'>UVM</b>為什么要引入<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>呢?

    簡化UVM寄存器模型的使用

    當我開始使用 UVM RAL 時,我無法理解 UVM 基類庫對更新所需值和鏡像值寄存器的值有什么看法。我還認為,所使用的術語沒有準確反映其意圖。花了一些時間后,我想出了一個表,幫助我了解寄存器
    的頭像 發表于 05-29 10:15 ?1251次閱讀
    <b class='flag-5'>簡化</b><b class='flag-5'>UVM</b><b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>的使用

    基于DUT內部寄存器值的鏡像

    (outdated) 。 寄存器模型可以通過使用 uvm_reg_field::mirror() , uvm_reg::mirror() , 或 u
    的頭像 發表于 06-24 12:02 ?889次閱讀

    寄存器模型Register Model學習筆記

    UVM寄存器模型是一組高級抽象的類,用來對DUT中具有地址映射的寄存器和存儲進行建模。
    的頭像 發表于 07-11 09:20 ?2212次閱讀
    <b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>Register Model學習筆記

    RAL寄存器模型操作指南

    寄存器模型操作,指的是通過寄存器模型對RTL中寄存器進行讀寫訪問,或者同步寄存器
    的頭像 發表于 07-12 09:37 ?1077次閱讀
    RAL<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>操作指南
    主站蜘蛛池模板: 菲律宾毛片| 东北女人奶大毛多水多| 99久酒店在线精品2019| 韩国无遮羞禁动漫在线观看| 日本漫画无彩翼漫画| chinese学生gv video| 免费女人光着全身网站| 中文字幕精品在线视频| 久青草国产97香蕉在线视频| 亚洲伊人精品| 精品国产品在线18年| 亚洲性无码AV久久成人| 精品午夜久久福利大片免费| 亚洲色欲色欲WWW在线成人网| 国产亚洲精品A久久777777| 亚洲 欧美 国产 伦 综合| 国产视频精品免费| 亚洲乱码国产乱码精品精98 | 日本黄色成年人免费观看| JLZZJLZZJLZ老师好多的水| 欧美亚洲国内日韩自拍视频| 爆乳啪啪无码成人二区亚洲欧美| 全黄H全肉细节文NP| 风月宝鉴之淫乱英雄传 电影| 色柚视频网站ww色| 国产人妻777人伦精品HD| 亚洲免费精品视频| 乱爱性全过程免费视频| 99久久久无码国产精品免费人妻| 啪啪啪社区| 国产精品女上位在线观看| 亚洲精品喷白浆在线观看| 老年日本老年daddy| 9久高清在线不卡免费无吗视频| 日韩欧美一区二区三区免费看| 国产日韩精品一区二区在线观看| 野花韩国高清完整版在线 | 回复术士人生重启在线观看| 在线观看黄色小说| 青草在线在线d青草在线| 国产精品亚洲视频在线观看|