為了追求以更低功耗和成本實現更高性能的目標,超大型積體電路(VLSI)產業朝向系統級晶片(SoC)整合方向發展的趨勢,促成了多時脈域設計的出現。最常見的是當頻率關係是2的整數倍時,共用相同時脈源的功能區塊具有同步互動性。從時序的角度看,這些互動可能經常發生在設計的關鍵路徑。在此情況下,你必須測試這些互動是否存在瞬變類型的故障(transition fault),以達到測試覆蓋率和DPPM(百萬分之一缺陷)目標。

換句話說,在其中一個時脈域具有發射正反器(flip-flop)而另一同步時脈域具有擷取正反器的路徑,被稱為「同步跨時脈域」(SCCD)路徑。如圖1所示,FF1到FF2之間的組合雲端稱為「內部時脈」(intra-clock)域,而FF1到FF3之間的雲端稱為「跨時脈」(inter-clock)域。

20180226_OpenSilicon_TA31P1 圖1:內部時脈域和跨時脈域路徑可能會以延遲的形式引發故障

用於瞬變故障測試的時脈濾波電路(CFC)從時脈源濾除所需的時脈脈衝。典型的CFC具有局限性,無法用於測試跨同步時脈域的瞬變故障。發生瞬變故障時會出現什麼問題?本文將解釋這些限制,並建議如何對CFC進行改進,以順利實現SCCD測試(如圖1所示的跨時脈域故障)。

圖2顯示一個典型的時脈濾波電路,它有三個主要元件: ‧同步單元,用於同步掃描使能(SE)訊號與操作時脈域; ‧由同步SE訊號觸發的可編程移位暫存器,可控制整合時脈閘控(ICG),以產生所需數量的時脈脈衝; ‧ICG單元。

20180226_OpenSilicon_TA31P2 圖2:典型的時脈濾波電路可能不足以測試跨同步時脈域的時脈故障

原速(at-speed)故障測試包括兩個步驟。第一步是移位模式,其次是擷取模式。在移位模式,當SE為高電平時,經由掃描鏈移位而使暫存器初始化為已知值。而在擷取模式,當SE較低時,在暫存器中擷取功能路徑的響應訊號。

在擷取模式,CFC用於產生所需的時脈脈衝,以實現原速測試的啟動和擷取週期。

當SE被選通,經過一段延遲後到達CFC。然後在CFC中,與接收時脈域的兩級同步單元同步。被SE同步的訊號將觸發n級可編程暫存器而為ICG提供使能訊號,以濾除所需的時脈脈衝。這意味著來自CFC的時脈脈衝從SE到達CFC的時間已存在一定延遲,而這主要是由同步單元延遲所致。

20180226_OpenSilicon_TA31P3 圖3:原速測試時脈的典型CFC輸出波形

針對時脈域內的故障(內部時脈域故障)測試,CFC還算得心應手,如圖3所示。然而,要測試SCCD瞬變故障,必須產生啟動和擷取脈衝,如圖4所示。為了獲得這種波形,我們通常使用兩個獨立的CFC。每個時脈域都需要自己的CFC,因為每個時脈的脈衝寬度都不相同,因此需要從不同的CFC產生。圖4給出可能實現的不同啟動和擷取條件的示例。

20180226_OpenSilicon_TA31P4 圖4:用於測試跨時脈域故障的典型啟動和擷取脈衝組合,包括快速啟動和慢速擷取,以及慢速啟動和快速擷取脈衝

當用於測試同步跨時脈域(圖1)的故障時,相同的CFC可能遇到以下挑戰:

邊緣失準

當測試兩個SCCD之間的故障時,每個時脈域都有自己的CFC。而由於CFC固有的同步延遲,可能導致輸出錯位,致使產生的時脈邊緣無法與週期對準。例如,假定頻率為F和F/2的兩個同步時脈,每個都具有移位暫存器長度為4的可編程CFC。可編程移位暫存器在不同時間被觸發,從而導致CFC輸出的不同延遲。假定採用兩級同步器,則時脈域F/2需要兩倍於時脈域F的時間。圖5顯示兩個CFC的時脈輸出波形。值得注意的是,有兩種類型的錯位失準:一是由於同步本身的延遲,如圖5所示。

20180226_OpenSilicon_TA31P5 圖5:通用CFC輸出的時脈波形,顯示邊緣失準

失準的另一個原因是時脈偏斜。每個時脈的偏斜都導致兩個CFC的時脈輸出失準情況進一步加劇。如圖6所示,CFC_OUT_F的輸出相對於CFC_OUT_F/2是偏斜的。因此,擷取發射訊號的功能時序窗被壓縮,從而折損了測試的品質和有效性。

20180226_OpenSilicon_TA31P6 圖6:時脈偏斜可能導致邊緣失準

丟失時脈脈衝

圖4顯示跨時脈域故障的原速測試時所需的啟動和擷取脈衝子集。參考圖5,可以推斷對於具有長度為4的可編程移位暫存器之CFC,無法觸及發射和擷取脈衝的所有組合。例如,發射和擷取脈衝的第一個組合(如圖4)可以使用這兩個CFC來創建,但第二個組合則不能。透過增加移位暫存器的長度,能夠解決這個問題。

如圖4所示,為了成功測試SCCD路徑,需要兩種啟動和擷取脈衝的組合。脈衝應該由時脈時序窗加以隔離。但由於時脈偏斜和同步單元延遲,這並不容易實現。

多週期路徑測試

由於涉及遺失時脈脈衝的問題,測試受到移位暫存器長度的限制。移位暫存器的長度並不足以擷取所有的啟動和擷取組合,而且在多週期路徑(MCP)中還更加嚴重,因為你必須等待一個時脈週期以脈衝啟動另一個。可編程的移位暫存器應該有足夠的寬度來創建所需的MCP啟動與擷取脈衝和測試路徑。圖7顯示了MCP的兩種情況。同樣地,對CFC來說,只有第一個條件是可能的,第二個則否,因為它是基於通用CFC脈衝而產生的。

20180226_OpenSilicon_TA31P7 圖7:多週期路徑需要足夠長的移位暫存器,才能產生有效啟動

實體建置和STA挑戰

如圖8所示,D1和D2之間的延遲差異需要盡可能地接近。較小的差異確保兩個時脈之間的時脈偏斜在測試條件下與在功能條件下看到的時脈偏斜相似。設計者應該提供額外的實體和時序約束來達到較小差異。例如,你可以使用SDC實現D1和D2路徑之間的時脈平衡。

20180226_OpenSilicon_TA31P8 圖8:最小化D1和D2之間的差異,可減少時脈偏斜

模式產生:CFC

即使對於可測試的條件,設計者也需要找到正確的位元序列,以便在可編程移位暫存器中實施約束。基於這些值,CFC將為單週期路徑和多週期路徑產生正確的啟動和擷取脈衝序列。

用於測試跨時脈域瞬變故障的時脈濾波電路應確保以下幾點: ‧同步時脈域的CFC應同時觸發,以產生對準的時脈脈衝; ‧電路應提供選擇所需精確脈衝對(pair)的靈活性,以實現啟動和擷取的任意組合; ‧電路應該是時序友善且有利於實現的。

圖9顯示OpenSilicon使用的一個改善的CFC。

20180226_OpenSilicon_TA31P9 圖9:CFC的改善包括可編程移位暫存器和一個分離同步單元

通用同步單元

從CFC中取出同步單元,並通用於所有的SCCD CFC,能夠確保對可編程移位暫存器的觸發同時到達。單獨的單元消除了由於同步單元延遲差異而導致的邊緣失準。

如圖10所示,要實現具有對準上升緣的輸出時脈脈衝,必須在SCCD最快時脈的前一個邊緣處產生同步SE。你可以藉由在同步單元中的多個SCCD時脈組合實現。為了以最小邏輯實現上述的對準,可在同步單元中使用最慢和最快的SCCD時脈。

20180226_OpenSilicon_TA31P10 圖10:有效的SE同步邊緣產生所有SCCD時脈的正確對準

移位暫存器時脈

SCCD CFC的可編程移位暫存器被修改為以該SCCD的最快時脈頻率作業。這在該SCCD的最快時脈(f)和操作時脈(f/2)之間創建了一條時序路徑,如圖11所示。透過在時脈樹合成(CTS)階段嚴格地限制時脈偏斜,該修改簡化了實體建置和靜態時序分析(STA)。它還為實體建置和STA移除了額外的限制。

20180226_OpenSilicon_TA31P11 圖11:SCCD時序路徑包含一個同步單元和可編程移位暫存器

移位暫存器寬度

由於移位暫存器的操作頻率高於CFC工作頻率,因而需要增加其寬度。例如,要產生四個f/2時脈脈衝,移位暫存器的長度應為8,因為它以頻率f進行操作。移位暫存器的寬度取決於特定SCCD中最快時脈與最慢時脈頻率之比。以下的公式表示可改變移位暫存器寬度的參數:

移位暫存器寬度=最快時脈頻率/最慢時脈頻率x(最慢時脈的)脈衝數

例如,如果同步時脈域的頻率為f、f/2和f/4,為了實現最多4個時脈脈衝,則移位暫存器寬度應該是:

移位暫存器寬度=f/f/4 x 4 = 16

因此,你需要一個以最快時脈f運作的16位元寬度移位暫存器。

圖12描繪了F、F/2和F/4等三個不同時脈的SCCD CFC輸出時脈脈衝。使用可編程移位暫存器,就能夠配置CFC以產生所需的啟動和擷取時脈脈衝。

20180226_OpenSilicon_TA31P12 圖12:同步時脈域中的CFC輸出顯示所有時脈緣都對準了,而無任何延遲

在圖5中顯示,使用典型的CFC,無法產生用於測試跨時脈域故障的啟動和擷取時脈脈衝的所有組合。而使用增強型CFC,就能夠產生所有可能的啟動和擷取脈衝組合,包括MCP測試所需的組合。

模式產生

產生增強型CFC的模式涉及將移位暫存器的位元編程為與所需啟動和擷取脈衝相對應的值。使用增強型CFC,可編程移位暫存器以最快的時脈運作,以取得時脈脈衝,因而需要約束多個移位暫存器位元。

假定操作時脈頻率為f/4,可編程移位暫存器時脈的頻率為f。需要對4個移位暫存器位元進行編程,以產生一個f/4操作時脈頻率的脈衝(如圖13)。此外,使用命名擷取程序(NCP)自動測試模式產生(ATPG)方法,以執行故障模擬。

20180226_OpenSilicon_TA31P13 圖13:兩個CFC的可編程移位暫存器位元值可產生一個啟動和擷取組合

例如Open-Silicon已經在設計中實現了這種增強型CFC,並且提升了1.07%的原速覆蓋。雖然該數字本身可能看起來很小,但這些故障涵蓋了必須測試的關鍵路徑。

結語

在包含多個時脈的複雜SoC中測試SCCD故障並不容易,但它對於提高良率非常重要。為了克服這些挑戰,本文提出一種修改現有CFC以實現更高覆蓋率的新方法。採用這種方法,能夠在不影響任何設計進度和複雜度的前提下,只對原有的CFC進行微小更改,即可實現一款可靠的CFC。測試這種同步跨時脈域的故障,有助於讓設計人員實現更高的原速測試覆蓋率和低DPPM目標,同時促進IC元件的篩選,並為執行速度分類帶來額外好處。

該測試方法還能讓系統工程師更有信心推出成功的產品,特別是在設計包含許多SCCD路徑的情況。