文獻標(biāo)識碼: A
文章編號: 0258-7998(2013)05-0128-04
隨著集成電路制造工藝技術(shù)水平不斷進步,芯片設(shè)計規(guī)模越來越大,,驗證所花費的時間占據(jù)了整個產(chǎn)品設(shè)計周期的70%,,而且隨著設(shè)計復(fù)雜度的提高呈指數(shù)性增加[1]。芯片一次流片的成功率從很大程度上取決于功能驗證是否充分[2],。因此,,驗證已經(jīng)成為制約芯片開發(fā)的瓶頸問題。
傳統(tǒng)的驗證平臺主要依賴驗證人員觀察波形的方法進行驗證,,驗證效率低,,不能滿足當(dāng)今驗證規(guī)模的需求。VMM驗證方法學(xué)[3]的出現(xiàn)極大程度上提高了驗證的效率,,進而出現(xiàn)了一批借鑒VMM驗證方法學(xué)的驗證平臺[4-7],,如參考文獻[4]所設(shè)計的驗證平臺就采用了VMM驗證技術(shù)。但是其設(shè)計的驗證平臺只產(chǎn)生了隨機激勵,,驗證時僅使用隨機激勵很難測試到電路的邊界情況,,而且驗證過程收斂性差。
為了快速定位設(shè)計中的問題及邊界情況,,同時提高驗證效率,,本文擬采用System Verilog語言,根據(jù)VMM驗證方法學(xué)中的分層設(shè)計思想,搭建一個可重用的驗證平臺,,以求同時提供定向測試,、受約束的隨機測試和錯誤激勵測試。
1 平臺框架
驗證平臺可分為4層,即測試層,、建立層,、事務(wù)層和物理層,如圖1所示,。
(1)物理層:包括被測設(shè)計模塊(DUT)集合和電路模型,。
電路模型用來與被測代碼進行比較,以實現(xiàn)自檢驗的驗證,。采用Verilog語言或者System Verilog語言模擬與設(shè)計代碼等價的功能,。
(2)事務(wù)層:包括激勵產(chǎn)生器、監(jiān)視器,、和覆蓋率統(tǒng)計器等,。
激勵產(chǎn)生器的主要功能是驅(qū)動DUT和電路模型的接口信號。本平臺的激勵產(chǎn)生器能夠產(chǎn)生定向測試向量,、錯誤測試向量和受約束的隨機向量,。
監(jiān)視器的主要功能是監(jiān)視DUT和電路模型輸出的信號,并對兩者進行比較,。當(dāng)DUT的輸出信號和電路模型的輸出信號不一致時,,仿真可能被強迫結(jié)束,同時打印出當(dāng)時出錯的時間和出錯的信號名稱及內(nèi)容,。
覆蓋率統(tǒng)計器的主要功能是根據(jù)激勵產(chǎn)生器產(chǎn)生的測試向量,、DUT輸出信號以及覆蓋點的要求統(tǒng)計出電路功能的覆蓋概率。覆蓋點是一種有效的驗證機制[8],,它的編寫根據(jù)具體的測試對象而定,,可以對單個信號進行功能覆蓋率統(tǒng)計,也可以統(tǒng)計多個信號的交叉覆蓋率。
以上介紹了事務(wù)的類型,,根據(jù)不同的測試需求可以創(chuàng)建各種平臺所需的事務(wù),如隨機事務(wù),、各種回調(diào)函數(shù)事務(wù)等,。
(3)建立層:包括驗證框架的建立和電路初始配置。
驗證框架建立的主要功能是利用事務(wù)層的各種事務(wù)構(gòu)建出整個平臺的框架,。包括平臺環(huán)境的配置及參數(shù)的設(shè)定,;激勵產(chǎn)生器和監(jiān)視器的句柄定義和對象聲明;與覆蓋率相關(guān)的回調(diào)函數(shù)類的句柄定義和對象聲明,;激勵產(chǎn)生器和監(jiān)視器與回調(diào)函數(shù)的通信建立,。本平臺還研發(fā)了面向通信交換設(shè)備的配置軟件和專用的圖形界面。
(4)測試層:包括配置文件和測試用例,。
在平臺搭建好之后,,測試層的主要功能是提供定向測試的測試實例和與DUT相關(guān)的一些配置信息。例如對高性能路由器轉(zhuǎn)發(fā)單元進行驗證時,需要通過微機接口對轉(zhuǎn)發(fā)單元進行配置,,不同的配置參數(shù)DUT將會提供不同的功能,。本文設(shè)計開發(fā)了面向定向測試的數(shù)據(jù)塊/包的軟件輔助工具。測試人員可以使用輔助工具來產(chǎn)生所需要的數(shù)據(jù),。
2 通信交換設(shè)備驗證平臺
2.1 交換功能介紹
本文假定所測試的交換設(shè)備具有N個輸入/輸出端口,,這里N通常是2的整數(shù)次冪,考慮到內(nèi)部復(fù)用,,這N個端口可以映射到k組總線,,每m=N/k個端口分時復(fù)用一組總線,k<N,而且通常也是一個2的整數(shù)次冪,。交換設(shè)備可以接受數(shù)據(jù)塊(如ATM cell)或者數(shù)據(jù)包(如IP packet),,根據(jù)數(shù)據(jù)包的類型、包長,、優(yōu)先級,、源端口、目的端口以及其他參數(shù)和等信息,,通過相應(yīng)的流量控機制決定數(shù)據(jù)包或數(shù)據(jù)塊是否被轉(zhuǎn)發(fā)傳送,。交換設(shè)備還要負責(zé)轉(zhuǎn)發(fā)存儲管理,將信息數(shù)據(jù)存入到基于輸出端口的緩存隊列中等待調(diào)度,;同時,,在隊列不空的情況下,根據(jù)網(wǎng)絡(luò)中鏈路的忙/閑狀態(tài),通過一定的調(diào)度算法,,采用分時復(fù)用的方法,,依次從不同的輸出端口調(diào)度出一個數(shù)據(jù)包發(fā)送到網(wǎng)絡(luò)中。
2.2 驗證平臺
驗證平臺需要按照數(shù)據(jù)包/塊格式的要求提供各種不同類型,、包長,、優(yōu)先級、源端口和目的端口,,以及包含其他參數(shù)和配置的網(wǎng)絡(luò)數(shù)據(jù)包,,同時能夠根據(jù)各個端口輸出的數(shù)據(jù)包個數(shù)計算出該端口的速率,以此來產(chǎn)生鏈路的忙/閑狀態(tài),,模擬配置規(guī)定的速率和其他要求,。
根據(jù)層次化結(jié)構(gòu),并結(jié)合交換設(shè)備的功能,,對驗證平臺進行了詳細的設(shè)計,。
(1)物理層:DUT采用Verilog語言編寫,電路模型采用System Verilog編寫,,編寫過程不是設(shè)計的重點,,所以這里不再進行敘述,。
(2)事務(wù)層:根據(jù)功能描述可知,如果要從端口處進行驗證,,本驗證平臺需要N個激勵產(chǎn)生器,用于產(chǎn)生來自N個輸入端口的數(shù)據(jù)包/塊,,還需要N個監(jiān)視器來觀察N個輸出端口的數(shù)據(jù)包/塊。如果要從總線處進行驗證,,則需要k個激勵產(chǎn)生器和k個監(jiān)視器用于監(jiān)視來自電路模型和DUT的k組總線上的輸出數(shù)據(jù),。這里,每個激勵產(chǎn)生器需要模仿m=N/k個端口及其速率,,每個監(jiān)視器需要記錄m個端口的輸出,。同時還需要一個覆蓋率統(tǒng)計器用于統(tǒng)計激勵產(chǎn)生器產(chǎn)生的所有情況下的數(shù)據(jù)包。
①激勵產(chǎn)生器:將激勵產(chǎn)生器定義為一個類,,該類的屬性包含了虛接口的定義,、待發(fā)送包的隊列定義、激勵發(fā)生器編號和回調(diào)函數(shù)隊列定義等,,此外還包含了運行方法,、定向測試、隨機測試,、端口速率配置方法,、定向包入隊方法、定向包驅(qū)動方法,、隨機包產(chǎn)生方法,、隨機包入隊方法、隨即包驅(qū)動方法和丟棄概率計算方法等,。
其中定向測試的測試流程如圖2所示,。
首先調(diào)用端口速率配置方法對所有N個端口的速率進行配置,然后調(diào)用定向包/塊入隊方法,,根據(jù)測試層的測試實例進行定向包/塊的入隊操作,。按照發(fā)送時序要求將定向包依次驅(qū)動到DUT的輸入端口上,直到發(fā)送完所有的定向包,,并觸發(fā)隨機包產(chǎn)生事件,,然后宣告定向測試結(jié)束。測試中在包與包或者塊與塊之間引入了受約束的隨機時延,。隨機時延的范圍采用輔助工具進行配置。在測試層不僅能使用隨機數(shù)據(jù),,還能使用隨機時延,,從而最大限度地驗證被測電路的功能和時延正確性,保證了被測模塊的魯棒性,。
隨機測試流程如圖3所示,。首先為每個端口或者總線設(shè)置一個數(shù)據(jù)結(jié)構(gòu)和包/塊的隊列,。產(chǎn)生的數(shù)據(jù)包/塊先被送入相應(yīng)的隊列。然后為每個輸入端口的隊列預(yù)存入一個數(shù)據(jù)包,,等待隨機事件被觸發(fā),。當(dāng)隨機事件被觸發(fā)后,程序分為兩個分支:分支一用于產(chǎn)生隨機數(shù)據(jù)包并進行入隊操作,;分支二用于調(diào)用回調(diào)函數(shù),,產(chǎn)生錯誤指示信號,根據(jù)錯誤指示信號丟棄該包、或者發(fā)送錯誤的數(shù)據(jù)信息,、又或者正常發(fā)送該包,。當(dāng)發(fā)送完一個數(shù)據(jù)包后再次調(diào)用回調(diào)函數(shù)進行覆蓋率的統(tǒng)計;最后判斷是否結(jié)束隨機測試,,如果結(jié)束,,則退出測試。否則重復(fù)上述操作,。分支一和分支二之間通過事件進行同步通信,。
②監(jiān)視器:監(jiān)視器的類結(jié)構(gòu)與激勵產(chǎn)生器相近,其中包含了屬性(虛接口的定義,、監(jiān)視器編號,、回調(diào)函數(shù)隊列等)和方法(數(shù)據(jù)結(jié)果比較、端口速率計算),。數(shù)據(jù)結(jié)果比較方法將DUT和行為模型的有效輸出數(shù)據(jù)信號進行比較,,如果輸出結(jié)果不一致,則可能停止仿真,,并打印出當(dāng)前仿真的時間和錯誤數(shù)據(jù)信息,;如果輸出結(jié)果一致,則調(diào)用回調(diào)函數(shù)進行覆蓋率的統(tǒng)計,。端口速率計算方法的主要功能是統(tǒng)計每個端口輸出的數(shù)據(jù)包,,根據(jù)數(shù)據(jù)包個數(shù)產(chǎn)生相應(yīng)的鏈路空/閑指示信號。
③覆蓋率統(tǒng)計器:覆蓋率統(tǒng)計器的類結(jié)構(gòu)與激勵產(chǎn)生器的類有所不同,,其結(jié)構(gòu)由屬性,、方法和覆蓋組構(gòu)成。屬性主要是為進行覆蓋率統(tǒng)計而定義的一些中間變量,;方法為進行覆蓋率統(tǒng)計準(zhǔn)備數(shù)據(jù),,這些數(shù)據(jù)涉及到相應(yīng)的覆蓋點,并調(diào)用采樣函數(shù),,進行覆蓋率統(tǒng)計操作,;覆蓋組由多個覆蓋點組成,首先定義多個獨立的覆蓋點,。然后根據(jù)具體的情況將這些獨立的覆蓋點進行交叉覆蓋率計算定義,,如cross packet_type,、packet_dport等。
(3)建立層:建立層定義為一個類,,該類由屬性和方法構(gòu)成,。屬性包含了m個激勵產(chǎn)生器和m個監(jiān)視器的句柄定義、m組總線的虛接口定義,、覆蓋率類的句柄聲明等,。其方法包含了建造方法、DUT配置方法和運行方法,。其中建造方法用于對m個激勵產(chǎn)生器和m個監(jiān)視器進行對象聲明,,同時將回調(diào)函數(shù)壓入激勵產(chǎn)生器和監(jiān)視器的回調(diào)函數(shù)隊列中。DUT配置方法的主要功能是按照微機接口時序利用測試層提供的配置文件,,對電路進行初始配置,。運行方法主要的功能是啟動m個激勵產(chǎn)生器和m個監(jiān)視器的線程,這里采用fork join_none語句實現(xiàn),。
(4)測試層:按照數(shù)據(jù)包的格式要求編寫定向測試向量文件,,同時提供電路的各種配置參數(shù)文件。
最終搭建好的驗證平臺如圖4所示,。
3 驗證結(jié)果和分析
本文的驗證平臺搭建在Sysnopsys公司的VCS仿真平臺上,,使用了DVE環(huán)境。運行結(jié)果如圖5所示,??梢钥闯霰酒脚_能夠按照DUT輸入數(shù)據(jù)信號的要求產(chǎn)生正確的輸入信號,并能夠按照一定的概率產(chǎn)生錯誤的數(shù)據(jù),。同時,,當(dāng)DUT和電路模型輸出的數(shù)據(jù)不一致時,驗證平臺能夠強行停止仿真過程,,并打印錯誤信息,。該錯誤信息包括了錯誤信號及錯誤信號產(chǎn)生的時刻等,這些信息能夠幫助設(shè)計人員快速地定位錯誤,,從而提高驗證效率,。
最后在覆蓋率結(jié)果的引導(dǎo)下,通過增加覆蓋點以及修改隨機信號約束條件和產(chǎn)生隨機信號的權(quán)重值,,最終功能覆蓋率能夠達到100%,。
采用System Verilog語言,借鑒VMM層次化的驗證技術(shù),,設(shè)計了一個可重用的驗證平臺,。與其他的驗證平臺相比,該可重用驗證平臺能夠提供多種形式的激勵,包括定向測試激勵,、受約束的隨機測試以及錯誤激勵;采用了一套十分有效的算法來產(chǎn)生激勵并真實地模仿配置好的端口設(shè)施,;能產(chǎn)生隨機數(shù)據(jù)和受約束的隨機時延,,模仿真實的環(huán)境,對被測模型進行完備的驗證,。
同時采用了自動對比結(jié)果技術(shù),。構(gòu)建不同設(shè)計對象的驗證平臺時,在不修改本驗證平臺框架的情況下,,僅需修改功能覆蓋率類中的覆蓋點和激勵產(chǎn)生器中的一些方法,,新的驗證平臺即可搭建而成。與采用純手工編寫測試向量的驗證技術(shù)相比較,,本文設(shè)計的驗證平臺極大地提高了驗證效率,,縮短了設(shè)計周期。
參考文獻
[1] 閆沫,張媛.基于System Verilog語言的設(shè)計驗證技術(shù)[J].現(xiàn)代電子技術(shù),2008,,31(6):8-11.
[2] 馬寧,李玲,田澤,等. ARINC659總線協(xié)議芯片的仿真驗證[J].計算機技與發(fā)展,2010,20(1):205-208.
[3] 張春,麥宋平,趙益新. System Verilog驗證[M].北京:科學(xué)出版社,2009.
[4] 劉兆勇, 王進祥, 李清波. 基于VMM的外部存儲器接口驗證[J].微處理機, 2009(4):1-4.
[5] 段乘超,徐金甫. 基于VMM構(gòu)件可重用驗證平臺[J]. 現(xiàn)代電子技術(shù),2011,34(8):127-129.
[6] 林健,楊志家.利用VMM建立基于事務(wù)的層次化驗證平臺[J].微計算機信息,2010,26(4-2):97-98.
[7] 段青亞,黃士坦,靳榮利,,等. SoC自動化驗證方法的研究與實現(xiàn)[J].吉林大學(xué)學(xué)報:信息科學(xué)版, 2010,28(3):231-237.
[8] KEAVENEY M, MCMAHON A, O’KEEFFE N, et. al. The development of advanced verification environments using system verilog[C]. The 16th Irish System and Signals Conference. ISSC2008, Galway, Ireland,2008.