一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡(jiǎn)化UVM寄存器模型的使用教程

jf_78858299 ? 來(lái)源:blogs ? 作者:Vidyashankar Ramaswam ? 2023-01-30 15:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

當(dāng)我開(kāi)始使用UVM RAL時(shí),我無(wú)法理解UVM基類(lèi)庫(kù)對(duì)更新Desired和Mirror 寄存器的解釋。覺(jué)得使用的術(shù)語(yǔ)并不能準(zhǔn)確地反映里面的真實(shí)的意思?;艘恍r(shí)間后,我想出了一個(gè)表格,它可以幫助我理解寄存器模型API 的行為,以及如何最好地調(diào)用它們。

在介紹表格之前,我們先來(lái)看看寄存器模型的創(chuàng)建過(guò)程:

  1. 創(chuàng)建寄存器格式規(guī)范
  2. 將規(guī)范轉(zhuǎn)換為 UVM 寄存器模型
  3. 使用寄存器模型

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

圖片

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

圖片

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

Active: 在總線(xiàn)上通過(guò)物理事務(wù)做讀寫(xiě)操作。Read()、write()、update() 和 mirror() 是Active API,它們使用物理接口在 DUT 上運(yùn)行。您可以選擇使用后門(mén)機(jī)制,在這種情況下它不會(huì)消耗仿真周期。與使用前門(mén)訪(fǎng)問(wèn)相同的RTL寄存器行為一致。

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

Indirect: 有一組 API 可以間接在 DUT 上運(yùn)行,它們是 peek() 和 poke()。請(qǐng)注意 peek() 和 poke() API 只是后門(mén)訪(fǎng)問(wèn)。盡管 poke 可以更新 RTL 寄存器,但它不能模擬物理讀取期間可能發(fā)生的實(shí)際寄存器行為。例如,寫(xiě)1來(lái)清除寄存器。

讓我們簡(jiǎn)要介紹一下廣泛使用的 API 定義。您可以在 UVM 類(lèi)參考指南中找到更多詳細(xì)信息。

Read():使用前門(mén)或后門(mén)訪(fǎng)問(wèn)從 DUT 寄存器中讀取值。

Write():使用前門(mén)或后門(mén)訪(fǎng)問(wèn)更新 DUT 寄存器。

Update(): 如果您使用 set() 更改了主寄存器變量中的任何值,則可以使用這種方法(批量更新)將所有這些寄存器寫(xiě)入 DUT。您可以調(diào)用單獨(dú)的 write() 方法來(lái)實(shí)現(xiàn)相同的結(jié)果。

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

Peek(): 使用后門(mén)訪(fǎng)問(wèn)機(jī)制從DUT寄存器中讀取值。

Poke():使用后門(mén)訪(fǎng)問(wèn)機(jī)制將指定值寫(xiě)入DUT寄存器。

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

我進(jìn)行了一些實(shí)驗(yàn),下表顯示了當(dāng)從Testbench執(zhí)行任何這些 API 時(shí),寄存器模型和 DUT 中發(fā)生的情況。

縮寫(xiě)

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

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

FD – 前門(mén),BD – 后門(mén),* – 檢查是否使用了 UVM_CHEK, NA – 不適用

圖片

要記住的幾點(diǎn)

沒(méi)想到 peek() 和 poke() 方法會(huì)無(wú)條件更新鏡像值。查看UVM源碼后,發(fā)現(xiàn)在peek()和poke()方法內(nèi)部無(wú)條件調(diào)用do_preedit()方法。我還注意到使用后門(mén)機(jī)制的 write() 和 read() 方法會(huì)在調(diào)用 do_predict() 時(shí)更新鏡像寄存器,而無(wú)需檢查此 get_auto_predict() 方法的輸出。我看到這個(gè)有條件調(diào)用的唯一地方是具有前門(mén)訪(fǎng)問(wèn)的 write() 和 read() 方法。

在與專(zhuān)家討論后,了解到這樣設(shè)計(jì)是有意的,是為了確保鏡像變量中具有最新的寄存器值。類(lèi)似地,使用后門(mén)訪(fǎng)問(wèn)的 read()/write() 也會(huì)更新鏡像寄存器——這也是有意的。因?yàn)槭褂昧撕箝T(mén),所以不會(huì)在物理接口上觀(guān)察到(當(dāng)auto predict關(guān)閉時(shí))更新寄存器模型的事務(wù)。因此,它必須在所有情況下進(jìn)行更新。

作者:Vidyashankar Ramaswamy

來(lái)源:

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5434

    瀏覽量

    124515
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1620

    瀏覽量

    64058
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    182

    瀏覽量

    19548
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    在應(yīng)用寄存器模型時(shí), 除了利用它的寄存器信息, 還可以利用它來(lái)跟蹤寄存器的值。
    的頭像 發(fā)表于 11-25 09:27 ?2864次閱讀
    <b class='flag-5'>UVM</b><b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>的常規(guī)方法有哪些呢?

    從設(shè)計(jì)的角度一塊兒來(lái)看下這些UVM寄存器模型

    對(duì)于搞驗(yàn)證的同學(xué)來(lái)講,UVM里面中關(guān)于寄存器的概念自然是耳熟能詳,對(duì)于搞設(shè)計(jì)的小伙伴來(lái)講,也許我們對(duì)于使用的場(chǎng)景和UVM寄存器模型對(duì)照并沒(méi)有
    發(fā)表于 06-23 16:06

    介紹UVM寄存器模型訪(fǎng)問(wèn)上的一些內(nèi)容

    模型的構(gòu)建和集成到驗(yàn)證環(huán)境的基礎(chǔ)上。本文將展開(kāi)介紹寄存器模型訪(fǎng)問(wèn)上的一些內(nèi)容,包括寄存器域段的成員值、寄存器的前后門(mén)訪(fǎng)問(wèn)以及具體各種訪(fǎng)問(wèn)方法
    發(fā)表于 07-04 15:36

    如何構(gòu)建UVM寄存器模型并將寄存器模型集成到驗(yàn)證環(huán)境中

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

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

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

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思

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

    集成級(jí)的UVM寄存器模型

    UVM使得驗(yàn)證測(cè)試平臺(tái)的結(jié)構(gòu)得以標(biāo)準(zhǔn)化,各種復(fù)用策略及標(biāo)準(zhǔn)對(duì)于提高驗(yàn)證質(zhì)量、縮短項(xiàng)目周期都非常有效。垂直重用是常見(jiàn)的復(fù)用策略之一,即同一項(xiàng)目測(cè)試平臺(tái)復(fù)用于不同驗(yàn)證層次。驗(yàn)證中常將最底層的IP級(jí)驗(yàn)證平臺(tái)向更高的集成層復(fù)用,而UVM寄存器
    發(fā)表于 09-15 11:49 ?16次下載
    集成級(jí)的<b class='flag-5'>UVM</b><b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>

    五個(gè)廣泛使用的特殊寄存器

      下一步是學(xué)習(xí)如何在 IP-XACT 或 SystemRDL 中定義這些特殊寄存器。還需要學(xué)習(xí)如何在 RTL 中對(duì)其進(jìn)行編碼,并創(chuàng)建 UVM 寄存器模型并完成
    的頭像 發(fā)表于 06-08 09:55 ?5081次閱讀
    五個(gè)廣泛使用的特殊<b class='flag-5'>寄存器</b>

    簡(jiǎn)述RAL寄存器模型基礎(chǔ)

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

    RAL寄存器模型操作圖鑒

    寄存器模型操作,指的是通過(guò)寄存器模型對(duì)RTL中寄存器進(jìn)行讀寫(xiě)訪(fǎng)問(wèn),或者同步寄存器
    的頭像 發(fā)表于 05-17 09:01 ?1381次閱讀
    RAL<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>操作圖鑒

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

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

    簡(jiǎn)化UVM寄存器模型的使用

    當(dāng)我開(kāi)始使用 UVM RAL 時(shí),我無(wú)法理解 UVM 基類(lèi)庫(kù)對(duì)更新所需值和鏡像值寄存器的值有什么看法。我還認(rèn)為,所使用的術(shù)語(yǔ)沒(méi)有準(zhǔn)確反映其意圖?;艘恍r(shí)間后,我想出了一個(gè)表,幫助我了解寄存器
    的頭像 發(fā)表于 05-29 10:15 ?1817次閱讀
    <b class='flag-5'>簡(jiǎn)化</b><b class='flag-5'>UVM</b><b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>的使用

    基于DUT內(nèi)部寄存器值的鏡像

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

    寄存器模型Register Model學(xué)習(xí)筆記

    UVM寄存器模型是一組高級(jí)抽象的類(lèi),用來(lái)對(duì)DUT中具有地址映射的寄存器和存儲(chǔ)進(jìn)行建模。
    的頭像 發(fā)表于 07-11 09:20 ?3256次閱讀
    <b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>Register Model學(xué)習(xí)筆記

    RAL寄存器模型操作指南

    寄存器模型操作,指的是通過(guò)寄存器模型對(duì)RTL中寄存器進(jìn)行讀寫(xiě)訪(fǎng)問(wèn),或者同步寄存器
    的頭像 發(fā)表于 07-12 09:37 ?1394次閱讀
    RAL<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>操作指南