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

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

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

3天內不再提示

UVM驗證環境啟動時及運行時的控制方案

路科驗證 ? 來源:路科驗證 ? 2023-04-13 18:13 ? 次閱讀

話說螺螄殼里做道場,UVM推出這么多年以來每年DVCon會議上總還是有人分享他們基于UVM package做的一些改動,使其能夠更適合項目的要求。正如這篇論文里針對uvm_cmdline_processor這個類做的改動,經過修改,UVM環境在運行時能夠接收更復雜的參數,繼而滿足更好的控制隨機數據發送的項目要求。

從項目要求來看,在驗證前期隨機數據的吞吐、間隔、長度并不需要特意去關注,而在數據完整性基本得到保證以后,就要考慮邊界條件、性能表現等問題,也因此需要對隨機數據的約束進行調節。SV調節約束,以往可以通過對隨機值的rand_model或者約束塊的constraint_mode進行調節,繼而選擇需要隨機的變量和采取的約束,也可以通過在約束中植入有關影響隨機范圍的變量,而在仿真過程中影響這些變量去間接影響接下來生成的隨機數值。

只不過,上面第一種辦法對每個sequence item約束塊的構造和組織有要求,而且還需要在仿真前重新編譯繼而影響整個RNG(random number generator),第二種辦法可以在仿真過程中通過對某些變量的修改繼而影響仿真過程中的隨機數值,看起來是可以實現動態控制的,但也仍然不夠靈活,無論是對隨機數值的范圍影響,還是將這種辦法規范下來,都不適合在整個團隊范圍里去推廣(可以用,但是不夠完善)。

相比于將測試意圖通過sequence和item傳遞到driver,再由driver解析驅動總線,在驗證后期階段,我們往往需要對測試序列做到更加精準的控制。論文中也提到了可以對以下幾點做到控制:

對數據之間的間隔長短做控制,繼而影響數據吞吐。

處理器驗證中,要控制的指令內容以及指令之間的關系均需要更多約束,往往還可以需要對操作數做到更準確的要求(比如其包含的指令、數據等信息)。

有時我們還需要在仿真過程中某個階段,特意去控制某個component或者item,以往可以通過uvm_config_db傳遞(在仿真開始前)。

55034f04-d9b3-11ed-bfe3-dac502259ad0.png

以上的控制盡管可以在代碼中實現,但從以前的經驗來看,這些代碼仍然不夠靈活。所謂更加靈活的要求是能夠在仿真過程中將要求隨時傳遞給仿真環境,而仿真環境又能及時接收這些配置、激勵數據,繼而動態地對驗證模式、激勵數據做出改變。

原本uvm_cmdline_processor可以支持傳遞int和string,但不夠靈活以至于不能很好地控制上面所說的隨機數有關的生成過程。而本文擴展的新類就能夠從仿真時傳遞的命令項(同其他仿真參數一起傳遞并啟動仿真模型)解析更為復雜的隨機變量約束控制方式,繼而更靈活地控制測試。

551dda2c-d9b3-11ed-bfe3-dac502259ad0.png

這個新的類advanced_cmd_line_processor可以解析的指令新囊括了與約束范圍有關的min_val/max_val/value/weight的形式(對字符串參數形式更靈活的支持)

55339ca4-d9b3-11ed-bfe3-dac502259ad0.png

也可以支持對不同數據格式的支持,例如Hex/Bin/Int

5552b88c-d9b3-11ed-bfe3-dac502259ad0.png

由于可以在測試時傳遞更為多樣的命令參數,UVM環境中也就可以利用advanced_cmdline_processor做相應的解析,繼而獲得參數。在Example1中,我們可以在測試時傳遞例如+opcode=ADD:80,SUB:20 或者+operand=32'hfffffff0 或者 +oprand=32'h00000000~32'h0000000f等信息,也均可以在對應的組件中獲得參數,并加以利用。

556eed7c-d9b3-11ed-bfe3-dac502259ad0.png

558e7a7a-d9b3-11ed-bfe3-dac502259ad0.png

在packet::pre_randomize()函數中,就利用advanced_cmdline_processor的方法is_valid()檢查測試時傳遞的參數,并通過get_rand_enum()獲得一個符合+opcode=ADD:80,SUB:20要求的枚舉值。同時,也可以通過get_rand_val()獲得一個滿足類似+oprand=32'h00000000~32'h0000000f要求的隨機數。

除了通過命令項傳遞某個參數項以外,advanced_cmdline_processor也可以支持傳遞例如+uvm_set_config_string這樣的命令項,這些命令項仍然可以通過get_rand_val()和其傳遞的對應UVM層次獲得測試時傳遞的數值。這樣的方法可以基于UVM層次將變量、約束范圍、權重等信息更準確地傳遞到sequence中。

+uvm_set_config_string=*pkt_seq_1,pkt_delay,”0:50,1:50” +uvm_set_config_string=*pkt_seq_2,pkt_delay,”10~20:50,21~100:40,101~500:10”

55a6256c-d9b3-11ed-bfe3-dac502259ad0.png

這篇論文寫得要輕松一些,讀者在閱讀的時候也能跟的上,在解決了一些實際問題的時候可以會心一笑。更贊的一點是,它毫無保留地把解決方案里涉及到advanced_cmdline_processor和其它類/方法都展示在附錄中?;诖?,這篇論文提出了一個實際工作中的痛點,然后又輕巧地給出了一個解決方案。這樣的論文生命周期往往可以延續更久,因為它的目標更聚焦、也解決很多驗證工程師實際工作中的麻煩,更何況還有完整的代碼呈現,可以說是拿來就能用了。

不過,我們還可以圍繞著靈活控制隨機測試再給出路科的另外一種解決方案(來自于V3課程的某個模塊)。我們希望不僅僅是在仿真前通過傳遞參數項來控制驗證環境和激勵,還希望找到一種可能,在仿真過程中可以對驗證環境中的變量、約束等內容進行修改。

這里以VCS工具為例,它的UCLI(unified command line interface)提供了一種辦法,可以在Tcl命令窗口一側去調用SV中的函數或者任務。那么,我們可以將可供Tcl調用的方法放置在某個域中(例如module或者interface)。

比如我們下面的這個例子就可以實現在仿真中查詢、獲得、配置等目的,這些方法在接口中實現以后,在UVM和Tcl兩側均可以利用這些方法。

55c1dae6-d9b3-11ed-bfe3-dac502259ad0.png

這里定義了一些進入某些特定scope hierarchy的接口,以便在Tcl中調用,繼而在該scope中調用某些方法。

55e65d26-d9b3-11ed-bfe3-dac502259ad0.png

這些接口方法可以用來在仿真中設定報告信息的冗余度。

55f91c68-d9b3-11ed-bfe3-dac502259ad0.png

這里給了一個例子,可以在Tcl腳本的特定時間,進入某個scope,再調用相應的調試接口方法,調用這些方式時也可以傳遞參數,并且取得返回值。

這樣的案例用來展示某些調試接口方法在仿真運行時對驗證環境的控制,實際上我們在文章上半部分談到的對于隨機值的影響、某些變量的修改、某些驗證組件的工作模式等,只要我們的調試接口方法定義得當,那么都可以在仿真運行過程中隨時調用。

從論文描述的解決問題的初衷來看,是為了更方便地去控制激勵的數據內容,而如果要再拓展那么就可以采用我們給的第二種方式在Tcl中調用某個scope中的接口方法,讓Tcl與測試用例之間形成一個互動。

其實不管是C-DPI的調用方式,還是Tcl調用SV的方式,都是為了讓測試在運行時能夠更靈活地配置、改動(SV的重復編譯在更大的環境結構下更為耗時),而相比于C-DPI的方式,通過對UVM uvm_cmdline_processor的拓展在驗證環境啟動,或者通過Tcl調用SV方法在驗證環境運行都更為靈活。而且這兩種方案也都能夠做成規范,推行到團隊中去。





審核編輯:劉清

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

    關注

    68

    文章

    19293

    瀏覽量

    229934
  • UVM
    UVM
    +關注

    關注

    0

    文章

    182

    瀏覽量

    19179
  • VCS
    VCS
    +關注

    關注

    0

    文章

    79

    瀏覽量

    9618
  • ADD
    ADD
    +關注

    關注

    1

    文章

    20

    瀏覽量

    9432

原文標題:DVCon文賞-2023w16 UVM驗證環境啟動時及運行時的控制方案

文章出處:【微信號:Rocker-IC,微信公眾號:路科驗證】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何縮短Vivado的運行時

    在Vivado Implementation階段,有時是有必要分析一下什么原因導致運行時間(runtime)過長,從而找到一些方法來縮短運行時間。
    的頭像 發表于 05-29 14:37 ?1.4w次閱讀
    如何縮短Vivado的<b class='flag-5'>運行時</b>間

    如何檢查Linux服務器的運行時

    Linux 中的 uptime 用于查看系統啟動后的運行時間。它是一個比較簡單的 Linux 命令,可以不帶參數直接運行
    發表于 11-25 15:25 ?1.5w次閱讀
    如何檢查Linux服務器的<b class='flag-5'>運行時</b>間

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

    工程師只需要將代碼寫入適當的phase當中,平臺運行時,會按照phase的執行流程來自動執行驗證工程師的代碼。uvm提供了一系列的基類,驗證工程師需要根據實際的情況擴展出合適的類來構建
    發表于 01-21 16:00

    一種基于UVM的混合信號驗證環境

    一種基于UVM的混合信號驗證環境_耿睿
    發表于 01-07 21:39 ?1次下載

    紫金橋組態軟件新的功能_運行時組態

    運行時組態是組態軟件新近提出的新的概念。運行時組態是在運行環境下對已有工程進行修改,添加新的功能。它不同于在線組態,在線組態是在工程運行的同
    發表于 10-13 16:17 ?2次下載
    紫金橋組態軟件新的功能_<b class='flag-5'>運行時</b>組態

    電機運行時間進行排列 是分為兩個部分來完成這個程序的設計的

    前幾天有個學員咨詢一個程序設計的問題,程序的控制要求如下:需要控制5臺電機的運行,每臺電機運行時需要記錄運行時間,電機
    的頭像 發表于 07-19 08:57 ?7206次閱讀
    電機<b class='flag-5'>運行時</b>間進行排列 是分為兩個部分來完成這個程序的設計的

    如何高效測量ECU的運行時

    ,最終可能會引起運行時間方面的問題。這在項目后期需要大量的時間和金錢來解決。如果不能掌握系統的運行狀態,則很難發現系統內缺陷的根源。 解決方案 將TA軟件工具套件與VX1000測量標定硬件相結合,可同步分析 ECU內部
    的頭像 發表于 10-28 11:05 ?2231次閱讀

    利用Systemverilog+UVM搭建soc驗證環境

    利用Systemverilog+UVM搭建soc驗證環境
    發表于 08-08 14:35 ?5次下載

    Go運行時:4年之后

    自 2018 年以來,Go GC,以及更廣泛的 Go 運行時,一直在穩步改進。近日,Go 社區總結了 4 年來 Go 運行時的一些重要變化。
    的頭像 發表于 11-30 16:21 ?838次閱讀

    什么是Kubernetes容器運行時CRI

    起初,Docker是事實上的容器技術標準,Kubernetes v1.5之前的代碼中直接調用Docker API,實現容器運行時的相關操作。
    的頭像 發表于 02-20 16:22 ?1522次閱讀
    什么是Kubernetes容器<b class='flag-5'>運行時</b>CRI

    ch32v307記錄程序運行時

    ch32v307記錄程序運行時間 在程序開發中,很重要的一項任務就是對程序的運行時間進行評估。對于大型的程序系統來說,它們通常需要處理大量的數據或進行復雜的計算操作。因此,如果程序的運行時間過長
    的頭像 發表于 08-22 15:53 ?910次閱讀

    Xilinx運行時(XRT)發行說明

    電子發燒友網站提供《Xilinx運行時(XRT)發行說明.pdf》資料免費下載
    發表于 09-14 10:01 ?0次下載
    Xilinx<b class='flag-5'>運行時</b>(XRT)發行說明

    AUTOSAR CP運行時環境與應用軟件

    運行時環境(RTE) AUTOSAR CP運行時環境(RTE)是AUTOSAR架構中的核心組件,它實現了AUTOSAR虛擬功能總線(VFB)的接口,并提供了通信基礎設施和訪問基礎軟件組
    的頭像 發表于 10-27 15:44 ?1318次閱讀
    AUTOSAR CP<b class='flag-5'>運行時</b><b class='flag-5'>環境</b>與應用軟件

    如何保證它們容器運行時的安全?

    緊密耦合的容器運行時繼承了主機操作系統的安全態勢和攻擊面。運行時或主機內核中的任何漏洞及其利用都會成為攻擊者的潛在切入點。
    的頭像 發表于 11-03 15:24 ?682次閱讀

    jvm運行時內存區域劃分

    JVM是Java Virtual Machine(Java虛擬機)的縮寫,它是Java編程語言的運行環境。JVM的主要功能是將Java源代碼轉換為機器代碼,并且在運行時管理Java程序的內存。JVM
    的頭像 發表于 12-05 14:08 ?537次閱讀
    主站蜘蛛池模板: 手机在线播放成人亚洲影院电影| 国产扒开美女双腿屁股流白浆 | 777午夜精品久久AV蜜臀| 日本护士在线观看| 久久无码人妻AV精品一区| 国产精品久久久久久久久99热 | 国产精品自在拍在线播放| 99久久亚洲精品影院| 99re6热这里在线精品视频| 小p孩玩成年女性啪啪资源| 欧美国产在线一区| 久久日本片精品AAAAA国产| 国产亚洲精品视频亚洲香蕉视| 成人小视频在线观看免费| 99精品亚洲| 最近的2019中文字幕国语完整版 | 乱淫67194| 久久九九亚洲精品| 国精产品一区二区三区四区糖心 | 果冻传媒完整免费网站在线观看| 俄罗斯女肥臀大屁BBW| WWW国产亚洲精品久久| 69亞洲亂人倫AV精品發布| 一区三区不卡高清影视| 新香蕉少妇视频网站| 她也色在线视频站| 色内射无码AV| 色欲AV亚洲午夜精品无码| 日本久久精品免视看国产成人| 欧美人与动交zOZ0| 欧美日韩国产码在线| 欧美videosgratis杂交| 嫩草影院一区| 欧美末成年videos在线| 欧美多人群p刺激交换电影| 男人都懂www深夜免费网站| 免费在线伦理片| 欧美深深色噜噜狠狠yyy| 秋霞特色大片18岁入口| 日韩大胆视频| 天天国产在线精品亚洲|