[IC設計] 何謂同步reset和非同步reset,使用Asynchronous reset整合global reset、scan reset以及software reset
更新日期:2019年12月15日
電路有分為 synchronous reset(同步reset) 和 Asynchronous reset(非同步reset)
synchronous reset 代表所有的 DFF在同時間 reset 觸發以及同時放開 reset
而電路有先後順序地方開 reset
就是所謂的 Asynchronous reset(非同步reset)了

也就是電路有先後順序地方開reset
這就是所謂的 Asynchronous reset(非同步reset)

圖1中使用 Asynchronous reset(非同步重置)整合電路中的三種 reset
皆是使用負緣觸發(negedge)的 reset
從左上角開始
整個 IP 所接收到的外部重置訊號為 rst_n 和 scan_rst_n
為了因應 scan mode 針對scan flip-flop 所用到的 scan_rst_n
我們必須使用 scan_mode 作為 rst_n 和 scan_rst_n 的選擇訊號
如果 scan_mode 拉起
在最右邊的 rst_n_final 就會直接變成 scan_rst_n
而 rst_n_final 最終將會負緣觸發 IP 內部所有 clock domain 的 reset
所以電路大部分的運作都是處在 scan_mode 為0的狀況下
由左往右看 rst_n 經過 don't touch cell(synthesis不能被化簡的邏輯閘)稱為 rst_n_internal
當 rst_n_internal 從1降為0時
圖一的所有 DFF 的 Q pin 降為0
即使是經過 scan mux 的 rst_n 訊號也降為 0
所有的 DFF 在此時被 reset
以reset的行為來看是同步的(synchronous)
當 rst_n 重新拉為1時(不再討論scan mode)
rst_n_internal 率先拉為1
圖一左邊的兩級 DFF 最先放開 reset
將1的訊號傳遞到 software clear 的 DFF 上
有關 software clear design 的 DFF設計為用此 reset 訊號
在沒有CPU trigger software clear的訊號的時間
software clear level 恆為1
今天 trigger 訊號來時
software clear level 會被拉為0一段時間再重回1
在 software clear level 為0的時間圖1右邊的 and gate 將會輸出 0
此時的 rst_n_final 將會是 0
rst_n_final 將會接上 IP 中所有 clock domain DFF 的 reset pin
為0的話就代表大部分的功能電路重置
只有當 rst_n_internal 和 software clear level 同時為 1時
所有電路才會開始運作
如果今天是 rst_n 先拉為0再拉回1
software clear level 訊號勢必會較慢拉回1
也就是電路有先後順序地方開reset
這就是所謂的 Asynchronous reset(非同步reset)