付費限定

[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面試專班你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
數位IC設計第一品牌 從0到1用嘴做IC 觀念大權
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
ts-rest 可以實現從服務器到客戶端的全型別安全,可以有效降低前後端溝通血流成河的機率。(´,,•ω•,,)
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
簡要說明 JavaScript 的 Event Loop JavaScript 是單執行緒 (single-threaded) 語言,這意味著它一次只能執行一件事,因此所有函式都需要排隊等待執行,這被稱為同步 (synchronous)。在同步操作中,若函式過多或過於複雜,會導致程式阻塞 (blo
※ 非同步概念總複習 為什麼要使用 Promise? 在 JavaScript 開發中,處理非同步操作是常見需求,涉及如文件讀寫、數據庫查詢或網路請求等耗時任務。傳統的回調方式可能導致代碼結構混亂,稱為「回調地獄」,難以維護和理解。 Promise 是解決這問題的方法。它是一個物件(objec
認識 async/await基本概念: async 的本質是 promise 的語法糖 ,只要 function 標記為 async,就表示裡頭可以撰寫 await 的同步語法,而 await 顧名思義就是「等待」,它會確保一個 promise 物件都解決 ( resolve ) 或出錯 ( re
※ 同步概念: 單純地「由上而下」執行程式碼,而且一次只執行一件事,也就是「按順序執行,一個動作結束才能切換到下一個」。缺點是你需要「等待」事情執行完畢,才能繼續往下走。 ※ 非同步概念: 盡可能讓主要的執行程序不需要停下來等待,若遇到要等待的事情,就發起一個「非同步處理」,讓主程序繼續執行,
Thumbnail
今天是連續第60日的日更,明起暫停,調整發文方式。 原先在日常的運轉中,一直想盡各種方式要維持日更的原因是:深知自己一旦停下來或者幫自己放水之後,就很難再維持或者重新進入到一個有紀律的輸出狀態。 甚至,在遇到周末或者節假日整天不在家裡時,還會預設排程,維持每日發文。 不過,如果以第一性原理回頭
Thumbnail
非同步程式設計(Asynchronous programming) 或是簡單的稱之為 async,它是一種並發程式模型(concurrent programming model),其目的就是讓多個任務能同時在作業系統的執行緒上執行,並透過 async/.await 保留同步。
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
ts-rest 可以實現從服務器到客戶端的全型別安全,可以有效降低前後端溝通血流成河的機率。(´,,•ω•,,)
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
簡要說明 JavaScript 的 Event Loop JavaScript 是單執行緒 (single-threaded) 語言,這意味著它一次只能執行一件事,因此所有函式都需要排隊等待執行,這被稱為同步 (synchronous)。在同步操作中,若函式過多或過於複雜,會導致程式阻塞 (blo
※ 非同步概念總複習 為什麼要使用 Promise? 在 JavaScript 開發中,處理非同步操作是常見需求,涉及如文件讀寫、數據庫查詢或網路請求等耗時任務。傳統的回調方式可能導致代碼結構混亂,稱為「回調地獄」,難以維護和理解。 Promise 是解決這問題的方法。它是一個物件(objec
認識 async/await基本概念: async 的本質是 promise 的語法糖 ,只要 function 標記為 async,就表示裡頭可以撰寫 await 的同步語法,而 await 顧名思義就是「等待」,它會確保一個 promise 物件都解決 ( resolve ) 或出錯 ( re
※ 同步概念: 單純地「由上而下」執行程式碼,而且一次只執行一件事,也就是「按順序執行,一個動作結束才能切換到下一個」。缺點是你需要「等待」事情執行完畢,才能繼續往下走。 ※ 非同步概念: 盡可能讓主要的執行程序不需要停下來等待,若遇到要等待的事情,就發起一個「非同步處理」,讓主程序繼續執行,
Thumbnail
今天是連續第60日的日更,明起暫停,調整發文方式。 原先在日常的運轉中,一直想盡各種方式要維持日更的原因是:深知自己一旦停下來或者幫自己放水之後,就很難再維持或者重新進入到一個有紀律的輸出狀態。 甚至,在遇到周末或者節假日整天不在家裡時,還會預設排程,維持每日發文。 不過,如果以第一性原理回頭
Thumbnail
非同步程式設計(Asynchronous programming) 或是簡單的稱之為 async,它是一種並發程式模型(concurrent programming model),其目的就是讓多個任務能同時在作業系統的執行緒上執行,並透過 async/.await 保留同步。