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