分層驗(yàn)證法在基于AMBA系統(tǒng)中的應(yīng)用
在基于AMBA(Advanced Microcontroller Bus Architecture,先進(jìn)的微控制器總線體系結(jié)構(gòu))的系統(tǒng)中,用戶設(shè)計(jì)的模塊和第三方IP模塊與AMBA AHB(Advanced High-performance Bus)和AMBA APB(Advance Peripheral Bus)總線相連,如圖1所示。分層驗(yàn)證方法能夠跨越總線邊界應(yīng)用于AHB和APB兩種總線系統(tǒng)。同樣的方法還可以用于多層設(shè)計(jì)以及新的先進(jìn)可擴(kuò)展接口(Advanced eXtensible Interface,AXI)。下面主要討論與AHB連接的用戶設(shè)計(jì)的模塊。
驗(yàn)證環(huán)境目標(biāo):
* 支持單一模塊級(jí)組件驗(yàn)證;
* 支持子系統(tǒng)組件集成和子系統(tǒng)驗(yàn)證;
* 支持全系統(tǒng)范圍的集成和全系統(tǒng)驗(yàn)證;
* 全面改善覆蓋范圍;
* 提供第三方IP模塊的快速集成。
驗(yàn)證環(huán)境本身也應(yīng)是可升級(jí)的,以便在后續(xù)的驗(yàn)證項(xiàng)目重用。
分層驗(yàn)證
為了完成既定目標(biāo),需要一種分層的方法驗(yàn)證。分層法用于單個(gè)模塊級(jí)驗(yàn)證以及子系統(tǒng)級(jí)和全系統(tǒng)級(jí)驗(yàn)證。每一層測(cè)試都建立在其它層之上,因此從層與層之間的轉(zhuǎn)移只需做很少的工作。每一層的測(cè)試可在后續(xù)的層或新的驗(yàn)證項(xiàng)目中重用。
將系統(tǒng)分為三層(見(jiàn)圖2),第一層的測(cè)試目標(biāo)是接口協(xié)議的驗(yàn)證。第二、三層的目標(biāo)是用真實(shí)數(shù)據(jù)流驗(yàn)證專用邏輯。
第一層
第一層的目標(biāo)是測(cè)試物理總線接口,確保其不違反總線協(xié)議。接口必須遵守在這部分定義的AMBA AHB或APB協(xié)議。第一層測(cè)試是一組直接測(cè)試,它確保所有不同的總線周期都能被正確執(zhí)行。每一項(xiàng)測(cè)試都創(chuàng)建成檢查總線協(xié)議的專門區(qū)域。所有的基本事務(wù)都被測(cè)試后,就可以進(jìn)入第二層。
第二層
第二層的目標(biāo)是產(chǎn)生一個(gè)事務(wù)序列,不僅重點(diǎn)測(cè)試總線接口邏輯,而且還要測(cè)試專用邏輯。第二層測(cè)試產(chǎn)生真實(shí)設(shè)計(jì)數(shù)據(jù)流。為了完全實(shí)現(xiàn)第二層目標(biāo),在驗(yàn)證環(huán)境中必須引入條件隨機(jī)技術(shù)(constrained random techniques)。
用條件隨機(jī)技術(shù)實(shí)現(xiàn)第二層目標(biāo)的主要益處是很容易完成第一個(gè)測(cè)試。用幾個(gè)簡(jiǎn)單的功能命令,就能產(chǎn)生總線周期。高位總線周期和功能區(qū)完成也很快,并且還能發(fā)現(xiàn)更多的難點(diǎn)。將更多的運(yùn)用統(tǒng)計(jì)概念而非僅用直接測(cè)試。這種條件隨機(jī)環(huán)境能夠從少量的基準(zhǔn)測(cè)試碼中產(chǎn)生大量的激勵(lì)。由于對(duì)設(shè)計(jì)需求是有條件的,因此仿真周期不會(huì)因疏忽而浪費(fèi)在子系統(tǒng)中無(wú)關(guān)緊要的部分。條件隨機(jī)數(shù)據(jù)流將使驗(yàn)證著重針對(duì)設(shè)計(jì)模塊而非直接測(cè)試。實(shí)際的數(shù)據(jù)流將完全測(cè)試模塊專用邏輯,在某種意義上,更接近物理硅的情況。
條件隨機(jī)激勵(lì)應(yīng)用于簡(jiǎn)單的AMBA AHB周期,也即條件隨機(jī)事務(wù)(CRT)功能(見(jiàn)圖3),可以簡(jiǎn)單而迅速地產(chǎn)生擴(kuò)展周期。對(duì)于一個(gè)給定的AHB事務(wù),傳輸類型、地址、大小和脈沖類型都是有條件的。
例如,AHB主機(jī)能產(chǎn)生一個(gè)大小和脈沖寬度都可變的讀寫周期。在這個(gè)周期中,讀操作占10%,寫操作占70%,空閑狀態(tài)占20%。用傳統(tǒng)的HDL語(yǔ)言是很難描述的。
一個(gè)完整的條件隨機(jī)環(huán)境定義為一組事務(wù),上面是序列層,中間是選擇層,最后是事務(wù)條件層。有效載荷反饋進(jìn)系統(tǒng)中,形成一個(gè)自激的激勵(lì)信號(hào)發(fā)生器。單個(gè)事務(wù)綜合到一起形成一個(gè)序列,多組序列綜合到一起形成一個(gè)選擇,多個(gè)選擇產(chǎn)生廣泛的事務(wù)周期和響應(yīng)。
第三層:專用測(cè)試
第三層的測(cè)試用于提高設(shè)計(jì)穩(wěn)定性。所有部件都將工作起來(lái),包括系統(tǒng)和應(yīng)用引導(dǎo)序列。在這一層檢查軟件與軟件的接口,測(cè)試最終API和驅(qū)動(dòng),以及更重要的系統(tǒng)性能。至此,一個(gè)完整的層次關(guān)系被確定下來(lái)。第三層測(cè)試目標(biāo)是單個(gè)模塊或系統(tǒng)的高級(jí)功能。第三層還有一個(gè)特點(diǎn),即能夠發(fā)現(xiàn)錯(cuò)誤(bug)。而傳統(tǒng)的方法只能在實(shí)驗(yàn)室里,產(chǎn)品在投入應(yīng)用的過(guò)程中才會(huì)發(fā)現(xiàn)。
層目標(biāo)
第一層的目標(biāo)是測(cè)試模塊的接口,第二、三層的目標(biāo)不僅測(cè)試接口,更重要的是測(cè)試模塊專用邏輯(見(jiàn)圖4)。測(cè)試時(shí)的所有訪問(wèn)都通過(guò)AMBA總線。層被應(yīng)用于設(shè)計(jì)驗(yàn)證處理的每一級(jí),從模塊級(jí)驗(yàn)證,到子系統(tǒng),到最終的全系統(tǒng)驗(yàn)證。
用分層驗(yàn)證方法進(jìn)行模塊級(jí)驗(yàn)證
在基于AMBA系統(tǒng)構(gòu)建之前,每一個(gè)模塊都必須進(jìn)行功能測(cè)試。每一個(gè)模塊都在獨(dú)立的環(huán)境中驗(yàn)證,并且在每一層都要進(jìn)行測(cè)試。這就是子系統(tǒng)綜合前的設(shè)計(jì),它是為了發(fā)現(xiàn)基本功能性錯(cuò)誤。在這一級(jí),基準(zhǔn)測(cè)試序列既可以用傳統(tǒng)的硬件描述語(yǔ)言如VHDL或Vrilog編寫,也可以用硬件驗(yàn)證語(yǔ)言如OpenVera編寫。OpenVera在設(shè)計(jì)時(shí)就考慮到易于創(chuàng)建基準(zhǔn)測(cè)試序列,并且在構(gòu)建時(shí)考慮到便于運(yùn)用象Synopsys Vera一樣的工具進(jìn)行自動(dòng)驗(yàn)證,因此很容易完成驗(yàn)證任務(wù)。
在模塊級(jí)驗(yàn)證階段,第一層測(cè)試檢查模塊能否經(jīng)由定義的AMBA接口被訪問(wèn)。在子系統(tǒng)集成開始前,模塊必須符合AMBA協(xié)議要求。所有總線周期必須被檢查以確保模塊與AMBA系統(tǒng)中的其它模塊連接時(shí)正確運(yùn)行。在最短時(shí)間內(nèi)和最大程度上完成這項(xiàng)工作的最好方法就是用驗(yàn)證IP,如Synopsys的DesignWare驗(yàn)證IP,驅(qū)動(dòng)用戶邏輯模塊。
AHB主機(jī)驗(yàn)證IP用于產(chǎn)生直接讀寫測(cè)試,它將全面檢查用戶模塊的AHB總線接口(見(jiàn)圖5)。有一個(gè)監(jiān)控器用于檢查是否違反AMBA協(xié)議,并捕捉總線周期的各種信息。監(jiān)控器可以讓驗(yàn)證工程師知道總線接口已經(jīng)測(cè)試了多少。在第一層,若用直接測(cè)試的方法實(shí)現(xiàn)100%總線測(cè)試是不太可能的。而實(shí)際上,第一層的目標(biāo)就是100%的總線周期或事務(wù)范圍測(cè)試。這個(gè)目標(biāo)確保模塊在最短時(shí)間內(nèi)響應(yīng)絕大多數(shù)AMBA周期。
為了實(shí)現(xiàn)更廣泛的功能范圍,第一層的測(cè)試環(huán)境能迅速擴(kuò)展到支持第二層測(cè)試。在第二層要用更多的真實(shí)總線數(shù)據(jù)流測(cè)試模塊功能。為了完全實(shí)現(xiàn)第二層目標(biāo),必須應(yīng)用條件隨機(jī)技術(shù)。在第二層產(chǎn)生隨機(jī)數(shù)據(jù)流是很重要的,因?yàn)樗貏e強(qiáng)調(diào)總線操作,能揭示那些被忽視的情況。用直接測(cè)試完成這件事情,不僅需要大量的時(shí)間,而且并不能仿真真正的AMBA環(huán)境。這些事務(wù)序列開始測(cè)試用戶模塊的專用功能。
用更完全的形式測(cè)試用戶模塊就是進(jìn)行大量的AMBA訪問(wèn),同時(shí)檢查模塊到模塊的數(shù)據(jù)完整性。還應(yīng)該產(chǎn)生一些事務(wù)序列,檢查用戶模塊處在更完全系統(tǒng)中的功能。
當(dāng)?shù)谝粚訙y(cè)試與AMBA協(xié)議一致時(shí),它在第二層仍然有效。第二層測(cè)試將產(chǎn)生更全面的AMBA AHB協(xié)議。在條件隨機(jī)激勵(lì)作用下,測(cè)試將接近100%總線事務(wù)目標(biāo)。
同樣的方法可以建立第三層專用測(cè)試。創(chuàng)建一個(gè)測(cè)試,模擬實(shí)際的應(yīng)用功能,如高速緩存接入、DMA傳輸和器件引導(dǎo)配置。引導(dǎo)和應(yīng)用配置時(shí)唯一的限制因素是仿真周期和時(shí)鐘時(shí)間本身。在第三層用傳統(tǒng)的全功能CPU模式測(cè)試將需要數(shù)百萬(wàn)個(gè)時(shí)鐘周期。用AHB主機(jī)驗(yàn)證IP方式則會(huì)減少時(shí)鐘周期,并使測(cè)試很容易管理。第三層測(cè)試的整體優(yōu)勢(shì)是模塊接近最終的應(yīng)用形式。例如,在引導(dǎo)過(guò)程中測(cè)試寄存器負(fù)載能徹底清除在引導(dǎo)中可能導(dǎo)致系統(tǒng)崩潰的功能錯(cuò)誤。
用分層驗(yàn)證方法進(jìn)行子系統(tǒng)級(jí)驗(yàn)證
當(dāng)單個(gè)模塊全部驗(yàn)證完成后,它們就可以集成到子系統(tǒng)環(huán)境中。每一級(jí)與模塊級(jí)驗(yàn)證中的一樣,應(yīng)用于子系統(tǒng)環(huán)境中。每一層的驗(yàn)證目標(biāo)也是一樣的,例如第一層的協(xié)議檢查,第二層的事務(wù)序列產(chǎn)生,第三層的專用測(cè)試。將每一個(gè)模塊組合到子系統(tǒng)中,測(cè)試的不僅是單個(gè)模塊,還包括子系統(tǒng)結(jié)構(gòu)本身。
子系統(tǒng)包括實(shí)際的數(shù)據(jù)流發(fā)生器,如PCI、USB和物理存儲(chǔ)器以及存儲(chǔ)器控制模塊。圖6中第三方IP模塊是已經(jīng)發(fā)布的可配置預(yù)驗(yàn)證IP。預(yù)驗(yàn)證IP模塊并不需要單獨(dú)的模塊級(jí)驗(yàn)證,因?yàn)镮P提供者已經(jīng)完成這項(xiàng)工作,但是它在子系統(tǒng)中還是應(yīng)驗(yàn)證其與其它模塊的連接關(guān)系。
第一層測(cè)試檢查子系統(tǒng)是否正確連接,是否違反AMBA協(xié)議。在第一層中為模塊級(jí)驗(yàn)證任務(wù)創(chuàng)建的測(cè)試可以在子系統(tǒng)驗(yàn)證中重用。在檢查子系統(tǒng)協(xié)議時(shí),測(cè)試修改很方便,就像檢查子系統(tǒng)中的單一單元一樣。
第二層的模塊級(jí)條件隨機(jī)處理也可以重用。在子系統(tǒng)中,測(cè)試的產(chǎn)生是執(zhí)行同樣的AHB主機(jī)條件隨機(jī)任務(wù)。增加的AHB主機(jī),如新增加的PCI和USB模塊承擔(dān)著最多的創(chuàng)建總線數(shù)據(jù)流的任務(wù)。這些模塊就是DesignWare驗(yàn)證IP,因此在第一次測(cè)試前只須花很少的時(shí)間。條件隨機(jī)技術(shù)應(yīng)該用于這些實(shí)際的數(shù)據(jù)流發(fā)生器,就象它應(yīng)用于模塊級(jí)測(cè)試中的AHB主機(jī)一樣。這個(gè)子系統(tǒng)驗(yàn)證環(huán)境很快將產(chǎn)生大量的設(shè)計(jì)數(shù)據(jù),這些數(shù)據(jù)將全面測(cè)試每個(gè)模塊的接口和所有應(yīng)用。
再次驗(yàn)證在這一級(jí)是很重要的。因?yàn)樗?yàn)證的設(shè)計(jì)越來(lái)越大,實(shí)現(xiàn)目標(biāo)變得越來(lái)越困難。在子系統(tǒng)級(jí),直接測(cè)試幾乎是不可能的,即使是最簡(jiǎn)單的AMBA子系統(tǒng),也要激勵(lì)所有可能的系統(tǒng)配置。條件隨機(jī)事務(wù)產(chǎn)生是唯一的方法,只有它能產(chǎn)生足夠的子系統(tǒng)測(cè)試來(lái)完成整個(gè)目標(biāo)。
子系統(tǒng)級(jí)是工程師第一個(gè)設(shè)置監(jiān)控器的地方,因此可以了解用戶模塊與其它子系統(tǒng)組件的相互連接關(guān)系,發(fā)現(xiàn)接口邏輯和專用邏輯中的錯(cuò)誤。第二和第三層的測(cè)試能迅速發(fā)現(xiàn)錯(cuò)誤。第一層協(xié)議只注意協(xié)議規(guī)則,第二、三層測(cè)試檢查所有子系統(tǒng)組件工作正確與否。
第三層專用測(cè)試工作在模塊級(jí),也可以在子系統(tǒng)內(nèi)擴(kuò)展到多個(gè)組件。例如通過(guò)測(cè)試PCI和存儲(chǔ)器控制IP的配置,查看PCI接口數(shù)據(jù)傳輸情況和外部存儲(chǔ)器數(shù)據(jù)存儲(chǔ)情況。開始和末端的數(shù)據(jù)映像用于驗(yàn)證數(shù)據(jù)是否被存放在正確的地址里。這種測(cè)試還特別注重總線結(jié)構(gòu)和仲裁邏輯。
最終系統(tǒng)級(jí)驗(yàn)證
在系統(tǒng)級(jí)仍然可以用分層的方法,但是現(xiàn)在相當(dāng)多的驗(yàn)證負(fù)擔(dān)要由實(shí)際的系統(tǒng)級(jí)組件承擔(dān)。已經(jīng)存在的來(lái)自子系統(tǒng)驗(yàn)證環(huán)境的第一、二和三層測(cè)試都可以在正確創(chuàng)立的系統(tǒng)環(huán)境中重用。
在系統(tǒng)級(jí)中,已預(yù)驗(yàn)證的第三方IP模塊可被用來(lái)建造一個(gè)完整的系統(tǒng)??芍赜肐P模塊減少了創(chuàng)建系統(tǒng)環(huán)境的工作量,從而讓設(shè)計(jì)者將更多的時(shí)間集中到核心組件上。
在系統(tǒng)級(jí),驗(yàn)證目標(biāo)是檢查為專門應(yīng)用而設(shè)計(jì)的整個(gè)系統(tǒng)??偩€協(xié)議的驗(yàn)證不僅要做,更需要注意的是高一級(jí)的應(yīng)用測(cè)試。在系統(tǒng)級(jí),實(shí)際的應(yīng)用軟件用于測(cè)試。這個(gè)軟件運(yùn)行在全功能軟件模型上,而不是低級(jí)別的AHB主機(jī)模型上。
運(yùn)行實(shí)際應(yīng)用編碼的優(yōu)點(diǎn)是創(chuàng)建一個(gè)與真實(shí)系統(tǒng)盡可能接近的環(huán)境。缺點(diǎn)是當(dāng)執(zhí)行軟件編碼時(shí)很難控制總線周期。編碼不能產(chǎn)生測(cè)試所有總線事務(wù)協(xié)議的一整套總線周期,這是系統(tǒng)級(jí)環(huán)境中重新運(yùn)行第一、二層測(cè)試的重要原因。第三層測(cè)試模擬引導(dǎo)序列和全系統(tǒng)配置。
在系統(tǒng)級(jí)仿真環(huán)境中運(yùn)行的測(cè)試軟件都應(yīng)在實(shí)際的硅級(jí)上再運(yùn)行,以驗(yàn)證其功能。實(shí)際硅級(jí)的操作都應(yīng)在系統(tǒng)級(jí)仿真中再現(xiàn),以方便調(diào)試?!?nbsp; (陳鋮譯)
評(píng)論