① 集成電路設計的設計流程
集成電路設計可以大致分為數字集成電路設計和模擬集成電路設計兩大類。 參見:模擬電路及混合信號集成電路
集成電路設計的另一個大分支是模擬集成電路設計,這一分支通常關注電源集成電路、射頻集成電路等。由於現實世界的信號是模擬的,所以,在電子產品中,模-數、數-模相互轉換的集成電路也有著廣泛的應用。模擬集成電路包括運算放大器、線性整流器、鎖相環、振盪電路、有源濾波器等。相較數字集成電路設計,模擬集成電路設計與半導體器件的物理性質有著更大的關聯,例如其增益、電路匹配、功率耗散以及阻抗等等。模擬信號的放大和濾波要求電路對信號具備一定的保真度,因此模擬集成電路比數字集成電路使用了更多的大面積器件,集成度亦相對較低。
在微處理器和計算機輔助設計方法出現前,模擬集成電路完全採用人工設計的方法。由於人處理復雜問題的能力有限,因此當時的模擬集成電路通常是較為基本的電路,運算放大器集成電路就是一個典型的例子。在當時的情況下,這樣的集成電路可能會涉及十幾個晶體管以及它們之間的互連線。為了使模擬集成電路的設計能達到工業生產的級別,工程師需要採取多次迭代的方法以測試、排除故障。重復利用已經設計、驗證的設計,可以進一步構成更加復雜的集成電路。1970年代之後,計算機的價格逐漸下降,越來越多的工程師可以利用這種現代的工具來輔助設計,例如,他們使用編好的計算機程序進行模擬,便可獲得比之前人工計算、設計更高的精確度。SPICE是第一款針對模擬集成電路模擬的軟體,其字面意思是「以集成電路為重點的模擬程序(英語:Simulation Program with Integrated Circuit Emphasis)」 。基於計算機輔助設計的電路模擬工具能夠適應更加復雜的現代集成電路,特別是專用集成電路。使用計算機進行模擬,還可以使項目設計中的一些錯誤在硬體製造之前就被發現,從而減少因為反復測試、排除故障造成的大量成本。此外,計算機往往能夠完成一些極端復雜、繁瑣,人類無法勝任的任務,使得諸如蒙地卡羅方法等成為可能。實際硬體電路會遇到的與理想情況不一致的偏差,例如溫度偏差、器件中半導體摻雜濃度偏差,計算機模擬工具同樣可以進行模擬和處理。總之,計算機化的電路設計、模擬能夠使電路設計性能更佳,而且其可製造性可以得到更大的保障。盡管如此,相對數字集成電路,模擬集成電路的設計對工程師的經驗、權衡矛盾等方面的能力要求更嚴格。 參見:數字電路
粗略地說,數字集成電路可以分為以下基本步驟:系統定義、寄存器傳輸級設計、物理設計。而根據邏輯的抽象級別,設計又分為系統行為級、寄存器傳輸級、邏輯門級。設計人員需要合理地書寫功能代碼、設置綜合工具、驗證邏輯時序性能、規劃物理設計策略等等。在設計過程中的特定時間點,還需要多次進行邏輯功能、時序約束、設計規則方面的檢查、調試,以確保設計的最終成果合乎最初的設計收斂目標。
系統定義
參見:高級綜合
系統定義是進行集成電路設計的最初規劃,在此階段設計人員需要考慮系統的宏觀功能。設計人員可能會使用一些高抽象級建模語言和工具來完成硬體的描述,例如C語言、C++、SystemC、SystemVerilog等事務級建模語言,以及Simulink和MATLAB等工具對信號進行建模。盡管目前的主流是以寄存器傳輸級設計為中心,但已有一些直接從系統級描述向低抽象級描述(如邏輯門級結構描述)轉化的高級綜合(或稱行為級綜合)、高級驗證工具正處於發展階段。
系統定義階段,設計人員還對晶元預期的工藝、功耗、時鍾頻率、工作溫度等性能指標進行規劃。
寄存器傳輸級設計
參見:寄存器傳輸級、硬體描述語言、Verilog及VHDL
目前的集成電路設計常常在寄存器傳輸級上進行,利用硬體描述語言來描述數字集成電路的信號儲存以及信號在寄存器、存儲器、組合邏輯裝置和匯流排等邏輯單元之間傳輸的情況。在設計寄存器傳輸級代碼時,設計人員會將系統定義轉換為寄存器傳輸級的描述。設計人員在這一抽象層次最常使用的兩種硬體描述語言是Verilog、VHDL,二者分別於1995年和1987年由電氣電子工程師學會(IEEE)標准化。正由於有著硬體描述語言,設計人員可以把更多的精力放在功能的實現上,這比以往直接設計邏輯門級連線的方法學(使用硬體描述語言仍然可以直接設計門級網表,但是少有人如此工作)具有更高的效率。
設計驗證
參見:功能驗證、形式驗證、靜態時序分析、硬體驗證語言及高級驗證
設計人員完成寄存器傳輸級設計之後,會利用測試平台、形式驗證、斷言等方式來進行功能驗證,檢驗項目設計的正確性,如果有誤,則需要檢測之前設計文件中存在的漏洞。現代超大規模集成電路的整個設計過程中,驗證所需的時間和精力越來越多,甚至都超過了寄存器傳輸級設計本身,人們設置些專門針對驗證開發了新的工具和語言。
例如,要實現簡單的加法器或者更加復雜的算術邏輯單元,或利用觸發器實現有限狀態機,設計人員可能會編寫不同規模的硬體描述語言代碼。功能驗證是項復雜的任務,驗證人員需要為待測設計建立一個虛擬的外部環境,為待測設計提供輸入信號(這種人為添加的信號常用「激勵」這個術語來表示),然後觀察待測設計輸出埠的功能是否合乎設計規范。
當所設計的電路並非簡單的幾個輸入埠、輸出埠時,由於驗證需要盡可能地考慮到所有的輸入情況,因此對於激勵信號的定義會變得更加復雜,有時甚至需要用到形式驗證的方法。有時工程師會使用某些腳本語言(如Perl、Tcl)來編寫驗證程序,藉助計算機程序的高速處理來實現更大的測試覆蓋率。現代的硬體驗證語言可以提供一些專門針對驗證的特性,例如帶有約束的隨機化變數、覆蓋等等。作為硬體設計、驗證統一語言,SystemVerilog是以Verilog為基礎發展而來的,因此它同時具備了設計的特性和測試平台的特性,並引入了面向對象程序設計的思想,因此測試平台的編寫更加接近軟體測試。針對高級綜合,關於高級驗證的電子設計自動化工具也處於研究中。
現代集成電路的時鍾頻率已經到達了兆赫茲級別,而大量模塊內、模塊之間的時序關系極其復雜,因此,除了需要驗證電路的邏輯功能,還需要進行時序分析,即對信號在傳輸路徑上的延遲進行檢查,判斷其是否符合時序收斂要求。
邏輯綜合
主條目:邏輯綜合
工程師設計的硬體描述語言代碼一般是寄存器傳輸級的,在進行物理設計之前,需要使用邏輯綜合工具將寄存器傳輸級代碼轉換到針對特定工藝的邏輯門級網表,並完成邏輯化簡。
和人工進行邏輯優化需要藉助卡諾圖等類似,電子設計自動化工具來完成邏輯綜合也需要特定的演算法(如奎因-麥克拉斯基演算法等)來化簡設計人員定義的邏輯函數。輸入到自動綜合工具中的文件包括寄存器傳輸級硬體描述語言代碼、工藝庫、設計約束文件三大類,這些文件在不同的電子設計自動化工具套件系統中的格式可能不盡相同。邏輯綜合工具會產生一個優化後的門級網表,但是這個網表仍然是基於硬體描述語言的,這個網表在半導體晶元中的走線將在物理設計中來完。
選擇不同器件(如專用集成電路或者現場可編程門陣列等)對應的工藝庫來進行邏輯綜合,或者在綜合時設置了不同的約束策略,將產生不同的綜合結果。寄存器傳輸級代碼對於設計項目的邏計劃分、語言結構風格等因素會影響綜合後網表的效率。
目前大多數成熟的綜合工具大多數是基於寄存器傳輸級描述的,而基於系統級描述的高級綜合工具還處在發展階段。
由於工藝庫包含了標准延遲格式的時序信息,因此邏輯綜合後可以對該工藝下門級網表進行更加精確的靜態時序分析,進一步確保綜合前後的設計能夠實現相同的功能。
物理設計
主條目:物理設計
參見:布圖規劃、布局 (集成電路)、布線 (集成電路)、集成電路版圖及低功耗設計
邏輯綜合完成之後,通過引入器件製造公司提供的工藝信息,前面完成的設計將進入布圖規劃、布局、布線階段,工程人員需要根據延遲、功耗、面積等方面的約束信息,合理設置物理設計工具的參數,不斷調試,以獲取最佳的集成電路版圖,從而決定元件在晶圓上的物理位置。
隨著現代集成電路的特徵尺寸不斷下降,超大規模集成電路已經進入深亞微米級階段,互連線延遲對電路性能的影響已經達到甚至超過邏輯門延遲的影響。這時,需要考慮的因素包括線網的電容效應和線網電感效應,晶元內部電源線上大電流在線網電阻上造成的電壓降也會影響集成電路的穩定性。為了解決這些問題,同時緩解時鍾偏移、時鍾樹寄生參數的負面影響,合理的布局布線和邏輯設計、功能驗證等過程同等重要。隨著移動設備的發展,低功耗設計在集成電路設計中的地位愈加顯著。在物理設計階段,設計可以轉化成幾何圖形的表示方法,這稱為集成電路版圖,工業界有若干標准化的文件格式予以規范。
值得注意的是,電路實現的功能在之前的寄存器傳輸級設計中就已經確定。在物理設計階段,工程師不僅不能夠讓之前設計好的邏輯、時序功能在該階段的設計中被損壞,還要進一步優化晶元按照正確運行時的延遲時間、功耗、面積等方面的性能。在物理設計產生了初步版圖文件之後,工程師需要再次對集成電路進行功能、時序、設計規則、信號完整性等方面的驗證,以確保物理設計產生正確的硬體版圖文件。
後續:具體的工藝製造
參見:半導體器件製造、無廠半導體公司及晶圓代工
半導體製造工廠根據物理設計最後完成、已經通過各項檢查的標准化版圖文件,即可製造出實際的物理電路。
這個步驟不再屬於集成電路設計和計算機工程的范疇,而是直接進入半導體製造工藝領域,關注的重心亦轉向具體的材料、器件製作,例如光刻、刻蝕、物理氣相沉積、化學氣相沉積等。
傳統的集成電路公司能夠同時完成集成電路設計和集成電路製造。由於集成電路製造所需的設備、原料耗資巨大,因此一般的公司根本無力承受。一旦發生工藝節點的改變(如從65納米工藝進步到45納米工藝),公司可能需要花費相當高的成本來更換現有工藝設備,這給許多公司帶來了相當沉重的經濟負擔)。現在,有些公司逐漸放棄既設計、又製造的模式,業務范圍縮小至設計、驗證本身,而將具體的半導體工藝流程,委託給專門進行集成電路製造的工廠。上述無製造工藝(fabless),只進行設計、驗證公司被稱為無廠半導體公司,典型的例子包括高通、AMD、英偉達等;而專門負責製造的公司則被稱為晶圓代工廠,典型的例子包括台積電等。有一類特殊的無廠半導體公司,它們並不直接將設計項目送去工廠製造,而是把這些項目以IP核的形式封裝起來,作為商品銷售給其他無廠半導體公司,典型的例子包括ARM公司。
② FPGA開發設計基本流程 FPGA設計的注意事項
p>FPGA是一種特殊的集成電路,具有高度的可編程性和靈活性,在現代電子系統中發揮著越來越重要的作用。FPGA開發設計基本流程包括確定需求、設計硬體、模塊級模擬、整體設計、綜合和約束、布局和布線、物理模擬步驟。下面來了解下FPGA開發設計基本流程和注意事項。
一、FPGA開發設計基本流程
FPGA是一種可編程邏輯設備,提供了一種將數字電路設計和實現的靈活性。FPGA的設計流程包括以下幾個基本步驟。
1、確定需求
在進行FPGA設計之前,首先需要明確設計的需求和目標。這可能包括功能要求、性能要求、資源限制等。例如,設計一個圖像處理器需要明確需要支持的圖像處理演算法以及所需的帶寬和延遲要求。
2、設計硬體
設計師需要根據需求來設計硬體電路。這通常涉及使用硬體描述語言(HDL)如Verilog或VHDL來描述電路的功能和行為。設計師需要根據需求將整個電路劃分為各個模塊,並對每個模塊進行詳細的設計。
3、模塊級模擬
在進行整體設計之前,設計師通常會進行模塊級的模擬來驗證每個模塊的功能和正確性。這可以通過在模擬工具中編寫測試向量來模擬不同的輸入情況,並驗證模塊的輸出是否符合預期。
4、整體設計
設計師需要將各個模塊進行整合,構成整體的FPGA設計。這通常包括將各個模塊連接起來,並添加必要的控制電路和介面電路。整體設計完成後,設計師需要進行整體模擬來驗證整個電路的功能和正確性。
5、綜合和約束
綜合是將HDL代碼轉換為FPGA中的邏輯網表的過程。在綜合之前,設計師需要設置約束條件,如時鍾頻率、時序要求等。這些約束條件可以幫助綜合工具生成更好的邏輯網表。
6、布局和布線
布局是將邏輯網表中的邏輯元素映射到FPGA的可編程邏輯單元(PLD)中的過程。在布局之後,設計師需要對各個邏輯元素進行布線,即將FPGA中的各個邏輯元素之間進行連線。布局和布線的目標是盡量減少功耗、延遲和資源佔用等指標。
7、物理模擬
在完成布局和布線後,設計師需要進行物理模擬來驗證電路的時序和功耗等物理特性。物理模擬通常使用時序分析工具和功耗分析工具來分析電路的性能和功耗。
二、FPGA設計的注意事項
在進行FPGA設計時,需要注意一些技巧和經驗,以確保電路的可靠性和穩定性。下面是一些常見的FPGA設計注意事項:
1、時序分析
在FPGA設計中,時序分析是至關重要的步驟。時序分析可以幫助設計者識別出各種延遲、時鍾偏差和時鍾抖動等問題,並採取相應的措施來解決它們。
2、布局布線
FPGA的布局布線是一個非常重要的環節。正確的布局布線可以提高電路的性能和可靠性。在進行布局布線時,需要考慮電路的信號路徑長度、信號的傳輸速度、時鍾頻率等因素。
3、時鍾管理
在FPGA設計中,時鍾管理也是一個非常重要的方面。正確的時鍾管理可以確保電路的時序正確性和穩定性。在進行時鍾管理時,需要考慮時鍾的分配、時鍾組的設置和時序校準等問題。
4、狀態機設計
狀態機是FPGA電路設計中常用的一種電路結構。正確的狀態機設計可以提高電路的性能和可靠性。在進行狀態機設計時,需要考慮狀態轉移條件、狀態轉移時間、狀態編碼等因素。
5、代碼優化
在進行FPGA設計時,代碼優化也是一個非常重要的方面。優化代碼可以減少資源使用、提高電路的性能和可靠性。在進行代碼優化時,需要考慮代碼的邏輯結構、代碼中的冗餘部分、代碼的可讀性等問題。
③ 集成電路設計流程的設計過程
1.電路設來計
依據電路功能源完成電路的設計。
2.前模擬
電路功能的模擬,包括功耗,電流,電壓,溫度,壓擺幅,輸入輸出特性等參數的模擬。
3.版圖設計(Layout)
依據所設計的電路畫版圖。一般使用Cadence軟體。
4.後模擬
對所畫的版圖進行模擬,並與前模擬比較,若達不到要求需修改或重新設計版圖。
5.後續處理
將版圖文件生成GDSII文件交予Foundry流片。