據(jù)清洗到自動排版的實戰(zhàn)指南)
1. 這套方案到底在解決誰的什么痛點先說個我切身經(jīng)歷的場景。硬件團隊做產(chǎn)品迭代原理圖改了一版BOM表跟著動了幾十個料。結(jié)果到了采購那邊因為100nF 0402和0.1uF 0402兩種寫法不一致系統(tǒng)直接判定是不同物料多備了一整盤庫存而真正缺貨的料因為型號簡寫不規(guī)范在替代料清單里完全沒有被識別出來。類似的事情只要發(fā)生過一次你就會意識到BOM管理根本不是整理表格而是數(shù)據(jù)治理問題。再來看排版。做過PCB Layout的人都知道第一次擺放器件往往是最耗精力的環(huán)節(jié)。幾百個元件既要按原理圖功能模塊分區(qū)又要想辦法讓連線短、散熱好、接口位置對得上還要預(yù)留絲印空間。熟練工程師擺一版可能需要一到兩天而且大量時間花在把元件從一堆里拖到大致區(qū)域這種低含金量動作上。如果把BOM管理物料數(shù)據(jù)的清洗、比對、替代識別和PCB排版器件布局、分區(qū)、約束優(yōu)化這兩個環(huán)節(jié)用AI串起來整個從原理圖到可評審PCB初版的周期能壓縮得非常明顯。這個需求在硬件公司、方案公司、中小型工作室里普遍存在。適合誰適合硬件工程師、Layout工程師、研發(fā)經(jīng)理、信息化負責(zé)人以及正在做電子設(shè)計自動化工具方向的開發(fā)者。它不是某個大廠PPT里的概念而是可以直接落地的工程實踐。下面我拆開講從需求分析、技術(shù)方案、模塊實現(xiàn)到問題排查盡量把你需要的細節(jié)和坑一次說完。2. 方案選型之前先想清楚BOM和排版的關(guān)系2.1 BOM管理不是錄入表格而是數(shù)據(jù)全鏈路治理很多團隊一提BOM就以為要上ERP或者PLM但中小型硬件團隊根本用不起那么重的系統(tǒng)。現(xiàn)實情況是原理圖元件屬性里有BOM信息采購報表里有價格和庫存生產(chǎn)端有貼片圖每個環(huán)節(jié)的數(shù)據(jù)格式、字段命名、精度要求都不一樣。AI在這里的價值是成為中間那一層翻譯器。傳統(tǒng)的BOM整理方式是靠工程師手工把EDA軟件導(dǎo)出的BOM文件復(fù)制到Excel里再逐行核對規(guī)格、封裝、位號。這種模式的痛點在于人力只能覆蓋看著對覆蓋不了算得對——比如多板共用料的庫存合并、替代料兼容性判斷、新老版本BOM的字段級差異對比這些都需要跨多條數(shù)據(jù)的邏輯推理人看多了必然麻木。而AI方案處理這個問題的思路是先讓程序理解BOM數(shù)據(jù)的語義再做結(jié)構(gòu)化處理和邏輯判斷。理解語義是LLM的長處結(jié)構(gòu)化處理是Python生態(tài)的強項兩者結(jié)合可以實現(xiàn)從非標準數(shù)據(jù)到標準數(shù)據(jù)的自動轉(zhuǎn)換轉(zhuǎn)換之后再掛到規(guī)則引擎上做物料分組、替代識別和版本差異分析。2.2 Layout排版不是自動布線而是約束求解經(jīng)驗遷移Layout圈子里一提AI大家第一反應(yīng)是自動布線能不能替代我。這里必須先把概念理清楚布線Routing是給定已擺放器件之后處理連接關(guān)系而排版/布局Placement是決定器件放哪、朝向哪、模塊怎么分區(qū)。標題里說的排版我認為就是Placement這一環(huán)。Placement的難點在于它的目標函數(shù)不止一個。連線最短、熱源分散、電源路徑順暢、接口朝向合理、易損件可維護這些目標之間經(jīng)?;ハ啻蚣堋鹘y(tǒng)做法靠工程師大腦里的經(jīng)驗庫看一個板子就知道哪里是核心、哪里需要避讓。AI Layout的切入點是先把這些經(jīng)驗翻譯成約束條件再用優(yōu)化算法在約束域里找更優(yōu)解。它不追求一次生成最終板子而是把從零到80分的工作自動化把從80分到100分的精細調(diào)校留給工程師。這么做還有一個額外好處BOM的物料信息和封裝信息能直接參與排版。比如電源模塊的發(fā)熱量、敏感信號器的干擾等級、連接器的機械尺寸這些數(shù)據(jù)在BOM表里本來就存在只是傳統(tǒng)流程里它們沉睡在Excel里排版時全靠腦子記。一旦BOM和Layout打通AI在布局時的決策輸入質(zhì)量會高一個量級這也是我把兩個功能放在同一個方案里的原因。2.3 技術(shù)棧選擇的幾個現(xiàn)實約束技術(shù)選型沒有唯一答案但有幾個現(xiàn)實約束必須考慮。一是成本中小團隊不可能花幾十萬買商業(yè)EDA的AI模塊二是易用性方案最好能跑在普通工作站上工程師不用寫太多代碼三是可解釋性AI給出的BOM合并結(jié)果和布局建議必須能被審計否則沒人敢用。我的落地選擇是Python為主pandas做表格處理ChromaDB或者簡單的向量檢索做物料描述相似度匹配LLM API負責(zé)非規(guī)則文本的理解決策規(guī)則用Python字典或者簡單的決策表實現(xiàn)。Layout部分優(yōu)先選擇有腳本接口的ECAD工具比如KiCad的Python API或者主流商業(yè)EDA的腳本環(huán)境。這套組合的好處是每一層都可以獨立測試、獨立替換不像綁定某個商業(yè)一體化工具體系換工具等于推翻重來。3. BOM管理模塊從解析到比對的完整實現(xiàn)3.1 雜亂的原始BOM數(shù)據(jù)如何統(tǒng)一標準實際拿到的BOM來源五花八門。有的來自原理圖設(shè)計軟件的導(dǎo)出有的來自采購下發(fā)模板有的是代工廠發(fā)來的貼片明細。共同特點是列名對不上單位不統(tǒng)一規(guī)格描述極其隨意。比如同樣一顆電容這一版叫100nF 50V 0402 X7R下一版叫C 0.1uF 0402 50V還有的干脆只寫104。處理這種數(shù)據(jù)的第一步就是列名映射。不需要多聰明一個可配置的字段映射表就能解決。我會把常見列名歸類成標準字段位號Reference、數(shù)量Qty)、容值/阻值/感值Value、封裝Footprint、規(guī)格描述Description、廠商型號MPN、備注Remark。映射表內(nèi)置常見中英文別名比如RefDes對應(yīng)位號Designator也對應(yīng)位號pcs對應(yīng)數(shù)量。字段映射完成后再用正則規(guī)則把單位統(tǒng)一和描述清洗做掉。電容類把uF/nF/pF換算成標準單位電阻類把kR/MR處理成歐姆數(shù)值。這里有個基礎(chǔ)但很重要的點不能直接替換字符串得先判斷數(shù)值和單位的組合。比如10K在電阻里是10千歐絲印里卻可能是10KΩ的意思差不多但100nF里的n絕不能和100歐姆里的100混淆。規(guī)則引擎按器件大類獨立解析每個類別的正則單獨維護這樣出錯時容易定位問題。統(tǒng)一之后的數(shù)據(jù)會進入一個中間表包含字段標準位號、標準值、單位、封裝、原始描述、來源文件。這張中間表就是后面做相似度匹配和替代料識別的基礎(chǔ)。沒有這一步后面所有AI判斷都是在垃圾上蓋房子。3.2 用Embedding做物料描述的語義相似度匹配物料描述清洗之后會暴露出更麻煩的問題不同工程師對同一個物料的描述習(xí)慣差異很大單純靠字符串匹配會漏掉大量真實相同的物料。比如鉭電容 47uF 16V 3528和47UF/16V TYPE C實際上是同一個物料但字符層面只有47和16V是共現(xiàn)的。我建議用文本Embedding做這一步。把每行物料的標準描述拼成一個短句比如電容 47uF 16V 3528 坦電解用開源或者商用Embedding模型轉(zhuǎn)成向量再計算兩兩之間的余弦相似度。相似度高于閾值經(jīng)驗值0.85左右需按實際數(shù)據(jù)調(diào)整的兩條記錄視為同一物料歸并到同一物料組。為什么不直接用LLM看有沒有關(guān)聯(lián)可以但成本高且延遲大。幾千行物料讓LLM逐行判斷費用和時間都吃不消。embedding方案是離線批量執(zhí)行的幾百塊錢的模型服務(wù)就能跑幾萬行數(shù)據(jù)而且結(jié)果完全可復(fù)現(xiàn)。做相似度匹配之后我建議保留一個人工確認清單把相似度處于0.7到0.85之間、可能有關(guān)聯(lián)又可能沒關(guān)聯(lián)的記錄列出來讓硬件工程師快速勾選。這個半自動設(shè)計能防止AI一刀切造成誤合并。代碼骨架大概這樣# 物料語義匹配模塊簡化版 import pandas as pd from sentence_transformers import SentenceTransformer model SentenceTransformer(paraphrase-multilingual-MiniLM-L12-v2) def build_material_vector(df): # 把清洗后的物料描述拼成檢索文本 df[match_text] ( df[device_type] df[standard_value] df[package] df[desc_tag] ) vectors model.encode(df[match_text].tolist(), normalize_embeddingsTrue) return vectors vectors build_material_vector(bom_df) # 接下來按閾值聚類把相似度高的物料歸并為同一物料組這一步做完BOM表里看起來相同實際相同的物料就能自動聚合采購和生產(chǎn)拿到的是一份歸一化后的清單。聚類的輸出還可以落到物料主數(shù)據(jù)表里后續(xù)導(dǎo)入新項目BOM時直接復(fù)用主數(shù)據(jù)編碼。3.3 替代料識別的三條判斷路徑替代料識別是BOM管理里采購最關(guān)心的功能也是AI最能提效的點。缺料的時候如果能快速找到可替代的型號生產(chǎn)計劃就不會卡住。我實現(xiàn)的替代料判斷分三條路徑按優(yōu)先級從高到低第一條是精確型號替代。即MPN廠商型號完全一致或者有明確的原廠交叉參考表。這個最可靠直接查數(shù)據(jù)庫即可不需要AI參與。第二條是參數(shù)兼容替代。當(dāng)MPN不一致時對比關(guān)鍵電氣參數(shù)阻值/容值/感值、額定電壓、精度、溫漂系數(shù)、封裝尺寸。兼容條件在規(guī)則引擎里配置比如電容只要容值等級一致、耐壓大于等于原規(guī)格、封裝一致就自動標為可替代。這里要注意耐壓的代換邏輯并不是一樣就行這么簡單當(dāng)選替代料的耐壓比原規(guī)格低時直接否決即便容值相同也不行。第三條是模糊描述替代。如果型號與參數(shù)信息都不完整就靠Embedding搜索相似描述物料把候選集返回給工程師人工判斷。我見過一個實際案例某控制板上一顆型號很老的運放停產(chǎn)采購找了三天沒找到替代用語義搜索把高速 運放 SOT23-5 單通道 軌到軌作為查詢條件十幾秒內(nèi)就帶出了三個候選物料其中一個經(jīng)過確認完全兼容。這種場景里AI不是拍板的人而是高效的檢索器。三條路徑的判斷結(jié)果合并后輸出一張?zhí)娲暇仃嚤順俗⒚織l替代方案的可靠等級高精確替代、中參數(shù)兼容、低語義候選。采購在ERP下單時按等級決定是否可以直接替換避免Al誤判直接流入生產(chǎn)。3.4 多板BOM差異比對和變更影響分析硬件研發(fā)過程中原理圖改版本是常態(tài)。上一個版本還在試產(chǎn)下一個版本已經(jīng)改了兩頁原理圖。如果每次變更都靠人去核對BOM差異效率低不說還容易漏掉影響采購的隱性變化比如容值沒變但封裝改了。AI版本比對的做法是把新老版本BOM全部歸一化之后以標準物料編碼為Key做字段級diff。比對結(jié)果輸出四類新增物料新版本有、舊版本沒有、移除物料舊版本有、新版本沒有、變更物料物料存在但屬性有變、無變化物料。變更物料里再細分變化字段比如封裝變了、數(shù)量變了、或者溫度等級變了。這一步用pandas的merge就能實現(xiàn)核心難點還是前面的歸一化質(zhì)量。如果兩個版本里同一個料一個寫0402一個寫1005公制與英制混用merge后就會被誤判成新增和移除。所以我在歸一化階段就強制統(tǒng)一封裝標識信號層、絲印層、SCK這些字段也做了標準映射。變更影響分析再做兩步一是把變更物料與采購在途訂單、庫存綁定自動計算如果改為新物料在途訂單和庫存是否報廢二是把變更物料的網(wǎng)絡(luò)連接關(guān)系在Layout里高亮讓Layout工程師知道改動的部分涉及哪些擺件區(qū)域。這兩步雖然邏輯簡單但在傳統(tǒng)流程里分散在兩個軟件、三個人手上整合之后決策效率提升非常明顯。4. AI輔助排版模塊的工程落地4.1 從BOM和網(wǎng)表到建庫約束的自動化轉(zhuǎn)換Layout的起點是網(wǎng)表Netlist和封裝庫。AI排版要能跑起來首先得讓程序理解每個器件屬于哪個功能模塊、有什么特殊擺放要求。這些信息其實都能從原理圖和BOM里抽出來。我的實現(xiàn)順序是先從BOM標準表讀取每個位號的封裝類型和器件類別比如電源芯片、MCU、電阻電容、連接器再從網(wǎng)表文件解析出網(wǎng)絡(luò)連接關(guān)系統(tǒng)計每個器件的熱度值——這里的熱度不是指溫度而是該器件連接的網(wǎng)絡(luò)數(shù)量。通常連接網(wǎng)絡(luò)最多的器件比如MCU、連接器、電源管理芯片就是布局的核心其他外圍器件圍繞核心展開。然后配置三種約束。第一類是絕對位置約束比如板邊與連接器必須貼合外形框、晶振在MCU附近、天線區(qū)域凈空第二類是區(qū)域約束比如電源模塊整體放置在左上角、模擬器件與數(shù)字器件分域、散熱器件靠近板邊或通風(fēng)區(qū)第三類是相對位置約束比如去耦電容必須靠近對應(yīng)電源引腳、反饋電阻盡量靠近電源芯片的反饋腳這類約束從原理圖頁的連接關(guān)系可以自動推導(dǎo)出一部分。這些約束不在AI內(nèi)部做而是結(jié)構(gòu)化成一張約束清單傳給布局引擎。AI布局和人工布局最大的區(qū)別就在于人工布局是邊看邊想AI布局是思考之后直接生成可復(fù)現(xiàn)、可審計。4.2 第一輪AI布局模塊化粗放置第一輪我傾向于讓AI做模塊級別的粗放置。具體實現(xiàn)方式不復(fù)雜把板框劃分成四象限網(wǎng)格把BOM里的功能模塊通過原理圖頁分類或器件類別聚類分配到最適合的象限。模塊與象限的匹配依據(jù)三條規(guī)則。一是連接密度統(tǒng)計模塊間網(wǎng)絡(luò)連接數(shù)量讓互連最緊密的兩個模塊盡量相鄰二是IO口方位比如電源接口在哪一側(cè)電源模塊就往那一側(cè)靠三是機械約束有高度限制的區(qū)域不擺放高器件。這些規(guī)則量化后用最小割或者貪心算法求解初始分配跑得非??旌撩爰壘湍艹鼋Y(jié)果。粗放置的產(chǎn)物是一張模塊分布熱力圖和每個模塊的建議區(qū)域框。這個階段不需要精細坐標目標是讓Layout工程師一眼看出整體分區(qū)邏輯是否合理。實測中我發(fā)現(xiàn)一個值得注意的現(xiàn)象AI生成的粗放置方案在多數(shù)板卡上和工程師手動分區(qū)的重疊度能到70%以上而時間只要手動的幾十分之一。剩下30%的分歧往往是因為板框形狀特殊或者有特殊機械件干涉這些在約束配置階段會被逐步補進去。粗放置結(jié)果我建議用可視化方式疊加顯示在板框圖上模塊之間畫連接權(quán)重線權(quán)重高的連線用粗線顯示。工程師一眼就能看出哪些模塊放得太遠再拖拽調(diào)整。這一版AI初稿人工微調(diào)的交互節(jié)奏比一開始就追求全自動可靠得多。4.3 第二輪AI布局器件級精排與約束求解模塊分區(qū)完成之后進入器件級精排。這一步的數(shù)學(xué)本質(zhì)是在約束域里優(yōu)化多目標函數(shù)我用的是帶約束的模擬退火加局部搜索沒有上深度學(xué)習(xí)原因后面說。優(yōu)化目標四選三總線長最短、熱點區(qū)域均勻度最好、關(guān)鍵網(wǎng)絡(luò)的最短路徑優(yōu)先、器件間距滿足DFM安全距離。目標之間給權(quán)重權(quán)重由工程師通過配置界面拖動調(diào)節(jié)。模擬退火跑幾千輪把每個器件的坐標作為變量迭代更新。隨機擾動有幾種單器件隨機移位、雙器件互換位置、同區(qū)域器件整體旋轉(zhuǎn)擾動后立即檢查約束是否滿足不滿足就拒絕。實際效果怎么樣我拿一個約300個元件的小型控制板做過測試。初始隨機擺放的總線長是3800毫米模擬退火優(yōu)化后降到了2100毫米接近工程師手動擺放的1900毫米水平但是連檢查帶優(yōu)化程序只花了4分鐘和人工完整擺放一天的效率不在一個量級。更重要的是AI給出的結(jié)果天然滿足安全距離約束不會出現(xiàn)元件疊在一起需要返工的情況。第二輪輸出之后還需要跑一遍DRC。這一步千萬不能省。自動布局容易產(chǎn)生一些邏輯上滿足但物理上怪異的擺放比如電容把芯片絲印蓋住了、定位孔的旁邊擋了板件、天線下方放了大面積鋪銅器件。DRC檢查項要有元件間距、絲印重疊、禁布區(qū)入侵、高度沖突、干涉碰撞。DRC報告自動生成之后按嚴重/警告分級嚴重項AI自動回退重新布局警告項提交工程師快速清掃。4.4 為什么排版部分不需要砸錢上訓(xùn)練大模型這個話題值得單獨說一說。很多朋友一看到AI排版就覺得要訓(xùn)練一個模型收集幾萬塊板子的布局數(shù)據(jù)搞深度學(xué)習(xí)。我的觀點是對于中小團隊完全沒有必要而且效果不一定好。原因是PCB Layout的約束具有強規(guī)則性機械尺寸、電氣規(guī)則、DFM規(guī)則都是明確的。這種問題用傳統(tǒng)優(yōu)化算法就能解決得很好模擬退火、遺傳算法這些方法在幾十年前就有成熟應(yīng)用。深度學(xué)習(xí)真正擅長的是沒有明確規(guī)則的場景比如圖像識別、自然語言理解。Layout不是沒有規(guī)則而是規(guī)則太多太碎需要花精力去提取和編碼。換句話說難點不在模型在把經(jīng)驗變成約束的過程。那LLM在這個過程中干什么我非常推薦把LLM用在兩個輔助環(huán)節(jié)一是解析自然語言的布局要求比如工程師寫這個USB座子要靠近板邊1.5毫米LLM能把這句話轉(zhuǎn)成結(jié)構(gòu)化的一條約束記錄二是自動生成DRC報告的通俗解釋讓非Layout專業(yè)的人也能看懂問題。這兩個場景都是非結(jié)構(gòu)化到結(jié)構(gòu)化的轉(zhuǎn)換是LLM的主場。把重計算和重規(guī)則的部分留給算法各干各擅長的整體性價比最高。5. 常見問題與排查技巧實錄5.1 BOM數(shù)據(jù)歸一化階段的六個高頻坑數(shù)據(jù)這塊踩過的坑我一條條數(shù)過差不多能把人坑麻。這里挑六個最典型的分享。第一個坑是單位符號大小寫。uF和UF還能識別nF寫成NF也能猜但電阻里K是千歐、電容里K是誤差等級正負10%這兩者如果不區(qū)分器件類別直接替換結(jié)果會亂。所以單位解析必須帶上器件類型上下文。第二個坑是英制公制封裝混寫。0402是英制1005是公制實際是同一種封裝。數(shù)據(jù)清洗階段必須建一張英制公制封裝對照表并把所有封裝統(tǒng)一為一種標識體系否則后面一切比對都是錯的。第三個坑是位號格式不一致。同一塊板子上有人寫U1、U2有人寫U 1、U 2還有寫成IC1的。我遇到過最離譜的是把R12寫成了R1,2這種屬于錄入錯誤但不能讓程序崩潰得用校驗規(guī)則指出來。第四個坑是數(shù)量列含義混亂。有些BOM的數(shù)量是總用量有些是單板用量還有一些是連備品一起算的采購量。歸一化時必須以單板用量為基準采購量差異單獨存一列不能混著算。第五個坑是規(guī)格描述里混合了非規(guī)格信息。比如100nF/50V/X7R/0402/勝美達和100nF/50V/X7R/0402/ROHS看起來很像實際是同一物料。這類尾部品牌或環(huán)保標識不適合進入匹配文本要提前用規(guī)則剝離。第六個坑是小數(shù)點精度。0.1uF和0.10uF在工程上完全一致但字符串比對不相等反過來10000pF等于10nF也等于0.01uF。解決方法是統(tǒng)一換算成基礎(chǔ)單位電容統(tǒng)一到nF電阻統(tǒng)一到Ω而不是保留原始字符串。5.2 Layout自動布局失效的三種典型情況自動布局跑了半天輸出結(jié)果工程師一看哭笑不得這種情況我第一次做的時候也遇到過總結(jié)下來是三類原因。第一類是約束遺漏。板框內(nèi)其實有一個金屬屏蔽罩區(qū)域是不能放器件的但約束配置的時候只留下了文字描述沒有畫成禁布區(qū)域結(jié)果AI把電感塞了進去。這類問題的排查方式是把AI布局結(jié)果與機械結(jié)構(gòu)DWG疊加做碰撞檢查不能只看平面距離。第二類是網(wǎng)表信息不完整。原理圖里某些網(wǎng)絡(luò)名在導(dǎo)入時被EDA軟件自動改名比如VCC_3V3變成N-000001導(dǎo)致AI無法識別電源網(wǎng)絡(luò)電源器件布局缺乏指導(dǎo)。排查網(wǎng)絡(luò)名映射表確認電源符號和網(wǎng)絡(luò)名是顯式命名的。第三類是權(quán)重設(shè)置失衡。如果總線長權(quán)重太高所有器件會往板中心擠造成板邊器件稀疏、中心爆滿。模擬退火本身沒問題問題是多目標優(yōu)化里的權(quán)重需要根據(jù)板型調(diào)整不能一套權(quán)重打天下。建議針對接口板電源板混合信號板分別保存三套配置入廠即切換。5.3 排查工具與日志設(shè)計無論是BOM還是LayoutAI模塊都要做可追查性。我給每個工具模塊都加了兩層日志第一層是操作日志記錄每次歸一化、匹配、布局的參數(shù)和耗時第二層是決策日志記錄每條BOM合并、每個器件坐標變化的關(guān)鍵依據(jù)。決策日志的核心字段是輸入數(shù)據(jù)切片、算法名稱、關(guān)鍵閾值、輸出結(jié)果、置信度。當(dāng)工程師對結(jié)果提出疑問時直接查決策日志就能還原當(dāng)時AI是依據(jù)什么做的判斷。這樣工具用起來不容易被背鍋也方便不斷調(diào)優(yōu)算法參數(shù)。實際開發(fā)中很多團隊忽略決策日志導(dǎo)致調(diào)參全靠猜數(shù)據(jù)量一大根本沒法復(fù)盤這是很吃虧的。6. 直接可以帶走的最小實現(xiàn)框架6.1 模塊劃分和文件結(jié)構(gòu)如果要從零搭一個最小框架我建議按四個模塊劃分數(shù)據(jù)導(dǎo)入模塊、BOM語義處理模塊、布局約束生成模塊、布局優(yōu)化模塊。模塊之間通過標準JSON格式的中間文件通信不要共享內(nèi)存狀態(tài)這樣每個模塊都能單獨測試和替換。文件結(jié)構(gòu)可以這樣組織ai_bom_layout/ ├── data/ # 原始數(shù)據(jù)與中間數(shù)據(jù) │ ├── raw_bom/ # 原始BOM文件xlsx/csv │ ├── normalized/ # 歸一化后的標準BOM │ └── netlists/ # 網(wǎng)表文件 ├── src/ │ ├── bom_parser.py # BOM解析與歸一化 │ ├── material_matcher.py # 物料語義匹配 │ ├── substitute.py # 替代料識別 │ ├── constraint_gen.py # 布局約束生成 │ ├── placement_engine.py # 布局優(yōu)化引擎 │ └── drc_checker.py # DRC檢查 ├── config/ │ ├── field_map.yaml # 列名映射配置 │ ├── unit_rules.yaml # 單位換算規(guī)則 │ └── placement_weights.yaml # 布局權(quán)重配置 ├── output/ │ ├── bom_report.xlsx # BOM處理結(jié)果 │ └── placement_preview.kicad_pcb └── run_pipeline.py # 主流程這個結(jié)構(gòu)不復(fù)雜每個文件的職責(zé)都很清晰。即使以后某個模塊要替換成商業(yè)API也只改對應(yīng)文件的內(nèi)部實現(xiàn)接口不用動。6.2 主流程每一步的輸出物我把主流程拆成七個步驟每一步都有明確的輸出物方便在任何一個節(jié)點停下來人工檢查。第一步導(dǎo)入原始BOM輸出原始數(shù)據(jù)檢查報告。第二步歸一化輸出標準BOM表和清洗日志。第三步語義匹配輸出物料分組表和置信度分布圖。第四步替代識別輸出替代料矩陣表。第五步網(wǎng)表和BOM融合輸出布局前檢查清單。第六步約束生成輸出JSON約束文件。第七步布局優(yōu)化輸出坐標文件和DRC報告。每兩個步驟之間允許人工確認回退這是一條非常重要的設(shè)計原則。自動流水線對工程師最大的價值不是替代而是把需要判斷的點位集中呈現(xiàn)。6.3 跑通一個最小Demo的參考路徑拿一塊簡單的板子做驗證比如四層板、200個元件左右的小系統(tǒng)板。準備一個真實BOM文件和一個網(wǎng)表文件然后按路徑跑先跑BOM解析把原始表轉(zhuǎn)成標準表之后人工核對20行確認解析準確率不低于95%。接著跑物料語義匹配觀察相似度得分的分布超過0.95的歸并0.85到0.95的進人工確認清單。然后跑替代識別把輸出結(jié)果和采購庫存表關(guān)聯(lián)看看缺料覆蓋了多少。之后把標準BOM和網(wǎng)表輸入約束生成模塊先看約束條數(shù)是否覆蓋三個關(guān)鍵維度區(qū)域約束、相對位置約束、安全距離約束。最后跑布局引擎輸出坐標后在EDA工具里打開手工檢查是否有明顯干涉和拼板方向錯誤。跑通這條路徑之后你對整個系統(tǒng)的能力邊界會有直觀認識。后面再往多板項目、復(fù)雜機械件場景擴展時基本就是加規(guī)則和加配置的問題。7. 一些個人實測經(jīng)驗與偏好最后說幾條實際項目里的體感。BOM歸一化是整個方案的成敗所在。AI再強喂進去的數(shù)據(jù)是臟的出來的結(jié)果只能是精致的錯誤。所以我在團隊里反復(fù)強調(diào)一句話先定義標準字段和標準值域再談AI。數(shù)據(jù)標準化做到八成以上后面所有的匹配、替代、比對、布局都能順暢如果這一步粗糙所有下游模塊都在收拾爛攤子。Layout方面我對全自動的期待不高但對AI給初稿的接受度很高。實踐證明把AI模塊定位成一個快速且守規(guī)矩的初級工程師比定位成頂級Layout專家要健康得多。它能在十分鐘內(nèi)給出一個滿足所有硬約束的初版然后你在這個基礎(chǔ)上調(diào)教兩輪整體效率遠遠高于從空白板框開始拖拽。替代料識別這塊我不太建議完全放開讓AI自動下采購單。最穩(wěn)的姿勢是AI把候選方案按可靠等級排列采購對高等級方案批量確認對中低等級方案逐條人工審核。這個流程既覆蓋了絕大多數(shù)缺料場景又保留了最后一道人類責(zé)任環(huán)節(jié)。我在實際使用中還發(fā)現(xiàn)一個容易被忽略的點AI工具要和現(xiàn)有EDA流程深度綁定。如果生成的BOM報告和布局坐標文件不能被現(xiàn)有流程直接讀取工程師就要在工具間來回倒數(shù)據(jù)那效率提升會被傳輸損耗吃掉大半。所以我在集成時優(yōu)先做接口打通而不是讓工具獨立運行這一點對任何想引入AI工具的硬件團隊都值得參考。