一:形式驗證的基本概念
-> 廣義上的形式驗證?
形式驗證不僅僅是芯片領(lǐng)域中的一個概念。正如文章開頭提到過,形式驗證強調(diào)使用嚴格的數(shù)學推理和形式化技術(shù),以確保系統(tǒng)的行為是否符合預期的性質(zhì)和規(guī)格。所以說只要是可以通過量化方式構(gòu)建數(shù)學模型的系統(tǒng),都可以使用形式驗證來check其功能性以及其他可量化特性。比如:
- 軟件工程:就拿區(qū)塊鏈舉個例子。形式驗證不僅適用于智能合約本身,還適用于與智能合同交互的去中心化應(yīng)用。這可以幫助確保整個應(yīng)用的安全性和正確性。
- 金融領(lǐng)域:金融交易的驗證是非常重要的,特別是在高頻交易和算法交易領(lǐng)域。形式驗證可以確保交易的正確性和合規(guī)性,防止錯誤交易和潛在的風險。
-> 芯片工程里的形式驗證?
這里拿計數(shù)器舉一個簡單的形式驗證示例。請注意,這只是一個簡化的示例,實際的形式驗證可能涉及更復雜的設(shè)計和性質(zhì)。
假設(shè)有一個4位的計數(shù)器電路,可以從0計數(shù)到15。我們想要驗證以下性質(zhì):當計數(shù)器的值達到最大值15時,下一個計數(shù)值應(yīng)該是0。
設(shè)計:計數(shù)器電路有一個4位的計數(shù)器寄存器,可以遞增。當計數(shù)器值達到15時,下一個時鐘周期應(yīng)該將計數(shù)器重置為0。
形式驗證屬性:我們使用SystemVerilog的屬性規(guī)約 (SVA) 來表達這個性質(zhì)。(一般形式驗證的case都使用SVA來編寫)以下是一個簡化的屬性規(guī)約示例:
property reset_at_max;
@(posedge clk) disable iff (!rst_n)
(count == 4'b1111) |= > (next_count == 4'b0000);
endproperty
assert property (reset_at_max);
在這個屬性規(guī)約中,我們定義了一個屬性 reset_at_max ,它表達了當計數(shù)器值為15時,下一個計數(shù)值應(yīng)為0。這個屬性在時鐘上升沿觸發(fā)時進行檢查。如果屬性不滿足,將會產(chǎn)生一個驗證錯誤。
在這個示例中,使用仿真進行驗證可能需要執(zhí)行多個時鐘周期來驗證所有可能的計數(shù)序列。但是,使用形式驗證可以直接進行數(shù)學推理,驗證屬性在所有可能的情況下是否成立.
除此之外,與基于仿真的驗證不同,基于仿真的驗證會使用各種輸入情景來測試設(shè)計以確保其正確行為,形式驗證涉及數(shù)學分析以驗證設(shè)計的屬性。這些屬性可以包括功能正確性、安全性、安全性以及某些類型錯誤的缺失(例如,競態(tài)條件、死鎖等)。
二:形式驗證的優(yōu)勢
從上述的例子看來,那么形式驗證要優(yōu)于基于仿真的驗證?看似高性能的形式驗證,要將它發(fā)揮得淋漓盡致也是需要代價的。
其實不然,形式驗證也面臨著挑戰(zhàn)。它可能計算成本高昂,需要專門的專業(yè)知識來制定屬性并設(shè)置驗證過程。通常與其他驗證技術(shù)(如仿真和測試)結(jié)合使用,以提供全面的驗證策略。形式驗證和基于仿真的驗證各有其優(yōu)勢和局限性,沒有絕對的優(yōu)劣之分。選擇哪種驗證方法取決于具體的設(shè)計需求、時間和資源限制以及設(shè)計的復雜性。
形式驗證VS動態(tài)仿真
->形式驗證的特點:
- 高度可靠性 :形式驗證提供了數(shù)學證明的可靠性,如果設(shè)計通過了形式驗證,那么可以有很大的信心認為設(shè)計是正確的。
- 全面性 :形式驗證可以覆蓋所有可能的狀態(tài),從而捕獲設(shè)計中的所有潛在錯誤,包括一些難以通過仿真檢測到的問題。
- 對于復雜設(shè)計 :對于復雜的設(shè)計,特別是關(guān)鍵性能的設(shè)計,形式驗證可以幫助發(fā)現(xiàn)隱藏的問題和時序錯誤。
->動態(tài)仿真驗證的特點:
- 易于實施 :基于仿真的驗證通常比形式驗證更容易實施,可以快速驗證設(shè)計的基本功能和常見情況。
- 資源效率高 :在一些情況下,形式驗證可能需要更多的計算資源和時間,而基于仿真的驗證可能更具資源效率。
- 快速迭代 :基于仿真的驗證允許設(shè)計團隊迅速進行修改和驗證,特別適用于快速迭代的設(shè)計流程。
可見,trade-off的概念在芯片領(lǐng)域里面處處可見。魚與熊掌不可得兼。
三:在芯片驗證中實現(xiàn)形式驗證
形式驗證主要由以下幾個部分組成:
- 性質(zhì)(Properties) :這些是描述設(shè)計所需屬性和規(guī)格的語句,例如時序關(guān)系、狀態(tài)轉(zhuǎn)換、約束等。常用的
- 規(guī)約語言 :通常使用形式規(guī)約語言,如 SystemVerilog Assertions(SVA)、Property Specification Language(PSL)等,來編寫性質(zhì)和約束。
- 定理證明器(Theorem Provers) :這些工具用于推理和證明性質(zhì)是否成立。它們基于形式化邏輯和推理規(guī)則來驗證性質(zhì)。
- 模型檢查器(Model Checkers) :這些工具用于窮舉系統(tǒng)狀態(tài)空間,檢查是否存在滿足性質(zhì)的狀態(tài)序列。
在電子設(shè)計自動化 (EDA) 工具中,許多主要的形式驗證工具已經(jīng)集成到綜合工具鏈中,以幫助硬件工程師驗證他們的設(shè)計。這些工具通常基于硬件描述語言 (如Verilog或VHDL) 。
比如:
1. Cadence JasperGold :JasperGold是一個集成式形式驗證平臺,支持屬性規(guī)約和模型檢查,廣泛應(yīng)用于驗證硬件設(shè)計。
2. Synopsys VC Formal :VC Formal是Synopsys的形式驗證工具,用于驗證功能、時序和系統(tǒng)級性質(zhì)。
四:形式驗證的未來
最近幾年,學術(shù)界
-
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121169 -
芯片設(shè)計
+關(guān)注
關(guān)注
15文章
1028瀏覽量
55008 -
計數(shù)器
+關(guān)注
關(guān)注
32文章
2261瀏覽量
94983 -
形式驗證
+關(guān)注
關(guān)注
0文章
8瀏覽量
5715 -
SVA
+關(guān)注
關(guān)注
1文章
19瀏覽量
10152
發(fā)布評論請先 登錄
相關(guān)推薦
評論