可重定位的基于事務(wù)的系統(tǒng)級驗證
功能驗證已經(jīng)成為開發(fā)SoC的主要問題。隨著一些復(fù)雜SoC的規(guī)模超過兩千萬門,以及對開發(fā)和集成嵌入式軟件的需求持續(xù)增加,軟件模擬器已經(jīng)力所不及。在設(shè)計過程需要幾百萬個時鐘周期來充分測試和驗證軟件功能的情況下,軟件仿真器的性能下降到1-5Hz。按照這種速率,軟件調(diào)試需要幾年的時間。如果設(shè)計項目組不能夠投入這么多的時間,則意味著SoC芯片制造出來之后,在加電后的幾秒內(nèi)就會出現(xiàn)錯誤。
基于事務(wù)的驗證允許代表單個或者多個時鐘周期的大量數(shù)據(jù)不經(jīng)多次調(diào)用而直接進(jìn)入模擬器,極大地提高了模擬性能。到目前為止,驗證環(huán)境都是基于事件的,也就是說必須在每個時鐘周期甚至子周期提供驗證數(shù)據(jù)。大多數(shù)硬件驗證語言,如Synopsys的Vera或Verisity的e語言都是這樣工作的。而事務(wù)則可以處理結(jié)構(gòu)化可視數(shù)據(jù)類型。例如,一個以太網(wǎng)事務(wù)可以處理一個完整的以太網(wǎng)數(shù)據(jù)包;一個PCI DMA總線事務(wù)可以處理一個完整的突發(fā)傳輸。
仿真器外部接口的增強(qiáng)提高了驗證通信接口的性能。例如,仿真器的DirectC調(diào)用使驗證性能提高了大約一個數(shù)量級。然而這種仿真性能和驗證完整性的提高,僅僅把軟件調(diào)試周期減少到一年以內(nèi),仍然存在難以容忍的芯片設(shè)計質(zhì)量和上市時間的矛盾。低成本的服務(wù)器集群也不是理想的解決方案,因為它們只能解決多個小型測試的回歸問題,而不能加速像軟件集成這樣的線性過程。因此,對于大多數(shù)設(shè)計團(tuán)隊,真正的應(yīng)用開發(fā)和調(diào)試過程只有在拿到硅芯片之后才能開始。
仿真
多年來,仿真和模擬加速硬件系統(tǒng)已經(jīng)增強(qiáng)了模擬性能。這些硬件系統(tǒng)提供的性能加速從模擬加速器的幾十kHz到Aptix系統(tǒng)的幾十MHz。例如,運(yùn)行在Aptix System Explore上的設(shè)計能夠以實時或者接近于實時的速度運(yùn)行,與實際操作環(huán)境相互作用。
過去幾年開發(fā)的基于事務(wù)的系統(tǒng)級驗證技術(shù)能夠極大地影響SoC驗證的效率。例如,Zaiq的方法包含一個事務(wù)處理器(transactor)結(jié)構(gòu),可以無縫地重新定位仿真和模擬?,F(xiàn)在Aptix的最新產(chǎn)品是Aptix SoC Validation Lab。
Zaiq基于事務(wù)的驗證技術(shù)將處理器定義為HDL總線功能模型(BFM)和C語言間的接口部件。C語言一側(cè)包括測試控制、數(shù)據(jù)產(chǎn)生與檢查,以及C/C++抽象層,后者執(zhí)行數(shù)據(jù)操作,如分段與重組、打包和協(xié)議相關(guān)的功能。(見圖1)。
這種面向事務(wù)的定位,加上平臺庫所提供的數(shù)據(jù)打包能力具有多個優(yōu)點(diǎn)。首先,它為測試者提供了一個結(jié)構(gòu)化的視角和簡單的應(yīng)用程序接口(API)。這可以把測試者從底層總線協(xié)議的細(xì)節(jié)中解放出來,只關(guān)注于產(chǎn)生完成測試目標(biāo)所需要的條件,從而產(chǎn)生更有效率的測試代碼編寫和更高的測試質(zhì)量。其次,它提供可重用性,即通過改變底層的BFM模型,為一個接口所寫的測試可以運(yùn)行在另外一個不同的接口上。最后,它可以提高性能?;谑聞?wù)的傳輸層把C語言一側(cè)的事務(wù)請求映射到HDL寄存器,控制BFM中的狀態(tài)機(jī)。相對于發(fā)送周期性的信號請求,或者單個信號的編程語言接口(PLI)請求,使用事務(wù)傳輸層具有巨大的速度優(yōu)勢。在很多情況下,性能的提升超過幾個數(shù)量級。
傳輸層的TestBenchPlus (TBP)軟件支持線程,這樣可以啟動多個并發(fā)任務(wù)。這一特性加強(qiáng)了對被測試器件(DUT)的控制,更接近于仿真真實的系統(tǒng)級性能。
另外,Zaiq提供了一個應(yīng)用型平臺庫和環(huán)境工具,以方便串行協(xié)議數(shù)據(jù)的產(chǎn)生與檢查、回歸配置管理、性能監(jiān)控和控制功能、以及圖形和命令行用戶界面的使用。
基于事務(wù)的仿真
目前已有兩項技術(shù),基于事務(wù)的仿真和系統(tǒng)級仿真,問題是如何無縫地提供基于事務(wù)的仿真系統(tǒng)。在Aptix SoC Validation Lab以及其他與協(xié)同仿真相關(guān)產(chǎn)品的基礎(chǔ)上,Zaiq和Aptix已達(dá)成技術(shù)和市場合作關(guān)系來組合這兩項關(guān)鍵技術(shù),新產(chǎn)品稱為PREP Messenger。對PREP Messenger的要求如下:
?在系統(tǒng)級驗證方面提供已被Zaiq證明是成功的豐富測試激勵方式,包括復(fù)雜數(shù)據(jù)類型和協(xié)議的產(chǎn)生,自檢查測試和隨機(jī)激勵。
?利用Aptix在硬件仿真方面的專業(yè)經(jīng)驗,達(dá)到相對于軟件仿真器的幾個數(shù)量級的性能提高。
?在不需要修改、轉(zhuǎn)換步驟,或者維持多組代碼的基礎(chǔ)上,允許相同的測試和BFM模型無縫地應(yīng)用于模擬和仿真。
Zaiq和Aptix認(rèn)識到讓PREP Messenger使用Accelera標(biāo)準(zhǔn)協(xié)同仿真API:建模接口(SCE-MI)的優(yōu)勢,該標(biāo)準(zhǔn)對基于事務(wù)的協(xié)同仿真提供了標(biāo)準(zhǔn)定義。SCE-MI標(biāo)準(zhǔn)定義了與硬件信息端口通信的軟件代理,結(jié)構(gòu)上與Zaiq的PREP環(huán)境相匹配。SCE-MI允許在軟件代理和HDL信息端口之間有多個虛擬通信通道。在事務(wù)架構(gòu)的硬件和軟件兩方面都符合工業(yè)標(biāo)準(zhǔn)接口,再加上相對于專用接口的性能優(yōu)勢,PREP Messenger可以保護(hù)開發(fā)者在驗證IP上的努力。Aptix/Zaiq的SCI-MI基礎(chǔ)結(jié)構(gòu)可由SCE-MI Tranporte獨(dú)立提供,并包含在PREP Messenger標(biāo)準(zhǔn)協(xié)同仿真?zhèn)鬏攲又小?BR>提供與SCE-MI兼容的基于事務(wù)的仿真涉及如下開發(fā)內(nèi)容:
1. 利用Aptix Expeditor高速物理接口實現(xiàn)SCE-MI通信基礎(chǔ)結(jié)構(gòu)。
2. 支持通過SCE-MI基礎(chǔ)結(jié)構(gòu)與Aptix System Explore平臺的通信,或者通過工業(yè)標(biāo)準(zhǔn)接口與軟件仿真器通信,同時對測試編寫者保持相同的系統(tǒng)驗證API。
3. 開發(fā)一個可綜合的BFM結(jié)構(gòu),包括與SCE-MI信息端口的標(biāo)準(zhǔn)接口,在不需要改變BFM的情況下,按照HDL進(jìn)行軟件模擬,然后綜合成硬件仿真。
目的是既不改變高層基礎(chǔ)結(jié)構(gòu),也不改變測試代碼,從而當(dāng)HDL和測試平臺的HDL部分(SCE-MI BFM)被映射進(jìn)仿真器時,測試環(huán)境的其它部分保持不變。這種可重定位的概念意味著測試環(huán)境可以透明、無縫地從純軟件模擬轉(zhuǎn)換到高速硬件仿真。用這種方法,運(yùn)行在最新PC平臺的Linux系統(tǒng)下,可以實現(xiàn)超過軟件模擬器20000倍的性能提高。
對于每個可綜合的BFM模型都有一個對應(yīng)的C/C++側(cè)的函數(shù)。這個C語言側(cè)的處理器負(fù)責(zé)對高層協(xié)議建模和驗證,從而為測試編寫者提供了一個簡單的類似于加載/存儲的API。C語言側(cè)的多個處理器都作為一個單獨(dú)的插入執(zhí)行,在模擬和仿真中插入控制和切換都同樣由傳輸層處理,從而提供了硬件系統(tǒng)測試中所需要的并行操作。
SoC實例
為了展示PREP Messenger的強(qiáng)大能力,看一下假設(shè)的網(wǎng)絡(luò)SoC(NSoC),該實例實現(xiàn)了一個簡單的SOHO完整路由芯片。圖2所示的網(wǎng)絡(luò)SoC包含兩個主要部分。第一部分包含ARM 926EJ-S內(nèi)核,用于芯片的初始化、配置路由表和數(shù)據(jù)類型,并且實現(xiàn)USB2.0的用戶接口。該芯片中的ARM系統(tǒng)是ARM PrimeXsys平臺的一個子集。芯片的另一部分實現(xiàn)網(wǎng)絡(luò)路由引擎,通過一個雙端口的數(shù)據(jù)包存儲器分別與嵌入式微處理器和ARM AMBA-AHB總線相連。芯片的輸入側(cè)能夠把4個支持多協(xié)議的輸入端口與2個支持多協(xié)議的輸出端口相連。
NSoC的系統(tǒng)級測試集中在兩個方面:首先是網(wǎng)絡(luò)子系統(tǒng)的數(shù)據(jù)處理和協(xié)議檢查;其次是網(wǎng)絡(luò)子系統(tǒng)與用來配置和監(jiān)視系統(tǒng)的ARM代碼的兼容性。
在NSoC的驗證環(huán)境中,C語言測試組產(chǎn)生網(wǎng)絡(luò)子系統(tǒng)的測試條件。該測試條件詳細(xì)說明應(yīng)用于NSoC的分組數(shù)據(jù)格式和協(xié)議:長度、載荷、報頭、數(shù)據(jù)包的間隔時間,以及錯誤情況。該條件即包括用來滿足特定事件覆蓋的直接測試用例,以及基于直接測試用來覆蓋測試編寫者沒有詳細(xì)描述情況的隨機(jī)激勵。
當(dāng)今的數(shù)據(jù)、計算機(jī)和通信系統(tǒng)包含迅速增加的協(xié)議、格式和復(fù)雜層次。PREP平臺庫提供這種功能的可重用性,并且把這種復(fù)雜性跟測試編寫者、BFM模型編寫者以及SoC芯片設(shè)計者隔離開。數(shù)據(jù)產(chǎn)生庫提供大多數(shù)標(biāo)準(zhǔn)數(shù)據(jù)類型和協(xié)議,如以太網(wǎng)、Utopia接口、ATM、AMBA-AHB、AXI和PCIX。軟件計分板系統(tǒng)跟蹤加到系統(tǒng)上的激勵,并且自動檢查結(jié)果。測試編寫者可以完全描述數(shù)據(jù)類型來實現(xiàn)直接測試用例,或者允許平臺庫隨機(jī)產(chǎn)生數(shù)據(jù)類型的部分或者所有域?qū)ο到y(tǒng)進(jìn)行實驗。
BFM模型對每個接口或者協(xié)議產(chǎn)生適當(dāng)?shù)男盘柡椭芷?。它們產(chǎn)生總線周期,發(fā)送和接收數(shù)據(jù),監(jiān)視錯誤。它們可以連接到一個標(biāo)準(zhǔn)接口或者專用接口。
傳輸層通過一個事務(wù)API進(jìn)行訪問,把適當(dāng)?shù)氖聞?wù)請求發(fā)送給BFM模型。傳輸層使用標(biāo)準(zhǔn)的Verilog PLI或VHDL FLI接口作軟件模擬,使用SCE-MI傳輸器API作協(xié)同仿真。
每個事務(wù)處理器含一個帶有與SCE-MI硬件側(cè)信息端口接口的可綜合BFM核;與之相對應(yīng)的C語言側(cè)函數(shù)來作協(xié)議檢查、錯誤處理、排隊和SCE-MI功能測試有關(guān)的處理,并且具有和SCE-MI軟件側(cè)信息端口代理的接口,以及一個可選的平臺庫的API。
Zaiq提供SYSTEMware驗證元件庫(SVC)。SVC是由Zaiq支持和驗證過的成熟的事務(wù)處理器,用來支持行業(yè)標(biāo)準(zhǔn)接口。SVC由可綜合的HDL編寫的BFM組成,與SCE-MI API兼容。它們有一個對應(yīng)運(yùn)行在自己線程內(nèi)的C函數(shù),來實現(xiàn)高層抽象,并且能夠無縫地重定位于模擬或仿真。
為了產(chǎn)生符合實際的測試,考慮單個分組從測試組1經(jīng)過該NSoC重新回到測試的流程。
1. 測試指示平臺庫產(chǎn)生一個隨機(jī)的分組負(fù)荷。
2. 平臺庫構(gòu)成分組,把它送給端口1 C語言側(cè)的Xactor“IP-1”。
3. Xactor“IP-1”通過傳輸層把分組送給SCE-MI兼容的BFM模型“IP-1”,后者接著緩存數(shù)據(jù),在被測芯片的時鐘控制下,把分組發(fā)送給被測芯片。
4. 分組流經(jīng)整個NSoC,通過輸出端口0的BFM模型“OP-0”和Xactor“OP-0”返回測試組1,由測試代碼檢驗正確性。
用于仿真的可重定位NSoC
Aptix Design Pilot可把所有的HDL映射到System Explore中的多個FPGA中。測試平臺中的BFM模型是和SCE-MI兼容并且可綜合的,它們也同樣被映射到System Explorer中的FPGA中。傳輸層使用SCE-MI傳輸器和Aptix Expeditor作為從C語言一側(cè)移動分組和控制數(shù)據(jù)的高速鏈路。由SCE-MI傳輸器完成多個通信通道的處理,它在Expeditor的超高速物理鏈路上透明地多路傳輸數(shù)據(jù)。對每個Accellera標(biāo)準(zhǔn),SCE-MI傳輸器同樣支持時鐘管理和控制。
從協(xié)同模擬到協(xié)同仿真
系統(tǒng)級測試的另一個重要方面是專用邏輯(如該例中的網(wǎng)絡(luò)子系統(tǒng)部分)與嵌入式處理器硬件和軟件的相互作用。這種相互作用必須被測試到,以保證硬件的正確性,并且加速硬件/軟件的集成。
系統(tǒng)測試通過一系列的讀寫操作來啟動和配置網(wǎng)絡(luò)子系統(tǒng)。這些讀寫操作是由系統(tǒng)級測試發(fā)起的,表示為嵌入式處理器在啟動和芯片工作期間的寄存器配置動作。
測試序列詳細(xì)描述傳輸層在AHB SVC-BFM模型(SCE-MI兼容的SYSTEMware驗證部分)上的讀寫事務(wù)。AHB SVC-BFM模型在模擬或仿真模式下產(chǎn)生ARM AMBA-AHB總線上的總線周期。系統(tǒng)測試檢查適當(dāng)?shù)目偩€周期響應(yīng),驗證總線基本接口、地址映射與寄存器定義。在平臺庫的幫助下,系統(tǒng)測試檢查通過整個芯片的數(shù)據(jù)流。
測試程序通過事務(wù)處理器和BFM模型,可以從所有關(guān)鍵的系統(tǒng)級的有利位置來控制和觀察SoC芯片設(shè)計:即每個SoC芯片的主要I/O接口,及芯片內(nèi)部的主要系統(tǒng)總線。因為測試是在事務(wù)的抽象級編寫的,因此測試代碼可以比開發(fā)者所需要關(guān)注的每個引腳的每個時鐘周期更早開發(fā)出來。在產(chǎn)品的早期階段開發(fā)的測試代碼可以在以后的所有階段使用。這些因素產(chǎn)生了一個非常強(qiáng)大和高效率的系統(tǒng)驗證環(huán)境。
在測試完軟件接口、寄存器定義和初始化順序后,協(xié)同模擬可以接著完成軟件調(diào)試。這時,整個應(yīng)用軟件編譯到實際的目標(biāo)處理器上(如ARM 926),目標(biāo)代碼運(yùn)行在ARM Developer Suite(ADS)上。
包含在ADS中的ARMulator指令集仿真器(ISS)捕獲對AHB總線地址的讀寫操作。傳輸層把捕獲的讀和寫送給AHB BFM模型;在模擬或仿真中產(chǎn)生總線周期;響應(yīng)并被返回給ISS。
ADS提供一個高效和高度精確的軟件開發(fā)環(huán)境用來生成和調(diào)試應(yīng)用軟件。PREP環(huán)境、事務(wù)傳輸層、BFM模型與HDL設(shè)計可以精確評估硬件和軟件之間的相互作用。系統(tǒng)級測試和平臺庫產(chǎn)生大量的NSoC激勵,仔細(xì)調(diào)試錯誤或硬件和軟件之間的算法。
PREP Messenger和System Explorer模擬平臺的事務(wù)基礎(chǔ)比軟件模擬器快幾個數(shù)量級,允許調(diào)試整個軟件包,而不僅僅是代碼片斷。
在與ISS協(xié)同模擬后,處理器內(nèi)核可以放置在仿真器硬件中。編譯后的代碼存放在EPROM或存儲器中。處理器內(nèi)核可以實現(xiàn)為“硬IP”,如封裝后的測試芯片,或者“軟宏”,映射到System Explorer FPGA中。處理器完全以硬件執(zhí)行代碼,以獲取最大性能,同時允許來自系統(tǒng)測試的豐富激勵、流量和錯誤情況。大多數(shù)處理器(包括ARM的)提供一個IEEE JTAG或其他的電路內(nèi)仿真器(ICE)接口,用來加載存儲器,檢查寄存器和控制程序運(yùn)行。
在驗證的最后階段,SoC原型的部分或者全部主要的接口都可以連接到實際的激勵源上,從而把SoC驗證從直接和隨機(jī)測試擴(kuò)展到可能還沒有覆蓋到的兼容性、互通性和集成效果測試。
結(jié)語
在單個芯片上,集成電路門數(shù)的持續(xù)增加和容納整個系統(tǒng)的能力,包括一個或者多個軟件控制的處理器,對驗證整個芯片功能的傳統(tǒng)模擬方法產(chǎn)生了持續(xù)增加的壓力。大多數(shù)SoC芯片是多標(biāo)準(zhǔn),它們支持多個標(biāo)準(zhǔn)的內(nèi)部或外部接口標(biāo)準(zhǔn),實現(xiàn)了第三方的IP核。確保正確地集成定制和可重用的IP核,并且能夠被編程執(zhí)行特定的功能,同時符合行業(yè)接口標(biāo)準(zhǔn)是一個嚴(yán)峻的驗證挑戰(zhàn)。對于長時間的線性過程,例如引導(dǎo)一個操作系統(tǒng),模擬已超出了其能力范圍。
把系統(tǒng)級測試平臺移到抽象的事務(wù)級,除性能之外,比引腳級的事件驅(qū)動或精確周期的模擬有更多的優(yōu)勢。而且,使用成熟的驗證IP產(chǎn)生測試程序可以用在項目的多個階段,提高測試質(zhì)量。成熟的驗證IP對于行業(yè)標(biāo)準(zhǔn)接口更有吸引力,因為供應(yīng)商可以把它們的專業(yè)知識運(yùn)用在IP中,由多個客戶來支付IP的開發(fā)費(fèi)用。
最后,綜合被測試設(shè)計和測試平臺的所有精確周期部分,在硬件仿真環(huán)境下得到網(wǎng)表,可以實現(xiàn)相對于軟件模擬3到4個數(shù)量級的性能提升。
使用事務(wù)級的測試平臺,以及Aptix SoC Validation Lab工具,如PREP Messenger,完全可以應(yīng)對幾百萬門SoC芯片的驗證挑戰(zhàn)?!?(曉東譯)
評論