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