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

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

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

3天內不再提示

編寫動態的驗證環境

sanyue7758 ? 來源:驗證芯發現 ? 2023-07-17 10:40 ? 次閱讀

作為一名DV,開發驗證環境,編寫驗證環境也算是必備基礎技能了。雖然每天都會coding,但最終寫出來的代碼,是一次性代碼,還是方法?

何為一次性代碼?可以從復用性考慮。

代碼的復用可大可小。IP驗證內部,寫出的代碼是否可以在不同case間復用,還是僅針對具體的需求,點對點地寫代碼。一個簡單的例子就是,不同case的實現,是在不停地復制粘貼,還是精簡的實現;不同case的仿真,是否需要重新編譯驗證環境。

system或者soc驗證時,寫出的case是否可以方便地移植或者為他人所使用。一個長達數百行,for/if/while/fork來回嵌套的函數,大概率會直接打消大家review的念頭。其大概率也是一次性代碼,復用性不高。

一次性代碼和方法的區別,換個角度看,也是是驗證環境的靜態和動態性的一種體現。如果環境中的某些參數或者特性在編譯階段就已經確定,可認為是靜態性的。如果某些參數或者code執行在運行時才會確定,則是動態性的,即runtime。

使用動態性的代碼,可以使得驗證環境具備較好的靈活性。盡可能少的重新編譯環境,盡可能高效的debug case,在芯片規模較大時顯得尤為重要。尤其在使用一些如增量編譯,MSIE(multi snapshot incremental elaboration),simulation based snapshot方法時,對環境結構和靈活性的要求會更高。這里分享一些靜態式和動態式的例子和思路。

ifdef/ifndef雙刃劍

條件編譯宏在環境開發中經常會使用到,作者此前也分享過相關的總結,讀者可參閱:SystemVerilog Macro宏使用場景小結。

testbench中的env部分盡量減少使用條件編譯宏。比如下面的例子:

3d6f21ec-2323-11ee-962d-dac502259ad0.png

在環境部分使用ifdef/ifndef,就意味著在不同的場景下,需要重新編譯環境,是一種靜態式的思路。

去除ifdef/ifndef,可以使用configuration來實現,根據config的結果來決定要不要例化或者啟動某個組件。

3d89194e-2323-11ee-962d-dac502259ad0.png

用好plusargs

既然是runtime,動態式,那就從仿真命令中獲取數據好了。plusargs有兩個函數,plusargs和plusargs。前者檢測是否有制定了某個參數,后者用于獲取命令行輸入的參數值。

使用plusargs,可以在仿真前指定某個參數的取值,如時鐘頻率、module選擇、仿真超時域值等。甚至可以從plusargs中傳入對隨機參數的約束!而且UVM庫中也有uvm_cmdline_processor,用于處理命令行的輸入參數。同樣的,前面去除ifdef/ifndef的事情,也可以用plusargs來解決。

plusarg的使用可謂"五花八門"。如果后面有機會,作者也會做類似的分享,有興趣的讀者可私信交流和學習。總之,用好plusargs可以在case的調試時,帶來效率上的提升。

需求一直在變,做好數據驅動

不直接面向具體的數據編寫代碼,而是編寫對數據的處理和操作方法。比如環境中需要對A0~A9寄存器進行配置,以完成DUT的初始化,或者需要對某些信號進行force和check。需求變化和明天,不知道哪個會先來,雖然今天的需求是配置A0~A9, force a0~a9,明天可能就是變成B0~B9。

這里就可以做好通用的寄存器配置方法,需要配置的寄存器從plusargs或者配置文件中導入,而不是看到具體的A0或者B0寄存器。需要force和check的信號,可以從文件中導入,環境中編寫從force到check的邏輯方法。

數據驅動中,聯合數組是一個比較好的數據結構,在其他語言中也稱為哈希數組或者字典。這種數據結構有key和value兩個屬性,你所需要的信息可以設置到key和value上,而不用關心key和value具體是什么,是數據驅動的天然好幫手。比如只使用一個int cfg[string]類型的聯合數組作為函數的入參,就可以實現多個參數的配置傳遞,具體的配置參數名體現在cfg的string類型的key中,參數取值體現在cfg的int類型的value中。





審核編輯:劉清

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

    關注

    68

    文章

    19336

    瀏覽量

    230197
  • 寄存器
    +關注

    關注

    31

    文章

    5357

    瀏覽量

    120619
  • SoC芯片
    +關注

    關注

    1

    文章

    613

    瀏覽量

    34947
  • UVM
    UVM
    +關注

    關注

    0

    文章

    182

    瀏覽量

    19185
  • DUT
    DUT
    +關注

    關注

    0

    文章

    189

    瀏覽量

    12417

原文標題:編寫動態的驗證環境

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于VMM驗證方法學的MCU驗證環境

    。本文主要提出了一種基于SystemVerilog的VMM驗證方法學的驗證環境。在這個驗證環境中,驗證
    發表于 03-24 14:07 ?3347次閱讀

    什么是動態鏈接庫?如何編寫、生成DLL

    什么是動態鏈接庫?如何編寫、生成DLL
    發表于 01-17 09:54

    基于VMM的驗證環境驗證MCU指令實現設計

    驗證結構,以及以功能覆蓋率為指標的驗證流程。在本文中,圍繞Synopsys的VMM(Verification Methodology Manual)構建了一個MCU驗證環境
    發表于 07-01 08:15

    為什么要使用動態編寫安卓廣播的案例呢

    經過這幾次的篡寫主要還是安卓廣播的案例,望大家見諒。這也是多寫幾個案例更好的體現安卓廣播的特點。接下來還是老規矩,運用動態編寫廣播,在這之前我上一篇已經提到了為什么要使用動態編寫,在這
    發表于 12-30 06:16

    如何驗證用CodeWarrior工具編寫的軟件?

    如何驗證用 CodeWarrior 工具編寫的軟件?有沒有可用的單元測試,軟件測試工具?
    發表于 04-14 08:03

    SoC驗證環境搭建方法的研究

    本文從SoC (System on a Chip)驗證環境外在的框架結構、內在的驗證數據的組織與管理和體現其工作原理的系統腳本的設計思想三方面出發,討論SoC 驗證
    發表于 12-14 09:52 ?22次下載

    如何編寫dll文件

    如何編寫dll文件:可以用幾種語言來實現,如delphi編寫dll,pb編寫dll文件,java 編寫dll,vc 編寫dll,mfc dl
    發表于 01-16 10:20 ?8881次閱讀

    LINUX環境下CLIPS動態鏈接庫的實現方法

    在LINUX環境下,為了簡便、快捷地制作出CLIPS動態鏈接庫,本文采用了CNU AUTOTOOLS把CLIPS嵌入式高級語言編譯成動態鏈接庫的實現方法,重點研究如何編寫配置信息,利用
    發表于 04-14 21:18 ?30次下載

    參數化UVM IP驗證環境(上)

    參數化的IP是可配置的,這意味著在不同的SOC中IP設計可以有不同的設計參數,設計參數可以對應到協議、端口號、端口名稱、以及內部邏輯。大量的IP設計參數非常影響驗證環境的構建,比如testbench
    發表于 09-15 14:37 ?8次下載
    參數化UVM IP<b class='flag-5'>驗證</b><b class='flag-5'>環境</b>(上)

    如何在代碼編寫器StudioIDE開發環境中使用腳本實用程序的詳細描寫

    腳本是代碼編寫器Studio集成開發的一種新實用工具。環境(IDE)V2.10。它提供了一個集成到Perl或Visual中的命令庫。基本應用程序(VBA),提供可利用的批處理模式腳本能力。在自動化
    發表于 04-25 14:09 ?8次下載
    如何在代碼<b class='flag-5'>編寫</b>器StudioIDE開發<b class='flag-5'>環境</b>中使用腳本實用程序的詳細描寫

    基于GameGAN的動態環境模擬

    對于任何機器人系統,模擬都是關鍵的一環。為正確地進行模擬,我們需要編寫復雜的環境規則,如:動態代理的行為,以及每個代理的行為會如何影響其他代理的行為。
    的頭像 發表于 07-08 15:26 ?2026次閱讀

    第4章:程序編寫和調試環境簡介PPT下載

    第4章:程序編寫和調試環境簡介PPT下載
    發表于 10-08 14:49 ?13次下載

    基于UVM驗證環境開發測試流程

    驗證環境用戶需要創建許多測試用例來驗證一個DUT的功能是否正確,驗證環境開發者應該通過以下方式提高測試用例的開發效率
    的頭像 發表于 06-09 11:11 ?992次閱讀
    基于UVM<b class='flag-5'>驗證</b><b class='flag-5'>環境</b>開發測試流程

    C和C++編寫環境下LabVIEW如何調用動態庫?

    與C語言編寫動態鏈接庫相比,不同的地方在于extern int “C” __declspec(dllexport) add(int x,int y) 這一導出語句,在C代碼中沒有”C” ,而在C++代碼中多了一個”C”。
    發表于 06-11 09:15 ?7834次閱讀
    C和C++<b class='flag-5'>編寫</b><b class='flag-5'>環境</b>下LabVIEW如何調用<b class='flag-5'>動態</b>庫?

    一種半動態環境中的定位方法

    。在導航期間,定位方法可以對靜態和非靜態對象進行分類觀測,并評估半動態對象是否移動,以減少無效觀測權重和位置波動。實驗證明所提出的方法可以提高移動機器人在非靜態環境下的定位精度。
    的頭像 發表于 09-30 14:40 ?281次閱讀
    一種半<b class='flag-5'>動態</b><b class='flag-5'>環境</b>中的定位方法
    主站蜘蛛池模板: 一卡二卡≡卡四卡亚洲高清 | 三级网在线| 亚洲国产成人va在线观看| 五月婷婷激情| 色播五月婷婷| 人人免费人人专区| 毛片站| 国产成人亚洲精品77| 在线观看黄日本高清视频| 天天碰夜夜| 国产深夜福利在线观看网站| 午夜欧美性视频在线播放| 91av在线视频观看| 老司机午夜永久在线观看| 亚洲嫩草影院在线观看| 日韩色网站| 国产女人在线观看| 视频在线观看高清免费看| 大色综合色综合资源站| 激情欧美在线| 在线三级网| 日a在线| 成人午夜毛片| 日本免费人成黄页网观看视频 | 国产三级日产三级日本三级| 夜夜夜夜夜夜夜猛噜噜噜噜噜噜| 欧美 变态 另类 人妖班| 色涩在线观看| 最新国产厕所| 人人干人人草| 6080伦理久久亚洲精品| 免费aa| 婷婷在线免费观看| 四虎影院永久在线观看| 韩国免费特一级毛片| 深夜视频在线免费观看| 五月婷婷六月丁香在线| 在线天堂视频| 六月丁香婷婷网| 天天摸天天爽天天澡视频| 欧美色淫|