進階驗證與 UVM
SystemVerilog 斷言(SVA)
SystemVerilog 斷言是一份直接嵌進設計或測試平台的微型形式合約,宣告「這件事必須永遠成立」——並且每個時脈都在盯著,一旦不成立就立刻尖叫。例如:「只要 req 拉高,ack 必須在 1 到 4 個週期內跟上。」以時序性質(temporal property)寫成後,模擬器會持續檢查,並精準指出任何違反發生的確切週期。它就像接進特定房間的煙霧偵測器:出事前一片寂靜,出事後絕不會錯過,而且告訴你問題就在哪裡。
斷言之所以強大,是因為它在違反「當下、當地」就抓到臭蟲,而不是三千個週期後、被破壞的結果終於浮現到輸出時才發現——大幅壓縮除錯時間。它同時兼作設計真實協定意圖的文件,而且同一條性質既能在模擬中動態檢查,也能交給形式工具做窮舉證明。SVA 的序列/性質語法(|->、##、throughout)是一種精簡的時序語言,用來表達「先這個、再那個、在這個時間窗內」。
assert property (@(posedge clk) req |-> ##[1:4] ack);
斷言也能產生覆蓋率:「cover property」不只告訴你某規則從未被破壞,還告訴你它所守護的有趣情境真的發生過——一條從未觸發過的「通過」斷言,可能只是根本沒被測到。
又稱
另見