使用形式驗證技術(shù)作為片上系統(tǒng) (SoC) 設(shè)計的主流技術(shù),終于成為消除驗證差距的公認方法。最近的一項調(diào)查表明,26% 的芯片設(shè)計項目現(xiàn)在使用基于斷言的正式驗證 (ABV)。然而,這種經(jīng)典模擬的替代方法的承諾需要很多年才能開花結(jié)果,而且仍然只有高級驗證環(huán)境才能包含它。為什么會這樣?到目前為止,我們可以從它的使用中學(xué)到什么,以便將其提供給整個 SoC 工程社區(qū)?
SoC 塊驗證碰壁
自問世以來,SoC 設(shè)備一直是開發(fā)團隊的驗證噩夢。雖然現(xiàn)在驗證完整的 SoC 最好留給仿真和快速原型設(shè)計系統(tǒng)來完成,但即使是這些設(shè)備上的較大塊也已經(jīng)超出了純仿真環(huán)境。
仿真、更快的模擬器、關(guān)鍵測試的驗證知識產(chǎn)權(quán) (VIP) 以及通用驗證方法 (UVM) 的出現(xiàn)都有助于緩解這種情況。盡管如此,驗證要求仍超過了基于模擬的環(huán)境中的可用處理時間。
形式驗證通過使用針對特定需求的自動化“應(yīng)用程序”有助于改進塊驗證,否則需要大量的模擬工作。檢查標準通信協(xié)議的正確操作、確保關(guān)鍵連接和寄存器操作、分析域重置時的正確啟動序列以及許多其他任務(wù)現(xiàn)在都由這些解決方案處理。
然而,我們才剛剛開始挖掘形式驗證的真正威力。它的許多使用問題已被消除,使我們處于可能是全新驗證時代的最前沿,因為該技術(shù)已部署用于核心驗證。
形式驗證:如果這么好,今天在哪里?
首先,快速回顧一下形式驗證技術(shù),為什么它有可能創(chuàng)造這種根本性轉(zhuǎn)變,以及今天是什么阻止了它。
硬件仿真的工作原理是通過一系列有意義的狀態(tài)循環(huán)一個硬件描述語言 (HDL) 代碼塊來演示其操作。此狀態(tài)序列由輸入激勵(設(shè)備輸入上的一組事件的 HDL 描述)驅(qū)動,旨在探索正確的狀態(tài)以識別操作問題。
這種方法引出了一個問題:如果我們知道代碼塊可以進入的所有狀態(tài)以及狀態(tài)間轉(zhuǎn)換,那么我們不能簡單地詢問有關(guān)代碼操作的問題以確保其正確嗎?這將避免必須編寫許多行刺激來嘗試使代碼塊進入正確的信息承載狀態(tài)。這是形式驗證工具使用的方法。
這種基本方法可以轉(zhuǎn)變?yōu)樵S多有用的應(yīng)用程序。例如,如果可以根據(jù)設(shè)計代碼的一個方面和要檢查的驗證場景自動創(chuàng)建要問的問題,則可以創(chuàng)建用于驗證目的的自動化應(yīng)用程序。這將不需要用戶編寫問題。如果正式工具可以用最少的輸入演示特定的狀態(tài)序列(例如狀態(tài)機操作),那么設(shè)計工程師就可以理解他或她的代碼如何執(zhí)行,從而揭示可能的錯誤。
當工程師自己提出問題時,形式驗證的真正威力才得以發(fā)揮。這需要使用斷言編寫問題或?qū)傩?,并在稱為基于斷言的驗證或 ABV 的過程中應(yīng)用于設(shè)計。
當然,這種高級描述掩蓋了 ABV 的問題,包括存儲這么多信息的工具的容量和性能要求已經(jīng)通過最新技術(shù)得到解決。
兩個問題仍然是 ABV 廣泛使用的障礙:
斷言的創(chuàng)作,通常使用 SystemVerilog 標準語法,可能很復(fù)雜且難以可視化
對驗證進度或覆蓋率的理解很難與其他驗證方法的理解和對比
盡管在這兩個方面都取得了進步,但還需要更多的努力來降低學(xué)習(xí)曲線,從而使 ABV 得以普遍擴散。
ABV 應(yīng)用程序
在驗證過程中應(yīng)用 ABV 有兩種常用方法。首先是檢查特定的極端案例類型的問題,這些問題通常需要花費大量精力來構(gòu)建模擬測試平臺來分析問題。第二個是對塊進行更一般的檢查,無論是結(jié)合模擬還是獨立檢查。
形式驗證的第一個使用模型很有價值,可以在驗證計劃中減少合理的百分比。第二個模型有可能改變特征驗證過程,節(jié)省大量時間和資源支出,同時增加發(fā)現(xiàn)設(shè)計中每個錯誤的整體潛力。已經(jīng)有一些行業(yè)部門在第二種模式中廣泛使用 ABV。其中包括汽車和航空電子產(chǎn)品,其中高質(zhì)量和可靠性是一個因素。
在組合仿真-形式驗證流程中,如圖 1 所示,通常使用仿真進行一般操作分析并“感受”設(shè)計的行為和性能。此外,還有一些功能更適合模擬,例如數(shù)學(xué)數(shù)據(jù)處理或信號處理。然而,形式驗證非常適合控制或數(shù)據(jù)傳輸種類的功能,如有限狀態(tài)機、數(shù)據(jù)通信和協(xié)議檢查。此外,確保某些類型的驗證場景,例如安全檢查(例如,某項活動是否會發(fā)生),也是該技術(shù)的最佳選擇。這些代碼和場景示例通常需要很高比例的驗證資源。
斷言創(chuàng)作改進
與 UVM 推動模擬測試臺創(chuàng)建的分層方法相同,新技術(shù)正在出現(xiàn),將抽象引入斷言創(chuàng)作。這些抽象通過掩蓋斷言細節(jié)來降低復(fù)雜性,同時允許工程師考慮驗證任務(wù)而不是斷言的個別特征。
例如,OneSpin 解決方案的 Operational Assertions 是一個 SystemVerilog 庫,它允許正式測試以類似事務(wù)時序圖的方式表示,與驗證工程師廣泛認可的高級 UVM 序列不同。Breker Verification Systems 的基于圖形的測試序列,現(xiàn)在由 Accellera Portable Stimulus 標準委員會考慮,是另一種抽象形式,也可以應(yīng)用于斷言創(chuàng)作。
這些技術(shù)在簡化形式測試應(yīng)用的同時,具有提供可識別且更自然的輸入方案的優(yōu)勢,允許工程師通過消除一些形式驗證之謎來與正在進行的驗證過程相關(guān)聯(lián)。
常見的覆蓋模型
簡化斷言只是難題的一部分。該過程的另一端是整理來自各種來源的覆蓋率信息,以了解總體驗證進度,無論使用何種工具。模擬過程仍然主要集中在一種或另一種代碼覆蓋上,并包含一些功能覆蓋。形式驗證覆蓋側(cè)重于斷言(所謂的“斷言覆蓋”),無論它們是否被執(zhí)行,它們是通過還是失敗,或者確實它們通過一個警告(例如,有界證明,例如“代碼在一定數(shù)量的時鐘周期內(nèi)通過”)。該信息可以反饋給驗證計劃系統(tǒng)以提供一些有用的數(shù)據(jù)。
然而,測量正式的覆蓋率,確定由特定斷言測試的實際代碼,是領(lǐng)先的形式驗證供應(yīng)商感興趣的領(lǐng)域。已經(jīng)提出了在精度和所需執(zhí)行資源方面都不同的方案。關(guān)鍵是能夠?qū)⑦@些正式模型與模擬模型進行比較,以提供綜合的、有意義的覆蓋率評估。Accellera 統(tǒng)一覆蓋互操作性標準 (UCIS) 委員會專注于這一目標,并提出了可以將兩者進行比較的方法。在這方面需要做更多的工作,但很明顯,一些形式驗證供應(yīng)商擁有允許計算合理的進度度量的解決方案。
模擬風格調(diào)試
以對以仿真為中心的工程師有意義的方式調(diào)試形式驗證代碼,在很大程度上已被許多形式驗證供應(yīng)商解決。大多數(shù)工具可以在斷言失敗的情況下輸出“見證”。也就是說,導(dǎo)致斷言失敗的仿真波形形式的一系列事件。事實上,包括 OneSpin 在內(nèi)的一些供應(yīng)商可以輸出模擬測試,允許在模擬器中重現(xiàn)故障以供進一步研究。
破解主流ABV代碼
很明顯,ABV 的使用開始成為主流。ARM 和 Oracle 都宣布了 ABV 在其環(huán)境中的全部功能,并指出它現(xiàn)在在他們的項目中被大量使用。
解決 Assertion Authoring、Collated Coverage 和 Simulation-centric Debug 這三條腿的問題,并將其與對形式驗證擅長的設(shè)計領(lǐng)域和場景的清晰理解相結(jié)合,將推動這種方法成為 SoC 驗證的主流。一旦發(fā)生這種情況,將對未來的設(shè)計質(zhì)量和開發(fā)進度產(chǎn)生巨大影響。
審核編輯:郭婷
-
ARM
+關(guān)注
關(guān)注
134文章
9097瀏覽量
367610 -
soc
+關(guān)注
關(guān)注
38文章
4166瀏覽量
218281 -
仿真
+關(guān)注
關(guān)注
50文章
4083瀏覽量
133614
發(fā)布評論請先 登錄
相關(guān)推薦
評論