如今,所有SOC都使用掃描結(jié)構(gòu)來檢測設(shè)計中的任何制造缺陷。掃描鏈專為測試而設(shè)計,按串行形式連接芯片的時序元件。由于掃描元件之間缺少組合邏輯,因此這些掃描鏈容易出現(xiàn)保持故障。除了采用小于90納米的技術(shù)外,OCV(片上工藝偏差)對時序裕量有著巨大的影響。因此,除非設(shè)計在多個拐角處實現(xiàn)時序簽核(sign-off),否則極有可能出現(xiàn)保持故障,尤其是在掃描鏈等保持關(guān)鍵路徑上。這些保持故障會導(dǎo)致芯片無法在實際的應(yīng)用中使用(即便芯片能夠在功能場景中完全運行也會如此)。如果芯片中出現(xiàn)這些故障,將會降低成品率,影響產(chǎn)量,由此導(dǎo)致設(shè)計公司蒙受巨大的經(jīng)濟損失。因此,我們需要設(shè)計一個強大的掃描結(jié)構(gòu)來解決上述問題。
在本文中,我們將首先快速回顧鎖存器與觸發(fā)器的時序基本概念。在下一節(jié)中,我們將介紹掃描鏈以及與其相關(guān)的時序閉合問題。然后,我們將解釋如何在掃描鏈中使用鎖存器和觸發(fā)器創(chuàng)建強大的掃描結(jié)構(gòu),以避免在小于90納米的技術(shù)中出現(xiàn)時序故障。我們將介紹最優(yōu)秀的解決方案,滿足掃描鏈中所有可能出現(xiàn)的時序元件組合的時序要求。
建立/保持時序概述
觸發(fā)器和鎖存器是時序電路的兩個基本構(gòu)件。觸發(fā)器在所應(yīng)用的時鐘脈沖的活動邊沿(正或負)更改其狀態(tài)。觸發(fā)器在無活動時鐘邊沿時只保持其輸出。另一方面,鎖存器是電平敏感器件,它不斷對其輸入進行采樣,并相應(yīng)地在某些電平啟動信號的活動脈沖電平(正或負)上更改其輸出。觸發(fā)器采用主從配置,有兩個鎖存器在彼此相對的活動電平上以級聯(lián)方式工作。一個觸發(fā)器的面積幾乎是鎖存器面積的兩倍。
為了實現(xiàn)同步設(shè)計,我們需要確保觸發(fā)器/鎖存器的輸出不處于亞穩(wěn)狀態(tài)。這可以通過在設(shè)計中滿足建立和保持檢查要求來確保。
圖1
在觸發(fā)器中,1-1是保持檢查,而1-3是用于單周期操作的建立檢查(圖1)。我們需要確保由觸發(fā)器1發(fā)出的數(shù)據(jù)在下一個活動邊沿之前由觸發(fā)器2捕獲。同時,我們也需要確保由觸發(fā)器1發(fā)出的數(shù)據(jù)在相同的活動邊沿上沒有被觸發(fā)器2捕獲。
圖2
當?shù)诙€觸發(fā)器被負邊沿觸發(fā)后,建立檢查將是1-2(見圖2),而保持檢查將發(fā)生在上一個負邊沿(見圖2)。這意味著由觸發(fā)器1發(fā)出的數(shù)據(jù)不應(yīng)被之前觸發(fā)器2的下降沿捕獲。除非我們擁有超過半個周期的時鐘偏移,否則無法以實時的方式將其實現(xiàn)。
因此,在正-正或負-負觸發(fā)器對中,建立檢查默認為一個周期,保持檢查為零周期,而在正-負或負-正觸發(fā)器對中,建立檢查默認為半個周期,而保持檢查為反向的半個周期?,F(xiàn)在讓我們了解一下鎖存器中的時序檢查概念。
掃描鏈
掃描鏈用于在SOC中執(zhí)行測試。設(shè)計中的所有寄存器以串行形式連接,外部芯片提供刺激,然后讀出這些鏈的輸出,監(jiān)測是否有固住/狀態(tài)轉(zhuǎn)換故障。當今的SOC都非常復(fù)雜,并且在單一芯片中具有多個時鐘域。雖然在邏輯合成之后掃描會拼接出一個設(shè)計,一般還是需要注意將具有相同時鐘結(jié)構(gòu)的觸發(fā)器拼接在同一個掃描鏈中。但是,由于可用于最高級別的掃描輸入/輸出端口是有限的,因此在不同時鐘域之間混合寄存器是無法避免的。使掃描鏈具有不平衡的長度也不是最佳解決方案,因為這樣會增加總體測試時間。因此,這種設(shè)計結(jié)構(gòu)會在之后的設(shè)計階段中導(dǎo)致時序閉合問題。因為掃描位移在低頻進行,并且觸發(fā)器對,之間需要的邏輯最小,如果有的話,因此建立閉合將不是問題。但是,因為最小邏輯和觸發(fā)器對之間出現(xiàn)的偏移,這些路徑是關(guān)鍵的保持路徑。正如我們在前面所討論的,因為來自不同域中的觸發(fā)器在掃描鏈中被混合,所以在許多情況下發(fā)出和捕獲觸發(fā)器之間會出現(xiàn)巨大的偏移。在設(shè)計的后期階段,由于噪聲的影響會出現(xiàn)許多保持時間違規(guī),這將導(dǎo)致無論在穩(wěn)定或閉合設(shè)計中都會出現(xiàn)保持緩沖,從而引發(fā)設(shè)計故障。
更差的情況可能是,我們的減額裕量可能并不充足,并且我們僅可以從硅片上發(fā)現(xiàn)保持故障。如果異常的時鐘路徑非常巨大,并且硅片上的實際偏差高于預(yù)計偏差,則有可能會出現(xiàn)這種情況。當我們進一步使用小于90納米的CMOS技術(shù)時,偏差影響將變得越來越占主導(dǎo)地位,并將導(dǎo)致硅片上出現(xiàn)許多保持偏差。掃描移位路徑中的保持故障會導(dǎo)致嚴重的后果。需要進行多次調(diào)試,并且需要花許多時間來檢測硅片上的故障鏈。當我們也具有用于掃描的壓縮邏輯時,這種情況會變得更加糟糕。即使檢測到了故障鏈,我們也需要將其阻塞,這將導(dǎo)致減少測試覆蓋范圍。
總之,掃描鏈中的保持故障風險很高,必須實現(xiàn)足夠強大的設(shè)計才能處理這些不確定因素。
可以有多種解決方法,例如,對掃描鏈重新排序,根據(jù)寄存器的位置重新布置掃描鏈。盡管這些技術(shù)非常容易獲得,設(shè)計者也必須對其進行仔細探究,正如我們前面所討論的,掃描鏈在兩個時鐘域之間交叉的情況是不可避免的。
解決這種問題的一種更為有效的方式是提前采取措施,并在構(gòu)建掃描鏈的邏輯合成階段處理這些問題。來自相同時鐘門控邏輯的所有觸發(fā)器都應(yīng)拼接在一起,并且在這些觸發(fā)器束的末端可以插入一個鎖定的鎖存器,以避免從這個域的最后一個觸發(fā)器到下一個時鐘域的第一個觸發(fā)器之間出現(xiàn)任何保持故障。
圖3所示的例子將有助于我們理解這一概念。
圖3
如果時鐘周期為50ns并且偏移為5ns,我們必須在設(shè)計后續(xù)階段的觸發(fā)器3和觸發(fā)器4之間插入具有相當于5ns以上減額裕量的保持緩沖器。正如前面所討論的,由于小于90納米設(shè)計中的ocv,我們的標準減額可能因為異常時鐘路徑超出特定限制而變得并不充足。例如,對于具有10個額外時鐘緩沖器的捕獲路徑來說,每個時鐘緩沖器只具有5ps偏差(超出并超過減額值)將導(dǎo)致50ps的偏離。另外,由于OCV的因素。這一偏移可能會超過5ns,該一裕量可能并不充足。
解決上述問題的解決方案是在觸發(fā)器3輸出中插入鎖定的鎖存器,同時使鎖定的鎖存器具有與觸發(fā)器3相同的延遲。
lockup latch:鎖定鎖存器;clock gating:門控
zero cycle check hold, easy to meet: 零周期檢查保持,易于滿足;
shifting of data from flop 3 to 4 is still in one shift cycle:從觸發(fā)器3到觸發(fā)器4的數(shù)據(jù)轉(zhuǎn)移仍然保持在一個周期內(nèi)。
Hold check is half cycle back now, much relaxed now: 保持檢查現(xiàn)在只占后半個周期,比以前輕松很多
圖4
正如以上波形中所示(圖4),當我們在 觸發(fā)器3 和觸發(fā)器4之間插入鎖定鎖存器時,我們的時序路徑將被分為兩個階段。
1. 從觸發(fā)器3到鎖定鎖存器
保持檢查從1-1開始,它仍然是零周期檢查,但是因為沒有偏移,因此非常簡單易行。默認建立檢查從1-2開始。
2. 從鎖定鎖存器到觸發(fā)器4
保持檢查從2-1開始。這是插入鎖定鎖存器的主要優(yōu)勢和動機。保持是向后移位半周期,現(xiàn)在即使我們的時鐘偏移高達半個移位時鐘周期,我們?nèi)跃哂凶銐虻脑A?。這可以確保在這種情況下不會出現(xiàn)任何保持偏差。
建立檢查從2-3開始。在2-3期間鎖存器是透明的,這一階段中捕獲的任何數(shù)據(jù)都將被傳輸至觸發(fā)器4,直到邊沿 3(減去觸發(fā)器的建立時間)。我們可以看到,從觸發(fā)器1到鎖定鎖存器之間的建立檢查也可以輕松完成。1-2是默認檢查,但是鎖存器在整個半個周期的過程中都是透明的,在理想情況下,建立檢查可以向邊沿3位移。(這一概念被稱為鎖存器借用)。
此處,另外一個需要注意的重要事項是該鎖定鎖存器應(yīng)具有與發(fā)出觸發(fā)器時鐘相同的時鐘,而不是與捕獲觸發(fā)器時鐘相同。正如我們在上面所看到的,觸發(fā)器3到鎖存器的保持檢查仍然是1-1(零周期檢查)。如果鎖定鎖存器具有與捕獲 觸發(fā)器時鐘相同的時鐘,我們將不會得到任何優(yōu)點。因此,理想的解決方案是在時鐘樹結(jié)構(gòu)中發(fā)出觸發(fā)器和鎖定鎖存器都由相同的時鐘緩沖器驅(qū)動。
以上示例說明,鎖存器可以在掃描移位路徑中有效地混合保持。也許有人會提出疑問,我們是否也可以通過插入保持緩沖器或延遲cell來修復(fù)這些偏離。但是,快速查看保持緩沖器的面積,延遲cell和鎖存器表明,保持緩沖器適合用于混合較小的保持偏離,但是如果偏離較大,則鎖存器在面積和延遲方面都比緩沖器更有優(yōu)勢。使用延遲cell時,不同操作條件之間始終存在巨大的偏離風險,因此應(yīng)當有選擇地、巧妙地使用這些cell。在另一方面,鎖存器在任何操作條件下始終存在半個周期的延遲。
在最后一節(jié)中,我們將考慮各種情況,找出在掃描鏈的發(fā)出和捕獲觸發(fā)器之間出現(xiàn)巨大的時鐘偏移時修復(fù)保持故障的最適合的解決方案。
不同情形
情形1:正-正邊沿觸發(fā)觸發(fā)器之間
我們在以上示例中包括了這一情況,可以使用負電平鎖存器。
情形2:負-負邊沿觸發(fā)觸發(fā)器之間
通過上述相同的模擬,可以使用正電平鎖存器。
情形3:負-正邊沿觸發(fā)觸發(fā)器之間
我們已經(jīng)了解到保持在此處非常輕松。此處不需要鎖定元件。
情形4:正-負邊沿觸發(fā)觸發(fā)器之間
這是一個非常有趣的情形。從時序的角度來看,這種情況不會造成問題,但是在掃描移位中這是一個非法連接。由于在ATPG中,時鐘被視為返回至零波形(在移位完成后,時鐘將變?yōu)榛顒拥碗娖剑?,如果我們允許這種交叉,我們將發(fā)現(xiàn)在掃描移位后,所有此類的正-負對在時鐘脈沖后將具有相同的值。因為所有觸發(fā)器都不是可以獨立控制的,因此這將導(dǎo)致測試覆蓋范圍減少。在拼接時應(yīng)該避免出現(xiàn)這種情況,但是有時候無法避免,因為存在壓縮邏輯或硬宏。
我們可以在正和負觸發(fā)器之間插入一個正電平鎖定鎖存器,這樣將解決ATPG問題,但是同時也會帶來時序問題,因為保持檢查在從觸發(fā)器到鎖定鎖存器以及從鎖存器到負邊沿觸發(fā)器之間將再次變?yōu)榱阒芷跈z查。
另一個解決方案將插入一個啞觸發(fā)器,可以在這些觸發(fā)器之間的正邊沿或負邊沿上工作。應(yīng)該注意的是,在移位后啞觸發(fā)器將仍然具有與第一個觸發(fā)器或第二個觸發(fā)器相同的值,這取決于它是在正邊沿觸發(fā)還是在負邊沿觸發(fā),但這不會導(dǎo)致任何問題出現(xiàn),因此它不是一種功能性觸發(fā)器,我們不會以任何方式在任何位置使用它來捕獲數(shù)據(jù)。如果我們決定插入正邊沿觸發(fā)器,發(fā)出 觸發(fā)器的時鐘延遲和該dummy 觸發(fā)器將相同,因為它將是零周期保持檢查,并且啞觸發(fā)器到下一個觸發(fā)器將是半周期保持檢查,同樣,如果我們插入啞負邊沿觸發(fā)器,捕獲觸發(fā)器和啞負邊沿觸發(fā)器的延遲是相同的。
這些就是設(shè)計中可能存在的觸發(fā)器之間的所有四種情況,但有時候這些情況并不十分明顯。例如,在掃描具有硬宏且是預(yù)拼接的設(shè)計時需要特別注意。許多情況下我們并不具備針對硬宏的netlist/spef/timing約束,因此我們建議在這些硬宏之前插入鎖定鎖存器,以防這些硬宏的所有者將其丟失。另外一個此類示例是burn-in模式,設(shè)計中的掃描鏈將被連接在一起,以便同時切換所有觸發(fā)器。因此同樣存在這種可能性,也就是說鏈中的最后一個元件和下一個鏈的第一個元件具有時序關(guān)鍵邏輯或無效的正-負交叉。對于此種情形,理想的情況下應(yīng)該注意RTL本身,因為設(shè)計者在將這些掃描鏈連接在一起能夠更好地了解掃描元件的順序。如果未將其考慮在內(nèi),最佳的做法是在每個鏈的結(jié)尾處插入相應(yīng)的鎖定鎖存器。
通過采用上述技巧和指導(dǎo),設(shè)計者可以在其芯片上實現(xiàn)強大的掃描結(jié)構(gòu)。在出現(xiàn)建立故障的情況下,設(shè)計可以在更低的頻率上運行,但是在出現(xiàn)任何重大保持故障時,邏輯的既定功能是無法預(yù)測的。掃描位移中的保持故障非常嚴重。它會在測試期間極大地縮小測試覆蓋范圍。因此,我們需要一個強大的掃描結(jié)構(gòu),解決我們前面所討論的潛在的掃描移位故障問題。相應(yīng)的鎖定類型元件可以完美地解決此類問題,因為它可以在任何操作條件下確保半個周期的延遲。