《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于C_Model的UVM驗證平臺設計與實現
基于C_Model的UVM驗證平臺設計與實現
2019年電子技術應用第10期
張 靜,卜 剛
南京航空航天大學 電子信息工程學院,江蘇 南京211106
摘要: 隨著集成電路規模和復雜度的提高,其驗證工作也日益復雜和重要,驗證周期己經達到甚至超過整個芯片設計周期的70%,因此,急需找到一種高效的驗證方法,以便提高驗證效率,增強驗證平臺的可重用性。基于SystemVerilog語言的 UVM 驗證方法學可以有效提高驗證效率,縮短驗證周期。采用高層次的抽象模型C_Model作為參考模型接入UVM平臺,對數字基帶處理單元中標簽發送鏈路的編碼模塊進行驗證,設計隨機和非隨機的testcase,通過driver和monitor驗證組件來發送、監測并收集數據,包括硬件設計RTL代碼產生的數據和參考模型產生的數據,然后將兩數據送入設計的UVM計分板模塊進行比對,從而實現對RTL的功能驗證,驗證系統的優劣可通過功能覆蓋率來體現。驗證結果表明,UVM計分板中比對正確且功能覆蓋率達到了100%。
中圖分類號: TN402
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190753
中文引用格式: 張靜,卜剛. 基于C_Model的UVM驗證平臺設計與實現[J].電子技術應用,2019,45(10):100-104.
英文引用格式: Zhang Jing,Bu Gang. Design and implementation of UVM verification platform based on C_Model[J]. Application of Electronic Technique,2019,45(10):100-104.
Design and implementation of UVM verification platform based on C_Model
Zhang Jing,Bu Gang
School of Electronic Information Engineering,Nanjing University of Aeronautics and Astronautics,Nanjing 211106,China
Abstract: As the scale and complexity of integrated circuits increase, the verification work becomes more and more complex and important. The verification cycle has reached or exceeded 70% of the entire chip design cycle. Therefore, it is urgent to find an efficient verification method to improve verification efficiency and enhance reusability of the verification platform. The UVM verification methodology based on the SystemVerilog language can effectively improve the verification efficiency and shorten the verification cycle. Therefore, this paper uses the high-level abstract model C_Model as the reference model to access the UVM platform, verify the encoding module of the tag transmission link in the digital baseband processing unit, design random and non-random testcase, and send it through the driver and monitor verification components. Monitor and collect data, including the data generated by the hardware design RTL code and the data generated by the reference model, and then send the two data to the designed UVM scoreboard module for comparison, thereby verifying the function of the RTL and verifying the pros and cons of the system. It can be reflected by functional coverage. The verification results show that the alignment is correct and the functional coverage reaches 100% in the UVM scoreboard.
Key words : SystemVerilog;UVM;C_Model;functional coverage

0 引言

    近幾十年來,集成電路事業發展迅速,設計與工藝技術不斷發展,更多和更復雜的功能被集成到一塊芯片上。SoC的集成度和復雜度大大提高,在IC設計中就容易引入錯誤,所以驗證工作將變得艱巨。隨著IC設計規模的增大以及設計周期的壓縮,傳統驗證技術已經不能再滿足日益增長的驗證需求,驗證方法學應運而生,目前,UVM驗證方法學已經成為應用最廣泛的方法學。

    本文目的在于為數字基帶處理單元中標簽發送鏈路的編碼模塊搭建一個適當的、完善的驗證平臺,用來驗證RTL代碼的正確與否。運用面向對象思想的UVM驗證方法學和C語言進行平臺的設計與實現,它能有效地縮短驗證周期,提高驗證效率,加大芯片的面試可能性。

1 UVM驗證方法學

    目前,主流的驗證方法學有VMM、OVM和UVM。UVM基于System Verilog語言,具有VMM、OVM等諸多驗證方法學的優點,是一套高效、開源的驗證方法學。UVM由Accellera標準組織推出,并得到了三大主流EDA供應商支持。

    通用驗證方法學(Universal Verification Methodology,UVM)是一個以SystemVerilog類庫為主體的驗證平臺開發框架,可以利用其可重用組件構建具有標準化層次結構和接口的功能驗證環境。

    UVM平臺架構主要是由通用驗證組件(Universal Verification Component,UVC)構成。每個UVC都是功能完備、可配置、封裝好的驗證環境。根據UVC功能的不同,可分為接口UVC(Interface UVC)和模塊UVC(Module UVC)等。

    由圖1可知構成UVM環境的常見組件類如下:

dzyj1-t1.gif

    (1)uvm_driver類:是從uvm_sequencer中獲取事務(transaction),經過轉化在接口中對DUT進行時序激勵。diver類與sequencer類之間的通信就是為了獲取新的事務對象,這一操作通過pull方式實現:

    driver.seq_item_port.connect(sequencer.seq_item_export);

    driver.rsp_port.connect(sequencer.rsp_export);

    (2)uvm_monitor類:用來監測數據。

    (3)uvm_sequencer類:就像一個管道,從中傳送連續的激勵事務,并最終通過TLM端口送至driver一側。

    (4)uvm_agent類:用來封裝一個driver、一個monitor和一個sequencer。

    (5)reference_model:用于完成和DUT相同的功能。reference model的輸出被scoreboard接收,用于和DUT的輸出相比較。

    (6)uvm_scoreboard:用來進行數據比對和報告。

    (7)uvm_env:是一個結構化的容器,用來容納各組件。

    (8)uvm_test:是驗證環境的唯一入口,只有通過它才能正常運轉uvm的phase機制。

2 DUT介紹

    圖2中的DUT實現了FM0和Miller副載波調制編碼。在ISO/IEC18000-6C協議標準中,標簽發送鏈路主要采用是FM0編碼和Miller編碼。編碼方式的選擇由m[1:0]來決定,只有當m值為2′b00時才會選擇FM0編碼,m為2′b01、2′b10、2′b11時選擇Miller編碼。

dzyj1-t2.gif

    FM0編碼是通過電平翻轉的方式來實現編碼,數據碼元-0和-1翻轉的次數不同。碼元-0在碼元周期中間會發生一次電平翻轉,而碼元-1只在每個碼元起始處發生電平翻轉。從圖3所示FM0編碼的狀態跳轉圖可以看出FM0編碼的碼元-0和-1的波形,而且在FM0編碼結束后需要在碼元數據的尾端添加結束標志,結束標志會以固定碼流來結束。碼元波形和結束符如圖4所示。

dzyj1-t3.gif

dzyj1-t4.gif

    Miller編碼又稱為副載波調制編碼,也是通過電平翻轉的方式來實現編碼。編碼方式和狀態跳轉如圖5所示。

dzyj1-t5.gif

    根據Miller編碼規則,按照m[1:0]值不同,每個數據可能被編碼成4位、8位16位碼元。如果m值為01,對應M值為2,每個數據編碼為4位碼元;m值為10,對應M值為4,每個數據編碼為8位碼元;m值為11,對應M值為8,每個數據編碼為16位碼元。Miller編碼序列如圖6所示,每個編碼序列分別對應M值為2、4、8。由圖可知數據編碼時,只有在數據-0和-0邊界電平不發生翻轉跳變以外其他數據邊界處都會發生電平的翻轉跳變。

dzyj1-t6.gif

    與FM0編碼類似,Miller除了采用電平翻轉實現編碼外,編碼結束后在數據的尾部同樣需要添加結束標志。FM0采用固定碼流作為結束標志,即保持持續碼元電平。但是Miller編碼的結束標志相對會復雜一些,如圖7所示。

dzyj1-t7.gif

3 驗證架構

    本文設計UVM平臺如圖8所示。

dzyj1-t8.gif

    組件搭建描述:

    (1)interface:聲明接口。

    (2)transaction(數據包):繼承于uvm_sequence_item,利用隨機化和相關約束約束產生隨機數據,創建兩個transaction對象,transaction_in在DUT輸入端輸入,transaction_out在DUT輸出與參考模型的輸出相比較。

    (3)sequence類:繼承于uvm_sequence,加入objection機制來控制驗證平臺的關閉,利用repeat( )來控制執行的次數。

    (4)sequencer:繼承于uvm_sequencer,連接driver,實現數據的發送。

    (5)driver類:繼承于uvm_driver,與sequencer連接,用來請求數據。

    (6)monitor類:繼承于uvm_monitor,創建monitor_before和monitor_after,前者用來收集driver發送的數據,后者用來監測DUT的輸出,分別在monitor_after和monitor_before中設置covergroup用來收集功能覆蓋率

    (7)agent類:繼承于uvm_agent,創建i_agent和o_agent,前者用來封裝driver和monitor_before,后者用來封裝monitor_after,聲明并例化sequencer、driver、monitor,利用端口將它們連接起來。

    (8)reference_model:繼承于uvm_component,將外部C_Model通過DPI調入,并將數據存儲,用來與monitor監測到的DUT的輸出做比較。

    設計FM0編碼的C_Model。模型輸入包括了m參數、data,輸出編碼后數據及編碼后的數據長度。首先需要將數據讀入模型,根據數據電平編碼。編碼算法主要設置一個變量data_tmp,在編碼開始時設置為1,如果是編碼-0,則輸出碼元~data_tmp和data_tmp,data_tmp值保持不變。如果是編碼-1,則輸出碼元~data_tmp和~data_tmp,data_tmp值取反。通過不斷更新data_tmp值來實現數據的編碼輸出,編碼完成后添加結束標識符。

    設計Miller副載波調制編碼的C_Model,模型輸入包括了m參數、data,結合副載波調制類型和數據類型,將編碼后的數據及長度輸出,另外,由于Miller前同步碼最后一位碼元電平為低,因此其初始data_tmp應為0,結合m的值進行編碼,編碼完成后添加結束標識符。

    (9)Scoreboard類:繼承于uvm_scoreboard,將monitor_after檢測到的輸出與reference_model得到的輸出做比較。

    (10)env類:繼承于uvm_env,聲明并例化agent,reference_model,scoreboard,利用端口將它們連接起來。

    (11)Test類:繼承于uvm_test,聲明并例化env,設置default_sequence來啟動sequence。

    (12)Top模塊:聲明接口,實現DUT和平臺互連,設置時鐘信號。

4 仿真結果

    環境搭建完畢后用QuestaSim進行仿真驗證,根據輸出的波形和驗證信息比較DUT功能的正確與否,并查看輸出的功能覆蓋率來檢測各功能點的實現狀況。

    由圖9所示可以發現,UVM計分板中顯示驗證通過,DUT的輸出和模型的輸出是一致的,DUT的設計滿足功能實現。

dzyj1-t9.gif

    由圖10可知,m=0時,執行FM0編碼,m=1時,即執行miller編碼,每個數據分別編碼為2和4個碼元,由圖可知:m=0,data=3′b000,得到編碼后的數據為01010100,數據長度為8位,最后2位是結束標識符00,根據FM0編碼原則結果是正確的;而m=1,data=3′111,得到的編碼后數據為1001_0110_1001_0110,數據長度為16位,最后4位0110是結束標識符,根據miller編碼原則結果是正確的。

dzyj1-t10.gif

    由圖11可知,m=2和3時,即執行miller編碼,每個數據分別編碼為8和16個碼元,由圖可知:m=2,data=3′b110,得到編碼后的數據為1010_0101_0101_1010_1010_1010_1010_0101,數據長度為32位,最后8位是結束標識符1010_0101,根據miller編碼原則結果是正確的;而m=3,data=3′011,得到的編碼后數據為0101_0101_0101_0101_0101_0101_1010_1010_1010_1010_0101_0101_0101_0101_1010_1010,數據長度為64位,最后16位0101_0101_1010_1010是結束標識符,根據miller編碼原則結果也是正確的。

dzyj1-t11.gif

    圖12是一個由覆蓋率驅動并且受約束的隨機分層測試平臺所產生的整個FM0、Miller編碼仿真波形圖,由圖可見,平臺跑了很多個testcase。

dzyj1-t12.gif

    圖13描述此DUT的功能覆蓋率,FM0編碼以及Miller編碼的3種模式都覆蓋到了,各功能點的覆蓋率達到了100%。

dzyj1-t13.gif

5 結論

    UVM驗證方法學作為目前主流的IC驗證方法學,盡管在前期搭建驗證平臺的的時間較長,但是執行效率很高,可以縮短整個研發的驗證時間。本文介紹了基于DPI-C接口和UVM相結合的驗證環境,實現了C程序與基于UVM環境的接口對接,使用受約束的隨機激勵以及覆蓋率驅動,使驗證平臺中程序開發方便且調試方便,縮短了驗證周期,保證了驗證的完備性,有效地縮短了驗證周期,提高了驗證效率,加大了芯片的面試可能性。

參考文獻

[1] 張強.UVM實戰[M].北京:機械工業出版社,2014.

[2] 劉斌.芯片驗證漫游指南[M].北京:電子工業出版社,2018.

[3] 程剛,蔡敏.基于SystemVerilog的SoC功能驗證方法研究[J].科學技術與工程,2009(22):6814-6818.

[4] 克里斯·斯皮爾.SystemVerilog驗證[M].張春,譯.北京:科學出版社,2009.

[5] 徐偉俊,楊鑫,陳先勇,等.針對功能覆蓋率的驗證過程[J].中國集成電路,2007(7):58-62.

[6] 克里斯·斯皮爾.SystemVerilog驗證:測試平臺編寫指南[M].張春,麥宋平,趙益新,譯.北京:科學出版社,2009.

[7] 李璐,周春良,馮曦,等.基于DPI-C接口的可擴展SOC驗證平臺[J].電子設計工程,2018,26(4):136-140.

[8] Michael Keating.Reuse methodology manual for system-on-a-chip design[M].Third Edition.Kluwer Academic Publishers,2002.



作者信息:

張  靜,卜  剛

(南京航空航天大學 電子信息工程學院,江蘇 南京211106)

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲欧洲中文日韩久久av乱码| 国产欧美一区二区三区在线老狼 | 久久都是精品| 亚洲视频在线观看视频| 亚洲精品乱码久久久久久日本蜜臀| 性伦欧美刺激片在线观看| 亚洲自拍偷拍福利| 亚洲图片在线| 国产精品99久久久久久宅男| 夜夜夜久久久| 99精品久久免费看蜜臀剧情介绍| 亚洲三级色网| 日韩视频免费看| 亚洲精品在线免费| 亚洲精品亚洲人成人网| 亚洲精品五月天| 亚洲免费大片| a91a精品视频在线观看| 一二三区精品| 亚洲一区二区三| 亚洲在线免费观看| 午夜精品国产| 欧美一区二区三区视频在线 | 久热精品在线视频| 欧美freesex交免费视频| 美女爽到呻吟久久久久| 欧美成人一区二区三区在线观看 | 乱人伦精品视频在线观看| 美女尤物久久精品| 欧美国产日韩在线| 欧美美女福利视频| 欧美婷婷六月丁香综合色| 欧美午夜视频网站| 国产精品免费一区二区三区观看| 亚洲国产精品久久久久久女王| 日韩视频欧美视频| 日韩一二三在线视频播| 一本在线高清不卡dvd| 亚洲女同精品视频| 欧美在线观看www| 亚洲黄一区二区| 999亚洲国产精| 亚洲一区二区视频在线| 欧美一站二站| 久久天天狠狠| 欧美精品一区二区三| 欧美视频中文字幕在线| 国产欧美精品在线播放| 伊人久久噜噜噜躁狠狠躁| 最新亚洲激情| 亚洲一区自拍| 亚洲大胆人体在线| 在线视频亚洲欧美| 性欧美8khd高清极品| 久久综合网色—综合色88| 欧美日韩精品一二三区| 国产欧美日韩精品一区| 亚洲第一二三四五区| 一本久道久久久| 欧美一区二区三区视频免费| 亚洲精品视频免费| 亚洲自拍16p| 久久免费的精品国产v∧| 欧美精品久久久久a| 国产精品亚洲不卡a| 在线成人亚洲| 亚洲视频免费| 亚洲激情电影在线| 亚洲欧美日韩国产成人精品影院| 久久女同精品一区二区| 欧美色综合网| 激情小说亚洲一区| 中文在线资源观看网站视频免费不卡 | 亚洲国产日韩欧美在线图片| 亚洲天堂av电影| 久久久精品一区| 欧美日韩系列| 激情久久五月天| 久久久国产午夜精品| 在线视频亚洲| 老妇喷水一区二区三区| 欧美午夜在线| 亚洲国产美女精品久久久久∴| 亚洲一区三区电影在线观看| 亚洲日韩视频| 久久精品一区二区三区四区| 欧美色区777第一页| 亚洲国产日韩欧美| 欧美中文在线观看| 先锋影音国产精品| 欧美老女人xx| 伊人成年综合电影网| 亚洲欧美日韩国产精品| 在线视频亚洲| 欧美国产日韩视频| 影音先锋中文字幕一区| 亚洲欧美日韩国产成人| 中文av字幕一区| 美女成人午夜| 国产一区二区三区日韩欧美| 亚洲视频在线观看免费| 亚洲美女毛片| 美女精品国产| 国模大胆一区二区三区| 亚洲影视在线播放| 亚洲网站视频福利| 欧美激情精品久久久六区热门 | 中文精品99久久国产香蕉| 日韩一级视频免费观看在线| 毛片精品免费在线观看| 国内精品伊人久久久久av一坑| 亚洲尤物视频网| 亚洲一区二区三区免费视频| 欧美精品二区三区四区免费看视频| 狠狠爱综合网| 欧美在线网站| 欧美在线影院在线视频| 国产精品欧美日韩一区二区| 99视频有精品| 在线综合亚洲欧美在线视频| 欧美精品一区二区精品网 | 亚洲综合视频网| 欧美午夜不卡视频| 99精品国产在热久久婷婷| 在线亚洲电影| 欧美日韩一区高清| 日韩手机在线导航| 中文高清一区| 欧美日韩一区二区免费视频| 先锋影音国产精品| 久久福利毛片| 国产一区二区三区在线观看免费视频 | 正在播放亚洲| 亚洲欧美精品一区| 国产精品午夜电影| 午夜国产一区| 久久狠狠婷婷| 国产一区二区三区免费在线观看| 久久成人综合网| 麻豆成人在线| 亚洲大片av| 一本久道久久综合婷婷鲸鱼| 欧美日韩三级在线| 亚洲特色特黄| 欧美怡红院视频| 国产一区欧美日韩| 亚洲国产精品va在线看黑人动漫| 猫咪成人在线观看| 亚洲精品一级| 亚洲欧美日韩另类精品一区二区三区| 国产精品久久久久av| 亚洲欧美日本视频在线观看| 久久精品亚洲一区| 在线不卡中文字幕| 一区二区三区黄色| 国产精品久久久久久模特| 亚洲欧美视频一区二区三区| 久久久久久久久蜜桃| 伊人男人综合视频网| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲欧洲综合另类| 欧美日韩国产欧美日美国产精品| 一区二区三区四区五区精品视频| 欧美一区二区三区四区在线观看地址| 国模大胆一区二区三区| 日韩视频一区二区在线观看| 国产精品爱久久久久久久| 欧美亚洲一区二区在线| 欧美激情第10页| 亚洲视频视频在线| 久久久久久久999精品视频| 亚洲国产另类精品专区| 午夜精品视频在线观看一区二区| 黄色日韩网站视频| 99国产精品国产精品久久| 国产精品v一区二区三区| 久久福利毛片| 欧美日韩精品一区二区三区| 午夜精品国产精品大乳美女| 农夫在线精品视频免费观看| 欧美日韩亚洲综合一区| 亚洲精品一区二区三区99| 欧美在线高清视频| 亚洲国产日韩综合一区| 午夜一区不卡| 亚洲精品欧美| 久久久一本精品99久久精品66| 亚洲国产精品99久久久久久久久| 性18欧美另类| 亚洲老板91色精品久久| 久久精品久久综合| 日韩午夜免费视频| 久久久久高清| 中日韩男男gay无套| 免费成人性网站| 午夜精品久久久99热福利| 欧美日韩综合一区| 久久精品国亚洲| 国产精品入口日韩视频大尺度| 亚洲乱码国产乱码精品精天堂|