
1. 從盲畫板子到AI 幫我盯細節(jié)這個項目到底在解決什么畫過 PCB 的人都有個共同體驗原理圖階段腦子清楚一到布局布線就開始失憶。某個去耦電容到底該放多近、某根差分線等長差了多少 mil、某個過孔的環(huán)寬夠不夠——這些細節(jié)在幾百個網絡里根本盯不過來。傳統(tǒng) EDA 工具能幫你做 DRC 檢查但它只認規(guī)則不認意圖。你設了線寬規(guī)則它就查線寬你沒設等長規(guī)則它就不管你差分對跑歪了。這個項目要干的事說白了就是給硬件設計流程裝一雙看得見的眼睛。不是讓 AI 替你畫板子——那玩意兒現(xiàn)在還不靠譜——而是讓 AI 在你畫的過程中實時看懂你正在做什么然后把你可能忽略的問題指出來。它看的是設計意圖不是死規(guī)則。我把它定位成一個設計副駕你負責決策它負責提醒。核心能力拆開來看是三層。第一層是視覺理解AI 需要看懂原理圖和 PCB 的圖形信息包括元件位置、走線拓撲、網絡連接關系。第二層是意圖推斷從圖形里推斷出你這段電路想干什么——是電源樹、是高速信號、還是模擬前端。第三層是風險提示基于推斷出的意圖對照該場景下的工程經驗給出建議。為什么這件事值得做因為硬件設計的痛點從來不是不會畫而是畫完了心里沒底。一個資深硬件工程師和一個新手的差距往往不在原理圖正確性上而在那些沒人告訴你但很重要的細節(jié)上。比如 M2 螺絲孔的過孔和環(huán)寬留多大、圓形 PCB 的拼板怎么處理、BMS 采樣線的走線要求——這些經驗散落在各個老工程師腦子里AI 輔助系統(tǒng)的價值就是把這些隱性知識顯性化、實時化。適合誰來參考這篇內容如果你是在畫板子時經常返工的硬件工程師、想把自己經驗沉淀成工具的技術負責人、或者對AIEDA這個方向感興趣的產品同學接下來的內容應該對你有用。我會把系統(tǒng)架構、視覺理解的具體實現(xiàn)、意圖推斷的邏輯、以及實測中踩的坑都攤開講。2. 讓 AI看懂原理圖圖形解析與語義提取的完整鏈路2.1 為什么不能直接把圖片丟給多模態(tài)模型很多人第一反應是現(xiàn)在多模態(tài)模型這么強直接把原理圖截圖丟進去問這里有什么問題不就行了我實測過這條路走不通原因有三個。第一分辨率與信息密度矛盾。一張 A3 大小的原理圖導出成 2000px 寬的圖片上面幾百個元件標號、引腳名、網絡標簽模型根本看不清。你放大局部截圖又丟失了全局連接關系。第二模型對工程符號的理解不穩(wěn)定。電阻、電容、電感這些標準符號還好但不同公司的原理圖庫符號千奇百怪模型經常把 TVS 管認成普通二極管。第三最關鍵的是連接關系。原理圖的核心信息不是畫了什么符號而是誰連到誰。圖片里兩個引腳之間畫了根線模型能看出來有線但很難可靠地提取出網絡拓撲。所以正確的做法是不解析圖片解析 EDA 文件本身。原理圖文件無論是 AD 的 .SchDoc、還是立創(chuàng) EDA 的工程文件本質上是結構化的元件、引腳、網絡、連線都是數(shù)據(jù)對象。我們要做的是把這些結構化數(shù)據(jù)提取出來轉換成 AI 能理解的語義表示。2.2 從 EDA 文件到語義圖的轉換步驟整個鏈路我拆成四步每一步都有坑。第一步文件解析。不同 EDA 工具的文件格式差異很大。AD 用的是 OLE 復合文檔格式立創(chuàng) EDA 用的是 JSON 結構。我的做法是先做一層抽象定義一套中間表示IR把不同格式統(tǒng)一成元件列表 網絡列表 連接關系三張表。這一步不需要 AI純工程活但決定了后面所有事情的上限。第二步網絡拓撲構建。把每個網絡上的所有引腳找出來構建成圖結構。節(jié)點是引腳邊是電氣連接。這里要注意網絡標簽的傳遞性——原理圖里經常用網絡標簽代替直接連線A 頁的VCC_3V3和 B 頁的VCC_3V3是同一個網絡解析時必須合并。第三步功能塊識別。這是 AI 介入的第一個點。把網絡拓撲圖切成若干功能子圖識別出這是一個 LDO 電源電路這是一個晶振電路這是一個 RS485 收發(fā)電路。我的做法是用規(guī)則先做粗分類比如包含穩(wěn)壓芯片且輸出有電容的大概率是電源再用小模型做細分類。第四步語義描述生成。把每個功能塊轉換成自然語言描述喂給大模型做分析。比如U3 是一顆 LDO輸入 5V輸出 3.3V輸出端有 10uF 和 100nF 電容負載是 MCU 和傳感器。# 網絡拓撲構建的核心邏輯示意 def build_net_graph(schematic_ir): net_graph {} for net in schematic_ir.nets: pins [] for pin_ref in net.pin_refs: component schematic_ir.get_component(pin_ref.comp_id) pin component.get_pin(pin_ref.pin_name) pins.append({ comp: component.designator, pin: pin.name, type: pin.electrical_type # input/output/power/passive }) net_graph[net.name] pins return net_graph2.3 實測中發(fā)現(xiàn)的解析陷阱有幾個坑我踩得比較深這里直接給結論。陷阱一電源網絡的假連接。很多原理圖里所有 GND 符號看起來是連在一起的但實際上是通過網絡標簽隱式連接的。如果你只按圖形連線解析會漏掉大量連接。必須把網絡標簽當作一等公民處理。陷阱二多單元器件。一個運放芯片可能有 4 個單元分別畫在原理圖不同位置。解析時必須按器件單元組合識別否則會把同一個芯片的 4 個部分當成 4 個獨立器件。陷阱三總線與位號。DATA[0..7]這種總線展開后是 8 根獨立網絡。AI 分析時如果按總線整體處理會丟失位序信息如果完全展開又會淹沒在細節(jié)里。我的做法是保留總線語義但在需要時能下鉆到具體位。提示解析階段不要急著上 AI。先把結構化數(shù)據(jù)做干凈AI 的效果上限完全取決于輸入數(shù)據(jù)的質量。我見過太多項目在解析都沒做對的情況下就急著調模型最后效果一塌糊涂還找不到原因。3. PCB 視覺理解從走線圖形到工程意圖的推斷邏輯3.1 PCB 和原理圖的本質區(qū)別原理圖是邏輯視圖PCB 是物理視圖。這個區(qū)別決定了 AI 理解 PCB 的難度高一個量級。原理圖里兩個引腳連不連是明確的——有線就是連沒線但有同名網絡標簽也是連。PCB 里兩個焊盤之間有沒有電氣連接取決于銅箔是否連續(xù)。而銅箔的形狀是任意多邊形走線可以拐彎、可以換層、可以通過過孔。更麻煩的是PCB 上還有大量非電氣信息絲印、阻焊、鋼網、機械孔。AI 必須能區(qū)分這是信號走線和這是絲印裝飾線。所以 PCB 的視覺理解核心是分層解析 幾何計算 意圖推斷三步。3.2 分層解析把 PCB 拆成可理解的圖層PCB 文件Gerber 或 EDA 原生格式本質上是多層二維圖形的疊加。我的解析策略是按功能分層圖層類型包含內容AI 關注點頂層/底層銅箔走線、焊盤、鋪銅信號完整性、載流能力內層銅箔電源層、地層、信號層電源完整性、參考平面絲印層元件標號、極性標記可讀性、裝配錯誤阻焊層開窗區(qū)域焊接可靠性鉆孔層過孔、安裝孔機械配合、環(huán)寬機械層板框、拼板結構配合解析時銅箔層用多邊形布爾運算提取走線中心線和寬度鉆孔層提取孔位和孔徑絲印層做文字識別。這些幾何信息再和原理圖的網絡信息做關聯(lián)——通過焊盤位置匹配把 PCB 上的每個焊盤對應到原理圖的引腳。3.3 意圖推斷AI 怎么知道你在畫什么這是整個系統(tǒng)最有意思的部分。同樣一段走線在不同場景下意義完全不同。一根 10mil 寬的線如果是電源線可能太細如果是普通信號線完全夠用。AI 必須結合上下文判斷。我的推斷邏輯分三層。第一層基于網絡的意圖。從原理圖繼承過來的網絡名是強信號。VCC_3V3、GND、USB_DP、CAN_H這些命名直接暴露了網絡用途。即使命名不規(guī)范也能從連接關系推斷——連到 MCU 電源引腳的網絡大概率是電源。第二層基于幾何的意圖。走線寬度、過孔數(shù)量、換層次數(shù)、是否等長、是否包地這些幾何特征能反映設計者的意圖。比如一對走線嚴格等長、間距恒定、有包地過孔那大概率是差分對或高速信號。第三層基于器件的意圖。走線連接的器件類型也提供信息。連到 BMS 采樣芯片的走線大概率是精密模擬信號對噪聲敏感連到功率 MOS 的走線大概率是大電流路徑對載流和散熱敏感。# 意圖推斷的簡化邏輯 def infer_trace_intent(trace, net_info, connected_components): intent {type: unknown, confidence: 0.0} # 網絡名強信號 if any(kw in net_info.name.upper() for kw in [VCC, VDD, PWR]): intent {type: power, confidence: 0.9} elif any(kw in net_info.name.upper() for kw in [GND, VSS]): intent {type: ground, confidence: 0.95} elif any(kw in net_info.name.upper() for kw in [DP, DM, TX, RX, CLK]): intent {type: high_speed, confidence: 0.7} # 幾何特征補充 if trace.width 6 and intent[type] power: intent[warning] 電源走線可能過細 return intent3.4 一個真實案例BMS 采樣線的識別我之前做過一個 BMS 板子的分析。BMS 的電壓采樣線有個特點從電池正極經過分壓電阻到采樣芯片走線要盡量短、盡量遠離功率路徑、最好做差分或包地處理。AI 系統(tǒng)識別出這樣一組走線從連接器出發(fā)經過一串電阻最終到一顆多通道 ADC 芯片。網絡名是CELL_1到CELL_16。幾何上這些走線寬度都是 8mil長度差異較大且有一段和功率 MOS 的走線平行距離超過 20mm。系統(tǒng)給出的提示是檢測到 16 路電池采樣線其中 CELL_7 到 CELL_10 的走線與功率路徑平行距離較長建議增加間距或插入地線隔離以減少開關噪聲耦合。這個提示不是 DRC 能給出的因為 DRC 只查間距規(guī)則不查和什么信號平行。注意意圖推斷的準確率高度依賴訓練數(shù)據(jù)和規(guī)則庫的覆蓋度。我的經驗是先把常見電路類型電源、晶振、復位、通信接口、采樣的規(guī)則做扎實覆蓋 80% 的日常場景剩下的長尾再慢慢補。不要一上來就追求通用智能。4. 把 AI 建議落到實處的交互設計什么時候提醒、怎么提醒4.1 提醒時機比提醒內容更重要一個設計輔助系統(tǒng)如果提醒太多用戶會直接關掉提醒太少又沒價值。我在這上面反復調了很多輪最后總結出一個原則在用戶剛做完一個決策的時候提醒而不是在檢查階段提醒。什么意思比如用戶剛拉完一根電源線這時候提醒這根線寬度可能不夠是有效的因為用戶腦子里還想著這根線改起來成本低。如果等用戶畫完整個板子再統(tǒng)一檢查面對幾十條警告用戶根本不想改。具體實現(xiàn)上我用了三個觸發(fā)點操作后延遲觸發(fā)用戶完成一次走線/放置操作后延遲 2 秒觸發(fā)分析。延遲是為了避免用戶連續(xù)操作時頻繁打斷。階段性觸發(fā)用戶完成一個功能塊比如畫完整個電源部分后做一次匯總分析。手動觸發(fā)用戶主動點擊檢查按鈕做全板分析。4.2 建議的呈現(xiàn)方式分級 可操作提醒內容我分了三檔級別觸發(fā)條件呈現(xiàn)方式示例提示可能有優(yōu)化空間側邊欄灰色文字此去耦電容距離芯片較遠建議靠近電源引腳警告可能影響功能側邊欄黃色高亮差分對長度差 15mil超過建議值 5mil嚴重大概率有問題彈窗 高亮定位電源網絡 VCC_5V 走線寬度 6mil載流能力不足關鍵是每條建議都必須可操作。不要只說這里有問題要說這里有什么問題、為什么是問題、建議怎么改。比如不要只說過孔太小要說此過孔孔徑 0.2mm環(huán)寬 0.15mm對于 1A 電流偏小建議孔徑 0.3mm、環(huán)寬 0.2mm。4.3 避免狼來了誤報控制策略誤報是這類系統(tǒng)的頭號殺手。我統(tǒng)計過如果誤報率超過 30%用戶就會開始忽略所有提醒??刂普`報我用了幾個策略。策略一置信度閾值。每條建議帶一個置信度分數(shù)低于閾值的直接不顯示。閾值根據(jù)建議級別調整——嚴重級別的閾值可以低一點寧可誤報不可漏報提示級別的閾值要高寧可不報不可煩人。策略二上下文豁免。有些問題在特定上下文下是合理的。比如細走線在信號網絡上完全正常只有在電源網絡上才是問題。系統(tǒng)必須結合網絡類型判斷。策略三用戶反饋閉環(huán)。每條建議旁邊有有用/無用按鈕用戶的反饋用來調整規(guī)則權重。一個規(guī)則如果被連續(xù)標記為無用自動降權。// 建議過濾邏輯示意 function filterSuggestions(suggestions, context) { return suggestions.filter(s { // 置信度過濾 if (s.confidence getThreshold(s.level)) return false; // 上下文豁免 if (s.rule trace_width context.netType signal) return false; if (s.rule via_size context.current 0.5) return false; // 用戶歷史反饋 if (getRuleWeight(s.rule) 0.3) return false; return true; }); }4.4 和 EDA 工具的集成方式集成方式決定了用戶的使用成本。我試過三種方案。方案一獨立應用 文件監(jiān)聽。AI 系統(tǒng)作為獨立進程運行監(jiān)聽 EDA 工程文件的保存事件每次保存后分析并彈出建議窗口。優(yōu)點是實現(xiàn)簡單、不依賴 EDA 的 API缺點是實時性差用戶要切窗口。方案二EDA 插件。直接做成 EDA 的插件嵌入到工具欄和側邊欄。優(yōu)點是體驗好、實時性高缺點是要針對每個 EDA 工具單獨開發(fā)AD、立創(chuàng) EDA、KiCad 的插件體系完全不同。方案三混合方案。核心分析引擎獨立運行通過本地接口和 EDA 插件通信。插件負責采集操作事件和展示建議引擎負責分析。這是我最終采用的方案兼顧了復用性和體驗。提示如果你也想做類似工具建議從方案一開始驗證核心價值確認 AI 建議真的有用之后再投入做插件集成。我見過太多項目在集成上花了大量時間結果核心分析能力沒打磨好最后不了了之。5. 實測數(shù)據(jù)與踩坑記錄這套系統(tǒng)到底靠不靠譜5.1 測試集與評估方法我用自己過去兩年的 12 個真實項目做了回測涵蓋 MCU 控制板、BMS 采樣板、電源模塊、通信接口板四類。評估方法是把 AI 給出的建議和資深工程師的人工 review 結果做對比統(tǒng)計命中率、誤報率、漏報率。項目類型建議總數(shù)有效建議誤報漏報有效命中率MCU 控制板473116866%BMS 采樣板6348151276%電源模塊38299676%通信接口板5235171067%合計200143573672%72% 的有效命中率說實話不算高但已經超過有用的臨界點。關鍵是誤報的 57 條里大部分是提示級別的用戶掃一眼就能判斷不會造成困擾。嚴重級別的誤報只有 4 條這個數(shù)字可以接受。5.2 踩得最深的三個坑坑一把規(guī)則檢查包裝成AI 分析。項目初期我為了快速出效果把很多 DRC 能查的規(guī)則包裝成 AI 建議。結果用戶反饋這不就是 DRC 嗎我自己會跑。教訓是AI 的價值必須體現(xiàn)在 DRC 查不了的地方——意圖理解、上下文判斷、經驗性建議。凡是能用確定性規(guī)則表達的就不要用 AI??佣雎粤嗽O計階段的差異。同一個問題在布局階段提醒和在布線階段提醒效果完全不同。比如去耦電容要靠近芯片這個建議在布局階段提醒用戶會調整位置在布線階段提醒用戶已經沒法改了。系統(tǒng)必須知道用戶當前處于哪個設計階段只提醒當前階段能改的問題??尤P突糜X導致的錯誤建議。大模型有時候會一本正經地胡說八道。比如它可能建議這個電容應該用 100nF但實際上電路里已經有一個 100nF 了它沒看到。解決辦法是所有涉及具體數(shù)值的建議必須從解析出的數(shù)據(jù)里取不能讓模型自由發(fā)揮。模型只負責判斷這里可能有問題具體數(shù)值和建議由規(guī)則引擎生成。5.3 用戶實際使用后的反饋我找了 5 位硬件工程師試用了一個月收集到的反饋比較真實。正面反饋集中在兩點一是幫我發(fā)現(xiàn)了幾個我確實忽略的問題比如一個工程師的板子上有個電源網絡的過孔數(shù)量不夠他之前沒意識到二是新手友好一位剛入行的工程師說這個系統(tǒng)幫他建立了畫板子要注意什么的認知。負面反饋主要是建議太多的時候會煩以及有些建議我知道但就是不想改。后者其實不是系統(tǒng)的問題是工程現(xiàn)實——有時候為了趕進度明知有問題也得先這樣。系統(tǒng)能做的是把問題記下來而不是強迫用戶改。6. 從看得見到看得懂下一步能擴展的方向6.1 從單板分析到多板協(xié)同現(xiàn)在的系統(tǒng)只能看單塊板子。但實際項目里一塊主板可能通過連接器連到多塊子板信號跨板傳輸。下一步我想做的是跨板分析——把連接器兩邊的網絡關聯(lián)起來分析跨板信號的完整性。比如主板上的 SPI 信號經過連接器到子板連接器的引腳定義、走線長度、阻抗匹配都會影響信號質量。6.2 從設計輔助到設計生成看得見是第一步看得懂是第二步能生成是第三步。當系統(tǒng)積累了足夠多的設計意圖和對應實現(xiàn)方案后就可以嘗試做半自動生成。比如用戶說我要一個 5V 轉 3.3V 的電源最大 1A 電流系統(tǒng)自動生成原理圖并給出布局建議。這一步的難點不在生成而在驗證——生成的設計必須經過嚴格的規(guī)則檢查才能給用戶。6.3 經驗庫的持續(xù)沉淀這套系統(tǒng)最有價值的資產不是模型而是積累的經驗規(guī)則庫。每一條規(guī)則背后都是一個真實的工程教訓。我現(xiàn)在的做法是每次人工 review 發(fā)現(xiàn)一個 AI 沒發(fā)現(xiàn)的問題就把它轉化成一條新規(guī)則。規(guī)則庫越豐富系統(tǒng)的價值越高。這個沉淀過程是長期的但也是最有護城河的。6.4 一個具體的擴展實驗圓形 PCB 的拼板建議最近在做一個圓形 PCB 的項目發(fā)現(xiàn)圓形板子的拼板是個高頻痛點。圓形板子怎么拼、工藝邊怎么加、V-CUT 怎么走這些在標準矩形板子上不是問題在圓形板子上全是問題。我試著讓系統(tǒng)識別板框形狀如果是圓形或異形就觸發(fā)專門的拼板建議規(guī)則。實測下來這個功能對做消費類電子的工程師特別有用因為他們的板子經常是圓形的。# 板框形狀識別與拼板建議觸發(fā) def analyze_board_outline(outline_polygon): # 計算形狀特征 area outline_polygon.area perimeter outline_polygon.perimeter circularity 4 * math.pi * area / (perimeter ** 2) if circularity 0.85: return { shape: circular, suggestion: 建議采用陣列拼板工藝邊寬度不小于 5mm V-CUT 僅用于直線段圓弧段建議用郵票孔 } elif circularity 0.5: return { shape: irregular, suggestion: 異形板建議做橋連拼板注意橋連點強度 } return {shape: rectangular, suggestion: None}這套東西做下來我最大的體會是AI 在硬件設計里的價值不在于替代工程師而在于把那些老工程師覺得理所當然、新工程師完全不知道的隱性知識變成實時的、可操作的提示。它不需要 100% 準確只需要在關鍵時刻提醒你一下讓你少返一次工這個價值就已經成立了。