重慶郵電大學(xué)通信與信息工程學(xué)院 潘應(yīng)進(jìn) 龍 懇
?
基于UVM實(shí)現(xiàn)高效可重用的SoC功能驗(yàn)證
重慶郵電大學(xué)通信與信息工程學(xué)院 潘應(yīng)進(jìn) 龍 懇
【摘要】通用驗(yàn)證方法學(xué)(UVM)融合了OVM和VMM兩大驗(yàn)證方法學(xué),使驗(yàn)證語言統(tǒng)一于SystemVerilog,驗(yàn)證方法學(xué)統(tǒng)一于UVM。在研究了UVM的基礎(chǔ)上,重點(diǎn)研究了如何使用UVM搭建高效可重用的SoC驗(yàn)證平臺。先進(jìn)行模塊級功能驗(yàn)證,再將模塊級驗(yàn)證組件重用到系統(tǒng)級驗(yàn)證平臺中,實(shí)現(xiàn)APB子系統(tǒng)的功能驗(yàn)證。通過組件的重用,縮短了系統(tǒng)驗(yàn)證平臺的搭建時(shí)間,進(jìn)一步縮短了SoC驗(yàn)證的周期。在結(jié)果分析上,通過代碼覆蓋率和功能覆蓋率的結(jié)合,保證驗(yàn)證的進(jìn)度和質(zhì)量。通過與傳統(tǒng)驗(yàn)證平臺的對比,結(jié)果表明,UVM驗(yàn)證平臺在驗(yàn)證效率上遠(yuǎn)遠(yuǎn)高于傳統(tǒng)驗(yàn)證平臺。
【關(guān)鍵詞】通用驗(yàn)證方法學(xué);SoC;功能驗(yàn)證;驗(yàn)證平臺
隨著SoC芯片集成度和復(fù)雜度的不斷提升,SoC基帶芯片研發(fā)的驗(yàn)證工作量成倍增加[1]。然而,市場是無法接受芯片的研制周期成倍增加的,因此,需要針對占據(jù)SoC基帶芯片設(shè)計(jì)大量時(shí)間的驗(yàn)證工作進(jìn)行分析,研究更為高效的基帶芯片驗(yàn)證方法,縮短芯片的研制周期以滿足市場需求。
UVM驗(yàn)證方法學(xué)是一套具有強(qiáng)大功能的驗(yàn)證方法學(xué),它吸取了包括AVM、OVM以及VMM在內(nèi)的眾多驗(yàn)證方法學(xué)的精華,代表著驗(yàn)證技術(shù)的最新進(jìn)展[2]。使用 UVM 驗(yàn)證方法學(xué)搭建驗(yàn)證平臺能極大地提高驗(yàn)證的完備性和效率,滿足芯片設(shè)計(jì)的時(shí)間和性能要求。
本文深入研究了UVM,并基于UVM的基礎(chǔ)架構(gòu),使用SystemVerilog驗(yàn)證語言[3]搭建了一套系統(tǒng)級驗(yàn)證平臺,對一款基帶處理芯片中的APB[4]子系統(tǒng)進(jìn)行功能驗(yàn)證,并與傳統(tǒng)驗(yàn)證方法進(jìn)行對比,闡述UVM驗(yàn)證方法學(xué)在實(shí)現(xiàn)高效可重用的SoC功能驗(yàn)證時(shí)的獨(dú)特優(yōu)勢。
面對SoC驗(yàn)證難度的持續(xù)提升,傳統(tǒng)的驗(yàn)證方法越來越難以滿足驗(yàn)證的需求,大家開始探尋抽象層次更高的驗(yàn)證語言和性能更完善的驗(yàn)證方法[5]。UVM是基于SystemVerilog語言開發(fā)的一個(gè)庫[6],而SystemVerilog最重要的一個(gè)特性就是引入了類的概念,這使得它具有了面向?qū)ο缶幊痰奶攸c(diǎn),UVM也就由一個(gè)個(gè)這樣的類組合而成。UVM庫中包括三種類型的類[7]:uvm_components、uvm_objects和uvm_transactions。一個(gè)實(shí)際的驗(yàn)證平臺就由擴(kuò)展自uvm_components的基本組件類構(gòu)成,包括uvm_driver、uvm_seqencer、uvm_monitor、uvm_agent、uvm_scoreboard、uvm_env、uvm_test等。
圖1給出了一個(gè)典型的UVM驗(yàn)證平臺的基本架構(gòu)。在這個(gè)驗(yàn)證平臺中,有兩個(gè)agent,i_agt配置為active模式,負(fù)責(zé)驅(qū)動和監(jiān)控總線;o_agt配置為passive模式,只負(fù)責(zé)監(jiān)控總線,沒有驅(qū)動功能。sequence產(chǎn)生隨機(jī)的激勵(lì)transaction并送給sequencer,sequencer有一個(gè)仲裁機(jī)制判斷并決定何時(shí)將該transaction傳給driver,driver在得到transaction后就將其驅(qū)動到DUT接口上,同時(shí),monitor從DUT接口收集輸入數(shù)據(jù)并傳給參考模型用以產(chǎn)生期望值。在另一側(cè),monitor收集DUT的輸出并發(fā)給計(jì)分板scoreboard,計(jì)分板完成數(shù)據(jù)的自動化比對。
圖1 典型UVM驗(yàn)證平臺架構(gòu)
本次驗(yàn)證的對象是一款通用基帶處理芯片中的APB子系統(tǒng),包含APB總線及其上掛載的SPI、GPIO和兩個(gè)UART模塊,以及一些時(shí)鐘和復(fù)位模塊。圖2所示為本次驗(yàn)證對象的框圖。在該子系統(tǒng)中,AXI-APB轉(zhuǎn)換橋接收來自AXI總線的輸入,并將其轉(zhuǎn)化成APB格式的數(shù)據(jù)送給APB,APB根據(jù)不同的地址將數(shù)據(jù)發(fā)送到不同的模塊,這些模塊按照協(xié)議對輸入數(shù)據(jù)進(jìn)行處理,對APB進(jìn)行回應(yīng)或者將處理結(jié)果輸出。
圖2 APB子系統(tǒng)框圖
3.1 UVM模塊級驗(yàn)證平臺
本次驗(yàn)證從模塊級驗(yàn)證出發(fā),再將各個(gè)模塊驗(yàn)證組件重用到子系統(tǒng),完成子系統(tǒng)的驗(yàn)證。
圖3是基于UVM的UART模塊級驗(yàn)證環(huán)境,分為三個(gè)部分:APB_UVC、UART_UVC和CONTROL_UVC。APB_UVC實(shí)現(xiàn)APB總線的功能,配置并控制UART,可對UART進(jìn)行數(shù)據(jù)的讀寫操作;UART_UVC充當(dāng)與UART通信的設(shè)備,可以接收來自UART的數(shù)據(jù),也可以往UART發(fā)送數(shù)據(jù);CONTROL_UVC對APB_UVC和UART_UVC進(jìn)行管理,提供激勵(lì)的入口,配置驗(yàn)證環(huán)境,完成數(shù)據(jù)的自動化檢查,覆蓋率收集,以及提供寄存器模型。
SPI和GPIO模塊的驗(yàn)證平臺與該平臺類似,只需替換相應(yīng)部分即可,這本身也是UVM模塊級重用的一個(gè)體現(xiàn)。
3.2 UVM子系統(tǒng)驗(yàn)證平臺
完成模塊級的驗(yàn)證后,就可以將所有模塊集成到子系統(tǒng)驗(yàn)證環(huán)境中。針對本次驗(yàn)證的系統(tǒng),模塊級驗(yàn)證完成后將產(chǎn)生一些可重用的驗(yàn)證組件APB_UVC、UART_UVC、SPI_UVC、GPIO_UVC。再根據(jù)UVM結(jié)構(gòu)和AXI總線協(xié)議[8]設(shè)計(jì)一個(gè)AXI_UVC,即可完成目標(biāo)子系統(tǒng)驗(yàn)證環(huán)境的搭建,如圖4所示。
圖3 UART模塊及驗(yàn)證平臺
圖4 APB子系統(tǒng)驗(yàn)證平臺
這個(gè)平臺重用了模塊級驗(yàn)證平臺中的APB總線驗(yàn)證模型和各模塊的驗(yàn)證模型,將控制功能移到模塊外圍,在系統(tǒng)級進(jìn)行驗(yàn)證流程的控制。CONTROL_UVC實(shí)現(xiàn)的功能大致與模塊級相同,但復(fù)雜度卻要大得多,如計(jì)分板部分,模塊級只需實(shí)現(xiàn)自己模塊的數(shù)據(jù)對比,而系統(tǒng)級的計(jì)分板針對的是整個(gè)系統(tǒng),不同模塊數(shù)據(jù)來源、格式都可能會不一樣,所以在這個(gè)計(jì)分板模型中需要包含各個(gè)模塊的計(jì)分板小模型。有的模塊如UART不需要參考模型,而有的模塊需要參考模型,在計(jì)分板中都要區(qū)別對待。
根據(jù)系統(tǒng)功能需求編寫測試用例對驗(yàn)證平臺進(jìn)行測試,待所有測試用例全部運(yùn)行完成且沒有錯(cuò)誤信息后,查看覆蓋率信息,確定驗(yàn)證的進(jìn)度和性能。由于該子系統(tǒng)中各模塊沒有太多的交集,所以在驗(yàn)證的各個(gè)環(huán)節(jié)上都是獨(dú)立的,包括覆蓋率的收集、結(jié)果的分析。圖5為UART模塊的覆蓋率信息,其中行覆蓋率達(dá)到了97.68%,功能覆蓋率達(dá)到了100%,表明所有功能都已覆蓋到了,而且代碼覆蓋也達(dá)到了要求,說明對UART的驗(yàn)證已完成。SPI和GPIO的功能覆蓋率也均達(dá)到了100%,代碼覆蓋率也都在96%以上,符合驗(yàn)證的要求。
圖5 驗(yàn)證覆蓋率信息
與傳統(tǒng)驗(yàn)證平臺相比,UVM驗(yàn)證平臺在激勵(lì)的產(chǎn)生,結(jié)果的自動化檢查以及運(yùn)行的耗時(shí)上都要更加優(yōu)越。圖6是UVM平臺與傳統(tǒng)驗(yàn)證平臺運(yùn)行單個(gè)測試用例的時(shí)間對比,可以看出,UVM平臺的耗時(shí)不足傳統(tǒng)平臺的1/6。由此可見,當(dāng)所有測試用例都測試完成,UVM驗(yàn)證平臺在效率上將遠(yuǎn)遠(yuǎn)優(yōu)于傳統(tǒng)驗(yàn)證平臺。
圖6 UVM驗(yàn)證平臺與傳統(tǒng)驗(yàn)證平臺驗(yàn)證效率對比
本文深入研究了UVM驗(yàn)證方法學(xué)的各種機(jī)制,利用SystemVerilog驗(yàn)證語言的特性基于UVM的架構(gòu)搭建了一套系統(tǒng)級驗(yàn)證平臺,對APB子系統(tǒng)進(jìn)行了功能驗(yàn)證。通過對UVM中各種類的繼承,建立了一個(gè)高度可重用的APB總線驗(yàn)證模型和UART、SPI、GPIO驗(yàn)證組件,并通過子系統(tǒng)集成證明了其可重用性。通過代碼覆蓋率和功能覆蓋率的收集,保證了驗(yàn)證的質(zhì)量。實(shí)驗(yàn)結(jié)果證明了UVM驗(yàn)證平臺的高效性。這個(gè)平臺真正實(shí)現(xiàn)了高效可重用的功能驗(yàn)證,為搭建旨在縮短SoC驗(yàn)證周期的系統(tǒng)級驗(yàn)證平臺提供了參考的范例。
參考文獻(xiàn)
[1]呂毓達(dá).基于UVM的可重用SoC功能驗(yàn)證環(huán)境[J].半導(dǎo)體技術(shù),2015,40(3):234-238.
[2]李俊.基于UVM的視頻圖像2D轉(zhuǎn)3D模塊的驗(yàn)證[D].中國海洋大學(xué),2013.
[3]Janick Bergeron. Writing Testbenches using SystemVerilog[M]. Berlin:Synopsys.Inc,Springer,2008.
[4]Synopsys Discovery Verification IP for APB UVM User Manual Version1.98a.2013,71-80.
[5]段然.SoC系統(tǒng)驗(yàn)證方法研究[J].航天控制,2009, 27(3):80-85.
[6]Accellera. Universal Verification Methodology (UVM) 1.1 User’s Guide[M].2011.
[7]Mentor Graphics UVM Documentation Verification Methodology online Cookboook,2013:3-7.
[8]侯秋菊,沈海華.IP可重用的AMBA AXI總線驗(yàn)證平臺設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(7): 1713-1715.