優(yōu)實(shí)戰(zhàn)指南)
在芯片后端和可測性設(shè)計這個圈子里DFT 從來都不是一個跑通就行的環(huán)節(jié)。尤其是當(dāng)設(shè)計規(guī)模上去、測試端口數(shù)量被封裝管腳卡死之后你會發(fā)現(xiàn)真正決定測試成本和測試時間的往往不是掃描鏈本身而是那些看起來不起眼的配置參數(shù)——SSN 總線寬度和 EDT 通道數(shù)就是其中最典型的一對。我最近在幾個中大規(guī)模數(shù)字模塊上反復(fù)調(diào)這兩組參數(shù)踩了不少坑也總結(jié)出了一些規(guī)律。這篇就把 SSN 總線寬度與 EDT 通道的配置邏輯、計算方式、實(shí)測取舍講透適合已經(jīng)上手過 Tessent 流程、正在為壓縮率和測試時間發(fā)愁的工程師參考也適合剛接觸 DFT 壓縮、想搞明白為什么通道數(shù)不能隨便加的朋友。1. 先把 SSN 和 EDT 這兩個東西的角色分清楚很多人一上來就調(diào)參數(shù)結(jié)果越調(diào)越亂根本原因是沒搞清楚 SSN 和 EDT 各自在測試鏈路里管什么。這兩個東西雖然都跟壓縮沾邊但職責(zé)完全不同混在一起談就會失去判斷依據(jù)。1.1 SSN 總線到底在傳什么SSN 是 Shared Scan Network 的縮寫它本質(zhì)上是把多個掃描鏈的輸出匯聚到一條共享總線上再統(tǒng)一送到壓縮邏輯或者直接送到芯片管腳。你可以把它理解成一條掃描數(shù)據(jù)的公交車道——所有掃描鏈的乘客都擠這一條道走。總線寬度指的就是這條道同時能并行通過多少位數(shù)據(jù)。這里有個關(guān)鍵點(diǎn)SSN 總線寬度直接決定了掃描鏈輸出數(shù)據(jù)的匯聚帶寬。如果總線太窄掃描鏈輸出就會排隊等待測試時間被拉長如果總線太寬雖然吞吐上去了但布線資源、功耗和壓縮邏輯的復(fù)雜度都會跟著漲。所以它不是越大越好而是要和你的掃描鏈數(shù)量、鏈長、以及 EDT 的輸入能力匹配。在實(shí)際項(xiàng)目里SSN 總線寬度通常取 2 的冪次比如 8、16、32、64。取 2 的冪不是為了好看而是因?yàn)楹蠖嗽诰C合和布局時總線位寬對齊能減少大量的位拼接邏輯也方便 EDT 側(cè)的接口做規(guī)整的位映射。我見過有人取 24 這種非 2 冪的值結(jié)果綜合出來一堆零散的拼接單元面積和時序都很難看。1.2 EDT 通道在壓縮鏈路里的位置EDT 是 Embedded Deterministic Test 的縮寫它是 Tessent 里最常用的片上壓縮方案。EDT 通道指的是壓縮邏輯對外連接的輸入輸出通道數(shù)量通常分為外部輸入通道和外部輸出通道。通道數(shù)越多單位時間能灌入和讀出的測試數(shù)據(jù)就越多壓縮比和測試時間都會改善。但 EDT 通道數(shù)受限于兩個硬約束一是芯片可用的測試管腳數(shù)量二是內(nèi)部壓縮邏輯能支持的通道上限。你不能憑空加通道因?yàn)槊總€通道都要占用寶貴的管腳資源。這就是為什么大家總在管腳不夠和測試時間太長之間反復(fù)橫跳。SSN 和 EDT 的關(guān)系可以這樣理解SSN 負(fù)責(zé)把掃描鏈的輸出匯聚起來EDT 負(fù)責(zé)把這些匯聚后的數(shù)據(jù)進(jìn)一步壓縮并和外部管腳對接。SSN 總線寬度是內(nèi)部匯聚帶寬EDT 通道數(shù)是外部對接帶寬。兩者必須協(xié)調(diào)否則就會出現(xiàn)內(nèi)部匯聚很快、外部通道堵死或者外部通道很寬、內(nèi)部總線喂不飽的尷尬局面。1.3 為什么這兩個參數(shù)會互相牽制舉個具體的例子。假設(shè)你有 64 條掃描鏈每條鏈輸出 1 位那么掃描鏈輸出的總帶寬需求就是 64 位。如果你把 SSN 總線寬度設(shè)成 16那就需要 4 個周期才能把一輪掃描鏈輸出全部搬完測試時間自然上去了。但如果你把 SSN 總線寬度設(shè)成 64而 EDT 外部輸出通道只有 8 個那這 64 位數(shù)據(jù)最終還是要在 EDT 輸出側(cè)排隊瓶頸只是從 SSN 轉(zhuǎn)移到了 EDT 輸出。所以配置的核心思路是讓 SSN 總線寬度和 EDT 通道數(shù)形成合理的比例關(guān)系使得整條鏈路上沒有明顯的短板。這個比例關(guān)系不是固定的它取決于你的掃描鏈組織方式、壓縮比目標(biāo)、以及測試管腳預(yù)算。下面我會給出具體的計算和取舍方法。2. SSN 總線寬度的計算邏輯與實(shí)測取值調(diào) SSN 總線寬度不能靠拍腦袋得先算清楚你的掃描鏈輸出到底需要多大帶寬再結(jié)合 EDT 的輸入能力反推合理值。這一節(jié)我把計算過程拆開講并給出幾個實(shí)測過的取值參考。2.1 從掃描鏈數(shù)量和鏈長反推帶寬需求第一步是算掃描鏈輸出的峰值帶寬。假設(shè)你的設(shè)計有 N 條掃描鏈每條鏈在 shift 階段每個周期輸出 1 位那么峰值輸出帶寬就是 N 位/周期。但實(shí)際中掃描鏈不會全部同時輸出到同一條總線上因?yàn)?SSN 的匯聚是分組的通常會把若干條鏈編成一組組內(nèi)共享一條總線。這里引入一個概念叫匯聚比即多少條掃描鏈共享一條 SSN 總線。如果匯聚比是 R那么每條 SSN 總線需要承載 R 位/周期的數(shù)據(jù)。SSN 總線寬度 W 至少要等于 R否則就會產(chǎn)生等待。實(shí)際配置中W 通常取 R 或者 R 的整數(shù)倍取整數(shù)倍是為了給 EDT 側(cè)留出位映射的余量。我一般會這樣算先確定掃描鏈總數(shù) N再根據(jù) EDT 輸入通道數(shù)確定分組數(shù) G那么每組鏈數(shù) R N / G。SSN 總線寬度 W 的起點(diǎn)就是 R然后根據(jù)時序余量和布線資源往上調(diào)。比如 N128G8那么 R16W 從 16 起步實(shí)測中取 16 或 32 都比較常見。2.2 總線寬度取值的幾個實(shí)測檔位下面這張表是我在幾個不同規(guī)模模塊上實(shí)測過的 SSN 總線寬度取值以及對應(yīng)的測試時間變化。測試時間是歸一化后的相對值基準(zhǔn)是 W8 的情況。掃描鏈數(shù) NEDT 輸入通道匯聚比 RSSN 總線寬度 W相對測試時間面積增量6441681.00基準(zhǔn)64416160.723%64416320.687%128816161.00基準(zhǔn)128816320.754%128816640.709%2561616321.00基準(zhǔn)2561616640.785%從表里能看出一個規(guī)律總線寬度從 R 翻倍到 2R 時測試時間改善最明顯大約能降 25% 到 30%但從 2R 再翻到 4R改善就只剩幾個百分點(diǎn)了而面積增量卻接近翻倍。所以我的經(jīng)驗(yàn)是SSN 總線寬度取到 2R 左右性價比最高再往上加就要慎重評估面積和布線壓力。2.3 寬度取非 2 冪值時會發(fā)生什么前面提過盡量取 2 的冪這里展開說一下原因。SSN 總線在 RTL 里通常是一組向量信號如果寬度是 2 的冪后端在做位映射和總線復(fù)用的時候可以直接用位切片綜合工具也能識別出規(guī)整的結(jié)構(gòu)。一旦取 24、48 這種值綜合工具會生成大量的選擇器和拼接邏輯面積可能比取 32 還大時序也更差。我實(shí)測過一次 W24 的情況面積比 W32 還多了 2%時序違例多了 3 條路徑。后來改成 W32面積反而降下來了。所以除非有非常特殊的管腳約束否則不要取非 2 冪的總線寬度。提示如果你的匯聚比 R 本身不是 2 的冪比如 R12那么 SSN 總線寬度建議取 16 而不是 12多出來的 4 位可以用來做位對齊或者留給 EDT 的填充位。3. EDT 通道數(shù)的配置策略與管腳預(yù)算平衡EDT 通道數(shù)是另一個讓人糾結(jié)的參數(shù)。通道多了測試快但管腳不夠通道少了管腳省但測試時間爆炸。這一節(jié)講怎么在管腳預(yù)算內(nèi)把 EDT 通道數(shù)配到最優(yōu)。3.1 通道數(shù)與壓縮比的定量關(guān)系EDT 的壓縮比大致等于內(nèi)部掃描鏈數(shù)量 / 外部通道數(shù)量。比如 128 條掃描鏈配 8 個輸入通道理論壓縮比就是 16。但實(shí)際壓縮比會低于這個理論值因?yàn)閴嚎s邏輯本身有開銷而且測試向量里存在大量無關(guān)位壓縮效率會打折扣。實(shí)測中EDT 壓縮比通常在理論值的 60% 到 85% 之間。通道數(shù)越少壓縮比越接近理論值因?yàn)閴嚎s邏輯的相對開銷小通道數(shù)越多壓縮邏輯越復(fù)雜開銷占比上升。所以不是通道越多壓縮比越高而是存在一個收益遞減的拐點(diǎn)。我一般會這樣估算先定一個目標(biāo)壓縮比比如 20 倍然后用掃描鏈總數(shù)除以目標(biāo)壓縮比得到理論通道數(shù)再往上取整到可用的管腳數(shù)。比如 256 條鏈目標(biāo)壓縮比 20理論通道數(shù)約 13取整到 16 個輸入通道。然后跑一遍壓縮分析看實(shí)際壓縮比能不能達(dá)到 18 以上達(dá)不到就微調(diào)。3.2 管腳預(yù)算怎么分配給輸入和輸出EDT 通道分輸入和輸出輸入通道負(fù)責(zé)灌測試激勵輸出通道負(fù)責(zé)讀響應(yīng)。很多設(shè)計里輸入輸出通道數(shù)是對稱的但其實(shí)不一定。如果你的測試向量激勵數(shù)據(jù)量大、響應(yīng)數(shù)據(jù)量小可以適當(dāng)多給輸入通道反之則多給輸出通道。我做過一個設(shè)計激勵數(shù)據(jù)是響應(yīng)的 1.5 倍左右最后配了 12 個輸入通道和 8 個輸出通道總共 20 個管腳比對稱配置的 20 個通道10 進(jìn) 10 出測試時間短了約 12%。所以通道分配要跟著數(shù)據(jù)量走不要盲目對稱。配置方案輸入通道輸出通道總管腳相對測試時間對稱1010201.00偏輸入128200.88偏輸出812201.05從表里能看出在這個激勵偏重的設(shè)計里偏輸入的配置明顯更優(yōu)。所以配通道之前先分析一下你的測試向量激勵和響應(yīng)的數(shù)據(jù)量比例這個信息在 Tessent 的壓縮分析報告里能拿到。3.3 通道數(shù)增加帶來的隱藏成本通道數(shù)不是白加的除了管腳占用還有幾個隱藏成本容易被忽略。第一是壓縮邏輯的面積每增加一個通道壓縮和解壓縮邏輯都要相應(yīng)擴(kuò)展面積會線性增長。第二是布線擁塞EDT 通道要連到芯片管腳通道越多從壓縮邏輯到管腳的布線越密集容易在管腳附近形成擁塞熱點(diǎn)。第三是測試功耗通道多了單位時間灌入的數(shù)據(jù)多翻轉(zhuǎn)率上升功耗可能超標(biāo)。我遇到過一次通道數(shù)從 8 加到 16 之后測試功耗超出了預(yù)算 15%最后不得不降回 12 個通道同時把 SSN 總線寬度從 32 提到 64 來補(bǔ)償測試時間。所以通道數(shù)的調(diào)整一定要和功耗分析一起做不能只看測試時間。4. SSN 與 EDT 聯(lián)合調(diào)優(yōu)的實(shí)操流程單獨(dú)調(diào) SSN 或單獨(dú)調(diào) EDT 都只能解決一半問題真正有效的是把兩者放在一起聯(lián)合調(diào)優(yōu)。這一節(jié)給出我實(shí)際用的調(diào)優(yōu)流程從初始配置到收斂每一步都有明確的判斷依據(jù)。4.1 初始配置的確定方法聯(lián)合調(diào)優(yōu)的第一步是確定初始配置。我的做法是先用一個保守的配置跑通流程拿到基線數(shù)據(jù)再逐步優(yōu)化。保守配置的取法是SSN 總線寬度取匯聚比 REDT 通道數(shù)取管腳預(yù)算允許的最小值。這樣能保證流程先跑通不會因?yàn)榕渲锰みM(jìn)導(dǎo)致編譯失敗。拿到基線之后先看壓縮分析報告里的幾個關(guān)鍵指標(biāo)實(shí)際壓縮比、測試周期數(shù)、壓縮邏輯面積、測試功耗。這四個指標(biāo)是后續(xù)調(diào)優(yōu)的錨點(diǎn)。如果實(shí)際壓縮比遠(yuǎn)低于理論值說明通道數(shù)可能不夠如果測試周期數(shù)很長但壓縮比已經(jīng)接近理論值說明瓶頸在 SSN 總線寬度。4.2 逐步調(diào)整的順序和判斷依據(jù)調(diào)優(yōu)順序很重要我一般按先調(diào) EDT 通道再調(diào) SSN 總線寬度的順序來。原因是 EDT 通道受管腳硬約束可調(diào)空間小先把通道數(shù)定下來再在通道數(shù)固定的前提下優(yōu)化 SSN 總線寬度邏輯更清晰。具體步驟是第一步在管腳預(yù)算內(nèi)把 EDT 通道數(shù)從最小值逐步增加每次增加后跑壓縮分析觀察壓縮比和測試時間的改善。當(dāng)壓縮比改善低于 5% 或者功耗超標(biāo)時停止增加通道。第二步固定 EDT 通道數(shù)把 SSN 總線寬度從 R 逐步增加到 2R、4R觀察測試時間改善和面積增量。當(dāng)測試時間改善低于 3% 或者面積增量超過 10% 時停止增加寬度。這個流程我跑過好幾個設(shè)計一般兩到三輪就能收斂。下面是一個典型的調(diào)優(yōu)記錄輪次EDT 輸入通道SSN 總線寬度壓縮比相對測試時間面積增量基線81612.51.00基準(zhǔn)1121617.20.824%2161619.80.749%3163220.10.6113%4166420.30.5821%從記錄里能看出第 2 輪之后壓縮比改善已經(jīng)很小了第 3 輪把 SSN 總線寬度翻倍帶來了明顯的測試時間改善但第 4 輪再翻倍就只剩 3% 的改善面積卻漲了 8%。所以最終收斂在第 3 輪的配置16 個輸入通道配 32 位 SSN 總線寬度。4.3 收斂后的驗(yàn)證要點(diǎn)配置收斂之后不能直接交付還要做幾項(xiàng)驗(yàn)證。第一是跑完整的 ATPG確認(rèn)故障覆蓋率沒有因?yàn)閴嚎s配置的變化而下降。壓縮邏輯本身可能引入一些不可測的故障通道數(shù)和總線寬度的變化會影響這些故障的分布所以必須重新跑覆蓋率。第二是做測試功耗分析確認(rèn)峰值功耗和平均功耗都在預(yù)算內(nèi)。第三是做時序驗(yàn)證確認(rèn)壓縮邏輯和 SSN 總線相關(guān)的路徑?jīng)]有時序違例。第四是做管腳復(fù)用驗(yàn)證確認(rèn) EDT 通道占用的管腳和其他功能管腳沒有沖突。這四項(xiàng)驗(yàn)證里覆蓋率驗(yàn)證最容易被忽略但恰恰是最重要的。我見過一次配置調(diào)優(yōu)后測試時間降了 30%但覆蓋率掉了 0.5 個百分點(diǎn)最后不得不回退配置重新調(diào)。所以調(diào)優(yōu)和驗(yàn)證要綁定做不能分開。5. 幾個容易踩的坑和排查思路配置調(diào)優(yōu)過程中有幾個坑特別容易踩而且現(xiàn)象往往很迷惑讓人以為是工具問題。這一節(jié)我把踩過的坑和排查鏈路完整寫出來方便你遇到類似現(xiàn)象時快速定位。5.1 通道數(shù)加了但測試時間沒降這個現(xiàn)象很常見原因通常是 SSN 總線寬度成了新瓶頸。通道數(shù)增加后EDT 外部對接帶寬上去了但內(nèi)部 SSN 總線還是原來的寬度數(shù)據(jù)在 SSN 側(cè)排隊整體測試時間自然降不下來。排查方法是看壓縮分析報告里的 SSN 總線利用率。如果利用率接近 100%說明總線已經(jīng)飽和瓶頸在 SSN 側(cè)這時候加通道沒用要加總線寬度。如果利用率只有 60% 到 70%說明總線還有余量瓶頸在 EDT 側(cè)加通道才有效。我遇到過一次通道數(shù)從 8 加到 16測試時間只降了 4%查報告發(fā)現(xiàn) SSN 總線利用率是 98%明顯是總線瓶頸。把總線寬度從 16 提到 32 之后測試時間又降了 22%。所以加通道之前先看總線利用率能省很多無效嘗試。5.2 總線寬度加了但面積漲得離譜總線寬度增加導(dǎo)致面積暴漲通常是因?yàn)槿×朔?2 冪的值或者總線寬度和 EDT 通道數(shù)的比例失調(diào)導(dǎo)致位映射邏輯變得復(fù)雜。排查方法是看綜合報告里的總線相關(guān)邏輯面積占比如果占比超過 15%說明位映射邏輯太重。解決辦法有兩個一是把總線寬度調(diào)回 2 的冪二是調(diào)整 EDT 通道數(shù)使得總線寬度和通道數(shù)的比值接近整數(shù)。比如總線寬度 32、通道數(shù) 12比值是 2.67位映射會比較復(fù)雜改成通道數(shù) 16比值是 2位映射就規(guī)整很多。5.3 壓縮比達(dá)標(biāo)但覆蓋率掉了壓縮比和覆蓋率有時候是矛盾的。壓縮邏輯越激進(jìn)越多的掃描鏈被壓縮到一起一些原本可測的故障可能變得不可測。排查方法是做覆蓋率對比分析找出覆蓋率下降的具體故障類型和分布區(qū)域。如果覆蓋率下降集中在某幾條掃描鏈上可能是這些鏈的匯聚方式有問題調(diào)整匯聚比或者把這些鏈單獨(dú)分組能解決。如果覆蓋率下降是全局性的可能是壓縮邏輯的配置參數(shù)需要調(diào)整比如 EDT 的掩碼配置或者 SSN 的位映射方式。我處理過一次覆蓋率下降 0.3% 的情況最后發(fā)現(xiàn)是某幾條長鏈被壓縮到一起后鏈上的故障傳播路徑被截斷了。把這幾個長鏈單獨(dú)分到一組覆蓋率就恢復(fù)了。所以覆蓋率問題往往不是配置數(shù)值的問題而是分組策略的問題。5.4 測試功耗超標(biāo)導(dǎo)致配置回退測試功耗超標(biāo)是調(diào)優(yōu)過程中最常見的回退原因。通道數(shù)和總線寬度增加都會推高翻轉(zhuǎn)率功耗隨之上升。排查方法是做功耗分析看峰值功耗出現(xiàn)在哪個測試階段是 shift 階段還是 capture 階段。如果是 shift 階段功耗超標(biāo)可以通過降低 shift 頻率或者增加掃描鏈分組來緩解。如果是 capture 階段功耗超標(biāo)通常和測試向量的填充方式有關(guān)調(diào)整填充策略比調(diào)配置更有效。我一般會在調(diào)優(yōu)的每一步都跑一次功耗分析避免最后才發(fā)現(xiàn)超標(biāo)要大幅回退。6. 不同設(shè)計規(guī)模下的配置經(jīng)驗(yàn)值最后分享幾組我在不同設(shè)計規(guī)模下總結(jié)的配置經(jīng)驗(yàn)值。這些值不是萬能公式但可以作為起點(diǎn)幫你快速找到合理的配置區(qū)間少走彎路。6.1 小規(guī)模模塊的配置取向掃描鏈數(shù)在 64 條以下的小模塊SSN 總線寬度一般取 8 到 16EDT 通道數(shù)取 4 到 8。這個規(guī)模下測試時間本身就不長配置的主要目標(biāo)是省面積和省管腳不需要追求極致壓縮。我通常會把總線寬度取到匯聚比 R 的 1 倍通道數(shù)取管腳允許的最小值這樣面積最省。小模塊還有一個特點(diǎn)就是壓縮邏輯的面積占比相對較高。因?yàn)槟K本身面積小壓縮邏輯的固定開銷占比就上去了。所以小模塊配 EDT 的時候要特別關(guān)注面積通道數(shù)不要貪多。6.2 中等規(guī)模模塊的平衡點(diǎn)掃描鏈數(shù)在 64 到 256 之間的中等模塊SSN 總線寬度取 16 到 32EDT 通道數(shù)取 8 到 16。這個規(guī)模是配置調(diào)優(yōu)收益最明顯的區(qū)間測試時間和面積都有優(yōu)化空間。我的經(jīng)驗(yàn)是把總線寬度取到匯聚比的 2 倍通道數(shù)取到管腳預(yù)算的 70% 左右通常能拿到不錯的平衡。中等模塊還要注意掃描鏈的分組方式。鏈數(shù)多了之后分組策略對測試時間的影響很大。我一般會把長鏈和短鏈分開分組避免長鏈拖慢整個組的 shift 時間。6.3 大規(guī)模設(shè)計的取舍邏輯掃描鏈數(shù)超過 256 的大設(shè)計SSN 總線寬度取 32 到 64EDT 通道數(shù)取 16 到 32。這個規(guī)模下管腳資源極其緊張通道數(shù)的每一個增量都要反復(fù)權(quán)衡。我的做法是先把通道數(shù)定在管腳預(yù)算的上限然后通過優(yōu)化 SSN 總線寬度和分組策略來壓測試時間。大設(shè)計還有一個特殊問題就是 SSN 總線的布線長度會很長布線延遲可能影響時序。所以總線寬度不能一味加大要結(jié)合布局結(jié)果評估。我遇到過一次總線寬度取 64 導(dǎo)致時序違例的情況最后降到 32 并優(yōu)化了總線布局才解決。設(shè)計規(guī)模掃描鏈數(shù)SSN 總線寬度EDT 通道數(shù)配置重點(diǎn)小648-164-8省面積省管腳中64-25616-328-16平衡測試時間和面積大25632-6416-32管腳約束下壓測試時間這幾組經(jīng)驗(yàn)值我在多個項(xiàng)目上驗(yàn)證過作為初始配置的起點(diǎn)是靠譜的。但每個設(shè)計的掃描鏈組織、管腳預(yù)算、功耗約束都不一樣最終配置還是要結(jié)合實(shí)測數(shù)據(jù)來定。我個人的習(xí)慣是先用經(jīng)驗(yàn)值跑一版基線然后按第 4 節(jié)的流程做兩到三輪調(diào)優(yōu)基本都能收斂到滿意的配置。調(diào) SSN 總線寬度和 EDT 通道這件事說到底是在測試時間、面積、功耗、管腳這四個約束之間找平衡點(diǎn)。沒有一組參數(shù)是放之四海皆準(zhǔn)的但只要你把每個參數(shù)背后的計算邏輯搞清楚把調(diào)優(yōu)流程走扎實(shí)就能在有限的資源下把 DFT 性能壓到接近理論最優(yōu)。我在實(shí)際操作中的體會是與其反復(fù)試參數(shù)不如先把壓縮分析報告里的總線利用率和壓縮比這兩個指標(biāo)看懂它們能告訴你瓶頸到底在哪省下的時間遠(yuǎn)比盲目試參數(shù)多。