在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

UVM學習筆記(二)

冬至子 ? 來源:多讀點書 ? 作者:夕文x ? 2023-05-26 14:43 ? 次閱讀

第2章一個簡單的UVM驗證平臺

2.3 為驗證平臺加入各個組件

2.3.1 加入transaction

引入transaction目的:

  • 更規范地傳遞信息, 更方便地引入transaction級的隨機激勵 。(一般來說,物理協議中的數據交換都是以幀或者包為單位的,而transaction就類似于這里包的概念)

my_transaction派生自uvm_sequence_item,而uvm_sequence_item是uvm_object的派生類。

派生自uvm_object的類 vs 派生自uvm_component的類

1.jpg

主要流程如下:

  • 在main_phase中,先使用randomize將tr隨機化,之后通過drive_one_pkt任務將tr的內容驅動到DUT的端口上。在drive_one_pkt中,先將tr中所有的數據 壓入隊列data_q中 ,之后再 將data_q中所有的數據彈出并驅動 。將tr中的數據壓入隊列data_q中的過程相當于打包成一個byte流的過程。

2.3.2 加入env

引入uvm_env的原因:

  • 解決多個并列關系模塊(driver、 monitor、 reference model和scoreboard等)實例化問題

問題:

  1. 在top_tb中例化這幾個模塊不行:run_test在top_tb結構層次之外建立一個新的結構層次,模塊間傳值需要通過config_db機制
  2. 在run_test中例化這幾個模塊不行:run_test函數本身限制,只能實例化一個模塊。
  3. 在driver中例化其他模塊不行:會讓這些模塊具備父子關系,打破了他們之間的并列關系。

解決:

  • 引入env機制,提供一個容器類,該容器類中包含了多個并列關系的模塊,然后用run_test來實例化這個容器類

在UVM的樹形結構中, build_phase的執行遵照從樹根到樹葉的順序。

2.3.3 加入monitor

引入monitor原因:

  • 監測DUT的行為(可以檢測輸出,也可以檢測輸入)

monitor與driver的比較

1.jpg

關于monitor使用的4點注意:

  1. 所有的monitor類應該派生自uvm_monitor
  2. 與driver類似,在my_monitor中也需要有一個virtual my_if
  3. 使用uvm_component_utils宏注冊
  4. monitor需要時刻收集數據,所以在main_phase中要使用**while(1)**循環

2.3.4 封裝成agent

引入agent的原因:

  • driver和monitor二者 處理的是同一種協議 ,代碼高度相似,所以將兩者封裝在一起。 不同的agent就代表了不同的協議

圖片

is_active是uvm_agent內置的一個成員變量,通過頂層傳值,控制driver是否進行例化,且is_active的值默認為UVM_ACTIVE

  • UVM_PASSIVE:例化monitor而不需要例化driver(輸出端口無需驅動)
  • UVM_ACTIVE:例化monitor,也需要例化driver(輸入端口需要驅動)

例化動作可以在build_phase函數中完成,也可以在new函數中完成,但強烈建議僅在build_phase中完成實例化。

1.jpg

2.3.5 加入reference model

引入原因:

  • 完成和DUT相同的功能,作為DUT的參考模型

這里reference model對應的模塊名為 my_model。my_model從i_agt得到my_transaction,并把my_transaction傳遞給my_scoreboard。在UVM中,通常使用 TLM( Transaction Level Modeling) 實現component之間transaction級別通信。my_transaction在my_model中的傳遞方式大致分為三部分:

  1. 在my_monitor中使用uvm_analysis_port類例化一個用于發送transaction級數據的端口,并通過my_agent中uvm_analysis_port的引用變量往my_env傳遞端口
  2. 在my_model中使用uvm_blocking_get_port類例化一個用于接收transaction級數據的端口
  3. 在my_env中使用uvm_tlm_analysis_fifo類例化一個fifo。引入 connect_phase ,將fifo的analysis_export端口連接到i_agt.ap,fifo的blocking_get_export端口連接到mdl.port。(mdl為my_model類的例化對象)
  4. 使用fifo的原因: analysis_port是非阻塞性質的 , ap.write函數調用完成后馬上返回,不會等待數據被接收。

2.3.6 加入scoreboard

引入scoreboard作用:

  • 比較reference model和o_agt的monitor的結果。

多進程的使用:

  • 在my_scoreboard中使用uvm_blocking_get_port新建兩個port:exp_port、act_port,并在main_phase中,通過fork建立起兩個進程,一個進程處理exp_port的數據(ref),當收到數據后,把數據放入expect_queue中;另外一個進程處理act_port的數據(dut),當收集到這些數據后,從expect_queue中彈出之前從exp_port收到的數據,并調用my_transaction的my_compare函數。
  • 由于DUT處理數據需要延時,而reference model是基于高級語言的處理,一般 不需要延時 ,因此 可以保證exp_port的數據在act_port的數據之前到來

2.3.7 加入field_automation機制

引入field_automation機制的原因:

  • 自動實現my_transaction中print、copy、compare這樣的比較常見的結構體操作,簡化my_transaction的實現。同時默認的pack_bytes(tr中的各個字段轉換成byte流)和unpack_bytes(byte流轉換成tr中的各個字段)也簡化了driver、monitor的實現。

使用uvm_object_utils_beginuvm_object_utils_end來實現my_transaction的factory注冊,在這兩個宏中間,使用uvm_field宏注冊所有字段。

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

    關注

    0

    文章

    182

    瀏覽量

    19476
  • TLM
    TLM
    +關注

    關注

    1

    文章

    33

    瀏覽量

    24933
  • DUT
    DUT
    +關注

    關注

    0

    文章

    190

    瀏覽量

    12880
  • sequence
    +關注

    關注

    0

    文章

    23

    瀏覽量

    2985
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    LabVIEW學習筆記 【第卷】

    之前在論壇上看見有人分享一本書——《LabVIEW學習筆記 》,覺得挺好,而且熱度也很高。只不過第卷的附件丟失了,我試著下載,也下載不了。現找來第卷,與各位一起
    發表于 10-17 21:58

    新手學習System Verilog & UVM指南

    新手學習SystemVerilog & UVM指南 從剛接觸System Verilog以及后來的VMM,OVM,UVM已經有很多年了,隨著電子工業的逐步發展,國內對驗證人才的需求也會急劇
    發表于 03-11 16:24

    我的EMC學習筆記

    本帖最后由 林雪涼 于 2015-12-1 20:31 編輯 好久沒有學習了,都快忘記了。這是整理的第部分學習筆記。 另外,這個是第一部分的:https://bbs.elecf
    發表于 12-01 20:23

    IC驗證"為什么要學習UVM呢"

    推出了RGM,補上了這一短板。只是很遺憾的是,RGM并沒有成為OVM的一部分,要想使用RGM,需要額外下載。現在OVM已經停止更新,完全被UVM代替。UVM(Universal
    發表于 12-01 15:09

    IC驗證之UVM常用宏匯總分析(四)

    宏,它有兩種定義方式,一是直接在源文件中中使用define進行定義:`define MACRO 或者: `define MACRO 100是在編譯時的命令行中使用如下的方式
    發表于 12-02 15:24

    數字IC驗證之“什么是UVM”“UVM的特點”“UVM提供哪些資源”(2)連載中...

    uvm的特點以及uvm為用戶提供了哪些資源?什么是uvm呢?uvm是通用驗證方法學的縮寫,是為驗證服務的,uvm是基于systemveri
    發表于 01-21 16:00

    什么是uvmuvm的特點有哪些呢

    大家好,我是一哥,上章內容我們介紹什么是uvmuvm的特點以及uvm為用戶提供了哪些資源?本章內容我們來看一看一個典型的uvm驗證平臺應該是什么樣子的,來看一個典型的
    發表于 02-14 06:46

    談談UVM中的uvm_info打印

      uvm_info宏的定義如下:  `define uvm_info(ID,MSG,VERBOSITY) \  begin \  if (uvm_report_enabled(VERBOSITY
    發表于 03-17 16:41

    Modelsim uvm庫編譯及執行

    第一句話是設置uvm環境變量,指定uvm的dpi位置。 第句話是創建work工作目錄。 第三句話是編譯源文件,并且通過-L指定幾個編譯庫。 第三句是執行仿真,調用uvm
    的頭像 發表于 12-01 11:25 ?4187次閱讀
    Modelsim <b class='flag-5'>uvm</b>庫編譯及執行

    UCOSIII學習筆記)任務管理、Hook函數、中斷

    UCOSIII學習筆記)文章目錄UCOSIII學習筆記)一、UCOSIII任務管理1、任
    發表于 12-23 19:58 ?4次下載
    UCOSIII<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>(<b class='flag-5'>二</b>)任務管理、Hook函數、中斷

    UVM學習筆記(一)

    driver應該派生自uvm_driver,而uvm_driver派生自uvm_component。
    的頭像 發表于 05-26 14:38 ?1677次閱讀
    <b class='flag-5'>UVM</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>(一)

    UVM學習筆記(三)

    sequence機制作用:用于產生激勵。其分為兩部分,一是sequence,是sequencer。
    的頭像 發表于 05-26 14:46 ?1508次閱讀
    <b class='flag-5'>UVM</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>(三)

    UVMuvm_config_db機制背后的大功臣

    本次講一下UVM中的uvm_config_db,在UVM中提供了一個內部數據庫,可以在其中存儲給定名稱下的值,之后可以由其它TB組件去檢索。
    的頭像 發表于 06-20 17:28 ?1838次閱讀

    UVMuvm_config_db機制背后的大功臣

    本次講一下UVM中的uvm_config_db,在UVM中提供了一個內部數據庫,可以在其中存儲給定名稱下的值,之后可以由其它TB組件去檢索。
    的頭像 發表于 06-29 16:57 ?1926次閱讀

    一文詳解UVM設計模式

    本篇是對UVM設計模式 ( ) 參數化類、靜態變量/方法/類、單例模式、UVM_ROOT、工廠模式、UVM_FACTORY[1]中單例模式的補充,分析靜態類的使用,
    的頭像 發表于 08-06 10:38 ?3232次閱讀
    一文詳解<b class='flag-5'>UVM</b>設計模式
    主站蜘蛛池模板: 国产亚洲精品久久久久久久软件 | 2021久久精品国产99国产精品 | 丝袜紧身裙国产在线播放 | 亚洲五月婷 | 国产一区二区中文字幕 | 亚洲欧美在线视频免费 | 精品视频在线观看视频免费视频 | a成人在线 | 午夜精品在线免费观看 | 在线网站你懂得 | 日日插夜夜爽 | 特级毛片永久久免费观看 | 福利视频欧美 | 亚洲福利视频一区二区 | 亚洲aaaa级特黄毛片 | 天天曰天天爽 | 国模沟沟一区二区三区 | 久久观看 | 亚洲一区二区在线 | 超级黄色毛片 | 天堂免费在线视频 | 色爱区综合五月激情 | 日韩免费 | 美女扒开尿口给男人看大全 | 久久六月丁香婷婷婷 | 天天干天天综合 | 乱码一区二区三区完整视频 | 狠狠干干 | 成人a在线 | 日韩爱爱 | 久久精品亚洲青青草原 | 性免费网站 | 天天免费看片 | 亚洲精品美女久久久久网站 | 夜夜欢视频 | 国产精品久久在线 | 亚洲乱码一区二区三区在线观看 | 日本免费黄色 | 亚洲一卡2卡3卡4卡5卡乱码 | 视频在线观看免费网址 | 亚洲理论在线 |