1957-IBM設計自動化#
案件摘要#
1950 年代中期,IBM 為打造超級電腦 Stretch(7030),遭遇一樁新型犯罪:電晶體電路規模首次大到人工接線、人工佈置、人工查錯全面崩潰——幾千塊電路板的接線表靠人手抄,錯誤率隨規模爆炸。IBM 組成「設計自動化」小組,用電腦自己產生接線表、檢查邏輯、規劃佈線,首次讓「用電腦設計電腦」成為現實。「Design Automation」一詞自此誕生,是 EDA 產業在字典裡的第一筆紀錄。
前因 -- 為什麼會有這個案子#
- 電晶體化的小型化悖論:元件變小了,但電腦規模(數萬電路)卻暴增,設計工作量不降反升。
- 接線表是瓶頸:每塊板、每條線都要人工登錄與核對;一張圖改錯,下游全部重做——純手工流程無版本控制、無自動檢核。
- Westinghouse 先行(1955-56):西屋公司已嘗試用機器生成邏輯圖與接線表,證明概念可行。
- Stretch 的豪賭:IBM 目標是比 704 快 100 倍,容不得人工疏失,必須讓設計流程機器化——這就是作案動機。
線索與推理 -- 數學式、程式、理論#
線索一:把設計文件變成資料#
核心洞察:邏輯圖不是「圖」,而是結構化資料。IBM 把電路表示成 netlist(網表)——節點與連接的列表:
// netlist 片段(現代語法示意)
G1: NAND2 (a, b) -> n1
G2: NAND2 (n1, c) -> out
有了 netlist,接線表、物料清單、測試表都可以從同一份資料派生——這是「單一真相來源」思想的第一次工程實踐,日後成為所有 EDA 流程的鐵律。
線索二:自動佈線的前身#
IBM 為電路板發展了早期自動佈線:先按電氣相容性把元件分組放到板上(placement 雛形),再用最短連接啟發式決定走線。理論上這就是日後「先佈局、後繞線」兩階段範式的原型:
\[ \text{Design} = \text{Placement}(P) \rightarrow \text{Routing}(R),\quad \min\ \text{wirelength} \]
四年的經驗直接餵給了 C. Y. Lee 的迷宮演算法(1961,同屬 IBM 時期的貝爾實驗室體系)。
線索三:自動檢核——驗證的第一步#
機器可比對「邏輯圖 ↔ 接線表 ↔ 物料表」的一致性,自動抓出:連接缺失、負載超限、腳位衝突。這把「除錯」從人工翻圖變成程式比對——形式驗證(BDD、模型檢查)的老祖宗,只是當年檢查的是文法一致性,而非語意等價。
結案 -- 後果與影響#
- 一門學科有了名字:1962 年起 IEEE/ACM 文獻正式採用 "Design Automation";1964 年第一屆 DAC 會議在此土壤上開花。
- netlist 作為通用中介:從此設計流程被切成「邏輯 → netlist → 實體」三段,每段可獨立演算法化——今日 RTL、門級網表、版圖的階層式流程完全承襲。
- 自動化紅利顯現:Stretch 之後,IBM 系統設計週期大幅縮短,證明「電腦設計電腦」的生產力曲線,吸引 DEC、RCA、Bell 等全業跟進。
- 基礎建設的遠見:IBM 後續的 ALS(邏輯合成)、Einstein 布林等價檢查器、ELS/BTA 測試生成,都是這條 1957 年起跑線上的接力。
關鍵人物與文獻#
- William H. Dunwell(1909–1994):IBM Stretch 設計自動化負責人,「用電腦設計電腦」的倡議者,後當選 IBM Fellow。
- 文獻:
- W. H. Dunwell, "Design Automation in IBM," IBM Technical Newsletter (1957);延伸為 IEEE Trans. Electronic Computers 特刊(1964)。
- M. H. Lewin, "Computer-Aided Design of Digital Systems," Proc. IEEE 54, 1541 (1966)(早期綜述)。