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