ASIC設計流程

2021-04-01 22:15:03 字數 5003 閱讀 3940

在過去的幾十年裡,微電子技術已經逐漸成熟起來。以前很長一段時間裡需要通過印刷電路版(pcb)實現的系統現在已經可以整合在乙個晶元上。隨著積體電路設計製造技術的快速發展,系統晶元(soc)正在成為現實。

在soc和其它半導體電路中有乙個重要的部分—專用積體電路(asic),它是一種用來完成某種特定功能的專用電路模組或者整塊晶元。例如,我們在pc或者大量的多**裝置中使用的**解碼器就可以做成一塊asic晶元。這些晶元除了要具備一定的效能外,在尺寸、耗電量、發熱量和成本方面也比一般的ic部件要求更高。

由於成本和效能上的優勢,從消費電子到空間技術領域,asic和具備asic模組的半導體晶元都得到了非常廣泛的應用。

從傳統意義上來說,設計asic是一項漫長而又乏味的工作,因為在設計過程中存在各種不同的步驟。同時它也是一項耗費巨大的工作,因為每乙個asic晶元都包含了上萬的ic部件,製造它們需要很高的成本。近年來,asic的使用越來越多,上述情況也得到了改善,這要歸功於魯棒性設計方法和自動電路綜合工具在晶元設計過程中的普遍應用。

這些自動綜合工具能夠幫助設計者完成從高層次的設計描述直到最後的晶元布圖和掩模階段的工作。伴隨著半導體晶元市場的不斷擴大,這些發展最終導致了asic晶元和整合了asic模組的晶元的需求迅速上公升。

asic的設計製造工序繁多,包括產品的概念定性、設計和綜合、驗證以及測試等等。一旦產品的效能要求確定下來以後,我們就需要完成從高層次設計,電路綜合一直到最低層次細節設計的工作。為了確保沒有錯誤發生,以及產品的效能要求能夠得到滿足,我們也需要在設計過程的每一階段進行功能驗證和校正。

這裡的測試指的是製造測試,包括檢查晶元是否在製造時存在缺陷。這是乙個比較複雜的問題,因為對於一塊製造出來的晶元來說,很難控制和觀察它的內部連線,而且修復它實際上也是不可能的。同時,半導體晶元的大規模生產要求測試過程在很短的時間內完成(一般小於一秒)。

因此,我們需要開發出一種可以在最短時間內檢查晶元功能的方法。在這一章,我們主要研究asic的設計問題以及它們同asic的其它方面(易測性、功耗優化等)的關係,並著重討論設計流程、設計方法、綜合和物理設計方面的問題,以及與此相關的計算機輔助設計(cad)工具。

本章接下來的小節將以如下的方式編排——第二節介紹設計方案和asic設計方法。第三節簡要描述了設計流程以及設計流程中的分層和設計抽象。餘下的小節講述體系結構設計,邏輯綜合和物理設計,每節的重要概念都將通過示例來說明。

asic設計是從最初的對所需ic部件的概念確定開始的。在產品的概念化階段,決定最適合這款晶元的設計風格(design style)是很重要的。所謂設計風格指的是為實現系統所採用的具有特定的工藝和技術的廣義設計方法。

特別的,設計風格決定了特定的設計步驟以及製造asic部件所用的元件庫。一般來說,設計風格是由設計的經濟因素決定的,也就是說,它是效能、**以及產量等的折衷。對於應用於國防系統和空間技術的晶元,儘管它們的產量很低,但是相對於較短的研發週期,以及高效能高穩定性而言,成本因素就可以放在次要的位置;而對於消費電子類晶元來說,高的產量能夠彌補高成本帶來的不足。

設計風格可以大致分為定製設計與半定製設計。定製設計,顧名思義,就是指為了最大可能地優化晶元效能或面積而對電路進行的純手工的設計。儘管從人力物力上來講這是一種耗費高的設計方案,但是它可以設計出高質量的電路,而且成本也可以因為大規模生產而有所降低。

半定製設計常常復用以前設計過的模組而限制了電路的「原創性」。這些模組通常都設計良好,經過優化且具備很好的特性,它們的使用有助於提高晶元的設計抽象等級。半定製的設計方案可以縮短設計週期,並且促進了用於設計和優化的cad工具的發展。

這些cad工具使得設計者可以從大量的原始模組庫中選擇模組,並將他們互聯以達到設計效能要求。隨著晶元複雜度的不斷提高,半定製設計正在逐漸成為一種規範。在當前的電路複雜水平下,採用半定製方案設計出來的晶元,它的效能損失同採用定製設計的晶元相比,一般還是非常少的。

半定製設計可以分為兩大類:基於單元的設計(cell-based design)和基於陣列的設計(array-based design)。它們又可以再細分,如圖64.

1所示。基於單元的設計使用預先設計好的單元庫或單元生成器,單元生成器可以根據單元的功能描述綜合出單元版圖。這些預設計好的單元已經根據不同的工藝流程進行了優化和特徵引數提取。

基於單元設計中的一種是基於標準單元的。在標準單元設計中,原始單元只需設計一次,設計後便存在了乙個適用於某個工藝流程或代工工廠的單元庫。庫中的每個單元在面積、時延和功耗上都進行了引數化。

每當代工工廠的工藝改變後,這些庫就必須更新。cad工具能夠自動地把設計對映到庫中的單元上去。這稱為工藝對映(technology mapping)或者庫繫結(library binding)。

一旦單元選擇好以後,就可以進行布局(placement)和連線(wire routing)了。

基於單元的設計的另一種使用了單元生成器(cell generator),它可以用來綜合基本的構造模組,這些構造模組被基於巨集單元(macro-cell-based)的設計所用。單元發生器以往只是用來做儲存器和可程式設計邏輯陣列(pla)的自動綜合,但現在的模組發生器(module generators)已經可以產生複雜的資料通道元件,例如乘法器。這些模組發生器是引數化的,也就是說,它們可以生成某乙個模組的不同例項,比如說8×8和16×16的乘法器。

與基於單元的設計不同,基於陣列的設計使用的是已經製造出來的矩陣。這些矩陣是由一些互不相連的稱為格點(site)的元件組成的。把它們按要求連線,就可以產生出需要的電路。

基於陣列的電路又可以分為預擴散(pre-diffused)和預連線(pre-wired)兩種,分別稱為掩模可程式設計邏輯陣列(mpga)和現場可程式設計邏輯陣列(fpga)。對於mpga,連線是在晶元的製造過程,也就是在代工工廠完成的。首先,包含了互不相連的格點陣列的晶圓片(wafer)被製造出來,然後格點通過程式設計經不同的佈線層被連線起來。

這些預擴散的陣列有好幾種,像門陣列、門海以及緊湊陣列(見圖64.1)。

對於預連線的fpga而言,對它程式設計在工廠外就能完成。fpga由實現通用邏輯的可程式設計模組陣列組成。在反熔絲類fpga中,連線可以通過對陣列中的反熔絲程式設計來完成。

反熔絲通常是開路的,一旦它通過合適的電流就變成短路。這樣,我們可以連線不同模組,從而設計出需要的電路。在另一種基於儲存器的fpga中,有關互聯和各種通用邏輯模組的配置資訊都儲存在陣列中的儲存器元件中。

目前陣列容量和效能都在不斷提高,fpga的使用變得越來越普及,並已廣泛應用於電路原型和驗證中。它的易於設計和定製的特點降低了設計的成本和週期。然而,fpga仍然是一項開銷大的技術,為了實現乙個一般複雜的電路,我們都需要用到大量的門陣列。

隨著fpga的容量和密度的改進,原型設計中每門的成本也在不斷降低。

綜上所述,電路設計者可以考慮好幾種設計風格,而究竟選哪一種則是各方面因素的折衷,例如成本、設計週期、效能以及可靠性。在實際應用中,幾乎所有的設計都是定製與半定製設計的混合體,尤其是基於單元的設計。根據不同的應用,設計者採用在半定製設計中嵌入一些定製的設計模組來達到要求。

由於只有一小塊重要的部件需要手工設計,這樣便降低了總的開銷。例如,微處理器通常有乙個定製設計的資料通道(datapath),而控制邏輯部分則是用基於單元的方法來綜合的。考慮到微處理器的設計複雜度,最近在cad方面作了一些努力,企圖使得自動化的資料通道設計成為可能。

由於擔心晶元流片失敗會使得設計的成本和週期增加,人們在原型和電路驗證階段一般都使用了基於fpga的技術。

對於任何乙個設計小組來說,他們要做的乙個重要決定就是採用哪種設計流程。設計流程定義了一套從最初的抽象概念到規格說明(specification)、設計、測試和製造的步驟。瀑布模式(wate***ll model)是asic開發的傳統模式。

在這種模式下,設計在不同的步驟和階段都需要涉及最細節的部分。這種模式可以使得工作在設計流程不同階段的小組之間的交流變得比較少。

設計過程從asic的規格說明以及高層次設計開始,後續包含了效能要求分析、體系設計、可執行的規格說明或者c模型的設計,以及規格說明的功能驗證等任務。然後以硬體描述語言(vhdl或verilog)在暫存器傳輸級(rtl)描述整個設計。rtl級編碼的功能要根據最初的規格說明的要求進行驗證。

最初的規格說明(例如c模型)被作為「**模型」,因為在後面設計的每個抽象層上都要對照它進行驗證。接下來rtl級描述被綜合成門級網表(gate-level netlist),經時序驗證工具驗證它是否滿足時序的約束條件。然後物理層設計小組對晶元作布圖規劃(floorplanning),布局各個單元,然後佈線,最後是流片和測試步驟(見圖64.

2)。這種設計方法有乙個缺點,就是當系統的複雜程度增加時,設計會變得越來越容易出錯。整個系統的測試必須要等到設計週期的後期才能進行。那時發現錯誤會顯得太晚,而且如果進行修正的話,常常會使得前面做過的設計需要重新做一次。

直接的後果便是設計工作重複多次,甚至可能流片多次。

asic設計的整個流程以及各個層次的細節如圖64.2所示。設計要求首先被表示成行為級模型,它包含了要在時序、面積、功耗、測試等約束條件下實現的設計功能。

行為級模型通常是可執行的,可能用c(或c++)語言寫成。行為級功能模型應經過大量的輸入條件驗證,以使得所有的要求和功能都得到滿足。

例如,我們需要開發一款新的微處理器,在初步結構設計後,設計小組開發出了一套指令集。這裡就確定了諸如管道流水線的數目,資料通道的寬度,暫存器組(register file)的大小,資料通道的部件型別數等等。然後指令集**器被開發出來使得處理器所面向的具體應用能夠在**器上**。

這樣就可以驗證處理器能否在給定的時間內完成該應用的運算任務。同樣,**器也可以驗證高層次設計是否正確並在資料通道結構中鑑別出資料和管道流水線中可能出現的危險。從**器中反饋回來的結果可以用來進一步修正處理器的指令集。

功能規格(行為級模型)通過手工或行為級綜合工具轉化成rtl級模型。rtl級模型使用諸如加法器、乘法器、暫存器、多路選擇器之類的暫存器級元件。這些元件通過互聯構成設計的結構模型。

rtl級模型經過**,主要是事件驅動**(見1.7節),來驗證它的功能及粗略的時序效能。經過測試和驗證的軟體功能模型(「**模型」)將在這一步中和**結果作比較。

接著rtl級模型通過邏輯綜合工具轉化成邏輯門級。邏輯門級設計由門或者門的組合組成,邏輯綜合通常都使用基於單元庫的設計方法。門級網表需要進行最廣泛的**,除了功能外,其他的諸如時序和功耗等約束條件也需要在此分析。

靜態時序分析(sta)工具可以分析電路的時序效能並判斷出關鍵路徑。然後,門級網表通過晶元區域布圖、單元布局和互聯佈線轉化成物理級設計版圖(layout),該版圖將用來產生製造晶元用的掩模組。

ASIC設計流程

傳統的asic設計流程 1 定義體系結構和電器規則 2 rtl級設計 3 如果設計中抱憾儲存單元,則插入bist 4 進行徹底的動態模擬,驗證設計的功能正確性 5 建立設計環境。包括工藝庫,以及其他的環境屬性 6 插入掃瞄鏈 還可插入jtag 並使用dc進行綜合 7 使用dc內建的靜態時序分析工具進...

設計流程管理

人員的協調溝通 本專案確保在不同層次和職能之間,就工程專案的全部情況,包括技術要求 質量要求,質量目標及完成情況等,以及實施的有效性在全院及專案組範圍內進行溝通,達到相互理解,相互信任,實現全專案人員參與的效果 資訊的協調溝通 本專案有關資訊的溝通協調,可採用演示文稿 會議 公告欄及各種 通訊工具等...

流程與設計

第一節了解流程 一 案例背景資訊 1 模組 通用技術 技術與設計2 2 年級 高二年級 3 學時數 2課時 二 教學設計 一 教學目標 1 知識技能目標 了解流程的涵義及作用。通過對典型的工作流程 生產工藝流案例的分析,理解工作流程和工藝流程涵義及區別。學會閱讀 製作簡單的流程圖。體會流程在日常生活...