CDC
CDC中最重要的問題是metastability問題。
加入Synchronizer來進行異步時鐘的同步,兩級的Sync,第二級仍然會出現亞穩態的概率由MTBF決定。
MTBF:mean time between fail,數值越大越好,MTBF=1/(Fclk*Fdata*X)。
在頻率越高的情況下,MTBF越小,而且clock周期也短,此時可以考慮4級Sync。
在sending clock domain,先將數據用reg打一拍,消除glitch,而且減小了Fdata的頻率,這樣做CDC時,效果會更好。
從一個slow clock domain到一個fast clock domain,通常不會出現問題。
從一個fast clock domain到一個slow clock domain中時,可能會出現signal沒有被采樣到的情況。
在這樣的情況下,可以:
1)open-loop;
如果要確保信號能被下一級未經sync采樣到,信號必須stay 至少3個destination clock。
如果下級有做sync處理,信號stay1.5個destination clock即可。
2)close-loop;
由于req/ack的兩級同步處理,會導致通信效率不高。
多比特(Multi-bit)的CDC處理:
1)盡量減少到1bit來進行處理;
2)使用不同的load signal來進行傳輸;
3)使用gray code;
4)FIFO;
由于sync的存在,第一級的sync很可能造成setup/hold的violation,所以此處在simulation的過程中
應該關掉check。
幾種方法:
1)關掉timing check。
2)將lib中的FF的setup和hold time的值都改為0。
3)copy modify FF,指定sync單元使用修改過的FF。
4)手動或腳本修改sdf中指定路徑的setup和hold的值。
5)使用多個sdf文件,在一個文件中修改,在分別讀入兩個sdf文件,用后一個覆蓋前一個。
6)使用verdor提供的支持synchronizer的cell,0-setup,0-hold。
simulation model的建立
其中synthesis控制DC綜合的流程。
總結
- 上一篇: (转)WEB2.0的单手定则
- 下一篇: 有关Vs2008 由代码转化到设计器时死