出指南:22.11版本后如何正確設(shè)置)
1. 先搞清楚鏡像層到底在鏡像什么1.1 為什么需要鏡像層PCB 出 Gerber 時(shí)鏡像這個(gè)詞幾乎是每個(gè)畫板子的人都會(huì)碰到的但真正把它講清楚的人不多。最常見(jiàn)的一個(gè)場(chǎng)景就是底層絲印。你在 Bottom Overlay 上放一個(gè) GND 標(biāo)記正面看它是反的只有翻到背面看才是正著的。如果你的產(chǎn)品底面正好朝外或者需要在背面露出字符標(biāo)識(shí)工廠在絲印工序里就需要一張“從背面看可讀”的底層字符圖。Gerber 文件本身并不知道哪一面是正面它存的只是坐標(biāo)集合。想讓底層字符在視覺(jué)上正過(guò)來(lái)就必須在導(dǎo)出時(shí)對(duì)底層做一次坐標(biāo)反射也就是我們說(shuō)的鏡像。第二個(gè)常見(jiàn)場(chǎng)景是陰陽(yáng)板。某些低成本小板子為了節(jié)省板材會(huì)在一張板卡里同時(shí)排布正面朝上和背面朝上的兩個(gè)子板。背面朝上的那個(gè)子板其全部底層圖形都需要以鏡像形式輸出否則拼板后方向就反了。這種事情通常在 Layout 階段會(huì)處理但如果布局已經(jīng)凍結(jié)、改動(dòng)成本高就會(huì)要求在導(dǎo)出環(huán)節(jié)用鏡像解決。第三個(gè)容易被忽略的是對(duì)齊一致性。鏡像并不只是“把某個(gè)圖層左右顛倒”那么簡(jiǎn)單。如果一塊六層板的 Gerber 里五層是正向輸出只有底層絲印單獨(dú)做了鏡像那工廠在 CAM 階段把各層疊在一起對(duì)孔位時(shí)大概率會(huì)出現(xiàn)坐標(biāo)對(duì)不上的報(bào)警。原因是底層絲印的坐標(biāo)經(jīng)過(guò)反射后和鉆孔層、底層銅層之間不再共享同一套坐標(biāo)關(guān)系。所以真正實(shí)操中“整組配套層一起鏡像”比“單獨(dú)鏡像某一層”要常見(jiàn)得多。1.2 鏡像和翻轉(zhuǎn)不是一回事新手經(jīng)常把“翻轉(zhuǎn)板子”和“鏡像圖形”混為一談。翻轉(zhuǎn)是視角變化你把板子從桌子拿起來(lái)翻到背面看左右關(guān)系反了但板子本身的幾何坐標(biāo)一點(diǎn)沒(méi)變。鏡像則是把圖形上的所有坐標(biāo)按照某個(gè)軸做反射變換。前者是你看板子的方式變了后者是文件數(shù)據(jù)本身變了。我習(xí)慣用一個(gè)透明卡片的例子來(lái)解釋。你在一張透明片上從左到右寫下 A、B、C正面讀就是 ABC。把透明片反過(guò)來(lái)從背面看你看到的是 C、B、A這就是翻轉(zhuǎn)視角。如果你想得到一張膠片讓它放在燈光下從正面看就能直接讀出 CBA那你就需要把原來(lái)的圖形做一次鏡像變換把所有點(diǎn)沿中軸翻過(guò)去生成一份新的坐標(biāo)。Gerber 的鏡像層級(jí)操作做的就是后面這件事。在 Altium 里這兩者對(duì)應(yīng)兩個(gè)完全不同的入口PCB 編輯器里的 VB 快捷鍵只是讓你從底面觀察板子不影響任何輸出文件而真正改變 Gerber 文件坐標(biāo)的是 Gerber Setup 對(duì)話框里層列表中的 Mirror 選項(xiàng)。很多人搞反就是因?yàn)橄劝戳?VB發(fā)現(xiàn)屏幕上字符都正了就以為導(dǎo)出的文件也會(huì)是正的。實(shí)際不是屏幕顯示和文件坐標(biāo)是兩套系統(tǒng)。2. 22.11 版本后 Gerber 輸出到底變了什么2.1 早期版本怎么操作鏡像Altium 22.11 之前的版本比如 AD20、AD21 時(shí)代Gerber Setup 的 Layers 頁(yè)里有一個(gè)非常顯眼的 Mirror 選項(xiàng)。我當(dāng)時(shí)學(xué)這個(gè)功能流程大概是打開(kāi) Gerber Files 對(duì)話框選擇 Layers 標(biāo)簽頁(yè)在需要鏡像的層前點(diǎn)開(kāi)下拉選項(xiàng)或者直接勾選 Mirror點(diǎn)確認(rèn)生成。界面比較直白找得到就不是大問(wèn)題。那個(gè)年代還有個(gè)特點(diǎn)Gerber 輸出配置跟隨著 PCB 文檔走版本之間差異也不大。只要項(xiàng)目模板里配好了一次鏡像設(shè)置后續(xù)同系列板子基本都能繼承。公司內(nèi)部做標(biāo)準(zhǔn)化 Output Job 后鏡像這件事更像是一次性的配置工作不太需要每次重設(shè)。老版本的風(fēng)險(xiǎn)反而是誤觸。有些人只是臨時(shí)預(yù)覽不小心把某一個(gè)底層文件勾上了鏡像結(jié)果整批 Gerber 里就那一層是反的CAM 檢查時(shí)很難發(fā)現(xiàn)到產(chǎn)線對(duì)位時(shí)才會(huì)暴露。2.2 22.11 之后哪里容易踩坑22.11 版本開(kāi)始Altium 對(duì) Gerber 輸出引擎做了一輪重構(gòu)順帶把界面里很多列的顯示方式改成默認(rèn)精簡(jiǎn)模式。最直觀的變化是打開(kāi) Gerber Setup 的 Layers 頁(yè)層列表只顯示層名和 Plot 這類核心列Mirror 列直接藏了起來(lái)。第一次看見(jiàn)這個(gè)界面的工程師十有八九覺(jué)得新版把鏡像功能刪了。另一個(gè)容易踩坑的是 Gerber X2 格式成了默認(rèn)選項(xiàng)。Gerber X2 在文件頭會(huì)寫入更多層屬性信息但它本身并沒(méi)有一個(gè)標(biāo)準(zhǔn)的“鏡像”字段。舊工程里保存的鏡像狀態(tài)通過(guò)舊 Output Job 遷移到新版本時(shí)映射并不可靠。我實(shí)測(cè)過(guò)的結(jié)果是有些層勾過(guò)的鏡像在新版本里被靜默忽略有些層干脆丟失了輸出屬性。如果你公司里的模板沒(méi)有同步更新同一個(gè)人、同一個(gè)板子在不同版本電腦上出的 Gerber 甚至方向都可能不一致。坐標(biāo)格式的默認(rèn)值也變過(guò)。22.11 之后Advanced 頁(yè)里的默認(rèn)單位、前導(dǎo)零/后導(dǎo)零、精度設(shè)置跟老版本默認(rèn)值不完全一樣。鏡像計(jì)算依賴精確坐標(biāo)一旦精度低一位底層孔位和頂層孔位在 CAM 里可能就差出幾個(gè) mil。這種問(wèn)題在正常層上不明顯因?yàn)榇蠹易鴺?biāo)都是正向但鏡像層經(jīng)過(guò)反射后輕微誤差會(huì)被放大更容易在鉆孔對(duì)齊時(shí)暴露。2.3 先給結(jié)論功能并沒(méi)有刪雖然界面變了、默認(rèn)格式變了但逐層鏡像的功能還在。入口只是被收進(jìn)列設(shè)置里需要手動(dòng)把 Mirror 列調(diào)出來(lái)。具體做法是在 Layers 頁(yè)的層列表表頭右鍵在彈出菜單里勾選 Mirror 列。勾出來(lái)之后每個(gè)輸出層旁邊都會(huì)出現(xiàn)一個(gè)可勾選的格子。如果你做完這一步發(fā)現(xiàn)還是沒(méi)有或者這個(gè)工程是從老版本遷移來(lái)的最穩(wěn)妥的辦法是把 Output Job 刪掉重建。不要試圖在舊配置上打補(bǔ)丁。新版對(duì)舊輸出配置的兼容性并不是百分之百重建之后重新設(shè)置一遍反而能避免很多隱藏問(wèn)題。我處理過(guò)好幾個(gè)“鏡像莫名失效”的案例最后都是重建 Output Job 解決的。3. 鏡像層導(dǎo)出的 4 個(gè)可行方案3.1 方案一Gerber Setup 層列表直接勾鏡像首選這是最正規(guī)、最可控的方法也是我現(xiàn)在最常用的方式。第一步在 PCB 編輯器里打開(kāi) File - Fabrication Outputs - Gerber Files。第二步切到 Layers 頁(yè)在層列表的表頭區(qū)域右鍵把 Mirror 列顯示出來(lái)。如果你是 22.11 之后的默認(rèn)界面這步是必須做的不做就看不到任何鏡像入口。第三步在需要鏡像的層行勾選 Mirror。這里需要特別強(qiáng)調(diào)不要只勾一層。如果你想讓整套底層都以“從底面看圖”的方式輸出那么 Bottom Copper、Bottom Solder、Bottom Overlay、Bottom Paste 這幾層應(yīng)該一起勾選。如果只勾了 Bottom Overlay到底勾不勾 Bottom Copper取決于你和工廠怎么約定但至少要把配套的阻焊和字符同時(shí)處理掉。第四步確認(rèn)坐標(biāo)原點(diǎn)和格式。我建議在 Advanced 頁(yè)把 Format 設(shè)置成 2:5單位按公司規(guī)范選毫米或英制。不要用默認(rèn)最小化設(shè)置里的 2:3精度不夠鏡像翻轉(zhuǎn)后小焊盤很容易偏位。第五步生成文件。生成后不要急著發(fā)先打開(kāi) CAM 工具或者 Altium 自帶的 Gerber 查看器把鏡像過(guò)的層和鉆孔層疊在一起選幾個(gè)特征位置量一下坐標(biāo)確認(rèn)沒(méi)有單層錯(cuò)位。這里有個(gè)我自己的習(xí)慣凡是做過(guò)鏡像的層文件名一定加上后綴。Altium 默認(rèn)會(huì)用層名作為文件名一部分但你可以通過(guò) Output Job 的 Naming 設(shè)置改成自定義格式比如底層絲印寫成 OVL_BOT_M別人拿到文件一看就知道這層是鏡像過(guò)的。這能省下大量溝通成本。3.2 方案二先用底部視圖確認(rèn)方向再出鏡像這個(gè)方案不算真正改動(dòng) Gerber 輸出但能幫你避免方向搞反。適合那種“我完全不記得底面字符當(dāng)前方向?qū)Σ粚?duì)”的情況。在 PCB 編輯器里按 VBAltium 會(huì)從底面顯示板子。這個(gè)時(shí)候你再看 Bottom Overlay 上的字符就是板子真正從背面看到的樣子。如果文字顯示是反的說(shuō)明當(dāng)前底層在正向坐標(biāo)系里是反的導(dǎo)出時(shí)大概率需要鏡像如果文字已經(jīng)是正的說(shuō)明你屏幕上看到的就是“從背面正確閱讀”的結(jié)果是否還要鏡像就得看工廠接收習(xí)慣。你還可以順手測(cè)量一些參考坐標(biāo)。比如記錄一個(gè)角落定位孔在底面視圖里的坐標(biāo)然后回到 Gerber 設(shè)置里勾選對(duì)應(yīng)層鏡像后再生成然后檢查生成的 Gerber 里這個(gè)孔位的坐標(biāo)是否和你眼睛看到的方向一致。這個(gè)方法能幫你建立“視圖方向”和“文件坐標(biāo)”之間的對(duì)應(yīng)直覺(jué)用幾次之后就不會(huì)再搞反。之前在論壇看到一個(gè)朋友的案例他把 VB 之后看到的字符方向當(dāng)成了 Gerber 文件的最終方向結(jié)果樣板回來(lái)后字符全部反了。原因就是 Altium 的底面視圖會(huì)自動(dòng)幫你把文本按可讀方向渲染但導(dǎo)出的 Gerber 是純坐標(biāo)不會(huì)自動(dòng)做這個(gè)處理。所以這個(gè)方案更多是定位問(wèn)題用不是替代方案一。3.3 方案三用 CAM 工具做二次鏡像有些場(chǎng)景下問(wèn)題不出在 Altium而是工廠 CAM 環(huán)節(jié)。比如你從外部拿到一個(gè)別人的 PCB 源文件源工程已經(jīng)丟失只剩一份 Gerber這時(shí)候想在 Altium 里改設(shè)置根本沒(méi)有對(duì)象只能在文件層面補(bǔ)救。操作大概是把導(dǎo)出的底層文件導(dǎo)入 CAM 工具比如 Altium 自帶的 CAMtastic或者免費(fèi)的一些 Gerber 查看器都可以。選擇該文件執(zhí)行編輯-鏡像-按 X 軸或 Y 軸翻轉(zhuǎn)再另存為一個(gè)新文件。注意鏡像軸的選擇要看你和工廠的約定一般以左下角原點(diǎn)做水平翻轉(zhuǎn)比較常見(jiàn)。這個(gè)方案的優(yōu)勢(shì)是不動(dòng) PCB 源文件只對(duì)交付文件做后期加工。劣勢(shì)也很明顯容易漏層。底層銅鏡像了、底層阻焊忘了結(jié)果交貨時(shí)坐標(biāo)對(duì)不上。而且一旦出廠的是舊版 Gerber這個(gè)操作是不可逆的你只能另存副本不能覆蓋原文件。所以我只在極特殊情況下用這個(gè)方法比如某個(gè)文件是別人給的、源工程找不到只能在 Gerber 層面補(bǔ)救。3.4 方案四用腳本 / Output Job 做批量鏡像如果你管理的是一整套輸出規(guī)范比如公司所有板子都要出兩套 Gerber一套正向、一套鏡像備查那就不要每次手工點(diǎn)。把 Output Job 配置好配合腳本可以做到一鍵出兩套。Output Job 可以添加兩個(gè) Gerber 輸出通道分別指向不同的輸出目錄。每個(gè)通道對(duì)應(yīng)一份 Gerber Setup 設(shè)置其中一個(gè)通道把 Mirror 列全部勾上另一個(gè)通道保持正向。這套配置保存到工程模板里之后打開(kāi)任何一個(gè)新工程按一下 Process Outputs 就能同時(shí)生成兩套文件。如果項(xiàng)目多到連 Output Job 都不想手工改可以考慮寫一個(gè)很小的 DelphiScript 批處理腳本。大致邏輯是遍歷某個(gè)文件夾下的所有 PCB 文檔逐個(gè)打開(kāi)修改 Gerber Setup 里的層鏡像屬性再執(zhí)行輸出。Altium 的腳本接口里Gerber 設(shè)置是通過(guò) IOutputJob 和 IOutput 等對(duì)象操作底層接口在不同版本間有些變化這里不展開(kāi)完整代碼。穩(wěn)妥的做法是先在你自己的環(huán)境里錄制一次手工操作生成腳本再改循環(huán)部分這樣能避開(kāi)很多接口不兼容的坑。4. 實(shí)操記錄與參數(shù)驗(yàn)證4.1 一次完整的鏡像導(dǎo)出過(guò)程我在一個(gè)模擬項(xiàng)目 X 上完整走一遍給大家參考。板子是四層板頂層、內(nèi)層 2、內(nèi)層 3、底層客戶要求出底面鏡像的一套文件用于反面字符工藝。我的操作順序是先打開(kāi) Gerber Files 對(duì)話框在 Layers 頁(yè)顯示 Mirror 列然后勾選 Bottom Copper、Bottom Solder、Bottom Overlay、Bottom Paste 這四層同時(shí)把鉆孔文件里的 Drill Drawing 和 Drill Guide 也打開(kāi)。為什么鉆孔也要一起出因?yàn)樵?CAM 里驗(yàn)證鏡像層時(shí)必須拿鉆孔層和底層銅互相對(duì)坐標(biāo)否則你看不出鏡像是否真的生效。勾完之后我在 Advanced 頁(yè)把單位選成毫米格式選 2:5尾零填充選擇 Suppress trailing zeroes輸出目錄單獨(dú)建了 out_dir_gerber_mirror。生成完成后我打開(kāi) CAM 查看器導(dǎo)入各個(gè)光繪文件把 Bottom Copper 的鏡像層和 Drill 文件疊在一起在某一塊 BGA 區(qū)域選了一個(gè)孔查看它在兩個(gè)文件里的坐標(biāo)是否一致。正常情況下應(yīng)該是一致的因?yàn)?Altium 在鏡像底層的同時(shí)會(huì)保持鏡像層和非鏡像鉆孔層的相對(duì)位置。結(jié)果一致就可以放心發(fā)出去如果發(fā)現(xiàn)某層沒(méi)勾或者坐標(biāo)差了一個(gè)奇數(shù)倍格點(diǎn)馬上回去重出。4.2 驗(yàn)證鏡像正確性的三個(gè)手段第一個(gè)手段是文本方向檢查。在 CAM 工具里把鏡像過(guò)的底層絲印放大看字符串是否左右反了。假如設(shè)計(jì)里你本來(lái)寫的是 AB出圖后是 BA那說(shuō)明鏡像生效如果出圖后還是 AB你就得考慮是不是該層沒(méi)勾上或者這個(gè)文件本來(lái)就是從舊工程里帶出來(lái)的非鏡像備份。第二個(gè)手段是對(duì)齊檢查。把鏡像層和非鏡像層的同一條板邊對(duì)比看它們是否都沿著原點(diǎn)對(duì)齊。正常情況下板邊、定位孔、工藝邊都應(yīng)在同一坐標(biāo)范圍內(nèi)。如果你看到某個(gè)文件整體跑了半個(gè)板子那基本是鏡像軸選錯(cuò)或者原點(diǎn)設(shè)置不一致導(dǎo)致的。第三個(gè)手段是回讀檢查。Altium 也可以把生成的 Gerber 文件導(dǎo)入回 PCB Editor作為一個(gè)臨時(shí)板子來(lái)看。操作是 File - Import - Gerber導(dǎo)入鏡像過(guò)的文件后選中某個(gè)參考點(diǎn)觀察它相對(duì)原點(diǎn)是否處于預(yù)期位置。這個(gè)方法能把最終文件結(jié)果直接疊加到原設(shè)計(jì)上比在 CAM 里純看坐標(biāo)更直觀也更容易發(fā)現(xiàn)問(wèn)題。我在這一步上的經(jīng)驗(yàn)是驗(yàn)證不要偷懶。誤差在屏幕上肉眼很難看出來(lái)但 CAM 里的坐標(biāo)顯示是精確到小數(shù)點(diǎn)后四位的。每次出完 Gerber我至少會(huì)抽查三組關(guān)鍵坐標(biāo)包括一個(gè)板角、一個(gè)定位孔、一個(gè)靠近中心的器件焊盤。相對(duì)誤差超過(guò) 0.02mm 的都會(huì)重新排查絕不往下游發(fā)。5. 常見(jiàn)問(wèn)題與排查實(shí)錄為了讓這部分可以直接查閱我整理了一個(gè)常見(jiàn)問(wèn)題表。問(wèn)題現(xiàn)象可能原因優(yōu)先排查方法22.11 之后找不到鏡像勾選項(xiàng)Mirror 列默認(rèn)被隱藏在層列表表頭右鍵顯示 Mirror 列勾了鏡像但疊加后層錯(cuò)位只勾了部分層沒(méi)有做整套鏡像將底層銅、阻焊、字符、鉆孔配套一起鏡像出圖后字符方向仍然反的鏡像軸選擇不對(duì)或看的是非鏡像備份文件先 VB 查看背面確認(rèn)期望方向再重出從舊工程打開(kāi)后鏡像丟失新舊輸出引擎不兼容重建 Output Job按新版重新設(shè)置底層孔位和頂層孔位 CAM 里對(duì)不上坐標(biāo)格式精度太低或不同層用了不同格式統(tǒng)一 Advanced 頁(yè)格式為 2:4 或 2:5鏡像后的絲印文字可讀但銅箔圖形反了鏡像的是整個(gè)層而不僅僅是文字明確需求是“只鏡像字符”還是“整套層鏡像”第二條是個(gè)非常高發(fā)的問(wèn)題。很多項(xiàng)目里底層字符在 PCB 界面上看是正的用戶就覺(jué)得“我已經(jīng)處理好了”出 Gerber 時(shí)只勾了底層絲印鏡像沒(méi)管底層銅和鉆孔。結(jié)果工廠 CAM 一疊層發(fā)現(xiàn)底層絲印和底層銅錯(cuò)位最終成品字符壓到了焊盤上。字符壓焊盤不是絕對(duì)不行但如果事先沒(méi)溝通很容易被當(dāng)成設(shè)計(jì)失誤來(lái)回扯皮。再說(shuō)一個(gè)我遇到過(guò)多次的坑多人協(xié)作時(shí)的版本混亂。A 同事在 22.11 工程里生成了一份鏡像 GerberB 同事拿到手后覺(jué)得不對(duì)直接在文件夾里改了后綴復(fù)制了一份完全沒(méi)重新生成。最后送到板廠的文件名和內(nèi)容完全對(duì)不上。我的建議是鏡像文件作為交付物時(shí)最好在文件名里帶上工程項(xiàng)目名稱、板卡版本、版本號(hào)和增量號(hào)并且由一個(gè)人統(tǒng)一發(fā)出不要用共享文件夾裸奔。最后是坐標(biāo)原點(diǎn)的坑。鏡像時(shí)如果 PCB 原點(diǎn)設(shè)置不在板框左下角鏡像后的板框可能會(huì)跑到負(fù)象限。大多數(shù) CAM 工具對(duì)負(fù)坐標(biāo)也能處理但部分工廠的下游設(shè)備或拼板腳本對(duì)負(fù)值敏感會(huì)導(dǎo)致拼板時(shí)整體偏差。我通常會(huì)在出 Gerber 前把原點(diǎn)重新放到板框左下角或者在 Advanced 頁(yè)里勾選 Keep PCB origin保證所有輸出文件的起始坐標(biāo)一致。結(jié)尾收個(gè)經(jīng)驗(yàn)這些年和鏡像層打交道我最大的體會(huì)是版本更新不可怕真正費(fèi)時(shí)間的是舊經(jīng)驗(yàn)失效后不得不重新踩坑。22.11 之后 Altium 的界面更干凈代價(jià)是很多原來(lái)一眼可見(jiàn)的選項(xiàng)被藏了起來(lái)。只要記得去層列表表頭右鍵調(diào)出 Mirror 列再按“底層配套層整套鏡像”的原則操作大方向就不會(huì)錯(cuò)。如果你正在做的板子恰好需要兩類 Gerber 同時(shí)交付不妨提前把 Output Job 存成模板一正一反兩個(gè)通道都配好以后每次只要改板名和版本號(hào)就行。這一步前期花二十分鐘后面能省下幾十次重復(fù)勞動(dòng)。鏡像這件事說(shuō)穿了就是坐標(biāo)變換理解了它后面再遇到類似“某一層方向不對(duì)”的制造問(wèn)題你都能很快推回去。