數字集成電路芯片的設計流程由一系列的設計實現和驗證測試過程組成(圖1)。首先是功能定義,它描述了對芯片功能和性能參數的要求,我們使用系統設計工具設計出方案和架構,劃分好芯片的模塊功能。然后是代碼設計,我們使用硬件描述語言(HDL,如Verilog)將模塊功能表示出來,形成電腦能理解的代碼(行為級、RTL級)。經過仿真驗證后,進行邏輯綜合,把代碼翻譯成低一級別的門級網表,它對應于特定的面積和參數,并再次做仿真驗證。這兩個仿真可以是用電路模型驗證邏輯功能(邏輯仿真),也可以用FPGA硬件電路來驗證(原型仿真),其速度更快,與實際電路更接近。設計和仿真驗證是反復迭代的過程,直到驗證結果完全符合規格要求。驗證還包括靜態時序分析、形式驗證等,以檢驗電路的功能在設計轉換和優化的過程中保持不變。可測性設計(DFT、ATPG)也在這一步完成。下一步就是數字電路后端實現中最為關鍵的布局布線,它實現電路模塊(如宏模塊、存儲器、引腳等)的布圖規劃、布局,實現電源、時鐘、標準單元之間信號線的布線。在布局布線過程中及完成之后,需要對版圖進行各種驗證,包括形式驗證、物理驗證,如版圖與邏輯電路圖的對比、設計規則檢查、電氣規則檢查等。最終輸出GDS數據,轉交芯片代工廠,在晶圓上進行加工,再進行封裝和測試,就得到了我們實際看見的芯片。
圖1數字電路設計驗證流程
本文所指的后端實現工具主要是指布圖規劃(Floorplan)和布局布線(Place&Route)兩個階段所使用到的工具集合。目前芯片設計公司使用的主要軟件有SynopsysICC2/FusionCompiler,CadenceEncounter/Innovus,MentorGraphicsNitro-Soc等。
圖2數字后端實現過程
數字后端的設計過程,是把邏輯綜合映射后的電路網表轉換為GDS的過程,也就是把電路從邏輯網表轉換為幾何版圖的過程。業界各個工具系統的實現大同小異,一般可以細分為設計環境建立、布圖規劃、布局、時鐘樹綜合、布線、調試完善等步驟(圖2)。
1.設計環境建立
設計環境的建立是把后端設計所需的數據讀入到數據庫,然后檢查數據的完整性與一致性。后端設計的輸入數據包括門級網表、設計約束和工藝庫文件三部分。其中,門級網表(GLN,GateLevelNetlist)是邏輯綜合工具把設計從RTL(RegisterTransferLevel)映射到GLN所得,它同時滿足時序、面積、功耗等約束。設計約束SDC(SynopsysDesignConstraints)則描述了時鐘、延遲、電源、面積、設計規則、工作條件等等對芯片的約束條件。工藝庫主要是時序庫文件和模型庫文件,如物理抽象庫文件LEF、物理詳細庫文件GDS/OASIS、時序庫文件.lib、RLC模型文件.rlc、EM規則文件、DEF文件等等。
2.布圖規劃Floorplan
布圖規劃是后端實現中需要手工活的惟一階段,其它階段都是通過修改腳本和約束,然后讓工具自動完成的。布圖規劃的好壞,直接決定了后續布局布線的收斂、芯片的面積性能功耗。Floorplan一般都是由經驗豐富的設計師來完成。現在Cadence、谷歌也在探索使用AI來實現Floorplan。它包括初始化、布放宏模塊和布放輸入輸出腳等過程。我們需要根據設計前端所給的數據流向,了解設計中各個模塊之間的交互、各個時鐘之間的關系等信息,以規劃模塊的位置和模塊接口的位置。模塊形狀與設計類型相關,也影響到繞線資源的使用,這在前端中只考慮邏輯功能不同,需要仔細規劃。低功耗設計則需要提前規劃好各個電源域的劃分區域、隔離島等。在布放電源地時,需要根據芯片功耗估算,添加芯片核心的電源地;根據SSO、ESD、EM估算,添加輸入輸出腳的電源地。輸入輸出腳添加完成后,根據宏模塊、IP、IO的面積就可以估算出芯片的面積了。
3.電源及電源網絡分析
在現代低功耗芯片設計中,電源設計是非常重要的一步,包括分析計算所有單元的功耗、靜態IRDrop和電遷移EM分析。它可以在多個階段進行,如布圖后、電源地布線后、全局布局后、詳細布線后等。它分析電源設計是否合規。分析計算過程包括線網活動因子計算、電源分析、電源網分析、電網電阻分析、阻抗失配分析、IRDrop分析、EM分析等等。
4.靜態時序分析
通過建立和使用靜態時序分析器,以驗證設計符合所有的設計約束,如滿足在所有要求操作條件下的建立和保持時間,或者識別出違反時序的原因所在。靜態時序分析主要包括數據準備、分析條件設置、生成時序報告、分析報告。所需要的數據(電路網表、時序庫、約束文件、寄生模型及外部寄生文件)在第一步已經讀入到數據庫中,這里也可以補充讀取。分析條件則是在一個或多個模式下,考慮PVT、RCX、OCV、CRPR等諸多因素進行設置。根據分析所需,控制分析器執行適當的命令,得到時序分析報告。對報告進行分析后,執行相應的操作。例如,從時序路徑分析報告中,可以看到設計的關鍵路徑,進而執行增量式的修改以符合時序需求。
5.定義電源結構
這一步是為電源的繞線創建禁區,創建電源帶、電源環、標準單元rail等,定義如何連接到宏模塊的電源腳等,完成電源的繞線,報告電源的狀況。
6.布局及優化設計
這一過程包括為布局和優化作準備(布局指南和布局分組)、進行無優化的布局、插入備用單元(為ECO做準備)和Tap單元、管理掃描鏈(重排或拆分)、進行布局和優化、分析布局和優化結果,決定是否需要迭代。傳統的時序驅動的布局算法通常會留下很多時序違反,因為它們不能僅僅由布局修正。時序違反由布局后優化工具找到后,它就會做很多修改,以符合時序約束的要求,如修改單元尺寸、插入緩沖、分解驅動等,這些操作會逐步降低原始布局的質量。因此,為滿足時序和擁擠約束的目標,需要進行多次布局迭代和優化。我們工具的布局和優化引擎是并行的,從宏固定的預布局開始,就能得到一個最好時序質量和最低擁擠程度的全布局。布局和設計優化也能在一個布局好的設計上增量式地進行。
7.時鐘樹綜合
布局之后,就是布線工作。我們要首先完成時鐘網絡的布線,因為它們比普通數據通路上的線網更重要。在數字電路中,時序元件的數據傳輸是由時鐘控制的。時鐘頻率決定了數據處理和傳輸的速度,時鐘頻率也就決定了電路的最終性能。決定時鐘頻率的主要因素有兩個,一是組合邏輯部分的最長電路延時,二是時序元件內的時鐘偏斜(clockskew)。組合邏輯部分可以優化的延時不多,時鐘偏斜成為影響電路性能的制約因素。時鐘樹綜合的一個主要目的就是減小時鐘偏斜。時鐘信號是數字芯片中最長最復雜的信號,從一個時鐘源到達各個時序元件的終端節點,能形成了一棵樹狀的結構。從時鐘源的扇出很大,負載很大,需要一個時鐘樹結構,通過一級級的器件去驅動最終的葉子節點。時鐘樹綜合的另一個目的,就是要使同一個時鐘信號到達各個終端節點的時間相同。采用的辦法也很簡單:在時鐘信號線網上插入buffer或者inverter來平衡信號的延遲。時鐘樹綜合的準備包括標記可用于時鐘樹的buffer/inverter、定義時鐘結構規則(如繞線、時鐘單元周邊間距、buffer等)、生成時鐘skew約束(即定義各種skew組和時序約束),然后綜合時鐘樹,再對綜合結果進行分析和優化,如修復setup時間違反、額外的功耗和面積收復等等。
8.布線及設計優化
這一步雖然是一個自動化進行的步驟,但也需要創建布線指南,以指導布線器的運作。過程包括全局布線、總線布線、詳細布線、手動優化、添加防護、金屬填充、天線效應修復、光刻修復、繞線到bump等等。
9.工程改動要求ECO(EngineeringChangeOrder)
ECO是在一個完成或接近完成的設計上,進行一個增量式的改變。可能是對設計網表、布局或繞線作一個小的改變,而設計的主體部分中不變的部分無須重建。ECO可能涉及到所有層的改變,或者僅僅涉及到金屬層的改變。假若修改的門數不到整體的5%,那么ECO是值得的。另外,使用usefulskew來進行手工的時鐘樹ECO,也是一項重要的技能。
10.時序調試
時序調試的目的,是找到一個方法去修復所有約束違反。我們需要用不同的選項去運行時序分析器,分析各種時序報告,識別可能的時序問題,在GUI和版圖上同時查看關鍵路徑,提升設計的時序。時序的優化貫穿著整個數字電路后端設計全過程。
11.數據導出
設計的最后一步,就是電路版圖數據GDS的導出。GDS描述了晶體管大小和物理位置、連線的寬度和位置等制造芯片所需的全部信息。對GDS的要求是功能與RTL一致、性能滿足指標、規格滿足代工廠要求、功耗性能面積(PPA)優良。EDA工具強調的是A,Automation,也就是自動化。這在數字集成電路后端設計工具中表現尤為突出。要處理規模大至數十億晶體管的電路,對所涉及算法的性能、效率、資源占用等都有極高的要求。目前,我們正在努力探索在數字芯片全流程中應用最新的AI技術、云計算技術等,以滿足各種現代芯片的設計要求。
責任編輯人:CC
-
集成電路
+關注
關注
5381文章
11381瀏覽量
360849 -
數字集成電路
+關注
關注
11文章
92瀏覽量
21805
發布評論請先 登錄
相關推薦
評論