定義與全流程實(shí)操解析)
如何用Calibre PERC抽出點(diǎn)到點(diǎn)P2P電阻做版圖驗(yàn)證的兄弟應(yīng)該都有這個(gè)經(jīng)歷功能仿真過了DRC也清了結(jié)果ESD評審會上突然被問“VDD到VSS這條鉗位通路的等效電阻到底是多少”你說去layout里量一下走線長度再手算方塊電阻對方緊接著補(bǔ)一句“多徑并行走線、過孔陣列、阱電阻都得算進(jìn)去明天給我個(gè)準(zhǔn)數(shù)”。老實(shí)講靠人工在這種復(fù)雜互連網(wǎng)絡(luò)里算等效電阻算到后半夜也很難有把握。我第一次被這么問的時(shí)候下意識想找個(gè)能直接“點(diǎn)兩個(gè)點(diǎn)給出阻值”的工具后來真正解決問題的是拿Calibre PERC做點(diǎn)到點(diǎn)電阻提取也就是業(yè)內(nèi)常說的P2P電阻。這個(gè)流程能把一條從A點(diǎn)到B點(diǎn)的完整寄生電阻網(wǎng)絡(luò)用工具自動抽出來并求出等效阻值中間經(jīng)過幾層金屬、多少個(gè)過孔、有沒有多徑并聯(lián)全都會被圖論求解過程覆蓋掉。這篇文章把我自己跑通的經(jīng)驗(yàn)整理出來包括規(guī)則文件思路、探針點(diǎn)定義方式、結(jié)果怎么判讀、以及常見的坑給同樣被P2P電阻折磨的驗(yàn)證工程師和模擬后端工程師做個(gè)參考。1. 先搞清楚P2P電阻到底是什么1.1 從“互連寄生”到“等效電阻網(wǎng)絡(luò)”版圖上任意兩點(diǎn)之間物理上不是一根理想導(dǎo)線。信號從A點(diǎn)走到B點(diǎn)會經(jīng)過金屬走線、過孔、通孔陣列、阱區(qū)、有源區(qū)甚至器件內(nèi)部的溝道。每經(jīng)過一種材料都會貢獻(xiàn)電阻。多層金屬之間的過孔阻值雖然單個(gè)很小但如果走線很長、過孔數(shù)量很多或者路徑要穿過高阻的N阱/P阱累加起來就是一個(gè)不可忽略的阻值。P2P電阻就是把A點(diǎn)和B點(diǎn)之間的所有寄生電阻當(dāng)作一個(gè)網(wǎng)絡(luò)通過求解整個(gè)網(wǎng)絡(luò)得到一個(gè)從外部看進(jìn)去的等效電阻。它和你在原理圖上查一個(gè)電阻器件的阻值是兩回事。原理圖上的電阻是一個(gè)集中參數(shù)元件而P2P電阻是整條互連路徑的分布式寄生電阻總和并且要考慮所有并聯(lián)分流通路。想理解這個(gè)過程打個(gè)比方把版圖互連想象成城市供水管網(wǎng)。A點(diǎn)是自來水廠出水口B點(diǎn)是某個(gè)小區(qū)入口。水管沿途有粗細(xì)變化、接頭、分叉水會走多條路到達(dá)同一個(gè)小區(qū)。P2P電阻就是算“水從A口到B口整體受到的阻力有多大”而不是量某一根水管的粗細(xì)。1.2 誰在什么時(shí)候需要這個(gè)數(shù)P2P電阻提取最常見的用武之地是ESD驗(yàn)證。ESD防護(hù)器件要有效泄放電流從PAD到電源鉗位管之間的寄生電阻必須夠小。如果電阻過大ESD電流在路徑上產(chǎn)生的壓降就可能觸發(fā)內(nèi)部電路失效。這時(shí)候評審會問的往往就是“PAD到VDD鉗位管的P2P電阻是多少”。Latch-up分析也高度依賴P2P電阻。芯片內(nèi)部寄生的PNPN結(jié)構(gòu)一旦被觸發(fā)能不能維持閂鎖關(guān)鍵看襯底和阱的寄生電阻。VDD到VSS之間的等效電阻直接決定了維持電流的大小。設(shè)計(jì)規(guī)則會給出一個(gè)閾值超過就認(rèn)為存在latch-up風(fēng)險(xiǎn)。其他需要P2P電阻的場景還包括IO到內(nèi)部電路的連接電阻評估判斷信號通路壓降。電源網(wǎng)絡(luò)IR drop的初步篩選雖然不是完整的IR分析但能快速定位異常高阻路徑。襯底接觸到真正的地之間的電阻影響襯底噪聲。焊盤bonding pad到內(nèi)部ESD二極管之間通路電阻這個(gè)在車規(guī)芯片里經(jīng)常被單獨(dú)檢查。所以PERC的P2P電阻提取本質(zhì)上解決的是“給出版圖后快速、自動、可重復(fù)地評估任意兩點(diǎn)之間寄生電阻水平”的問題。對物理驗(yàn)證工程師來說它是把電學(xué)規(guī)則檢查從DRC的幾何檢查擴(kuò)展到真正的電學(xué)參數(shù)檢查的關(guān)鍵一步。2. 動手之前先把邊界和輸入準(zhǔn)備想清楚2.1 需要的輸入文件做P2P電阻提取不是打開工具點(diǎn)兩下就完事它需要的底層輸入和普通DRC/LVS基本一致只是規(guī)則文件內(nèi)容完全不同。我通常準(zhǔn)備這些版圖數(shù)據(jù)文件GDS或OASIS格式。必須保證是待驗(yàn)證的最新版本否則抽出來的結(jié)果沒有意義。Layer map文件把GDS層號映射到Calibre內(nèi)部識別的層名。連接性定義也就是哪些層通過什么via連接。這通常已經(jīng)在Calibre的標(biāo)準(zhǔn)rule里或者需要根據(jù)工藝文件改寫。電阻模型參數(shù)方塊電阻值、接觸孔/過孔單孔電阻、溫度系數(shù)等。這些一般在工藝廠提供的PERC規(guī)則包或者PEX rule里能翻到。探針點(diǎn)定義。這是P2P電阻提取和普通DRC最不同的地方你必須告訴工具“從哪個(gè)點(diǎn)開始、到哪個(gè)點(diǎn)結(jié)束”。探針點(diǎn)可以這么理解你用萬用表量一顆電阻兩端阻值時(shí)兩個(gè)表筆尖接觸的位置就是探針點(diǎn)。PERC里定義探針點(diǎn)本質(zhì)上也是在版圖上指定“表筆尖”落在哪里。2.2 明確計(jì)算模型別讓結(jié)果白跑很多時(shí)候抽出來的數(shù)不對不是工具不行而是計(jì)算模型沒定義清楚。做之前先問自己四個(gè)問題第一個(gè)問題是只算金屬寄生電阻還是也要算阱/有源區(qū)電阻。ESD路徑檢查通常要把阱電阻考慮進(jìn)去因?yàn)閘atch-up路徑往往就穿過P阱和N阱。但如果你只關(guān)心一條金屬走線從A到B的壓降那就不需要引入阱層電阻反而能加快計(jì)算。第二個(gè)問題是過孔要不要算。過孔電阻在高頻大電流場景下不能忽略尤其是過孔陣列排布不均時(shí)電流擁擠效應(yīng)會帶來額外電阻。默認(rèn)我會把過孔電阻打開除非只是做個(gè)粗略趨勢判斷。第三個(gè)問題是溫度設(shè)定在多少度。金屬電阻率隨溫度變化很明顯。做ESD評估時(shí)通常用25℃還是125℃會直接影響結(jié)果。要注意PERC規(guī)則文件里設(shè)定的溫度必須和仿真corner一致不然評審會上兩邊數(shù)據(jù)對不上場面會很尷尬。第四個(gè)問題是端到端中間經(jīng)過的器件怎么辦。比如路徑上真有上拉電阻或者下拉電阻那是作為集中電阻器件參與計(jì)算還是只算連線寄生如果LVS識別出了這個(gè)器件PERC一般能把它當(dāng)作一個(gè)電阻元素加進(jìn)網(wǎng)絡(luò)如果沒識別出來那抽的結(jié)果就只是連線電阻和你預(yù)期的“通路總電阻”就不是一回事。這個(gè)點(diǎn)后面我在常見問題里還會展開。2.3 PERC的計(jì)算流程大致長什么樣Calibre PERC是建立在Calibre平臺上的可編程電學(xué)規(guī)則檢查組件。它不只是查DRC幾何規(guī)則還允許你用規(guī)則文件描述“電學(xué)行為”例如電流、電壓、電阻關(guān)系。一個(gè)典型的P2P電阻提取流程大致是先做連接性提取把版圖變成一張由節(jié)點(diǎn)node和邊edge構(gòu)成的網(wǎng)絡(luò)圖然后把每段互連根據(jù)長度、寬度、厚度折算成電阻值給每條邊賦予權(quán)重接下來根據(jù)探針點(diǎn)找到A點(diǎn)和B點(diǎn)在網(wǎng)絡(luò)圖中的位置最后用圖論和數(shù)值求解方法計(jì)算兩點(diǎn)之間的等效電阻。這個(gè)過程在PERC內(nèi)部被封裝成了特定的規(guī)則語句你需要做的是把語句寫對。理解這個(gè)大流程很重要因?yàn)楹竺婧芏鄥?shù)設(shè)置、報(bào)錯排查實(shí)際上都是在和這個(gè)流程的某個(gè)環(huán)節(jié)打交道。3. 抽出P2P電阻的兩種主流實(shí)現(xiàn)思路3.1 思路A先用PEX抽寄生網(wǎng)表再腳本計(jì)算等效電阻在沒有深入使用PERC之前我用的是一種“曲線救國”的方法。先用Calibre PEX做寄生參數(shù)提取得到帶R的SPICE網(wǎng)表然后用腳本讀網(wǎng)表選出A點(diǎn)和B點(diǎn)所在子電路根據(jù)網(wǎng)表的電阻網(wǎng)絡(luò)做等效電阻計(jì)算。這種方法原理上很簡單在A點(diǎn)和B點(diǎn)之間把除A、B之外的所有節(jié)點(diǎn)都消去最后剩下的就是等效電阻。用節(jié)點(diǎn)電壓法實(shí)現(xiàn)的話就是在A點(diǎn)注入1A的直流電流源B點(diǎn)接地求解整個(gè)網(wǎng)絡(luò)后看A點(diǎn)電壓這個(gè)電壓數(shù)值就等于A到B的等效電阻。這是線性電阻網(wǎng)絡(luò)的基本定理也是很多仿真工具內(nèi)部干的事情。具體做法是先用PEX抽出帶寄生電阻的網(wǎng)表比如得到一段這樣的子電路.SUBCKT block_A_B R1 n1 n2 5.2 R2 n2 n3 1.8 R3 n1 n3 7.4 R4 n3 n4 0.6 ... .ENDS然后寫個(gè)Python腳本解析網(wǎng)表構(gòu)建節(jié)點(diǎn)電導(dǎo)矩陣選B點(diǎn)為參考地A點(diǎn)注入1A用NumPy解線性方程組即可。import numpy as np import re # 假設(shè)已經(jīng)用parse_netlist函數(shù)把網(wǎng)表解析成電阻列表 # resistors [(n1, n2, value), ...] resistors parse_netlist(block_A_B.sp) nodes collect_nodes(resistors) # 構(gòu)建電導(dǎo)矩陣 G np.zeros((len(nodes), len(nodes))) node_index {node: i for i, node in enumerate(nodes)} for (na, nb, r) in resistors: i node_index[na] j node_index[nb] g 1.0 / r G[i][i] g G[j][j] g G[i][j] - g G[j][i] - g # 邊界條件B點(diǎn)接地A點(diǎn)注入1A A_idx node_index[A] B_idx node_index[B] G[B_idx, :] 0 G[B_idx, B_idx] 1 I np.zeros(len(nodes)) I[A_idx] 1.0 V np.linalg.solve(G, I) resistance V[A_idx] - V[B_idx] print(fP2P resistance {resistance:.4f} ohm)這種方案的優(yōu)點(diǎn)是靈活不依賴特定工具版本甚至可以用在任何能出寄生網(wǎng)表的提取工具上。缺點(diǎn)是流程割裂網(wǎng)表文件和版圖之間的對應(yīng)關(guān)系需要自己維護(hù)如果抽出的網(wǎng)表很大腳本處理起來也會比較吃力。更適合工具鏈比較受限、或者只是偶爾算一次的場景。3.2 思路B在PERC規(guī)則文件里直接完成P2P電阻計(jì)算更推薦的做法是思路B直接在Calibre PERC的規(guī)則文件里完成從探針點(diǎn)定義、寄生電阻提取、網(wǎng)絡(luò)求解到報(bào)告輸出的整個(gè)閉環(huán)。這樣不需要額外的腳本規(guī)則文件本身就是一個(gè)可交付、可Review的檢查項(xiàng)而且能用RVE結(jié)果查看器直接高亮看到路徑。PERC的做法本質(zhì)上是把前面PEX加腳本的兩步合到了一起。你寫規(guī)則文件時(shí)它會做互連提取、電阻賦值、圖論求解然后把兩個(gè)探針點(diǎn)之間的電阻值作為一條檢查結(jié)果輸出。如果設(shè)置了閾值超過閾值就直接報(bào)出來。這個(gè)思路最大的優(yōu)勢是可回歸、可復(fù)用。同一個(gè)規(guī)則文件換一塊版圖重新跑一遍就能得到新的P2P電阻結(jié)果。在多個(gè)項(xiàng)目之間做橫評對比時(shí)特別方便。而且它和DRC/LVS一樣基于Calibre的規(guī)則體系版本管理和CI集成都比較成熟。我下面詳細(xì)介紹的實(shí)操流程就是以思路B為主線展開的。4. 完整實(shí)操用一個(gè)PERC規(guī)則文件抽出A/B兩點(diǎn)間的P2P電阻4.1 在版圖上標(biāo)記探針點(diǎn)做P2P電阻提取的第一步是讓工具知道你要算哪兩個(gè)點(diǎn)。探針點(diǎn)的定義方式有兩種常見做法。第一種是從版圖上直接選圖形。你可以在版圖上用一層特定的marker層畫一個(gè)小方塊比如放在METAL1上。然后在規(guī)則文件里用層運(yùn)算把這層和目標(biāo)的金屬層做AND得到的圖形就代表了探針位置。注意marker層圖形不要畫太大寧可做成0.1μm×0.1μm的小方塊也不要畫成10μm×10μm的大方塊。因?yàn)樘结槇D形一旦覆蓋大范圍工具會把整個(gè)覆蓋區(qū)域內(nèi)的網(wǎng)絡(luò)都當(dāng)作起點(diǎn)結(jié)果可能把多根并聯(lián)走線全部納入計(jì)算等效電阻自然就偏小了。這個(gè)坑我踩過。第二種是通過網(wǎng)絡(luò)名net name定義。如果版圖已經(jīng)LVS clean而且網(wǎng)絡(luò)名是保留的可以直接在規(guī)則里指定“A點(diǎn)就是net VDDB點(diǎn)就是net VSS”。這種做法的前提是命名唯一且穩(wěn)定否則多個(gè)同名的網(wǎng)絡(luò)會互相干擾。實(shí)際項(xiàng)目中我更喜歡混合使用主探針用marker層定義確保版本更換后探針點(diǎn)位置不漂移輔助信息用net name來核對確認(rèn)marker確實(shí)落在了目標(biāo)網(wǎng)絡(luò)上。4.2 規(guī)則文件示例與關(guān)鍵參數(shù)解讀下面給一個(gè)簡化但不失真實(shí)的規(guī)則文件骨架。不同Calibre版本的PERC規(guī)則語法細(xì)節(jié)會有差異我手頭環(huán)境的版本比較新用的是近似語法你寫的時(shí)候一定以自己安裝版本的Reference Manual為準(zhǔn)尤其是關(guān)鍵字的大小寫和關(guān)鍵字名。// perc_p2p_res.rule LAYOUT SYSTEM GDS LAYOUT PATH layout.gds LAYOUT PRIMARY TOP_CELL // 層映射根據(jù)實(shí)際layer map調(diào)整 DRC MAP DATA 100 0 MARK1 DRC MAP DATA 101 0 MARK2 // 定義互連層和過孔關(guān)系 CONNECT METAL1 POLY BY CONT CONNECT METAL2 METAL1 BY VIA12 // 定義探針點(diǎn) PROBE VDD_NODE { GEOMETRY MARK1 AND METAL1 } PROBE VSS_NODE { GEOMETRY MARK2 AND METAL1 } // 電阻模型賦值 RESISTANCE MODEL SHEET RESISTANCE POLY 8.5 SHEET RESISTANCE METAL1 0.078 SHEET RESISTANCE METAL2 0.055 VIA RESISTANCE VIA12 5.0 CONT RESISTANCE CONT 5.0 TEMPERATURE 25.0 END RESISTANCE MODEL // P2P電阻檢查 P2P RESISTANCE CHECK FROM PROBE VDD_NODE TO PROBE VSS_NODE THRESHOLD MAX 10.0 REPORT p2p_vdd_vss.rpt END P2P RESISTANCE CHECK逐個(gè)講一下關(guān)鍵點(diǎn)的含義。PROBE VDD_NODE { GEOMETRY MARK1 AND METAL1 }這句是核心。它告訴PERC把MARK1層和METAL1層相交的區(qū)域作為VDD端的探針。為什么非要做AND因?yàn)閙arker層只是一個(gè)定位標(biāo)記實(shí)際導(dǎo)通的是金屬層AND之后得到的圖形才是電學(xué)意義上的探針點(diǎn)。如果marker畫在了兩個(gè)不同金屬層上AND操作也能保證探針點(diǎn)各自落在對應(yīng)的金屬網(wǎng)絡(luò)上。RESISTANCE MODEL部分定義了網(wǎng)絡(luò)里每類元素的電阻值。sheet resistance是方塊電阻單位是ohm/sq金屬的方塊電阻一般都很小但poly和阱的方塊電阻可能到幾十甚至幾百歐姆。via resistance是單個(gè)過孔的電阻如果你的過孔陣列排布比較特殊需要確認(rèn)工具是不是按“并聯(lián)N個(gè)孔單孔阻值/N”來折算。我吃過虧的地方是默認(rèn)識別出的過孔數(shù)量偏少導(dǎo)致電阻被高估后面排查時(shí)才發(fā)現(xiàn)在這個(gè)選項(xiàng)上。TEMPERATURE 25.0指定了電阻計(jì)算時(shí)的環(huán)境溫度。金屬電阻率隨溫度升高而增大做ESD相關(guān)檢查時(shí)如果拿25℃的電阻和125℃仿真下的失效電流去算壓降會得出偏樂觀的結(jié)論。所以這個(gè)值要和系統(tǒng)級仿真的溫度條件保持一致。THRESHOLD MAX 10.0這段比較直觀。10歐姆是我這個(gè)例子里的一個(gè)虛設(shè)閾值實(shí)際項(xiàng)目里有的PAD到鉗位管要求小于1歐姆有的襯底通路要求小于幾十歐姆完全看設(shè)計(jì)規(guī)范。設(shè)閾值的意義在于讓檢查結(jié)果自動Pass/Fail評審會上直接看結(jié)論即可。4.3 結(jié)果報(bào)告怎么讀跑完P(guān)ERC之后會生成一個(gè)報(bào)告文件。正常情況下報(bào)告會列出每組探針點(diǎn)之間的等效電阻。報(bào)告長得類似這樣P2P Resistance Report From: VDD_NODE (layer: METAL1, bbox: (12.34, 56.78)) To : VSS_NODE (layer: METAL1, bbox: (12.40, 56.80)) Resistance: 0.352 ohm Status: PASS (limit 10.0 ohm)看到這個(gè)0.352歐姆很多人第一反應(yīng)是“這么小是不是沒算對”其實(shí)對于一條短而寬的電源走線這個(gè)量級完全正常。金屬方塊電阻本身就很小再加上并聯(lián)路徑多等效電阻做到亞歐姆級別是常有的事。我拿到報(bào)告之后一般會做三個(gè)交叉驗(yàn)證一是看數(shù)量級。如果預(yù)期是毫歐到歐姆級結(jié)果突然給出幾百千歐那多半是探針點(diǎn)落在了孤立島上或者中間某個(gè)連接層沒有被識別。二是看路徑。用Calibre RVE打開結(jié)果會看到高亮顯示的電流路徑。重點(diǎn)檢查高亮路徑有沒有覆蓋你預(yù)期的主干走線有沒有繞過某個(gè)過孔陣列。三是和手工估算對比。簡單起見拿那條最窄最長的路徑用方塊電阻乘以長寬比算一個(gè)粗略值然后和PERC結(jié)果對比。如果PERC結(jié)果比手工估算小說明還有并聯(lián)路徑被識別如果大很多檢查是不是過孔數(shù)量算少了。4.4 如果版本不支持內(nèi)置P2P語句的后退方案萬一你手里的PERC版本不支持內(nèi)置的P2P計(jì)算語句或者公司的規(guī)則體系不允許加新的檢查退而求其次的辦法是把中間數(shù)據(jù)導(dǎo)出再自己求解。從PERC里可以導(dǎo)出帶電阻信息的連接關(guān)系文件本質(zhì)是一個(gè)無向加權(quán)圖。你可以把A、B探針點(diǎn)附近的子網(wǎng)抓出來用Dijkstra算法先跑一個(gè)最短電阻路徑作為初值再用節(jié)點(diǎn)電壓法做精確計(jì)算。如果網(wǎng)絡(luò)層次不多用Python里的networkx庫加numpy就能搞定。import networkx as nx G nx.Graph() # 從導(dǎo)出的數(shù)據(jù)里往G里加邊和電阻值 # G.add_edge(n1, n2, weight5.2) # 最短電阻路徑近似只走一條路徑 approx_path nx.shortest_path(G, A, B, weightweight) print(approx path:, approx_path) # 精確等效電阻節(jié)點(diǎn)電壓法 # 方法和第3.1節(jié)一樣此處省略重復(fù)代碼這個(gè)方法適合驗(yàn)證用的臨時(shí)腳本但不適合做成長期交付物。長期項(xiàng)目還是盡快把PERC規(guī)則文件本身跑通。5. 常見問題與排查技巧實(shí)錄5.1 抽出來是0歐姆真的短路了嗎先別急著高興。P2P電阻抽出來是0通常有兩種情況。一種是A和B真的通過一個(gè)極低阻網(wǎng)絡(luò)連在一起比如都落在同一大塊電源網(wǎng)格上電阻小到工具精度顯示為0。另一種更常見——探針點(diǎn)標(biāo)記的范圍太大把兩個(gè)本來不該在一起的網(wǎng)絡(luò)通過同一個(gè)marker層連接起來了。尤其是marker層在版圖里沒有做隔離畫了一大片把VDD網(wǎng)絡(luò)和VSS網(wǎng)絡(luò)都覆蓋住工具當(dāng)然認(rèn)為A到B是直接相連的。排查方法是把marker層顯示出來確認(rèn)兩個(gè)探針點(diǎn)之間沒有重疊。探針圖形保持在目標(biāo)網(wǎng)絡(luò)所在層的小塊區(qū)域這是最穩(wěn)的做法。5.2 電阻偏大先懷疑什么東西如果比預(yù)期大出幾倍甚至幾十倍我最先懷疑的不是求解過程而是“網(wǎng)絡(luò)根本沒打通”。常見原因是某個(gè)中間層沒有在CONNECT語句里定義出來。比如METAL3和METAL2之間漏了CONNECT METAL3 METAL2 BY VIA23那整條METAL3走線就懸空了電流只能繞更遠(yuǎn)的路徑電阻自然暴漲。第二個(gè)要查的是過孔數(shù)量。默認(rèn)情況下工具可能只識別了過孔陣列里的部分過孔導(dǎo)致并聯(lián)電阻變大。翻一下規(guī)則文件里是否需要指定ARRAY識別選項(xiàng)強(qiáng)制把規(guī)整的過孔陣列當(dāng)作并聯(lián)來處理。第三個(gè)是溫度設(shè)置。同樣的網(wǎng)絡(luò)在25℃和125℃下金屬電阻可以差出20%~30%。所以不要把不同溫度下的結(jié)果直接對比規(guī)則文件里定死一個(gè)溫度基準(zhǔn)。5.3 探針點(diǎn)位置對結(jié)果的影響有多大非常大。探針點(diǎn)放的位置差幾微米電阻就可能差出好幾倍。舉例來說你要算PAD到ESD鉗位管的P2P電阻探針點(diǎn)如果放在PAD正中間和放在鉗位管漏端附近中間差的那一大段走線電阻全部會被算進(jìn)去結(jié)論完全不一樣。更合理的做法是定義清楚“從哪個(gè)電學(xué)節(jié)點(diǎn)到哪個(gè)電學(xué)節(jié)點(diǎn)”比如“從PAD金屬頂層到鉗位管漏極與電源線連接孔的下表面”。這個(gè)口徑必須和設(shè)計(jì)評審時(shí)討論的物理路徑一致否則就是雞同鴨講。5.4 遇到上拉/下拉電阻器件時(shí)怎么辦MESH網(wǎng)絡(luò)里如果明確有上拉電阻或者下拉電阻這類集中電阻器件比如IO內(nèi)部自帶上拉電阻它的阻值通常是幾千歐姆甚至幾十千歐姆。這時(shí)候最關(guān)鍵的是確認(rèn)PERC是不是把這個(gè)器件識別成了電阻并且加入了網(wǎng)絡(luò)計(jì)算。如果LVS電路里能認(rèn)出這個(gè)電阻器件PERC通常會把它當(dāng)做一個(gè)固定阻值的邊加入網(wǎng)絡(luò)A到B的P2P電阻就會等于“通路電阻加上拉/下拉阻值”的復(fù)合值。如果LVS沒認(rèn)出來那抽出來的結(jié)果就是純互連寄生電阻和電學(xué)上真正的通路總電阻差了一個(gè)器件阻值。遇到這種情況我一般會在規(guī)則文件里單獨(dú)定義一個(gè)電阻器件層手工給器件賦阻值確保它進(jìn)入網(wǎng)絡(luò)。不要想當(dāng)然地以為“工具會自動處理”器件的識別依賴LVS的完整性和模型文件的配置提前確認(rèn)比事后返工省太多時(shí)間。下面整理一個(gè)速查表給現(xiàn)場排錯快速定位用現(xiàn)象最可能原因處理方向電阻為0探針點(diǎn)覆蓋范圍重疊或A/B網(wǎng)絡(luò)短路縮小marker范圍檢查短路路徑電阻極大連接層缺失、過孔未識別補(bǔ)全CONNECT定義檢查過孔陣列選項(xiàng)結(jié)果不穩(wěn)定探針點(diǎn)落在不同金屬層交界區(qū)域統(tǒng)一探針點(diǎn)所在層縮小探針范圍結(jié)果與手工差很多未包含器件電阻或溫度不一致確認(rèn)器件是否入網(wǎng)統(tǒng)一溫度基準(zhǔn)PERC直接報(bào)錯退出語法版本不兼容查當(dāng)前版本手冊調(diào)整關(guān)鍵字拼寫5.5 大版圖跑得太慢怎么處理全芯片P2P電阻提取如果網(wǎng)絡(luò)特別大可能跑幾個(gè)小時(shí)甚至更久。我的經(jīng)驗(yàn)是先做一個(gè)“簡化版”的提取規(guī)則把不參與目標(biāo)路徑的層全部從連接定義里拿掉。比如只關(guān)心METAL1到METAL3就把METAL4及以上直接從連接關(guān)系里刪掉讓工具不要在無關(guān)層上浪費(fèi)計(jì)算時(shí)間。另一個(gè)辦法是先用DRC畫一個(gè)搜索范圍的框把探針點(diǎn)周圍的區(qū)域切出來只在這個(gè)局部跑P2P計(jì)算。很多情況下你關(guān)心的路徑本來就在局部范圍內(nèi)沒必要全芯片求解。有個(gè)更現(xiàn)實(shí)的問題PERC在做P2P計(jì)算時(shí)會自動嘗試疏散reduce中間節(jié)點(diǎn)節(jié)點(diǎn)數(shù)量越少求解越快。所以除了刪層還可以把“每一步計(jì)算精度”調(diào)低一檔先跑通一版看看趨勢最后再用高精度跑最終結(jié)果。精度設(shè)置一般會直接影響數(shù)值求解時(shí)的迭代終止條件對最終小數(shù)后第三位可能有影響但對判斷是否超閾值幾乎沒有差別。6. 讓結(jié)果真正可信的幾個(gè)實(shí)操心得寫到最后分享幾個(gè)我從踩坑中沉淀下來的習(xí)慣。第一個(gè)習(xí)慣是先做一個(gè)小testkey驗(yàn)證規(guī)則文件再上全芯片。我通常會在版圖角落放一組已知的測試結(jié)構(gòu)比如一條精確寬度和長度的METAL1走線兩端放探針點(diǎn)。這條走線的電阻用方塊電阻乘以長寬比手算就能得到精確值比如方塊電阻0.078歐姆/sqL/W100那理論值就是7.8歐姆。用PERC抽出來如果和這個(gè)數(shù)對比誤差在5%以內(nèi)說明規(guī)則文件里的電阻模型、層連接關(guān)系都是對的再跑全芯片就放心了。這個(gè)習(xí)慣幫我避免過至少兩次“規(guī)則文件層映射錯誤導(dǎo)致全芯片結(jié)果全部作廢”的慘劇。第二個(gè)習(xí)慣是把閾值檢查寫成變量方便批量跑corner。不要把10歐姆這種閾值硬編碼在規(guī)則文件里用VARIABLE P2P_MAX_RES 10.0來定義這樣CI跑回歸時(shí)改參數(shù)只需要動環(huán)境變量不用改規(guī)則文件本體。第三個(gè)習(xí)慣是養(yǎng)成看RVE高亮路徑的習(xí)慣。報(bào)告里給一個(gè)電阻數(shù)值只是第一步真正有價(jià)值的是知道電流實(shí)際走了哪條路。很多時(shí)候你以為電流會走最寬的電源總線結(jié)果RVE高亮顯示它繞了一大圈窄走線這就是潛在的瓶頸。PERC能把這個(gè)高亮路徑留在結(jié)果數(shù)據(jù)庫里評審時(shí)直接把高亮圖貼上去比光貼一個(gè)阻值有說服力得多??傮w來看Calibre PERC抽出P2P電阻這件事真正的難點(diǎn)從來不是某個(gè)命令怎么寫而是你對互連網(wǎng)絡(luò)的理解、對探針點(diǎn)口徑的定義、以及對結(jié)果的交叉驗(yàn)證。流程本身一旦跑通后續(xù)每個(gè)項(xiàng)目復(fù)用起來會非常順手。希望這篇東西能幫你把這條路走直一點(diǎn)。