芯片設(shè)計(jì)流程(一)——序章
目前,國(guó)外集成電路設(shè)計(jì)已經(jīng)非常成熟,國(guó)外最新工藝已經(jīng)達(dá)到7nm,而國(guó)內(nèi)才正處于發(fā)展期。有關(guān)于集成電路的發(fā)展就不說(shuō)了,網(wǎng)絡(luò)上有的是資料。對(duì)于IC設(shè)計(jì)師而言,理清楚IC設(shè)計(jì)的整個(gè)流程對(duì)于IC設(shè)計(jì)是非常有幫助的。然而,網(wǎng)絡(luò)上似乎并沒(méi)有有關(guān)于IC設(shè)計(jì)整個(gè)流程的稍微詳細(xì)一點(diǎn)的介紹,僅僅只是概略性的說(shuō)分為設(shè)計(jì)、制造、測(cè)試、封裝等四大主要板塊,有的資料介紹又顯得比較分散,只是單獨(dú)講某個(gè)細(xì)節(jié),有的只是講某個(gè)工具軟件的使用卻又并不知道該軟件用于哪個(gè)流程之中,而且每個(gè)流程可能使用到的工具軟件也不是太清楚(此觀點(diǎn)僅為個(gè)人經(jīng)歷所得出的結(jié)論,并不一定真是這樣)。因此,我對(duì)目前所接觸到的有關(guān)IC設(shè)計(jì)流程的相關(guān)事宜做一個(gè)個(gè)人性的總結(jié)。這個(gè)總結(jié)并不是很準(zhǔn)確,因?yàn)閭€(gè)人的經(jīng)歷所限,有很多芯片設(shè)計(jì)流程中的細(xì)節(jié)沒(méi)辦法接觸,對(duì)于晶圓制造,封裝等板塊都不是太熟悉,但這至少算是一個(gè)相對(duì)完整的有關(guān)IC設(shè)計(jì)的總結(jié)。
芯片正向設(shè)計(jì)與反向設(shè)計(jì)。目前國(guó)際上的幾個(gè)大的設(shè)計(jì)公司都是以正向設(shè)計(jì)為主,反向設(shè)計(jì)只是用于檢查別家公司是否抄襲。當(dāng)然,芯片反向工程原本的目的也是為了防止芯片被抄襲的,但后來(lái)卻演變?yōu)樾」緸榱烁旄〕杀镜脑O(shè)計(jì)出芯片而采取的一種方案。目前國(guó)內(nèi)逐漸往正向設(shè)計(jì)轉(zhuǎn)變的公司也越來(lái)越多,正逐漸擺脫對(duì)反向設(shè)計(jì)的依賴。當(dāng)然,正處于發(fā)展初期的公司也不少,自然反向設(shè)計(jì)也是不少的。本文章從芯片反向設(shè)計(jì)開(kāi)始進(jìn)行總結(jié)。
芯片設(shè)計(jì)流程(二)——工具
“工欲善其事,必先利其器”。隨著集成電路的不斷發(fā)展,不管是芯片正向設(shè)計(jì)還是反向設(shè)計(jì),它們對(duì)于工具的依賴性越來(lái)越強(qiáng),因此,在要開(kāi)始講設(shè)計(jì)流程之前,先來(lái)看一看,我們到底會(huì)用到哪些主要的工具和輔助性的軟件。
一、主要工具軟件
說(shuō)到設(shè)計(jì)工具,就不能不提到三大EDA廠商——cadence,synopsys,mentor。這三家公司的軟件涵蓋了芯片設(shè)計(jì)流程的幾乎所有所能用到的工具。首先是cadence公司,這家公司最重要的IC設(shè)計(jì)工具主要有candence IC系列,包含了IC 5141(目前最新版本是IC617),NC_VERILOG(verilog仿真),SPECTRE(模擬仿真),ENCOUNTER(自動(dòng)布局布線)等等synopsys公司,最出名的是它的綜合工具design complier,時(shí)序分析工具prime time,模擬仿真工具h(yuǎn)spice等;mentor公司最出名的工具是calibre(版圖DRC LVS檢查),modelsim(verilog仿真)。
這些都是IC設(shè)計(jì)最常用的工具,無(wú)論是正向設(shè)計(jì)還是反向設(shè)計(jì)。當(dāng)然,隨著軟件版本的更新迭代,軟件的名字可能有所變更,并不是上述的那些名稱。另外,這些工具主要集中在以linux為內(nèi)核的操作系統(tǒng)上,主要代表有Red Hat。所以有關(guān)unix\linux類操作系統(tǒng)的知識(shí)還是有必要學(xué)的,該類系統(tǒng)與windows系統(tǒng)有很大的不同,要想學(xué)會(huì)使用這些軟件,首先要學(xué)習(xí)這些操作系統(tǒng)的相關(guān)知識(shí),具體資料網(wǎng)上有很多。部分工具有windows版本,例如hspice,Modelsim。
二、 輔助類工具軟件
當(dāng)然,除了這三大EDA廠商的IC設(shè)計(jì)工具外,Altera(intel)、Xilinx、KeilSoftware這三家公司的軟件開(kāi)發(fā)環(huán)境等,都是對(duì)于IC設(shè)計(jì)流程中比不可少的工具。它們分別是用于FPGA、單片機(jī)&ARM芯片的開(kāi)發(fā)。這類軟件在芯片的CP測(cè)試和芯片應(yīng)用方案開(kāi)發(fā)上會(huì)有用到。
版圖提取工具,NetEditorLite、ChipAnalyzer,這兩個(gè)工具主要是針對(duì)芯片反向設(shè)計(jì)而言的。
算法設(shè)計(jì)工具,MATLAB,此工具應(yīng)用范圍很廣,但對(duì)于芯片設(shè)計(jì)來(lái)說(shuō),它較為適用于算法原型開(kāi)發(fā),例如,通信算法。
PCB版圖工具,Altium Designer,Orcad,Allegro。其中,目前Orcad,Allegro是屬于cadence電路系統(tǒng)設(shè)計(jì)套件內(nèi)的主要軟件,而Altium Designer是最常用的軟件,它的前身是Protel。
Labview與數(shù)字源表,這一對(duì)軟硬件主要用于芯片電氣參數(shù)的半自動(dòng)化測(cè)試,特別是模擬芯片。其目的是芯片設(shè)計(jì)公司用于分析芯片樣品參數(shù)用。
對(duì)于這些工具的該如何使用,我會(huì)在下面的文章中進(jìn)行說(shuō)明。ps:沒(méi)有具體說(shuō)明軟件使用環(huán)境的,一般是在windows環(huán)境下使用。
芯片設(shè)計(jì)流程(三)——反向設(shè)計(jì)
因?yàn)閭€(gè)人對(duì)芯片的反向設(shè)計(jì)比較熟,所以先從反向設(shè)計(jì)說(shuō)起。下面是我整理的芯片反向設(shè)計(jì)的流程圖,在這些流程里面,我大部分都做過(guò),但也有些地方是不熟的,比如說(shuō),版圖繪制、芯片制造和封裝等,這將在下一章進(jìn)行詳細(xì)說(shuō)明。
一、反向設(shè)計(jì)總體規(guī)劃
在進(jìn)行一塊新品芯片的開(kāi)發(fā)前期必須要有一個(gè)設(shè)計(jì)總體規(guī)劃,其中最主要的問(wèn)題就是,這顆芯片是否能帶來(lái)收益,畢竟公司要靠產(chǎn)品吃飯。如何評(píng)估芯片能否帶來(lái)收益?這需要多年的經(jīng)驗(yàn)才能進(jìn)行準(zhǔn)確的評(píng)估。一般是看市場(chǎng)上哪幾款芯片銷量好,未來(lái)幾年的銷量看漲,并且評(píng)估本公司是否有能力設(shè)計(jì)并且有渠道銷售出去。我所知道的要考慮的芯片成本有以下幾項(xiàng):
1,芯片拍片成本;
2,芯片從立項(xiàng)到交貨的時(shí)間成本,時(shí)間過(guò)程導(dǎo)致芯片即使設(shè)計(jì)出來(lái)了,市場(chǎng)已經(jīng)不需要了;
3,流片成本;
4,工具軟件的授權(quán)使用成本;
5,測(cè)試成本,包括CP測(cè)試和成品測(cè)試以及搭建測(cè)試平臺(tái)所需要的其它成本;
6,封裝成本。
這幾項(xiàng)考慮個(gè)人認(rèn)為還不太成熟,但對(duì)于我來(lái)說(shuō),暫時(shí)夠用了。將這些成本進(jìn)行適當(dāng)預(yù)估之后,再來(lái)看收益。對(duì)于收益這塊,這是和市場(chǎng)的需求和銷量走向有關(guān),需要涉及到許多其他方面的考慮,個(gè)人對(duì)這塊不熟悉,也就不予以評(píng)論。在收益問(wèn)題解決了之后,明確此項(xiàng)目可以獲得收益,那么就可以正式開(kāi)工,前面說(shuō)的一堆東西其實(shí)就是項(xiàng)目可行性分析的一部分。但,其實(shí)有些公司并不會(huì)考慮那么多,因?yàn)檫@些可行性分析本身非常困難。反向哪一家的芯片?選擇大公司的芯片進(jìn)行反向一般來(lái)說(shuō)成功率會(huì)更高。選定芯片后就進(jìn)行拍片了,芯片進(jìn)行解剖拍片一般周期在1周到1個(gè)月之間,這視芯片的大小而定。
二、工藝選擇
這個(gè)要依據(jù)拍片回來(lái)的芯片版圖來(lái)決定,通過(guò)對(duì)芯片版圖的識(shí)別,判斷待反向的芯片版圖使用的工藝是什么,再根據(jù)公司自己擁有的工藝文件(這些工藝文件都由國(guó)內(nèi)或者國(guó)外的芯片制造廠提供,前提是公司得與它們合作才能得到工藝文件),兩者進(jìn)行比對(duì),選擇一個(gè)適合的工藝進(jìn)行后續(xù)的仿真、版圖繪制和流片。工藝選擇的問(wèn)題,需要對(duì)公司所擁有的工藝非常熟悉,并且對(duì)版圖也要熟悉的工程師來(lái)解決,他要能夠通過(guò)版圖明確的識(shí)別所用的工藝。當(dāng)然,工藝有時(shí)候會(huì)在設(shè)計(jì)過(guò)程中反復(fù)的更換,因?yàn)闀?huì)有許多參數(shù)、流片成功率等各種復(fù)雜因素的考量。這一步其實(shí)也就叫工藝可行性分析,其實(shí)也應(yīng)該歸于項(xiàng)目可行性分析的一部分,但是由于必須要拍片才能進(jìn)行,所以只能單獨(dú)說(shuō)明。
三、版圖提取
在上一步工藝可行性分析完之后,確認(rèn)有工藝可以和該版圖匹配,那么就可以進(jìn)行版圖提取工作。這部分的工作其實(shí)主要是識(shí)別版圖中的管子并用符號(hào)表示出來(lái)。所用到工具有
A、NetEditorLite或者ChipAnalyzer,這是版圖提取工具,在不同的公司進(jìn)行芯片拍片,會(huì)用到不同的版圖提取工具。該類軟件的作用就是一個(gè)圖片查看器,拍攝的版圖就是數(shù)據(jù)就是照片。
B、cadence IC5141 里的virtuoso schematic軟件,這是電路圖繪制軟件。整個(gè)工作的流程是用NetEditorLite或者ChipAnalyzer打開(kāi)拍片的芯片版圖數(shù)據(jù),人工肉眼識(shí)別里面的管子(二極管、三極管、MOS管之類),再使用virtuoso schematic將管子用符號(hào)表示出來(lái),并把管子之間的連接關(guān)系連接上。
版圖提取所要注意的問(wèn)題:
1,初次進(jìn)行版圖提圖,可能會(huì)不認(rèn)識(shí)管子,需要有經(jīng)驗(yàn)的人來(lái)幫助識(shí)別,熟悉之后就容易了;
2,不同工藝的版圖管子的形狀是不一樣的,所以碰到不認(rèn)識(shí)的管子,要么靠別人幫忙,要么就只能自己去推理;
3,要有良好的管子命名習(xí)慣,這個(gè)每個(gè)公司都應(yīng)該有規(guī)定的,這對(duì)于后續(xù)的工作會(huì)有很大幫助;
4,盡量按照版圖的布局來(lái)放置管子的布局(在virtuoso schematic上的電路圖布局),這樣可以加快以后對(duì)比電路圖和版圖時(shí)找管子的速度;
5,在整理提取出的電路時(shí)一定要新建一個(gè)電路圖來(lái)放置整理的電路,不要在剛提取的電路圖上整理,方便整理時(shí)和版圖數(shù)據(jù)對(duì)比。ps:有些芯片拍片公司也有提供版圖提取與整理的服務(wù)。
四、電路整理
在版圖提取完畢之后,下一個(gè)步驟就是電路整理。提取完的電路圖是混亂的,沒(méi)有層次關(guān)系。那么如何將其整理成具有層次關(guān)系,讓人一看就懂呢?
1、這就涉及到有關(guān)芯片的一些常識(shí)了。芯片分為數(shù)字芯片和模擬芯片,但是數(shù)字芯片必定會(huì)包含模擬電路,而模擬芯片卻可以不包含數(shù)字電路。它們有如下一般特征:
A、數(shù)字芯片,必有時(shí)鐘振蕩電路、復(fù)位電路這些模擬電路。必有寄存器,而且整個(gè)數(shù)字部分最耗面積的部分往往都是寄存器。寄存器的使用量是很大的,因此,在版圖上呈現(xiàn)的就是有大數(shù)量的圖像一模一樣的電路,這種電路往往都是寄存器。
B、模擬芯片,有帶隙基準(zhǔn)電路,有放大器,個(gè)人對(duì)模擬芯片不是很熟,所以略過(guò)。
2、說(shuō)完了芯片版圖常識(shí),另外一個(gè)重要的有助于理解所提取的電路的工具就是待反向的芯片的數(shù)據(jù)手冊(cè)!這是最重要的,我們所有有關(guān)于芯片的信息都是從數(shù)據(jù)手冊(cè)上得來(lái)的。所以一定要善用DATASHEET!在芯片數(shù)據(jù)手冊(cè)上,一般會(huì)對(duì)芯片的功能進(jìn)行說(shuō)明,對(duì)芯片如何運(yùn)行進(jìn)行說(shuō)明,這些說(shuō)明將有助于我們對(duì)于電路的整理。
比如說(shuō),芯片手冊(cè)上說(shuō)道用了I2C,那么電路中肯定有一大塊電路是屬于I2C的。一般來(lái)說(shuō),版圖的布局都是將同屬于一種功能的管子會(huì)集中放置在一起。I2C電路的特征,從I2C協(xié)議的原理上可以知道,它就兩根信號(hào)線,一根時(shí)鐘,另一根數(shù)據(jù)線。數(shù)據(jù)在芯片內(nèi)部一般是并行傳輸比較方便,所以,I2C電路一定會(huì)有串并轉(zhuǎn)換電路,而串并轉(zhuǎn)換電路一般是寄存器,而且一般是8位。根據(jù)這個(gè)推斷結(jié)果,就在提取的電路中去尋找8個(gè)在一起的寄存器,它們其中一組就是I2C電路的一部分,再根據(jù)芯片版圖的I2C PAD位去尋找,看連接到了那一組寄存器上,那么整個(gè)I2C的電路就被識(shí)別出來(lái)了。因此,
a、靠著芯片手冊(cè)對(duì)芯片功能的說(shuō)明,
b、加上芯片的一些常識(shí)性知識(shí),
c、加個(gè)人的這種對(duì)電路原理的推理,就可以相對(duì)較快的將電路分層次的整理出來(lái)。
逐步的理解整個(gè)芯片的原理。當(dāng)然,由于芯片電路的龐大的關(guān)系,有時(shí)候電路并不是需要完全理清楚,對(duì)于不那么重要的電路可以不理會(huì)。只要保證連接關(guān)系沒(méi)連接錯(cuò)就行。這階段,只會(huì)用到cadence ic5141的virtuoso schematic軟件。
五、 電路仿真及修改
電路整理好了,下一步就是進(jìn)行電路的仿真及修改了,根據(jù)工藝選擇步驟選擇的工藝來(lái)進(jìn)行。先說(shuō)明一下這階段所使用的工具:
1、cadence spectre,一般集成在cadence ic5141里面,是模擬電路仿真工具(ps:最原始的版本是集成在IC5141內(nèi)部,但功能不全,所以需要單獨(dú)安裝新版本,軟件名為MMSIM61,隨著版本的升級(jí),它的名字也在修改),當(dāng)然,數(shù)字電路也可以進(jìn)行仿真,數(shù)字電路的本質(zhì)還是模擬電路;
2、synopsys公司的 Hspice是與spectre一樣的仿真工具,另有些差別。
3、Mentor公司的 Modelsim,主要在windows上使用,用于verilog網(wǎng)表的仿真。
模擬電路仿真工作流程:在cadence中搭建好仿真環(huán)境,設(shè)置好仿真參數(shù),選用spectre或者h(yuǎn)spice,然后就可以進(jìn)行仿真的。另外,也可以將電路導(dǎo)出成CDL網(wǎng)表,拷貝到Windows上,用Windows版本的Hspice進(jìn)行仿真,這樣做的優(yōu)點(diǎn)是Windows易于操作。另外說(shuō)明一下spectre和hspice的一項(xiàng)區(qū)別。spectre仿真的時(shí)候會(huì)保存所有電路節(jié)點(diǎn)的數(shù)據(jù),這樣做優(yōu)點(diǎn)是方便查看各個(gè)節(jié)點(diǎn)的數(shù)據(jù),缺點(diǎn)是仿真消耗的時(shí)間太長(zhǎng),保存的數(shù)據(jù)文件太大,這一點(diǎn)在遇到大型電路的時(shí)候會(huì)很耗時(shí)(不知道最新版本改進(jìn)這一點(diǎn)沒(méi)有,鄙人沒(méi)有用過(guò)最新版的spectre)。hspice仿真之前可以自己選定所要查看的節(jié)點(diǎn),這樣做就可以減少仿真時(shí)間和減小數(shù)據(jù)文件的大小。有關(guān)于spectre和hspice的詳細(xì)仿真過(guò)程就不細(xì)說(shuō)了,或許還沒(méi)有別人講得好,附百度文庫(kù)鏈接:http://wenku.baidu.com/view/1be650669b6648d7c1c7463d.html。
http://wenku.baidu.com/link?url=tel2SndqC_mtKmZp_SXLDWLfQOE8Zm8Ci4UGhTs8numC3xoKM5frNMV7T2n9Z0k3_l_mHdt5T4zCSFls2bUt9K1xHjiMIek7VK7oV0mIt_q
數(shù)字電路仿真工作流程:在virtuoso schematic中將整理好的電路路中數(shù)字電路部分導(dǎo)出成網(wǎng)表文件,再拷貝到windows系統(tǒng)上進(jìn)行仿真。windows系統(tǒng)上數(shù)字電路網(wǎng)表的仿真采用Modelsim。(這么做的原因是linux系統(tǒng)不太方便)使用Modelsim仿真,最重要的是寫(xiě)好testbench(貌似這句是廢話)。詳細(xì)仿真過(guò)程就不舉例說(shuō)明了,附上百度文庫(kù)鏈接:
http://wenku.baidu.com/link?url=Un2xqDYXRGy0126I5czuolgcLCYHMFgZndGB***HMG-NMfyMW-TNTtBMmv8BPJ84v5REo81rgf0ymJ82l3QnfyJopHsjn1TnpfmvxLgEslm3
關(guān)于電路的修改,這部分其實(shí)不好總結(jié),因?yàn)槊恳豢钚酒加胁煌膮?shù),所要修改的地方都不太一樣,我所知道的是,必定要考慮修改的地方往往都是有關(guān)模擬電路的,例如,時(shí)鐘振蕩、復(fù)位電路、開(kāi)漏輸出管、帶隙等,修改的目的是為了與當(dāng)前所選用的工藝適配,以滿足芯片datasheet的參數(shù)要求。另外,數(shù)字部分的電路其實(shí)一般來(lái)說(shuō)是不需要修改的,但有時(shí)為了節(jié)省版圖面積,會(huì)縮小寄存器管子的尺寸,畢竟縮小一個(gè),就等于縮小了幾十個(gè)。這一階段其實(shí)是一個(gè)不斷的迭代過(guò)程,它要和版圖繪制結(jié)合起來(lái),這樣才能夠保證芯片功能和性能的完整。
六、版圖繪制
這部分在電路整理完之后就可以開(kāi)始進(jìn)行了,并配合電路仿真與修改,逐步完善版圖的繪制。該階段所使用的主要工具有
1、cadence ic5141的版圖繪制軟件;
2、cadence Dracula Diva或者Calibre,這兩個(gè)用于版圖DRC(設(shè)計(jì)規(guī)則檢查)、LVS(版圖一致性檢查);一般而言,calibre會(huì)更加常用一些,畢竟這可是Mentor公司的招牌軟件之一。在版圖繪制好并進(jìn)行各種檢查無(wú)誤之后,就可以tapeout,準(zhǔn)備流片了。
七、測(cè)試規(guī)范
IC設(shè)計(jì)師在芯片tapeout之后就要準(zhǔn)備制定CP測(cè)試規(guī)范了,這是接下來(lái)CP測(cè)試流程的總綱,非常重要。測(cè)試規(guī)范的測(cè)試項(xiàng)主要來(lái)源于芯片datasheet,將重要的參數(shù)設(shè)置為測(cè)試項(xiàng),并規(guī)定參數(shù)的合理分布范圍以及每一個(gè)測(cè)試項(xiàng)的測(cè)試方法(流程)。這些測(cè)試參數(shù)以及測(cè)試方法將決定CP測(cè)試開(kāi)發(fā)時(shí)所用到的測(cè)試環(huán)境ATE(auto test environment)。
八、CP測(cè)試開(kāi)發(fā)
根據(jù)測(cè)試規(guī)范,可以選定所需要的測(cè)試工具以進(jìn)行整個(gè)測(cè)試環(huán)境的搭建工作。我所知道到用于芯片測(cè)試的測(cè)試儀有JUNO DTS-1000,ASL1000,V777,STS8200等。每一種測(cè)試儀適用于不同種類的芯片測(cè)試,測(cè)試儀主要分為數(shù)字測(cè)試,模擬測(cè)試,數(shù)模混合測(cè)試這三大類。CP測(cè)試開(kāi)發(fā)所需要做的工作有:
1,測(cè)試儀的選擇(ps:這個(gè)階段還要考慮一個(gè)重要的因素就是一次測(cè)試多少顆裸芯,也就是CP測(cè)試常說(shuō)的多少個(gè)site,這關(guān)系到后續(xù)測(cè)試程序的編寫(xiě),以及DUT板的制作,非常重要);
2,根據(jù)測(cè)試儀開(kāi)發(fā)測(cè)試程序;
3,制作測(cè)試裸芯片用DUT板,扎PAD位的針由測(cè)試廠制作并焊接在DUT上(ps:DUT板有時(shí)候也叫針卡);
4,自制測(cè)試儀(可選),當(dāng)測(cè)試儀并不能完成某些特殊測(cè)試項(xiàng)的要求時(shí),還得自己制作測(cè)試儀。例如,紅外接收芯片測(cè)試所需要用到的掃頻儀,若采用非自制掃頻儀,測(cè)試時(shí)間將非常長(zhǎng),必須自己制作。5,測(cè)試數(shù)據(jù)的分析。對(duì)測(cè)試數(shù)據(jù)的分析有助于對(duì)測(cè)試方法的改進(jìn)和對(duì)芯片設(shè)計(jì)的改進(jìn)。CP測(cè)試在整個(gè)芯片反向設(shè)計(jì)中占據(jù)著重要位置,所花費(fèi)的人力、物力是非常多的,還需要頻繁和測(cè)試廠交流,所以CP測(cè)試顯得非常復(fù)雜。在CP測(cè)試開(kāi)發(fā)完之后,會(huì)進(jìn)行COB測(cè)試,之后才進(jìn)行CP測(cè)試的調(diào)試階段,以及正式批量測(cè)試階段。
九、COB測(cè)試
所謂COB測(cè)試,其實(shí)就是Chip On Board(將裸芯打線在PCB板上或者將封裝好的芯片焊接在PCB上,并將引腳引出),它是在CP測(cè)試進(jìn)行之前進(jìn)行的一項(xiàng)測(cè)試(也在成品測(cè)試之后進(jìn)行),用于初步判斷芯片的功能和性能,如果這批次隨機(jī)采樣的幾顆芯片功能和性能都很爛就暫時(shí)不必進(jìn)行CP測(cè)試了。另外,COB測(cè)試相比于CP測(cè)試具有更多的靈活性,可以測(cè)試更多的測(cè)試項(xiàng),獲取有關(guān)芯片更為全面的信息。當(dāng)然,COB測(cè)試也是需要開(kāi)發(fā)一套相應(yīng)的測(cè)試環(huán)境的。開(kāi)發(fā)的工作根據(jù)芯片的不同,工作量會(huì)有很大的不同,例如,如果有I2C通信引腳的芯片,需要用到USB轉(zhuǎn)I2C芯片,例如FT232。通過(guò)在電腦上編程,通過(guò)控制USB轉(zhuǎn)I2C芯片來(lái)控制待測(cè)芯片。這樣的話,搭建整個(gè)測(cè)試環(huán)境就會(huì)比較復(fù)雜。如果是模擬芯片,例如電源管理類芯片,需要使用LabView編程來(lái)控制數(shù)字源表進(jìn)行自動(dòng)化參數(shù)測(cè)量。總之,COB測(cè)試也是芯片設(shè)計(jì)中一個(gè)比較重要的流程, 這部分的工作內(nèi)容,比較難以敘述,簡(jiǎn)單的,就用數(shù)字源表測(cè)試幾項(xiàng)參數(shù)就行了,復(fù)雜的都會(huì)基于軟件控制的形式進(jìn)行半自動(dòng)的測(cè)試。具體說(shuō)來(lái),
1、開(kāi)發(fā)在PC端開(kāi)發(fā)測(cè)試的程序,例如LabView;
2、設(shè)計(jì)測(cè)試芯片的電路板,并留下與PC通信的接口,通常采用單片機(jī)做主控芯片;
3、搭建測(cè)試所需要的環(huán)境,比如說(shuō)遮光要求。過(guò)程敘述得很簡(jiǎn)單,但實(shí)際開(kāi)發(fā)并不容易,難度視待測(cè)芯片而異。
十、成測(cè)開(kāi)發(fā)
在CP測(cè)試完了之后,裸芯就可以送到成測(cè)廠進(jìn)行劃片和封裝了,在這期間,IC設(shè)計(jì)師所要做的工作就是依據(jù)制定成品測(cè)試的規(guī)范并進(jìn)行成品測(cè)試的開(kāi)發(fā)。這部分的工作其實(shí)和CP測(cè)試的工作是類似的,只不過(guò),相對(duì)于CP測(cè)試而言,成品測(cè)試的測(cè)試項(xiàng)會(huì)少很多。許多CP測(cè)試用到的測(cè)試項(xiàng),比如,燒調(diào)之類的,成品測(cè)試就不會(huì)進(jìn)行了,其余步驟均與CP測(cè)試一致。
十一、可靠性測(cè)試
當(dāng)芯片封裝好,并通過(guò)了成品測(cè)試之后,并不意味著芯片的測(cè)試就結(jié)束了,還有芯片可靠性測(cè)試。在成測(cè)結(jié)束,并把樣品返回設(shè)計(jì)師手中之后,設(shè)計(jì)師還需進(jìn)行COB測(cè)試,并在這時(shí)預(yù)留幾顆芯片不參與接下來(lái)的可靠性測(cè)試,這幾顆芯片將在可靠性測(cè)試之后作為對(duì)比之用。
芯片可靠性測(cè)試,是衡量芯片的質(zhì)量和壽命的一項(xiàng)測(cè)試。它具體包括環(huán)境測(cè)試、EMC測(cè)試、其它測(cè)試等三大項(xiàng)。細(xì)分項(xiàng)有高溫低溫測(cè)試、高溫高濕測(cè)試,抗靜電測(cè)試等等,全部的測(cè)試項(xiàng)可參考IC可靠性測(cè)試項(xiàng)目。每一款芯片都有與其對(duì)應(yīng)的可靠性測(cè)試項(xiàng),并不是所有測(cè)試項(xiàng)目都要測(cè)。我們只要關(guān)注與該芯片適配的測(cè)試項(xiàng)就行。具體如何決定測(cè)試項(xiàng),這需要與芯片的用途有關(guān),每一種用途,它的測(cè)試要求都是不一樣的。可靠性測(cè)試實(shí)驗(yàn)比較簡(jiǎn)單,但是,芯片的可靠性卻是由此來(lái)衡量的。可靠性測(cè)試需要的測(cè)試工具都比較昂貴,當(dāng)然工具的重復(fù)使用性也是比較好的。每一個(gè)測(cè)試項(xiàng)都對(duì)應(yīng)這一套測(cè)試設(shè)備。
十二、成品開(kāi)發(fā)
設(shè)計(jì)出的芯片必須配置相應(yīng)的使用方案,才能將芯片推廣出去,客戶才能夠更好的使用芯片。不同用途的芯片,它的使用方案不一樣,差別也是非常巨大的。像單片機(jī)、ARM、FPGA類芯片,配置的可不是簡(jiǎn)單的使用方案,而是一整套使用它的系統(tǒng)。電源管理芯片,需要配置一個(gè)電源管理芯片的一套應(yīng)用方案,并且需要具有一定的競(jìng)爭(zhēng)力,這才能夠?qū)⑿酒u出去。所以成品開(kāi)發(fā)是芯片能否賣出去的關(guān)鍵。我所接觸到的成品開(kāi)發(fā),基本是以單片機(jī)為主控芯片的開(kāi)發(fā)方案。具體開(kāi)發(fā)過(guò)程將在后續(xù)有更為詳細(xì)的說(shuō)明。
芯片設(shè)計(jì)流程(四)——正向設(shè)計(jì)
正向設(shè)計(jì)其實(shí)和反向設(shè)計(jì)差別在于設(shè)計(jì)部分,其余部分的流程基本相同。正向設(shè)計(jì)的設(shè)計(jì)部分由于是原創(chuàng),所以會(huì)使用很多的工具。反向設(shè)計(jì),很多東西不必去驗(yàn)證,所以工具軟件也就不會(huì)用到那么多。
一、總體規(guī)劃
隨著集成電路設(shè)計(jì)規(guī)模的不斷擴(kuò)大,出現(xiàn)了很多成熟的常用設(shè)計(jì)模塊,也被成為IP核,現(xiàn)在芯片正向設(shè)計(jì),不再是完全從0開(kāi)始,都是基于某些成熟的IP核,并在此基礎(chǔ)之上進(jìn)行芯片功能的添加。真正從0開(kāi)始設(shè)計(jì)的芯片,不是沒(méi)有,而是成本太高,企業(yè)無(wú)法承擔(dān),而且也并沒(méi)有必要從0開(kāi)始設(shè)計(jì)。例如現(xiàn)在的ARM芯片開(kāi)發(fā),那些大公司基本上是獲取ARM公司的授權(quán),得到ARM芯片的IP核,并根據(jù)細(xì)分市場(chǎng)的需求進(jìn)行有針對(duì)性的開(kāi)發(fā)。這是數(shù)字芯片的情況,模擬芯片的情況也是類似的,當(dāng)然我們并不能小看別人的原創(chuàng)能力,以為就是隨隨便便在別人的基礎(chǔ)上小修小補(bǔ)就可以設(shè)計(jì)出令人滿意的芯片,還有很多東西依然是需要豐富的經(jīng)驗(yàn)和知識(shí)的。芯片正向設(shè)計(jì)依然是從市場(chǎng)未來(lái)需求著手,從開(kāi)發(fā)成本和預(yù)期收益來(lái)衡量是否進(jìn)行芯片的開(kāi)發(fā)的。明確市場(chǎng)未來(lái)需求之后,就將這些需求轉(zhuǎn)化為芯片的各項(xiàng)重要參數(shù)指標(biāo),然后進(jìn)行任務(wù)劃分,模擬設(shè)計(jì)師負(fù)責(zé)模擬,數(shù)字設(shè)計(jì)師負(fù)責(zé)數(shù)字。個(gè)人對(duì)于模擬部分不太熟,所以就略過(guò)。重點(diǎn)總結(jié)數(shù)字設(shè)計(jì)部分,當(dāng)然這部分也不是很熟,因?yàn)闆](méi)有真正做過(guò)。
二、架構(gòu)/算法
現(xiàn)在數(shù)字電路在芯片中占有極大的比重,數(shù)字邏輯也變得越來(lái)越復(fù)雜,所以必須從架構(gòu)和算法上進(jìn)行考慮。個(gè)人所略知的關(guān)于芯片架構(gòu)的是,架構(gòu)可以分為三種大的方向:
1,數(shù)據(jù)流;
2,控制流,
3,總線流。數(shù)據(jù)流:數(shù)據(jù)從輸入到輸出是一條直線,并沒(méi)有折回的數(shù)據(jù),這是純數(shù)據(jù)處理的一種架構(gòu),這種芯片功能應(yīng)該是比較單一。
2,控制流,這是基于狀態(tài)機(jī)或者CPU形式的一種架構(gòu)設(shè)計(jì)。簡(jiǎn)單點(diǎn)的芯片就采用狀態(tài)機(jī)就夠了,復(fù)雜的就必須采用CPU作為控制內(nèi)核了,比如單片機(jī)就是以CPU為控制內(nèi)核,外加RAM,ROM所形成的一類控制類芯片。
3,總線流,這是基于總線的芯片設(shè)計(jì)架構(gòu),最熟悉的就是SOC類芯片,總線上連接著一個(gè)或多個(gè)CPU,RAM,ROM,I2C,UART等等之類的各種組件。由這些組件的不同排列組合,形成滿足各種不同需求的芯片,例如不同的ARM類芯片。
算法,我所略知的是通信類的,例如,F(xiàn)IR,FFT,小波變換,三角函數(shù)變換等等,當(dāng)然還有視頻音頻類的算法,對(duì)與這方面的內(nèi)容就沒(méi)有接觸過(guò)了。總的來(lái)說(shuō),這類算法都是以數(shù)據(jù)處理為主要目的的,所以這些算法都要求有較強(qiáng)的數(shù)學(xué)功底。做算法開(kāi)發(fā),主要工具為MATLAB,都是先在MATLAB上做原型開(kāi)發(fā)驗(yàn)證,再轉(zhuǎn)化為RTL級(jí)的代碼。
結(jié)合架構(gòu)和算法,將芯片的總體結(jié)構(gòu)搭建出來(lái),為后續(xù)的工作做好了準(zhǔn)備。
三、RTL代碼
當(dāng)算法工程師把芯片架構(gòu)設(shè)計(jì)好,各種算法在MATLAB上通過(guò)了驗(yàn)證,以及其他必要條件的考量之后,便將工作交接給ASIC工程師去做RTL代碼的翻譯工作,就是將MATLAB上的算法翻譯成RTL。這一步單純從翻譯的角度只需要一個(gè)文本編輯器就可以了。然而,還有后續(xù)的仿真驗(yàn)證工作,這部分的內(nèi)容并不輕松。有時(shí)候根據(jù)公司的不同,根據(jù)項(xiàng)目的工作量大小,算法工程師與ASIC工程師在工作內(nèi)容上是有交叉的,他們也承擔(dān)將MATLAB轉(zhuǎn)換為RTL的工作。RTL設(shè)計(jì)的時(shí)候也會(huì)考慮DFT(Design For Test 可測(cè)性設(shè)計(jì))的問(wèn)題,會(huì)在RTL代碼中加入測(cè)試鏈,這個(gè)我就不太熟了。
四、仿真驗(yàn)證
這一步的工作比較關(guān)鍵,可以說(shuō)是設(shè)計(jì)部分的第一個(gè)分水嶺。仿真驗(yàn)證,視不同的公司,不同的項(xiàng)目,復(fù)雜度有非常大的不同。簡(jiǎn)單的,只要寫(xiě)一個(gè)較為完善的testbench驗(yàn)證完RTL代碼的功能就行了;復(fù)雜的,將會(huì)在RTL驗(yàn)證環(huán)境下進(jìn)行詳細(xì)的驗(yàn)證,甚至可能用得到各種驗(yàn)證方法學(xué)UVM,VMM,OVM等等,這種復(fù)雜驗(yàn)證所用的語(yǔ)言一般采用SystemVerilog。驗(yàn)證軟件可以采用cadence公司的NC_VERILOG,或者synopsys公司的VCS。此外,某些芯片還會(huì)采用FPGA,進(jìn)行硬件在線仿真。這樣能夠獲取關(guān)于芯片的更為詳細(xì)的信息。但不管如何,無(wú)論是個(gè)人還是公司,都應(yīng)該有對(duì)于仿真驗(yàn)證工作的一套完整和完善的流程方案。
五、工藝選擇
正向設(shè)計(jì)在一開(kāi)始的整體規(guī)劃中就要考慮工藝的問(wèn)題,這涉及到有關(guān)工藝的相關(guān)知識(shí),有些工藝就是特別為某種類型的芯片而開(kāi)發(fā)的。所以一旦是要開(kāi)發(fā)某種有對(duì)應(yīng)工藝的芯片,則直接采用即可,但往往工藝的選擇會(huì)特別耗時(shí)間,會(huì)有各種參數(shù)的考量,例如工藝生產(chǎn)周期,工藝的成品率,工藝生產(chǎn)時(shí)間的安排等等各方面的考究。這部分,需要花費(fèi)特別多的時(shí)間。工藝由芯片制造廠提供,前提是必須和芯片制造廠有合作關(guān)系。
六、綜合、時(shí)序&功耗分析
這一步是在RTL仿真驗(yàn)證完之后進(jìn)行,當(dāng)然還有一個(gè)前提,制造工藝必須選定,否則,如果中途換了工藝,這部分的工作還得重新來(lái)做,這樣將會(huì)消耗特別多的時(shí)間。這部分的工作主要用到synopsys公司的工具Design Complier(綜合)、Prime Time(時(shí)序和功耗)。這兩個(gè)工具的使用比較復(fù)雜,使用說(shuō)明參考百度文庫(kù)相關(guān)資料。總體來(lái)說(shuō),這兩個(gè)工具都是約束驅(qū)動(dòng)型軟件,軟件在使用時(shí)都是靠約束文件來(lái)進(jìn)行驅(qū)動(dòng)的。所以工作的主要內(nèi)容除了軟件的使用外最重要的就在于如何編寫(xiě)約束文件。一般而言,約束主要有面積約束,扇入扇出約束,時(shí)序約束等約束條件。如果RTL代碼不滿足約束,則必須根據(jù)具體情況修改約束條件或者是修改RTL代碼。約束條件是用TCL腳本語(yǔ)言來(lái)寫(xiě)。綜合和時(shí)序分析會(huì)生成基于所采用的工藝的電路網(wǎng)表,這個(gè)網(wǎng)表將是下一步自動(dòng)布局布線所用到的主文件。
主要工作內(nèi)容:
1、準(zhǔn)備好選定的工藝庫(kù)文件(綜合網(wǎng)表文件、時(shí)序文件庫(kù));
2、根據(jù)設(shè)計(jì)要求編寫(xiě)TCL約束腳本;
3,操作軟件,生成約束報(bào)告;
4,分析約束報(bào)告,修改或調(diào)整不合理的約束或者修改RTL代碼(RTL代碼不會(huì)輕易修改,這要求在RTL設(shè)計(jì)時(shí)就要考慮這些約束要求,以便于能夠通過(guò)約束分析)。
七、 形式驗(yàn)證
綜合出來(lái)的網(wǎng)表正確與否如何判定呢?這需要用到形式驗(yàn)證技術(shù),該技術(shù)與RTL的仿真不同,它是從數(shù)理邏輯出發(fā),來(lái)對(duì)比兩個(gè)網(wǎng)表在邏輯上的等效性。如果等效,則綜合的網(wǎng)表就是符合要求的。用到的工具為synopsys 公司的Formality 形式驗(yàn)證工具。其實(shí),形式驗(yàn)證是在每一次芯片的邏輯電路轉(zhuǎn)換為另一種表達(dá)形式的時(shí)候都需要做的工作。具體來(lái)說(shuō),在綜合生成網(wǎng)表后做一次,主要對(duì)比的文件為RTL仿真之后的文件和綜合之后的網(wǎng)表,在布局布線之后還需要做一次,主要對(duì)比文件為綜合之后的網(wǎng)表與布局布線之后的網(wǎng)表。主要工作內(nèi)容:
1、準(zhǔn)備好待比較的兩份文件及各種工藝技術(shù)庫(kù)文件;
2、用TCL腳本編寫(xiě)腳本程序,設(shè)置其中一份文件為比較標(biāo)準(zhǔn),其中一份為待比較文件;
3、運(yùn)行Formality,分析生成的比較報(bào)告;
八、自動(dòng)布局布線
這個(gè)步驟嚴(yán)重依賴于軟件和經(jīng)驗(yàn),目前常用的軟件為Cadence Encounter不同版本的自動(dòng)布局布線軟件名字可能不一樣。Synopsys公司也有對(duì)應(yīng)的自動(dòng)布局布線的軟件ASTRO,最新版本為ICC套件。軟件的使用同樣可以在網(wǎng)上找到相關(guān)資料,這里就不細(xì)說(shuō)了。主要工作內(nèi)容:
1、準(zhǔn)備好工藝文件(時(shí)序文件庫(kù) 數(shù)字版圖庫(kù));
2,準(zhǔn)備好綜合之后的電路網(wǎng)表文件及約束文件;
3,根據(jù)設(shè)計(jì)要求,設(shè)置好版圖面積等相關(guān)參數(shù),
4,進(jìn)行自動(dòng)布局布線,檢查時(shí)序和功耗,如果不滿足要求,則再次修改相關(guān)參數(shù),直到符合設(shè)計(jì)要求為止。
自動(dòng)布局布線需要注意的是:數(shù)字信號(hào)一定要關(guān)注好關(guān)鍵路徑的延時(shí)問(wèn)題,這一點(diǎn)曾經(jīng)是數(shù)字設(shè)計(jì)的關(guān)鍵問(wèn)題。現(xiàn)在,據(jù)說(shuō),時(shí)序已經(jīng)不再是芯片設(shè)計(jì)的主要難題了,主要難題已經(jīng)轉(zhuǎn)移到了功耗上,在設(shè)計(jì)的每一個(gè)階段都要考慮功耗的問(wèn)題。
模擬部分似乎是沒(méi)有數(shù)字部分那么多的工具需要使用,但模擬部分的電路設(shè)計(jì)最考究的還是工程師們的設(shè)計(jì)經(jīng)驗(yàn),而這些經(jīng)驗(yàn)都是要靠時(shí)間才能堆出來(lái)的。模擬電路的每一個(gè)模塊都需要很多的時(shí)間去驗(yàn)證,比說(shuō)一個(gè)高性能的放大器,一個(gè)與工藝和電壓無(wú)關(guān)的帶隙基準(zhǔn)等等。模擬的版圖只能是一個(gè)一個(gè)管子的畫(huà),沒(méi)有自動(dòng)布局布線的必要,因?yàn)槟M電路的管子也不會(huì)很多。
剩下的工作就是合并整體的版圖,并進(jìn)行DRC、LVS的各種驗(yàn)證,通過(guò)之后就可以tapeout。之后再制定測(cè)試規(guī)范,這與反向設(shè)計(jì)的剩余步驟是一樣的。另外,有時(shí)候版圖還需要做ECO(Engineering Change Order)工程修改命令,是指在原有的設(shè)計(jì) 的基礎(chǔ)上如果要作一些改動(dòng),可不必從頭再來(lái),可以在原來(lái)的布局上通過(guò)eco步驟快捷地 完成設(shè)計(jì)。
芯片設(shè)計(jì)流程(五)——工藝文件說(shuō)明
在芯片的設(shè)計(jì)重要設(shè)計(jì)環(huán)節(jié),像綜合與時(shí)序分析,版圖繪制等都需要用到工藝庫(kù)文件,而大家往往又對(duì)工藝文件缺乏認(rèn)識(shí),所以導(dǎo)致想自學(xué)一些芯片設(shè)計(jì)的東西就顯得很困難。例如,沒(méi)有工藝版圖庫(kù)文件,學(xué)習(xí)版圖設(shè)計(jì)就是紙上談兵。這篇文章主要介紹一下工藝庫(kù)相關(guān)的知識(shí)。
工藝文件由芯片制造廠提供,所以概括性的了解國(guó)內(nèi)和國(guó)際上有哪些芯片制造廠是很有必要的。國(guó)際上,主要有臺(tái)積電,英特爾,三星等主要半導(dǎo)體制造商。國(guó)內(nèi),主要有中芯國(guó)際,華潤(rùn)上華,深圳方正等公司。這些公司都提供相關(guān)的工藝庫(kù)文件,但前提是要與這些公司進(jìn)行合作才能獲取,這些工藝文件都屬于機(jī)密性文件。
完整工藝庫(kù)文件主要組成為:
1,模擬仿真工藝庫(kù),主要以支持spectre和hspice這兩個(gè)軟件為主,后綴名為scs——spectre使用,lib——hspice使用。
2,模擬版圖庫(kù)文件,主要是給cadence版圖繪制軟件用,后綴名為tf,drf。
3,數(shù)字綜合庫(kù),主要包含時(shí)序庫(kù),基礎(chǔ)網(wǎng)表組件等相關(guān)綜合及時(shí)序分析所需要用到的庫(kù)文件。主要是用于DC軟件綜合,PT軟件時(shí)序分析用。
4,數(shù)字版圖庫(kù),主要是給cadence encounter軟件用于自動(dòng)布局布線,當(dāng)然自動(dòng)布局布線工具也會(huì)用到時(shí)序庫(kù),綜合約束文件等。
5,版圖驗(yàn)證庫(kù),主要有DRC,LVS檢查。有的是專門支持calibre,有的專門支持dracula,diva等版圖檢查工具用。每一種庫(kù)文件都有相應(yīng)的pdf說(shuō)明文檔。
反向設(shè)計(jì)會(huì)用到1,2,5等工藝庫(kù)文件,3和4是不會(huì)用到了。正向設(shè)計(jì)(從代碼開(kāi)始設(shè)計(jì)的正向設(shè)計(jì))則所有的文件都需要用到。由于工藝文件在芯片設(shè)計(jì)中占有極重要的位置,在每一個(gè)關(guān)鍵設(shè)計(jì)環(huán)節(jié)都要用到,再加上它的機(jī)密屬性,所以網(wǎng)絡(luò)上很難找到完整的工藝文件對(duì)于個(gè)人學(xué)習(xí)用,EETOP上有一份cadence公開(kāi)的用于個(gè)人學(xué)習(xí)的工藝庫(kù)文件可以方便大家學(xué)習(xí),但似乎也是不完整的。
芯片設(shè)計(jì)流程 (六)——綜合
本文是根據(jù)《綜合與Design Compiler》文章,寫(xiě)就的一篇關(guān)于綜合的簡(jiǎn)要總結(jié),供自己整理思路之用。算是對(duì)前文《芯片設(shè)計(jì)流程(八)——正向設(shè)計(jì)2》中的綜合分析做一個(gè)進(jìn)一步的展開(kāi)說(shuō)明。
什么是綜合?綜合就是將RTL級(jí)verilog代碼用Design Compiler 工具 轉(zhuǎn)換/映射成用基礎(chǔ)門級(jí)單元表示的電路的過(guò)程。基礎(chǔ)門級(jí)單元也就是平時(shí)我們學(xué)的與非門,或非門,寄存器之類的,只不過(guò),這些門級(jí)單元已經(jīng)做成了標(biāo)準(zhǔn)的單元庫(kù),我們可以直接使用軟件來(lái)調(diào)用,而不需要自己調(diào)用門級(jí)單元來(lái)搭建電路。簡(jiǎn)單的來(lái)說(shuō),Design Compiler軟件就是做翻譯的工作——將代碼翻譯成實(shí)際電路,但又不僅僅是翻譯這么簡(jiǎn)單,它涉及到電路的優(yōu)化與時(shí)序約束,使之符合我們做制定的性能要求。 前文提到該軟件是約束驅(qū)動(dòng)型軟件,那么約束從何而來(lái)?答案是,設(shè)計(jì)規(guī)格書(shū)。每一個(gè)芯片設(shè)計(jì)項(xiàng)目都會(huì)有一個(gè)項(xiàng)目規(guī)格說(shuō)明書(shū),這是在芯片設(shè)計(jì)之初,整體規(guī)劃(見(jiàn)前文)的步驟中要制定好的。具體詳細(xì)的約束要求需要在綜合過(guò)程中仔細(xì)的斟酌決定。 綜合的一般流程:
1,預(yù)綜合過(guò)程;
2,施加設(shè)計(jì)約束過(guò)程;
3,設(shè)計(jì)綜合過(guò)程;
4,后綜合過(guò)程。
PS,使用Design Compiler軟件一個(gè)必備的條件是要學(xué)會(huì)使用DC TCL腳本。
預(yù)綜合過(guò)程。這部分主要是準(zhǔn)備好綜合過(guò)程所使用的庫(kù)文件(包括工藝庫(kù)、鏈接庫(kù)、符號(hào)庫(kù)、綜合庫(kù))、設(shè)計(jì)輸入文件,設(shè)置好環(huán)境參數(shù)。
施加設(shè)計(jì)約束過(guò)程。這部分主要是用DC TCL腳本編寫(xiě)約束文件。具體的約束項(xiàng)目可以分為三大類:
a,面積約束,定義時(shí)鐘,約束輸入/輸出路徑;
b(環(huán)境屬性),約束輸入驅(qū)動(dòng),約束輸出負(fù)載,設(shè)置工作條件(最好、典型、最差情況),設(shè)置連線負(fù)載模型;
c(高級(jí)時(shí)鐘約束),對(duì)時(shí)鐘的抖動(dòng)、偏移、時(shí)鐘源延遲,同步多時(shí)鐘,異步時(shí)鐘,多周期路徑,這幾類進(jìn)行細(xì)致的約束。
約束的內(nèi)容具體就是這么多。一個(gè)詳細(xì)的TCL腳本約束文件基本包含上述所有的約束。后面有一個(gè)約束范文。
設(shè)計(jì)綜合過(guò)程。主要是介紹電路模塊設(shè)計(jì)規(guī)劃(以利于更好的進(jìn)行約束),Design Compiler綜合優(yōu)化的過(guò)程(三大優(yōu)化階段,結(jié)構(gòu)級(jí),邏輯級(jí),門級(jí)),時(shí)序分析的具體過(guò)程等綜合過(guò)程中的一些詳細(xì)信息。
后綜合過(guò)程。綜合完畢該怎么看結(jié)果,時(shí)序違反該如何解決?這就是后綜合過(guò)程所要解決的問(wèn)題。在綜合之后,通過(guò)分析綜合報(bào)告,可以得知此次的電路綜合結(jié)果如何,根據(jù)不符合的要求,進(jìn)行重新約束,甚至重新設(shè)計(jì)電路。在這個(gè)階段特別值得一提的是綜合預(yù)估,因?yàn)樵趯?xiě)綜合約束腳本的時(shí)候,需要確定約束條件,規(guī)格書(shū)一般不能夠涉及到如此細(xì)節(jié)的部分,所以需要根據(jù)實(shí)際電路進(jìn)行綜合預(yù)估,這個(gè)步驟是在代碼編寫(xiě)完之后,與驗(yàn)證同時(shí)進(jìn)行的,目的在于大致估計(jì)電路是否符合要求,此時(shí)的預(yù)綜合過(guò)程與正式的綜合過(guò)成是一樣的,但,要求會(huì)寬松許多,時(shí)序違反的要求大概為10%-15%,也就是說(shuō)電路即使有10%-15%的電路不滿足時(shí)序也沒(méi)有關(guān)系。
綜合約束過(guò)程是一個(gè)反復(fù)迭代的過(guò)程,需要多次設(shè)計(jì)預(yù)估,這樣才能不斷修正時(shí)序違反。范文:
# Set the current_design #
read_verilog {counter_pad.v counter.v} //讀取設(shè)計(jì)文件
current_design Cnt10_PAD
link
set_operating_conditions -max slow -max_library slow -min fast -min_library fast //設(shè)置工作條件
set_wire_load_mode enclosed //設(shè)置連線負(fù)載模型
set_wire_load_model -name tsmc18_wl10 -library slow //設(shè)置連線負(fù)載模型
set_local_link_library {slow.db fast.db}//設(shè)置鏈接庫(kù)
set_max_area 0 //設(shè)置面積
set_max_fanout 5 [get_ports reset_n]//設(shè)置最大扇出
set_max_fanout 4 [get_ports clk] //設(shè)置最大扇出
set_max_fanout 4 [get_ports in_ena]//設(shè)置最大扇出
set_max_transition 0.3 [get_ports reset_n]//設(shè)置信號(hào)翻轉(zhuǎn)時(shí)間
set_max_transition 0.3 [get_ports clk]//設(shè)置信號(hào)翻轉(zhuǎn)時(shí)間
set_max_transition 0.5 [get_ports in_ena]//設(shè)置信號(hào)翻轉(zhuǎn)時(shí)間
create_clock [get_ports clk]-period 10 -waveform. {0 5}//創(chuàng)建時(shí)鐘
set_clock_latency 1[get_clocks clk]//設(shè)置時(shí)鐘源延時(shí)
set_clock_latency -source 1[get_clocks clk]
set_clock_uncertainty -setup 0.5[get_clocks clk]//設(shè)置時(shí)鐘不確定度
set_clock_uncertainty -hold 0.4[get_clocks clk]
set_dont_touch_network [get_clocks clk]//設(shè)置偽路徑,不要約束
set_clock_transition -fall 0.3 [get_clocks clk]////設(shè)置下降沿信號(hào)翻轉(zhuǎn)時(shí)間
set_clock_transition -rise 0.3 [get_clocks clk]///設(shè)置上升沿沿信號(hào)翻轉(zhuǎn)時(shí)間
set_input_delay -clock clk-max 3[get_ports in_ena]//設(shè)置輸入延時(shí)
set_output_delay -clock clk -max 4 [get_ports cnt]//設(shè)置輸出延時(shí)
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//報(bào)告最大時(shí)序延時(shí)
report_timing -delay min > ./reports/pad_hold_rt.rpt//報(bào)告最小時(shí)序延時(shí)
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
-
IC
+關(guān)注
關(guān)注
36文章
5898瀏覽量
175232 -
電路仿真
+關(guān)注
關(guān)注
36文章
207瀏覽量
95658 -
工具
+關(guān)注
關(guān)注
4文章
307瀏覽量
27734
原文標(biāo)題:芯片設(shè)計(jì)全流程詳解
文章出處:【微信號(hào):eetop-1,微信公眾號(hào):EETOP】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論