芯片正向設計與反向設計。目前國際上的幾個大的設計公司都是以正向設計為主,反向設計只是用于檢查別家公司是否抄襲。當然,芯片反向工程原本的目的也是為了防止芯片被抄襲的,但后來卻演變為小公司為了更快更省成本的設計出芯片而采取的一種方案。目前國內逐漸往正向設計轉變的公司也越來越多,正逐漸擺脫對反向設計的依賴。當然,正處于發展初期的公司也不少,自然反向設計也是不少的。本文章從芯片反向設計開始進行總結。
芯片設計流程(二)——工具
“工欲善其事,必先利其器”。隨著集成電路的不斷發展,不管是芯片正向設計還是反向設計,它們對于工具的依賴性越來越強,因此,在要開始講設計流程之前,先來看一看,我們到底會用到哪些主要的工具和輔助性的軟件。
一、主要工具軟件
說到設計工具,就不能不提到三大EDA廠商——cadence,synopsys,mentor。這三家公司的軟件涵蓋了芯片設計流程的幾乎所有所能用到的工具。首先是cadence公司,這家公司最重要的IC設計工具主要有candence IC系列,包含了IC 5141(目前最新版本是IC617),NC_VERILOG(verilog仿真),SPECTRE(模擬仿真),ENCOUNTER(自動布局布線)等等synopsys公司,最出名的是它的綜合工具design complier,時序分析工具prime time,模擬仿真工具hspice等;mentor公司最出名的工具是calibre(版圖DRC LVS檢查),modelsim(verilog仿真)。
這些都是IC設計最常用的工具,無論是正向設計還是反向設計。當然,隨著軟件版本的更新迭代,軟件的名字可能有所變更,并不是上述的那些名稱。另外,這些工具主要集中在以linux為內核的操作系統上,主要代表有Red Hat。所以有關unixlinux類操作系統的知識還是有必要學的,該類系統與windows系統有很大的不同,要想學會使用這些軟件,首先要學習這些操作系統的相關知識,具體資料網上有很多。部分工具有windows版本,例如hspice,Modelsim。
二、 輔助類工具軟件
當然,除了這三大EDA廠商的IC設計工具外,Altera(intel)、Xilinx、KeilSoftware這三家公司的軟件開發環境等,都是對于IC設計流程中比不可少的工具。它們分別是用于FPGA、單片機&ARM芯片的開發。這類軟件在芯片的CP測試和芯片應用方案開發上會有用到。
版圖提取工具,NetEditorLite、ChipAnalyzer,這兩個工具主要是針對芯片反向設計而言的。
算法設計工具,MATLAB,此工具應用范圍很廣,但對于芯片設計來說,它較為適用于算法原型開發,例如,通信算法。
PCB版圖工具,Altium Designer,Orcad,Allegro。其中,目前Orcad,Allegro是屬于cadence電路系統設計套件內的主要軟件,而Altium Designer是最常用的軟件,它的前身是Protel。
Labview與數字源表,這一對軟硬件主要用于芯片電氣參數的半自動化測試,特別是模擬芯片。其目的是芯片設計公司用于分析芯片樣品參數用。
對于這些工具的該如何使用,我會在下面的文章中進行說明。ps:沒有具體說明軟件使用環境的,一般是在windows環境下使用。
芯片設計流程(三)——反向設計
因為個人對芯片的反向設計比較熟,所以先從反向設計說起。下面是我整理的芯片反向設計的流程圖,在這些流程里面,我大部分都做過,但也有些地方是不熟的,比如說,版圖繪制、芯片制造和封裝等,這將在下一章進行詳細說明。
一、反向設計總體規劃
在進行一塊新品芯片的開發前期必須要有一個設計總體規劃,其中最主要的問題就是,這顆芯片是否能帶來收益,畢竟公司要靠產品吃飯。如何評估芯片能否帶來收益?這需要多年的經驗才能進行準確的評估。一般是看市場上哪幾款芯片銷量好,未來幾年的銷量看漲,并且評估本公司是否有能力設計并且有渠道銷售出去。我所知道的要考慮的芯片成本有以下幾項:
1,芯片拍片成本;
2,芯片從立項到交貨的時間成本,時間過程導致芯片即使設計出來了,市場已經不需要了;
3,流片成本;
4,工具軟件的授權使用成本;
5,測試成本,包括CP測試和成品測試以及搭建測試平臺所需要的其它成本;
6,封裝成本。
這幾項考慮個人認為還不太成熟,但對于我來說,暫時夠用了。將這些成本進行適當預估之后,再來看收益。對于收益這塊,這是和市場的需求和銷量走向有關,需要涉及到許多其他方面的考慮,個人對這塊不熟悉,也就不予以評論。在收益問題解決了之后,明確此項目可以獲得收益,那么就可以正式開工,前面說的一堆東西其實就是項目可行性分析的一部分。但,其實有些公司并不會考慮那么多,因為這些可行性分析本身非常困難。反向哪一家的芯片?選擇大公司的芯片進行反向一般來說成功率會更高。選定芯片后就進行拍片了,芯片進行解剖拍片一般周期在1周到1個月之間,這視芯片的大小而定。
二、工藝選擇
這個要依據拍片回來的芯片版圖來決定,通過對芯片版圖的識別,判斷待反向的芯片版圖使用的工藝是什么,再根據公司自己擁有的工藝文件(這些工藝文件都由國內或者國外的芯片制造廠提供,前提是公司得與它們合作才能得到工藝文件),兩者進行比對,選擇一個適合的工藝進行后續的仿真、版圖繪制和流片。工藝選擇的問題,需要對公司所擁有的工藝非常熟悉,并且對版圖也要熟悉的工程師來解決,他要能夠通過版圖明確的識別所用的工藝。當然,工藝有時候會在設計過程中反復的更換,因為會有許多參數、流片成功率等各種復雜因素的考量。這一步其實也就叫工藝可行性分析,其實也應該歸于項目可行性分析的一部分,但是由于必須要拍片才能進行,所以只能單獨說明。
三、版圖提取
在上一步工藝可行性分析完之后,確認有工藝可以和該版圖匹配,那么就可以進行版圖提取工作。這部分的工作其實主要是識別版圖中的管子并用符號表示出來。所用到工具有
A、NetEditorLite或者ChipAnalyzer,這是版圖提取工具,在不同的公司進行芯片拍片,會用到不同的版圖提取工具。該類軟件的作用就是一個圖片查看器,拍攝的版圖就是數據就是照片。
B、cadence IC5141 里的virtuoso schematic軟件,這是電路圖繪制軟件。整個工作的流程是用NetEditorLite或者ChipAnalyzer打開拍片的芯片版圖數據,人工肉眼識別里面的管子(二極管、三極管、MOS管之類),再使用virtuoso schematic將管子用符號表示出來,并把管子之間的連接關系連接上。
版圖提取所要注意的問題:
1,初次進行版圖提圖,可能會不認識管子,需要有經驗的人來幫助識別,熟悉之后就容易了;
2,不同工藝的版圖管子的形狀是不一樣的,所以碰到不認識的管子,要么靠別人幫忙,要么就只能自己去推理;
3,要有良好的管子命名習慣,這個每個公司都應該有規定的,這對于后續的工作會有很大幫助;
4,盡量按照版圖的布局來放置管子的布局(在virtuoso schematic上的電路圖布局),這樣可以加快以后對比電路圖和版圖時找管子的速度;
5,在整理提取出的電路時一定要新建一個電路圖來放置整理的電路,不要在剛提取的電路圖上整理,方便整理時和版圖數據對比。ps:有些芯片拍片公司也有提供版圖提取與整理的服務。
四、電路整理
在版圖提取完畢之后,下一個步驟就是電路整理。提取完的電路圖是混亂的,沒有層次關系。那么如何將其整理成具有層次關系,讓人一看就懂呢?
1、這就涉及到有關芯片的一些常識了。芯片分為數字芯片和模擬芯片,但是數字芯片必定會包含模擬電路,而模擬芯片卻可以不包含數字電路。它們有如下一般特征:
A、數字芯片,必有時鐘振蕩電路、復位電路這些模擬電路。必有寄存器,而且整個數字部分最耗面積的部分往往都是寄存器。寄存器的使用量是很大的,因此,在版圖上呈現的就是有大數量的圖像一模一樣的電路,這種電路往往都是寄存器。
B、模擬芯片,有帶隙基準電路,有放大器,個人對模擬芯片不是很熟,所以略過。
2、說完了芯片版圖常識,另外一個重要的有助于理解所提取的電路的工具就是待反向的芯片的數據手冊!這是最重要的,我們所有有關于芯片的信息都是從數據手冊上得來的。所以一定要善用DATASHEET!在芯片數據手冊上,一般會對芯片的功能進行說明,對芯片如何運行進行說明,這些說明將有助于我們對于電路的整理。
a、靠著芯片手冊對芯片功能的說明,
b、加上芯片的一些常識性知識,
c、加個人的這種對電路原理的推理,就可以相對較快的將電路分層次的整理出來。
逐步的理解整個芯片的原理。當然,由于芯片電路的龐大的關系,有時候電路并不是需要完全理清楚,對于不那么重要的電路可以不理會。只要保證連接關系沒連接錯就行。這階段,只會用到cadence ic5141的virtuoso schematic軟件。
五、 電路仿真及修改
電路整理好了,下一步就是進行電路的仿真及修改了,根據工藝選擇步驟選擇的工藝來進行。先說明一下這階段所使用的工具:
1、cadence spectre,一般集成在cadence ic5141里面,是模擬電路仿真工具(ps:最原始的版本是集成在IC5141內部,但功能不全,所以需要單獨安裝新版本,軟件名為MMSIM61,隨著版本的升級,它的名字也在修改),當然,數字電路也可以進行仿真,數字電路的本質還是模擬電路;
2、synopsys公司的 Hspice是與spectre一樣的仿真工具,另有些差別。
3、Mentor公司的 Modelsim,主要在windows上使用,用于verilog網表的仿真。
數字電路仿真工作流程:在virtuoso schematic中將整理好的電路路中數字電路部分導出成網表文件,再拷貝到windows系統上進行仿真。windows系統上數字電路網表的仿真采用Modelsim。(這么做的原因是linux系統不太方便)使用Modelsim仿真,最重要的是寫好testbench(貌似這句是廢話)。
六、版圖繪制
這部分在電路整理完之后就可以開始進行了,并配合電路仿真與修改,逐步完善版圖的繪制。該階段所使用的主要工具有
1、cadence ic5141的版圖繪制軟件;
2、cadence Dracula Diva或者Calibre,這兩個用于版圖DRC(設計規則檢查)、LVS(版圖一致性檢查);一般而言,calibre會更加常用一些,畢竟這可是Mentor公司的招牌軟件之一。在版圖繪制好并進行各種檢查無誤之后,就可以tapeout,準備流片了。
七、測試規范
IC設計師在芯片tapeout之后就要準備制定CP測試規范了,這是接下來CP測試流程的總綱,非常重要。測試規范的測試項主要來源于芯片datasheet,將重要的參數設置為測試項,并規定參數的合理分布范圍以及每一個測試項的測試方法(流程)。這些測試參數以及測試方法將決定CP測試開發時所用到的測試環境ATE(auto test environment)。
八、CP測試開發
根據測試規范,可以選定所需要的測試工具以進行整個測試環境的搭建工作。我所知道到用于芯片測試的測試儀有JUNO DTS-1000,ASL1000,V777,STS8200等。每一種測試儀適用于不同種類的芯片測試,測試儀主要分為數字測試,模擬測試,數?;旌蠝y試這三大類。CP測試開發所需要做的工作有:
1,測試儀的選擇(ps:這個階段還要考慮一個重要的因素就是一次測試多少顆裸芯,也就是CP測試常說的多少個site,這關系到后續測試程序的編寫,以及DUT板的制作,非常重要);
2,根據測試儀開發測試程序;
3,制作測試裸芯片用DUT板,扎PAD位的針由測試廠制作并焊接在DUT上(ps:DUT板有時候也叫針卡);
4,自制測試儀(可選),當測試儀并不能完成某些特殊測試項的要求時,還得自己制作測試儀。例如,紅外接收芯片測試所需要用到的掃頻儀,若采用非自制掃頻儀,測試時間將非常長,必須自己制作。5,測試數據的分析。對測試數據的分析有助于對測試方法的改進和對芯片設計的改進。CP測試在整個芯片反向設計中占據著重要位置,所花費的人力、物力是非常多的,還需要頻繁和測試廠交流,所以CP測試顯得非常復雜。在CP測試開發完之后,會進行COB測試,之后才進行CP測試的調試階段,以及正式批量測試階段。
九、COB測試
1、開發在PC端開發測試的程序,例如LabView;
2、設計測試芯片的電路板,并留下與PC通信的接口,通常采用單片機做主控芯片;
3、搭建測試所需要的環境,比如說遮光要求。過程敘述得很簡單,但實際開發并不容易,難度視待測芯片而異。
十、成測開發
在CP測試完了之后,裸芯就可以送到成測廠進行劃片和封裝了,在這期間,IC設計師所要做的工作就是依據制定成品測試的規范并進行成品測試的開發。這部分的工作其實和CP測試的工作是類似的,只不過,相對于CP測試而言,成品測試的測試項會少很多。許多CP測試用到的測試項,比如,燒調之類的,成品測試就不會進行了,其余步驟均與CP測試一致。
十一、可靠性測試
當芯片封裝好,并通過了成品測試之后,并不意味著芯片的測試就結束了,還有芯片可靠性測試。在成測結束,并把樣品返回設計師手中之后,設計師還需進行COB測試,并在這時預留幾顆芯片不參與接下來的可靠性測試,這幾顆芯片將在可靠性測試之后作為對比之用。
十二、成品開發
設計出的芯片必須配置相應的使用方案,才能將芯片推廣出去,客戶才能夠更好的使用芯片。不同用途的芯片,它的使用方案不一樣,差別也是非常巨大的。像單片機、ARM、FPGA類芯片,配置的可不是簡單的使用方案,而是一整套使用它的系統。電源管理芯片,需要配置一個電源管理芯片的一套應用方案,并且需要具有一定的競爭力,這才能夠將芯片賣出去。所以成品開發是芯片能否賣出去的關鍵。我所接觸到的成品開發,基本是以單片機為主控芯片的開發方案。具體開發過程將在后續有更為詳細的說明。
芯片設計流程(四)——正向設計
正向設計其實和反向設計差別在于設計部分,其余部分的流程基本相同。正向設計的設計部分由于是原創,所以會使用很多的工具。反向設計,很多東西不必去驗證,所以工具軟件也就不會用到那么多。
一、總體規劃
二、架構/算法
現在數字電路在芯片中占有極大的比重,數字邏輯也變得越來越復雜,所以必須從架構和算法上進行考慮。個人所略知的關于芯片架構的是,架構可以分為三種大的方向:
1,數據流;
2,控制流,
3,總線流。數據流:數據從輸入到輸出是一條直線,并沒有折回的數據,這是純數據處理的一種架構,這種芯片功能應該是比較單一。
2,控制流,這是基于狀態機或者CPU形式的一種架構設計。簡單點的芯片就采用狀態機就夠了,復雜的就必須采用CPU作為控制內核了,比如單片機就是以CPU為控制內核,外加RAM,ROM所形成的一類控制類芯片。
3,總線流,這是基于總線的芯片設計架構,最熟悉的就是SOC類芯片,總線上連接著一個或多個CPU,RAM,ROM,I2C,UART等等之類的各種組件。由這些組件的不同排列組合,形成滿足各種不同需求的芯片,例如不同的ARM類芯片。
算法,我所略知的是通信類的,例如,FIR,FFT,小波變換,三角函數變換等等,當然還有視頻音頻類的算法,對與這方面的內容就沒有接觸過了??偟膩碚f,這類算法都是以數據處理為主要目的的,所以這些算法都要求有較強的數學功底。做算法開發,主要工具為MATLAB,都是先在MATLAB上做原型開發驗證,再轉化為RTL級的代碼。
結合架構和算法,將芯片的總體結構搭建出來,為后續的工作做好了準備。
三、RTL代碼
當算法工程師把芯片架構設計好,各種算法在MATLAB上通過了驗證,以及其他必要條件的考量之后,便將工作交接給ASIC工程師去做RTL代碼的翻譯工作,就是將MATLAB上的算法翻譯成RTL。這一步單純從翻譯的角度只需要一個文本編輯器就可以了。然而,還有后續的仿真驗證工作,這部分的內容并不輕松。有時候根據公司的不同,根據項目的工作量大小,算法工程師與ASIC工程師在工作內容上是有交叉的,他們也承擔將MATLAB轉換為RTL的工作。RTL設計的時候也會考慮DFT(Design For Test 可測性設計)的問題,會在RTL代碼中加入測試鏈,這個我就不太熟了。
四、仿真驗證
這一步的工作比較關鍵,可以說是設計部分的第一個分水嶺。仿真驗證,視不同的公司,不同的項目,復雜度有非常大的不同。簡單的,只要寫一個較為完善的testbench驗證完RTL代碼的功能就行了;復雜的,將會在RTL驗證環境下進行詳細的驗證,甚至可能用得到各種驗證方法學UVM,VMM,OVM等等,這種復雜驗證所用的語言一般采用SystemVerilog。驗證軟件可以采用cadence公司的NC_VERILOG,或者synopsys公司的VCS。此外,某些芯片還會采用FPGA,進行硬件在線仿真。這樣能夠獲取關于芯片的更為詳細的信息。但不管如何,無論是個人還是公司,都應該有對于仿真驗證工作的一套完整和完善的流程方案。
五、工藝選擇
正向設計在一開始的整體規劃中就要考慮工藝的問題,這涉及到有關工藝的相關知識,有些工藝就是特別為某種類型的芯片而開發的。所以一旦是要開發某種有對應工藝的芯片,則直接采用即可,但往往工藝的選擇會特別耗時間,會有各種參數的考量,例如工藝生產周期,工藝的成品率,工藝生產時間的安排等等各方面的考究。這部分,需要花費特別多的時間。工藝由芯片制造廠提供,前提是必須和芯片制造廠有合作關系。
六、綜合、時序&功耗分析
這一步是在RTL仿真驗證完之后進行,當然還有一個前提,制造工藝必須選定,否則,如果中途換了工藝,這部分的工作還得重新來做,這樣將會消耗特別多的時間。這部分的工作主要用到synopsys公司的工具Design Complier(綜合)、Prime Time(時序和功耗)。
這兩個工具的使用比較復雜,使用說明參考百度文庫相關資料??傮w來說,這兩個工具都是約束驅動型軟件,軟件在使用時都是靠約束文件來進行驅動的。所以工作的主要內容除了軟件的使用外最重要的就在于如何編寫約束文件。一般而言,約束主要有面積約束,扇入扇出約束,時序約束等約束條件。如果RTL代碼不滿足約束,則必須根據具體情況修改約束條件或者是修改RTL代碼。約束條件是用TCL腳本語言來寫。綜合和時序分析會生成基于所采用的工藝的電路網表,這個網表將是下一步自動布局布線所用到的主文件。
主要工作內容:
1、準備好選定的工藝庫文件(綜合網表文件、時序文件庫);
2、根據設計要求編寫TCL約束腳本;
3,操作軟件,生成約束報告;
4,分析約束報告,修改或調整不合理的約束或者修改RTL代碼(RTL代碼不會輕易修改,這要求在RTL設計時就要考慮這些約束要求,以便于能夠通過約束分析)。
七、 形式驗證
綜合出來的網表正確與否如何判定呢?這需要用到形式驗證技術,該技術與RTL的仿真不同,它是從數理邏輯出發,來對比兩個網表在邏輯上的等效性。如果等效,則綜合的網表就是符合要求的。用到的工具為synopsys 公司的Formality 形式驗證工具。其實,形式驗證是在每一次芯片的邏輯電路轉換為另一種表達形式的時候都需要做的工作。具體來說,在綜合生成網表后做一次,主要對比的文件為RTL仿真之后的文件和綜合之后的網表,在布局布線之后還需要做一次,主要對比文件為綜合之后的網表與布局布線之后的網表。主要工作內容:
1、準備好待比較的兩份文件及各種工藝技術庫文件;
2、用TCL腳本編寫腳本程序,設置其中一份文件為比較標準,其中一份為待比較文件;
3、運行Formality,分析生成的比較報告;
4、根據報告做出相應的調整與修改。
八、自動布局布線
這個步驟嚴重依賴于軟件和經驗,目前常用的軟件為Cadence Encounter不同版本的自動布局布線軟件名字可能不一樣。Synopsys公司也有對應的自動布局布線的軟件ASTRO,最新版本為ICC套件。軟件的使用同樣可以在網上找到相關資料,這里就不細說了。主要工作內容:
1、準備好工藝文件(時序文件庫 數字版圖庫);
2,準備好綜合之后的電路網表文件及約束文件;
3,根據設計要求,設置好版圖面積等相關參數,
4,進行自動布局布線,檢查時序和功耗,如果不滿足要求,則再次修改相關參數,直到符合設計要求為止。
自動布局布線需要注意的是:數字信號一定要關注好關鍵路徑的延時問題,這一點曾經是數字設計的關鍵問題。現在,據說,時序已經不再是芯片設計的主要難題了,主要難題已經轉移到了功耗上,在設計的每一個階段都要考慮功耗的問題。
模擬部分似乎是沒有數字部分那么多的工具需要使用,但模擬部分的電路設計最考究的還是工程師們的設計經驗,而這些經驗都是要靠時間才能堆出來的。模擬電路的每一個模塊都需要很多的時間去驗證,比說一個高性能的放大器,一個與工藝和電壓無關的帶隙基準等等。模擬的版圖只能是一個一個管子的畫,沒有自動布局布線的必要,因為模擬電路的管子也不會很多。
剩下的工作就是合并整體的版圖,并進行DRC、LVS的各種驗證,通過之后就可以tapeout。之后再制定測試規范,這與反向設計的剩余步驟是一樣的。另外,有時候版圖還需要做ECO(Engineering Change Order)工程修改命令,是指在原有的設計 的基礎上如果要作一些改動,可不必從頭再來,可以在原來的布局上通過eco步驟快捷地 完成設計。
芯片設計流程(五)——工藝文件說明
在芯片的設計重要設計環節,像綜合與時序分析,版圖繪制等都需要用到工藝庫文件,而大家往往又對工藝文件缺乏認識,所以導致想自學一些芯片設計的東西就顯得很困難。例如,沒有工藝版圖庫文件,學習版圖設計就是紙上談兵。這篇文章主要介紹一下工藝庫相關的知識。
工藝文件由芯片制造廠提供,所以概括性的了解國內和國際上有哪些芯片制造廠是很有必要的。國際上,主要有臺積電,英特爾,三星等主要半導體制造商。國內,主要有中芯國際,華潤上華,深圳方正等公司。這些公司都提供相關的工藝庫文件,但前提是要與這些公司進行合作才能獲取,這些工藝文件都屬于機密性文件。
完整工藝庫文件主要組成為:
1,模擬仿真工藝庫,主要以支持spectre和hspice這兩個軟件為主,后綴名為scs——spectre使用,lib——hspice使用。
2,模擬版圖庫文件,主要是給cadence版圖繪制軟件用,后綴名為tf,drf。
3,數字綜合庫,主要包含時序庫,基礎網表組件等相關綜合及時序分析所需要用到的庫文件。主要是用于DC軟件綜合,PT軟件時序分析用。
4,數字版圖庫,主要是給cadence encounter軟件用于自動布局布線,當然自動布局布線工具也會用到時序庫,綜合約束文件等。
5,版圖驗證庫,主要有DRC,LVS檢查。有的是專門支持calibre,有的專門支持dracula,diva等版圖檢查工具用。每一種庫文件都有相應的pdf說明文檔。
反向設計會用到1,2,5等工藝庫文件,3和4是不會用到了。正向設計(從代碼開始設計的正向設計)則所有的文件都需要用到。由于工藝文件在芯片設計中占有極重要的位置,在每一個關鍵設計環節都要用到,再加上它的機密屬性,所以網絡上很難找到完整的工藝文件對于個人學習用,EETOP上有一份cadence公開的用于個人學習的工藝庫文件可以方便大家學習,但似乎也是不完整的。
芯片設計流程 (六)——綜合
本文是根據《綜合與Design Compiler》文章,寫就的一篇關于綜合的簡要總結,供自己整理思路之用。算是對前文《芯片設計流程(八)——正向設計2》中的綜合分析做一個進一步的展開說明。
什么是綜合?綜合就是將RTL級verilog代碼用Design Compiler 工具 轉換/映射成用基礎門級單元表示的電路的過程?;A門級單元也就是平時我們學的與非門,或非門,寄存器之類的,只不過,這些門級單元已經做成了標準的單元庫,我們可以直接使用軟件來調用,而不需要自己調用門級單元來搭建電路。簡單的來說,Design Compiler軟件就是做翻譯的工作——將代碼翻譯成實際電路,但又不僅僅是翻譯這么簡單,它涉及到電路的優化與時序約束,使之符合我們做制定的性能要求。 前文提到該軟件是約束驅動型軟件,那么約束從何而來?答案是,設計規格書。每一個芯片設計項目都會有一個項目規格說明書,這是在芯片設計之初,整體規劃(見前文)的步驟中要制定好的。具體詳細的約束要求需要在綜合過程中仔細的斟酌決定。 綜合的一般流程:
1,預綜合過程;
2,施加設計約束過程;
3,設計綜合過程;
4,后綜合過程。
PS,使用Design Compiler軟件一個必備的條件是要學會使用DC TCL腳本。
預綜合過程。這部分主要是準備好綜合過程所使用的庫文件(包括工藝庫、鏈接庫、符號庫、綜合庫)、設計輸入文件,設置好環境參數。
施加設計約束過程。這部分主要是用DC TCL腳本編寫約束文件。具體的約束項目可以分為三大類:
a,面積約束,定義時鐘,約束輸入/輸出路徑;
b(環境屬性),約束輸入驅動,約束輸出負載,設置工作條件(最好、典型、最差情況),設置連線負載模型;
c(高級時鐘約束),對時鐘的抖動、偏移、時鐘源延遲,同步多時鐘,異步時鐘,多周期路徑,這幾類進行細致的約束。
約束的內容具體就是這么多。一個詳細的TCL腳本約束文件基本包含上述所有的約束。后面有一個約束范文。
設計綜合過程。主要是介紹電路模塊設計規劃(以利于更好的進行約束),Design Compiler綜合優化的過程(三大優化階段,結構級,邏輯級,門級),時序分析的具體過程等綜合過程中的一些詳細信息。
后綜合過程。綜合完畢該怎么看結果,時序違反該如何解決?這就是后綜合過程所要解決的問題。在綜合之后,通過分析綜合報告,可以得知此次的電路綜合結果如何,根據不符合的要求,進行重新約束,甚至重新設計電路。在這個階段特別值得一提的是綜合預估,因為在寫綜合約束腳本的時候,需要確定約束條件,規格書一般不能夠涉及到如此細節的部分,所以需要根據實際電路進行綜合預估,這個步驟是在代碼編寫完之后,與驗證同時進行的,目的在于大致估計電路是否符合要求,此時的預綜合過程與正式的綜合過成是一樣的,但,要求會寬松許多,時序違反的要求大概為10%-15%,也就是說電路即使有10%-15%的電路不滿足時序也沒有關系。
-
芯片
+關注
關注
453文章
50402瀏覽量
421802 -
IC
+關注
關注
36文章
5899瀏覽量
175236
原文標題:行業 | 芯片的設計流程全方位詳細解讀
文章出處:【微信號:wc_ysj,微信公眾號:旺材芯片】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論