
做PCB設(shè)計的人幾乎都見過Allegro右下角彈出來的那個狀態(tài)條或者打開Display - Status時看到一排帶顏色的標(biāo)記。其中“Unassigned Shapes”和“Out of Date Shapes”這兩項(xiàng)算是相伴相生的“老熟人”了。很多人一看到這兩個提示第一反應(yīng)就是刪了重鋪或者對著板子反復(fù)點(diǎn)Update to Smooth結(jié)果點(diǎn)了幾次那個數(shù)字還是穩(wěn)穩(wěn)地停在那里讓人非常煩躁。今天這篇就集中解決這兩類覆銅問題。先說清楚它們到底是什么、為什么會冒出來再給出完整的處理流程和我在實(shí)際項(xiàng)目里常用的排查套路。不管你是剛切到Cadence Allegro的新手還是已經(jīng)用了幾年的工程師如果經(jīng)常被這兩個狀態(tài)提示搞得頭大這篇文章能幫你省下不少折騰時間。1. Unassigned與Out of Date先分清兩個“病根”1.1 從Status對話框里看到的那兩行在Allegro中Display - Status彈出的對話框里顏色狀態(tài)分好幾類。Unassigned Shapes和Out of Date Shapes通常就在覆銅相關(guān)的狀態(tài)欄里但它們的含義完全不同。Unassigned Shapes是指當(dāng)前數(shù)據(jù)庫中存在著“沒有分配網(wǎng)絡(luò)”的銅箔圖形。說得直白點(diǎn)就是這塊板子上有一塊銅Allegro不知道它屬于哪個網(wǎng)絡(luò)它就那么孤零零地放在那里。這類shape雖然有時候肉眼能看出來但更多時候藏在底層或者其他不常用的信號層里等你出光繪或者跑DRC時才突然跳出來給你添堵。Out of Date Shapes則是指動態(tài)銅箔Dynamic Shape的“狀態(tài)”已經(jīng)過時了。Allegro里的動態(tài)銅箔不是一畫出來就把銅箔圖形和連接關(guān)系完整算好的它更像一個“待重算的草稿”。只要周邊走線、過孔、器件位置、規(guī)則或網(wǎng)絡(luò)屬性發(fā)生了變化這個草稿就和當(dāng)前數(shù)據(jù)庫不一致于是被標(biāo)記為out of date等著你去更新。說白了一個問題是“不知道這塊銅歸誰”另一個問題是“知道歸誰但圖形還沒按最新數(shù)據(jù)重算”。這是兩個完全不同層面的問題解決辦法當(dāng)然也不一樣。1.2 Unassigned Shapes是怎么來的很多人以為Unassigned Shapes只會出現(xiàn)在從其他EDA工具導(dǎo)入的文件里其實(shí)不對Allegro自己畫圖的過程中也很容易造出來。我總結(jié)了幾類高頻來源手工畫shape時沒有指定網(wǎng)絡(luò)。比如你在某個內(nèi)層放了一塊鋪銅區(qū)畫完直接點(diǎn)Done但沒有在Options面板里選中某個網(wǎng)絡(luò)這塊銅就成了“黑戶”。從DXF或其它格式導(dǎo)入圖形后圖形被轉(zhuǎn)換成了shape但沒有網(wǎng)絡(luò)屬性。用“Z-Copy”創(chuàng)建了一些銅箔邊界但生成時沒有選網(wǎng)絡(luò)只復(fù)制了外形。在Module復(fù)用、復(fù)制粘貼、移動某一部分電路時個別shape脫離了原本的銅箔體系變成獨(dú)立且沒有net的碎片。部分去死銅操作后殘留的小銅皮失去了原來的歸屬。這里有一個容易被忽略的場景很多人會把某個區(qū)域的shape刪掉后重新畫但如果只是刪除了其中一塊銅旁邊還有一小段被斷開的shape碎片這塊碎片很可能依舊帶著網(wǎng)絡(luò)也可能變成unassigned。兩種狀態(tài)處理方式完全不同。1.3 Out of Date Shapes又是怎么回事Allegro的動態(tài)銅箔在設(shè)計過程中默認(rèn)處于“動態(tài)”狀態(tài)你可以把動態(tài)銅箔理解成一種“按需計算”的圖形它會在你移動元器件、改線寬、調(diào)整規(guī)則后重新計算邊界、熱焊盤連接和死銅情況。但它不是實(shí)時計算而是先標(biāo)記為out of date等手動或者自動觸發(fā)更新后才完成填充和避讓計算。所以O(shè)ut of Date Shapes并不是錯誤它只是告訴你“這里有動態(tài)銅箔需要重新計算”。遇到它不用恐慌但也不能無視。如果不更新就直接出光繪銅箔圖形可能還是舊的邊界、舊的避讓結(jié)果或者缺失了部分連接關(guān)系非常容易造成板子上的網(wǎng)絡(luò)連接和設(shè)計預(yù)期不一致。另外在Allegro里還有一種靜態(tài)銅箔Static Shape。靜態(tài)銅箔不會出現(xiàn)out of date狀態(tài)因?yàn)樗粫詣痈S周邊變化。如果你把動態(tài)銅箔轉(zhuǎn)成靜態(tài)銅箔它會定格在當(dāng)前狀態(tài)后續(xù)修改走線、移動器件都不會讓它自動更新。很多項(xiàng)目里為了保證最終出圖不變量會在最后階段把關(guān)鍵區(qū)域的動態(tài)銅箔轉(zhuǎn)成靜態(tài)但這對前期設(shè)計來說操作成本很高所以我個人不推薦一開始就畫大量靜態(tài)銅箔。1.4 兩種異常的本質(zhì)對比用一張表把它們的區(qū)別說清楚對比項(xiàng)Unassigned ShapesOut of Date Shapes核心含義銅箔沒有網(wǎng)絡(luò)歸屬動態(tài)銅箔需要重算狀態(tài)來源手動繪制、導(dǎo)入、復(fù)制模塊等走線/器件/規(guī)則變化后未更新常見表現(xiàn)Status中數(shù)量固定或反復(fù)出現(xiàn)運(yùn)行Update后數(shù)字減少又變多典型處理分配網(wǎng)絡(luò) Assign Net執(zhí)行Update to Smooth/Rough是否影響DRC會可能造成未連接或短路風(fēng)險會影響連接關(guān)系和光繪結(jié)果是否影響光繪會未分配網(wǎng)絡(luò)銅箔可能導(dǎo)致意外銅皮會舊圖形可能與實(shí)際連接不一致看到這里你對這兩個問題應(yīng)該有一個基本定位了Unassigned要“認(rèn)領(lǐng)”O(jiān)ut of Date要“刷新”。2. 先從機(jī)制上理解覆銅的“狀態(tài)機(jī)”2.1 動態(tài)銅箔與靜態(tài)銅箔的選擇在談操作之前我想先把Allegro里覆銅的底層層邏輯講一下因?yàn)楹芏嗳嗽诓僮鲿r栽跟頭就是沒搞懂動態(tài)和靜態(tài)的區(qū)別。動態(tài)銅箔Dynamic Shape是Allegro默認(rèn)推薦的設(shè)計方式。它的好處在于自動化程度高當(dāng)你推擠走線、移動過孔、改變間距規(guī)則時銅箔會自動“避讓”新的元素。但這種自動避讓并不是實(shí)時完成Allegro為了性能考慮會用一種“邊界框加規(guī)則”的方式把你最后一次的編輯結(jié)果記錄下來等到你主動觸發(fā)更新時它才真正重新計算填充。靜態(tài)銅箔Static Shape則相反。你畫的時候是什么樣它就保持什么樣。它不會避讓新加進(jìn)來的走線也不會因?yàn)槟愀牧碎g距規(guī)則而變化。你可以手動編輯它的頂點(diǎn)、挖空區(qū)域但一切都要手動維護(hù)。靜態(tài)銅箔在高壓板、特殊射頻板里偶爾有用但在絕大多數(shù)數(shù)字電路板設(shè)計中我建議還是默認(rèn)用動態(tài)銅箔。為什么有人會遇到“Out of Date Shapes怎么更新都不消失”大部分情況下是板子里還殘留了舊的動態(tài)銅箔或者某些區(qū)域被鎖定了。比如你從別的版本、別的工程師那里接手一個板子對方可能用了不同版本的Allegro銅箔狀態(tài)被鎖定為“待更新”但由于缺少對應(yīng)的Shape優(yōu)先級設(shè)置更新邏輯根本沒有被觸發(fā)。2.2 shape優(yōu)先級、網(wǎng)絡(luò)分配與圖形層的關(guān)系A(chǔ)llegro里的動態(tài)銅箔有一個優(yōu)先級屬性Shape Priority。為什么需要優(yōu)先級因?yàn)橥粋€層上可能有多個相互重疊的銅箔當(dāng)它們重疊時Allegro必須決定“誰壓住誰”也就是哪個銅箔擁有這塊區(qū)域。這個優(yōu)先級和Unassigned Shapes并非直接相關(guān)但會影響你對“無歸屬銅箔”的處理。舉例來說你從別的PCB工具轉(zhuǎn)過來的文件里兩塊外形重疊的銅箔都沒有分配網(wǎng)絡(luò)即使你選中它并Assign Net如果優(yōu)先級設(shè)置不當(dāng)兩塊銅箔依然會出現(xiàn)你意想不到的挖空或覆蓋效果。尤其在內(nèi)層電源分割時這種問題特別明顯。所以處理Unassigned Shapes時我習(xí)慣先打開Display - Status確認(rèn)問題所在層然后用Shape - Select Shape on Layer去逐層找把無網(wǎng)絡(luò)的銅箔單獨(dú)顯示出來。必要時再用Options面板把“Net”下拉菜單選好分配網(wǎng)絡(luò)。另外銅箔的網(wǎng)絡(luò)分配和圖形所在層是兩個不同維度的屬性。一塊銅箔在L2層被分配了GND網(wǎng)絡(luò)這只說明它附著于GND網(wǎng)絡(luò)和它在哪個層沒有關(guān)系。很多人以為“在GND層畫的銅就是GND”這話在邏輯上是對的但Allegro不是靠層名識別網(wǎng)絡(luò)的它靠的是Net屬性。所以你在任何一層畫shape如果不指定net它就是unassigned哪怕它所在層叫“GND”。2.3 為什么Allegro設(shè)計成“延遲更新”很多初學(xué)者會問為什么Allegro不能像某些其他工具一樣邊畫邊計算非要搞一個out of date狀態(tài)出來原因很簡單性能。一塊中等復(fù)雜度的PCB上可能有幾十塊甚至上百塊銅箔每塊銅箔都要和成千上萬的走線、過孔做碰撞檢測和避讓計算。如果每次鼠標(biāo)移動都實(shí)時重算整個軟件會卡到?jīng)]法用。所以Allegro選擇了一種“先標(biāo)記、后重算”的方式你在操作期間銅箔顯示為一個大概的邊界框或者按Rough狀態(tài)顯示當(dāng)你放下手里的活兒主動執(zhí)行Update to Smooth時它才認(rèn)認(rèn)真真把所有避讓、熱焊盤連接、死銅標(biāo)記都算一遍。理解了這一點(diǎn)你就明白Out of Date Shapes不是一個應(yīng)該害怕的報錯而是一個“待辦事項(xiàng)”。它提醒你你還有一批銅箔沒有最終成型出圖前一定記得更新別忘了。3. 實(shí)操徹底清除Unassigned Shapes3.1 先定位再看數(shù)量處理Unassigned Shapes的第一步不是直接去Assign Net而是定位。在Allegro中我常用的方法打開Display - Status看Unassigned Shapes這一行的數(shù)值。在Find面板中只勾選Shapes然后點(diǎn)擊左側(cè)的“All Off”再選“Shapes”。打開Options面板在“Net”類型中選擇“(Unassigned)”或者手動查看屬性為空的shape。還有一種更直接的方法用右鍵菜單的“Select Shape on Layer”指定到問題層后命令欄會提示你當(dāng)前層上有多少塊shape其中哪些沒有網(wǎng)絡(luò)。配合顏色顯示你可以快速鎖定它們。我個人的習(xí)慣是在處理之前先全局打開所有層單獨(dú)給unassigned shape設(shè)置一種醒目的臨時顏色比如亮黃色然后全板飛一圈。有時這些銅箔會藏在器件底下、板框外面甚至機(jī)械層里只用Status看數(shù)量很容易看漏。3.2 給孤立的銅箔分配網(wǎng)絡(luò)Assign Net當(dāng)你找到一塊未分配網(wǎng)絡(luò)的銅箔操作其實(shí)很簡單執(zhí)行菜單Shape - Assign Net或者直接選中shape后右鍵選擇Assign Net。在彈出的對話框中從網(wǎng)絡(luò)列表里選擇它應(yīng)該歸屬的網(wǎng)絡(luò)比如GND。點(diǎn)擊OK命令欄會提示分配成功。這里要特別提醒如果這塊銅箔是作為電源平面或者地平面的一部分請確認(rèn)它和旁邊的同網(wǎng)絡(luò)銅箔是否有重疊。如果兩塊銅箔同網(wǎng)絡(luò)且重疊Allegro是可以把它們合并的但如果你只是簡單Assign Net沒有做后續(xù)MergeDRC里還是可能出現(xiàn)重疊銅箔造成的間距報錯。3.3 善用Shape Select與Bulk操作如果你這個板子是從第三方工具轉(zhuǎn)過來的Unassigned Shapes的數(shù)量可能不是一兩塊而是幾十塊。這時候一塊塊去Assign Net效率太低了。推薦流程執(zhí)行Shape - Select Shape on Layer在Options面板里選擇目標(biāo)層。通過Find面板的“Shapes”、并勾選“Unassigned”篩選條件把該層上所有未分配網(wǎng)絡(luò)的銅箔全選。使用Shape - Assign Net統(tǒng)一分配到一個網(wǎng)絡(luò)下。需要注意的是批量Assign Net時要確保你選中的所有銅箔確實(shí)應(yīng)該屬于同一個網(wǎng)絡(luò)。如果你硬把不同區(qū)塊的銅箔統(tǒng)一分配到一個網(wǎng)絡(luò)上后面DRC會有一堆連接問題。批量操作之前最好先用顏色區(qū)分每一塊獨(dú)立銅箔再逐一確認(rèn)歸屬。3.4 合并同網(wǎng)絡(luò)的碎片銅箔Merge Shapes在實(shí)際項(xiàng)目中Unassigned Shapes和碎片化銅箔經(jīng)常一起出現(xiàn)。尤其是從其他工具導(dǎo)入或者在你反復(fù)刪改銅箔邊界之后會出現(xiàn)同一網(wǎng)絡(luò)的銅箔被切成了很多小塊。它們可能都被正確分配了網(wǎng)絡(luò)但DRC里仍然會有“同一網(wǎng)絡(luò)銅箔間距”的報錯因?yàn)锳llegro把每一塊獨(dú)立銅箔都當(dāng)成獨(dú)立圖形銅箔之間的間距規(guī)則依然生效。這時就要用到Shape - Merge Shapes。操作方法是選擇需要合并的銅箔按住Ctrl鍵逐個選中。執(zhí)行Shape - Merge Shapes。在彈出的對話框中指定合并后保留哪個網(wǎng)絡(luò)的屬性通常選擇“Merge to first shape”或者按需指定。合并完以后原來分離的銅箔會變成一個整體銅箔之間的間距規(guī)則不再產(chǎn)生影響DRC也會干凈很多。3.5 無法確定網(wǎng)絡(luò)的Unassigned Shape怎么辦有些銅箔你確實(shí)不知道它應(yīng)該屬于哪個網(wǎng)絡(luò)。這種情況多半發(fā)生在以下場景你從別的工程師手里接了一個半成品板對方在某個內(nèi)層畫了一些實(shí)驗(yàn)性質(zhì)的銅箔但沒寫文檔或者從某個機(jī)械結(jié)構(gòu)軟件導(dǎo)入的DXF里帶了一些填充區(qū)域這些區(qū)域本來是作為螺絲孔加強(qiáng)圈或者屏蔽罩的安裝區(qū)域并不是電氣網(wǎng)絡(luò)。我的建議是如果它在電氣層上且周圍有明確的地孔或電源過孔優(yōu)先考慮分配到GND網(wǎng)絡(luò)。如果它在非電氣層比如機(jī)械層、裝配層你可以直接把它刪除或移動到Outlined層不讓它進(jìn)入電氣DRC范圍。如果不確定它是否會影響電氣性能建議先把它改為靜態(tài)銅箔再刪除或者隔離到板框外并做一次Database Check確認(rèn)連接性。切忌“看著像GND就亂分配”。一塊無網(wǎng)絡(luò)的銅皮如果被錯誤分配到了某個敏感的模擬電源網(wǎng)絡(luò)上輕則DRC報錯重則影響板子實(shí)際工作性能。3.6 注意的坑不要用Delete硬刪容易漏掉弱連接我在初學(xué)Allegro時踩過一個坑看到板上有一塊不需要的銅箔直接選中Delete然后心里覺得干凈了。結(jié)果發(fā)現(xiàn)下方還藏著一小塊??吭诘讓幼呔€上的小銅皮因?yàn)橹贿x中了上層大銅皮沒注意到底層還有一塊被壓住的碎片。最終光繪里多了一小塊不該出現(xiàn)的銅板上還差點(diǎn)短路。所以刪除銅箔前一定要把視圖切成3D或者把層透明度調(diào)低確認(rèn)當(dāng)期銅箔的完整邊界?;蛘哂肧hape - Select Shape on Layer把目標(biāo)層全部選中再看命令欄里提示的數(shù)量和你預(yù)期是否一致。4. 實(shí)操強(qiáng)制更新Out of Date Shapes4.1 更新入口在哪在Allegro中更新動態(tài)銅箔的入口有多個菜單欄Shape - Update to Smooth將銅箔按完整避讓計算更新為平滑填充狀態(tài)。菜單欄Shape - Update to Rough只按粗略邊界更新填充為粗糙顯示狀態(tài)。右鍵菜單選中任意動態(tài)銅箔后右鍵可以直接調(diào)出Update to Smooth或Update to Rough。一般來說我們?nèi)粘8碌哪繕?biāo)是Smooth狀態(tài)。Rough狀態(tài)只是臨時顯示用方便你在操作階段快速瀏覽布局不會用于最終光繪。4.2 Update to Smooth、Update to Rough區(qū)別很多人不理解為什么一個Smooth一個Rough到底用哪個簡單解釋Rough用較快的算法把銅箔邊界顯示成帶有鋸齒的輪廓但不做熱焊盤和完整避讓的精細(xì)計算。它適合在設(shè)計過程中臨時看效果速度快但不適合出圖。Smooth會把銅箔的所有避讓邊界、熱焊盤連接、隔離間距、熱釋放都精細(xì)計算出來。它生成的結(jié)果是最終光繪中看到的銅箔形態(tài)。實(shí)際項(xiàng)目里我通常建議“布局布線過程中用Rough發(fā)板前用Smooth”。如果板子規(guī)模很大為了避免卡頓也可以把動態(tài)銅箔的全局更新關(guān)掉只在檢查時執(zhí)行Smooth更新。4.3 為什么有時點(diǎn)了Update還是沒反應(yīng)這個問題很經(jīng)典。很多人執(zhí)行Update to Smooth后Status里的Out of Date Shapes數(shù)量紋絲不動。常見原因有三個第一動態(tài)銅箔被設(shè)置成了“Manual Update”模式。在Allegro的User Preferences中有一個和Shape update相關(guān)的選項(xiàng)部分版本默認(rèn)不自動更新。如果你改過配置需要在Preferences里把自動更新選項(xiàng)打開否則每次都要手動觸發(fā)。第二銅箔所在的層被“屏蔽”了。如果你把某一層設(shè)置為No Etch或者該類銅箔被排除在DRC之外Update操作可能不會對其生效。第三還有一小類情況是銅箔被鎖定Locked。當(dāng)動態(tài)銅箔被鎖定后你無法更新還會出現(xiàn)“Shape is locked”之類的提示。這種問題在接手別人板子時很常見需要對目標(biāo)銅箔執(zhí)行Unlock后再更新。排錯思路先確認(rèn)是否鎖住再檢查User Preferences最后把顯示層打開確保銅箔所在層是可見的因?yàn)槿绻麑硬豢梢奤pdate時甚至?xí)雎运?.4 批量刷新與局部刷新操作技巧在Allegro 17.x版本之后覆銅更新的菜單已經(jīng)相對順手了。你可以執(zhí)行Shape - Update to Smooth然后在Options面板里選擇“All”或“By Layer”。如果只是某幾個層有動態(tài)銅箔建議按層刷新而不是全部刷新。比如內(nèi)層電源層和底層地的覆銅規(guī)則可能不一樣分開刷新能避免不必要的計算等待。還有一個技巧是用查找過濾器Find只選中當(dāng)前視圖范圍內(nèi)可見的shape然后局部更新。如果你設(shè)計的是高密度BGA板動不動幾百塊銅箔全板刷新可能要好幾分鐘而局部刷新能讓你更精準(zhǔn)地處理問題區(qū)域。4.5 把動態(tài)銅箔轉(zhuǎn)靜態(tài)再轉(zhuǎn)回來的危險操作有一種操作非常容易引出問題先把動態(tài)銅箔轉(zhuǎn)換成靜態(tài)銅箔去手動編輯然后再轉(zhuǎn)回動態(tài)。這個操作在你極度需要手工修銅箔邊界的場景下確實(shí)有用但它有代價轉(zhuǎn)換過程中可能丟失部分動態(tài)關(guān)聯(lián)關(guān)系尤其是網(wǎng)絡(luò)連接和避讓參數(shù)容易造成不可預(yù)期的形狀變化。如果在轉(zhuǎn)回動態(tài)后發(fā)現(xiàn)Out of Date Shapes一直存在多半就是這種轉(zhuǎn)換帶來的殘留狀態(tài)。更好的做法是保留動態(tài)銅箔本身通過編輯Shape Boundary或追加Vertex來實(shí)現(xiàn)邊界修改而不是反復(fù)在動態(tài)和靜態(tài)之間橫跳。5. 一套組合拳從布滿報錯到干凈狀態(tài)5.1 標(biāo)準(zhǔn)處理流程下面是我在項(xiàng)目中最常用的一套清理流程基本覆蓋了Unassigned和Out of Date同時存在的場景。第一步數(shù)據(jù)庫檢查。執(zhí)行File - Properties或使用Database CheckDBCheck檢查整個數(shù)據(jù)庫是否存在基本錯誤。這一步能提前發(fā)現(xiàn)破損的銅箔圖形。第二步執(zhí)行Shape - Update to Smooth先把所有動態(tài)銅箔更新到最新狀態(tài)。如果有異常命令欄會提示更新失敗的shape數(shù)量。第三步打開Display - Status記錄Unassigned Shapes和Out of Date Shapes的數(shù)字。第四步處理Unassigned Shapes。使用Shape - Select Shape on Layer逐層檢查未分配網(wǎng)絡(luò)的銅箔完成Assign Net、Merge Shapes或刪除操作。第五步再次執(zhí)行Shape - Update to Smooth。因?yàn)槟阍谏弦徊椒峙淞司W(wǎng)絡(luò)某些銅箔的網(wǎng)絡(luò)連接關(guān)系發(fā)生了變化需要重新計算邊界和熱焊盤。第六步打開Display - Status確認(rèn)Unassigned Shapes歸零Out of Date Shapes歸零。第七步不要急著結(jié)束。執(zhí)行Tools - DRC檢查是否有新增的間距或連接報錯。很多時候給一塊銅箔分配網(wǎng)絡(luò)之后會和旁邊原本不相干的銅箔產(chǎn)生新的間距檢查這部分需要特別留意。第八步處理后再次執(zhí)行一次Update to Smooth把可能因?yàn)镈RC修改而變dirty的銅箔重新刷新。這套流程看起來簡單但每一步都有坑。我遇到過不少工程師在第一步直接跳過雖然Unassigned處理好了但板里還有其他數(shù)據(jù)庫層面的錯誤最后出光繪時暴雷。DBCheck多花幾十秒值得。5.2 羅氏線圈等特殊版圖對覆銅的要求有一個場景值得單獨(dú)提一下羅氏線圈這類高精度電流檢測板。這種板子的線圈繞組往往要求極高的對稱性和一致性對覆銅/鋪銅邊界特別敏感。在這種設(shè)計里Unassigned Shapes的后果可能比普通數(shù)字板嚴(yán)重得多。因?yàn)榫€圈區(qū)域的銅箔哪怕有一小塊形狀不規(guī)范、邊界多了個齒都會影響線圈的高頻特性和檢測精度。所以我在做這類板子時會額外注意線圈區(qū)域盡量使用靜態(tài)銅箔或者使用動態(tài)銅箔后鎖定邊界避免誤操作導(dǎo)致shape邊界偏移。鋪銅邊緣的避讓間距設(shè)置一致不使用多套規(guī)則混用。每一層線圈圖形的Unassigned狀態(tài)必須清零因?yàn)槲捶峙渚W(wǎng)絡(luò)的銅箔可能在層間造成意外的寄生電容。5.3 配合自動化的Allegro Skill處理思路如果你經(jīng)常需要處理大批量銅箔狀態(tài)問題使用Allegro Skill做自動化是一個非常高效的選擇。網(wǎng)上有不少開源的skill腳本可以做“自動尋找unassigned shape并分配網(wǎng)絡(luò)”的操作但使用前必須搞清楚腳本邏輯。我的習(xí)慣是先寫一個檢查腳本掃描全板輸出每個unassigned shape所在層、包圍盒、頂點(diǎn)數(shù)量等信息。用一個簡單的規(guī)則引擎把這些shape按“是否與GND過孔重合”“是否在特定區(qū)域內(nèi)”分類。再執(zhí)行批量Assign Net。這樣做的好處是可控性強(qiáng)。我不建議直接拿一個“全自動全板分配”的腳本就跑因?yàn)槟_本無法理解設(shè)計意圖。它可能把你故意留下的機(jī)械銅箔也分配上了網(wǎng)絡(luò)到時候查DRC更痛苦。關(guān)于Skill如果你不熟悉可以先從簡單的菜單錄制宏開始Allegro本身支持一定程度的操作回放。但是要做到批量定位、批量分配還是得用Skill。6. 常見問題排查與經(jīng)驗(yàn)速查表6.1 Status里總有“Unassigned Shape”但圖上找不到這是最讓人抓狂的情況之一。Status明明顯示有2個Unassigned Shapes但你在圖上怎么翻都找不到。我的排查步驟打開所有層包括機(jī)械層、裝配層、反標(biāo)注層等非電氣層用全透明顯示模式看。使用Find - Shapes在菜單Commands中執(zhí)行“Select All”看命令欄提示選中了幾塊shape。如果你選中后看不到任何高亮說明它們可能在板框外非常遠(yuǎn)的地方。執(zhí)行Zoom Fit然后按“F5”刷新有時候會發(fā)現(xiàn)一個極小銅箔毛刺留在板外幾十毫米處。還有一種可能是shape被放在了“Undefined”層或“Board Geometry”層。雖然這些層通常不參與電氣連接但Status依然會統(tǒng)計。這個問題我遇到過好幾次最后都是靠“全選shape并執(zhí)行Move”來定位把所有shape移到板內(nèi)某個固定位置就看到那些看不見的銅箔冒出來了。6.2 “Out of Date Shapes”數(shù)量越更新越多正常情況下更新一次Smooth數(shù)量應(yīng)該歸零。如果越更新越多說明你的設(shè)計里存在“動態(tài)銅箔不斷被修改”的因素。最常見的元兇是某些規(guī)則比如spacing規(guī)則在更新過程中被觸發(fā)而觸發(fā)之后銅箔又反過來影響了走線或器件的位置導(dǎo)致它們再次觸發(fā)更新。這種循環(huán)常見于有自動調(diào)線或自動居中功能的高級約束里。排查步驟關(guān)閉所有自動布線相關(guān)功能。把所有動態(tài)銅箔按層單獨(dú)更新觀察是哪一層在反復(fù)變臟。檢查該層是否有大量被鎖定的碎片銅箔或者是否和另一塊動態(tài)銅箔存在重疊關(guān)系。如果實(shí)在找不到原因可以把該層銅箔先轉(zhuǎn)為靜態(tài)銅箔出圖前再評估是否能接受。6.3 Shape只有輪廓沒有填充這個問題也經(jīng)常和Out of Date掛在一起。你在屏幕上看到銅箔只有一圈紫色邊框里面空空如也。大概率是因?yàn)楫?dāng)前銅箔處于Rough或Out of Date狀態(tài)顯示模式?jīng)]有觸發(fā)完整填充。解決辦法執(zhí)行Shape - Update to Smooth。檢查Display - Color/Visibility里對應(yīng)銅箔層的填充顏色是否被關(guān)閉。如果Update to Smooth之后還是沒有填充就要考慮是不是該銅箔被設(shè)為了Static Shape但它內(nèi)部又沒有任何有效圖形。這時候用它右鍵的Edit Properties看一下必要時刪除重畫。6.4 熱焊盤/花焊盤連接異常很多人更新完動態(tài)銅箔后發(fā)現(xiàn)某個器件的GND焊盤沒有熱焊盤連接或者連接方式不對。這個問題的根源往往是該焊盤的Pin屬性和銅箔的Thermal Relief設(shè)置不匹配。比如某個Pin被設(shè)置成Isolate那么即使銅箔已經(jīng)通過Smooth計算它也會被完全隔離?;蛘咩~箔的Connect風(fēng)格被設(shè)置成“None”導(dǎo)致焊盤沒有連接。處理方式打開Setup - Constraints - Physical檢查默認(rèn)的Copper連接方式。檢查Pin屬性確認(rèn)它沒有設(shè)置Isolate或Thermal Relief override。重新Update to Smooth讓修改生效。6.5 從其他EDA導(dǎo)入后的銅箔問題這個場景值得單列因?yàn)楹芏郩nassigned Shapes都是從PADS、Altium或者其他工具轉(zhuǎn)過來后留下的遺產(chǎn)。從別的工具轉(zhuǎn)Allegro時銅箔常被轉(zhuǎn)化為靜態(tài)銅箔有時還保留著原工具的網(wǎng)絡(luò)屬性有時則完全丟失。再加上優(yōu)先級、層名稱映射的差異你會在轉(zhuǎn)過來的板子里看到一堆unassigned和out of date混合出現(xiàn)的奇怪現(xiàn)象。我的建議是轉(zhuǎn)換后不要直接開始布線先花半小時做一次覆銅清理。用Shape - Convert to Dynamic把靜態(tài)銅箔批量轉(zhuǎn)成動態(tài)銅箔然后重新分配網(wǎng)絡(luò)。檢查所有層的net屬性把電源和地網(wǎng)絡(luò)逐一對應(yīng)上。執(zhí)行一次全板Update to Smooth再跑DRC。6.6 數(shù)據(jù)庫修復(fù)DBDoctor最后一個救急手段是Allegro自帶的數(shù)據(jù)庫修復(fù)工具DBDoctor。當(dāng)板子里的銅箔狀態(tài)非?;靵y怎么更新都報錯時先關(guān)掉設(shè)計文件用DBDoctor跑一遍數(shù)據(jù)庫檢查。DBDoctor的具體操作路徑在不同版本里略不一樣一般位于安裝目錄下可以通過Start Menu快捷方式進(jìn)入。跑完DBDoctor后再重新打開板子很多頑固的Out of Date和Unassigned問題會自然消失因?yàn)閿?shù)據(jù)庫本身已經(jīng)修復(fù)了。但這里要說句實(shí)在話DBDoctor不是萬能藥。如果是設(shè)計邏輯層面的問題比如規(guī)則沖突、銅箔優(yōu)先級設(shè)置錯誤DBDoctor是查不出來的。它更擅長處理文件損壞、圖形數(shù)據(jù)不一致這類底層問題。所以不要依賴它而是要從設(shè)計源頭上規(guī)范操作習(xí)慣。我在實(shí)際項(xiàng)目里一般把Unassigned Shapes和Out of Date Shapes的檢查固定在出光繪前的標(biāo)準(zhǔn)動作里。先跑一次全板更新再查unassigned處理完再更新一次然后跑DRC。這個過程看著麻煩但一旦變成習(xí)慣你會發(fā)現(xiàn)后期改板子的時間反而少了。最后再分享一個小技巧在設(shè)計中途我會定期按層執(zhí)行“Update to Rough 局部查看”而不是等全部布完線才做一次大更新。這樣隨時能發(fā)現(xiàn)銅箔異常避免把它們留到最后集中爆發(fā)。希望這篇內(nèi)容能幫你減少一點(diǎn)和Status窗口“戰(zhàn)斗”的時間。