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