0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

對有關IC設計流程的相關事宜做一個總結

dKBf_eetop_1 ? 2017-12-26 09:27 ? 次閱讀

芯片設計流程(一)——序章

目前,國外集成電路設計已經非常成熟,國外最新工藝已經達到7nm,而國內才正處于發(fā)展期。有關于集成電路的發(fā)展就不說了,網絡上有的是資料。對于IC設計師而言,理清楚IC設計的整個流程對于IC設計是非常有幫助的。然而,網絡上似乎并沒有有關于IC設計整個流程的稍微詳細一點的介紹,僅僅只是概略性的說分為設計、制造、測試、封裝等四大主要板塊,有的資料介紹又顯得比較分散,只是單獨講某個細節(jié),有的只是講某個工具軟件的使用卻又并不知道該軟件用于哪個流程之中,而且每個流程可能使用到的工具軟件也不是太清楚(此觀點僅為個人經歷所得出的結論,并不一定真是這樣)。因此,我對目前所接觸到的有關IC設計流程的相關事宜做一個個人性的總結。這個總結并不是很準確,因為個人的經歷所限,有很多芯片設計流程中的細節(jié)沒辦法接觸,對于晶圓制造,封裝等板塊都不是太熟悉,但這至少算是一個相對完整的有關IC設計的總結。

芯片正向設計與反向設計。目前國際上的幾個大的設計公司都是以正向設計為主,反向設計只是用于檢查別家公司是否抄襲。當然,芯片反向工程原本的目的也是為了防止芯片被抄襲的,但后來卻演變?yōu)樾」緸榱烁旄〕杀镜脑O計出芯片而采取的一種方案。目前國內逐漸往正向設計轉變的公司也越來越多,正逐漸擺脫對反向設計的依賴。當然,正處于發(fā)展初期的公司也不少,自然反向設計也是不少的。本文章從芯片反向設計開始進行總結。

芯片設計流程(二)——工具

“工欲善其事,必先利其器”。隨著集成電路的不斷發(fā)展,不管是芯片正向設計還是反向設計,它們對于工具的依賴性越來越強,因此,在要開始講設計流程之前,先來看一看,我們到底會用到哪些主要的工具和輔助性的軟件。

一、主要工具軟件

說到設計工具,就不能不提到三大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為內核的操作系統(tǒng)上,主要代表有Red Hat。所以有關unix\linux類操作系統(tǒng)的知識還是有必要學的,該類系統(tǒng)與windows系統(tǒng)有很大的不同,要想學會使用這些軟件,首先要學習這些操作系統(tǒng)的相關知識,具體資料網上有很多。部分工具有windows版本,例如hspice,Modelsim。

二、 輔助類工具軟件

當然,除了這三大EDA廠商的IC設計工具外,Alteraintel)、Xilinx、KeilSoftware這三家公司的軟件開發(fā)環(huán)境等,都是對于IC設計流程中比不可少的工具。它們分別是用于FPGA、單片機&ARM芯片的開發(fā)。這類軟件在芯片的CP測試和芯片應用方案開發(fā)上會有用到。

版圖提取工具,NetEditorLite、ChipAnalyzer,這兩個工具主要是針對芯片反向設計而言的。

算法設計工具,MATLAB,此工具應用范圍很廣,但對于芯片設計來說,它較為適用于算法原型開發(fā),例如,通信算法。

PCB版圖工具,Altium Designer,Orcad,Allegro。其中,目前Orcad,Allegro是屬于cadence電路系統(tǒng)設計套件內的主要軟件,而Altium Designer是最常用的軟件,它的前身是Protel。

Labview與數字源表,這一對軟硬件主要用于芯片電氣參數的半自動化測試,特別是模擬芯片。其目的是芯片設計公司用于分析芯片樣品參數用。

對于這些工具的該如何使用,我會在下面的文章中進行說明。ps:沒有具體說明軟件使用環(huán)境的,一般是在windows環(huán)境下使用。

芯片設計流程(三)——反向設計

因為個人對芯片的反向設計比較熟,所以先從反向設計說起。下面是我整理的芯片反向設計的流程圖,在這些流程里面,我大部分都做過,但也有些地方是不熟的,比如說,版圖繪制、芯片制造和封裝等,這將在下一章進行詳細說明。

對有關IC設計流程的相關事宜做一個總結

一、反向設計總體規(guī)劃

在進行一塊新品芯片的開發(fā)前期必須要有一個設計總體規(guī)劃,其中最主要的問題就是,這顆芯片是否能帶來收益,畢竟公司要靠產品吃飯。如何評估芯片能否帶來收益?這需要多年的經驗才能進行準確的評估。一般是看市場上哪幾款芯片銷量好,未來幾年的銷量看漲,并且評估本公司是否有能力設計并且有渠道銷售出去。我所知道的要考慮的芯片成本有以下幾項:

1,芯片拍片成本;

2,芯片從立項到交貨的時間成本,時間過程導致芯片即使設計出來了,市場已經不需要了;

3,流片成本;

4,工具軟件的授權使用成本;

5,測試成本,包括CP測試和成品測試以及搭建測試平臺所需要的其它成本;

6,封裝成本。

這幾項考慮個人認為還不太成熟,但對于我來說,暫時夠用了。將這些成本進行適當預估之后,再來看收益。對于收益這塊,這是和市場的需求和銷量走向有關,需要涉及到許多其他方面的考慮,個人對這塊不熟悉,也就不予以評論。在收益問題解決了之后,明確此項目可以獲得收益,那么就可以正式開工,前面說的一堆東西其實就是項目可行性分析的一部分。但,其實有些公司并不會考慮那么多,因為這些可行性分析本身非常困難。反向哪一家的芯片?選擇大公司的芯片進行反向一般來說成功率會更高。選定芯片后就進行拍片了,芯片進行解剖拍片一般周期在1周到1個月之間,這視芯片的大小而定。

二、工藝選擇

這個要依據拍片回來的芯片版圖來決定,通過對芯片版圖的識別,判斷待反向的芯片版圖使用的工藝是什么,再根據公司自己擁有的工藝文件(這些工藝文件都由國內或者國外的芯片制造廠提供,前提是公司得與它們合作才能得到工藝文件),兩者進行比對,選擇一個適合的工藝進行后續(xù)的仿真、版圖繪制和流片。工藝選擇的問題,需要對公司所擁有的工藝非常熟悉,并且對版圖也要熟悉的工程師來解決,他要能夠通過版圖明確的識別所用的工藝。當然,工藝有時候會在設計過程中反復的更換,因為會有許多參數、流片成功率等各種復雜因素的考量。這一步其實也就叫工藝可行性分析,其實也應該歸于項目可行性分析的一部分,但是由于必須要拍片才能進行,所以只能單獨說明。

三、版圖提取

在上一步工藝可行性分析完之后,確認有工藝可以和該版圖匹配,那么就可以進行版圖提取工作。這部分的工作其實主要是識別版圖中的管子并用符號表示出來。所用到工具有

A、NetEditorLite或者ChipAnalyzer,這是版圖提取工具,在不同的公司進行芯片拍片,會用到不同的版圖提取工具。該類軟件的作用就是一個圖片查看器,拍攝的版圖就是數據就是照片。

B、cadence IC5141 里的virtuoso schematic軟件,這是電路圖繪制軟件。整個工作的流程是用NetEditorLite或者ChipAnalyzer打開拍片的芯片版圖數據,人工肉眼識別里面的管子(二極管、三極管、MOS管之類),再使用virtuoso schematic將管子用符號表示出來,并把管子之間的連接關系連接上。

版圖提取所要注意的問題:

1,初次進行版圖提圖,可能會不認識管子,需要有經驗的人來幫助識別,熟悉之后就容易了;

2,不同工藝的版圖管子的形狀是不一樣的,所以碰到不認識的管子,要么靠別人幫忙,要么就只能自己去推理;

3,要有良好的管子命名習慣,這個每個公司都應該有規(guī)定的,這對于后續(xù)的工作會有很大幫助;

4,盡量按照版圖的布局來放置管子的布局(在virtuoso schematic上的電路圖布局),這樣可以加快以后對比電路圖和版圖時找管子的速度;

5,在整理提取出的電路時一定要新建一個電路圖來放置整理的電路,不要在剛提取的電路圖上整理,方便整理時和版圖數據對比。ps:有些芯片拍片公司也有提供版圖提取與整理的服務。

四、電路整理

在版圖提取完畢之后,下一個步驟就是電路整理。提取完的電路圖是混亂的,沒有層次關系。那么如何將其整理成具有層次關系,讓人一看就懂呢?

1、這就涉及到有關芯片的一些常識了。芯片分為數字芯片和模擬芯片,但是數字芯片必定會包含模擬電路,而模擬芯片卻可以不包含數字電路。它們有如下一般特征:

A、數字芯片,必有時鐘振蕩電路、復位電路這些模擬電路。必有寄存器,而且整個數字部分最耗面積的部分往往都是寄存器。寄存器的使用量是很大的,因此,在版圖上呈現的就是有大數量的圖像一模一樣的電路,這種電路往往都是寄存器。

B、模擬芯片,有帶隙基準電路,有放大器,個人對模擬芯片不是很熟,所以略過。

2、說完了芯片版圖常識,另外一個重要的有助于理解所提取的電路的工具就是待反向的芯片的數據手冊!這是最重要的,我們所有有關于芯片的信息都是從數據手冊上得來的。所以一定要善用DATASHEET!在芯片數據手冊上,一般會對芯片的功能進行說明,對芯片如何運行進行說明,這些說明將有助于我們對于電路的整理。

比如說,芯片手冊上說道用了I2C,那么電路中肯定有一大塊電路是屬于I2C的。一般來說,版圖的布局都是將同屬于一種功能的管子會集中放置在一起。I2C電路的特征,從I2C協議的原理上可以知道,它就兩根信號線,一根時鐘,另一根數據線。數據在芯片內部一般是并行傳輸比較方便,所以,I2C電路一定會有串并轉換電路,而串并轉換電路一般是寄存器,而且一般是8位。根據這個推斷結果,就在提取的電路中去尋找8個在一起的寄存器,它們其中一組就是I2C電路的一部分,再根據芯片版圖的I2C PAD位去尋找,看連接到了那一組寄存器上,那么整個I2C的電路就被識別出來了。因此,

a、靠著芯片手冊對芯片功能的說明,

b、加上芯片的一些常識性知識,

c、加個人的這種對電路原理的推理,就可以相對較快的將電路分層次的整理出來。

逐步的理解整個芯片的原理。當然,由于芯片電路的龐大的關系,有時候電路并不是需要完全理清楚,對于不那么重要的電路可以不理會。只要保證連接關系沒連接錯就行。這階段,只會用到cadence ic5141的virtuoso schematic軟件。

五、 電路仿真及修改

電路整理好了,下一步就是進行電路的仿真及修改了,根據工藝選擇步驟選擇的工藝來進行。先說明一下這階段所使用的工具:

1、cadence spectre,一般集成在cadence ic5141里面,是模擬電路仿真工具(ps:最原始的版本是集成在IC5141內部,但功能不全,所以需要單獨安裝新版本,軟件名為MMSIM61,隨著版本的升級,它的名字也在修改),當然,數字電路也可以進行仿真,數字電路的本質還是模擬電路;

2、synopsys公司的 Hspice是與spectre一樣的仿真工具,另有些差別。

3、Mentor公司的 Modelsim,主要在windows上使用,用于verilog網表的仿真。

模擬電路仿真工作流程:在cadence中搭建好仿真環(huán)境,設置好仿真參數,選用spectre或者hspice,然后就可以進行仿真的。另外,也可以將電路導出成CDL網表,拷貝到Windows上,用Windows版本的Hspice進行仿真,這樣做的優(yōu)點是Windows易于操作。另外說明一下spectre和hspice的一項區(qū)別。spectre仿真的時候會保存所有電路節(jié)點的數據,這樣做優(yōu)點是方便查看各個節(jié)點的數據,缺點是仿真消耗的時間太長,保存的數據文件太大,這一點在遇到大型電路的時候會很耗時(不知道最新版本改進這一點沒有,鄙人沒有用過最新版的spectre)。hspice仿真之前可以自己選定所要查看的節(jié)點,這樣做就可以減少仿真時間和減小數據文件的大小。有關于spectre和hspice的詳細仿真過程就不細說了,或許還沒有別人講得好,附百度文庫鏈接:http://wenku.baidu.com/view/1be650669b6648d7c1c7463d.html。

http://wenku.baidu.com/link?url=tel2SndqC_mtKmZp_SXLDWLfQOE8Zm8Ci4UGhTs8numC3xoKM5frNMV7T2n9Z0k3_l_mHdt5T4zCSFls2bUt9K1xHjiMIek7VK7oV0mIt_q

數字電路仿真工作流程:在virtuoso schematic中將整理好的電路路中數字電路部分導出成網表文件,再拷貝到windows系統(tǒng)上進行仿真。windows系統(tǒng)上數字電路網表的仿真采用Modelsim。(這么做的原因是linux系統(tǒng)不太方便)使用Modelsim仿真,最重要的是寫好testbench(貌似這句是廢話)。詳細仿真過程就不舉例說明了,附上百度文庫鏈接:

http://wenku.baidu.com/link?url=Un2xqDYXRGy0126I5czuolgcLCYHMFgZndGB***HMG-NMfyMW-TNTtBMmv8BPJ84v5REo81rgf0ymJ82l3QnfyJopHsjn1TnpfmvxLgEslm3

關于電路的修改,這部分其實不好總結,因為每一款芯片都有不同的參數,所要修改的地方都不太一樣,我所知道的是,必定要考慮修改的地方往往都是有關模擬電路的,例如,時鐘振蕩、復位電路、開漏輸出管、帶隙等,修改的目的是為了與當前所選用的工藝適配,以滿足芯片datasheet的參數要求。另外,數字部分的電路其實一般來說是不需要修改的,但有時為了節(jié)省版圖面積,會縮小寄存器管子的尺寸,畢竟縮小一個,就等于縮小了幾十個。這一階段其實是一個不斷的迭代過程,它要和版圖繪制結合起來,這樣才能夠保證芯片功能和性能的完整。

六、版圖繪制

這部分在電路整理完之后就可以開始進行了,并配合電路仿真與修改,逐步完善版圖的繪制。該階段所使用的主要工具有

1、cadence ic5141的版圖繪制軟件;

2、cadence Dracula Diva或者Calibre,這兩個用于版圖DRC(設計規(guī)則檢查)、LVS(版圖一致性檢查);一般而言,calibre會更加常用一些,畢竟這可是Mentor公司的招牌軟件之一。在版圖繪制好并進行各種檢查無誤之后,就可以tapeout,準備流片了。

七、測試規(guī)范

IC設計師在芯片tapeout之后就要準備制定CP測試規(guī)范了,這是接下來CP測試流程的總綱,非常重要。測試規(guī)范的測試項主要來源于芯片datasheet,將重要的參數設置為測試項,并規(guī)定參數的合理分布范圍以及每一個測試項的測試方法(流程)。這些測試參數以及測試方法將決定CP測試開發(fā)時所用到的測試環(huán)境ATE(auto test environment)。

八、CP測試開發(fā)

根據測試規(guī)范,可以選定所需要的測試工具以進行整個測試環(huán)境的搭建工作。我所知道到用于芯片測試的測試儀有JUNO DTS-1000,ASL1000,V777,STS8200等。每一種測試儀適用于不同種類的芯片測試,測試儀主要分為數字測試,模擬測試,數模混合測試這三大類。CP測試開發(fā)所需要做的工作有:

1,測試儀的選擇(ps:這個階段還要考慮一個重要的因素就是一次測試多少顆裸芯,也就是CP測試常說的多少個site,這關系到后續(xù)測試程序的編寫,以及DUT板的制作,非常重要);

2,根據測試儀開發(fā)測試程序;

3,制作測試裸芯片用DUT板,扎PAD位的針由測試廠制作并焊接在DUT上(ps:DUT板有時候也叫針卡);

4,自制測試儀(可選),當測試儀并不能完成某些特殊測試項的要求時,還得自己制作測試儀。例如,紅外接收芯片測試所需要用到的掃頻儀,若采用非自制掃頻儀,測試時間將非常長,必須自己制作。5,測試數據的分析。對測試數據的分析有助于對測試方法的改進和對芯片設計的改進。CP測試在整個芯片反向設計中占據著重要位置,所花費的人力、物力是非常多的,還需要頻繁和測試廠交流,所以CP測試顯得非常復雜。在CP測試開發(fā)完之后,會進行COB測試,之后才進行CP測試的調試階段,以及正式批量測試階段。

九、COB測試

所謂COB測試,其實就是Chip On Board(將裸芯打線在PCB板上或者將封裝好的芯片焊接在PCB上,并將引腳引出),它是在CP測試進行之前進行的一項測試(也在成品測試之后進行),用于初步判斷芯片的功能和性能,如果這批次隨機采樣的幾顆芯片功能和性能都很爛就暫時不必進行CP測試了。另外,COB測試相比于CP測試具有更多的靈活性,可以測試更多的測試項,獲取有關芯片更為全面的信息。當然,COB測試也是需要開發(fā)一套相應的測試環(huán)境的。開發(fā)的工作根據芯片的不同,工作量會有很大的不同,例如,如果有I2C通信引腳的芯片,需要用到USB轉I2C芯片,例如FT232。通過在電腦編程,通過控制USB轉I2C芯片來控制待測芯片。這樣的話,搭建整個測試環(huán)境就會比較復雜。如果是模擬芯片,例如電源管理類芯片,需要使用LabView編程來控制數字源表進行自動化參數測量。總之,COB測試也是芯片設計中一個比較重要的流程, 這部分的工作內容,比較難以敘述,簡單的,就用數字源表測試幾項參數就行了,復雜的都會基于軟件控制的形式進行半自動的測試。具體說來,

1、開發(fā)在PC端開發(fā)測試的程序,例如LabView;

2、設計測試芯片的電路板,并留下與PC通信的接口,通常采用單片機做主控芯片;

3、搭建測試所需要的環(huán)境,比如說遮光要求。過程敘述得很簡單,但實際開發(fā)并不容易,難度視待測芯片而異。

十、成測開發(fā)

在CP測試完了之后,裸芯就可以送到成測廠進行劃片和封裝了,在這期間,IC設計師所要做的工作就是依據制定成品測試的規(guī)范并進行成品測試的開發(fā)。這部分的工作其實和CP測試的工作是類似的,只不過,相對于CP測試而言,成品測試的測試項會少很多。許多CP測試用到的測試項,比如,燒調之類的,成品測試就不會進行了,其余步驟均與CP測試一致。

十一、可靠性測試

芯片封裝好,并通過了成品測試之后,并不意味著芯片的測試就結束了,還有芯片可靠性測試。在成測結束,并把樣品返回設計師手中之后,設計師還需進行COB測試,并在這時預留幾顆芯片不參與接下來的可靠性測試,這幾顆芯片將在可靠性測試之后作為對比之用。

芯片可靠性測試,是衡量芯片的質量和壽命的一項測試。它具體包括環(huán)境測試、EMC測試、其它測試等三大項。細分項有高溫低溫測試、高溫高濕測試,抗靜電測試等等,全部的測試項可參考IC可靠性測試項目。每一款芯片都有與其對應的可靠性測試項,并不是所有測試項目都要測。我們只要關注與該芯片適配的測試項就行。具體如何決定測試項,這需要與芯片的用途有關,每一種用途,它的測試要求都是不一樣的??煽啃詼y試實驗比較簡單,但是,芯片的可靠性卻是由此來衡量的。可靠性測試需要的測試工具都比較昂貴,當然工具的重復使用性也是比較好的。每一個測試項都對應這一套測試設備。

十二、成品開發(fā)

設計出的芯片必須配置相應的使用方案,才能將芯片推廣出去,客戶才能夠更好的使用芯片。不同用途的芯片,它的使用方案不一樣,差別也是非常巨大的。像單片機、ARM、FPGA類芯片,配置的可不是簡單的使用方案,而是一整套使用它的系統(tǒng)。電源管理芯片,需要配置一個電源管理芯片的一套應用方案,并且需要具有一定的競爭力,這才能夠將芯片賣出去。所以成品開發(fā)是芯片能否賣出去的關鍵。我所接觸到的成品開發(fā),基本是以單片機為主控芯片的開發(fā)方案。具體開發(fā)過程將在后續(xù)有更為詳細的說明。

芯片設計流程(四)——正向設計

正向設計其實和反向設計差別在于設計部分,其余部分的流程基本相同。正向設計的設計部分由于是原創(chuàng),所以會使用很多的工具。反向設計,很多東西不必去驗證,所以工具軟件也就不會用到那么多。

對有關IC設計流程的相關事宜做一個總結

一、總體規(guī)劃

隨著集成電路設計規(guī)模的不斷擴大,出現了很多成熟的常用設計模塊,也被成為IP核,現在芯片正向設計,不再是完全從0開始,都是基于某些成熟的IP核,并在此基礎之上進行芯片功能的添加。真正從0開始設計的芯片,不是沒有,而是成本太高,企業(yè)無法承擔,而且也并沒有必要從0開始設計。例如現在的ARM芯片開發(fā),那些大公司基本上是獲取ARM公司的授權,得到ARM芯片的IP核,并根據細分市場的需求進行有針對性的開發(fā)。這是數字芯片的情況,模擬芯片的情況也是類似的,當然我們并不能小看別人的原創(chuàng)能力,以為就是隨隨便便在別人的基礎上小修小補就可以設計出令人滿意的芯片,還有很多東西依然是需要豐富的經驗和知識的。芯片正向設計依然是從市場未來需求著手,從開發(fā)成本和預期收益來衡量是否進行芯片的開發(fā)的。明確市場未來需求之后,就將這些需求轉化為芯片的各項重要參數指標,然后進行任務劃分,模擬設計師負責模擬,數字設計師負責數字。個人對于模擬部分不太熟,所以就略過。重點總結數字設計部分,當然這部分也不是很熟,因為沒有真正做過。

二、架構/算法

現在數字電路在芯片中占有極大的比重,數字邏輯也變得越來越復雜,所以必須從架構和算法上進行考慮。個人所略知的關于芯片架構的是,架構可以分為三種大的方向:

1,數據流;

2,控制流,

3,總線流。數據流:數據從輸入到輸出是一條直線,并沒有折回的數據,這是純數據處理的一種架構,這種芯片功能應該是比較單一。

2,控制流,這是基于狀態(tài)機或者CPU形式的一種架構設計。簡單點的芯片就采用狀態(tài)機就夠了,復雜的就必須采用CPU作為控制內核了,比如單片機就是以CPU為控制內核,外加RAM,ROM所形成的一類控制類芯片。

3,總線流,這是基于總線的芯片設計架構,最熟悉的就是SOC類芯片,總線上連接著一個或多個CPU,RAM,ROM,I2C,UART等等之類的各種組件。由這些組件的不同排列組合,形成滿足各種不同需求的芯片,例如不同的ARM類芯片。

算法,我所略知的是通信類的,例如,FIR,FFT,小波變換,三角函數變換等等,當然還有視頻音頻類的算法,對與這方面的內容就沒有接觸過了??偟膩碚f,這類算法都是以數據處理為主要目的的,所以這些算法都要求有較強的數學功底。做算法開發(fā),主要工具為MATLAB,都是先在MATLAB上做原型開發(fā)驗證,再轉化為RTL級的代碼。

結合架構和算法,將芯片的總體結構搭建出來,為后續(xù)的工作做好了準備。

三、RTL代碼

當算法工程師把芯片架構設計好,各種算法在MATLAB上通過了驗證,以及其他必要條件的考量之后,便將工作交接給ASIC工程師去做RTL代碼的翻譯工作,就是將MATLAB上的算法翻譯成RTL。這一步單純從翻譯的角度只需要一個文本編輯器就可以了。然而,還有后續(xù)的仿真驗證工作,這部分的內容并不輕松。有時候根據公司的不同,根據項目的工作量大小,算法工程師與ASIC工程師在工作內容上是有交叉的,他們也承擔將MATLAB轉換為RTL的工作。RTL設計的時候也會考慮DFT(Design For Test 可測性設計)的問題,會在RTL代碼中加入測試鏈,這個我就不太熟了。

四、仿真驗證

這一步的工作比較關鍵,可以說是設計部分的第一個分水嶺。仿真驗證,視不同的公司,不同的項目,復雜度有非常大的不同。簡單的,只要寫一個較為完善的testbench驗證完RTL代碼的功能就行了;復雜的,將會在RTL驗證環(huán)境下進行詳細的驗證,甚至可能用得到各種驗證方法學UVM,VMM,OVM等等,這種復雜驗證所用的語言一般采用SystemVerilog。驗證軟件可以采用cadence公司的NC_VERILOG,或者synopsys公司的VCS。此外,某些芯片還會采用FPGA,進行硬件在線仿真。這樣能夠獲取關于芯片的更為詳細的信息。但不管如何,無論是個人還是公司,都應該有對于仿真驗證工作的一套完整和完善的流程方案。

五、工藝選擇

正向設計在一開始的整體規(guī)劃中就要考慮工藝的問題,這涉及到有關工藝的相關知識,有些工藝就是特別為某種類型的芯片而開發(fā)的。所以一旦是要開發(fā)某種有對應工藝的芯片,則直接采用即可,但往往工藝的選擇會特別耗時間,會有各種參數的考量,例如工藝生產周期,工藝的成品率,工藝生產時間的安排等等各方面的考究。這部分,需要花費特別多的時間。工藝由芯片制造廠提供,前提是必須和芯片制造廠有合作關系。

六、綜合、時序&功耗分析

這一步是在RTL仿真驗證完之后進行,當然還有一個前提,制造工藝必須選定,否則,如果中途換了工藝,這部分的工作還得重新來做,這樣將會消耗特別多的時間。這部分的工作主要用到synopsys公司的工具Design Complier(綜合)、Prime Time(時序和功耗)。這兩個工具的使用比較復雜,使用說明參考百度文庫相關資料??傮w來說,這兩個工具都是約束驅動型軟件,軟件在使用時都是靠約束文件來進行驅動的。所以工作的主要內容除了軟件的使用外最重要的就在于如何編寫約束文件。一般而言,約束主要有面積約束,扇入扇出約束,時序約束等約束條件。如果RTL代碼不滿足約束,則必須根據具體情況修改約束條件或者是修改RTL代碼。約束條件是用TCL腳本語言來寫。綜合和時序分析會生成基于所采用的工藝的電路網表,這個網表將是下一步自動布局布線所用到的主文件。

主要工作內容:

1、準備好選定的工藝庫文件(綜合網表文件、時序文件庫);

2、根據設計要求編寫TCL約束腳本;

3,操作軟件,生成約束報告;

4,分析約束報告,修改或調整不合理的約束或者修改RTL代碼(RTL代碼不會輕易修改,這要求在RTL設計時就要考慮這些約束要求,以便于能夠通過約束分析)。

七、 形式驗證

綜合出來的網表正確與否如何判定呢?這需要用到形式驗證技術,該技術與RTL的仿真不同,它是從數理邏輯出發(fā),來對比兩個網表在邏輯上的等效性。如果等效,則綜合的網表就是符合要求的。用到的工具為synopsys 公司的Formality 形式驗證工具。其實,形式驗證是在每一次芯片的邏輯電路轉換為另一種表達形式的時候都需要做的工作。具體來說,在綜合生成網表后做一次,主要對比的文件為RTL仿真之后的文件和綜合之后的網表,在布局布線之后還需要做一次,主要對比文件為綜合之后的網表與布局布線之后的網表。主要工作內容:

1、準備好待比較的兩份文件及各種工藝技術庫文件;

2、用TCL腳本編寫腳本程序,設置其中一份文件為比較標準,其中一份為待比較文件;

3、運行Formality,分析生成的比較報告;

八、自動布局布線

這個步驟嚴重依賴于軟件和經驗,目前常用的軟件為Cadence Encounter不同版本的自動布局布線軟件名字可能不一樣。Synopsys公司也有對應的自動布局布線的軟件ASTRO,最新版本為ICC套件。軟件的使用同樣可以在網上找到相關資料,這里就不細說了。主要工作內容:

1、準備好工藝文件(時序文件庫 數字版圖庫);

2,準備好綜合之后的電路網表文件及約束文件;

3,根據設計要求,設置好版圖面積等相關參數,

4,進行自動布局布線,檢查時序和功耗,如果不滿足要求,則再次修改相關參數,直到符合設計要求為止。

自動布局布線需要注意的是:數字信號一定要關注好關鍵路徑的延時問題,這一點曾經是數字設計的關鍵問題?,F在,據說,時序已經不再是芯片設計的主要難題了,主要難題已經轉移到了功耗上,在設計的每一個階段都要考慮功耗的問題。

模擬部分似乎是沒有數字部分那么多的工具需要使用,但模擬部分的電路設計最考究的還是工程師們的設計經驗,而這些經驗都是要靠時間才能堆出來的。模擬電路的每一個模塊都需要很多的時間去驗證,比說一個高性能的放大器,一個與工藝和電壓無關的帶隙基準等等。模擬的版圖只能是一個一個管子的畫,沒有自動布局布線的必要,因為模擬電路的管子也不會很多。

剩下的工作就是合并整體的版圖,并進行DRC、LVS的各種驗證,通過之后就可以tapeout。之后再制定測試規(guī)范,這與反向設計的剩余步驟是一樣的。另外,有時候版圖還需要做ECO(Engineering Change Order)工程修改命令,是指在原有的設計 的基礎上如果要作一些改動,可不必從頭再來,可以在原來的布局上通過eco步驟快捷地 完成設計。

芯片設計流程(五)——工藝文件說明

在芯片的設計重要設計環(huán)節(jié),像綜合與時序分析,版圖繪制等都需要用到工藝庫文件,而大家往往又對工藝文件缺乏認識,所以導致想自學一些芯片設計的東西就顯得很困難。例如,沒有工藝版圖庫文件,學習版圖設計就是紙上談兵。這篇文章主要介紹一下工藝庫相關的知識。

工藝文件由芯片制造廠提供,所以概括性的了解國內和國際上有哪些芯片制造廠是很有必要的。國際上,主要有臺積電,英特爾,三星等主要半導體制造商。國內,主要有中芯國際,華潤上華,深圳方正等公司。這些公司都提供相關的工藝庫文件,但前提是要與這些公司進行合作才能獲取,這些工藝文件都屬于機密性文件。

完整工藝庫文件主要組成為:

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是不會用到了。正向設計(從代碼開始設計的正向設計)則所有的文件都需要用到。由于工藝文件在芯片設計中占有極重要的位置,在每一個關鍵設計環(huán)節(jié)都要用到,再加上它的機密屬性,所以網絡上很難找到完整的工藝文件對于個人學習用,EETOP上有一份cadence公開的用于個人學習的工藝庫文件可以方便大家學習,但似乎也是不完整的。

芯片設計流程 (六)——綜合

本文是根據《綜合與Design Compiler》文章,寫就的一篇關于綜合的簡要總結,供自己整理思路之用。算是對前文《芯片設計流程(八)——正向設計2》中的綜合分析做一個進一步的展開說明。

什么是綜合?綜合就是將RTL級verilog代碼用Design Compiler 工具 轉換/映射成用基礎門級單元表示的電路的過程?;A門級單元也就是平時我們學的與非門,或非門,寄存器之類的,只不過,這些門級單元已經做成了標準的單元庫,我們可以直接使用軟件來調用,而不需要自己調用門級單元來搭建電路。簡單的來說,Design Compiler軟件就是做翻譯的工作——將代碼翻譯成實際電路,但又不僅僅是翻譯這么簡單,它涉及到電路的優(yōu)化與時序約束,使之符合我們做制定的性能要求。 前文提到該軟件是約束驅動型軟件,那么約束從何而來?答案是,設計規(guī)格書。每一個芯片設計項目都會有一個項目規(guī)格說明書,這是在芯片設計之初,整體規(guī)劃(見前文)的步驟中要制定好的。具體詳細的約束要求需要在綜合過程中仔細的斟酌決定。 綜合的一般流程:

1,預綜合過程;

2,施加設計約束過程;

3,設計綜合過程;

4,后綜合過程。

PS,使用Design Compiler軟件一個必備的條件是要學會使用DC TCL腳本。

預綜合過程。這部分主要是準備好綜合過程所使用的庫文件(包括工藝庫、鏈接庫、符號庫、綜合庫)、設計輸入文件,設置好環(huán)境參數。

施加設計約束過程。這部分主要是用DC TCL腳本編寫約束文件。具體的約束項目可以分為三大類:

a,面積約束,定義時鐘,約束輸入/輸出路徑;

b(環(huán)境屬性),約束輸入驅動,約束輸出負載,設置工作條件(最好、典型、最差情況),設置連線負載模型;

c(高級時鐘約束),對時鐘的抖動、偏移、時鐘源延遲,同步多時鐘,異步時鐘,多周期路徑,這幾類進行細致的約束。

約束的內容具體就是這么多。一個詳細的TCL腳本約束文件基本包含上述所有的約束。后面有一個約束范文。

設計綜合過程。主要是介紹電路模塊設計規(guī)劃(以利于更好的進行約束),Design Compiler綜合優(yōu)化的過程(三大優(yōu)化階段,結構級,邏輯級,門級),時序分析的具體過程等綜合過程中的一些詳細信息。

后綜合過程。綜合完畢該怎么看結果,時序違反該如何解決?這就是后綜合過程所要解決的問題。在綜合之后,通過分析綜合報告,可以得知此次的電路綜合結果如何,根據不符合的要求,進行重新約束,甚至重新設計電路。在這個階段特別值得一提的是綜合預估,因為在寫綜合約束腳本的時候,需要確定約束條件,規(guī)格書一般不能夠涉及到如此細節(jié)的部分,所以需要根據實際電路進行綜合預估,這個步驟是在代碼編寫完之后,與驗證同時進行的,目的在于大致估計電路是否符合要求,此時的預綜合過程與正式的綜合過成是一樣的,但,要求會寬松許多,時序違反的要求大概為10%-15%,也就是說電路即使有10%-15%的電路不滿足時序也沒有關系。

綜合約束過程是一個反復迭代的過程,需要多次設計預估,這樣才能不斷修正時序違反。范文:

# Set the current_design #

read_verilog {counter_pad.v counter.v} //讀取設計文件

current_design Cnt10_PAD

link

set_operating_conditions -max slow -max_library slow -min fast -min_library fast //設置工作條件

set_wire_load_mode enclosed //設置連線負載模型

set_wire_load_model -name tsmc18_wl10 -library slow //設置連線負載模型

set_local_link_library {slow.db fast.db}//設置鏈接庫

set_max_area 0 //設置面積

set_max_fanout 5 [get_ports reset_n]//設置最大扇出

set_max_fanout 4 [get_ports clk] //設置最大扇出

set_max_fanout 4 [get_ports in_ena]//設置最大扇出

set_max_transition 0.3 [get_ports reset_n]//設置信號翻轉時間

set_max_transition 0.3 [get_ports clk]//設置信號翻轉時間

set_max_transition 0.5 [get_ports in_ena]//設置信號翻轉時間

create_clock [get_ports clk]-period 10 -waveform. {0 5}//創(chuàng)建時鐘

set_clock_latency 1[get_clocks clk]//設置時鐘源延時

set_clock_latency -source 1[get_clocks clk]

set_clock_uncertainty -setup 0.5[get_clocks clk]//設置時鐘不確定度

set_clock_uncertainty -hold 0.4[get_clocks clk]

set_dont_touch_network [get_clocks clk]//設置偽路徑,不要約束

set_clock_transition -fall 0.3 [get_clocks clk]////設置下降沿信號翻轉時間

set_clock_transition -rise 0.3 [get_clocks clk]///設置上升沿沿信號翻轉時間

set_input_delay -clock clk-max 3[get_ports in_ena]//設置輸入延時

set_output_delay -clock clk -max 4 [get_ports cnt]//設置輸出延時

set_output_delay -clock clk -min 0.5 [get_ports cnt]

set_output_delay -clock clk-max 4[get_ports carry_ena]

set_output_delay -clock clk-min 0.5[get_ports carry_ena]

compile//編譯

report_timing -delay max > ./reports/pad_setup_rt.rpt//報告最大時序延時

report_timing -delay min > ./reports/pad_hold_rt.rpt//報告最小時序延時

report_constraint -verbose > ./reports/pad_rc.rpt

report_qor > ./reports/pad_rq.rpt

remove_unconnected_ports -blast_buses [get_cells -hierarchical *]

set bus_inference_style. {%s[%d]}

set bus_naming_style. {%s[%d]}

set hdlout_internal_busses true

change_names -hierarchy -rule verilog

define_name_rules name_rule -allowed {a-z A-Z 0-9 _} -max_length 255 -type cell

define_name_rules name_rule -allowed {a-z A-Z 0-9 _[]} -max_length 255 -type net

define_name_rules name_rule -map {{"\\*cell\\*" "cell"}}

define_name_rules name_rule -case_insensitive

change_names -hierarchy -rules name_rule

write -format verilog -hier -o ./outputs/pad_counter.sv

write -format ddc -hier -o ./outputs/pad_counter.ddc

write_sdc ./outputs/pad_counter.sdc

write_sdf ./outputs/pad_counter.sdf

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • IC
    IC
    +關注

    關注

    36

    文章

    5833

    瀏覽量

    174906
  • 電路仿真
    +關注

    關注

    36

    文章

    207

    瀏覽量

    95616
  • 工具
    +關注

    關注

    4

    文章

    307

    瀏覽量

    27664

原文標題:芯片設計全流程詳解

文章出處:【微信號:eetop-1,微信公眾號:EETOP】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【「數字IC設計入門」閱讀體驗】+ 數字IC設計流程

    設計的流程,對IC行業(yè)有初步的認識,這樣有助于后面技術章節(jié)的學習;對于我通讀第1章后,最大的收獲就是了解了數字IC的設計流程。書中使用圖1
    發(fā)表于 09-25 15:51

    IC設計流程

    本帖最后由 eehome 于 2013-1-5 09:45 編輯 今天徹底無語了,學弟問我,從Schematic到GDSⅡ的流程是什么,我竟然答之,仿真、綜合、布局布線……事后,覺得
    發(fā)表于 01-11 13:49

    模擬IC設計流程總結

    `模擬IC設計流程總結`
    發(fā)表于 08-20 19:49

    求助大神幫忙做一個SLE4442卡的IC卡開發(fā)板

    求助大神幫忙做一個SLE4442卡的IC卡開發(fā)板,基于51單片機的,需要實現1、要可以顯示IC卡的讀/寫演示。要可以顯示IC卡的門鎖系統(tǒng)。要IC
    發(fā)表于 05-13 10:55

    labview數據傳輸注意事宜

    labview數據傳輸注意事宜,很好的總結
    發(fā)表于 03-30 21:15

    IC設計流程與方法是什么?

    關于IC設計的流程是怎樣的?有關IC設計的方法有哪些?
    發(fā)表于 06-21 07:51

    對stm32f407的14定時器的時鐘做一個總結

    上午想要用Timer10做相對精確的延時功能,但是用示波器發(fā)現實際延時數值總是只有半,百思不得其解。仔細查閱各處資料結合實際研究后對stm32f407的14定時器的時鐘做一個總結
    發(fā)表于 08-06 06:21

    有關51單片機有關晶振的問題總結(干貨)

    在初學51單片機的時候,總是伴隨很多有關于晶振的問題,其實晶振就是如同人的心臟,是血液的脈搏,把單片機的晶振問題搞明白了,51單片機的其他問題迎刃而解……有關51單片機有關晶振的問題
    的頭像 發(fā)表于 02-10 11:02 ?9092次閱讀

    對正極材料的檢測方法做一個初步的介紹

    本系列將從正極材料的相關檢測方法入手,從理論結合實際,帶大家初步的了解相關材料的檢測方法。今天將對正極材料的檢測方法做一個初步的介紹。
    的頭像 發(fā)表于 02-09 15:49 ?1.1w次閱讀
    對正極材料的檢測方法<b class='flag-5'>做一個</b>初步的介紹

    如何用廢棄的電腦風扇做一個磁攪?

    之前直想做一個,但直沒動,最近要用就用廢棄的電腦風扇做了
    的頭像 發(fā)表于 08-07 14:57 ?6799次閱讀

    中國移動與中國廣電合作的相關事宜

    近日,中國移動有限公司董事長楊杰在財報會上透露了中國移動與中國廣電合作的相關事宜。楊杰表示,目前雙方正在就有關細節(jié)問題進步商談,預計今年雙方在5G合作方面沒有實質性的網絡建設部署
    的頭像 發(fā)表于 09-07 14:27 ?3106次閱讀

    數字IC設計流程

    ? ? 數字IC設計流程是每個IC從業(yè)者的第課,無論你是做前端,后端,還是驗證,都需要對芯片的整個設計流程
    的頭像 發(fā)表于 12-09 10:12 ?6835次閱讀
    數字<b class='flag-5'>IC</b>設計<b class='flag-5'>流程</b>

    用LDR做一個自動夜燈

    電子發(fā)燒友網站提供《用LDR做一個自動夜燈.zip》資料免費下載
    發(fā)表于 10-28 14:21 ?0次下載
    用LDR<b class='flag-5'>做一個</b>自動夜燈

    使用FPGA做一個ODrive

    核心CPU是XX32FXXX,在工業(yè)控制領域其實FPGA占比也很大,所以能不能用FPGA做一個ODrive呢?答案是肯定的。
    的頭像 發(fā)表于 10-20 11:15 ?778次閱讀
    使用FPGA<b class='flag-5'>做一個</b>ODrive

    教你做一個電子打火機

    現在隨著科技的發(fā)展,環(huán)保顯得越來越受大家重視,淘汰了很多傳統(tǒng)的產品,現在天然氣的打火機雖說還沒有被淘汰,但是隨著技術的發(fā)展,淘汰是難免的,今天就教大家做一個電子打火機,雖然談不上節(jié)能,大家可以做個參考,當做一個樂趣。
    的頭像 發(fā)表于 11-15 14:13 ?1613次閱讀