如今,,所有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)解決上述問(wèn)題。
在本文中,,我們將首先快速回顧鎖存器與觸發(fā)器的時(shí)序基本概念,。在下一節(jié)中,我們將介紹掃描鏈以及與其相關(guān)的時(shí)序閉合問(wèn)題,。然后,,我們將解釋如何在掃描鏈中使用鎖存器和觸發(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)邊沿上沒(méi)有被觸發(fā)器2捕獲,。
圖2
當(dāng)?shù)诙€(gè)觸發(fā)器被負(fù)邊沿觸發(fā)后,建立檢查將是1-2(見(jiàn)圖2),,而保持檢查將發(fā)生在上一個(gè)負(fù)邊沿(見(jiàn)圖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í)序閉合問(wèn)題,。因?yàn)閽呙?a class="innerlink" href="http://forexkbc.com/tags/位移" title="位移" target="_blank">位移在低頻進(jìn)行,,并且觸發(fā)器對(duì),之間需要的邏輯最小,,如果有的話,,因此建立閉合將不是問(wèn)題。但是,,因?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í)鐘域之間交叉的情況是不可避免的,。
解決這種問(wèn)題的一種更為有效的方式是提前采取措施,,并在構(gòu)建掃描鏈的邏輯合成階段處理這些問(wèn)題。來(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,該一裕量可能并不充足,。
解決上述問(wèn)題的解決方案是在觸發(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開(kāi)始,它仍然是零周期檢查,,但是因?yàn)闆](méi)有偏移,,因此非常簡(jiǎn)單易行。默認(rèn)建立檢查從1-2開(kāi)始,。
2. 從鎖定鎖存器到觸發(fā)器4
保持檢查從2-1開(kāi)始,。這是插入鎖定鎖存器的主要優(yōu)勢(shì)和動(dòng)機(jī)。保持是向后移位半周期,,現(xiàn)在即使我們的時(shí)鐘偏移高達(dá)半個(gè)移位時(shí)鐘周期,,我們?nèi)跃哂凶銐虻脑A俊_@可以確保在這種情況下不會(huì)出現(xiàn)任何保持偏差,。
建立檢查從2-3開(kāi)始,。在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í)鐘樹(shù)結(jié)構(gòu)中發(fā)出觸發(fā)器和鎖定鎖存器都由相同的時(shí)鐘緩沖器驅(qū)動(dòng),。
以上示例說(shuō)明,鎖存器可以在掃描移位路徑中有效地混合保持,。也許有人會(huì)提出疑問(wèn),,我們是否也可以通過(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ì)造成問(wèn)題,但是在掃描移位中這是一個(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問(wèn)題,,但是同時(shí)也會(huì)帶來(lái)時(shí)序問(wèn)題,因?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)致任何問(wèn)題出現(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),解決我們前面所討論的潛在的掃描移位故障問(wèn)題,。相應(yīng)的鎖定類型元件可以完美地解決此類問(wèn)題,,因?yàn)樗梢栽谌魏尾僮鳁l件下確保半個(gè)周期的延遲。