基于e語(yǔ)言的驗(yàn)證自動(dòng)化系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
驗(yàn)證技術(shù)的發(fā)展
在目前的集成電路設(shè)計(jì)中,芯片的規(guī)模和復(fù)雜程度正呈指數(shù)增加,為保證所設(shè)計(jì)芯片功能的正確性,需要花費(fèi)比以往更多的時(shí)間和人力,困難度大幅增加。而且,目前的功能驗(yàn)證能力已經(jīng)遠(yuǎn)遠(yuǎn)落后于設(shè)計(jì)能力,功能驗(yàn)證正成為大規(guī)模芯片設(shè)計(jì)的瓶頸。設(shè)計(jì)人員通常需要花費(fèi)50%~70%的時(shí)間去驗(yàn)證他們的設(shè)計(jì)。雖然有形式驗(yàn)證等多種驗(yàn)證方法可供選擇,但是設(shè)計(jì)者還是偏好基于仿真的驗(yàn)證,本文中的驗(yàn)證主要是指仿真。為了降低驗(yàn)證的工作量和提高驗(yàn)證的效率,越來(lái)越多的設(shè)計(jì)人員采用高級(jí)驗(yàn)證語(yǔ)言(HLV)來(lái)進(jìn)行芯片驗(yàn)證。
|
驗(yàn)證技術(shù)的發(fā)展主要經(jīng)歷了以下幾個(gè)階段:
1. 基于HDL語(yǔ)言的驗(yàn)證
用HDL語(yǔ)言來(lái)建立測(cè)試平臺(tái)和編寫測(cè)試向量,將激勵(lì)輸入給設(shè)計(jì),然后檢查設(shè)計(jì)的輸出。這種方法的缺點(diǎn)是測(cè)試平臺(tái)和測(cè)試向量的建立和編寫非常復(fù)雜和困難,并且驗(yàn)證所需的激勵(lì)難以達(dá)到足夠的覆蓋率。
2. 面向?qū)ο蟮尿?yàn)證
由于采用HDL語(yǔ)言進(jìn)行驗(yàn)證的局限性,設(shè)計(jì)人員可以使用面向?qū)ο蟮母呒?jí)語(yǔ)言(如C++、Python)來(lái)建立驗(yàn)證環(huán)境和編寫激勵(lì)。這種驗(yàn)證方法可以使設(shè)計(jì)人員從比較抽象的設(shè)計(jì)高層,對(duì)設(shè)計(jì)的輸入和輸出進(jìn)行建模,然后通過(guò)驗(yàn)證環(huán)境與仿真器的通信接口,將抽象的數(shù)據(jù)模型轉(zhuǎn)換成比特形式的數(shù)據(jù)。這種驗(yàn)證方法大大降低了編寫激勵(lì)的工作量,但是驗(yàn)證環(huán)境的建立相對(duì)復(fù)雜,比如驗(yàn)證環(huán)境與仿真器的通信接口等。
3. 隨機(jī)產(chǎn)生激勵(lì)
由于測(cè)試激勵(lì)編寫的工作量非常大,所以設(shè)計(jì)人員逐步采用隨機(jī)產(chǎn)生測(cè)試向量的方法,以減輕編寫激勵(lì)的工作量,并提高驗(yàn)證的覆蓋率。但是它的缺點(diǎn)在于,由于激勵(lì)是隨機(jī)產(chǎn)生的,所以給驗(yàn)證結(jié)果的檢查帶來(lái)了一定難度,并且設(shè)計(jì)者不能根據(jù)要驗(yàn)證的設(shè)計(jì)屬性來(lái)產(chǎn)生所需的激勵(lì),即不能根據(jù)約束來(lái)產(chǎn)生激勵(lì)。
4. 驗(yàn)證平臺(tái)工具
由于驗(yàn)證環(huán)境的建立過(guò)于復(fù)雜,因此出現(xiàn)了驗(yàn)證平臺(tái)工具,通過(guò)這種工具可以大大減少建立驗(yàn)證環(huán)境的工作量。但是這類驗(yàn)證工具不能使驗(yàn)證人員通過(guò)設(shè)計(jì)的抽象層來(lái)編寫激勵(lì),而且不能實(shí)現(xiàn)設(shè)計(jì)時(shí)序行為的檢查。
|
驗(yàn)證自動(dòng)化系統(tǒng)
由于上述驗(yàn)證方法都或多或少具有局限性,所以需要一種完善的驗(yàn)證系統(tǒng)。根據(jù)上節(jié)所述,一種完善的驗(yàn)證自動(dòng)化系統(tǒng)需要具備以下幾個(gè)功能:首先它能夠定義驗(yàn)證計(jì)劃;然后能夠提供接口,用高級(jí)語(yǔ)言從抽象的層次產(chǎn)生基于約束的激勵(lì);并且能方便高效地建立驗(yàn)證環(huán)境;最后能夠完成設(shè)計(jì)時(shí)序行為的驗(yàn)證和基于斷言的功能覆蓋率的驗(yàn)證。
e語(yǔ)言是一種功能強(qiáng)大的驗(yàn)證語(yǔ)言,它可以很好地實(shí)現(xiàn)一個(gè)驗(yàn)證自動(dòng)化系統(tǒng),如圖1所示。在這個(gè)驗(yàn)證系統(tǒng)中,首先可以根據(jù)驗(yàn)證者的需要,用e語(yǔ)言來(lái)制定一些約束,根據(jù)這些約束來(lái)產(chǎn)生驗(yàn)證需要的激勵(lì)。由于e可以很好地與Verilog和VHDL仿真器通信,因此可以將這些用e語(yǔ)言抽象描述的數(shù)據(jù)轉(zhuǎn)換成比特形式,然后加載給設(shè)計(jì);再通過(guò)和仿真器的通信,對(duì)系統(tǒng)進(jìn)行功能仿真,并將設(shè)計(jì)的輸出收集起來(lái),這時(shí)可以將比特形式的數(shù)據(jù)轉(zhuǎn)換回e語(yǔ)言的抽象描述,以便于對(duì)設(shè)計(jì)行為與預(yù)期結(jié)果進(jìn)行檢查。除此之外,e語(yǔ)言還可以實(shí)現(xiàn)設(shè)計(jì)時(shí)序行為的檢查。如果一個(gè)中斷必須在請(qǐng)求后的5個(gè)周期后發(fā)出,可以通過(guò)e語(yǔ)言來(lái)描述這個(gè)設(shè)計(jì)屬性,通過(guò)仿真來(lái)檢查其是否滿足。最后,e語(yǔ)言還可以用來(lái)進(jìn)行基于斷言的功能覆蓋率驗(yàn)證。
|
基于e語(yǔ)言的驗(yàn)證環(huán)境與仿真器的交互
在具體介紹基于e語(yǔ)言的驗(yàn)證環(huán)境之前,先介紹一下基于e語(yǔ)言的驗(yàn)證環(huán)境與仿真器的通信機(jī)理。目前,Cadence公司的工具Specman Elite支持用e語(yǔ)言來(lái)建立驗(yàn)證自動(dòng)化系統(tǒng),Specman Elite提供可配置、可再使用和可擴(kuò)展的驗(yàn)證組件,這些組件被稱為eVC。eVC采用高級(jí)驗(yàn)證語(yǔ)言e編寫,能夠產(chǎn)生足夠多的測(cè)試激勵(lì)訊號(hào),并能對(duì)設(shè)計(jì)行為與預(yù)期結(jié)果進(jìn)行檢查確認(rèn)。eVC可以極大地縮短驗(yàn)證時(shí)間,提高產(chǎn)品品質(zhì)。所以本文將以Specman為例來(lái)介紹基于e語(yǔ)言的驗(yàn)證環(huán)境與仿真器是如何協(xié)同工作的。
Specman和仿真器在仿真的過(guò)程中是兩個(gè)獨(dú)立并行的進(jìn)程,它們通過(guò)通信接口(stubs文件)來(lái)進(jìn)行通信,其結(jié)構(gòu)如圖2所示。
仿真環(huán)境包含以下各組成部分:
Specman:整個(gè)驗(yàn)證環(huán)境是用e語(yǔ)言實(shí)現(xiàn)的,其中包括約束、激勵(lì)產(chǎn)生、驅(qū)動(dòng)、檢查、覆蓋率等,所有的e文件都由Specman編譯和仿真。
仿真器:Verilog或VHDL仿真器,它通過(guò)stubs文件與Specman進(jìn)行通信。
外界庫(kù):仿真用到的一些模型可能是基于C語(yǔ)言的,e語(yǔ)言可以很好地導(dǎo)入這些模型來(lái)進(jìn)行仿真。
設(shè)計(jì):基于Verilog或VHDL的設(shè)計(jì)。
仿真文件:在仿真中可能用到的一些外部模型,如總線功能模型等。
頂層:包括設(shè)計(jì)和各種模型的例化和一些驅(qū)動(dòng)輸入或收集輸出的寄存器。
Stubs文件:Specman讀入所有的e文件,然后用一個(gè)命令來(lái)生成所需要的Stubs文件,這個(gè)文件在仿真過(guò)程中是由仿真器編譯和仿真的。
基于e語(yǔ)言的驗(yàn)證環(huán)境
基于e語(yǔ)言的驗(yàn)證環(huán)境包括許多組成部分,其基本結(jié)構(gòu)如圖3所示。
其中數(shù)據(jù)對(duì)象代表固定格式的測(cè)試向量,如數(shù)據(jù)包、視頻中的一幀數(shù)據(jù),或CPU的一種指令。激勵(lì)產(chǎn)生會(huì)對(duì)數(shù)據(jù)對(duì)象添加一定的約束,隨機(jī)產(chǎn)生基于約束的激勵(lì)。輸入驅(qū)動(dòng)中包括一個(gè)輸入程序,負(fù)責(zé)將數(shù)據(jù)輸入給設(shè)計(jì),根據(jù)設(shè)計(jì)的不同,有可能對(duì)設(shè)計(jì)進(jìn)行重復(fù)多次的輸入。輸出采集中包括一個(gè)采集設(shè)計(jì)輸出的程序,并將采集到的數(shù)據(jù)轉(zhuǎn)換成數(shù)據(jù)對(duì)象定義的形式,然后送到數(shù)據(jù)檢查模塊進(jìn)行檢查。數(shù)據(jù)檢查部分產(chǎn)生所需要的數(shù)據(jù)和存儲(chǔ)收集到的數(shù)據(jù)的程序,并完成數(shù)據(jù)檢查。協(xié)議檢查通過(guò)定義一些時(shí)序上的斷言來(lái)監(jiān)控設(shè)計(jì)的協(xié)議,如果違反了協(xié)議將產(chǎn)生警告或錯(cuò)誤提示。覆蓋率分析會(huì)分析設(shè)計(jì)中的斷言,給出設(shè)計(jì)的功能覆蓋率報(bào)告。
Specman提供約束解釋器和通信信道來(lái)進(jìn)行e語(yǔ)言的仿真,界面對(duì)象(interface object)負(fù)責(zé)將數(shù)據(jù)對(duì)象驅(qū)動(dòng)給設(shè)計(jì)的界面,系統(tǒng)對(duì)象(system object)包括各種不同的界面對(duì)象。界面對(duì)象和系統(tǒng)對(duì)象根據(jù)每個(gè)設(shè)計(jì)來(lái)編寫,如對(duì)CPU進(jìn)行驗(yàn)證時(shí),根據(jù)設(shè)計(jì)定義輸入給CPU的數(shù)據(jù)對(duì)象(指令格式等),因此驗(yàn)證環(huán)境不需要隨著設(shè)計(jì)的改變而改變,所以一個(gè)設(shè)計(jì)的環(huán)境是可以重用的。不同的測(cè)試激勵(lì)通過(guò)約束數(shù)據(jù)對(duì)象、界面對(duì)象、系統(tǒng)對(duì)象來(lái)產(chǎn)生。驗(yàn)證環(huán)境的劃分框圖如圖4所示。
|
基于e語(yǔ)言的驗(yàn)證環(huán)境的文件層次結(jié)構(gòu)如圖5所示,其最頂層文件名字固定為sys,在sys下例化所有的模塊。
結(jié)語(yǔ)
本文介紹了目前國(guó)外各大芯片設(shè)計(jì)公司所采用的最新的驗(yàn)證技術(shù)——基于e語(yǔ)言的自動(dòng)驗(yàn)證系統(tǒng)。采用e語(yǔ)言建立驗(yàn)證環(huán)境、編寫測(cè)試激勵(lì),可大大降低芯片驗(yàn)證人員的工作量,提高驗(yàn)證效率。