三万字长文带你了解电子设计自动化(EDA)
三萬字長文帶你了解電子設計自動化(EDA)
文章目錄
- 三萬字長文帶你了解電子設計自動化(EDA)
- EDA 的工業視角
- 簡介
- 物理設計
- 不斷發展的設計環境
- 早期物理設計:交互式支持
- 自動設計
- 路由
- 布局布線中的關鍵支持子系統
- 經濟影響較小的物理設計工具
- 關于物理設計EDA的未來
- VSLI 設計的仿真和驗證
- 事件
- 周期
- 模型
- 編譯代碼
- 硬件描述語言
- 測試平臺語言
- 加速和仿真
- 事件驅動的加速器
- 基于周期的加速器和仿真器
- 大規模并行通用處理器
- 基于 FPGA 的仿真器
- 分析
- 模型檢查器
- 等效檢查器
- 未來:SoC
- 綜合
- 開端
- 邏輯優化和設計編譯器
- RTL 綜合
- 順序映射和優化
- 擴大合成范圍
- 行為綜合
- 物理綜合
- 數據路徑合成
- FPGA 合成
- 未來
- 測試
- 總結
EDA 的工業視角
電子設計自動化(Electronic Design Automation,下稱 EDA)已經有相對悠久的發展歷史了。它和集成電路設計(IC)之間相互影響,相互促進。現在已經有很多的 EDA 工具被開發出來,里面涵蓋了很多的技術、算法和方法。EDA 的核心技術,主要包含在以下的四個方面:
- 物理設計(布局)
- 仿真/驗證
- 綜合
- 測試
EDA 的技術也往各個方面去發展,比如說在現場可編程門陣列(FPGAs)的軟件可編程性的實現。
簡介
在數字領域,不斷變化的流行設計方法——以連續的“時代”為特征。
- 手工設計:Shannon 的布爾代數和 McCluskey 的關于最小化組合邏輯電路構成了數字電路的基礎。那時候的大部分工作都是手工完成的,直到二十世紀六十年代末。比如說用于掩碼生成的圖紙設計和一種特殊塑料薄膜的切割。
- 自動化圖稿和電路模擬:二十世紀七十年代早期,Calma 等公司以數字化系統來制作藝術品,使用香料用于電路仿真。印刷電路的自動布線切割板可從 Applicon、CV、Racal-Redac 獲得。其他一些公司如 IBM 和 WE 開發和搞定了 IC 路由器。Calma 的 GDS II 成為標準布局格式。
- 原理圖捕獲和邏輯仿真:工作站技術與圖形用戶界面相結合允許設計師直接在原理圖中繪制他們的邏輯捕捉工具。一旦進入此中,這些設計就可以在邏輯級別進行模擬以供進一步開發和調試。此時最大的進入者是 Daisy、Mentor 和 Valid。
- 布局布線:二十世紀八十年代,強大的 IC 布局工具出現:自動布局和布線,設計規則檢查,布局與原理圖比較等。同時,硬件描述語言 Verilog 和 VHDL 使得邏輯和 RTL 模擬器的廣泛被采用。商業領域的主要角色成為 Mentor 和 Cadence。
- 綜合: 1987 年,商業邏輯綜合推出,允許設計師自動映射網表進入不同的單元庫。90 年代期間,從 RTL 描述合成網表,然后再布局布線,成為主流設計方法。結構化的測試在那個十年的末尾被廣泛采用。RTL 仿真成為主要用于驗證數字系統的工具。正式驗證和靜態時序分析也對仿真進行了補充。到 1990 年代末,Cadence 和 Synopsys 已成為主要的商業劇透。IC 的 EDA 市場已經增長到大約三億美元。
此外,意味著基本元素,如作為晶體管和庫單元的面料設計,已經發展并變得更加豐富。全流程定制設計,基于單元的設計[主要是標準單元和專用于 IC (ASIC) 的門陣列] 和 FPGA [或可編程邏輯器件 (PLD)] 是今天最流行的的面料。
下面我們回顧已在 EDA 工具中使用的技術、算法和方法。特別是側重于四個關鍵領域隨:物理設計、仿真/驗證、綜合和測試。這些領域不包括所有的 EDA 領域。即,不包括物理分析(提取、LVS、晶體管級別仿真、可靠性分析等)。因為這是一個過于多樣化的領域,內容很多,一下子說不完。我們也不談系統級別設計自動化的這個新興領域。
也會談及 EDA 設計朝著軟件可編程性的發展,比如對于 FPGAs。這個發展我們是肉眼可見的。隨著 FPGA 市場的健康增長,這個話題現在在技術上受到越來越多的關注,比如在設計自動化會議等等會議上都很受重視。這個原因是方方面的,比如說 IC 設計的固定成本(NRE、Masks 等等)和產品生產線成本的增加。復雜性使得 IC 設計變得更加困難,因此,IC 設計在數量上開始減少。目前每個芯片上大約有 10 000 個 ASIC/系統芯片 (SoC),從 FPGA 設計開始,加上大約 80 000 個。所以有一個共享基本架構設計的壓力越來越大,特別是典型的專門針對特定應用程序。這種設計通常被稱為“平臺”。在這個方案之下,平臺的數量可能會成百上千地增加。不同用途的主流平臺至少需要幾十個,這使得不同 IC “設計” 的總數 (= 平臺數*平均每個平臺使用的 IC 數)超過了十萬。如果不同平臺的數目高于 1000 的數量級,那么談論可編程 SoC 設計可能是更準確的,但是這不會改變下面的分析。
EDA 市場將會相應地進行分裂。
- 需要針對 IC 設計師的一些工具集去設計這些平臺。這些工具需要掌握復雜性,能夠處理深亞微米效應,允許大的比較分散的設計團隊等。 比如:物理綜合(合成、放置、布線)、布局規劃、芯片、水平測試,頂級芯片路由器等。
- 需要一些工具集去使用這些平臺,通常,這些工具將處理較低的復雜性,將表現出一定的平臺特異性且將需要硬件/軟件協同設計。例子:合成 FPGA 模塊、編譯器、硬件/軟件協同仿真,包括平臺模型(處理器、DSP、內存),系統級設計自動化等。
物理設計
從技術和財務角度來看,物理設計一直是 EDA 中最成功的領域之一,約占 2000 年 EDA 收入的三分之一。為什么物理設計自動化如此成功?有很多因素,但根據 EDA和機器設計的歷史,這里有三個因素:首先,物理設計是乏味且容易出錯的。早期的計算機設計師很擅長為復雜機器設計原理圖,但實際的布線過程和制造顯然是一項沒有吸引力的工作,需要數小時的精確計算并且不能容忍錯誤。而且由于物理設計通常是由邏輯設計驅動的,微小的邏輯變化導致物理過程的重新啟動,這使得工作更加令人沮喪。其次,可以調整機器的物理設計,使其更適合自動化。電路的外部行為通常由其應用指定, 它的布局可以通過多種方式實現,包括一些簡單的方式自動化。最后,計算機的物理設計用計算機本身來表示相對容易。雖然物理設計數據量可能很大,但布局幾何和布線計劃的精確性質可以有效地表示和處理。相比之下,其他設計概念(如功能需求)則更難編碼。提供機械化協助來處理大量的設計可能是第一個成功的 EDA 系統的基礎。為了滿足需求,開發了可以捕獲藝術品和邏輯圖的 EDA 系統。后來,EDA 工具開始通過審核設計中的某些違規(例如短路)來增加價值,后來又通過自動生成布局或布線來增加價值。設計審核的價值仍然是物理 EDA 的主要貢獻。事實上,今天,設計的物理驗證(例如,提取)約占物理 EDA 市場的 45%——設計創建過程占 55%。
不斷發展的設計環境
物理 EDA 工具的演變與目標進程的演變和可用計算平臺的演變并行進行。定義“最佳”目標的過程,一直是簡化問題以使設計和測試過程更容易的愿望與從每一代技術中榨取最佳性能的愿望之間的拉鋸戰。 這場戰斗遠未結束,技術復雜性與設計速度的權衡可能會成為下一代芯片技術的主題。除了目標技術的發展之外,每一代新技術都通過提供一個更強大的平臺來運行 CAD 工具來影響 EDA。本節將討論 EDA 工具的共同進化、它們運行的機器以及它們所針對的技術。由于物理 EDA 是一個龐大而多樣的領域,因此有許多分類法可以應用于它。出于闡述的目的,將根據技術的時間線對其進行粗略劃分,因為它們對 EDA 行業產生了經濟影響。具體來說,這些將包括
交互式工具、自動布局和布線、布局分析和一般布局支持。另一方面,有些物理設計技術非常有前途,甚至在有限的環境中非常有效,但對收入數字的影響不大。本節的結尾假設了為什么這些技術尚未產生經濟影響。
早期物理設計:交互式支持
最早的物理 EDA 系統支持當時的技術,按照今天的標準,它既小又簡單,但與之前的系統相比卻很復雜。早期的電子機器由分立元件組成,通常是雙極晶體管或在兩層板上裝有無源元件的超小型 IC。這些板的機架通過使用繞線互連的背板連接在一起。在這種環境下,第一個物理EDA 工具基本上是電子繪圖系統,可幫助生成電路板和背板的制造圖紙,然后技術人員可以使用手動工具實施。在 1960 年代后期,情況發生了變化,因為物理設計的后端開始變得自動化。在此之前,復雜的印刷電路板和 IC 掩模是直接在大張紙或紅寶石上完成的。只要最終的設計是手工實現的,生產新機器的時間就很長,電路的大小也有限。但在 1969 年左右,發明了新機器,包括 Mann IC 掩模制造商和Gerber 平板繪圖儀,可以自動生產最終掩模。瓶頸一下子從制造端轉移到了設計文件的生產,這些文件通常存儲在大卷磁帶上。
因此,將掩模制造機械化,產生了可以對中間步驟加速設計的工具的需求。其中一部分是“捕獲”原理圖和其他設計數據。在那些日子里,將設計過程建模為計算環境外部的模型很流行,因此,數字化平板電腦是一種“捕獲”它并將其存儲到計算機內存中的設備 。 Applicon 和ComputerVision 在 1970 年代開發了第一個電路板和芯片設計圖形站。這些在商業上具有重要意義,并為 EDA 工作奠定了基礎。具體來說,1970 年代末和 1980 年代的大多數 EDA 公司被視為必須提供硬件和軟件組合的系統供應商。例如,Daisy 和 Valid 通過開發和運送專門用于 EDA 的工作站成長為大公司。這些早期 EDA 工作站的功能在很多方面都受到限制, 包括應用的算法和可用的硬件,通常限制在 64K ——幾乎不足以啟動今天的機器。最終,通用工作站出現在公開市場上,其功能與專用工作站相同,而且很快就會更強。這是 Mentor 的方法,基本上所有成功的實體 EDA 公司都采用了這種方法。
物理 EDA 需要的不僅僅是計算能力:它需要圖形顯示,這在 1970 年代后期在計算機上很少見。當時,大多數計算機用戶都在運行機械紙終端,或者可能是 80 字符乘 24 行 CRT 終端。價格合理的矢量圖形顯示器(從顯示列表中不斷在 CRT 上重新繪制一系列線條)和存儲管顯示器(使用電荷存儲效應在顯示器表面的特定位置保持發光)的出現打開了人類與二維物理設計數據交互的大門。這些技術在 1970 年代進行商業開發,并在 1970 年代后期普遍可用。在其商業推出時,一些顯示器設計師開始開發“位圖”圖形顯示器,其中 CRT 上的每個像素都從 RAM 存儲器中不斷更新。這些被認為是高端機器,因為它們需要大量內存(多達 128K 字節),因此價格超出了普通用戶的范圍。當然,1980 年代內存價格暴跌,位圖顯示器開始主導市場。 EDA 行業曾是工作站開發的早期領導者,現在只占機器銷售的一小部分。這扼殺了特殊 EDA 工作站的前景,但意味著 EDA 軟件開發人員可以依賴一系列功能越來越強大的工作站來運行他們的純軟件產品。
自動設計
雖然交互式物理設計是成功的,但 1970 年代后期的自動物理 EDA 才剛剛開始提供布局和布線功能。當時,大型公司的內部工具,尤其是 IBM、貝爾實驗室和 RCA,可能是最先進的。 IBM 工具自然地在大型機上運行,而其他工具將在大型機或當時的“小型機”上運行,它們是 16 位機器,如 PDP-11,或者可能是 24 位機器,如 Harris 計算機。 “超級迷你”的推出,尤其是 1977 年的 DEC VAX 11-780,可能對加速計算機輔助設計起到了與其他任何單一事件一樣多的作用。隨著幾乎無限(大約 24 位)虛擬內存的出現,可以同時在內存中表示巨大的設計數據庫(可能有 20K 個對象)! 這釋放了大量用于將大型設計問題分割成小問題的開發工作,這意味著可以在中小型公司和大學負擔得起的機器上在真實的運行時間內處理真實的設計。
在這種情況下,第一個商業自動物理設計系統開始證明它們可以與布局工程師完成的設計競爭。當時一個懸而未決的問題是:“什么是最合適的 IC 布局風格?” Mead 和 Conway 的暢銷書 為大量僅使用彩色鉛筆的研究生打開了布局問題,但它所倡導的方法對于自動化來說似乎已經成熟。它基于 CIF 語言中單個多邊形的規范,并嚴重依賴可編程邏輯陣列 (PLA),這似乎是指定電路復雜行為的理想方式。畢竟,它們易于設計,具有可預測的界面,并且可以輕松修改。為了支持它們,開發了 PLA EDA。但是用 PLA 設計的問題很快就超過了它們的優勢:它們不能擴展到非常大的尺寸,而且通常不會制造更大的芯片。此外, 優化其面積的 EDA 系統破壞了它們的可預測性:對 PLA 的邏輯進行微小更改可能會導致其不再折疊,從而導致面積發生更大的變化。這通常意味著它不再適合分配給它的區域。最后,正在開發其他設計風格,它們同樣易于使用,但可以擴展到更大的尺寸。因此,EDA 對 PLA 的支持本身從來都不是主要的經濟因素。
雖然 PLA 和簡筆畫在校園里風靡一時,但業界正在試驗一種稱為“標準單元”設計的完全不同的范式,這極大地簡化了單元的布局和布線問題。定制 IC 一次只布置一個晶體管,每個基本邏輯門都適合其上下文,而標準單元的引入將晶體管級設計與邏輯設計分離,并定義了一個新的抽象別。當布局由標準高度的單元組成時,這些單元被設計為鄰接以便它們的電源線和地線匹配,幾乎您創建的任何布局都是合法的(即使它不是很有效)。由于間距直到布線完成后,行才被確定,幾乎所有通道路由器都可以成功連接 100% 的網絡。因此,自動生成電氣和物理正確的大型設計突然成為可能。許多人譴責早期標準單元的面積效率,因為通道路線占據了一半以上的面積。缺乏電路調諧導致芯片運行速度明顯低于該技術的“最佳”速度。學術界呼吁新一代“高瘦”設計師能夠同時處理架構、邏輯、布局和電氣問題。但是這樣的人供不應求,當時的計算機系統對中等規模集成(MSI)和大規模集成(LSI)芯片的需求很大(通常需要幾十種芯片設計,即使是一個簡
單的 CPU )。明顯優先考慮的是設計效率和準確性:大多數芯片必須“第一次工作。” 好處是如此明顯,以至于標準單元布局成為大部分設計開始的標準做法。
緊隨標準單元方法之后的是門陣列的引入。標準單元可以減少設計時間,而門陣列提供更多:減少芯片制造時間。通過對布局施加更多限制,他們減少了“翻轉”芯片所需的掩模步驟數量。因為所有單元都預先設計為適合“主切片”,所以生成有效的布局對于門陣列來說從來都不是問題。但是由于可用于布線的區域是固定的,不可拉伸的,因此大多數芯片的布線受到限制。因此,新問題是區域布線主導了門陣列的 CAD 支持領域。
商業自動物理設計工具在 1980 年代早期到中期開始出現。 Silvar-Lisco、VRI、CADI、Daisy、SDA、ECAD 和其他公司提供了早期的硅 P&R 工具,其中包括布局和布線子系統。 Silvar-Lisco 的 CalMP 計劃在技術和經濟上都取得了成功,例如,在 1983 年左右。早期的布線產品僅限于兩層,這對于標準單元來說很好,但對門陣列不是很有效。因此,為三個金屬層提供有效區域布線的工具對門陣列的使用提出了很高的要求。 Tancell 尤其是 Tangent 的 TanGate 程序是 1985 年至 1986 年期間布局和布線的主要參與者。除了它們的多層功能之外,它們成功的部分原因是為庫和設計數據開發了標準的 ASCII格式,分別稱為 LEF 和 DEF。 因為這些允許供應商以相對易于理解的格式指定他們自己的物理庫,所以它們成為了行業的事實上的標準。當時,它們是專有格式而非公共格式這一事實放慢了速度,但并沒有阻止其他 EDA 供應商對其進行改編。最終,來自 Tangent、SDA 和 ECAD 的物理設計工具被歸入 Cadence 旗下,Cadence 憑借其 Cell3、Gate Ensemble 和后來的 Silicon Ensemble 產品主導了物理 EDA 市場。自從引入 Cell3 以來,該領域一直存在競爭,包括來自 Silvar-Lisco 的 GARDS 程序,以及后來來自 ArcSys(后來稱為 Avant!)的工具等。目前,Cadence和Avant!憑借其 Silicon Ensemble 和阿波羅系統在物理 P&R 工具市場上分別占據主導地位。Cadence 繼續在其工具中支持和擴展 LEF 和 DEF,并且最近將這些格式和相關閱讀器放入了一個開源模型中。
許多第一個商業上成功的放置算法都是基于切片樹放置,由相對簡單的圖分割算法指導。這些算法的優勢在于它們在早期步驟處理整個網表,并且至少可能產生減少導線交叉數量的布局。但隨著對更好 QOR 的競爭加劇,以及 1970 年代初期 EDA 可用的計算能力增加,在放置問題上投入更多周期以實現更小的芯片面積變得很有吸引力。大約在這個時候,Metropolis 和模擬退火算法的性
質從理論和實踐的角度得到了更好的理解,并且最高質量的放置通常由退火放置者持有。
因為模擬退火相對容易理解和實施(至少以一種天真的方式),所以許多學生和公司實施了退火引擎。各種加速機制被采用以取得不同程度的成功,從一次運行到另一次運行的因子為 10 并不少見。早期的退火引擎需要專家用戶指定退火“時間表”,有時以“百萬度”為單位開始“溫度”。這種本土的發式方法將物理設計的可訪問性降低到一小群知道所有按鈕在哪里的專家。漸漸地,退火技術得到了更好的理解,奠定了更堅實的基礎,更多的參數是根據從設計中提取的指標自動推導出來的。
但是切片放置并沒有消亡——隨著分析算法的出現,它獲得了新的生命,這些算法可以最佳地解決在一維或二維內對細胞進行排序的問題。由于經典分區算法在處理超過幾千個單元格的問題時往往運行非常緩慢且次優,因此在PROUD 等系統中使用分析指導可更快地產生更高的質量。當被 Cadence 等公司商業化時,它們被稱為“二次”和“快速”算法的 Q。他們為在合理的時間內放置 10 萬個單元的設計打開了大門。
近年來,布局器的競爭環境開始包括時序驅動布局和綜合導向布局。早期的時序驅動布局技術通過采用一組固定的小凈權重來工作,并試圖放置單元以使高權重網絡更短。該領域最近的工作支持基于路徑的時序約束,具有一組固定的時間關鍵路徑。時序驅動布局的當前技術水平是將布局算法與時序分析相結合,這樣用戶只需提供整體時序約束,系統就會導出路徑和內部網絡優先級。
綜合定向布局(或根據某些人的布局定向綜合)是布局操作和綜合操作的融合。合成操作范圍
從簡單的設備大小調整到從技術獨立表示開始的完整邏輯再綜合。大多數商業“放置”系統,包括 Cadence 和 Avant! 的當前一代內置有效的大小調整和緩沖操作。這些極大地改善了最終電路的時序。與 Silicon Ensemble合作的 Cadence 和與 Apollo 合作的 Avant! 目前是市場領先的工具。
在另一種方法中,其他人目前正在努力將 RTL 綜合操作(如資源共享)、核心邏輯綜合(如時序驅動結構化和布局)結合起來,同時使用通用時序模型和核心時序引擎。盡管此時集成綜合與布局的經濟影響很小,但大多數商業布局工具似乎必須在其中包含某種綜合操作,以便從長遠
來看保持競爭力。目前進入這個新領域的市場參與者包括 Avant! 的 Saturn 、 Cadence 的 PKS 、 Synopsys 的 Physical Compiler、Monterey Designs 的 Dolphin、Magma 的 Blast Fusion 等。這并不是說這些產品的技術方法是相同的,只是它們都針對通過某種綜合與布局的組合來解決時序收斂問題。
路由
自動布線技術的第一個應用是印刷電路板,其中自動布線算法早于成功的布局算法。至少有三個原因:布線是一個比布局更乏味的過程;需要重做布線的放置的微小變化;并且要布線的引腳數量比要放置的組件數量大一個數量級。早期的 PC 板布線 EDA 主要由 1960 年代和 1970 年代在大型機和當時可用的小型計算機上運行的內部工具組成。大多數實用的路由算法基本上都是基于廣度優先網格搜索或線探測搜索算法的搜索算法。由于廣度優先搜索技術需要不可接受的長運行時間,因此許多優化(例如算法)已被用于加速路由器。
在 1970 年代的某個時候,IC 上的組件數量開始超過 PC 板上的組件數量。此時,物理 EDA 中最大的挑戰和最大的收入開始遷移到硅領域。該技術的性質涉及放置數百到數千個相對簡單的電路。在這種情況下,如果沒有自動布線,自動布局幾乎沒有任何價值。因此,有強烈的動機提供一個包括兩者的解決方案。如上所述,早期的自動門級布局通常是基于標準單元的,這意味著可以應用通道布線。正如 1970 年代初定義的那樣,通道布線是將一組引腳連接到具有最少軌道的并行通道兩側的問題。因為這個問題很簡單,可以進行分析建模,它的定義導致了文獻中的大量算法和啟發式方法。盡管通過通道路由連接的標準單元是有效的,但門陣列布局的出現帶來了對新一代 IC 路由器,可以連接分布在芯片表面的一組點。具有諷刺意味的是,這更像是最初的印刷電路板布線問題,可以用類似的方法進行攻擊,包括網格和無網格布線——盡管大多數實用的商業路由器直到最近才被網格化。但是經典的布線技術有一個問題,它們傾向于一次布線一個網絡直到完成,有時稱為順序布線,然后再開始下一個。這往往導致開始時網絡的高完成率和運行結束時網絡的低完成率或長路徑。十多年來,解決這些結果質量問題一直是路由器工作的主要焦點。已經取得了許多重大進展,包括戰略性地對路線進行排序的過程,在主路線之前運行全球路線,以及在逐網路由期間或之后完成的選擇性撕裂和重新路由的許多啟發式方法。今天生產具有競爭力的路由器需要對這些過程進行廣泛的實驗、集成和調整。
布局布線中的關鍵支持子系統
實際的布局系統依賴于許多專門的子系統來完成芯片。但是,將這些構建為單獨的工具以鏈接到另一家公司的 P&R 系統通常在商業上不可行。此類工具的示例包括時鐘樹綜合、電源/接地布線、填充單元插入和其他功能。一些初創公司已經開始提供諸如點工具之類的支持,例如具有故意非零偏斜的專用時鐘樹綜合解決方案,但它們尚未產生大的經濟影響。
經濟影響較小的物理設計工具
除了中央布局/布線/驗證業務外,還開發了許多其他物理設計設施和工具,其中許多已經商業化。然而,到目前為止,它們還沒有對 EDA 的業務方面產生太大的影響。這些示例包括自動布局規劃工具、單元布局合成器、布局生成器和壓縮器。本節討論這些和類似工具經濟影響有限的一些原因。
布局規劃是將芯片組織成大區域并將主要塊分配給這些區域的過程。通常,要進行布局規劃的塊具有延展性,并且布局規劃過程的一部分是重塑塊以有效地適應模具。平面規劃涉及許多約束和成本指標,其中一些很容易計算,例如不合適的塊損失的浪費區域量。但其他限制條件更難計算,例如芯片布線對其時序的影響。許多學術論文和一些商業 EDA 系統都提出了布局規劃的解決方案,并且在某些情況下,它們在特定環境中取得了重大成功。但總體而言,EDA 行業并沒有看到與布局規劃相關的大量收入流——它僅占物理 IC EDA 市場的 2% 左右。這可能部分是由于該地區缺乏成功的工具。但這也是由于, 至少在某種程度上,對于布局規劃問題的性質:它既易于處
理人類設計師,又吸引他們。一般來說,芯片架構師并不急于將這個問題交給機器,因為熟練的設計師可以生產出比最好的機器制作的平面圖更好的平面圖,并且可以在幾天內開發出來。因此,如今的公司似乎不愿意花大錢進行自動平面圖。隨著芯片變大,設計團隊變得更加復雜,總體而言,平面規劃和分層設計可能發揮更大的作用,因為使用顯式分層塊為將一個復雜的子系統與另一個子系統隔離開來提供了有效的機制。
另一個沒有太大商業影響的領域是細胞布局合成。這是采取晶體管級規范和產生詳細晶體管級布局的過程。許多這種性質的項目都是在研究中完成的。內部大公司和一些初創公司試圖使它成為一個商業產品。但到目前為止,自動蜂窩布局對 EDA 經濟影響甚微。這可能是因為行業內晶體管級布局總量較小且越來越小,也可能是因為晶體管級別的架空驗證電路將有效成本提高得過高。但無論如何,目前細胞合成對EDA的經濟影響很小。
對于對全定制布局感興趣的人而言,在 20 世紀 80 年代末和 90 年代初,使用布局生成器是一個很有前途的領域。這些工具為設計師編寫的算法放置系統提供了一個框架,并可以在特定環境中提供驚人的生產力提升。然而,人們往往患有太多的貢獻者綜合癥,對他們的需求太少。就是說,許多團體會為 ALUs 這樣的電路編寫發電機,但很少有設計師會拿起別人的發電機并使用它,因為它的詳細物理和電氣特性沒有得到很好的了解。此外,發電機開發系統針對的是一個相對較少的群體,他們是布局和編程領域的專家,這些人往往可以自己提供類似的系統。目前,
這些系統尚未得到廣泛應用。
最后的例子是布局壓實工具。這些技術從 20 世紀 80 年代開始推廣,作為提高物理設計效率和使設計從一種技術移植到另一種技術的一種方式。然而,他們遇到了幾個問題。首先,他們的目標是數量有限的全定制布局設計師。其次,他們制作的布局在大多數規則中通常是正確的,但通常需要調整來理解真實詳細的高性能布局中涉及的一些特殊技術規則。第三,他們被那些習慣于以交互方式進行完整定制布局的設計師們懷疑地看待,最終并沒有被廣泛接受。
關于物理設計EDA的未來
每一代技術都帶來了更大的問題,在更強大的計算機平臺上運行,針對的是更快、更有能力的大規模集成(VLSI) 技術。每一代人都利用基礎技術的原始能力,希望快速完成設計。這樣的權衡抽象了一些物理的問題,使復雜的效果被忽略。再加上制造過程的日益復雜和工作站的加快,EDA 開發人員的努力水平在過去 20 年中似乎大致保持不變。即,隨著金屬遷移等問題被充分理解,技術中的下一個皺紋(例如自熱)就會暴露出來。整體效果是累積的,實用的EDA系統今天往往很大,并隨著時間的長線性增長。
在平衡的另一邊,可以設計更多的系統,而無需"掩蔽編程"的硅。代表早期芯片設計自動化嘗試的PLA 變成了 PLD,然后是CPLD。 同樣,用于縮短周轉時間的門陣列現在與 FPGA 正面競爭。即使是自定義計算機微處理器芯片,如英特爾奔騰,現在也與 SW 仿真相同的指令集競爭,就像TransMeta 克魯索處理器中一樣。此外,還有一個新的設計類別,名為"應用特定可編程產品",將可編程性與傳統應用特定芯片設計相結合。這允許設置一個掩碼來支持多個用戶,甚至跨多個客戶。另一個例子是 FPGA 供應商的預測,例如,在十年內,幾乎所有的設計都將有一定數量的可編程邏輯。這對物理 EDA 意味著什么? 這取決于 EDA 是芯片設計師還是芯片用戶。
定制芯片設計師的數量可能會保持相對穩定。這是因為有幾個因素傾向于相互對立:設計開始的數量正在減少,但每個設計的復雜性正在增加。設計和測試每個芯片的成本是巨大的,而且正在增長,因此,先進的 EDA 工具所能提供的杠桿作用仍然很大。因此,如果不是擴大市場,提供良好的性能與卓越的可靠性 EDA 工具的掩碼編程芯片,也許應該有一個穩定點。
VSLI 設計的仿真和驗證
數字 IC 設計功能驗證始終這是一個巨大和具有挑戰性的問題,在可預見的未來將繼續如此。
如果我們衡量難以驗證其存儲元件的完全可能狀態(即兩個元素數量的功率)來驗證設計,我們將面臨摩爾定律功率的兩次爆炸。實際上,情況并沒有那么糟糕。但長期的經驗清楚地表明,驗證工作是設計尺寸的超線性函數。一個公平的近似是,將門數翻倍使每個時鐘周期的工作翻
倍,額外的復雜性至少使獲得可接受的覆蓋所需的周期數翻倍。因此,驗證問題被摩爾定律牽絆住了,即在指數級增長的功能中使指數翻倍。即使處理器性能繼續根據 Moore 的法則(指數級)提高,設計驗證時間仍每 18個月翻一番,所有其他內容仍保持均等。
由于"上市時間"的壓力不允許核查時間加倍,所有其他事情都不匹配。電子 CAD 算法和方法在三種一般性方法上得到了拯救:抽象、加速和分析。在過去20年中,主流核查已經轉向不斷提升的抽象水平,從門級到注冊轉移級(RTL),現在又進入系統級別。同樣,計時分辨率也從納秒移動到時鐘周期。利用并行性和特定的數據流和操作,應用了特殊用途的 HW 來加速驗證。邏輯仿真和快速原型設計使用真正的可編程 HW 每天運行數十億個設計驗證周期。分析,即正式驗證,可以證明邏輯網絡的等價性和特性。與模擬和仿真相比,正式工具的處理時間有限,但是,他們的驗證在邏輯上是完整的,模擬和仿真是永遠不可能完成的。
**抽象化:**我們選擇驗證的任何級別都涉及一些抽象。早期的邏輯設計者發現,他們可以抽象出他們的晶體管電路設計之上,并模擬在邏輯水平的門,逃離 SPICE 功能驗證。數字 VLSI 早期使用的邏輯模擬器主要在門級工作,在納秒級別完全模擬名義計時,并使用事件驅動算法。
事件
事件驅動算法以前在 ECAD 以外的大型模擬世界中是眾所周知的。它計算邏輯信號的每個過渡,稱為事件,及時定位它,并將其扇到其接收器。計算時間僅用于處理事件,而不是用于沒有活動的大門和時間步驟。由于門級設計中不超過 10%-20% 的門在平均周期中處于活動狀態,這是一種有
效的算法。它對時間沒有假設,除了門延遲,所以它可以正確建模異步反饋,透明閂鎖,和多個時鐘域,對存儲元素的設置和保持時間違規情況進行建模和檢測。事件驅動的邏輯模擬仍然是當今廣泛使用的基本算法。
20 世紀 70 年代此類模擬器的例子包括 IBM 的 VMS、TEGAS 和 CADAT。它們是為大型項目開發的,如大型計算機,這是 VLSI 技術最早的采用者。VLSI 門陣列(即 ASICs)出現在 20 世紀 80 年代早期,取代了通過實時原型造型驗證的離散 MSITTL 實施,并用跳線進行了更正。隨著 ASIC 的出現,設計界對邏輯仿真的需求也隨之擴大。Daisy 系統、導師圖形和有效邏輯等通過將示意圖捕獲和事件驅動的邏輯模擬運行在基于網絡的微處理器工作站上到 ASIC 設計師的辦公桌上而建立起來。
周期
不久,事件驅動算法的更高抽象替代方法開始使用,基于周期的模擬抽象時間到時鐘周期水平。事件驅動模擬的大部分工作是事件檢測、計時和調度,這涉及到大量依賴數據的分支和指點。通
過大型數據結構進行跟蹤,這在傳統處理器中很難加快速度。門評估需要的時間很少。在純基于周期的模擬中,事件處理被免除,以換取每個周期在一個方塊中評估所有門。預處理分析存儲元件之間的閘門,以找到正確的評估順序。模擬器幾乎沒有運行時間數據依賴性,通常只有啟用或禁用整個塊的條件。具有大型緩存的管道處理器(在 20 世紀 80 年代末的主機和工作站中開始可用)可以非常快地運行此算法。生成的性能通常比同一平臺上的事件驅動模擬大一個數量級。
不幸的是,不是每個人都可以使用純基于周期的模擬。它從根本上假設每個門每個時鐘周期只活動一次,按排名順序排列。具有異步反饋(包括透明閂鎖或其他異步行為)的設計不能以這種方式進行模擬。單個時鐘周期的假設排除了具有多個獨立時鐘域的設計,這在電信和媒體處理器
中很常見。可使用時鐘周期最大常見分界器的子周期,以極快的速度進行處罰,從而模擬普通時鐘域中的多個時鐘。毫不奇怪,第一個基于周期的邏輯模擬器是由大型計算機公司(如 IBM)開發的,這些公司構建了具有單個時鐘域的大型復雜處理器,并且可以對其設計人員實施嚴格的同
步設計方法。IBM 的 3081 大型機項目開發了基于循環的模擬器 EFS,在20世紀70年代末。純基于周期的模擬在設計上被廣泛使用,主要是 CPU,它可以適應其方法限制。隨著事件驅動模擬器的性能穩步提高,它的吸引力已經減弱,部分原因是它們采用了基于周期的技術。
基于周期的模擬無法驗證時間。在同步設計中,使用靜態正時分析。與模擬相比,分析在驗證時間方面做得更為徹底,因為它涵蓋了所有路徑,而不依賴于覆蓋的刺激。定時分析具有相反的缺點,報告虛假路徑,路徑在實際操作中永遠不會發生。與早期的分析儀相比,現代靜態定時
分析工具更能夠避免錯誤路徑。但是,當設計具有異步邏輯時,需要具有完整時間的事件驅動模擬,至少在異步部分是這樣。
模型
大多數設計都包含大型模塊,不需要驗證,因為它們是標準部件或以前驗證過的 HDL 內核,但必須存在才能驗證設計的其他部分。幸運的是,我們可以使用這些模塊的模型,這些模塊只提供外部行為,而內部詳細信息被抽象化。模型采取一些 SW 或 HW 形式,其中大多數出現在 20 世紀 80 年代中期,特別是從邏輯自動化和邏輯建模系統。
全功能 SW 模型完全代表內部狀態和基于周期的行為,從芯片的引腳中可以看出。它們還可以通過程序員友好的界面為內部寄存器提供可見性。指令設置模擬器將處理器進一步抽象到指令級別,并且可以以非常高的速度執行二進制代碼。通常只需要公車級的行為,因此由交易命令腳本控制的芯片和總線的公車功能模型被廣泛使用。沒有什么比硅本身更快速或更準確的了。HW 建模師將實際芯片進行接口以進行模擬。
所有這些建模技術都通過標準接口連接到模擬器。Verilog 的編程語言界面 (PLI) 是標準模型界面。PLI 還使用戶能夠構建可與模擬器同步運行的自定義實用程序,以任意方式進行儀器儀表。這就是測試臺語言 Vera 的前體的實現方式,并且使用 PLI 編寫了許多覆蓋工具。它是 SW 與 HW 加速模擬器的一個區別特征。
編譯代碼
模擬器最初是作為循環解釋器構建的,使用靜態數據結構來表示邏輯及其互連,以及一個事件輪列表結構來及時安排事件。一些基于早期周期的模擬器使用編譯代碼技術代替。邏輯設計由編譯器分析,編譯器構建一個程序,執行時根據模擬算法模擬設計。與編程語言編譯器一樣,避免了口譯員的開銷,并且可以在編譯時間找到一些不實用或在運行時間可能實現的優化。該技術利用預處理時間來換取運行效率,這通常是邏輯驗證中一個很好的權衡。雖然最初被認為是基于周期的算法的同義詞, 事件驅動的模擬器也已在編譯的代碼中實現,效果良好。計時學的 Verilog 編譯模擬器(現為 Synopsys VCS)是 Verilog 在 1993 年首次編譯的代碼模擬器,也是第一臺本地代碼編譯的代碼模擬器。
硬件描述語言
隨著設計尺寸增加到數十萬個門,門級設計變得過于笨拙和低效。還需要在更高層次上表達設計,以指定和評估架構。硬件描述語言 (HDL) 是首次開發以滿足此描述
性需求。
第一個廣為人知的HDL是貝爾和紐厄爾的ISP1971。ISP 也是第一個使用 RTL 一詞的。在 1979-1980 年左右,美國國防部要求用統一的方式記錄技術和設計獨立的部件功能,并且能在任何模擬器上以相同方式工作。 只有高密度脂蛋白能滿足一需 求 。 VHDL(VHSIC HDL) 基于早期的 ADLIB HDL 和 Ada 編程語言從此要求中脫穎而出。VHDL 于 1987 年成為 IEEE 標準。
1984-1985 年,Gateway 的 Moorby 等人開發了Verilog HDL 和事件驅動模擬器,該模擬器非常高效,可進行門級模擬,但也包括 RTL 和行為功能,以表達測試臺和系統的其他部分。Verilog 非常成功,并在 20 世紀 80 年代保持壟斷。Cadence 在收購網關后于 1991 年將其打開,并在 1995 年成為 IEEE 標準。
對 HDL 的抽象在許多基本方法上提高了驗證性能。
可以包圍整個方塊的陳述(如果/然后/其他)。
1988 年,Synopsys 推出了設計編譯器,這是將更高級的 Verilog 合成到大門中的第一個工具。這使得工程師能夠將整個設計過程轉移到更高層次的抽象,創建和驗證他們的高密度脂蛋白設計。最初主要由 HDL 驗證性能優勢,一旦由 HDL 合成啟用,就將其推入了當今的主流方法。
######上述所有的
當 今 最 高 性能 的 基 于 軟件 的 模 擬 器, 例 如 VCS、Verilog-XL 或 NC-Verilog,將事件驅動和基于周期的HDL 仿真與優化的 PLI 模型接口結合到本地編譯代碼可執行文件中。例如,認識到大多數活動是由時鐘邊沿觸發的,VCS 會在事件驅動的模擬器中盡可能插入基于周期的算法。當設計允許時,可以實現基于周期的仿真的性能,但不會放棄正確仿真任何 Verilog 設計的能力。
VCS 中使用的其他加速方法包括電路分級、邏輯塊的合并、分層結構的優化和設計抽象技術。邏輯值的進一步抽象,從四態和 120 值到兩個狀態,在安全可能的情況下自動完成,不會失去對標準 Verilog 的遵守,通過在需要它的那些變量上保留完整的四態。高級源代碼分析和優化,就像在編程語言編譯器中所做的一樣,利用編譯代碼架構來進一步提高性能。
測試平臺語言
測試平臺抽象了設計,存在于整體的其余部分,提供刺激并檢查響應以驗證設計是否在其環境中正常工作。表達這種抽象的測試平臺語言具有廣泛的起源,受到測試人員、過程模擬語言中的刺激生成器、HDL 以及最后現代編程語言和形式方法的多重影響。
在 1980 年代初期,我們可以看到過程模擬語言和早期 HDL 在 Cadat 的 DSL(數字刺激語言)、Daisy 的刺激語言以及 HiLo 和 Silos 的刺激結構的影響。此外,我們可以在 1981 年斯坦福大學的 John Newkirk 和 Rob Matthews 的 IC 測試語言中看到,現代測試平臺語言中不可或缺的特性:時序和功能的解耦、測試平臺和設備引腳的顯式綁定,以及使用標準的高級語言(用程序擴展的
C)。
在 1980 年代后期,Systems Science 與英特爾合作開發了一種函數式宏語言,在生成器中抽象出時序,這些生成器直接與規格表相關聯,捕捉了可執行規格的概念。在 1990 年代,Verilog 和 VHDL 以及標準語言 Perl 和 C/C 被廣泛用于開發測試平臺,盡管它們專注于硬件或軟件描述,而不是測試平臺。他們已經提出了正式的方法來解決測試平臺的生成問題,并且有時作為通用靈丹妙藥被夸大了,而事實并非如此。盡管在標準語言和一些形式技術中都有許多吸引人的元素,但它們的情況被夸大了 。盡管如此,我們仍然可以看到這兩個領域的巨大影響。
驗證問題在 90 年代中后期爆發,公司發現他們在驗證上的花費比在設計上的花費要多得多。來自 Systems Science 的現代驗證語言 Vera(現在是 Synopsys 的一部分)和來自 Verisity 的 Specman 作為回應而出現,它們從一開始就專注于功能驗證。
Vera 是一種面向對象的硬件感知語言,它允許用戶以實用的方式生成刺激、檢查結果和測量覆蓋率。它解決的一些問題包括定向和隨機刺激、刺激的自動生成(具有專門的數據包生成機制和非確定性自動機)、為檢查復雜功能響應而定制的靈活抽象、啟動和同步大量并發活動的方法、高- 級別覆蓋(狀態、功能、序列等)、測試平臺 IP 的封裝、與 HDL 和高級語言(如 C 和 Java 等用
于 HW/SW 協同仿真的高級語言)的無縫接口,最后是專門的測試平臺調試,因為測試平臺具有成為復雜的程序本身的可能。
現代測試平臺語言,如 Vera,已被許多最大的半導體和系統公司采用,并且在使用和功能方面不斷成熟和增長。
加速和仿真
加速器在硬件中實現模擬算法,從操作和處理器級別的并行性以及專用運算符和控制中獲得加速。邏輯仿真器可以將設計插入實時硬件中,以便通過實際操作進行驗證。
事件驅動的加速器
事件驅動的硬件加速器幾乎與邏輯仿真本身一樣長。第一臺機器由 Angus McKay 于 1960 年代在波音公司制造,包含了從那時起在事件驅動加速器中發現的大多數元素。
HW 時間輪調度事件,這些事件通過一個或多個網表散布到其輸入原語。硬件可以直接評估一個邏輯原語,檢測一個輸出事件,找到它的延遲,并非常快速地將它提供給時間輪。大多數時間步有許多獨立事件要處理,因此流水線可以利用這種低級并行性來提高門評估速度以匹配加速器硬件時鐘速率。大多數加速器還使用電路拓撲局部可用的高級并行性,通過具有多個并行處理器來加速分區設計。跨分區邊界的事件通過快速互連進行通信。
在 1980 年代初期出現一款基于 MIPS 桌面工作站的 EDA 后不久,對加速的需求立即顯現出來。 Zycad、Silicon Solutions、Daisy、Valid、Ikos 和其他公司以事件驅動的硬件加速器作為回應。到 1980 年代中期,實現了每秒 10 萬到 3.6 億個門評估的速度和高達 380 萬個門的容量。這比當時的 SW 模擬器快一到兩個數量級,而且體積更大。
Mentor Graphics 1986 年的加速器 Compute Engine 是一個流水線超標量 RISC 附加處理器,具有大物理內存和 HLL 編譯器。它預示著 1980 年代末和 1990 年代初具有流水線超標量 RISC CPU 的通用工作站的發展。它們急劇增加的性能和容量大大減少了對硬件加速器的需求,大多數此類產品最終消失了。今天,Ikos 仍然是事件驅動硬件加速器的唯一供應商。
基于周期的加速器和仿真器
IBM 在 1980 年代開發了幾個基于循環的大規模仿真加速器,首先是約克城仿真引擎 (YSE) 研究項目,隨后是工程驗證引擎 (EVE)。 EVE 可以在每秒 22 億次門評估的峰值下模擬多達 200 萬個門,在純循環或單位延遲模式下,或兩者的混合。它在 IBM 內被廣泛使用,特別是用于基于處理器和控制器的系統,在加速設計上運行實際軟件。
類似的技術在 1990 年代以邏輯仿真器的形式商業化,當 時 Arkos 推 出 了 其 系 統 , 而 Quickturn 推 出 了 CoBALT 機器,IBM 芯片和編譯器技術的產品化直接源自 YSE/EVE 工作。今天的 CoBALT Plus 能夠在高達 2000 萬門的系統設計上達到每秒超過 100,000 個周期的速度,足夠快以成為實時硬件目標中的在線連接邏輯仿真器。
基于周期的機器受到相同的設計約束,上面詳述的適用于基于周期的算法的所有實現,因此大部分設計項目不能使用它們。
大規模并行通用處理器
1980 年代對加速性能需求的另一個響應是研究通用大規模并行處理器上的邏輯仿真。這項研究的結果主要是負面的。在全局時間事件驅動的邏輯仿真中,足夠的高級并行性可以保持大約 10 個,但遠不及 100 個,處理器很忙。這是因為邏輯設計具有非常不規則的拓撲結構。事件可以立即在邏輯設計中傳播很遠。大規模并行處理在物理模擬上取得成功,例如流體流動和結構分析,因為三維物理現實中固有的最近鄰通信使通信保持本地和可預測。此外,邏輯設計中的并行性在時間上非常不規則,主要集中在時鐘周期的開始。許多時間步幾乎沒有并行處理的事件。有人研究了分布式時間算法,但所需的開銷超過了收益 。今天,一些模擬工具可以利用現代工作站中廣泛使用的適度多處理。
更常見的是任務級并行性,它存在于大量回歸向量集的集合中,這些向量集必須在項目后期進行微小的設計修改后進行仿真以驗證設計的正確性。許多項目已經建立了由數十或數百臺廉價網絡工作站或 PC 組成的“農場”或“牧場”,它們以批處理模式運行傳統的模擬工具。就周期/秒/美元而言,這是一種非常成功的加速技術,它可能是當今最常用的一種。重要的是要記住,這僅在任務級并行性可用時才有效。當需要單線程驗證時,例如在邏輯設計上運行 OS 和應用程序 SW 以及大數據集時,沒有任務級并行性可用,仍然需要在單個任務上具有非常高的性能。
基于 FPGA 的仿真器
FPGA 出現在 1980 年代后期,作為數字邏輯的實現技術。大多數 FPGA 由靜態隨機存取存儲器的小集群組成,用作在可編程互連陣列中查找表以實現組合邏輯和觸發器。用于 ASIC 和完全定制設計建模時,FPGA 的容量比有意定位時要小,因為技術映射和 I/O 引腳利用率遠非理想。用于驗證的 FPGA 在 1990 年代初期可以容納1K 門,如今已增長到 100K 或更多。
邏輯仿真系統很快就采用了大量 FPGA 并將它們用作邏輯驗證工具。編譯器將仿真特定的 HDL 綜合到 FPGA 原語中,運行時序分析以避免引入保持時間違規,將網表劃分為 FPGA 和電路板,觀察容量和引腳約束以及關鍵時序路徑,路由 FPGA 間互連,并運行每個 FPGA 上的芯片級
布局和布線。在運行時,對 FPGA 和互連進行編程,并對邏輯設計結果進行實時仿真。通常可實現多 MHz 系統時鐘速率。仿真設計可以直接插入目標硬件的減速版本,并以真實應用程序、操作系統和數據集作為激勵進行操作。或者,可以使用預編譯向量進行非常大的回歸測試。邏輯仿真中最困難的技術挑戰是互連通用 FPGA, 可擴展且經濟實惠的方式,無需浪費 FPGA 容量或引入路由延遲過大。大多數商業仿真器,例如 1992 年之后的 Quickturn 系統,使用單獨的部分交叉互連架構,構建有交叉路由芯片的層次結構。 Ikos 仿真器在網格中直接將 FPGA 相互互連,并與設計時鐘同步地對引腳上的時間復用信號。兩種互連架構都使 FPGA 的內部布線相互依賴,因此很難在不進行重大重新編譯的情況下逐步更改設計人員或插入探針。
另一個主要的技術挑戰是邏輯仿真編譯器 。多級、多路時序驅動分區是一個大型且 NP 難的問題,可能需要很長時間才能執行,并且對并行加速有抵抗力。需要一個仿真設計數據庫將 HDL 級名稱映射到 FPGA 硬件以進行運行時調試。通常需要大量用戶干預才能成功編譯,尤其是在識別時鐘樹以對涉及許多門控時鐘的設計進行時序分析時。
邏輯仿真,以 FPGA 和基于周期的形式,今天廣泛用于主要的微處理器開發項目、多媒體、電信和網絡設計。有趣的是,由于仿真器提供的可見性,用戶發現后硅片的價值與預流片一樣多。可以通過邏輯仿真器的內置邏輯分析器觀察系統級問題,并在實際操作期間訪問設計內部,這對于真正的硅來說是不切實際的。可以證明工程變更單可以在硅片重新設計之前糾正問題。然而,邏輯仿真硬件和軟件的費用以及在設計周期中使用它的持續困難,通常需要全職專家人員,已將邏輯仿真限制在那些能夠負擔得起的大型項目中。
分析
即使是最強大的模擬器或仿真器也只能增加信心,不能保證大型設計中的所有重要狀態和序列都經過檢查。非常需要分析得出經過證實的結論。形式驗證工具可以在許多重要情況下提供此類分析。形式驗證研究中出現的大多數工具要么是模型檢查器,它分析設計以查看它是否滿足設計者定義的屬性,要么是等效檢查器,它比較兩個設計以證明它們在邏輯上是相同的。到目前為止,所有實際的形式驗證都在功能級別,僅在周期級別處理時間,這取決于靜態時序分析的使用,以及基于周期的仿真。
模型檢查器
模型檢查器根據邏輯設計中的一組可達狀態檢查時間邏輯中表達的條件(稱為屬性),以證明屬性為真。早期的研究基于有限狀態模型 (FSM) 的顯式狀態表示,它只能描述相對較小的系統。但是任何有意義的規模的系統都有驚人數量的總狀態,需要更好的表示。狀態空間爆炸問題
主導了研究并限制了模型檢查工具的范圍 。 Bryant 在 1986 年對有序二元決策圖 (OBDD) 的突破性發展為符號模型檢查開辟了道路。
一年之內,摩托羅拉的 Pixley、IBM 的 Kukula、CMU 的 McMillan 以及 Bull 的 Madre 和 Coudert 都提出或開發了模型檢查工具,這些工具使用 OBDD 以緊湊和規范的方式表示可達狀態集以及它們之間的關系形式。當模型不滿足條件時,模型檢查的一個重要的附加結果可以是特定的反例 ,可用于模擬以識別和糾正錯誤。后來的大學系統,特別是 SMV [82] 和 VIS [16],進一步發展了模型檢查技術,并在今天被使用。
模型檢查器通常僅限于模塊級分析,因為確定具有一致性的數百個寄存器的可達狀態集是不切實際的,因為 OBDD 表示的大小會爆炸式增長。它們還需要非常密集的用戶培訓和支持,才能正確表達時間邏輯屬性。驗證的準確性取決于用戶聲明的屬性的正確性和完整性。模型檢查器已成功用于檢查協議屬性,例如緩存一致性實現,避免死鎖或活鎖,或安全關鍵控制系統,例如汽車安全氣囊。
等效檢查器
等效檢查器正式比較兩個設計以證明它們在邏輯上是否等效。該過程原則上是理想的,因為不涉及用戶定義的屬性或測試平臺。通常,設計的 RTL 版本使用仿真或仿真進行驗證,將其確立為黃金版本。此黃金版本可作為等效性檢查方法開始時的功能參考。設計的每個后續版本都是黃金數據庫中指定和模擬的行為的實現。一旦一個實施數據庫被證明是等效的,它就可以用作任何后續等效比較的參考。例如,設計的扁平化門級實現版本可以證明等同于其分層 HDL 源。等效性檢查對于驗證具有明確更高級別定義的非常大的組合塊也非常強大,比如乘數。
等效性檢查器通過應用正式的數學算法來確定一個設計中每個比較點的邏輯函數是否與另一設計中的匹配比較點等效。為了實現這一點,該工具將電路分割成邏輯錐體,邊界由源點和端點表示,例如主 I/O 和寄存器。隨著每個邏輯錐的邊界點在兩個設計之間對齊,求解器可以使用兩個設計的功能描述來確定它們的等價性。
第一個等效檢查器是在 1980 年左右為 IBM 的 3081 項目開發的 [106]。早期的等價檢查器使用布爾表示,這幾乎類似于 OBDD,但不是規范的。 Bryant 開發的OBDDs [20] 被立即用于提供研究工具的規范形式。現代商業等效檢查器,1994 年的 Chrysalis 和 1997 年的 Synopsys Formality,帶來了這項技術主流設計項目。 Formality 最重要的創新是它使用了許多不同的求解器,這些求解器是根據分析問題自動選擇的。它基于用于復雜控制邏輯的 OBDD,而其他算法用于大型組合數據路徑元素,如乘法器,以在合理的時間和空間內獲得具有各種特性的設計結果。
等價性檢查器和模型檢查器對計算時間和內存空間的要求都非常高,并且通常一次超過幾十萬個門是不切實際的。由于幾乎所有大型設計都按照該粒度級別進行模塊化,因此在模塊級別應用分析非常有用。
未來:SoC
只要摩爾定律成立,驗證工作的超線性增長就沒有停止的跡象。到目前為止,抽象、加速和分析的組合已經上升以應對挑戰。借助現代模擬和形式驗證工具,當今大多數芯片開發項目都成功地獲得了正確的第一塊芯片。更大的芯片和系統設計通過添加加速或仿真,或通過使用 FPGA
進行原型設計而取得成功。
片上系統 (SoC) 最近在經濟上變得越來越受歡迎,帶來了最新和最大的挑戰,并將在不久的將來主導驗證問題。 SoC 很難驗證。首先,因為和以前一樣,他們增加的門數需要每個周期更多的工作和更多的周期來獲得驗證覆蓋。其次,由于 SoC 是系統,系統包括處理器,而處理器運行代碼。系統級驗證問題主要是硬件/軟件協同驗證問題之一。嵌入式軟件操作系統、驅動程序和應用程序以及 SoC 硬件必須在設計周期中由硬件和軟件工程師共同驗證。這大大增加了每個工作日所需的驗證周期數。運行代碼需要單線程驗證,因此沒有可用的任務級并行性。和以前一樣,通過抽象、加速和分析的組合來應對這一挑戰。
Eagle Design Automation 將系統軟件執行抽象到源代碼或指令集級別與 HDL 邏輯仿真相結合,形成硬件/軟件協同驗證工具集。系統的處理器-內存部分由指令集模擬器建模,它可以實現每秒數十萬個指令周期,或者直接執行編譯到驗證工作站的嵌入式源代碼,這是甚至更快。系統硬件的其余部分駐留在傳統的 HDL 邏輯模擬器中。兩者通過 Eaglei 系統連接,該系統將處理器內存軟件執行嵌入到虛擬軟件處理器 (VSP) 中。 VSP 通過處理器總線的總線功能模型與硬件仿真交互。當軟件與模擬硬件交互時,VSP 和邏輯模擬器可以耦合在一起以遵循相同的模擬時間步長,或者當軟件獨立運行時解耦,大多數時候,允許全速執行軟件。耦合控制可以是靜態的或動態的,由硬
件或軟件活動觸發。通過這種方式,HW-SW 系統可以在標準工作站上的合理時間內通過數百萬次循環進行驗證。
將 HDL 之上的硬件描述移動到系統級表示是通過抽象獲得驗證性能的另一種方法。一旦系統級語言(例如 SystemC)可以在通用邏輯設計中與系統級綜合工具一起使用,就像今天的 HDL 一樣,這將支持基于系統的設計方法,通過抽象獲得高驗證性能。
通過對每個抽象、加速和分析技術的漸進改進,驗證能力將繼續增強。更復雜的 HDL 分析和編譯技術不斷提高HDL 仿真器的性能。 FPGA 和用于加速的編譯器技術繼續快速增長,這得益于 FPGA 在硬件產品中的廣泛接受。可以期待形式驗證中新的更好的算法和實現,因為這是學術
界和工業界的一個活躍研究領域。
我們還將看到抽象、加速和分析技術之間越來越多的協同作用。分析技術覆蓋邏輯很透徹,但不能深入時間,而模擬可以覆蓋很長時間而不完整。在設計驗證和測試臺生成方面,這些互補技術可以結合起來發揮各自的優勢。繼續研究將 FPGA 加速技術應用于抽象 HDL 和系統級仿真的新方法。我們甚至可能會在形式驗證中看到求解器的FPGA 加速。
綜合
開端
邏輯綜合可以追溯到它在開關理論工作中的早期開端。Quine 和 McCluskey 的早期工作解決了布爾函數的簡化或最小化問題。由于在計算機設計中遇到了最苛刻的邏輯設計,因此很自然地,IBM
在許多算法的發明和許多內部系統的開發中發揮了舉足輕重的作用。 MINI 是一個早期的系統,它使用啟發式技術進行兩級優化。 IBM 的 LSS 是一個早期的多級邏輯綜合系統,用于尋找已制造設計的用途。LSS 是一個基于規則的系統,它首先對電路的技術獨立表示進行操作,然后進一步映射和優化電路。
LSS 以及另一個 IBM 綜合系統 Yorktown Silicon Compiler (YSC) 的工作在許多方面促成了 1980 年代邏輯綜合研究的爆炸性增長。不僅來自發表論文,而且作為許多研究人員的訓練場,IBM 綜合研究為一代研究人員提供了必要的背景。大學中值得注意的努力包括科羅拉多大學博爾德分校的 BOLD 系統、伯克利的 MIS 和通用電氣的蘇格拉底。
所有這些系統都旨在優化多級邏輯,它們使用的方法可以粗略地描述為算法或基于規則(或兩者兼而有之)。在MIS 中使用了算法方法,而 Socrates 以及較早的 LSS,兩者都使用基于規則的方法。在任何一種情況下,最佳解決方案過去和現在仍然不具備計算可行性。然后優化系統的目標就變成了以極大加速的方式匹配或擊敗人類設計師。
在業務方面,我們發現在 EDA 公司的“第二波”中首次使用了邏輯操縱。如果說第一波 EDA 公司專注于物理設計和驗證,那么第二波則專注于邏輯設計。 Daisy、Mentor 和 Valid 公司都提供原理圖輸入作為邏輯仿真程序的前端。雖然這些產品沒有使用邏輯優化技術,但其中一些產品確實提供了基本的邏輯操作,例如可以操作邏輯示意圖的“氣泡推動”(相位分配)。
邏輯優化和設計編譯器
1980 年代中后期出現了一些公司,它們專注于將邏輯綜合方面的學術研究成果商業化。這個市場的早期進入者是 Trimeter、Silc 和 Optimal Solutions Inc.(后來更名為 Synopsys)。在下文中,我們將專注于 Design Compiler 系列綜合產品的技術和業務發展。
當新技術應用于現實世界的設計問題時,進一步創新的機會就會變得明顯,因為必要性推動了進一步創新以滿足市場需求。 Design Compiler 在這種環境中的早期成功可以追溯到許多技術和商業因素。第一個是 Design Compiler 的最初用途是優化預先存在的邏輯設計。在這種情況下,用戶可以嘗試優化功能并使他們的設計更小、更快,而無需更改他們的設計方法。對設計方法的影響是接受任何新 EDA 工具的關鍵因素。雖然今天在設計和 EDA 社區中對這一點的理解要好得多,但在 1980 年代后期,人們并不普遍理解這可能是工具接受度的成敗命題。 僅優化方法的一個推論是使用 Design Compiler 作為移植和重新優化工具,可以將設計從一種 ASIC 庫或技術轉移到另一種。Design Compiler 可能就是以這種方式首先被大量使用的。
這種初始使用場景是由多種因素促成的。在業務方面,大量 ASIC 庫的可用性是一個關鍵優勢。這是由早期的頂級客戶需求以及對具有支持和工具開發的硅供應商的強烈內部關注共同推動的。開發庫編譯器是為了支持封裝所有用于邏輯綜合的相關數據。最初,這僅包含有關邏輯功能和連接性、面積和延遲的信息。今天,這些庫包含有關線負載的信息、靜態和動態功耗以及不斷增加的物理信息量。今天,這得到了 Liberty) .lib STAMP 格式的支持,這些格式通過 TAP-IN 程序獲得許可。
早期接受 Design Compiler 的另一個關鍵是原理圖生成的可用性。沒有自然和直觀的原理圖生成,邏輯設計人員對邏輯優化的初步接受會顯著放緩。當時的邏輯設計師最熟悉原理圖輸入,習慣于用原理圖的方式思考。優化的輸出必須以這種方式呈現,這樣設計師不僅可以讓自己相信改進的設計特性,而且更重要的是,可以讓自己相信新設計的正確性。
也許 Design Compiler 最初成功的最大原因是它專注于性能驅動的設計。更準確地說,優化目標是在最小化面積的同時滿足設計人員的時序約束。通過不斷改變時序約束,可以獲得設計權衡曲線上的一整套解決方案。此設計權衡曲線繪制了最長路徑延遲與實現所述功能所需的面積之間的關系。這條曲線也被稱為香蕉曲線。另一個幸存下來的藝術術語是“結果質量”。通常縮寫為“QoR”。如果一種工具或算法的香蕉曲線完全低于任何其他方法的香蕉曲線結果,則其 QoR 被證明是優越的。
實現綜合時序 QoR 有兩項關鍵技術。第一個是具有嵌入式、增量靜態時序分析功能。如果沒有良好的時序,包括對時鐘、延遲建模、互連延遲估計和約束管理的透徹理解,就不可能實現高質量的設計。靜態計時引擎必須是增量的,以支持潛在優化移動的延遲成本。它還必須快速且內存高效,因為它將在許多綜合過程中被多次調用。但是良好的靜態時序分析還需要良好的時序建模才能獲得準確的結果。在 80 年代后期,很明顯簡單的線性延遲模型不再足以描述門延遲 。為了解決這種情況,開發了一種查表延遲模型。該模型稱為非線性延遲模型(NLDM), 將單元延遲和輸出斜率建模為輸入斜率和輸出電容的函數。這些技術以及稱為線路負載模型 (WLM) 的路由估計技術的發展,使得能夠準確估計到達時間和合成程序所需的時間。第二個關鍵技術是時序驅動綜合,它是技術和算法的集合。它們包括技術獨立領域中的時序驅動結構化,以及許多對技術映射網表進行操作的技術。
1980 年代中期,邏輯綜合在設計流程中占據一席之地的最大競爭是“硅編譯器”的概念。我們指的是根據初始規范生成最終布局的編譯器。對于哪種技術能帶來最大的好處,市場存在很多不確定性。最后,由于幾個原因,邏輯綜合加上自動布局布線贏得了幾乎所有的業務。首先,在大多數情況下,硅編譯產生的設計比綜合和 APR 產生的設計更大、更慢,導致設計缺乏競爭力。其次,硅編譯沒有應用的普遍性。
由基于綜合的設計流程提供。硅編譯器要么嚴格針對特定設計(即生產 8051),要么編譯為固定的微體系結構,再次導致設計缺乏競爭力。
RTL 綜合
早期的 Synopsys 文獻試圖向大量的邏輯設計者描述,他們當時不理解“方程”的綜合
綜合=翻譯+優化綜合=翻譯+優化綜合=翻譯+優化
我們已經描述了這個方程中的優化項。我們現在將注意力轉向翻譯術語。
硬件描述語言多年來一直是一個活躍的研究領域,CHDL 的悠久歷史證明了這一點(另請參見驗證
部分中關于 HDL 的評論)。然而,正是 Verilog 的引入使 HDL 方法能夠站穩腳跟。用戶首先被 Verilog 吸引,不是因為它的語言,而是因為它是可用的最快的門級模擬器。VHDL 然后在 1980 年代中期被引入,作為基于 Ada 語法的 HDL,并在 VHSIC 程序下設計。使用這些 HDL 作為綜合輸入的一個絆腳石是它們都被設計為仿真語言。那時,如何對語言進行子集化以及如何將綜合語義疊加到它們上并不明顯。實際上, Verilog 和 VHDL 有許多相互競爭的子集和編碼風格。雖然大多數工作依賴于 HDL 中的并發分配語句來模擬硬件的并發性,但 Synopsys 率先使用順序語句來暗示組
合和順序邏輯。這具有重要影響,使 HDL 更普遍有用,因此被設計社區接受。這種“Synopsys 風格”或“Synopsys 子集”(當時被稱為“Synopsys 風格”或“Synopsys 子集”)成為事實上的標準,其影響在今天最近批準的 VHDL 寄存器傳輸的 IEEE 1076.6 標準中可見一斑。
一旦設計人員開始使用這些語言進行門級仿真,他們就可以試驗更多面向軟件的語言結構,例如“if. then.else”和“case”,以及對時鐘同步進行建模的特定硬件建模語句。很快就進行了 RTL 合成實驗。但隨著設計師對方法的信心逐漸增強,這種變化一開始只是緩慢地實現。正是通過這種方式,Design Compiler 和 Verilog XL 能夠將 RTL 方法引導到 ASIC 設計社區。
1980 年代的大多數 HDL 綜合研究都集中在行為級綜合,而不是 RTL 綜合。一個值得注意的例外是伯克利的 BDSYN項目。在這種方法中,放松了數據和控制的嚴格分離,將所有生成的邏輯合并到一個初始設計網表中,然后可以在 RTL 和邏輯級別進一步優化。在進行任何 RTL 優化之前,RTL 綜合從 HDL 到初始電路的相當直接的映射開始。語言文本中的流控制成為電路中的數據控制邏輯(多路復用器)。迭代變得完全展開并用于構建并行硬件。時鐘語句會導致內存元素的推斷,新手 RTL 設計者的禍根仍然是控制流分支中不完整的分配將導致透明鎖存器的推斷。本領域技術人員從 Verilog 文本片段中直接繪制合成電路的能力證明了這種初始映射是直接的 。在這個初始階段也可以完成許多類似 SW 編譯器的優化,例如死代碼消除和乘以 2 的冪時的強度降低。一般來說,不需要時序信息的技術也可以在這個時候進行,比如使用規范的有符號數字表示,將乘以一個常數轉化為一系列的加、減、位移(強度降低的另一種形式)。
在初始電路綜合之后,還有許多 RTL 優化可以顯著提高性能和面積。由于其中大多數涉及設計權衡,因此有必要在綜合邏輯的上下文中執行它們。因此,在編譯流程的中間構建了一個 RTL 優化子系統。通過使用相同的靜態時序分析,以及關于算子時序和面積成本的比特級信息,可以構建有效的算法來實現時序驅動的資源共享、實現選擇(RTL 組件的性能區域權衡)、最小化算子樹重構延遲和公共子表達式消除。對于 RTL 操作符(例如加法和減法)以及控制信號,此處擁有準確的位級信息至關重要。 這是必要的,因為關鍵路徑可以在控制和數據之間交錯,并且許多 RTL 優化傾向于移動設計中的控制信號。為了支持 RTL 組件的準確延遲和面積成本計算,構建了初始 DesignWare 子系統。該子系統管理所有 RTL 操作符的構建、成本計算和建模,并在開發庫時產生極大的靈活性和豐富性。允許在 HDL 中表達 RTL 運算符本身的描述,然后以遞歸方式調用綜合程序,以便“原位”計算所有時序信息,從而使該子系統具有邏輯綜合系統的所有功能和靈活性.通過添加將任意函數指定為 HDL 源中的運算符的功能,這些 RTL 優化甚至可以在用戶定義和設計的組件上執行。
從那時起,邏輯和 RTL 綜合方面的創新和改進不斷涌現。不到十年,5000-10 000 個門的模塊過去需要 10 個以上的 CPU 小時,而今天,在四個并行 CPU 上運行的時間不到4 小時,就可以實現一百萬個門的自上而下的自動芯片合成。此外,現在可以同時執行最小/最大延遲優化。也就是說,不再需要單獨運行以進行最大延遲優化(設置約束),然后是最小路徑(保持約束)修復。時序 QoR 也得到了顯著改善。關鍵路徑再合成等技術和技術映射電路的各種轉換已使時序QoR 提高了 25% 以上。 RTL 算法優化的進步已經使用進位保存算法重構操作樹以獲得最小延遲。這種持續不斷的創新使現代綜合工具產生的設計能夠使用現代技術以超過 800 MHz 的時鐘頻率運行。
OBDD 的發明幾乎與驗證一樣有益于綜合。 Synopsys 的一項早期使用是 Design Compiler 的 check_design 命令提供的非常簡單的等效性檢查。此功能基于 OBDD 包的有效實現。雖然這個簡單的命令不具備等效性檢查產品 Formality 的容量、穩健性和調試能力,但它被證明對邏輯和 RTL 優化算法的開發人員來說是無價的。可以在開發過程中使用 check_design 命令檢查轉換和優化的正確性。之后,這些檢查可以添加到回歸測試套件中,以確保錯誤的邏輯錯誤不會蔓延到代碼庫中。 OBDD 的另一個用途是在 RTL 綜合期間表示和操縱控制邏輯。在所有這些應用中,OBDD 的大小是一個關鍵問題。 動態變量排序和篩選算法 [95] 的發明已被證明是使 OBDD 更普遍有用的關鍵組成部分。
順序映射和優化
支持組合邏輯綜合的是時序元素的綜合和映射。最初的 HDL 設計描述決定了將被推斷的存儲器元件的類型(即觸發器或透明鎖存器高電平或低電平有效)。但是現代ASIC 庫有各種各樣的庫元素可以實現必要的功能。這些元素的選擇會對最終設計的面積和時間產生影響。正是在這個階段,可以通過使用啟用掃描的觸發器并自動更新設計的時序約束來完成時序元件的可測試性設計(DFT)。此外,映射到多位寄存器可以在設計實現的布局和布線階段產生積極影響。
一種有望提高設計性能的順序優化技術是重新定時。但是從理論到實際工業應用的道路比最初想象的要長。絆腳石是大多數設計人員使用各種復雜的順序元素,經典的重定時算法無法很好地處理這些元素。這些元件可能提供異步或同步復位輸入以及同步負載使能輸入(也稱為時鐘使能)。這些類型現在可以使用多類重定時技術進行優化。
擴大合成范圍
我們已經提到如何在順序映射階段插入掃描觸發器以實現單程 DFT 設計流程。除了可測試性之外,還有其他可以作為目標。功率優化綜合是這些技術之一。功率優化可以在門級、RT 級或行為級執行。時鐘門控是一種眾所周知的用于節省功耗的技術,但整個 EDA 工具鏈都需要支持實現高生產率。RT 和行為級別的其他技術包括操作隔離,它使用指示是否需要操作者輸出的控制信號來隔離操作的輸入。這樣,在不需要結果時,實現操作員的邏輯就不會受到更改輸入的影響。這些技術可節省超過 40% 的電能,對設計周期和設計質量的影響最小。
雖然 DesignWare 子系統最初的目的是支持 RTL 優化技術,但功能集啟用了"軟 IP"設計重用,這一點很快就變得很明顯。今天,最大的可用庫和最廣泛重復使用的組件都在設計軟件基礎庫中。該圖書館是技術獨立、預先驗證的虛擬微型建筑組件的廣泛集合。此庫包含基本 RTL 組件,如添加器和乘數,其中包含由 RTL 優化算法利用的多個實現。此外,還包括更復雜的組件,如 DW8051 微控制器和 DWPCI 總線接口。設計軟件開發人員和其他工具和方法的可用性進一步增強了設計重用的好處。
行為綜合
行為綜合長期以來一直是學術研究的一個課題]。行為合成的對象是雙重的。首先,通過在更高的抽象水平上描述系統,可以提高設計效率。其次,由于設計轉型也處于較高水平,因此可以探索更大的可行設計空間,從而產生更好的設計。Synopsys 于 1994 年 11 月首次交付行為編譯器。行為編譯器中體現了許多創新。首先,開發了一種處理計時限制、順序操作員建模、預鏈操作和分層調度的新技術,方法稱為"行為模板"。此外,還開發了一個一致的輸入/輸出 (I/O) 方法,引
入了"周期固定,“超狀態固定"和"自由浮動” I/O 調度模式。 這些對于理解如何交互和驗證行為合成產生的設計是必要的。最后,高質量設計的關鍵仍然是準確的面積和時間估計。對于將在計劃、分配和綁定 HW 處理器上實施的操作員,以及控制信號延遲的早期估計,情況都是如此。
雖然行為合成尚未實現邏輯合成的無處不在,但它在設計機頂盒、ATM 交換機、手機、無線 LAN、數碼相機和各種圖像處理 HW 中找到了杠桿作用。最近的一份白皮書詳細介紹了一個設計團隊在設計帶有 20 000 條(M4 宏擴展后 40 000 行)行為 Verilog 行的分組引擎時使用行為編譯器的經驗。一個不變的主題是,對于一個有經驗的 RTL 設計師來說,使用行為編譯器是一個陡峭的
學習曲線,因為 FSM 方面的思考是根深蒂固的,需要有意識的努力改變這些思維過程。即使面臨這些挑戰,也已經制造了數百個具有行為編譯器合成模塊的芯片。
物理綜合
在千年的過去幾年中,ASIC 執行中的主要挑戰之一是在時間關閉領域。定時關閉是指 RTL 預測的計時和邏輯合成在物理設計階段后實際實現的理想屬性。情況往往并非如此。這種差異的根源在于合成過程中互連延遲的建模。現階段無法準確估計互連延遲,并且采用統計技術,該技術使用網絡的引腳計數和包含網絡的塊的大小,將網絡索引到電容估計的查找表中。這種估計技術與性能由最壞情況延遲決定的事實之間存在根本的不匹配,這實際上依賴于偏頗的平均電容。
在如何解決時間關閉問題方面有許多建議。有人觀察到,如果采用分層設計實現,傳統合成方法可以保持。在此方法中,芯片被合成為低于某個閾值的多個方塊,通常在 50K 到 100K 門范圍內引用。對于擁有 2000 到 3000 個此類塊的芯片的全球互連的預算、規劃和實施,可能證明具有
挑戰性。另一種方法是在放置和路由后使用不斷延遲或增益的方法進行門大小。此技術取決于連續大小門的能力,延遲也是電容加載的線性函數。與此相對應的是許多 ASIC 庫中離散大小的少量,電匯電阻可能是造成(非線性)線延遲的一個重要因素,并且由于輸入坡度依賴,閘門延遲本身可能是非線性的。 話雖如此,當與具有豐富驅動優勢的庫一起使用時,這種方法可以在時間 QoR 方面有所改進。時間關閉的方法似乎最有希望,即將合成和放置組合成單個實現通行證。此通行證將 RTL 設計描述作為輸入,并生成優化和(合法)放置的凈列表作為輸出。通過這種方式,優化程序可以訪問設計的位置,這允許準確估計最終的電線長度。
數據路徑合成
專門技術通常可以在重點問題領域獲得顯著的效率。數據路徑設計傳統上由專家設計師手動完成。構建高質量數據路徑設計的技術非常了解,可以構建設計時使用的規則形式表達。使用這些規則可導致具有良好性能和區域的電路。此電路可通過通用邏輯優化工具進行后處理,以便
進行增量改進。提供結構良好、高質量的投入邏輯優化通常會創建一個更好的電路,而不是提供功能正確的輸入,結構不完善。
數據路徑合成工具(如 Synopsys 的模塊編譯器)將數據路徑設計規則作為其合成引擎的一部分。這些規則根據周圍邏輯的定時上下文動態配置正在合成的數據路徑設計。因此,初始電路結構并非僅由電路的功能靜態決定。初始電路構建以定時驅動的方式完成。這可以創造更高質量的設計,并更快地編譯時間,特別是當設計者知道需要什么樣的結構時,而不是依靠下游邏輯合成工具來基于時間限制來重組電路。建設性數據路徑合成技術的一個關鍵要素是,放置也可以建設性地確定。數據路徑通常以有點切片的方式放置,也稱為瓷磚。在瓷磚中,每個單元格被分配到稱為相對位置的行和列位置。 行表示位切片,列表示單獨的數據路函數。專門的數據路徑放置器閱讀此瓷磚信息,并將其轉換為真正的規律放置。集成數據路徑合成和物理合成可導致放置門,同時實現結構化放置和定時收斂。
FPGA 合成
FPGA 設計為邏輯優化技術提供了不同的范式。由于芯片已經設計和制造與專用資源,對其中任何一個的過度需求,邏輯,路由,或切換,導致設計變得不可行。一旦設計適合特定的 FPGA 部分,挑戰在于實現性能目標。FPGA 技術映射問題與基層 ASIC 技術映射問題非常相似。然而,用于解決這兩個問題的算法在今天的合成工具中大相徑庭。使用邏輯門庫的 ASIC 方法對于 FPGA 技術不實用,尤其是在基于 LUT 的 FPGA 中(LUT 可以編程來計算其輸入的功能)。 與典型的 ASIC 技術制圖算法相比,開發了 FPGA 特定的制圖算法,以利用 LUT FPGA 和防熔融 FPGA 技術的特殊性,使其在運行時間上更有效率,并產生更好的結果質量。
FPGA 的性能驅動設計也面臨巨大挑戰。這是由于合成工具的驅動功能選擇有限,因為路由架構中隱藏了大部分緩沖。此外,由于互連的可編程性,FPGA 始終在互連中遇到重大延遲。從某種意義上說,挑戰在于 ASIC 合成已經從時間趨同的角度趕上了 FPGA 合成的挑戰。FPGA 實施的一個有趣方法是利用在 FPGA 環境中為 ASIC 開發的新統一合成和放置解決方案。
未來
合成的未來是它必須成長和伸展,以滿足新的千禧需求。這意味著接受芯片設計上的系統異質環境。在這方面,具有類庫的 C/C 正在成為指定系統描述的主要語言(如系統 C)。C/C 合成工具將利用最先進的成熟行為和 RTL 合成和邏輯優化功能。但是,C/C 在合成方面提出了一些獨特的挑戰。例如,使用指點合成描述是很困難的。由于別名等影響,對指點的分析以及指點指向的位置是無關小事。另一個挑戰是擴展可合成子集,以包括面向對象的功能,如虛擬功能、多重繼承等。
測試
過去 35 年對于參與測試的人們來說是一個非常激動人心的時刻。測試的目的是非常簡單地有效地識別有一個或多個缺陷的網絡,這使得網絡功能不正確。在制造過程中引入缺陷,以便在未打算連接的情況下創建連接,或在制造過程中的一個或多個層中中斷預期連接,或更改流程變量。這些短片、打開和過程變化可以在 IC 中以太多不同的方式表現出來,這使得創建詳盡的列表不切實際,更不用說為每個短片生成測試了。因此,在典型的測試方法中,利用缺陷的抽象來生成測試和評估測試。缺陷的抽象形式稱為缺陷,有許多不同類型的缺陷。 業內最流行的故障模型是單個卡住故障模型,該模型假定設計中的每個網都卡在邏輯值(零或一)。毫不奇怪,這種故障模型已經使用了多年,因為它體現了故障模型存在的原因,即效率。卡住的故障很容易建模,并且隨著設計大小線性地增長。邏輯網絡測試的大多數年頭都集中在連續網絡中對故障纏住的進行測試上。盡管我們進行了許多技術更改,但此故障模型在今天仍然被廣泛使用。為了生成測試模式來檢測這些故障模型,這些測試是手工生成的。1966年,J.保羅·羅斯提出了第一個完整的測試生成算法。此算法用于組合網絡。D-算法在適用時用于組合邏輯, 并修改的方式,它可以在有限的范圍用于順序邏輯。測試生成算法(如 D-算法目標故障)一次一個,并創建測試,刺激電路中的故障行為,并在設計中的可測量點觀察它。D-算法在輸入空間上進行有條不紊的搜索,以解決問題。多年來開發的其他算法基本上與 D-算法相同,具有使用搜索空間的不同方法。這些算法由許多啟發式算法提供輔助,這些啟發式算法指導算法的決策,以便更快地聚合在針對目標的名義故障的解決方案上。然而,作為一個行業,我們開始難以生成測試板,其中只有 500 個邏輯門與包,只有一個或兩個邏輯門在每個模塊上。因為這些困難,一些人開始尋找不同的方法來測試。許多人很清楚,連續網絡的自動測試生成跟不上網絡規模的增長速度。這種快速增長與摩爾定律的增長率的最初幾天有關。然而,設計界希望開發一些新的測試生成算法,以解決順序測試生成
問題,并有能力根據摩爾定律進行發展。迄今為止,僅在連續測試生成工具上獲得的成功非常有限。除了需要更強大的自動測試生成工具外,還需要有沒有導致測試器比賽條件的設計。這些比賽條件往往導致零收益情況(零收益是預期測試數據響應和芯片實際響應之間差異的結果)。由于比賽條件導致門密度的快速增長和生產問題,設計方式發生了許多變化。小林(70歲)在一篇日文一頁的論文中首次提到了新的設計方法。這項工作直到后來才在世界其他地方被發現。1975年(122年)和1977年IBM(48年),第一批工業用戶發布了由于自動測試生成復雜性而使設計方式發生巨大變化的工業用戶。這種新方法的核心思想是使除 RAM 或 ROM 以外的所有內存元素成為班次登記的一部分。這將允許從包的主要輸入和輸出中控制和觀察到每個內存元素。因此,順序網絡的內存元素可以被視為它們實際上是真正的主要輸入和輸出。 因此,人們現在可以利用 D-算法的獨特能力來生成組合邏輯測試,并能夠跟上不斷增加的門數。NEC 方法稱為 SCAN 方法,IBM 方法稱為級別敏感掃描設計,因此 LSSD 的名稱縮短。這種適應測試中實際困難的設計新方法一般被稱為 DFT 領域。雖然這些設計技術已經存在了多年,直到過去 5 至 7 年,該行業才開始認真進行 SCAN 設計。今天,我們有很大一部分設計,它采用 SCAN。因此,許多 CAD 供應商提供 SCAN 插入和自動測試模式生成工具,這些工具要求 SCAN 結構能夠生成非常復雜的順序設計的測試,并且使測試模式也免費競爭。
今天,我們正看著一個時代,它也以和摩爾定律完全相同的速度增加門數。全掃描的 DFT 技術或高比例的可掃描內存元件在業內似乎司空見慣。此外,可以自動生成100000000 訂單上的網絡測試!
然而,今天我們面臨的技術發展帶來了重大變化,對測試有直接影響。隨著我們繼續擴展到深度亞微米或納米技術,一些測試技術正在失去其有效性,除了上述在測試規模方面,新航路線圖提
到的許多其他問題稱為"大挑戰",也影響未來需要如何進行測試。其中包括 GHz 周期時間、對相聲的更高敏感度以及測試器成本,所有這些都對測試產生了影響。這 GHz 周期時間是指設計界在獲得時間關閉時所面臨的令人生畏的設計問題。對相聲的敏感度較高,使這個問題更加嚴重。測試成本正成為設計師和制造商的一個核心問題。我們目前認為,NRE 測試成本在 30% 到 45% 之間,而測試邏輯門的實際成本將等于 2012 年制造該門的成本。因此,隨著我們進入這些越來越復雜和密集的技術,測試的作用將擴大到更加成本敏感,并包括新的故障模型,非常簡單,有效地識別網絡與一個或多個缺陷,使這些網絡功能不正確并丟棄它們, 只運送 “好” 的。
總結
在過去的幾千年里,我們探索了商業 EDA,特別是在物理設計、綜合、模擬、驗證和測試領域。在未來十年中,對日益復雜的電子系統的需求將繼續增長。如第一節所述,以可重新編程/可重新配置的芯片和系統的形式進行市場的靈活性和快速時間將更加重要。已經宣布了用于 ASIC 和 SoC 使用的可重新配置邏輯內核,以及可重新配置的處理器的作物。盡管可編程設備在面積、性能和功率方面的成本高于硬連線設備,但總體技術增長將實現更多的可編程性。對于復雜性和性能需求增長速度低于技術所能交付的細分市場,基于平臺的可重新配置設計似乎是可能的。
在這種情況下,什么是合適的 EDA 工具套件,用于在現有平臺上實施設計?由于平臺定義了基本架構,需要很少的建筑設計。在最高級別上,系統設計工具可以指導 SW 和 HW 之間的系統功能劃分,以滿足性能目標,同時不溢出任何固定資源。硬件/SW 共同驗證環境的重要性將提高。但是,如果平臺上提供了足夠的內部調試可見性設施,則可以始終將第一硅甚至標準產品芯片運出。我們將回到 VLSI 之前的日子,當驗證以最終產品形式本身,實時 HW。合成和物理設計工具與目前使用的 FPGA 實施工具沒有根本區別,盡管可能更擅利于性能驅動設計。
將大網列表映射到 FPGA 上的問題與放置門陣列的問題類似:更復雜的是路由不太容易抽象,但更簡單的是隱藏了基礎技術(即,它始終正確,無需通過重疊進行建模等)。平臺設計中一個額外的挑戰是匹配處理器的性能和 ASIC 部分具有可重構部分的性能。這種性能匹配最終會反映到實施工具中。無論如何,解決復雜性和上市時間的更高級別工具的出現可能會大大增加 EDA 的可用市場。
用于設計這些平臺的 EDA 工具套件看起來很像今天的工具套件,但增加了處理縮放效應和不斷增加的復雜性的功能。解決這些問題的智力挑戰保持不變。然而,市場的性質可能會發生重大變化。例如,如上所述,掩碼驗證軟件如今約占物理 EDA 收入的一半。但是提取或設計規則檢查僅對平臺的設計而言是必要的,對于該平臺的編程而言不是必要的。同時,掩碼驗證將變得更加復雜,因此更加耗時。隨著用戶群縮小但工具使用更加密集,用于平臺設計的商業 EDA 的經濟性可能會發生變化。在平臺抽獎中獲勝的半導體供應商的內部 EDA 開發可能會繼續在利基應用中進行。 我們還預計半導體供應商和 EDA 供應商將繼續加快建立合作伙伴關系,以解決基于部署平臺的解決方案的復雜性。
總結
以上是生活随笔為你收集整理的三万字长文带你了解电子设计自动化(EDA)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言short精解
- 下一篇: 广告学毕业论文选题有哪些?