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