一份 fault campaign 是可重播的實驗規格,不是隨機翻幾個 bit 後報一個百分比。它必須記錄設計版本、注入目標、時點、效果、預算、判準與無法模擬之處。
先固定一次嘗試的意義
消防演習若每次都換出口、煙霧位置與集合時間,兩次演習的通過率無法比較。硬體 fault campaign 也要固定版本、seed、一次 attempt 包含幾個事件,以及失敗/重試是否另算。生活類比不能保證 fault injection 工具真的達到晶片節點。
在 RTL 模型先列出目標清單與時間窗,再定義效果(flip、stuck-at、skip、延遲)及每次注入預算;將 fault-free controls、合法操作、未授權操作及拒絕服務分開。每條反例保留完整輸入序列、第一個錯誤 commit、隨機 seed 與模型 hash。SYNFI 示範 synthesized netlist 預先故障分析;netlist 結果仍不等於實體注入。SYNFI。
RTL 與 netlist 的 mapped target 不相同:綜合可能合併 redundant logic、重編碼 FSM、複製/移除暫存器。兩階段 campaign 要保留 RTL signal 到 netlist cell 的 mapping 與 unmapped 清單。結果至少分類為安全性違反、可用性故障、偵測且及時阻擋、偵測太晚、未觸發、工具不可觀察;不能把「detected」一律當成功。
固定設計 hash 和故障預算後,先跑未故障對照,再跑單故障與明確界定的組合故障。以下 property 草案尚未編譯;assert 要查每個接受事件的 oracle,不只查 alert。Coverage 必須列出未觸及 target/time bin,不以總 fault 數掩蓋空白。
本課互動範例用四種目標類別(ROM check_done、debug permission、first fetch、key release)乘上三個合成時間窗形成 12 個 target/time pairs。邊緣位置描述注入位置,不能代替目標類別;這是固定的教學分母,不是硬體 coverage。
保留可重播證據
每筆結果需要 attempt ID、DUT/網表 hash、工具版本、配置、seed、target、effect、edge/window、budget、輸入 trace、輸出、assertions、分類與重播命令。若工具以最佳化跳過未改變輸出之案例,須說明 pruning 規則及其等價性假設。
離線互動實驗
RTL/SVA 審查方向
以下為性質草案:先定義 harness 的 transaction、reset 與 oracle,並確認取樣邊界,再接入設計;尚未編譯或證明。reference_authorized 必須來自獨立的參考模型,且不在故障注入目標或影響錐內。若 DUT 內的 permission bit 本身也可能受故障影響,就不能拿它當 oracle。
assert property (@(posedge clk) disable iff (!rst_n)
accepted_commit |-> reference_authorized);
若 accepted_commit 從未成立,property 仍可能 vacuous pass。另以 cover 確認無故障且授權的流程確實接受;disable iff 排除的 reset 期間、未觸發的 attempt 與遲到警示要分開分類。此片段不證明 CDC、timing、side-channel 或實體注入;需由各自工具與測量提供證據。
檢核問題
- 辨認:fault attempt 與 fault outcome 有何不同? 推理: Attempt 記錄刺激與目標;Outcome 記錄觀察到的效應、接受狀態、detector 回應,以及接受是否早於 alert。
- 比較:為什麼總 attempts 不能當成 coverage 分母? 推理: 多次嘗試可能落在同一個 target/time bin。要列完整 bin 集合、實際觸及的唯一 bins,以及未觸及 bins。
- 情境:未授權 commit 之後才出現 alert,campaign 要如何分類? 推理: 同時記錄未授權 commit 與延遲 alert。不能把 alert 算成及時阻擋;結果類別可能重疊。
- 故障診斷:模擬器刪去輸出沒有改變的案例,必須補記什麼? 推理: 記錄刪減規則與等價性假設,並保留代表性已刪除/保留案例的重播方法。
- 設計風險/轉移:下個月要讓另一位工程師重現一個 counterexample,需保留哪些欄位? 推理: 保留 source/netlist 與工具 hash、設定、seed、目標/時間窗、budget、輸入 trace、輸出、assertion、分類規則及 replay command。
延伸閱讀
SYNFI pre-silicon fault analysis
MY ACADEMY · LESSON FILM
教學影片
影片依序說明本課的資料路徑。看完一段,可以回到下面的互動練習,改變輸入或故障條件。動畫呈現教學模型;它沒有替代 RTL 模擬。
左右滑動影片,或用方向鍵查看圖卡。
圖卡的範圍說明
教學模型 · 非 RTL 模擬或晶片實測
框線動畫只是閱讀順序;不是已執行的 fault campaign 或命中率
旁白使用合成聲音。互動教學與動畫均有模型邊界;請以本課的來源與驗證範圍解讀結果。
Wrap-up|把這一課帶回設計審查
- 威脅模型與成立條件
固定 RTL/netlist hash、fault target/effect/time/budget,資產為接受端不受未授權提交。
- 失效原因
模糊 attempt、target mapping 或把 detected 當 pass,會令 campaign 不可比較或漏掉違規。
- 防護方法
用 fault-free 控制與分級結果建立可重播活動,分開 safety、availability、timely block 與 tool gaps。
- 驗證方式與待做檢查
保存 seed/工具配置/hash/trace/first bad commit,RTL和netlist兩套分母及 unmapped targets分開。
- 防護界線與未驗證項目
工具模型與數位 netlist 不代表實體擾動可達性、頻率、位置精度或故障相關性。
換個情境再想一次
挑一個未映射 RTL target,提出對應 netlist cell 的確認方法及無法映射時的報告語句。
以上整理對照本課的教學案例、參考資料與實驗範圍;未列為已完成的驗證,都是後續工作。