進階驗證與 UVM
性質檢驗(property checking)
性質檢驗是形式驗證的招牌絕技:不是跑有限數量的測試案例、然後祈禱你涵蓋了壞掉的那些,而是由工具用數學證明:對設計可能遇到的「每一種」輸入序列,某條既定性質都成立——若不成立,就交給你一個具體的反例。模擬就像舀一匙匙湯來試鹹淡;性質檢驗則像分析食譜,證明無論如何它都不可能太鹹。
在底層,工具以符號方式(用 SAT/BDD 引擎)探索設計的整個狀態空間,因此一份證明的窮舉性是再多隨機測試都做不到的。當它失敗時,產生的反例波形是黃金:一份最小、可重現的臭蟲配方。代價是狀態空間爆炸——大型設計可能難以處理,所以工程師會約束輸入、拆解證明,並把性質檢驗對準最難用模擬覆蓋的死角(仲裁器、FIFO、狀態機死鎖),讓它發揮最大價值。
形式證明都附帶一組「證明前提」或假設——一條僅因你假設輸入永遠不會做 X 而成立的性質,可信度只等於那個假設本身,這正是「過度約束」會悄悄毀掉形式結果的原因。
又稱
另見