面試必考題, 人人說的一口好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
那如果我們遇到setup time violation或hold time violation要怎麼處理呢?
或是我不管violation又會怎樣?反正開頭直接說機率性metastable不是一定會出現
下集再來一起探討,剩一張嘴不是一天造成
看完精湛的論述來小小思考一下,
那想想如果發生metastable看到的訊號變化會長甚麼樣子呢?
...