分析Recovery/Removal
異步復位有Recover time 和Remove time 的風險,也就是說recovery time和removal time都是檢查異步信號(reset或preset或set)的釋放沿,釋放沿必須在時鐘沿前面提前recovery time釋放,或者在時鐘沿後removal time之後釋放。
順便簡單分析一下setup/hold,對於同一個時鐘,肯定滿足data_path>clk_path,而hold的要求很小,所以肯定滿足。當data_path過長時,setup可能不滿足。
假如不作同步的復位信號,那麼recovery/removal都有可能不滿足。
再考慮被本地時鐘同步後的recovery/removal,同理復位信號對removal的時間要求很小,同步後的復位信號的延遲就能滿足removal。由於設計中的全局復位信號一般有很大的扇出,佈線的延時會很嚴重,因此recovery的要求變得嚴格。最好採用全局佈線資源如BUFG,儘量用局部復位或者避免使用復位。
因此不管是同步復位還是異步復位,都要使用同步後的復位信號。復位信號進來後先用本地時鐘打兩拍。在多個時鐘域的時候注意是本地時鐘,不是全局時鐘。並在rtl中註明是異步寄存器,使得綜合工具把簡單同步器綜合在同一個slice中以減少延時,提高MTBF。
(* ASYNC_REG = "TRUE" *) (* keep = "true" *)reg system_reset_r;
(* ASYNC_REG = "TRUE" *) (* keep = "true" *)reg system_reset_r2;
————————————————
版權聲明:本文爲CSDN博主「kuangxin_0」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u010161493/article/details/52939224