CDC (Clock Domain Crossing) 屬於當今IC design中非常常見的問題,
雖然增加了Design的難度,
卻因為它所帶來的諸多優勢令人難以放棄,
舉例來說,
假如module A的spec對於performance的需求 遠小於module B,
那麼module A和module B的main clk綁著同一隻的話,
強迫著module A 運作到跟module B一樣的效能,
就出現了over spec的現象,
可能會導致cost上升,area上升,power上升,working tempture上升,timing變難收斂等,
因此現今design中較流行給他一個剛剛好的氛圍,
CDC的重要性也就逐漸攀高.
然而CDC本身的內涵為
兩個register間的Data需要做傳輸,但是這兩個register所使用的clk卻是沒有關聯的,
也就是經常看到大家討論的Async電路
至於async電路會有甚麼問題呢,
為甚麼要特別給他一個CDC的專用術語作為探討,
原因是因為Async電路沒有辦法被STA cover,
STA的內涵是setup time及hold time的check,
也就是跨clk domain的情況下兩個setup/hold time沒辦法被收斂,
至於原因先留給大家思考一下.
那setup/hold time沒辦法被check又會有甚麼問題呢?
如果大家有看過其他篇的內容應該大概有點感覺,
當setup / hold time沒辦法check的話意味著data從reg_A到reg_B的timing是沒辦法被保證在1T的時間內完成,
看到這邊不知道大家有沒有辦法回答了上面提出的問題,
clk domain crossing的情況下setup/hold沒辦法被收斂,
因為STA確保的是Timing要在1T內完成,
但是這時候reg_A和reg_B所使用的clk不同隻,
這時候的1T該用reg_A來判斷或用reg_B來判斷,
沒有答案,
因為這個case不再STA當初設計的範圍內,
所以無法靠STA的手法來保證這邊的function沒問題.
因此為了要讓function在沒有辦法靠STA驗證的保證下還能work,
也就開啟了後續CDC的探討
# CDC violation #CDC issue # clk domain crossing #metastable