热门问题
时间线
聊天
视角

矽編譯器

电子设计自动化软件工具 来自维基百科,自由的百科全书

Remove ads

矽編譯器(silicon compiler)是一種專用的電子設計自動化(EDA)工具。它能自動把高層次的行為描述轉換為集成電路(IC)設計。該工具接受規格說明,通常以像C++這樣的高級程式語言或專用領域語言(DSL)編寫,然後生成一組可用於製造的版圖文件(例如GDSII),並可送到半導體製造廠進行加工。[1]

矽編譯器的主要目標是提高設計抽象層次,使工程師能把精力放在電路的預期功能上,而不是實現的低層細節。這個過程有時稱為「硬體編譯」,它顯著提高了設計效率,類似於現代軟體編譯器讓程式設計師不再編寫彙編語言[2]

歷史

「矽編譯器」這一概念首次由David L. Johannsen在1979年於加州理工學院(Caltech)提交的博士論文中正式描述,其導師為卡弗·米德[3]該工作促成了Silicon Compilers Inc.(SCI)於1981年由Johannsen、Mead與Edmund K. Cheng創立。

該方法的早期重要成功之一是 1982 年設計的以太網數據鏈路控制器晶片。該項目從規格到流片僅用了五個月,當時大幅縮短了設計周期。[4]隨後在1983-1984年間,SCI團隊在七個月內為迪吉多MicroVAX英語MicroVAX設計了數據通路晶片。該晶片包含37,000個電晶體,其複雜度通常手工設計需約三年時間。[5]

編譯過程

矽編譯把高層描述轉換為物理版圖,經過若干主要階段。

高級綜合

過程從硬體的行為描述開始,通常用C、C++或SystemC等語言編寫。此階段稱為高級綜合(HLS),把高層代碼翻譯為結構化表示,通常為暫存器傳輸級(RTL)描述。HLS允許設計者通過修改原始碼快速探索不同架構,而不用手工重寫RTL。[6]

中間語言

為彌合高級程式語言與低層硬體細節之間的差距,編譯器常使用中間語言(IR)。IR 提供標準化格式,便於進行模塊化且面向硬體的優化。現代開源項目引入了專用IR以改進編譯過程。

  • CIRCT(Circuit IR for Compilers and Tools)是基於LLVM的項目,旨在為硬體設計工具創建通用基礎設施。它提供一組模塊化的IR(稱為「方言」),用於表示不同抽象層次的硬體,從而優於傳統的、靈活性較差的格式如Verilog。[7][8]
  • Calyx 是一種IR,旨在支持同時需要結構信息和控制流信息的優化。它採用獨特的分裂表示法,既有類似硬體的結構語言,也有類似軟體的控制語言(含循環與條件),從而實現傳統IR難以完成的強大硬體特定優化。[9]

邏輯綜合

邏輯綜合階段把RTL描述轉換為門級網表。該網表是簡單邏輯閘(如與門、或門、非門)及其互連的詳細映射,用以實現RTL指定的功能。

物理設計

物理設計是最後階段,把抽象的門級網錶轉換為幾何版圖。該版圖指明最終晶片上每個組件和連線的精確位置。此階段包含若干複雜步驟:

  • 布圖規劃(Floorplanning):規劃晶片上主要功能模塊的整體布局。該步驟決定晶片的尺寸與形狀,對性能與功耗至關重要。優化常使用元啟發式算法來探索龐大的設計空間。[10]
  • 放置(Placement):將網表中的各邏輯閘和標準單元分配到晶片上的具體位置。
  • 布線(Routing):創建連接已放置組件的物理連線。這是一項高度複雜的任務,特別是在現代工藝下,需遵守大量複雜的設計規則。[11]

設計範式與優化

智能編譯

早期的矽編譯器演進出更複雜的設計探索能力。「智能編譯」概念引入了一種將決策制定與綜合過程分離的設計範式。在此模型中,設計者使用「旋鈕和度量」的方法。

  • 度量(Gauges)是由編譯器生成的設計質量指標,例如晶片面積、成本和性能。
  • 旋鈕(Knobs)是設計者可以調整的高層參數和約束,例如處理單元數量或流水線(pipelining)級別。

這允許人工設計者或專家系統通過調整旋鈕並觀察度量的變化來探索權衡,而無需理解綜合過程的低級細節。[12]

人工智慧和機器學習的作用

現代矽編譯器越來越多地集成人工智慧(AI)和機器學習(ML)以應對晶片設計的巨大複雜性。這些技術被用於自動化和優化編譯過程的各個階段,尤其是物理設計。例如,深度強化學習(deep reinforcement learning)已被用於解決晶片布圖規劃與放置問題,其中AI代理通過經驗學習以比許多人工專家和傳統自動化工具更有效地安排晶片組件。[13][14]

與手工RTL設計的比較

使用矽編譯器在設計生產力與最終硬體質量之間存在根本性權衡。

優點

  • 增加生產力:主要優點是顯著縮短設計時間。一項2018年的調查研究發現,使用高級綜合(HLS)將開發時間降至手工RTL設計所需時間的大約三分之一。平均而言,這使得設計者每小時設計產出的性能提高約4.4倍。[6]
  • 更容易的設計空間探索:由於可以在高抽象層進行更改,工程師可以更快地嘗試不同的架構和算法。

缺點

  • 結果質量:抽象層次的提高可能有代價。由HLS工具生成的設計通常在性能、晶片面積和功耗上不如人工調優的RTL設計。相同的2018年研究發現,HLS設計在現場可程式邏輯閘陣列(FPGA)上平均比手工RTL設計多消耗41%的資源。[6]不過,隨著編譯器技術的進步,這一差距正在縮小。

開源運動

近年來,矽編譯領域出現了強烈的開源工具與協作開發趨勢,旨在民主化晶片設計並加速創新。

  • CIRCT項目:作為LLVM生態系統的一部分發起,CIRCT(Circuit IR for Compilers and Tools)旨在將現代編譯器設計原則應用到硬體領域。通過提供共享且模塊化的基礎設施,CIRCT希望終結EDA工具生態的碎片化,並圍繞一套通用且可重用的強大工具建立社區,類似於LLVM在軟體開發中的作用。[15][16]
  • SiliconCompiler:SiliconCompiler是一個開源構建系統,自動化完整的矽編譯流程,從原始碼到GDSII。其目標是通過提供模塊化框架和標準化的模式與API來規範化編譯過程。這允許不同工具、工藝設計包(PDK)和設計無縫組合,從而簡化構建晶片的複雜任務。[17]

參見

參考

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads