應(yīng)對百萬門級系統(tǒng)級芯片驗(yàn)證挑戰(zhàn)的可擴(kuò)展解決方案
在系統(tǒng)層次上,由于抽象層次混雜,系統(tǒng)內(nèi)部存在的不同語義,因此糾錯(cuò)工作變得更加復(fù)雜。在異類環(huán)境,比如硬件和軟件或數(shù)字 和模擬環(huán)境中,挑戰(zhàn)就會(huì)更為嚴(yán)峻。因此,信息不僅必須可用,而且必須在正確的語義背景下可用。同樣,利用多層次抽象,信息也必須在必需的抽象層次上可用。
例如,對軟件糾錯(cuò)時(shí),有關(guān)軟件程序執(zhí)行的所有信息都包含在硬件記憶體中,但沒有任何東西是隨時(shí)可用的。了解變量放置在何處 正是解決方案的發(fā)端。它還必須確定信息保存在哪個(gè)芯片之中以及芯片中的相對位置,假定它并非緩存或寄存器。在許多情況下,即使在這種時(shí)候,數(shù)據(jù)還可能因?yàn)?數(shù)據(jù)或地址交叉原因而未按邏輯排序。因此,獲得變量值就可能非常復(fù)雜。
為了化解這些挑戰(zhàn),新的糾錯(cuò)方法正在不斷推廣。例如斷言或檢查器,盡管其用途并未得到完全理解。另一個(gè)容易引起混淆的問題 則涉及覆蓋率問題。許多工程師并未認(rèn)識到,滿足代碼覆蓋率標(biāo)準(zhǔn)并不意味著系統(tǒng)已經(jīng)得到適當(dāng)驗(yàn)證。同樣,我們還必須使用功能覆蓋率或斷言覆蓋率等其它標(biāo)準(zhǔn)來 確認(rèn)該設(shè)計(jì)已經(jīng)得到完全驗(yàn)證。
今天,絕大多數(shù)工程師都在創(chuàng)建激勵(lì)源,并將其饋送進(jìn)入執(zhí)行引擎之中,這樣他們就可以對產(chǎn)生的響應(yīng)進(jìn)行分析(圖4)。在許多 情況下,他們對照參照模型對該設(shè)計(jì)的某項(xiàng)實(shí)施的波形進(jìn)行比較,尋找不同之處。這是一種單調(diào)乏味且毫無把握的糾錯(cuò)途徑,也正是眾多錯(cuò)誤不被發(fā)現(xiàn)的原因所在。 我們很容易將注意力集中在手邊的問題,同時(shí)錯(cuò)過這樣一個(gè)事實(shí),即有些地方已經(jīng)出錯(cuò),或目前的測試平臺(tái)無法反映新的問題。
設(shè)計(jì)人員必須擺脫當(dāng)前的絕大多數(shù)糾錯(cuò)方法,因?yàn)榫捅举|(zhì)而言它們都是單調(diào)的、重復(fù)的且不可能行得通。在設(shè)計(jì)流程的稍后階段,等效性檢查可能是一項(xiàng)非常強(qiáng)大的工具。等效性檢查可用于對照參考模型測試實(shí)施情況,但它采用形式驗(yàn)證的方法,而不是試圖通過模擬比較兩套波形。
最近,其它一些測試平臺(tái)組件已經(jīng)臻于成熟達(dá)到可用程度,比如生成器、預(yù)測器和檢查器等。它們允許自動(dòng)生成測試預(yù)案,并對照期 望行為檢查響應(yīng)成果。其中最成熟的當(dāng)屬檢查器,也即斷言?,F(xiàn)有兩種類型斷言,即依賴測試內(nèi)容的斷言和不依賴測試內(nèi)容的斷言。依賴測試內(nèi)容可以輕松插入現(xiàn)有 驗(yàn)證方法中,無需其它工具支持;不依賴測試內(nèi)容的斷言則與生成器聯(lián)系,需要其它工具并改進(jìn)驗(yàn)證方法。
故事并不止于此,因?yàn)槟壳斑€有一些尚未精確定義的測試平臺(tái)組件,比如功能覆蓋率、測試計(jì)劃以及驗(yàn)證管理等。盡管這種測試平 臺(tái)轉(zhuǎn)換尚需幾年時(shí)間才能完成,但一旦完成,人們夢寐以求的可執(zhí)行計(jì)劃規(guī)范就將實(shí)現(xiàn),不過其方式已經(jīng)迥異于業(yè)界最初的預(yù)測。它不會(huì)用于自動(dòng)執(zhí)行設(shè)計(jì)流程,但 將應(yīng)用于自動(dòng)執(zhí)行驗(yàn)證流程。
基于斷言的驗(yàn)證
如前所述,測試平臺(tái)受到兩大獨(dú)立因素的制約:可控制性和可觀察性??煽刂菩钥傻韧诩?lì)源插入后測試平臺(tái)激活設(shè)計(jì)中存在問題的能力。它與代碼覆蓋率存在非常密切的關(guān)系,也正是我們在運(yùn)用代碼覆蓋率時(shí)必須小心謹(jǐn)慎的原因所在,因?yàn)樗⑽纯紤]測試平臺(tái)的其它方面因素。
問題的另一半則是可觀察性。故障一旦出現(xiàn),兩件事情必須發(fā)生。首先是這一故障所產(chǎn)生的效應(yīng)必須傳播至主要輸出,隨后故障必須 被發(fā)現(xiàn)。對大多數(shù)測試平臺(tái)來說,接受驗(yàn)證的主要輸出的數(shù)量非常少,因此我們會(huì)對許多問題視而不見。這正是斷言之所以強(qiáng)大的原因所在。斷言對可觀察性造成積 極影響,提供多項(xiàng)好處。它們能夠明確除錯(cuò)的主要原因DD而非次要或第三位原因DD糾錯(cuò)工作變得更為輕松和快速。這是因?yàn)樗鼈兡軌蚍稚⒃谡麄€(gè)設(shè)計(jì)之中,產(chǎn)生 實(shí)際的主要輸出,后者則自動(dòng)檢查驗(yàn)證對象的行為好壞。
這樣,測試平臺(tái)就不必再將這些錯(cuò)誤效應(yīng)傳播至實(shí)際的主要輸出,使得測試平臺(tái)的開發(fā)變得更加容易。另外,我們還可以對大量數(shù) 據(jù)進(jìn)行驗(yàn)證,否則的話它們將被忽略。斷言還開展數(shù)據(jù)檢查,使得測試平臺(tái)更加有效。某項(xiàng)斷言一旦設(shè)計(jì)完成并被置入設(shè)計(jì)中,那么它就總是處在運(yùn)行狀態(tài)。在許多 情況下,斷言檢查的東西并非測試的主要內(nèi)容,因此它們將會(huì)發(fā)現(xiàn)非預(yù)期故障。例如,在模塊測試階段插入的斷言在集成階段乃至系統(tǒng)層次測試中都會(huì)執(zhí)行其檢查功 能,這樣就可以提供更為廣闊的驗(yàn)證覆蓋面。
最后,斷言使得測試的范圍更為寬廣。運(yùn)用基于斷言的驗(yàn)證技術(shù)的工程師經(jīng)常發(fā)現(xiàn),其檢錯(cuò)速度遠(yuǎn)遠(yuǎn)超過非斷言技術(shù)。這樣就可以 抵消編寫和放置斷言造成的總體開銷DD約占3%總開銷時(shí)間以及10%總運(yùn)行開銷時(shí)間。運(yùn)用斷言的公司報(bào)告稱,在其所有程序錯(cuò)誤中,大部分是通過斷言來發(fā)現(xiàn) 的,其糾錯(cuò)時(shí)間也縮短了80%之多。
斷言可以嵌入設(shè)計(jì)之中,或者其規(guī)定內(nèi)容可以獨(dú)立于設(shè)計(jì),并附加在設(shè)計(jì)中的各個(gè)點(diǎn)。是內(nèi)部還是外部則部分取決于誰在創(chuàng)建這一 斷言,比方說創(chuàng)建人員是設(shè)計(jì)人員還是獨(dú)立的驗(yàn)證工程師。如果它們被嵌入設(shè)計(jì)之中,則主要驗(yàn)證技術(shù)規(guī)范的實(shí)施。如果屬于外部開發(fā),則將驗(yàn)證技術(shù)規(guī)范的解釋, 或在某些情況下對技術(shù)規(guī)范本身進(jìn)行驗(yàn)證。因?yàn)榍度胧綌嘌詫?shí)際上都是可執(zhí)行的注釋,因此它們可能放置在任何可以放置注釋的地方。
好處是注解現(xiàn)在變得更有價(jià)值,因?yàn)樗鼈冊诎l(fā)揮作用。注解包括期望行為的說明、設(shè)計(jì)人員作出的假設(shè)或針對期望用途作出的限制。它支持再利用,它提供有關(guān)設(shè)計(jì)的預(yù)期行為的所有各類信息,提供原設(shè)計(jì)人員的意圖。至少所有的第三方知識產(chǎn)權(quán)IP就應(yīng)該內(nèi)建接口上和用途方面的斷言。
目前,人們對斷言的主要興趣是如何進(jìn)行模擬斷言,但這并非斷言的所有功能。斷言的基礎(chǔ)是一些名為屬性的更為基礎(chǔ)的東西。屬性 可以用于斷言、功能覆蓋標(biāo)準(zhǔn)、形式檢查器以及用于偽隨機(jī)刺激生成的約束生成器。屬性既可為模擬器也可為形式分析工具所用,它能夠?qū)㈧o態(tài)和動(dòng)態(tài)驗(yàn)證技術(shù)融入 一種方法中。隨著這一領(lǐng)域中標(biāo)準(zhǔn)的來臨,在今后數(shù)年中,運(yùn)用屬性的工具預(yù)計(jì)將會(huì)迅速增長。
本文小結(jié)
設(shè)計(jì)團(tuán)隊(duì)需要運(yùn)用那些能夠在設(shè)計(jì)復(fù)雜性和多層次抽象之間擴(kuò)展的工具改進(jìn)現(xiàn)有方法??蓴U(kuò)展解決方案能夠幫助工程師開展他們目前能夠開展的工作,而且在相同時(shí)間范圍內(nèi)只會(huì)變得更好、更快且效率更高。它使得驗(yàn)證工具對用戶更為友好,并能夠在設(shè)計(jì)過程中推入更多測試向量。
評論