《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于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少妇一区二区| 国产女主播在线一区二区| 欧美视频精品一区| 欧美精品xxxxbbbb| 欧美精品亚洲二区| 欧美日韩国产精品专区| 欧美日韩国产不卡| 欧美日韩国产综合视频在线| 欧美精品一区二区蜜臀亚洲| 欧美激情片在线观看| 欧美精品综合| 欧美日韩一区二区欧美激情| 欧美三日本三级少妇三99| 欧美三级小说| 国产精品久久777777毛茸茸| 国产精品视频免费一区| 国产精品亚洲人在线观看| 国产精品一区二区欧美| 国产日韩欧美一区二区三区四区| 国产日韩欧美亚洲| 精品动漫3d一区二区三区免费| 一区二区三区在线免费视频 | 国产精品h在线观看| 国产精品国产三级国产专播精品人| 国产精品久久国产精品99gif | 亚洲精品视频二区| 亚洲视频在线观看视频| 欧美一区二区视频在线观看2020| 久久精品国产综合| 免费短视频成人日韩| 欧美日韩第一区日日骚| 国产精品你懂得| 韩国v欧美v日本v亚洲v| 亚洲欧洲在线视频| 亚洲一区二区高清视频| 久久精品亚洲精品| 一本色道久久88综合日韩精品| 亚洲免费在线精品一区| 久久亚洲国产精品日日av夜夜| 欧美精品成人一区二区在线观看| 国产精品sss| 国内揄拍国内精品少妇国语| 91久久香蕉国产日韩欧美9色| 亚洲天堂偷拍| 亚洲福利在线观看| 中日韩美女免费视频网站在线观看| 欧美亚洲在线| 免费观看日韩| 国产精品福利在线观看| 一区二区三区在线视频播放| 一本色道久久综合亚洲91| 欧美一区二视频| 一本不卡影院| 久久久精品网| 欧美午夜精品久久久久久久| 韩国三级电影一区二区| 99精品国产高清一区二区| 欧美一级专区| 一区二区三区国产盗摄| 久久精品人人做人人综合| 欧美日韩国产经典色站一区二区三区| 国产婷婷一区二区| 一区二区激情| 亚洲国产一二三| 午夜日韩在线| 欧美日韩国产美| 极品av少妇一区二区| 亚洲无毛电影| 日韩视频在线观看| 久久久久久亚洲精品中文字幕| 欧美视频手机在线| 亚洲高清资源| 欧美一区中文字幕| 亚洲欧美久久久| 欧美精品七区| 在线观看国产精品网站| 午夜视黄欧洲亚洲| 亚洲男人第一网站| 欧美区一区二| 伊人激情综合| 午夜性色一区二区三区免费视频 | 国产精品福利在线观看| 亚洲国产日韩综合一区| 欧美一区成人| 亚洲欧美日韩一区二区| 欧美日韩中文在线| 亚洲激情成人| 亚洲国产清纯| 久久久久88色偷偷免费| 国产乱人伦精品一区二区| 一区二区三区视频免费在线观看| 亚洲精品美女91| 鲁大师成人一区二区三区| 国产视频一区在线| 亚洲在线成人精品| 亚洲视频www| 欧美日韩国产bt| 亚洲日本中文字幕免费在线不卡| 亚洲国产精品ⅴa在线观看| 久久不射网站| 国产伦精品免费视频| 亚洲视频在线观看免费| 亚洲婷婷综合久久一本伊一区| 欧美日韩国产影片| 亚洲乱码国产乱码精品精| 亚洲精品一区二区三区福利| 免费成人在线观看视频| 在线看欧美日韩| 亚洲激情在线| 免费欧美电影| 亚洲国产另类 国产精品国产免费| 亚洲高清视频中文字幕| 麻豆精品在线播放| 亚洲高清在线观看一区| 亚洲精品欧洲| 欧美日韩高清不卡| 99re66热这里只有精品4| 亚洲视频 欧洲视频| 欧美性生交xxxxx久久久| 亚洲天堂黄色| 久久av资源网| 狠狠综合久久| 91久久精品www人人做人人爽 | 国产日韩视频一区二区三区| 欧美亚洲一级| 久久一区二区精品| 亚洲国产欧美一区二区三区同亚洲| 亚洲乱码国产乱码精品精天堂| 欧美精品v国产精品v日韩精品| 亚洲美女在线国产| 亚洲欧美日韩一区二区在线 | 欧美.www| 亚洲毛片在线观看.| 亚洲伊人伊色伊影伊综合网| 国产精品视频网站| 久久av免费一区| 欧美国产三级| 亚洲视频一区在线| 久久精品一区二区三区不卡牛牛| 国语精品一区| 日韩午夜激情| 国产精品美女久久久免费| 欧美一区二区成人| 美女网站在线免费欧美精品| 亚洲美女中出| 欧美有码在线观看视频| 1204国产成人精品视频| 在线一区亚洲| 国产亚洲精品一区二区| 亚洲日本一区二区三区| 国产精品国产三级国产专播精品人 | 日韩手机在线导航| 国产精品免费在线| 亚洲国产高清高潮精品美女| 欧美精品九九| 亚洲综合国产精品| 欧美ed2k| 亚洲一区二区不卡免费| 老司机午夜精品| 一区二区三区精品| 久久免费一区| 日韩午夜激情电影| 久久久97精品| 日韩视频在线免费| 久久精品一区二区国产| 亚洲免费高清| 久久久免费精品| 亚洲最新在线视频| 久久天堂国产精品| 中文在线一区| 麻豆精品在线观看| 亚洲香蕉视频| 欧美高清视频在线观看| 午夜精品福利在线| 欧美日韩国产精品专区| 久久精品理论片| 国产精品福利影院| 日韩午夜电影在线观看| 国产一区二区高清不卡| 亚洲一区二区黄色| 在线观看欧美日本| 久久福利毛片| av成人老司机| 欧美成人dvd在线视频| 午夜精品久久久久久久久久久久| 欧美日韩三区四区| 亚洲精品日韩欧美| 国产综合亚洲精品一区二| 亚洲欧美不卡| 日韩小视频在线观看专区| 麻豆精品精华液| 性欧美长视频| 国产精品免费一区二区三区在线观看 | 免费亚洲网站| 欧美在线观看日本一区| 国产精品久久久一本精品| 亚洲美女在线观看| 在线日韩视频|