非同步(Asynchronous)重設傳統上用於超大型積體電路(VLSI)設計,以便在上電後將同步(synchronous)電路帶到已知狀態。非同步重設釋放操作必須與同步邏輯時脈訊號協調,才能消除由於重設和時脈之間可能競爭引起的同步故障。缺乏這種協調會在上電時導致間歇性故障。當考慮大型多時脈域設計時,這一問題還會加劇。除了同步化問題外,將非同步重設分配至數百萬個觸發器頗具挑戰,它要求類似於時脈樹合成(CTS)的技術,而且需要類似的區域和路由資源。

本文闡述了非同步重設的要求和挑戰,特別是同步和分配問題;同時討論了重設同步和分配傳統方案的缺點,並提出更快、更簡單的時序收斂以及更可靠的重設同步和分配解決方案。

非同步重設挑戰

為了使邏輯處於已知狀態,數位VLSI設計中通常包含重設功能。重設主要用於控制邏輯,而且可以從資料路徑邏輯中消除,從而縮小邏輯區域。重設可以與時脈訊號同步或非同步。

同步重設需要有效時脈,會引起某些與時脈週期相關的延遲,並可能影響資料路徑的時序。另一方面,同步重設是確定性的,不會產生亞穩態。

非同步重設則不需要有效時脈使觸發器處於已知狀態,它具有比同步重設更低的延遲,而且可以利用不影響資料路徑時序的特殊觸發器輸入接腳。但是,非同步重設也有其缺點:

  1. 它們可能在觸發器中引起亞穩態,導致非確定性行為。
  2. 為了實現可測試設計(DFT),必須可以直接存取非同步重設。
  3. 非同步重設可能導致抗輻射(rad-hard)應用的可靠性問題,易於受到單事件瞬態(SET)現象的影響。

本文關注與非同步重設相關的問題和解決方案,而非著墨於重設類型的優劣。本文提出的一些技術同時適用於非同步和同步重設。

非同步重設被廣泛應用於數位設計,典型的非同步重設驅動器是外接埠,具體取決於電源狀態(RC電路、看門狗元件)、手動重設按鈕和外部主元件(如微處理器)等。

在許多情況下,非同步重設可以被同步重設替換,但有些情況下,非同步重設功能是必備的。例如當上電時缺少主動時脈(時脈不穩定,或者為降低功耗設置閘控)的同步設計,則需要其外部介面處於某種已知狀態。另一個例子是低功耗設計,必須在上電過程中使功耗最小化,也沒有主動時脈。

使用非同步重設並不簡單。儘管在重設斷言期間可以忽略時脈和重設之間的相對時序,但重設釋放必須與時脈同步。為了避免重設釋放邊緣同步,可能導致亞穩態。圖1顯示主動式高電位非同步重設。重設斷言(a)在確定性有限時間(傳播延遲,TR-pd)內影響觸發器輸出Q,且無論時脈訊號CLK為何。在重設釋放(b)期間,RST埠相對於時脈埠CLK必須滿足設置和保持時序條件。違反RST埠的設置和保持條件(也稱為重設恢復和移除時序)可能會導致觸發器變為亞穩態,導致設計因為切換到未知狀態而失敗。請注意,這種情況類似於觸發器資料埠D的設置和保持條件相抵觸。

20171221_vSync_TA31P1 圖1:主動式高電位非同步重設斷言和釋放:(a)非同步重設斷言;(b)違反時序的非同步重設釋放(來源:vSync Circuits)

此外,對於大型設計,由於設計(線長不等、負載不均、IR降)和製程(緩衝和走線)變異,重設和時脈分配網路內部的偏移(skew)可能十分顯著。重設和時脈訊號到達之間的關係可能因不同觸發器而異。在這種情況下,設計的不同部份可能會在不同的時脈週期內離開重設模式,從而違反所需功能。圖2的例子顯示RESET的釋放邊緣在不同的時脈週期到達觸發器Q0和Q1,導致Q0/Q1由其重設狀態的非現時(non-current)中釋放。

20171221_vSync_TA31P2 圖2:大型設計的重設和時脈偏移(來源:vSync Circuits)

為了避免上述問題,非同步重設釋放必須與目標時脈同步。透過在重設分配網路的根源採用特殊重設同步器,以執行典型的重設同步。圖3顯示一系列這種同步器示例。

20171221_vSync_TA31P3 圖3:非同步重設同步器:(a)、(b)「後緣」同步器;(c)、(d)「基於vdd」的同步器;(e)重設同步器操作;(f)重設釋放時序路徑(來源:vSync Circuits)

在圖3a和3b所示的「後緣」同步器中,進入的非同步重設RSTI訊號透過組合邏輯(OR和NAND閘極示例)連接到同步器輸出RSTO,允許在RSTI斷言後跟隨非同步RSTO斷言。因此,RSTO斷言並不依賴於時脈。

值得注意的是在圖3a的同步器中,RSTI和RSTO都是高電位的主動訊號,而在圖3b的同步器中,輸入RSTI_N為低電位主動訊號,RSTO為高電位主動訊號。在RSTI的非同步釋放中,輸出RSTO保持有效(asserted),直到RSTI釋放透過雙觸發同步器(F0、F1)實現同步。然後,RSTO被同步釋放,從而滿足針對連接至重設分配網路的觸發器設置和保持條件。

重設同步器的操作如圖3e的波形圖所示。在同步的同時,由於F0觸發器可能處在亞穩態,而使重設釋放的延遲可能會有一個時脈週期的差異。還應該注意的是,同步器中使用的觸發器數量應根據平均故障間隔時間(MTBF)運算進行設置,然而,由於RSTI的速率很低,在大多數情況下,兩個觸發器就能提供令人滿意的MTBF。

圖3c和圖3d顯示了非同步重設同步器的另一種常見風格。在這個「基於Vdd」的同步器中,採用具有非同步重設/設置埠的觸發器(注意,後緣同步器採用無RST/SET埠的簡單D觸發器)。在RSTI斷言(圖3c)中,無論時脈活動如何,同步器RSTO_N(低電位主動)的輸出都非同步地變為有效。在RSTI釋放時,連接到觸發器F0的D埠的VDD訊號(‘1’)則會被同步。F0可能變成亞穩態,但由於F1的輸入並不會在第一個時脈緣發生變化,所以F1不會變成亞穩態。因此,使用雙觸發器同步器對常數‘1’輸入進行同步,導致RSTO_N的非同步釋放。

基於Vdd的同步器優於後緣同步器,因為它可以在沒有時脈的情況下工作,即時脈可以在RSTI釋放後出現。後緣同步器在RSTI釋放之前需要穩定的時脈(至少幾個週期),否則其內部觸發器不會被初始化。

圖3f顯示與同步觸發器F1和目標應用觸發器F2之間重設釋放相關的時序路徑。如圖所示,由於兩個觸發器F1、F2位於相同的時脈域,所以路徑TR應根據標準STA規則進行最佳化,應該比時脈週期更短,並且應該滿足針對所有目標觸發器(例如F2)的設置和保持條件。

將重設分配網路延遲表示為TR、時脈週期為TCLK、設計應滿足以下運算式(為簡化表示,假設FF1傳播延遲包含在TR中,並且忽略時脈偏移):

TCLK >= TR + TSU … (1)

很顯然地,重設分配網路的時序轉換在以下情況時具有挑戰性:

  1. 大型重設分配網路。當時脈域內的觸發器數量多時,重設分配網路延遲TR變長、可能大於單個時脈週期,從而違反了時脈約束(1)。
  2. 時脈速率高。當採用高速時脈時,TCLK時脈週期變短,也為時脈約束(1)帶來挑戰。

具有大量觸發器和以高頻操作的現代高性能設計需要處理重設分配的特殊解決方案。根據等式(1)的簡單最佳化需要類似CTS的最佳化演算法。只要能滿足時脈約束(1),CTS和重設時脈樹合成的主要區別就是沒有低時脈偏移要求。然而,對於ASIC設計,這種方法導致了由大量緩衝器組成的高扇出網路合成。在FPGA設計中,則導致必須採用多個全域網路資源。在重設切換期間,大電容網路構成高開關電流的另一項挑戰,從而需要更多的電源。考慮到非同步重設利用率低(大多數情況是每次上電時),對其使用高扇出和全域網路導致功耗、ASIC面積或FPGA路由資源與EDA執行時間的更高支出。

對於大型設計而言,當重設同步器的時脈由時脈樹最頂層導出,而設計其餘部份的時脈由時脈樹分支控制時,這個問題會更嚴重。在這種情況下,必須採用考慮時脈樹延遲的精確後置佈局STA,以搭配從重設同步器到邏輯其餘部份的延遲。

為了滿足高扇出網路的時序要求,合成工具往往會複製時序通道的來源觸發器,因此每個複製觸發器都有一個減少的扇出。雖然這種方法對於一般同步邏輯在功能上是正確的,但在考慮非同步重設網路時,可能會導致功能性災難。在重設同步器最後階段的重複,違反了雙觸發器同步機制對於扇出的要求,導致可靠性降低。

針對合成工具指定一個扇出要求時所發生的整個重設同步器重複,可能由於再收斂路徑問題而導致同步失敗,如下所示:重複的重設同步器如圖4a所示。全域重設網路被分為兩個子網路,導致{ F1,F2}和{ F1d,F3}路徑的時序收斂。圖4b顯示了再收斂問題。RSTI非同步輸入由兩個不同的同步器進行同步,每個同步器都會導致隨機延遲。因此,即使RSTI在兩個同步器輸入端進同時變化,RSTO和RSTOd輸出反轉也可能間隔一個時脈週期,從而導致觸發器F2 和F3的非同時重設釋放。

20171221_vSync_TA31P4 圖4:重設同步器直接複製導致的非同步重設再收斂問題:(a)減少扇出的重複重設同步器;(b)由於再收斂路徑FF2和FF3未同時釋放而引發的重設釋放行為(來源:vSync Circuits)

對於非同步和同步重設方案而言,大型分配網路的重設釋放時序問題都很常見,能以類似的方式處理,如本文所示。

在多時脈域設計中,每個時脈域的非同步重設應該分別被單獨同步,如圖5所示。由於不同的時脈域包含不同數量的觸發器,其重設分配網路延遲各不相同,甚至引發比單個時脈域更嚴重的重設偏移。

此外,每個重設同步器都可能招致額外的非確定性延遲(與其本地時脈相關),從而使整個多時脈域(MDC)設計的同時重設釋放變得不切實際。相反地,可以定義重設序列的釋放順序,以確保正確的功能操作。例如,在M2模組釋放後,M1模組應一直保持從重設釋放;因為在重設釋放後,M1開始傳送資料至M2,M2必須準備好接收資料。

20171221_vSync_TA31P5 圖5:多時脈域(MCD)設計中的重設同步(來源:vSync Circuits)