重慶郵電大學通信與信息工程學院 潘應進 龍 懇
?
基于UVM實現高效可重用的SoC功能驗證
重慶郵電大學通信與信息工程學院 潘應進 龍 懇
【摘要】通用驗證方法學(UVM)融合了OVM和VMM兩大驗證方法學,使驗證語言統一于SystemVerilog,驗證方法學統一于UVM。在研究了UVM的基礎上,重點研究了如何使用UVM搭建高效可重用的SoC驗證平臺。先進行模塊級功能驗證,再將模塊級驗證組件重用到系統級驗證平臺中,實現APB子系統的功能驗證。通過組件的重用,縮短了系統驗證平臺的搭建時間,進一步縮短了SoC驗證的周期。在結果分析上,通過代碼覆蓋率和功能覆蓋率的結合,保證驗證的進度和質量。通過與傳統驗證平臺的對比,結果表明,UVM驗證平臺在驗證效率上遠遠高于傳統驗證平臺。
【關鍵詞】通用驗證方法學;SoC;功能驗證;驗證平臺
隨著SoC芯片集成度和復雜度的不斷提升,SoC基帶芯片研發的驗證工作量成倍增加[1]。然而,市場是無法接受芯片的研制周期成倍增加的,因此,需要針對占據SoC基帶芯片設計大量時間的驗證工作進行分析,研究更為高效的基帶芯片驗證方法,縮短芯片的研制周期以滿足市場需求。
UVM驗證方法學是一套具有強大功能的驗證方法學,它吸取了包括AVM、OVM以及VMM在內的眾多驗證方法學的精華,代表著驗證技術的最新進展[2]。使用 UVM 驗證方法學搭建驗證平臺能極大地提高驗證的完備性和效率,滿足芯片設計的時間和性能要求。
本文深入研究了UVM,并基于UVM的基礎架構,使用SystemVerilog驗證語言[3]搭建了一套系統級驗證平臺,對一款基帶處理芯片中的APB[4]子系統進行功能驗證,并與傳統驗證方法進行對比,闡述UVM驗證方法學在實現高效可重用的SoC功能驗證時的獨特優勢。
面對SoC驗證難度的持續提升,傳統的驗證方法越來越難以滿足驗證的需求,大家開始探尋抽象層次更高的驗證語言和性能更完善的驗證方法[5]。UVM是基于SystemVerilog語言開發的一個庫[6],而SystemVerilog最重要的一個特性就是引入了類的概念,這使得它具有了面向對象編程的特點,UVM也就由一個個這樣的類組合而成。UVM庫中包括三種類型的類[7]:uvm_components、uvm_objects和uvm_transactions。一個實際的驗證平臺就由擴展自uvm_components的基本組件類構成,包括uvm_driver、uvm_seqencer、uvm_monitor、uvm_agent、uvm_scoreboard、uvm_env、uvm_test等。
圖1給出了一個典型的UVM驗證平臺的基本架構。在這個驗證平臺中,有兩個agent,i_agt配置為active模式,負責驅動和監控總線;o_agt配置為passive模式,只負責監控總線,沒有驅動功能。sequence產生隨機的激勵transaction并送給sequencer,sequencer有一個仲裁機制判斷并決定何時將該transaction傳給driver,driver在得到transaction后就將其驅動到DUT接口上,同時,monitor從DUT接口收集輸入數據并傳給參考模型用以產生期望值。在另一側,monitor收集DUT的輸出并發給計分板scoreboard,計分板完成數據的自動化比對。

圖1 典型UVM驗證平臺架構
本次驗證的對象是一款通用基帶處理芯片中的APB子系統,包含APB總線及其上掛載的SPI、GPIO和兩個UART模塊,以及一些時鐘和復位模塊。圖2所示為本次驗證對象的框圖。在該子系統中,AXI-APB轉換橋接收來自AXI總線的輸入,并將其轉化成APB格式的數據送給APB,APB根據不同的地址將數據發送到不同的模塊,這些模塊按照協議對輸入數據進行處理,對APB進行回應或者將處理結果輸出。

圖2 APB子系統框圖
3.1 UVM模塊級驗證平臺
本次驗證從模塊級驗證出發,再將各個模塊驗證組件重用到子系統,完成子系統的驗證。
圖3是基于UVM的UART模塊級驗證環境,分為三個部分:APB_UVC、UART_UVC和CONTROL_UVC。APB_UVC實現APB總線的功能,配置并控制UART,可對UART進行數據的讀寫操作;UART_UVC充當與UART通信的設備,可以接收來自UART的數據,也可以往UART發送數據;CONTROL_UVC對APB_UVC和UART_UVC進行管理,提供激勵的入口,配置驗證環境,完成數據的自動化檢查,覆蓋率收集,以及提供寄存器模型。
SPI和GPIO模塊的驗證平臺與該平臺類似,只需替換相應部分即可,這本身也是UVM模塊級重用的一個體現。
3.2 UVM子系統驗證平臺
完成模塊級的驗證后,就可以將所有模塊集成到子系統驗證環境中。針對本次驗證的系統,模塊級驗證完成后將產生一些可重用的驗證組件APB_UVC、UART_UVC、SPI_UVC、GPIO_UVC。再根據UVM結構和AXI總線協議[8]設計一個AXI_UVC,即可完成目標子系統驗證環境的搭建,如圖4所示。

圖3 UART模塊及驗證平臺

圖4 APB子系統驗證平臺
這個平臺重用了模塊級驗證平臺中的APB總線驗證模型和各模塊的驗證模型,將控制功能移到模塊外圍,在系統級進行驗證流程的控制。CONTROL_UVC實現的功能大致與模塊級相同,但復雜度卻要大得多,如計分板部分,模塊級只需實現自己模塊的數據對比,而系統級的計分板針對的是整個系統,不同模塊數據來源、格式都可能會不一樣,所以在這個計分板模型中需要包含各個模塊的計分板小模型。有的模塊如UART不需要參考模型,而有的模塊需要參考模型,在計分板中都要區別對待。
根據系統功能需求編寫測試用例對驗證平臺進行測試,待所有測試用例全部運行完成且沒有錯誤信息后,查看覆蓋率信息,確定驗證的進度和性能。由于該子系統中各模塊沒有太多的交集,所以在驗證的各個環節上都是獨立的,包括覆蓋率的收集、結果的分析。圖5為UART模塊的覆蓋率信息,其中行覆蓋率達到了97.68%,功能覆蓋率達到了100%,表明所有功能都已覆蓋到了,而且代碼覆蓋也達到了要求,說明對UART的驗證已完成。SPI和GPIO的功能覆蓋率也均達到了100%,代碼覆蓋率也都在96%以上,符合驗證的要求。

圖5 驗證覆蓋率信息
與傳統驗證平臺相比,UVM驗證平臺在激勵的產生,結果的自動化檢查以及運行的耗時上都要更加優越。圖6是UVM平臺與傳統驗證平臺運行單個測試用例的時間對比,可以看出,UVM平臺的耗時不足傳統平臺的1/6。由此可見,當所有測試用例都測試完成,UVM驗證平臺在效率上將遠遠優于傳統驗證平臺。

圖6 UVM驗證平臺與傳統驗證平臺驗證效率對比
本文深入研究了UVM驗證方法學的各種機制,利用SystemVerilog驗證語言的特性基于UVM的架構搭建了一套系統級驗證平臺,對APB子系統進行了功能驗證。通過對UVM中各種類的繼承,建立了一個高度可重用的APB總線驗證模型和UART、SPI、GPIO驗證組件,并通過子系統集成證明了其可重用性。通過代碼覆蓋率和功能覆蓋率的收集,保證了驗證的質量。實驗結果證明了UVM驗證平臺的高效性。這個平臺真正實現了高效可重用的功能驗證,為搭建旨在縮短SoC驗證周期的系統級驗證平臺提供了參考的范例。
參考文獻
[1]呂毓達.基于UVM的可重用SoC功能驗證環境[J].半導體技術,2015,40(3):234-238.
[2]李俊.基于UVM的視頻圖像2D轉3D模塊的驗證[D].中國海洋大學,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系統驗證方法研究[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總線驗證平臺設計與實現[J].計算機工程與設計,2008,29(7): 1713-1715.