Mentor Graphics公司首席驗(yàn)證科學(xué)家Harry Foster認(rèn)為,今天的大多數(shù)設(shè)計經(jīng)理要依賴于某種驗(yàn)證覆蓋的量度來回答三個重要問題:我在哪里?去哪里?何時到? 但覆蓋的量度有很多,它們來自各種工具,表示不同的事情。對設(shè)計經(jīng)理來說,重要的是理解某個量度的真正含義。同等重要的是,經(jīng)理必須能夠?qū)⒏鞣N量度混合成為一幅圖像,它將能夠解答Foster的三個問題。最重要的是,經(jīng)理必須正確回答第三個問題的另一版本:何時該停止?作決策不僅需要不同量度的結(jié)合,而且有賴于一個詳盡的驗(yàn)證計劃,這種計劃在架構(gòu)設(shè)計的早期就已存在,并伴隨設(shè)計而成熟發(fā)展。 代碼覆蓋的概念(設(shè)計者從軟件驗(yàn)證世界中借用的同一工具)很簡單:當(dāng)運(yùn)行RTL(寄存器傳輸級)仿真時,只是維護(hù)一個1 bit寬的表,其表項(xiàng)是RTL源碼中的各個代碼行。一個仿真運(yùn)行開始時,將表中的各位清零。第一次執(zhí)行某行時,表中的相應(yīng)位設(shè)為1。仿真結(jié)束后,就獲得一個映像,它表示執(zhí)行了哪些代碼行,哪些行沒有執(zhí)行。如果某行沒有執(zhí)行,就能可靠地說你沒有驗(yàn)證它。 專家把代碼覆蓋的概念推廣到基于設(shè)計RTL視圖的很多其它覆蓋的隱式量度。你可以設(shè)計出有關(guān)RTL公式、分支或寄存器切換等覆蓋的報告工具。并且,多數(shù)這類報告都可從商用仿真工具中獲得,而無需設(shè)計專用的監(jiān)控器。 代碼覆蓋量度的早期表現(xiàn)和易于使用的特點(diǎn),使它們受到了大眾的歡迎。Foster稱Mentor公司的調(diào)查數(shù)據(jù)表明,大約一半設(shè)計團(tuán)隊(duì)在自己驗(yàn)證流中的某個地方有代碼覆蓋量度。但代碼覆蓋也有嚴(yán)重的問題。Synopsys公司研究員Janick Bergeron認(rèn)為,主要問題是“結(jié)構(gòu)的覆蓋量度是必要的,但不足以決定驗(yàn)證覆蓋”。Bergeron指出,代碼覆蓋中多數(shù)顯而易見的問題是一種邏輯問題。你執(zhí)行了一行RTL,并不意味著它做了你期望的事。 更精確地說,問題在于可觀察性與完備性。當(dāng)你執(zhí)行這行代碼時,它的結(jié)果是否傳送到了一個你在這個仿真中實(shí)際觀察的結(jié)點(diǎn)?如果不是這樣,那么你就不知道代碼是否做了你希望的事。Foster說:“我們見過有100%代碼行覆蓋的設(shè)計,但事實(shí)上,在仿真中只觀察到70%代碼行的運(yùn)行。” 完備性是一個獨(dú)立的問題。你執(zhí)行了代碼行。但你是否在所有可能激活的情況下都執(zhí)行了它?如果在它不工作的情況下會怎樣? 功能量度 這些缺點(diǎn)使很多團(tuán)隊(duì)采用功能驗(yàn)證。人們會問功能覆蓋,有多少設(shè)計中的功能做了你預(yù)期要做的事。由于這種直觀形式是經(jīng)理們用于量度驗(yàn)證的最早方式,它也是很多團(tuán)隊(duì)的支柱。 Alcatel-Lucent公司光學(xué)部硬件研發(fā)技術(shù)經(jīng)理Hans Sahm描述了這種基本方案的一個現(xiàn)代版。Sahm說:“我們從一個需求文檔開始,采用內(nèi)部開發(fā)的腳本,從需求生成一個驗(yàn)證計劃電子表。這個表列出了功能需求,以英語表述,還有驗(yàn)證團(tuán)隊(duì)選來驗(yàn)證每個需求的測試案例。”這個電子表為驗(yàn)證團(tuán)隊(duì)提供了單一的文檔,他們可以在運(yùn)行仿真時用該表檢查各種測試案例,因此就有了一個有關(guān)驗(yàn)證過程的逐項(xiàng)功能檢查表。 這個概念構(gòu)成了各種形式功能覆蓋量度的支架,但它也受到嚴(yán)重的挑戰(zhàn)。如Sahm指出的那樣,“在一個功能需求和需要驗(yàn)證它的測試案例之間沒有自動的鏈接。”要理解一種需求,并將其轉(zhuǎn)化為充分覆蓋該需求的測試,取決于驗(yàn)證工程師的技能和經(jīng)驗(yàn)。 Mentor公司的Foster稱:“思想不存在自動化。 ” Altera公司首席驗(yàn)證架構(gòu)師Jeff Fox表示:“在解譯需求文檔時總會存在一個問題。不同工程師在閱讀相同文檔時,對于功能的表現(xiàn)方式會有完全不同的想法。這就是為什么我們試圖使自己的需求文檔盡可能貼近可執(zhí)行代碼。它們必須是精確的。” Synopsys公司的Bergeron也表示同意。他評論說:“當(dāng)你建立驗(yàn)證一個功能的定向測試時,它是一個開環(huán)過程。你永遠(yuǎn)不能從結(jié)果去保證測試中不存在錯誤。” 為了解決這種對人類弱點(diǎn)的依賴性,最常用的技術(shù)是采用斷言(assertion)和約束隨機(jī)測試(constrained random test),這是Verisity公司(現(xiàn)在歸Cadence公司所有)最初倡議的。據(jù)Mentor公司的調(diào)查數(shù)據(jù),只有大約40%的驗(yàn)證團(tuán)隊(duì)在使用約束隨機(jī)測試。相應(yīng)地,大約40%團(tuán)隊(duì)在使用功能覆蓋量度。從早期開始,出現(xiàn)了許多用于書寫斷言的專門語言,但業(yè)界現(xiàn)在似乎趨同于將System Verilog用于該目的。因此,我們正在看到一種新的形式:采用System Verilog的斷言,測試斷言的約束隨機(jī)測試,以及表述為斷言覆蓋的驗(yàn)證量度。 對很多設(shè)計團(tuán)隊(duì)來說,這是個改良過程。Wipro Technologies公司半導(dǎo)體與解決方案業(yè)務(wù)部總經(jīng)理Giri Raju描述了他的設(shè)計團(tuán)隊(duì)采用的路徑。他說:“以前,我們只使用代碼覆蓋量度,跟蹤一個手工制作的交叉參考表來管理驗(yàn)證工作。我們的目標(biāo)只是100%的代碼覆蓋。我們已經(jīng)分階段地轉(zhuǎn)到功能驗(yàn)證工具,并繼續(xù)用手工表跟蹤驗(yàn)證過程。現(xiàn)在,我們正轉(zhuǎn)向System Verilog和Open Verificaton方法。” “現(xiàn)在仍需要大量工程技巧。驗(yàn)證工程師要判斷驗(yàn)證的覆蓋點(diǎn),并與設(shè)計工程師一起復(fù)審,作為一次檢查。我們相信自己可以將這個過程的80% ~ 90%實(shí)現(xiàn)自動化,但總會有某些情景下必須手動完成工作。不過斷言覆蓋驗(yàn)證量度確實(shí)對我們有幫助。我們的設(shè)計工程師現(xiàn)在已習(xí)慣在自己的代碼中插入斷言。” 生成斷言覆蓋量度過程的一個最大便利之處是能用FPGA(現(xiàn)場可編程門陣列)在System Verilog環(huán)境中作邏輯驗(yàn)證。較新的工具都允許驗(yàn)證工程師生成約束的隨機(jī)激勵模式,然后工具會在覆蓋點(diǎn)跟蹤采樣數(shù)。Altera公司的Fox 說,F(xiàn)PGA可以大大加速這一過程,它可以使團(tuán)隊(duì)將設(shè)計與斷言綜合起來,并實(shí)時或接近實(shí)時地運(yùn)行測試。這種方案可以使約束隨機(jī)測試的創(chuàng)建者涉及寬得多的網(wǎng)表,不僅能研究已知的案例,也包括未知的角落案例。 它還實(shí)現(xiàn)了事務(wù)級覆蓋的一種物理分類。例如,通過FPGA手段,驗(yàn)證工程師可以檢查一個接口的運(yùn)行,只需簡單地將FPGA連接到一個良好的外部設(shè)備上,觀察事務(wù)的情況。其想法是,如果接口能與其它芯片“良好地工作”,那么它就被100%覆蓋。 形式工具 通過代碼、功能和斷言覆蓋的量度,驗(yàn)證經(jīng)理就擁有了很多數(shù)字,能給出驗(yàn)證完成的程度。當(dāng)然,所有這些都留下了一些不能解答的問題。一些團(tuán)隊(duì)越來越多地采用形式驗(yàn)證工具,作為基于仿真技術(shù)的輔助方法。這些工具帶來了一些自己獨(dú)有的量度。 Alcatel-Lucent公司的Sahm稱:“對那些最重要的模塊,我們正在使用特性檢查的形式工具。這種方法引入了特性覆蓋(property coverage)的概念。實(shí)際上,我們使用的工具有自身內(nèi)部的完備性檢查能力,它會對特性覆蓋等作出量度,以及在一個給定場景下是否已確定了每個輸出狀態(tài)。” 作為一種方法,形式工具給出了終極的保證。在運(yùn)行結(jié)束時,你就擁有了以前違反所規(guī)定特性的全部反面實(shí)例。通過定義,可100% 地覆蓋各種特性。但也存在著特性集如何完全覆蓋設(shè)計預(yù)期的問題。于是就又回到了設(shè)計者的技能上,現(xiàn)在也許需求降低了,因?yàn)樾问津?yàn)證工具的學(xué)習(xí)曲線是出了名的困難。 融合數(shù)據(jù) 你可以看到,驗(yàn)證覆蓋不存在固定的答案。各個工具都可以告訴你如何完整地轉(zhuǎn)換 RTL代碼結(jié)構(gòu),或如何完全地檢查設(shè)計與驗(yàn)證團(tuán)隊(duì)編寫的斷言,或證實(shí)由形式驗(yàn)證專家定義的特性。但一個人工解析和創(chuàng)建的過程會將每個量度與設(shè)計預(yù)期分離開來。因此,很多設(shè)計經(jīng)理會組合不同來源的覆蓋量度,從而構(gòu)成自己對驗(yàn)證過程的圖像。 Foster說:“不同的團(tuán)隊(duì)有將覆蓋數(shù)據(jù)組合為一個單一圖像的不同方式。做CPU的經(jīng)常只用功能覆蓋的量度,但他們有做這種工作的資源。沒有資源時,一些設(shè)計團(tuán)隊(duì)仍然只用代碼行覆蓋。但你也可以結(jié)合不同種類的數(shù)據(jù)。” Foster建議一個團(tuán)隊(duì)可以從功能覆蓋量度起步。當(dāng)功能覆蓋接近100%時,團(tuán)隊(duì)可以轉(zhuǎn)向代碼覆蓋作為一種對完備性的檢查。Altera公司Fox指出,這種方案可以使團(tuán)隊(duì)準(zhǔn)確地確定功能覆蓋中的漏洞。如果一塊代碼沒有得到執(zhí)行,那么它或者是死代碼(設(shè)計團(tuán)隊(duì)?wèi)?yīng)能通過檢查確定),或者設(shè)計中的一些功能未得到覆蓋。Fox說:“在這個地方,編寫一些針對性測試。” Fox強(qiáng)調(diào)了擁有不同來源數(shù)據(jù)的重要性。他說:“比如,我們最近正在做一個接口IP塊。我們從三家供應(yīng)商買進(jìn)了第三方驗(yàn)證IP,讓兩個內(nèi)部團(tuán)隊(duì)做驗(yàn)證過程。將他們在每個方案中發(fā)現(xiàn)的數(shù)據(jù)匯集起來做一些檢查。” 尋找終點(diǎn) 即使像Fox這樣有經(jīng)驗(yàn)的經(jīng)理,何時可以說驗(yàn)證完成了?可能有人會說驗(yàn)證永遠(yuǎn)沒有盡頭。但也有人可能回應(yīng)說,當(dāng)超過計劃日程后,驗(yàn)證就完成了。不過,實(shí)用主義者的回答更加有趣。Bergeron說:“你永遠(yuǎn)不會結(jié)束。但可以在功能上達(dá)到一個商業(yè)成功需要的信心等級。這是一個風(fēng)險管理問題。” 因此,Bergeron和Foster都認(rèn)為,有經(jīng)驗(yàn)的驗(yàn)證經(jīng)理會查看多個來源的覆蓋量度。商用工具可用于輔助這個過程,它按照結(jié)構(gòu)塊或按功能來組織各種量度,這樣驗(yàn)證工程師就可以從一個設(shè)計區(qū)域看到所有量度。并且現(xiàn)在還有減輕這些融合過程的努力(見附文《UCIS確保互操作性》)。這個水平上的差異通常指出了驗(yàn)證計劃中的漏洞,團(tuán)隊(duì)?wèi)?yīng)用手工創(chuàng)建的專門測試加以彌補(bǔ)。 但經(jīng)理還應(yīng)看問題報告的頻率。如果當(dāng)覆蓋量度接近100%時,問題報告頻率在下滑,則一切正常。如果問題以一種恒定速率(或更差)持續(xù)上升,那么就有一些麻煩了。可是何時停止呢?大多數(shù)經(jīng)理都同意下列觀點(diǎn):當(dāng)你實(shí)際上確定了一些關(guān)鍵塊時就能停止了。Sahm將“關(guān)鍵”定義為那些包括全新功能的塊;不能在軟件中簡單處理的塊;以及設(shè)計者缺乏經(jīng)驗(yàn)的塊。 Foster說:“嘗試用覆蓋量度,將設(shè)計中的風(fēng)險限制在某些可修復(fù)塊內(nèi),這是一種非常合理的策略。這些塊可能有明顯的軟件工作區(qū)。它們可能有一堆不受約束的門,我們過去叫它們?yōu)椤鞓烽T’,設(shè)計者可以只用一些金屬層作一些修補(bǔ)。或者這些塊是實(shí)現(xiàn)新的算法,如果它們不工作,設(shè)計者只需簡單地把它關(guān)掉。” Foster總結(jié)說:“覆蓋量度不能告訴你哪天完成工作。你可以看覆蓋曲線。如果它們在離100%不遠(yuǎn)處走平,你可以改變自己的策略。如果覆蓋中有大的漏洞,可以針對它們做工作。如果有很多小漏洞,就可能需要全面改變自己的策略,并且嘗試形式方法,或針對分散區(qū)域的專門測試臺。但你從量度就能看出要去哪里,以及下一步應(yīng)達(dá)目的地。” 附文:UCIS確保互操作性 Mentor Graphics公司首席驗(yàn)證科學(xué)家Hany Foster說,今天流行的驗(yàn)證流程經(jīng)常會采用一組各異的驗(yàn)證工具,從各種形式的仿真,到形式驗(yàn)證甚至模擬。每個過程都可能生成多種覆蓋的量度,你用它們?nèi)y量一個過程的有效性,標(biāo)記出那些可能需要注意的缺點(diǎn)。 今天流程的問題在于,一個過程中的任何工具都可能生成不連貫、重疊的覆蓋量度,或者是一個不同工具可能生成一個量度的子集。此外,每個工具都以供應(yīng)商確定的格式生成它的覆蓋數(shù)據(jù)。即使對最完備的項(xiàng)目團(tuán)隊(duì),要管理分析這些不同的覆蓋數(shù)據(jù)集也會是一場惡夢。 圖A來自很多工具的覆蓋量度以及消費(fèi)它們的幾種客戶 Accellera公司建立了UCIS(統(tǒng)一覆蓋互操作標(biāo)準(zhǔn)),確保在多工具的異質(zhì)驗(yàn)證流中收集、合并和解析覆蓋結(jié)果時的互操作性(圖A)。通過使用未來的Accellera UCIS API(應(yīng)用編程接口)標(biāo)準(zhǔn),多個驗(yàn)證工具將能夠訪問一個UCDB(統(tǒng)一覆蓋數(shù)據(jù)庫),概念上可以將其看作有全部覆蓋數(shù)據(jù)的單一存儲庫。 附文:UCIS確保互操作性 今天流行的驗(yàn)證流程經(jīng)常會采用一組各異的驗(yàn)證工具,從各種形式的仿真,到形式驗(yàn)證甚至模擬。每個過程都可能生成多種覆蓋的量度,你用它們?nèi)y量一個過程的有效性,標(biāo)記出那些可能需要注意的缺點(diǎn)。 今天流程的問題在于,一個過程中的任何工具都可能生成不連貫、重疊的覆蓋量度,或者是一個不同工具可能生成一個量度的子集。此外,每個工具都以供應(yīng)商確定的格式生成它的覆蓋數(shù)據(jù)。即使對最完備的項(xiàng)目團(tuán)隊(duì),要管理分析這些不同的覆蓋數(shù)據(jù)集也會是一場惡夢。 Accellera公司建立了UCIS(統(tǒng)一覆蓋互操作標(biāo)準(zhǔn)),確保在多工具的異質(zhì)驗(yàn)證流中收集、合并和解析覆蓋結(jié)果時的互操作性(圖A)。通過使用未來的Accellera UCIS API(應(yīng)用編程接口)標(biāo)準(zhǔn),多個驗(yàn)證工具將能夠訪問一個UCDB(統(tǒng)一覆蓋數(shù)據(jù)庫),概念上可以將其看作有全部覆蓋數(shù)據(jù)的單一存儲庫。 |