電子設計自動化

電子設計自動化（Electronic design automation，縮寫：EDA）是指利用電腦輔助設計（CAD）軟體，來完成超大規模積體電路（VLSI）晶片的功能設計、綜合、驗證、物理設計（包括布局、布線、版圖、設計規則檢查等）等流程的設計方式。

## 歷史與發展

在電子設計自動化出現之前，設計人員必須手工完成積體電路的設計、布線等工作，這是因為當時所謂積體電路的複雜程度遠不及現在。工業界開始使用幾何學方法來製造用於電路光繪（photoplotter）的膠帶。

到了1970年代中期，開發人員嘗試將整個設計過程自動化，而不僅僅滿足於自動完成掩膜草圖。第一個電路布局、布線工具研發成功。設計自動化研討會（Design Automation Conference）在這一時期被創立，旨在促進電子設計自動化的發展。

電子設計自動化發展的下一個重要階段以卡弗爾·米德（Carver Mead）和琳·康維於1980年發表的論文《超大規模積體電路系統導論》（Introduction to VLSI Systems）為標誌。這一篇具有重大意義的論文提出了通過程式語言來進行晶片設計的新思想。如果這一想法得到實現，晶片設計的複雜程度可以得到顯著提升。這主要得益於用來進行積體電路邏輯仿真、功能驗證的工具的性能得到相當的改善。隨著電腦仿真技術的發展，設計項目可以在構建實際硬體電路之前進行仿真，晶片布局、布線對人工設計的要求降低，而且軟體錯誤率不斷降低。直至今日，儘管所用的語言和工具仍然不斷在發展，但是通過程式語言來設計、驗證電路預期行為，利用工具軟體綜合得到低抽象級（或稱「後端」）物理設計的這種途徑，仍然是數字集成電路設計的基礎。

從1981年開始，電子設計自動化逐漸開始商業化。1984年的設計自動化會議（Design Automation Conference）上還舉辦了第一個以電子設計自動化為主題的銷售展覽。Gateway設計自動化在1986年推出了一種硬體描述語言Verilog，這種語言在現在是最流行的高級抽象設計語言。1987年，在美國國防部的資助下，另一種硬體描述語言VHDL被創造出來。現代的電子設計自動化設計工具可以識別、讀取不同類型的硬體描述。根據這些語言規範產生的各種仿真系統迅速被推出，使得設計人員可對設計的晶片進行直接仿真。後來，技術的發展更側重於邏輯綜合。

進入21世紀之後，一方面，三家大EDA公司（Synopsys、Cadence、Mentor）通過多次併購整合，完善設計全流程，奠定了三巨頭競爭格局。另一方面，EDA公司開始深入製造領域，發展出了OPC等製造EDA的工具以及可製造性設計（DFM）工具。同時，晶圓廠成為了EDA的深度使用者，不僅在製造方面需要使用EDA工具，在標準單元庫、SRAM設計上都需要使用。此外，領先晶圓廠每兩年開發一代工藝，其中EDA的整套設計流程需要在新工藝上驗證。EDA也開始在早期工藝研發中介入，幫助解決更複雜的設計規則以及種種難題。晶圓廠提供的Signoff簽核流程決定了設計公司設計出的晶片能否在晶圓製造廠順利生產。而Signoff簽核的主要工具就是EDA，可以說EDA是架起了設計與製造溝通的橋梁。同時，先進工藝不斷迭代也驅動了EDA的創新。可見，此時此刻EDA在產業鏈已經有著舉足輕重的作用。

目前的數字積體電路的設計都比較模塊化（參見集成電路設計、設計收斂（Design closure）和設計流（Design flow (EDA)）。半導體器件製造工藝需要標準化的設計描述，高抽象級的描述將被編譯為資訊單元（cell）的形式。設計人員在進行邏輯設計時尚無需考慮資訊單元的具體硬體工藝。利用特定的積體電路製造工藝來實現硬體電路，資訊單元就會實施預定義的邏輯或其他電子功能。半導體硬體廠商大多會為它們製造的元件提供「元件庫」，並提供相應的標準化仿真模型。相比數字的電子設計自動化工具，模擬系統的電子設計自動化工具大多並非模塊化的，這是因為模擬電路的功能更加複雜，而且不同部分的相互影響較強，而且作用規律複雜，電子元件大多沒有那麼理想。Verilog AMS就是一種用於模擬電子設計的硬體描述語言。此外，設計人員可以使用硬體驗證語言來完成項目的驗證工作目前最新的發展趨勢是將集描述語言、驗證語言集成為一體，典型的例子有SystemVerilog。

隨著積體電路規模的擴大、半導體技術的發展，EDA的重要性急劇增加。這些工具的使用者包括半導體器件製造中心的硬體技術人員，他們的工作是操作半導體器件製造設備並管理整個工作車間。一些以設計為主要業務的公司，也會使用電子設計自動化軟體來評估製造部門是否能夠適應新的設計任務。電子設計自動化工具還被用來將設計的功能導入到類似現場可編程邏輯門陣列的半定製可程式邏輯裝置，或者生產全定製的特殊應用積體電路。

## 現況

現今數位電路非常模組化（參見集成電路設計、設計收斂、設計流程 (EDA)），產線最前端將設計流程標準化，把設計流程區分為許多「細胞」（cells），而暫不考慮技術，接著細胞則以特定的積體電路技術實現邏輯或其他電子功能。製造商通常會提供組件庫（libraries of components），以及符合標準模擬工具的模擬模型給生產流程。類比EDA工具較不模組化，因為它需要更多的功能，零件間需要更多的互動，而零件一般說較不理想。

在電子產業中，由於半導體產業的規模日益擴大，EDA扮演越來越重要的角色。使用這項技術的廠商多是從事半導體器件製造的半導體工廠製造商，以及使用EDA模擬軟體以評估生產情況的設計服務公司。EDA工具也應用在現場可編程邏輯門陣列的程序設計上。

如今的積體電路，從系統架構開始，落實到功能的定義和實現，最終實現整個晶片的版圖設計與驗證，是一項複雜的系統工程，集成了人類智慧的最高成果。以華為2020年最新的7nm麒麟990晶片來說，其中集成了103億顆電晶體，若沒有EDA輔助，設計這樣複雜的電路並保證良率是無法想像的。可見EDA這套工具，賦能了集成電路設計與製造的創新，當之無愧的站在了產業鏈的頂端。

## 未來發展趨勢

目前，EDA在國際市場上已經發展成為了相對成熟的產業，而每年增長率只有10%左右。但有業內人士分析認為，這並不代表日後發展的機會在變小，在未來 EDA 的發展趨勢可能有：

- AI賦能
- EDA上雲
- 異構集成

另一方面，由於美國對華科技禁令的影響，中國將逐漸放棄自美國引進全套EDA服務，加上開發方向的轉變，產業發展轉而投向中國自研EDA的高成長市場，為了保住中國的利潤，美國幾大EDA公司甚至展開了競爭，為此大舉投資中國EDA新勢力並設立各自的合作據點。科技產業的變化，也帶動起步中的中國EDA品牌的往新的大方向前進，並隨著技術落實而逐漸獲利後，EDA為美國壟斷的格局將會出現變化。

## 重點軟體分類

### 設計

- 高級綜合(或行為綜合、演算法綜合)——高級設計描述(例如在C/C++中)轉換為RTL。
- 邏輯綜合-將RTL設計描述(例如用Verilog或VHDL編寫)轉換為邏輯門的離散netlist。
- 原理圖捕獲-用於標準單元數字，模擬，rf類捕獲CIS在Orcad由Cadence和ISIS在Proteus
- 布局——通常是由模式驅動的布局，比如在Orcad中的Cadence布局，在Proteus中的ARES布局

### 仿真

- 電晶體仿真——對原理圖/布局行為的低層電晶體仿真，精確到器件級別。
- 邏輯仿真——對RTL或門網表的數字行為進行數字仿真，精確到布爾級別。
- 行為仿真——對設計的架構操作進行高層仿真，精確到周期級別或接口級別。
- 硬體仿真——使用特殊目的硬體仿真擬議設計的邏輯，有時可以插入到系統中替代尚未構建的晶片；這被稱為電路仿真。
- 技術CAD仿真和分析基礎過程技術。器件的電氣特性直接從器件物理推導。

### 分析及驗證

- 功能驗證：確保邏輯設計與規格相符，並正確執行任務。包括通過仿真、仿真和原型的動態功能驗證。
- RTL Linting：檢查代碼是否遵循語法、語義和樣式等編碼規則。
- 時鐘域交叉驗證（CDC檢查）：類似於Linting，但這些檢查/工具專門用於檢測和報告由於使用多個時鐘域而可能出現的數據丟失、元穩定性等問題。
- 形式驗證，也稱為模型檢查：嘗試通過數學方法證明系統具有某些期望的屬性，並且某些不希望發生的效果（如死鎖）不會發生。
- 等效性檢查：對晶片的RTL描述和綜合後的門網表進行演算法比較，以確保邏輯層面的功能等效。
- 靜態時序分析：以輸入無關的方式分析電路的時序，從而找到所有可能輸入的最壞情況。
- 布局提取：從擬議的布局開始，計算每條導線和器件的（近似）電氣特性。通常與上述靜態時序分析一起使用，以估算完成晶片的性能。
- 電磁場求解器，或稱場求解器，直接求解麥克斯韋方程，適用於積體電路和PCB設計中的特定問題。它們以精確度較高、但速度較慢而聞名。
- 物理驗證，PV：檢查設計是否可以物理製造，生成的晶片是否不存在任何阻止功能的物理缺陷，並且能滿足原始規格。

### 製造製備

- 掩模數據準備或MDP——生成實際的光刻掩模，用於物理製造晶片。
- 晶片修整，包括定製設計標記和結構，以提高布局的可製造性。後者的例子包括密封環和填充結構。
- 生成帶有測試圖案和對準標記的掩模布局。
- 布局到掩模準備：通過圖形操作增強布局數據，如解析度增強技術（RET）——提高最終光刻掩模的質量的方法。還包括光學鄰近效應修正（OPC）或逆光刻技術（ILT）——在晶片製造時補償衍射和干涉效應。
- 掩模生成——從分層設計生成平面掩模圖像。
- 自動測試圖案生成或ATPG——系統地生成模式數據，以儘可能多地測試邏輯門和其他組件。
- 自測試或BIST——安裝自包含的測試控制器，自動測試設計中的邏輯或存儲器結構。
- 功能安全
- 功能安全分析，系統地計算設計中的失效率（FIT）和診斷覆蓋度指標，以滿足所需的安全完整性級別的合規性要求。
- 功能安全綜合，通過在結構化元素（模塊、RAM、ROM、寄存器文件、FIFO）中增加可靠性增強來改善故障檢測/容錯能力。這包括（但不限於）添加錯誤檢測和/或糾正代碼（漢明碼）、冗餘邏輯用於故障檢測和容錯（雙重/三重）以及協議檢查（接口奇偶校驗、地址對齊、節拍計數）。
- 功能安全驗證，運行故障試驗，包括向設計中插入故障並驗證安全機制對已覆蓋的故障作出適當反應。

## 參見

- 電路設計、電子電路設計、集成電路設計
- 電子設計自動化軟體比較
- 電腦輔助設計、電腦輔助工程
- 硬體描述語言