一、測(cè)試的基本概念
IC驗(yàn)證,一般也稱(chēng)“功能驗(yàn)證”,我們今天要講的,不是這個(gè),是它的簡(jiǎn)化版:模塊測(cè)試,是設(shè)計(jì)工程師完成代碼設(shè)計(jì)后,需要自己做的這部分驗(yàn)證工作。IC驗(yàn)證,我們將會(huì)在后續(xù)文章中,專(zhuān)門(mén)講解。
為什么說(shuō)設(shè)計(jì)工程師做的模塊測(cè)試是IC驗(yàn)證的簡(jiǎn)化版?
在回答這個(gè)問(wèn)題之前,我們先了解幾個(gè)概念:
這個(gè)幾個(gè)概念在軟件工程中都有介紹,IC設(shè)計(jì)驗(yàn)證中一樣存在這幾個(gè)概念涉及的工作,所以直接借用。
白盒測(cè)試,一般是針對(duì)代碼結(jié)構(gòu)進(jìn)行的測(cè)試,所以也有稱(chēng)白盒測(cè)試為“結(jié)構(gòu)測(cè)試”。
黑盒測(cè)試,一般是行為測(cè)試,把設(shè)計(jì)當(dāng)黑盒子,不用看代碼不用針對(duì)代碼結(jié)構(gòu)進(jìn)行測(cè)試。我們前面提到的IC驗(yàn)證,通常指的“功能驗(yàn)證”,就屬于“黑盒測(cè)試”。
灰盒測(cè)試,介于白盒測(cè)試和黑盒測(cè)試之間,兼顧兩者優(yōu)點(diǎn)。
在實(shí)際工作中,設(shè)計(jì)工程師完成代碼設(shè)計(jì)之后,交給驗(yàn)證工程師之前,除了檢查語(yǔ)法、可綜合性之外(當(dāng)然還有其他檢查,設(shè)計(jì)剛?cè)腴T(mén),不用關(guān)心這么多),還需要進(jìn)行基本的測(cè)試,這個(gè)基本的測(cè)試,原則上應(yīng)該是白盒測(cè)試。
實(shí)際上,因?yàn)槿吭O(shè)計(jì)工程師構(gòu)造測(cè)試?yán)齺?lái)做覆蓋完成白盒測(cè)試的工作量太大,一般都用更實(shí)際的做法:簡(jiǎn)單的功能測(cè)試。
做法:確認(rèn)設(shè)計(jì)的代碼基本可以工作,基本的讀寫(xiě)沒(méi)有問(wèn)題后,就交給驗(yàn)證工程師來(lái)做“IC驗(yàn)證”,也就是功能驗(yàn)證。當(dāng)然,不同的團(tuán)隊(duì)對(duì)設(shè)計(jì)交付代碼質(zhì)量的要求不一樣,那么測(cè)試的內(nèi)容和工作量也有差異。
二、Timer測(cè)試方案
Timer的測(cè)試方案涵蓋的內(nèi)容包括:測(cè)試內(nèi)容、測(cè)試?yán)y(cè)試平臺(tái)結(jié)構(gòu),在實(shí)際操作中,有些團(tuán)隊(duì)略去了測(cè)試內(nèi)容的梳理和測(cè)試平臺(tái)結(jié)構(gòu)的設(shè)計(jì),僅僅構(gòu)造了一些這對(duì)基本功能的測(cè)試?yán)?,我們這部分保留這些內(nèi)容,但是做了精簡(jiǎn)。
1.測(cè)試內(nèi)容
Timer模塊的白盒測(cè)試,簡(jiǎn)化為基本的功能測(cè)試,如:
- 對(duì)總線(xiàn)接口的讀寫(xiě)檢查
- 對(duì)模塊寄存器的復(fù)位值的檢查;
- 對(duì)寄存器讀寫(xiě)的檢查;
- 對(duì)計(jì)數(shù)基本功能的檢查;
- 對(duì)代碼行、if語(yǔ)句各分支的執(zhí)行檢查等;
針對(duì)這些功能,構(gòu)造相應(yīng)的測(cè)試?yán)M(jìn)行測(cè)試。
2.測(cè)試?yán)?/strong>
根據(jù)規(guī)格書(shū)上梳理待測(cè)試的功能。實(shí)際操作時(shí)有的工程師會(huì)簡(jiǎn)化,經(jīng)測(cè)試基本功能,確認(rèn)設(shè)計(jì)可以動(dòng)起來(lái)。如下表格是測(cè)試?yán)钠巍?/p>
3.測(cè)試平臺(tái)結(jié)構(gòu)
完成待測(cè)試功能的梳理和測(cè)試?yán)臉?gòu)造,我們接著要做是,設(shè)計(jì)構(gòu)造測(cè)試平臺(tái)(Testbench)。
DUT:待測(cè)試對(duì)象(Device Under Test),也就是我們前面用Verilog或VHDL寫(xiě)的RTL設(shè)計(jì)代碼。
激勵(lì):DUT和testbench之間只能通過(guò)頂層接口連接,所以,所有的測(cè)試數(shù)據(jù)都必須按照頂層接口的時(shí)序要求,輸入進(jìn)DUT中。這里的測(cè)試數(shù)據(jù)也叫測(cè)試?yán)蛘邷y(cè)試向量。測(cè)試?yán)?,一般是采用直接測(cè)試?yán)M(jìn)行測(cè)試,這種測(cè)試方式針對(duì)性強(qiáng),能夠快速將模塊驅(qū)動(dòng)起來(lái)。
結(jié)果比較:等待DUT輸出結(jié)果(DUT會(huì)有標(biāo)識(shí),或通過(guò)主機(jī)輪詢(xún),或DUT自己有標(biāo)識(shí)接口),testbench必須按照頂層接口的時(shí)序要求,取出DUT的輸出結(jié)果,再與期望值比較,最后將比較結(jié)果打印出來(lái),便于查看。
三、Timer測(cè)試平臺(tái)實(shí)現(xiàn)
實(shí)現(xiàn)語(yǔ)言: 可以用verilog語(yǔ)言,或者VHDL語(yǔ)言,或者SystemVerilog語(yǔ)言等。
仿真工具 :Modelsim、VCS、NC-Verilog/NC-VHDL
下面是平臺(tái)代碼實(shí)現(xiàn)的片段。
1. 頂層文件代碼
頂層包含:
- 時(shí)鐘和復(fù)位信號(hào)的定義;
- 時(shí)鐘周期的參數(shù)定義;
- 驗(yàn)證環(huán)境文件的導(dǎo)入;
- 時(shí)鐘的產(chǎn)生;
- 復(fù)位信號(hào)的產(chǎn)生;
- 模塊的例化;
- 在初始化中運(yùn)行測(cè)試?yán)蝿?wù);
2 .總線(xiàn)激勵(lì)
假定Timer的總線(xiàn)接口是Z總線(xiàn),下面的代碼就是實(shí)現(xiàn)一個(gè)Z總線(xiàn)的寫(xiě)操作,將wdata寫(xiě)入zaddr這個(gè)地址里面。
3.測(cè)試?yán)?/strong>
測(cè)試?yán)饕菍⑸厦娴目偩€(xiàn)驅(qū)動(dòng)task調(diào)用起來(lái)對(duì)模塊進(jìn)行驅(qū)動(dòng),讓模塊正常工作起來(lái)。同時(shí)設(shè)定一定的循環(huán)次數(shù),每一次新的運(yùn)行需要等待中斷到來(lái)之后進(jìn)行新的寄存器配置。
4.結(jié)果比較
為了提高debug效率,將從DUT出來(lái)的結(jié)果和理想結(jié)果進(jìn)行自動(dòng)對(duì)比,并將對(duì)比結(jié)果打印出來(lái)。
結(jié)果比較一般流程是等待DUT的中斷到來(lái),然后讀取Timer的寄存器的值與期望值做比較。
四、測(cè)試平臺(tái)Debug注意事項(xiàng)
- 在對(duì)整個(gè)testbench進(jìn)行編譯時(shí)候,初期語(yǔ)法錯(cuò)誤較多,這時(shí)候需要多聯(lián)系上下文來(lái)check,很多時(shí)候工具報(bào)的問(wèn)題不在出錯(cuò)誤的地方。
- Debug經(jīng)常遇到的問(wèn)題是測(cè)試?yán)芩?,這種情況一般是等待的事件沒(méi)有等到,或者寄存器配置錯(cuò)誤。
-
寄存器
+關(guān)注
關(guān)注
31文章
5275瀏覽量
119677 -
IC設(shè)計(jì)
+關(guān)注
關(guān)注
37文章
1290瀏覽量
103628 -
VHDL語(yǔ)言
+關(guān)注
關(guān)注
1文章
113瀏覽量
17959 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59631 -
DUT
+關(guān)注
關(guān)注
0文章
189瀏覽量
12275
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論