證重用具有現實(shí)意義
但大部分人并沒(méi)有意識到,如果一個(gè)項目組不按照一個(gè)已經(jīng)被證實(shí)有效的驗證重用方法來(lái)做,要做到驗證重用會(huì )是多么困難。舉個(gè)例子,一個(gè)原有的模塊已經(jīng)針對一個(gè)特定的設計環(huán)境設計并驗證通過(guò)了,而現在項目組想要在一個(gè)和原先的設計環(huán)境不一樣的環(huán)境中使用這個(gè)模塊。即便新的設計和原來(lái)的設計只是有細微的差別,驗證組的工程師還是不能主觀(guān)地認為這個(gè)模塊在新的環(huán)境中能夠像在原來(lái)的環(huán)境中一樣正常地工作?,F在使用這個(gè)模塊的項目組的工程師可能并不是原先設計這個(gè)模塊的,他們怎么知道這個(gè)模塊在某個(gè)特定的應用環(huán)境里可以正常工作呢?如果他們并不知道該模塊的深層次結構信息,又怎么能夠去驗證它呢?
考慮到現在驗證工作已經(jīng)占到整個(gè)開(kāi)發(fā)周期的50%到80%,如果能夠重復利用一些驗證工作,哪怕只是減少驗證周期的一小部分時(shí)間,都會(huì )對縮短整個(gè)開(kāi)發(fā)周期有很大的影響。并且,如果能夠按照一個(gè)已經(jīng)被證明過(guò)的、經(jīng)過(guò)實(shí)踐的方法去做,驗證工作也就走上了一條正確的軌道。
驗證重用的三個(gè)層次
驗證重用具有三個(gè)層次,必須在開(kāi)發(fā)驗證重用策略的時(shí)候考慮到以下三個(gè)方面:
不同抽象等級之間的重用,在單一項目中的重用以及不同項目之間的重用。
不同抽象等級之間的重用指的是,將最開(kāi)始用來(lái)驗證初始C++模型的驗證環(huán)境應用到后面修正過(guò)的模型,如System C到RTL,到門(mén)級,最后到芯片模型。
在單一項目中的重用是,在開(kāi)發(fā)和驗證周期的不同階段重復使用驗證代碼。一個(gè)很好的例子就是將驗證代碼從模塊級別提升到整體級別,然后是系統級別。這些重復使用的驗證代碼包括很多部分,當在不同抽象等級中使用這些代碼的時(shí)候,有些部分是要被舍棄掉的,但是這樣的重復使用對于開(kāi)發(fā)整個(gè)驗證方法還是有很大好處的(見(jiàn)圖1)。
在不同項目之間的重用指的是,將以前做過(guò)的項目中的驗證代碼拿到新一代產(chǎn)品中進(jìn)行使用,或者是將原先的驗證代碼放到一個(gè)使用標準模塊或者和先前設計類(lèi)似的但是全新的設計中去。
驗證重用的要求
不管驗證工作組怎樣重復使用驗證環(huán)境,要重用驗證環(huán)境是有一些特定要求的。一開(kāi)始,設計和驗證組需要有一個(gè)能夠允許驗證部件重復使用的驗證方法。舉例來(lái)說(shuō),當驗證一個(gè)系統中單個(gè)模塊的時(shí)候,針對每一個(gè)模塊的測試平臺都必須包括三個(gè)部分:一個(gè)信號發(fā)生器用來(lái)產(chǎn)生輸入去驅動(dòng)仿真器,一個(gè)檢查器用來(lái)檢查數據和協(xié)議的正確性,還有一個(gè)覆蓋率分析器。
為了在系統層次上重用這些部分,驗證組需要保持這三個(gè)部分在模塊級別的測試平臺具有獨立性,這樣才能夠將可重復使用的部分在系統級的驗證環(huán)境中結合起來(lái)。并且,當這些部分應用在不同的端口和接口的時(shí)候,必須區分它們。
當模塊被整合到系統設計中的時(shí)候,驗證人員可以重復使用模塊中的檢查和覆蓋的部分,然后添加額外的檢查和覆蓋的代碼,這些代碼用來(lái)檢查模塊之間的相互關(guān)聯(lián)。
從單一的模塊級別到系統級別的驗證中,重復使用激勵產(chǎn)生的部分通常來(lái)說(shuō)比較困難,因為不是要驅動(dòng)單個(gè)的模塊,而是要測試這些模塊整合在一起的性能。但是如果存在一個(gè)方法,能夠做到檢查和覆蓋的重復使用,而且能夠針對保留外部接口的端口和接口的激勵產(chǎn)生部分重復,對于驗證工程師同樣可以節約大量的時(shí)間。
驗證組需要達到最理想的重用效果, 需要知道可擴展性這個(gè)關(guān)鍵的特點(diǎn)?;旧?,這一特點(diǎn)是指在外部將一段已經(jīng)存在的驗證代碼加以擴展。舉例來(lái)說(shuō),驗證工作組需要重復利用一些驗證代碼,因為這些代碼幾乎提供了所有需要的檢查和覆蓋分析。 一個(gè)可擴展的驗證環(huán)境可以讓驗證人員直接在外部擴展原來(lái)的驗證代碼以適應新的設計,而不需要改動(dòng)原來(lái)的代碼。 換言之,驗證人員能夠使用現成的代碼,并且根據當前系統規格的要求修改或者關(guān)掉原先代碼中的一些功能,但是對于原先的驗證環(huán)境不造成任何影響。 事實(shí)上,原始的驗證環(huán)境甚至可能是經(jīng)過(guò)加密、不能進(jìn)行改動(dòng)的,這些被加密過(guò)的驗證環(huán)境還是提供了可擴展的特性,從而使其在后面的設計驗證中還能起到作用。
值得注意的是,如果軟件語(yǔ)言具備一個(gè)特性,能夠被用來(lái)實(shí)現這種可擴展性,這種可擴展的方法就被大大簡(jiǎn)化了。e語(yǔ)言就是一個(gè)可擴展的驗證語(yǔ)言的很好例子。 IEEE正在審核Verisity提供的e語(yǔ)言,很快就會(huì )成為標準,編號為IEEE P1647。
驗證重用的最后一個(gè)要求是可配置性。驗證工程師需要軟件有能力配置代碼來(lái)符合所驗證的設計。通過(guò)在另外的文件中添加約束,工程師能夠設置控制原代碼操作的參數。通過(guò)在測試平臺使用約束條件來(lái)建立不同模塊之間的關(guān)聯(lián)性。舉例來(lái)說(shuō),如果針對設計中的兩個(gè)單獨的接口創(chuàng )建了兩個(gè)激勵發(fā)生器,約束條件能夠在這兩個(gè)激勵發(fā)生器的頂端控制它們的工作(通過(guò)擴展它們針對特定測試目的的定義),從而使得兩個(gè)激勵發(fā)生器所產(chǎn)生的測試激勵具有相關(guān)性。
能否獲得現成的驗證IP
市場(chǎng)上已經(jīng)有現成的驗證IP。工程師可以針對標準接口購買(mǎi)這些驗證環(huán)境,然后把它們放到特定的設計里面。Verisity公司提供了eVC,這是針對標準接口,用e語(yǔ)言來(lái)搭建的驗證環(huán)境(見(jiàn)圖2)。
這些eVC支持上面提到的驗證重用的各種要求,包括針對該接口的各種信號生成器、時(shí)序檢查器以及覆蓋分析器。同時(shí),e語(yǔ)言的可擴展性也使得工程師能夠很方便地將eVC中的驗證環(huán)境接入到工程師當前要搭建的驗證環(huán)境中來(lái),并且可以針對工程師的不同應用要求進(jìn)行不同的擴展。并且,這些eVC所提供的驗證環(huán)境同樣是可配置的,工程師可以根據需要,配置幾乎所有的方面,并且所有這些配置都不需要進(jìn)入eVC代碼內部去做任何修改。
這些eVC和其他的商用IP一樣,能夠大大提高驗證的效率和質(zhì)量,并且這些eVC已經(jīng)經(jīng)過(guò)完全的測試。就像前面所提到的,驗證是整個(gè)開(kāi)發(fā)周期中最長(cháng)和最難的部分,任何可以簡(jiǎn)化驗證過(guò)程的做法都會(huì )給驗證工程師帶來(lái)很大的幫助。
結語(yǔ)
驗證重用已經(jīng)被證實(shí)是非常有好處的,要得到驗證重用的好處,必須在一開(kāi)始就有一個(gè)能夠提供可擴展的驗證方法,在擁有一些預先封裝好的現成的驗證組件后,驗證重用并不是想像的那么困難?!?/span>
評論