付費限定

[Verilog] 10分鐘看懂setup time / hold time check (原創)

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

面試必考題, 人人說的一口好setup time / hold time

但是除了timing check的公式外很沒有感覺,

小弟出一張嘴經年累月用心體會說說對這個timing設定的感想,

講一下我消化完對他的定義

setup time 指的是當訊號要被抓住前必須保持穩定幾秒

hold time 指的是當訊號被抓住後必須維持穩定幾秒

metastable 則是當setup time 或 hold time 無法滿足時有機率出現的狀態


用個實際例子來舉例,

早期在拍照時,再按下快門前後都必須保持穩定不動,拍下的照片才不會失焦,

對於Register或latch來說也是一樣,

按下快門的動作等同於clk的positive edge或negative edge trigger那一剎那,

按下快門前必須預備不動幾秒等同於Setup time的意義,

最少須保持多久才不會再按快門那剎那失焦, 字面上的setup意思就在此.

按下快門後必須維持幾秒不動等同於hold time的意義,

最快必須要多久後才能動才不會失焦, 字面上的hold的意思就在此.

如果我們無法保持不動的話,失焦的現象則等同於metastable,

不知道reg這筆取到的值到底是不是準的.


以下圖為例,假設我們預期是clk 上升緣要去抓取data,

那setup time及hold time check則預設會位於上升緣前後,

上升緣前面是setup time check,上升緣後是hold time check,

在上升緣(快門)trigger那一剎那,

必須滿足Data已經保持一段時間沒動了(setup data).

在上升緣trigger過後,

必須維持當下的Data一段時間不動 (hold住data).

如此一來才可以順利的讓register抓穩Data

raw-image


那如果我們遇到setup time violation或hold time violation要怎麼處理呢?

或是我不管violation又會怎樣?反正開頭直接說機率性metastable不是一定會出現

下集再來一起探討,剩一張嘴不是一天造成


看完精湛的論述來小小思考一下,

那想想如果發生metastable看到的訊號變化會長甚麼樣子呢?

...

以行動支持創作者!付費即可解鎖
本篇內容共 1159 字、2 則留言,僅發佈於10分鐘看懂IC設計你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
留言
avatar-img
留言分享你的想法!
UT S-avatar-img
2024/09/25
以拍照做比喻易懂且生動(讚),不知有無針對違反 setup/hold time 時的應對方法做解釋的篇章 ?
出一張嘴-avatar-img
發文者
2024/10/01
UT S 會陸續把這部分補上唷,謝謝支持
avatar-img
數位IC設計第一品牌
72會員
26內容數
數位IC設計第一品牌 從0到1用嘴做IC 觀念大權
2024/12/28
到了最後一個階段, 我們做了這麼多CG cell insertion後, 要怎麼知道到底是不是對Design有幫助的呢? 是否有個rule又或是量化的數據來解釋說CG的效果如何 在下面這篇paper中提到了幾種觀測CG cell efficiency的方法 J. Srinivas, M
Thumbnail
2024/12/28
到了最後一個階段, 我們做了這麼多CG cell insertion後, 要怎麼知道到底是不是對Design有幫助的呢? 是否有個rule又或是量化的數據來解釋說CG的效果如何 在下面這篇paper中提到了幾種觀測CG cell efficiency的方法 J. Srinivas, M
Thumbnail
2024/12/16
前面文章曾經提到說, 除了我們在寫rtl當下直接撰寫加入的cg cell外, 實際上我們有些clk gating cell是靠tool自己幫忙插的, [Verilog] 10分鐘由淺入深看懂 clock gating -2 那麼tool是怎麼判斷說哪邊要插gating cell的呢?
Thumbnail
2024/12/16
前面文章曾經提到說, 除了我們在寫rtl當下直接撰寫加入的cg cell外, 實際上我們有些clk gating cell是靠tool自己幫忙插的, [Verilog] 10分鐘由淺入深看懂 clock gating -2 那麼tool是怎麼判斷說哪邊要插gating cell的呢?
Thumbnail
2024/12/11
前面文章提到過clk gating check實際上就是在check gating cell的enable訊號 檢查enable的timing是否能滿足STA的check, 不過不知道各位有沒有發現到, 這條path看起來很單純呀而且我還用上了latch大法, 可能讓訊號走完1整個cycle
Thumbnail
2024/12/11
前面文章提到過clk gating check實際上就是在check gating cell的enable訊號 檢查enable的timing是否能滿足STA的check, 不過不知道各位有沒有發現到, 這條path看起來很單純呀而且我還用上了latch大法, 可能讓訊號走完1整個cycle
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
這篇內容,將會講解什麼是「while迴圈」,以及與「while迴圈」相關的知識。包括while迴圈的簡介、while迴圈、break、continue。
Thumbnail
這篇內容,將會講解什麼是「while迴圈」,以及與「while迴圈」相關的知識。包括while迴圈的簡介、while迴圈、break、continue。
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
本文介紹了在網站開發中如何運用狀態機的原則和設計方法。通過具體案例分析,以及狀態和數據的區分,詳細介紹了狀態機的設計原則和應用。讀者可以通過本文瞭解如何將狀態機應用於實際的網站開發中。
Thumbnail
本文介紹了在網站開發中如何運用狀態機的原則和設計方法。通過具體案例分析,以及狀態和數據的區分,詳細介紹了狀態機的設計原則和應用。讀者可以通過本文瞭解如何將狀態機應用於實際的網站開發中。
Thumbnail
對於新手來說,使用Fedora可能會有一些困難,比如找不到要延遲系統暫停時間如下圖,那要如何做呢?請繼續看下去。
Thumbnail
對於新手來說,使用Fedora可能會有一些困難,比如找不到要延遲系統暫停時間如下圖,那要如何做呢?請繼續看下去。
Thumbnail
整合測試的時候突然遇到一個突然無法登入產品網站的問題,把程式模組單獨拉出來測試又正常,觀察測試報告後發現出現發生登入異常的時間點並不固定,而且只要發生就會連續發生一段時間,程式被中斷掉。後來確認問題在...
Thumbnail
整合測試的時候突然遇到一個突然無法登入產品網站的問題,把程式模組單獨拉出來測試又正常,觀察測試報告後發現出現發生登入異常的時間點並不固定,而且只要發生就會連續發生一段時間,程式被中斷掉。後來確認問題在...
Thumbnail
前言 上次教到如何使用 environment 去自動設置我們環境那些,今天我們要教 CI/CD 中的 when,通常在自動化佈署上線流程,並不會一路像前幾次一樣,先佈署到測試機,再佈署 demo 機,最後佈署到正式機,我們在佈署正式機的時候,通常會做一個防呆,比如說做成一個指令集,或者是按鈕等等
Thumbnail
前言 上次教到如何使用 environment 去自動設置我們環境那些,今天我們要教 CI/CD 中的 when,通常在自動化佈署上線流程,並不會一路像前幾次一樣,先佈署到測試機,再佈署 demo 機,最後佈署到正式機,我們在佈署正式機的時候,通常會做一個防呆,比如說做成一個指令集,或者是按鈕等等
Thumbnail
為什麼寫這麼基本的設定呢? 剛開始打字時預設內定為微軟注音,因為沒有全部設定好,導致後續寫稿時常常打錯字,也有是因為打注音時選錯字也有關。 雖然這個很基本,但也有滿多人不知道該怎麼設定,或常被微軟裡其設定繁雜而困擾,至少我找了一陣子......。 進入畫面右下方切換中英文(右鍵),叫出IME工
Thumbnail
為什麼寫這麼基本的設定呢? 剛開始打字時預設內定為微軟注音,因為沒有全部設定好,導致後續寫稿時常常打錯字,也有是因為打注音時選錯字也有關。 雖然這個很基本,但也有滿多人不知道該怎麼設定,或常被微軟裡其設定繁雜而困擾,至少我找了一陣子......。 進入畫面右下方切換中英文(右鍵),叫出IME工
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的
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News