2024-10-31|閱讀時間 ‧ 約 3 分鐘

[Verilog] 10分鐘看懂CDC問題

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


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.