復位設計中的結構性缺陷及解決方案(一)
隨著(zhù)數字化設計和SoC的日益復雜,復位架構也變得非常復雜。在實(shí)施如此復雜的架構時(shí),設計人員往往會(huì )犯一些低級錯誤,這些錯誤可能會(huì )導致亞穩態(tài)、干擾或其他系統功能故障。本文討論了一些復位設計的基本的結構性問(wèn)題。在每個(gè)問(wèn)題的最后,都提出了一些解決方案。
復位域交叉問(wèn)題
1. 問(wèn)題
在一個(gè)連續設計中,如果源寄存器的異步復位不同于目標寄存器的復位,并且在起點(diǎn)寄存器的復位斷言過(guò)程中目標寄存器的數據輸入發(fā)生異步變化,那么該路徑將被視為異步路徑,盡管源寄存器和目標寄存器都位于同一個(gè)時(shí)鐘域,在源寄存器的復位斷言過(guò)程中可能導致目標寄存器出現亞穩態(tài)。這被稱(chēng)為復位域交叉,其中啟動(dòng)和捕捉觸發(fā)的復位是不同的。
在這種情況下,C寄存器和A寄存器的起點(diǎn)異步復位斷言是不同的。在C寄存器復位斷言過(guò)程中而A觸發(fā)器沒(méi)有復位,如果A寄存器的輸入端有一些有效數據交易,那么C寄存器的起點(diǎn)異步復位斷言引起的異步變更可能導致目標A寄存器發(fā)生時(shí)序違規,從而可能產(chǎn)生亞穩態(tài)。
圖1:復位域交叉問(wèn)題
在上面的時(shí)序圖中,當有一些有效數據交易通過(guò)C1進(jìn)行時(shí),rst_c_b獲得斷言,導致C1發(fā)生異步改變,w.r.t clk從而使QC1進(jìn)入亞穩態(tài),這可能導致設計發(fā)生功能故障。
2. 解決方案
* 使用異步復位、不可復位觸發(fā)器或D1觸發(fā)器POR.
* 如果復位源rst_c_b是同步的,那么則認為來(lái)自C_CLR --> Q的用于從rst_c_b_reg -->C_CLR-->C_Q1-->C1-->A_D進(jìn)行設置保持檢查的時(shí)序弧能夠避免設計亞穩態(tài)。然而,通常在默認情況下 C_CLR-->Q時(shí)序弧在庫中不啟用,需要在定時(shí)分析過(guò)程中明確啟用。
* 在目的地(A)使用雙觸發(fā)器同步器,以避免設計中發(fā)生亞穩態(tài)傳播。然而,設計人員應確保安裝兩個(gè)觸發(fā)器引入的延遲不會(huì )影響預期功能。
由于組合環(huán)路導致復位源干擾
1. 問(wèn)題
在SoC 中,全局系統復位在設備中組合了軟件或硬件生成的各種復位源。LVD復位、看門(mén)狗復位、調試復位、軟件復位、時(shí)鐘丟失復位是導致全局系統復位斷言的一些示例。 然而,如果由于任何復位源導致的全局復位斷言是完全異步的,且復位發(fā)生源邏輯被全局復位清零,那么設計中會(huì )產(chǎn)生組合環(huán)路,這會(huì )在該復位源產(chǎn)生干擾。組合路徑的傳播延遲會(huì )根據不同的流程、電壓或溫度以及干擾范圍而不同。如果設計中使用了組合信元用于復位斷言和去斷言,那么也會(huì )導致模擬中出現紊亂情況。這被視為設計人員的非常低級的錯誤。
圖2:復位源干擾(基本問(wèn)題)

評論