付費限定

[Verilog] synchronus reset vs asyncronus reset reg

更新於 發佈於 閱讀時間約 6 分鐘

sync rst 和 async rst reg 在rtl上只有差在always block的condition不同,但是在合成上卻是兩種不同type的register,有著不同的優缺

sync reset reg :

always @ (postedge clk) begin
if (!rst_n) begin
a <= 0;
else
a <= input;
end
end

async reset reg :

always @ (postedge clk or negedge rst_n) begin
if (!rst_n) begin
a <= 0;
else
a <= input;
end
end
raw-image


對於sync reset 而言,合成出來的結果是一個reg D in前接一個mux,

mux會由rst訊號來決定選0或是input作為D的輸入.

對於async reset而言,合成出來的結果是一個多一根reset pin的reg,

藉由這隻reset pin的trigger直接把reg洗成default vaule.


對於這兩種reg type有甚麼差呢?

作為面試答案的話可能有下面幾點比較

async reset :

  1. rst_n訊號assert時,當reg收到rst_n=0時,就會開始把reg設定回reset vaule,較即時
  2. 回復reset value不需要clk的介入,無時無刻都屬於可控狀態
  3. Area 較小
  4. 當reset wire 出現glitch或noise時抵抗力較差, 如果有一個glitch打出到reg reset pin上,value會瞬間reset掉導致function出現錯誤 <- 有甚麼方法可以盡量避免glitch的影響?下集介紹
  5. reset 訊號沒介入data path的timing,對於setup/hold time check較容易收斂一些
  6. 長reset tree難度較高 <- 甚麼是reset tree和一般討論的clk tree有甚麼不同?下集介紹


sync reset :

  1. rst_n 訊號assert需要維持較久,須等到reg收到clk postedge trigger時,reset vaule才會生效
  2. rst_n的功能需要有clk才能生效,module會有先天上的限制,在沒有clk前是無法做reset的,對於有clk gating的電路,假如發生系統reset時會沒有clk讓reg清回reset value
  3. Area 較大
  4. 抵擋reset wire glitch能力較強,glitch出現同時必須配合clk碰到edge trigger的剎那,發生機率較低
  5. reset 訊號介入data path的timing,對於setup/hold time check時必須綜合考慮reset對於timing的影響
  6. reset tree在先前修setup/hold time check時已經和clk tree解過timing問題,長reset tree容易


面試官回頭思考一下,

了解了上述優缺點,答案非常精闢漂亮,

很滿意地問了下一題,在寫design時要怎麼去挑選要用哪種type的reset?

...

..

.


對於這個問題來說,

以行動支持創作者!付費即可解鎖
本篇內容共 2021 字、2 則留言,僅發佈於IC面試專班你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
留言
avatar-img
留言分享你的想法!
eating LIN-avatar-img
2024/10/05
作者好, 對於 Asynchronous Reset 第5點 [ reset 訊號介入data path的timing,對於setup/hold time check較容易收斂一些 ] 的意思不太清楚,為什麼會有這樣的影響,可以請教你嗎?感謝
出一張嘴-avatar-img
發文者
2024/10/17
eating LIN Hi 您好, 抱歉對於async reset的第5點我有typo,漏打字了,感謝您的糾正 對於 Asynchronous Reset 第5點 [ reset 訊號"沒"介入data path的timing,對於setup/hold time check較容易收斂一些 這邊想表達的是 實際上synthesis階段做timing sign-off的時候 check item除了一般REG2REG的Q->D的timing外 還會去檢查reset釋放的時機點是否恰當 https://vocus.cc/article/66aa2b66fd897800016831f0 可以先參考上述這邊reset的timing check,有空我會把後續的探討完成 對於sync reset來說,reset的訊號是和data點做and或or後再傳到D_in上 某種程度來說,他做為data path中間的combinational的一環,已經被約束過了 但async reset type的reg則沒有這一塊,reset訊號是直接送進給多一個port本身帶有reset功能的reg 所以在timing check上他與data path是兩條獨立的 data path check的setup/hold time內沒有reset的成分
avatar-img
數位IC設計第一品牌
80會員
26內容數
數位IC設計第一品牌 從0到1用嘴做IC 觀念大權
2025/04/23
作為designer一定經常看到spec中描述當edge出現時需要trigger電路運作, 舉個實際的例子 2 phase的handshake protocal, 以下方paper中的圖例來看. Quasi Delay-Insensitive High Speed Two-Phase Prot
Thumbnail
2025/04/23
作為designer一定經常看到spec中描述當edge出現時需要trigger電路運作, 舉個實際的例子 2 phase的handshake protocal, 以下方paper中的圖例來看. Quasi Delay-Insensitive High Speed Two-Phase Prot
Thumbnail
2024/10/28
前面探討完setup time / hold time violation的原因跟解法, 來更進一步探討一下現實面, 實際ic design中, 我們有可能會碰到一個狀況, synthesis過後path出現了setup time violation 或 hold time violatio
Thumbnail
2024/10/28
前面探討完setup time / hold time violation的原因跟解法, 來更進一步探討一下現實面, 實際ic design中, 我們有可能會碰到一個狀況, synthesis過後path出現了setup time violation 或 hold time violatio
Thumbnail
2024/10/02
上一篇內容提到說, hold time violation的成因是因為訊號源在clk trigger edge後太快就開始要變化成新的value, 導致reg在還沒完全把data取樣下來時他的input端口就開始震動, 可能會導致reg在抓data時出現問題,雖然預期要鎖到1但是最後卻因為in
Thumbnail
2024/10/02
上一篇內容提到說, hold time violation的成因是因為訊號源在clk trigger edge後太快就開始要變化成新的value, 導致reg在還沒完全把data取樣下來時他的input端口就開始震動, 可能會導致reg在抓data時出現問題,雖然預期要鎖到1但是最後卻因為in
Thumbnail
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
sync rst 和 async rst reg 在rtl上只有差在always block的condition不同,但是在合成上卻是兩種不同type的register,有著不同的優缺 sync reset reg : always @ (postedge clk) begin if (!rs
Thumbnail
sync rst 和 async rst reg 在rtl上只有差在always block的condition不同,但是在合成上卻是兩種不同type的register,有著不同的優缺 sync reset reg : always @ (postedge clk) begin if (!rs
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
簡要說明 JavaScript 的 Event Loop JavaScript 是單執行緒 (single-threaded) 語言,這意味著它一次只能執行一件事,因此所有函式都需要排隊等待執行,這被稱為同步 (synchronous)。在同步操作中,若函式過多或過於複雜,會導致程式阻塞 (blo
Thumbnail
簡要說明 JavaScript 的 Event Loop JavaScript 是單執行緒 (single-threaded) 語言,這意味著它一次只能執行一件事,因此所有函式都需要排隊等待執行,這被稱為同步 (synchronous)。在同步操作中,若函式過多或過於複雜,會導致程式阻塞 (blo
Thumbnail
非同步程式設計(Asynchronous programming) 或是簡單的稱之為 async,它是一種並發程式模型(concurrent programming model),其目的就是讓多個任務能同時在作業系統的執行緒上執行,並透過 async/.await 保留同步。
Thumbnail
非同步程式設計(Asynchronous programming) 或是簡單的稱之為 async,它是一種並發程式模型(concurrent programming model),其目的就是讓多個任務能同時在作業系統的執行緒上執行,並透過 async/.await 保留同步。
Thumbnail
先須知識: 了解什麼是變數 作用域scope 在Rust中,變數預設是不可變的 let name = "Zoe"; // 預設變數不可變 也就同於Javascript中的const,若想讓變數可變則需要在let後面加上mut關鍵字: let mut name = "Vicky"; nam
Thumbnail
先須知識: 了解什麼是變數 作用域scope 在Rust中,變數預設是不可變的 let name = "Zoe"; // 預設變數不可變 也就同於Javascript中的const,若想讓變數可變則需要在let後面加上mut關鍵字: let mut name = "Vicky"; nam
Thumbnail
👨‍💻 簡介 在處理string時,正則表達式是一個非常有用的工具。Go語言的regexp package 可以使用正則表達式,用來執行如檢查string是否匹配某個模式、提取匹配的subString等操作。
Thumbnail
👨‍💻 簡介 在處理string時,正則表達式是一個非常有用的工具。Go語言的regexp package 可以使用正則表達式,用來執行如檢查string是否匹配某個模式、提取匹配的subString等操作。
Thumbnail
在其他語言會時常使用正規表達式來幫字串進行 Filter,在遊戲製作裡面比較遇不到處理使用者的字串輸入、資料庫查詢結果的情況,但在編輯程式碼,有搜尋(Ctrl+F)、取代(Ctrl+H)需求時使用 Regex 也能提升工作效率。
Thumbnail
在其他語言會時常使用正規表達式來幫字串進行 Filter,在遊戲製作裡面比較遇不到處理使用者的字串輸入、資料庫查詢結果的情況,但在編輯程式碼,有搜尋(Ctrl+F)、取代(Ctrl+H)需求時使用 Regex 也能提升工作效率。
Thumbnail
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
Thumbnail
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
Thumbnail
執行以上程式碼,然後看到了這個結果: 為什麼「延遲0秒」的函式寫在上方,但在console印出的結果,它還是被排在第二順位? 利用AC教材提供的youtube演講連結一窺究竟: 演講提供了更多JS的細節概念,身為JS新手的我還在消化,但若針對教案提出的問題來回答,加上利用google大神查到MDN的
Thumbnail
執行以上程式碼,然後看到了這個結果: 為什麼「延遲0秒」的函式寫在上方,但在console印出的結果,它還是被排在第二順位? 利用AC教材提供的youtube演講連結一窺究竟: 演講提供了更多JS的細節概念,身為JS新手的我還在消化,但若針對教案提出的問題來回答,加上利用google大神查到MDN的
Thumbnail
auto(自動)、register(暫存器)、static(靜態)、extern(外部),以作用範圍(scope)、存儲時期(life time)、連結(linkage)的不同作為區別。
Thumbnail
auto(自動)、register(暫存器)、static(靜態)、extern(外部),以作用範圍(scope)、存儲時期(life time)、連結(linkage)的不同作為區別。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News