WEBVTT

1
00:00:00.000 --> 00:00:05.820
一份 fault campaign 是可重播的實驗規格，不是隨機翻幾個 bit 後報一個百分比。

2
00:00:05.820 --> 00:00:12.760
它必須記錄設計版本、注入目標、時點、效果、預算、判準與無法模擬之處。

3
00:00:12.760 --> 00:00:18.840
消防演習若每次都換出口、煙霧位置與集合時間，兩次演習的通過率無法比較。

4
00:00:18.840 --> 00:00:25.880
硬體 fault campaign 也要固定版本、seed、一次attempt 包含幾個事件，以及失敗/重試是否另算。

5
00:00:25.880 --> 00:00:29.560
生活類比不能保證 fault injection 工具真的達到晶片節點。

6
00:00:29.880 --> 00:00:33.580
在 RTL 模型先列出目標清單與時間窗，

7
00:00:33.580 --> 00:00:38.480
再定義效果（flip、stuck-at、skip、延遲）及每次注入預算；

8
00:00:38.480 --> 00:00:43.980
將 fault-free controls、合法操作、未授權操作及拒絕服務分開。

9
00:00:43.980 --> 00:00:50.420
每條反例保留完整輸入序列、第一個錯誤 commit、隨機 seed 與模型 hash。

10
00:00:50.420 --> 00:00:55.260
SYNFI 這類預先故障分析工具可以檢查synthesized netlist；

11
00:00:55.260 --> 00:00:58.680
netlist 結果仍不等於實體注入。

12
00:00:58.680 --> 00:01:05.920
RTL 與 netlist 的 mapped target 不相同：綜合可能合併 redundant logic、重編碼 FSM、複製/

13
00:01:05.920 --> 00:01:07.420
移除暫存器。

14
00:01:07.420 --> 00:01:13.160
兩階段 campaign 要保留 RTL signal 到 netlistcell 的 mapping 與 unmapped 清單。

15
00:01:13.160 --> 00:01:21.420
結果至少分類為安全性違反、可用性故障、偵測且及時阻擋、偵測太晚、未觸發、工具不可觀察；

16
00:01:21.420 --> 00:01:23.640
不能把「detected」一律當成功。

17
00:01:24.088 --> 00:01:31.248
固定設計 hash 和故障預算後，先跑未故障對照，再跑單故障與明確界定的組合故障。

18
00:01:31.248 --> 00:01:34.088
文章中的 property 草案尚未編譯；

19
00:01:34.088 --> 00:01:37.808
assert 要查每個接受事件的 oracle，不只查alert。

20
00:01:37.808 --> 00:01:43.768
coverage 必須列出未觸及 target/time bin，不以總 fault 數掩蓋空白。

21
00:01:43.768 --> 00:01:50.668
每筆結果需要 attempt ID、DUT/網表 hash、工具版本、配置、seed、target、effect、

22
00:01:50.668 --> 00:01:57.048
edge/window、budget、輸入 trace、輸出、assertions、分類與重播命令。

23
00:01:57.048 --> 00:02:02.388
若工具以最佳化跳過未改變輸出之案例，須說明pruning 規則及其等價性假設。

24
00:02:02.688 --> 00:02:09.288
以下為性質草案：先定義 harness 的transaction、reset 與 oracle，並確認取樣邊界，

25
00:02:09.288 --> 00:02:12.248
再接入設計；尚未編譯或證明。

26
00:02:12.248 --> 00:02:15.788
這個 implication 檢查已發生的接受是否獲授權。

27
00:02:15.788 --> 00:02:19.608
若 accepted_commit 從未成立，assertion 仍可能 vacuous pass；

28
00:02:19.608 --> 00:02:24.288
另外加一條 cover，確認 fault-free 授權流程確實接受。

29
00:02:24.288 --> 00:02:28.688
reset 停用期間、未觸發與遲到 alert 要分開分類。

30
00:02:28.688 --> 00:02:34.528
reference_authorized 必須來自獨立的參考模型，且不在注入目標或其影響錐內。

31
00:02:34.528 --> 00:02:38.848
已被故障影響的晶片內 permission bit，不能當自己的 oracle。

32
00:02:38.848 --> 00:02:43.988
文章中的這條性質不證明 CDC、timing、side-channel 或實體注入；

33
00:02:43.988 --> 00:02:45.848
需由各自工具與測量提供證據。

34
00:02:46.188 --> 00:02:51.788
互動範例使用十二筆固定合成資料，不是實際 RTL或模擬器結果。

35
00:02:51.788 --> 00:02:54.828
總 attempt 上限用來選取資料列；

36
00:02:54.828 --> 00:02:58.548
每次 attempt 的事件 budget 則決定該列能否觸發。

37
00:02:58.548 --> 00:03:03.808
若資料列需要的事件數超過 budget，該列不會觸發，也不會施加故障。

38
00:03:03.808 --> 00:03:09.588
分母是四個 target class——ROM check_done、debug permission、first fetch 和 key release——

39
00:03:09.588 --> 00:03:13.188
各自搭配三個 time bin（t1 到 t3），共 12 組。

40
00:03:13.188 --> 00:03:17.188
Budget 不會改變這 12 個 target class／timebin 組合。

41
00:03:17.188 --> 00:03:23.368
請分開報告已選取的唯一組合、已觸發且可觀察的唯一組合，以及未觸及組合；

42
00:03:23.368 --> 00:03:27.528
未觸及指該組合沒有任何已觸發且可觀察的attempt。

43
00:03:27.528 --> 00:03:35.928
結果分類可以重疊；同一筆資料可能同時有未授權commit 和遲到 alert，遲到警示不算及時阻擋。

44
00:03:35.928 --> 00:03:40.948
其他分類包括可用性故障、及時阻擋、未觸發與工具不可觀察。

45
00:03:40.948 --> 00:03:46.988
完整 JSON 匯出保留 seed、刺激、輸出、assertion、分類和 fixture key，

46
00:03:46.988 --> 00:03:53.828
供檢視與重播展示資料。工具版本、設定或輸入trace 不同，重播就是另一個實驗。

47
00:03:53.828 --> 00:03:56.668
每一類結果都要先定義判定依據；

48
00:03:56.668 --> 00:03:59.328
只有「已偵測」標籤，不能證明故障已及時阻擋。

