這是一個非常好的問題,幾乎每個做 Design Verification(DV)的人都曾經問過自己:「這工作到底什麼時候才算驗完了?」但偏偏老闆、PM 或客戶總會問:「你驗完了嗎?」我們常常只能一邊苦笑,一邊給出模糊的回答。所以,這裡我們可以從幾個不同的觀點來探討「驗完了沒」這件事:
1. 從「理論上」的觀點:永遠驗不完
- 因為狀態空間太大。尤其在使用 constraint-random 的驗證方法時,輸入組合可能是天文數字,根本無法窮舉所有情況。
- 設計複雜度高,各種 corner cases 無法完全預測。
- 所以從數學或理論的角度來說,驗證是一個無限接近「完成」的過程,但不可能絕對完成。
- 驗證是用各種方法證明bug存在, 並沒有證明 bug 不存在
2. 從「專案管理」的觀點:有一個可交付的「驗完」
- 老闆問「驗完沒?」其實問的是:你達到了驗證目標嗎? 或你該做的都做完了嗎?
- 例如:達到 100% functional coverage、100% code coverage。(Line, branch, expression, toggle)
- 驗證計畫裡做有的case 都做完了, 並通過各種強度的 regression。
- 在這個觀點下,「驗完了」等於 達到定義好的驗證標準與交付條件。
3. 從「風險管理」的觀點:驗證是風險評估,不是證明正確
- 驗證的核心任務是 找 bug、降低風險。
- 當:
那我們就可以說:「我們降低了足夠多的風險,可以接受 tape-out 的風險了。」 - 找不到新的 bug
- 所有已知的功能都測過了
- Coverage metric 覆蓋率合理
- Regression 穩定通過
- 所以,「驗完了」= 風險降到可接受的程度。
4. 從「工程文化」的觀點:驗完是階段性宣告,而不是真完
- Tape-out 前說驗完了,其實只是代表「我們準備好了,願意承擔後果」。
- Silicon 回來後,如果有 bug,盡快分析原因, 找到根因, 改善驗證方法來避免再犯.
- 所以很多時候,驗完是一種溝通語言,是工程師和管理層的妥協。
那我們該怎麼回答?
當老闆問「驗完沒?」時,不一定要簡單說「還沒」或「驗完了」,可以回應得更具體一點,例如:
- 「目前Functional coverage 都達到了,code coverage 還差一點,我們預計明天補完。」
- 「已經連續3週沒有 regression fail,但 coverage 上還有幾個 low-priority 的 gap,我們有計劃補。」
- 「我們達到 tape-out 所需 coverage 目標,目前沒有 known bug,認為可以交付。」

















