WEBVTT

1
00:00:00.000 --> 00:00:03.980
重置解除不是一個全晶片同時發生的瞬間。

2
00:00:03.980 --> 00:00:11.120
安全許可若跨時鐘域或早於啟動檢查，就可能在系統「看起來已經開機」時先被使用。

3
00:00:11.120 --> 00:00:16.560
想像醫院備援發電切換：燈亮不代表每個病房都已完成自我檢查。

4
00:00:16.560 --> 00:00:21.380
管理員必須等電源穩定、設備自測通過，再開放特定插座。

5
00:00:21.380 --> 00:00:29.740
晶片也要分辨電源穩定、reset解除、OTP/生命週期資料有效、ROM檢查完成與CPU可取指；

6
00:00:29.740 --> 00:00:34.800
這些事件不是同義詞。生活類比只能提示「逐項就緒」，

7
00:00:34.800 --> 00:00:39.780
醫院沒有對應的非同步 reset 網路、亞穩態或多個安全熔絲狀態。

8
00:00:40.125 --> 00:00:44.125
先把每個時域的 reset assertion 與deassertion 列成事件。

9
00:00:44.125 --> 00:00:47.265
非同步 assert 可快速拉低狀態；

10
00:00:47.265 --> 00:00:52.545
deassert 通常要在各目的時鐘域同步，避免recovery/removal 違例。

11
00:00:52.545 --> 00:00:57.065
OpenTitan lifecycle controller 的公開理論描述先等待 OTP sensing，

12
00:00:57.065 --> 00:01:01.805
再解碼並廣播 lifecycle，待穩定後才檢查strap/ROM；

13
00:01:01.805 --> 00:01:06.505
這是特定設計文件，不可直接當成所有產品的時序保證。

14
00:01:06.505 --> 00:01:10.645
單一 ready bit跨域若直接取樣，短脈衝可能漏掉；

15
00:01:10.645 --> 00:01:17.985
多位元 lifecycle bus 即使每一位都有雙觸發器，也可能在不同週期到達而組成從未存在的值。

16
00:01:17.985 --> 00:01:23.705
用握手/穩定編碼傳輸資料，並讓目的域以本地同步 reset 狀態授權。

17
00:01:23.705 --> 00:01:29.505
不同 reset 分組還要檢查 producer 已醒、consumer 尚未醒時的交易與 FIFO 清空。

18
00:01:29.505 --> 00:01:33.665
CDC 工具報告是結構證據，不會證明生命週期政策正確。

19
00:01:34.005 --> 00:01:40.245
失敗反例：ROM check 在 clk_sys 完成，debugpermission 卻先同步到 clk_dbg；

20
00:01:40.245 --> 00:01:46.205
clk_dbg 比較快，在 clk_dbg 觀察到同步後的check_done 前就接受 halt。

21
00:01:46.205 --> 00:01:52.205
安全性質要寫在真正接受 debug 的邊界，而非只查 reset controller 最終狀態。

22
00:01:52.205 --> 00:01:56.005
以下片段是待接入 harness 的 SVA 草案，尚未編譯；

23
00:01:56.005 --> 00:02:01.465
debug_accept 每次成立都必須有已穩定的lifecycle 與完成檢查。

24
00:02:01.465 --> 00:02:09.025
測試 reset 解除順序、任一域暫停/加速、跨域單拍請求、重複 reset，以及各 lifecycle 值。

25
00:02:09.025 --> 00:02:12.325
正向控制要證明合法啟動最終可用；

26
00:02:12.325 --> 00:02:16.085
安全性則要求條件未滿足時沒有接受。

27
00:02:16.085 --> 00:02:18.905
逐 edge 的離散模型只能描述事件排序，

28
00:02:18.905 --> 00:02:24.245
不能代替 RDC/CDC、reset-tree STA、電源斜率與類比 brownout 驗證。

29
00:02:24.565 --> 00:02:31.185
以下為性質草案：先定義 harness 的transaction、reset 與 oracle，並確認取樣邊界，

30
00:02:31.185 --> 00:02:34.025
再接入設計；尚未編譯或證明。

31
00:02:34.025 --> 00:02:38.445
此片段不證明 CDC、timing、side-channel 或實體注入；

32
00:02:38.445 --> 00:02:41.325
需由各自工具與測量提供證據。

33
00:02:41.325 --> 00:02:44.305
我們把這條路徑拆成兩個時脈域來走。

34
00:02:44.305 --> 00:02:50.445
clk_sys先完成ROM檢查，clk_dbg則已經解除本地reset。

35
00:02:50.445 --> 00:02:55.585
若permission先到，debug_accept就可能早於目的域同步收到check_done。

36
00:02:55.585 --> 00:03:01.325
檢查時要改變兩個時脈的相位，也要測試暫停、加速與重複reset。

37
00:03:01.325 --> 00:03:04.605
每一次都記錄接受端實際看見的狀態。

38
00:03:04.605 --> 00:03:10.605
這能找出數位模型中的排序反例，卻不能估計亞穩態發生率，也不能代表真實電源斜率。

39
00:03:11.245 --> 00:03:15.605
啟動期間，debug permission 與 ROM check_done分屬不同時脈域。

40
00:03:15.605 --> 00:03:20.125
目的域解除 reset 後，可能先收到 permission，還沒觀察到同步後的 check_done。

41
00:03:20.125 --> 00:03:26.465
若此時接受請求，reset 解除順序與時脈相位就可能讓未完成檢查的路徑先通過。

42
00:03:26.465 --> 00:03:30.645
每個域要同步解除 reset，以握手傳遞 lifecycle和檢查狀態。

43
00:03:30.645 --> 00:03:33.765
接受端還要在本地檢查穩定條件。

44
00:03:33.765 --> 00:03:39.205
檢查這條路徑時，交叉列舉相位與狀態，並保留正常啟動控制案例。

45
00:03:39.205 --> 00:03:42.685
CDC／RDC 結構檢查與時序證據也各自需要；

46
00:03:42.685 --> 00:03:46.365
本課尚未執行 RTL、formal 或 STA。

47
00:03:46.365 --> 00:03:53.425
本課的事件順序模型沒有涵蓋亞穩態機率、類比電源、真實 reset tree 或實體生命週期熔絲。

48
00:03:53.425 --> 00:03:56.465
現在改變目的域頻率，再加入一個跨域 FIFO。

49
00:03:56.465 --> 00:03:58.745
哪些 reset 分組可以獨立重啟？

50
00:03:58.745 --> 00:04:00.885
接受端需要哪些最小證據？

51
00:04:00.885 --> 00:04:04.825
授權到達時，要確認目的域實際看見的檢查狀態。

52
00:04:04.825 --> 00:04:10.385
若仍不確定，就改變時脈相位、暫停與重置條件，觀察接受當下採用的狀態。

