如何選擇正確的芯片驗證方法
4 影響驗證技術(shù)的趨勢和力量
4.1 技術(shù)視角
設計錯誤可能出現(xiàn)在模塊接口處或是在模塊內(nèi)部,它們最終會集成在一起形成芯片。舉例而言,那些在模塊級沒有被發(fā)現(xiàn)的缺陷在應用動態(tài)仿真時會在子系統(tǒng)或系統(tǒng)級上顯露出來。使用靜態(tài)功能驗證,模塊開發(fā)的每一步都會得到詳盡的驗證,從而確保子系統(tǒng)/系統(tǒng)質(zhì)量和可靠性從根本上得到提高。有人認為,使用靜態(tài)/形式功能驗證,能夠更快地找到更多的缺陷。
另一方面,使用靜態(tài)功能驗證也存在以下缺陷:
1)現(xiàn)有的工具只能在模塊級運行;
2)通常不能處理大型設計(一般只能處理100~150K的門電路);
3)不能處理高度復雜的設計;
4)現(xiàn)有的形式驗證工具有時會出現(xiàn)時間無限的問題(這主要是因為它們往往是基于一套探索程序,而不是任一算法)。這意味著形式功能驗證在一些情況下可能會比動態(tài)仿真花費更長的時間;
5)設計必須被寫為可綜合的RTL形式。
除了上述技術(shù)上的挑戰(zhàn)外,基于斷言的形式功能驗證的兩個競爭標準(PSL對SystemVerilog)也帶來了額外的問題。目前傾向于將靜態(tài)功能驗證方法用于驗證足夠成熟以備綜合的模塊,動態(tài)驗證(隨機和定向)用于嚴格驗證集成前的模塊。
目前,動態(tài)仿真還將繼續(xù)主宰功能驗證領(lǐng)域,直到形式驗證工具提供一種更成熟的方法。
4.2 語言視角
可以觀察到這樣一個趨勢,就是將設計和驗證語言結(jié)合在一起。這將極大地促進生產(chǎn)率,改進系統(tǒng)可靠性以及提高設計質(zhì)量,因為使用多種工具和語言引發(fā)的不明確和誤解問題將得到消除。
在這一結(jié)合實現(xiàn)之前,公司要繼續(xù)依賴現(xiàn)有的高級設計語言(Verilog和VHDL),并選擇是使用專有驗證語言(Open-VERA、E等),還是過去流行的Verilog和VHDL 。
SystemC與其他高級設計描述語言在設計流程中扮演著重要角色,其中涉及硬/軟件折衷以及在硬件上運行軟件的設計(如SoC)。另外,它們也可用于架構(gòu)建模及確認,當可以為應用事務模型的驗證使用架構(gòu)模型組件時,也可以使用 SystemC。
5 選擇正確的驗證方法的標準
在當前縮短上市時間和迫切要求低成本的環(huán)境下,工程師正在設法解決設計復雜性問題。那些在新技術(shù)上投入更多研發(fā)精力的公司,其研發(fā)費用的使用更有效率,產(chǎn)品上市時間更短,公司成長更快,盈利更高。另外,公司必須在其特有需求與核心價值的基礎(chǔ)上評估方法和技術(shù)。在將新技術(shù)引進其工具流程時,它們應當考慮以下問題,并做出適當?shù)臋?quán)衡。
1)在某個生產(chǎn)線中,公司是市場領(lǐng)先者還是追隨者?
2)基礎(chǔ)設施、工具和方法是集中式的還是分布式的?
3)新驗證技術(shù)的評估是針對第一代產(chǎn)品進行的嗎?
4)新驗證技術(shù)對成本和產(chǎn)品上市時間有何直接和間接影響?
5)新的工具能否處理不同的設計能力?
6)工具的易用性如何?
7)可為新的工具提供什么水平的文檔和支持?
8)新的工具和方法與公司內(nèi)部現(xiàn)有的工具和方法之間是否具有互操作性?
9)新工具的投資回報率(ROI)如何?(包括在服務、培訓、咨詢、計算和人力資源方面的投資)
10)新的工具是否能夠支持處于多個不同地理位置的設計?
11)公司需要考慮的問題中,最為重要的問題之一可能是:我們雇用的設計師和驗證工程師是否對新的工具抱有成見?(即設計師不愿意學習和接受新的技術(shù))
公司在做出關(guān)于工具、語言和方法的決策時可以采用以下介紹的簡單權(quán)衡方法。
5.1 產(chǎn)品視角
主要從事存儲器芯片或存儲器密集型(相對于邏輯密集型而言)芯片生產(chǎn)的公司訝SRAM和DRAM公司可能根本不需要進行大量的邏輯驗證。這些芯片大多是定制的。雖然這些產(chǎn)品中有些規(guī)模會很大,但它們的邏輯復雜性并不高,因而不支持在公司內(nèi)部配備大量邏輯驗證工具的計劃。不過,存儲器密集型設計在其他方面提出了挑戰(zhàn),例如布線、工藝變化以及功率等。
那些制造純ASIC芯片,在芯片上不運行任何軟件的公司可能無須在硬件或是軟件實現(xiàn)上進行權(quán)衡或是實施測試以捕獲運行于硬件之上的軟件。例如,只具有硬件的SERDES芯片所要求的驗證和建模方法與同時具有硬件和軟件的SoC是不同的。
對于擁有多種產(chǎn)品線的大公司來說,驗證方法必須滿足各種產(chǎn)品的不同要求。
5.2 系統(tǒng)視角
過去,邏輯芯片供應商不負責對芯片是否滿足參考系統(tǒng)的功能和性能要求進行驗證,而如今的系統(tǒng)廠商在批量訂貨之前都要求芯片供應商實施系統(tǒng)參考驗證。這就要求芯片公司在一個它們不熟悉的附加抽象級上對芯片進行建模和驗證,這需要架構(gòu)模型、參考模型、復雜應用級的測試以及精細的測試平臺配置。面對這些不同類型的挑戰(zhàn),公司有兩種選擇,一是采用現(xiàn)有的語言、技術(shù)和方法,這將耗費大量的時間和精力;另一種就是采用新技術(shù)(如VERA、Specman等)。此外,芯片供應商還必須確保所使用的參考模型和驗證套件是在一個與客戶的相應模型和套件兼容的環(huán)境中完成的,例如,應用客戶的軟件開發(fā)套件(SDK)和仿真器也能夠進行同樣的測試。
5.3 方法學視角
在芯片集成之前,可以將靜態(tài)功能驗證與動態(tài)仿真結(jié)合起來,在一個高置信度水平上驗證模塊級的功能。通過確認動態(tài)仿真正在持續(xù)驗證功能空間的主要邊角,可以有效地實施系統(tǒng)級驗證。
首先執(zhí)行隨機仿真可以在驗證的初始階段發(fā)現(xiàn)大量的缺陷,然后對隨機模擬加以約束以確定測試空間已經(jīng)被完全覆蓋的做法或許相對容易一些。應考慮在功能覆蓋度量上對約束驅(qū)動型驗證進行細化。功能覆蓋率這一術(shù)語被用于描述對被覆蓋的功能空間進行量化的參數(shù),相反地,代碼覆蓋率則被用于量化一個給定的測試套件對已實現(xiàn)的設計進行覆蓋的程度。定向仿真隨后可被用于在驗證周期末期覆蓋邊角測試空間。
斷言和屬性可在靜態(tài)功能驗證期間起作用(在模塊級上),并可在動態(tài)仿真環(huán)境中被重用(在模塊級和系統(tǒng)級上)。如果模塊轉(zhuǎn)變?yōu)镮P,那么斷言和屬性也是有用的,因為斷言將在IP被重用時持續(xù)不斷地檢查其屬性。
6 結(jié)語
隨著時間的推移,具有更小特征尺寸(90nm 和 65nm)的器件將投產(chǎn)。目前,公司正在致力于解決諸如布線、串擾和軟錯誤的設計問題。一旦這些設計瓶頸得到了解決且隨著芯片廠商在越來越小的芯片上封裝越來越多的邏輯,驗證問題的出現(xiàn)就是意料中的事了。新型工具和方法的不斷引進提高了設計生產(chǎn)率。提高設計(SystemC和SystemVerilog)和驗證(Open-VERA、E 和 SystemC)的抽象化程度以滿足日益增長的復雜度要求是不可避免的。目前從SystemVerilog 的推出能夠看到設計和驗證語言的融合趨勢。
驗證持續(xù)扮演著重要角色,它能夠提高產(chǎn)品質(zhì)量,使硅芯片一次成功,從而間接影響總體的產(chǎn)品時間。SystemC 和建模語言將繼續(xù)為邏輯密集型產(chǎn)品提供架構(gòu)驗證。通過使用屬性、斷言以及推出形式驗證工具,生產(chǎn)率得到了進一步提高。但目前工程師仍舊依賴并信任動態(tài)仿真,因為它能夠驗證大型和高度復雜的設計。最終的趨勢可能是:形式驗證占據(jù)主要地位,動態(tài)仿真仍用于完整性檢查。
評論