《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于System Verilog的可重用驗(yàn)證平臺(tái)
基于System Verilog的可重用驗(yàn)證平臺(tái)
來源:電子技術(shù)應(yīng)用2013年第5期
山 蕊1, 蔣 林2, 李 濤1
1. 西安郵電大學(xué) 電子工程學(xué)院, 陜西 西安 710061; 2. 西安郵電大學(xué) 研究生學(xué)院, 陜西 西安 710061
摘要: 采用System Verilog語言設(shè)計(jì)了一種具有層次化結(jié)構(gòu)的可重用驗(yàn)證平臺(tái),該平臺(tái)能夠產(chǎn)生各種隨機(jī)、定向、錯(cuò)誤測(cè)試向量,并提供功能覆蓋率計(jì)算。將驗(yàn)證平臺(tái)在Synopsys公司的VCS仿真工具上運(yùn)行,并應(yīng)用到包交換芯片的仿真驗(yàn)證中。仿真結(jié)果顯示,新設(shè)計(jì)的驗(yàn)證平臺(tái)能通過修改隨機(jī)信號(hào)約束條件和產(chǎn)生隨機(jī)信號(hào)的權(quán)重值,使芯片的功能覆蓋率達(dá)到100%。
中圖分類號(hào): TN492
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)05-0128-04
The design and implementation of a reusable verification platform based on System Verilog
Shan Rui1, Jiang Lin2, Li Tao1
1. School of Electronic Engineering, Xi′an University of Posts and Telecommunications, Xi′an 710061, China; 2. School of Graduate, Xi′an University of Posts and Telecommunications, Xi′an 710061, China
Abstract: Design a reusable verification platform with a hierarchical structure employing system verilog language. This verification platform can generate targeted, random, and error test vectors. The platform also facilitates the computing of functional coverage. Running this platform on VCS tools of Synopsys Corporation, meanwhile using it to simulate packet switch chip. The result shows that the functional coverage of chip can achieve 100% through revising restraint condition of random signal and weight value using to generate random signal.
Key words : System Verilog; verification; hierarchical platform; reusability

    隨著集成電路制造工藝技術(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&rsquo;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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 久久精品国产一区二区三区不卡 | 国产小视频在线高清播放 | 97在线精品| 国产免费久久精品99久久 | 国产精品一二三区 | 华人永久免费视频 | 激情综合色综合啪啪开心 | 五月激情站 | 国产亚洲欧美成人久久片 | 国产一区二区三区成人久久片 | 国产一区二区精品久久 | 精品在线视频播放 | 99在线观看国产 | 欧美日韩精彩视频 | 欧美国产综合 | аⅴ资源中文在线天堂 | 好姐妹1韩国版 | 国产综合视频在线观看一区 | 精品久久一区二区 | 国产在线播放网址 | 亚洲成av人片天堂网 | 丁香婷婷色综合 | 99久久国产视频 | 青青国产视频 | 国产毛片一区二区 | 国产精品毛片一区二区三区 | 国产a一级毛片爽爽影院 | 精品久久一区二区三区 | 免费看黄色小视频 | a久久| 久久精品国产69国产精品亚洲 | 视频国产免费 | 五月天婷婷在线观看 | 黄视频在线观看www免费 | 99视频在线播放 | 99久久久久国产精品免费 | 狠狠狠狠狠狠狠狠 | 国产精品美女挤奶视频 | 毛片网站下载 | 欧美一区精品 | 国产成人www免费人成看片 |