驗(yàn)證復(fù)用技術(shù)確保設(shè)計(jì)符合預(yù)定要求
出處:maychang 發(fā)布于:2007-04-03 17:24:12
系統(tǒng)級芯片是由已經(jīng)設(shè)計(jì)好的模塊組成的,設(shè)計(jì)人員事先已考慮到了各個(gè)方面,并對每一部分都進(jìn)行了檢驗(yàn),現(xiàn)在只需要把這些模塊組合起來,集成為一個(gè)完整的系統(tǒng)即可。但問題是怎樣使集成好的系統(tǒng)能像各個(gè)模塊一樣可靠完整呢?怎樣以快的速度完成呢?如何才能在一項(xiàng)工作完成之后再集成另一個(gè)芯片時(shí),盡管每一步都不同也不會(huì)覺得又是完全從頭開始呢?本文介紹利用驗(yàn)證復(fù)用技術(shù)對芯片進(jìn)行測試,確保設(shè)計(jì)符合原來預(yù)定的要求。
在設(shè)計(jì)復(fù)用中,驗(yàn)證就像汽車的剎車一樣,我們都知道如何制作結(jié)構(gòu)模塊,怎樣使接口標(biāo)準(zhǔn)化并使用兼容的后端流程,但恰恰是驗(yàn)證使我們無法再高興下去。的確,我的模塊和你的模塊都有很好的測試平臺(tái)和測試軟件,然而將它們放在一起時(shí),卻需要新的測試平臺(tái)和全新的測試,每一個(gè)集成步驟都好像要重新來過。驗(yàn)證不像其它設(shè)計(jì)任務(wù)那樣可以累積,這就是為什么隨著設(shè)計(jì)變得越來越大,花在驗(yàn)證上的時(shí)間也越來越多。下面介紹一些方法使驗(yàn)證工作能夠重復(fù)使用,這樣項(xiàng)目的集成就是可以預(yù)測的而不是掉入一個(gè)無底洞。我們以國家半導(dǎo)體公司的Geode GX2為例,許多此類想法都是針對Geode系列集成處理器開發(fā)的,而GX2項(xiàng)目也證明了這種方法非常成功。
驗(yàn)證環(huán)境包含許多部分,如測試平臺(tái)組件、測試軟件、隨機(jī)測試生成器、測試計(jì)劃、規(guī)定條件和覆蓋范圍分析,要想解決集成瓶頸,上述所有部分在下一結(jié)構(gòu)層次也必須可重復(fù)使用,這些驗(yàn)證部分的建立和調(diào)試時(shí)間將比花在設(shè)計(jì)模塊本身上面的還要多,如果不能重復(fù)利用,這部分工作將難以想象。
驗(yàn)證復(fù)用既不簡單也不輕松,需要做大量工作以使驗(yàn)證環(huán)境不僅好而且可以復(fù)用,但結(jié)果是很明顯的。下面首先介紹在模塊級如何進(jìn)行驗(yàn)證,然后說明需要驗(yàn)證組合模塊時(shí)如何復(fù)用模塊驗(yàn)證工作。
測試平臺(tái)組件
測試平臺(tái)組件可以激勵(lì)設(shè)計(jì)并觀察評估其反應(yīng)特性。測試平臺(tái)必須是針對待測模塊的,我們發(fā)現(xiàn)通過將測試平臺(tái)以某種規(guī)范方式組織起來,并使各組件之間通信方式標(biāo)準(zhǔn)化之后,將可在下集成時(shí)再利用這些組件。
一個(gè)模塊規(guī)范測試平臺(tái)包括測試閱讀器、處理器、監(jiān)視器、仿真器和檢驗(yàn)器。測試閱讀器讀取測試語言并將其轉(zhuǎn)化為一系列命令轉(zhuǎn)給處理器,處理器驅(qū)動(dòng)待測模塊輸入信號(hào),監(jiān)視器觀察模塊的反應(yīng)特性并按照事件序列做出。
仿真器是設(shè)計(jì)參考模塊,我們用C++編寫仿真程序,這些仿真程序是對事件處理而不是對周期。給仿真程序輸入和處理器相同的命令序列,它將產(chǎn)生我們認(rèn)為模塊應(yīng)該具有的反應(yīng)序列。
檢驗(yàn)器得到從仿真程序輸出的事件數(shù)據(jù)流和從監(jiān)視器輸出的事件數(shù)據(jù)流,將兩者進(jìn)行比較并將不匹配作為錯(cuò)誤出來。
許多設(shè)計(jì)人員習(xí)慣于在測試平臺(tái)中使用監(jiān)視器和處理器,卻將仿真器和檢驗(yàn)器視為額外的工作。編寫自查測試或使用判定語句和智能監(jiān)視器來查找錯(cuò)誤確實(shí)比較簡單,但我們發(fā)現(xiàn)編寫仿真程序和傻瓜式監(jiān)視器及檢驗(yàn)器常常比編寫智能監(jiān)視器更加簡單,它使得測試不必檢查其自身,這樣隨機(jī)測試更加容易。
這種測試平臺(tái)組織方法的真正優(yōu)越性還體現(xiàn)在集成上。例如可以湊出一個(gè)測試平臺(tái),用另一個(gè)模塊的仿真程序來驅(qū)動(dòng)處理器而不用自己的測試程序,這樣可以在不更改模塊的前提下運(yùn)行另一模塊的所有測試?;蛘咭部梢允褂脙蓚€(gè)監(jiān)視器、兩個(gè)仿真器和兩個(gè)檢驗(yàn)器分別說明兩個(gè)模塊,如果原模塊輸入是點(diǎn)對點(diǎn)來自于另一個(gè)模塊,則只要去掉原處理器運(yùn)行另一個(gè)模塊測試程序即可;如果原模塊輸入是多路驅(qū)動(dòng)器總線,則可以保留兩個(gè)處理器同時(shí)進(jìn)行兩個(gè)測試,每個(gè)測試的內(nèi)容從各模塊測試程序中選取。通過在模塊級測試平臺(tái)上做一些額外工作,可以得到能在集成測試平臺(tái)使用的組件。
這種復(fù)用性能可一直延伸到結(jié)構(gòu)上層,通過將仿真器和處理器混合匹配在一起,你可以測試任意組合形式模塊而無需設(shè)計(jì)新的測試平臺(tái)組件。
Geode GX2設(shè)計(jì)小組針對每個(gè)主要模塊使用一種測試平臺(tái),如存儲(chǔ)器控制器、PCI接口、處理器內(nèi)核和顯示控制器(圖1),我們將各部件組合起來做成組合模塊測試平臺(tái),到項(xiàng)目收尾階段我們使用了40個(gè)不同的測試平臺(tái),這些測試平臺(tái)都共享測試組件。
測試計(jì)劃
每一個(gè)驗(yàn)證環(huán)境都應(yīng)該有一個(gè)測試計(jì)劃,建議你將它寫下來。測試計(jì)劃就像鍛煉一樣:我們知道應(yīng)該做,但有時(shí)就是不想做,因?yàn)樘闊S?jì)劃做好后應(yīng)將整個(gè)小組集合起來,集思廣益討論測試方法,要經(jīng)常這樣做而且越早越好。測試計(jì)劃也應(yīng)是可重復(fù)利用的,我們選擇一個(gè)可以描述極端情況的簡單格式,然后記下這些情況是否已被考慮,以及由哪個(gè)測試完成。如果測試計(jì)劃使用通用語言,還可以有一些工具能根據(jù)計(jì)劃追蹤進(jìn)度,并且在到達(dá)集成時(shí)將測試計(jì)劃累積起來。
有關(guān)驗(yàn)證一個(gè)很困難且無法回避的事實(shí)是,沒有什么可以替代用手工仔細(xì)編寫的測試程序。這是一種勞動(dòng)密集型工作,其編寫和調(diào)試非常單調(diào)乏味。但如果誰要能夠編寫覆蓋極端情況的測試程序,那么他將是一個(gè)很好的邏輯設(shè)計(jì)師,事實(shí)上模塊設(shè)計(jì)師應(yīng)該編寫大部分測試程序,在數(shù)字設(shè)計(jì)中黑盒測試和白盒測試都很重要。
我們設(shè)計(jì)了一個(gè)C++應(yīng)用程序接口作為外圍模塊測試語言,而將X86匯編語言用于處理器內(nèi)核。但是具體的測試語言要根據(jù)設(shè)計(jì)類型決定,測試語言越少越好,這一點(diǎn)很重要,是只有一種。如果不同的模塊可以用同一語言進(jìn)行測試,那么在硬件運(yùn)行這些測試或今后設(shè)計(jì)采用新模塊組合時(shí)可以節(jié)約大量人工。
驗(yàn)證的一個(gè)重要部分是隨機(jī)測試,對Geode GX2我們編寫了上千條測試程序并生成了更多的隨機(jī)測試。我們對想得到的任何事情進(jìn)行隨機(jī)處理:中斷、停止、調(diào)試中斷、探測、存儲(chǔ)器延遲、I/O延遲、仲裁形式等等,如果隨時(shí)都可以用兩種方法,那么確保兩個(gè)都做,并在兩者之間進(jìn)行均衡。
設(shè)計(jì)中有些地方只有邏輯設(shè)計(jì)師知道,他們需要將這些部分作為規(guī)定內(nèi)容進(jìn)行編碼,然后在每次仿真時(shí)都可自動(dòng)進(jìn)行檢查。規(guī)定內(nèi)容就像一個(gè)微型監(jiān)視器,它可檢查一些條件并且在違反這些條件時(shí)使測試失效。例如你可以規(guī)定兩個(gè)信號(hào)不能在同一時(shí)刻出現(xiàn),或一個(gè)信號(hào)不能在另一個(gè)信號(hào)的六個(gè)周期內(nèi)出現(xiàn),或FIFO不能溢出等等。無論怎樣規(guī)定和定義數(shù)字接口,我們總要假設(shè)接口是怎樣使用的,并經(jīng)常在口頭上對其它設(shè)計(jì)師講清這些假設(shè)。我們應(yīng)該做一些額外的工作將假設(shè)作為一個(gè)規(guī)定寫到設(shè)計(jì)中去,這樣兩年后當(dāng)你不認(rèn)識(shí)的人使用你的設(shè)計(jì)時(shí),或者接口協(xié)議有輕微改變時(shí),都可以容易地取消這些規(guī)定直接解決問題。
一些設(shè)計(jì)人員喜歡這種規(guī)定是因?yàn)樗鼈兪拐{(diào)試變得十分簡單,而有些人則必須要經(jīng)過勸說他們才會(huì)使用。其實(shí)這是很值得的,它將使你的設(shè)計(jì)更加完善。由于它們是模塊RTL邏輯的一部分,所以對集成復(fù)用并不重要。這種規(guī)定的另一個(gè)好處是可將它們提供給靜態(tài)規(guī)則檢查器,我們在Geode GX2上使用了等效檢查器而不是靜態(tài)規(guī)則檢查器。正式檢驗(yàn)工具在特性和處理復(fù)雜性方面發(fā)展得很快,即使有好的測試計(jì)劃、好的測試平臺(tái)和隨機(jī)測試,驗(yàn)證也只是一個(gè)沒有覆蓋范圍分析的開環(huán)過程,只有覆蓋范圍分析能告訴你所做的工作狀況怎樣并顯示哪些地方仍需要關(guān)注。為成熟的覆蓋工具是代碼覆蓋工具,它能檢查所有已編寫并正在使用的代碼,或設(shè)計(jì)中正在擺動(dòng)的每一個(gè)信號(hào)、設(shè)計(jì)中每個(gè)翻轉(zhuǎn)的觸發(fā)器等等。Geode GX2小組使用的代碼覆蓋工具結(jié)果在90%到99%之間,我們還計(jì)劃了一個(gè)功能覆蓋工具但后來沒有時(shí)間和資源來實(shí)現(xiàn)它。
總而言之,只在模塊自身環(huán)境下對其進(jìn)行測試集成是不夠的,需要運(yùn)行一些測試,必須在集成以后再利用驗(yàn)證組件(包括測試程序、測試生成器、測試平臺(tái)設(shè)備、覆蓋范圍分析等等)對每個(gè)模塊進(jìn)行徹底的測試。當(dāng)可以重復(fù)利用所有這些工作時(shí),這種集成就將僅僅只是集成而不是全部再從頭設(shè)計(jì)。
作者:Will Walker
工程經(jīng)理
國家半導(dǎo)體公司
電子工程專輯
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識(shí)介紹2025/8/29 16:58:56
- SQL核心知識(shí)點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識(shí)2025/6/18 16:30:52
- 汽車電子常用電子元器件選型指南
- MOSFET驅(qū)動(dòng)與隔離方案設(shè)計(jì)
- 高溫環(huán)境下電源IC選型建議
- 安防監(jiān)控設(shè)備連接器應(yīng)用分析
- 高速PCB信號(hào)完整性(SI)設(shè)計(jì)核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計(jì)算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計(jì)
- 連接器耐腐蝕性能測試方法
- PCB電磁兼容(EMC)設(shè)計(jì)與干擾抑制核心實(shí)操規(guī)范









