王紀,馮志華
(中國航天科工集團第二研究院706所,北京100854)
SoC多語言協(xié)同驗證平臺技術研究
王紀,馮志華
(中國航天科工集團第二研究院706所,北京100854)
SoC基于IP設計的特點使驗證項目中多語言VIP(Verification IP)協(xié)同驗證的需求不斷增加,給驗證工作帶來了很大的挑戰(zhàn)。為了解決多語言VIP在SoC驗證環(huán)境靈活重用的問題。提出了一種基于開放的多語言構架庫的解決方案,詳述了多語言協(xié)同驗證技術的原理以及驗證平臺的搭建方法,并通過實例驗證了所提方案的有效性和靈活性。
片上系統(tǒng);驗證知識產(chǎn)權核;多語言協(xié)同驗證;重用
隨著高級驗證方法學越來越多的成功應用于實際的SoC驗證項目中[1],產(chǎn)生了大量由不同語言、不同驗證方法學編寫的可重用組件;而且由于IP來自不同的EDA廠商,相應的驗證IP也是由不同的廠商提供。僅在SoC驗證環(huán)境中重用由同一種語言和驗證方法學實現(xiàn)的組件或VIP,已經(jīng)不能滿足日益增長的SoC驗證需求[2]。如何靈活的重用多語言驗證組件、搭建SoC多語言協(xié)同驗證平臺已然成為熱點。
現(xiàn)有的多語言的解決方案分為兩種:一種是基于SystemVerilog DPI(Direct Programming Interface)直接引用外部語言程序的方法[3];另一種是使用EDA廠商提供的多語言庫的方法[4]。前者驗證平臺無法對外部語言程序實現(xiàn)配置,靈活性差[5];后者則存在當前使用的多語言庫針對語言種類單一,不能跨仿真器平臺的缺點[6]。
文中針對當前多語言協(xié)同驗證解決方案存在的不靈活,支持的語言種類單一等特點,基于一種新的解決多語言問題的開源庫——UVM-ML OA(Universal Verification Methodology-Multi-Language Open Architecture library),詳述了多語言協(xié)同驗證的原理,并描述了搭建SoC多語言協(xié)同驗證平臺的過程,以一個具體的實例驗證了這種方法在靈活性和可重用方面的優(yōu)點。
UVM-ML OA庫是由AMD和Cadence公司聯(lián)合推出[7],致力于解決多語言驗證組件的快速整合與重用。它提供的一些方法和工具能夠將不同語言的驗證組件整合到一個大的驗證環(huán)境中。抽象驗證組件具體實現(xiàn)的語言與方法學,使多語言組件在同一驗證環(huán)境實現(xiàn)無差別的通信和配置。UVMML OA的基本結構如圖1所示,它由開源的基類和多種構架的多語言適配層組成。例如,SV(SystemVerilog)適配層,SC(SystemC)適配層等。
圖1 UVM-ML OA基本結構Fig.1UVM-ML OA basic structure
構架是指由同一種語言或驗證方法學實現(xiàn)的驗證組件的集合。構架可能由硬件驗證語言(SystemVerilog)、建模語言(SystemC)或一般的編程語言(C/C++)實現(xiàn)。不同的構架也可以由同一語言實現(xiàn):例如,UVM和VMM都是由SystemVerilog編寫。
基類是兩個或更多構架的連接路由,是整個星形拓撲結構的中心點。提供不同組件間控制和數(shù)據(jù)通訊的API(Application Programming Interface)。這種CS(Client-Server)結構能夠忽略具體的方法學和語言的實現(xiàn)細節(jié),協(xié)同不同構架間的工作。
適配層是基類和構架的連接層,提供與其對應構架連接到基類所必須的的API接口。
UVM-ML OA擁有包括多構架結構、事務級通信、分階段機制、跨構架配置機制等特征,使其能夠很好的解決實際應用中多語言的難題,靈活的搭建多語言協(xié)同驗證平臺[8]。
多語言協(xié)同驗證平臺由多種構架的VIP組成。驗證平臺可能有一個或很多邏輯頂層,每一個頂層都是由不同構架子組件組成的樹形結構。每一棵樹都可能包含其他構架的子樹。如圖2所示,構架1的A組件是整個多語言協(xié)同驗證平臺的頂層。它除了實例化了A1、A2兩個同一構架下的子組件外,還例化了一個構架2下的子組件B。
圖2 不同構架下的統(tǒng)一樹形結構Fig.2Unified hierarchy in different frameworks
搭建多語言協(xié)同驗證平臺首先要將不同構架的子組件實例到驗證平臺中,使整個驗證平臺形成一個統(tǒng)一的樹形結構。結構建立后,為了實現(xiàn)整個平臺的數(shù)據(jù)流動,不同構架的組件需要建立事務級的通信。最后建立起跨構架的可配置機制,增強多語言協(xié)同驗證平臺的靈活性。
2.1多構架組件的整合
UVM-ML OA通過基類來實現(xiàn)父組件和外部子組件的連接,確保平臺間數(shù)據(jù)和控制請求被正確傳遞。每一個父組件通過各自構架適配層的API與基類的API相連;然后基類再與子組件的相應構架適配層的API相連。這樣,經(jīng)由代理父節(jié)點和代理子節(jié)點建立起了不同構架父組件和子組件的抽象連接。如圖3所示,還以構架1的A組件為例:在構架1的范疇內(nèi),A正常的實例化了A1、A2兩個組件;而屬于構架2的B子組件則如圖中虛線所示,經(jīng)由各自構架的適配層和基類來完成在A中的實例化,完成多構架組件的整合。
圖3 組件的跨構架連接Fig.3Parent child relationship maintained through the backplane
要實例化一個不同構架的子組件,有必要正確的指定外部組件的構架類型和名稱,以及實例化后的實例化名。以SV適配層的API實例化外部構架組件為例:使用下面的方法在SV環(huán)境中實例化其他構架的組件。
其中,參數(shù)target_frmw_indicator是待實例化組件的構架類型;參數(shù)component_type_name是待實例化組件的頂層模塊名;參數(shù)instance_name為組件的實例化名;參數(shù)parent指定當前組件的父節(jié)點。
2.2事物級連接的建立
多構架組件的通訊基于TLM(Transaction Level Modeling)接口[9],UVM-ML OA的基類提供了指定的多語言接口庫,它維護著平臺運行時事物級交易所需的必要信息。多語言平臺中的TLM接口要跨構架實現(xiàn)通信,有兩個步驟:首先TLM的端口或套接字必須在基類中注冊;注冊后將接口綁定,不同架構組件間便可以經(jīng)由相應的適配層和基類實現(xiàn)數(shù)據(jù)交易。
2.2.1注冊
注冊的多語言端口會在相應的適配層中產(chǎn)生與基類進行數(shù)據(jù)流動的通道,適配層提供了相應的底層結構支持不同構架與基類的連接。還以SystemVerilog構架的API注冊TLM1端口和TLM2套接字為例。使用SV適配層的register方法實現(xiàn)注冊功能,register方法定義為:
static function void register(uvm_port_base#(uvm_tlm_if#(TRAN_T,P))sckt);
其中參數(shù)sckt代表被注冊接口的全路徑名稱。
2.2.2綁定
接口被注冊后建立起了適配層與基類進行數(shù)據(jù)流動的通道。綁定則是在不同構架的適配層與適配層、組件與組件之間建立連接。接口在基類中注冊后,接著進行接口之間的綁定。綁定時,需要為基類提供被綁定的兩個接口的全路徑名稱,基類會檢測兩個接口的合法性,然后將兩個接口的連接信息加入它的內(nèi)部數(shù)據(jù)庫。以SC構架的API綁定TLM1端口和TLM2套接字為例,使用uvm_ml_connect方法實現(xiàn)綁定。uvm_ml_connect方法的定義為:
其中,port_name是指port端口的全路徑名,如sc.env. port;export_name是export端口的全路徑名,如sc_env. export.name();map_transaction默認為true。
2.3驗證平臺的配置
靈活的跨架構配置機制是UVM-ML OA解決方案的一大特點。配置機制用來配置驗證平臺的眾多參數(shù),在不同構架和層次的組件間傳遞數(shù)據(jù),增加平臺的靈活性。配置機制是分層次的,在平臺的樹形結構中較高層次組件的配置信息會覆蓋低層次組件的配置信息。配置使用間接的方式:配置發(fā)起組件將配置數(shù)據(jù)傳遞到多語言基類中;被配置的外部構架組件再從基類中獲取配置數(shù)據(jù)。
在多語言協(xié)同驗證平臺中,配置和獲取數(shù)據(jù)總是成對出現(xiàn)的。例如,在某個頂層組件中做配置操作,那么在平臺的驅動器組件就要做相應的獲取操作。
2.3.1配置
一般來講,驗證平臺中每種構架的組件只處理本構架內(nèi)的配置操作。但在一個多語言驗證環(huán)境中,不同構架的組件在整合到一個平臺并建立事物級連接后,配置數(shù)據(jù)也能夠經(jīng)由基類的API傳播到其他語言的構架中。
以在SV構架的組件配置其他子組件為例,使用uvm_config_*::set(this,inst_name,field_name,value)函數(shù)來設置配置值。其中,inst_name參數(shù)是被配置子組件的名稱;field_name參數(shù)是子組件內(nèi)被配置對象的名稱;value參數(shù)代表了具體配置值。設置的配置值會在子組件的bulid階段傳遞給子組件。UVM-ML OA支持3種數(shù)據(jù)類型的配置:使用“uvm_config_int”方法配置整型值;使用“uvm_config_string”方法配置字符串;使用“uvm_config_objects”方法配置對象。
2.3.2獲取
在平臺運行期間,配置數(shù)據(jù)被傳遞基類中,相應的目標組件要有對應的接收操作從基類中獲取配置數(shù)據(jù)。以e構架組件中獲取配置值為例,使用get_config_*(field_name,value)方法獲取配置值。其中,參數(shù)field_name是組件內(nèi)的某一個被配置過的變量;value參數(shù)是配置值的存儲位置。與set方法類似,get方法也支持3種數(shù)據(jù)類型:使用“get_config_int”方法獲取整型值;使用“get_config_string”方法獲取字符串;使用“get_config_objects”方法獲取對象。
上一節(jié)中,介紹了UVM-ML OA庫處理多語言協(xié)同驗證的原理,本節(jié)將以一個SoC多語言協(xié)同驗證項目中的UART模塊為具體實例,說明SoC多語言協(xié)同驗證平臺的實現(xiàn)方案,整個平臺的結構如圖4所示。
圖4 多語言驗證平臺結構Fig.4Multi-language verification platform structure
作為整個SoC驗證項目的一部分,UART模塊經(jīng)由橋接器集成到整個SoC系統(tǒng)中。針對項目組手中擁有由廠商提供的SV的APB總線驗證IP和先前的驗證項目中留下的,由e語言實現(xiàn)的UART驗證IP。決定搭建多語言協(xié)同驗證平臺對UART模塊進行驗證。
如上圖所示,搭建多語言協(xié)同驗證平臺的關鍵在于:虛擬序列產(chǎn)生器如何驅動異構組件的數(shù)據(jù)激勵、異構組件的監(jiān)視器如何與平臺建立連接、異構驗證組件在平臺中如何實現(xiàn)無差異的配置。
遵循前面章節(jié)多語言協(xié)同驗證平臺搭建的方法,主要步驟如下:
1)整合異構組件:實例化異構組件到頂層是整個平臺搭建的基礎。將e語言構架組件整合到SV環(huán)境中,需要在SV構架的testbench文件中實例化e構架的頂層文件e_uart_top。這樣就把所有的組件整合到一個統(tǒng)一的樹形結構中,部分代碼如下。
function void build_phase(uvm_phase phase);
super.build_phase(phase);
//建立多語言組件連接節(jié)點
etop=uvm_ml_create_component("e","e_uart_top"," e_uart_top",this);
...
endfunction
2)事物級接口的連接:將不同構架的組件整合到一個統(tǒng)一的結構中后,序列產(chǎn)生器和監(jiān)視器要通過TLM接口與SV架構的驗證頂層建立事物級的連接。
這里通過使用register方法和connect方法建立事物級的連接。以激勵產(chǎn)生器的連接為例,部分代碼如下。
//建立階段
seqr_proxy=ml_sequencer_proxy:type_id:create(" seqr_proxy",this);
...
class my_env extends uvm_component;
...//連接階段
uvm_ml:connect({e_seqr,"b_isocket"},
my_uvc.seqr_proxy.b_target_socket.get_full_name())
…
endclass
3)跨架構配置驗證平臺:配置平臺的參數(shù)可以增加平臺靈活性,動態(tài)的控制平臺的運行。在這個案例中,在頂層配置e構架UART驗證組件的address參數(shù),驗證平臺運行過程中觀察測試結果。部分代碼如下。
//頂層的配置操作
uvm_config_int:set(this,"uvm_test_top.testbench. e_uart_top.e_env.e_seqr","address",'h7f);
super.build_phase(phase);
...
//e構架的序列產(chǎn)生器獲取配置數(shù)據(jù)
unit e_seqr{
keep uvm_config_get(address);
...
}
經(jīng)過上面幾個步驟,完成了SOC驗證項目中UART模塊的多語言協(xié)同驗證平臺的搭建,使用IES仿真后的部分結果如圖5所示。
圖5 仿真結果Fig.5Simulation results
實驗結果表明,UVM-ML OA被成功應用于SoC多語言協(xié)同驗證項目中,對于多語言驗證IP的重用提供了一種有效地解決方案。驗證IP由EDA公司提供,或來自于項目組長期積累的成熟模塊,它們的重用提高了驗證的可靠性和可信度。
文中基于UVM-ML OA呈現(xiàn)了一種全新的SoC多語言協(xié)同驗證的解決方案。詳細講述了多語言協(xié)同驗證的原理,并基于實際案例闡述了解決方案的有效性和靈活性。結果表明UVM-ML OA能有效的應對實際應用中SoC驗證面臨的多語言協(xié)同驗證問題,為驗證人員提供了更可靠、更靈活的多語言驗證解決方案。
[1]王嘉良.SoC可重用驗證平臺研究與開發(fā)[D].上海:東華大學,2011.
[2]Yang X,Niu X,F(xiàn)an J,et al.Mixed-signal System-on-a-Chip(SoC)verification based on SystemVerilog model[C]// System Theory(SSST),2013 45th Southeastern Symposium on.IEEE,2013:17-21.
[3]Aynsley J.SystemVerilog Meets C++:Re-use of Existing C/ C++Models Just Got Easier[C]//Design and Verification Conference&Exhibition(DVCon).San Jose,CA:Accellera,2010:255-262.
[4]Erickson A.Transaction-Level Friending:An Open-Source,Standards-Based Library for Connecting TLM Models in SystemC andSystemVerilog[C]//Design and Verification Conference&Exhibition(DVCon).San Jose,CA:Accellera,2013:321-330
[5]Edelmen R,Glassar M.Inter Language Function Calls BetweenSystemCandSystemVerilog[C]//Designand Verification Conference&Exhibition(DVCon).San Jose,CA:Accellera,2007:143-150.
[6]文良,靳榮利,吳龍勝,等.基于AHB總線接口的可重用性驗證環(huán)境的實現(xiàn)[J].微電子學與計算機,2011,28(7):201-207. WEN L,JIN R,WU L,et al.Building Reused eVC Verification Based on AHB Bus[J].Microelectronics& Computer,2011,28(7):201-207.
[7]M.Guy.UVM-ML Open Architecture-version 1.4.4:Enabling Multi-Language and Multi-Framework Verification[EB/OL].[2014-12-02].http://forums.accellera.org/files/file/65-uvm-mlopen-architecture.
[8]B.Sniderman,V Yankelevich.Multi-Language Verification:SolutionsforRealWorldProblems.[C]//Designand VerificationConference&Exhibition(DVCon).India:Accellera,2014:87-92.
[9]F.Hannes,S.Kishore.Multi-Language Verification:Solutions forRealWorldProblems.[C]//DesignandVerification Conference&Exhibition(DVCon).India:Accellera,2014:63-70.
Research of SoC multi-language co-verification platform technology
WANG Ji,F(xiàn)ENG Zhi-hua
(Institute 706,Second Academy of China Aerospace Science and Industry Corporation,Beijing 100854,China)
The characteristic of SoC based on IP design makes the verification projects increase the demand for multi-language VIP(Verification IP)Co-verification,which has brought great challenges to the verification work.In order to solve the problem of the multi-language VIP be flexible reused in SoC verification environment.Proposes a solution which is based on an open source multi-language Framework Library,detailed multi-language co-verification technology and the method of building the verification platform,and through a example demonstrates the effectiveness and flexibility of the proposed approach.
SoC;VIP;Multi-Language;co-verification;reuse
TN406
A
1674-6236(2015)20-0130-04
2015-01-08稿件編號:201501062
中國人民解放軍總裝備部預研基金(513150502)
王紀(1990—),男,安徽宿州人,碩士研究生。研究方向:嵌入式設計與驗證。