我對IC設(shè)計流程的一些理解(數(shù)字IC部分)
我認(rèn)為IC設(shè)計流程按照功能和應(yīng)用場合不同大致可以劃分為三個部分進(jìn)行介紹,分別是數(shù)字IC、模擬IC和FPGA。這三者之間既有相同點又有相異點。在進(jìn)行設(shè)計時,所使用的軟件工具也有相同和不同的。
1、數(shù)字ASIC設(shè)計流程前端到后端使用工具
通用型數(shù)字ASIC(從上到下)
在驗證算法時一般使用C語言或者verilog來對系統(tǒng)算法進(jìn)行建模,使用行為級描述來對算法功能的正確與否進(jìn)行仿真。一般比較常用的方法是使用C語言在Matlab軟件環(huán)境下進(jìn)行算法驗證。
算法驗證完成之后,需要進(jìn)行的工作就是將算法轉(zhuǎn)化為對應(yīng)的行為級或者寄存器傳輸級描述,并且對其進(jìn)行功能仿真驗證。在該階段可以使用的工具有很多,常用的 有Active—HDL、Mentor的Modelsim系列軟件和QuestaSim系列(前者使用三個核進(jìn)行仿真,后者使用一個核,因此后者可以對不 同語言環(huán)境下的描述進(jìn)行混合仿真)。
完成功能仿真之后需要進(jìn)行的工作就是根據(jù)foundry提供的標(biāo)準(zhǔn)數(shù)字單元工藝庫,對前面得到的表述一定功能的代碼進(jìn)行綜合,得到代碼對應(yīng)的由標(biāo)準(zhǔn)單元庫中的門電路組成的實際電路映射。在綜合的過程中,要根據(jù)設(shè)計規(guī)范來制定各種約束以使綜合得到的電路映射能夠滿足設(shè)計的要求,同時也要注意綜合報告中所給出的違反約束的各個信息,并且利用這些信息來修改代碼或者算法。在綜合的過程中使用的工具最主要是Synopsys的DC和PC。
做完綜合之后,利用綜合得到的實際電路映射、時序約束與foundry提供的與版圖有關(guān)的工藝庫就可以進(jìn)行自動布局布線的操做了。此時常用的軟件有Synopsys的ASTRO和Cadence的Se工具。
自動布局布線完成后就可以根據(jù)產(chǎn)生的版圖文件信息提取寄生參數(shù)來進(jìn)行包含寄生參數(shù)與互聯(lián)延遲的后仿真了。一般常用的寄生參數(shù)提取工具有AVANTI的 STAR-RC和Cadence的DRECULA或Diva,兩者都需要將自動布局布線得到的版圖和工藝庫文件導(dǎo)入軟件中進(jìn)行寄生參數(shù)提取。 Cadence的軟件還可以通過導(dǎo)入版圖,來對自動布局布線得到的版圖中不滿意的地方進(jìn)行修補。
寄生參數(shù)提取結(jié)束后將得到的寄生參數(shù)信息與自動布局布線得到的網(wǎng)表導(dǎo)入PT進(jìn)行包含寄生參數(shù)的時序參數(shù)提取,然后利用所提取的時序參數(shù)在底層網(wǎng)表中反標(biāo)進(jìn) 行后仿真,觀察后仿真的時序是否滿足設(shè)計規(guī)范的要求。如果滿足則設(shè)計基本完成,不滿足還需要進(jìn)行迭代修改。產(chǎn)生反標(biāo)需要的時序文件的軟件是PT,而將時序 反標(biāo)文件反標(biāo)回綜合后的網(wǎng)表并且進(jìn)行后仿真的軟件比較多,比如Modelsim和Nclaunch(NC主要針對大型系統(tǒng),而Modelsim則主要是針 對小的設(shè)計,因為前者的工作平臺是工作站后者是PC)。
全定制數(shù)字Asic或者混合信號ASIC(從下到上與從上到下結(jié)合)
當(dāng)需要制作全定制的數(shù)字芯片時,傳統(tǒng)的從上到下的設(shè)計流程就不完全奏效了。其中最大的不同就是全定制芯片為了實現(xiàn)更小的體積與功耗,更高的集成度將可能不采用廠家提供的標(biāo)準(zhǔn)數(shù)字單元庫而是通過與foundry溝通自己設(shè)計滿足自己需要的工藝庫。比如Xilinx的FPGA芯片的設(shè)計采用的就是全定制的設(shè)計方法。
對于全定制設(shè)計而言,也需要采用算法驗證、功能描述與仿真驗證、綜合、寄生參數(shù)提取與后仿真的過程,但是相對通用型Asic的設(shè)計而言,在做后仿真時全定 制可以使用模擬仿真的方法進(jìn)行后仿真而不需要進(jìn)行時序反標(biāo)的過程,因為在設(shè)計全定制Asic時使用的不是foundry提供的標(biāo)準(zhǔn)數(shù)字工藝庫而是根據(jù)設(shè)計 需要自己設(shè)計的數(shù)字工藝庫。因此對于全定制的Asic設(shè)計而言,它的后仿真需要采用foundry提供的標(biāo)準(zhǔn)模擬庫,由于不使用時序的反標(biāo)而采用模擬仿真 的方法后仿真得到最終版圖對應(yīng)信息,因此耗時可能比設(shè)計通用型的Asic更長。
全定制設(shè)計流程的使用軟件有,算法驗證與功能仿真的軟件同通用型使用的基本相同。但是在綜合這一步就不太一樣了,對于全定制的設(shè)計而言一般在設(shè)計時采用 Cadence的軟件比較多,因為全定制設(shè)計更象模擬電路設(shè)計。在綜合這一步之前先要根據(jù)設(shè)計規(guī)范對每個模塊進(jìn)行時序與功耗的分配,并且最好能夠細(xì)化到每 個門級電路。然后根據(jù)要求來構(gòu)建設(shè)計所需要的設(shè)計者需要的單元庫。因為全定制的ic綜合這一步更象是利用設(shè)計者自己定義的庫來搭積木的過程,人為的控制因 素與經(jīng)驗也更加重要,在這里良好的布局可以使搭出的電路效率更高。
在這里可以先使用cadence的 版圖與電路圖輸入工具Virtuoso來根據(jù)設(shè)計規(guī)范的要求構(gòu)建建立在單管基礎(chǔ)上的基本單元庫,然后再根據(jù)已經(jīng)驗證的算法和功能描述,利用所構(gòu)建的基本單 元庫來得到整個芯片的電路圖布局結(jié)構(gòu),最后根據(jù)芯片內(nèi)各個信號的關(guān)系來進(jìn)行電路布線的操作。以上的操作都可以在Cadence的IC 5.1集成設(shè)計環(huán)境下的Virtuoso中完成,當(dāng)完成布局布線后全定制Asic的版圖基本就確定了,然后根據(jù)基于基本單元庫所對應(yīng)版圖的全芯片電路來搭 建全芯片電路對應(yīng)的全芯片版圖。此時可以利用Cadence的Diva或者Drucla工具進(jìn)行DRC、ERC、LVS檢查,并且可以根據(jù)版圖利用上述工 具進(jìn)行參數(shù)提取。然后將提取得到的參數(shù)與搭建全芯片時所得到的全芯片網(wǎng)表或者全芯片電路進(jìn)行后仿真。如果在后仿真時不想使用Cadence或者系統(tǒng)太大仿 真不了時,可以使用Hsim進(jìn)行仿真。Hsim在使用時需要根據(jù)版圖提取寄生參數(shù)和全芯片電路基于基本單元庫的網(wǎng)表。(還有不詳細(xì)的地方,回來需要具體再 闡述下)。
在進(jìn)行通用型數(shù)字Asic設(shè)計時需要注意代碼的風(fēng)格,因為代碼風(fēng)格的好壞直接影響到綜合軟件的效果,風(fēng)格規(guī)范的代碼可以得到性能更高的芯片電路。另外,在寫代碼時還要注意盡量使用可綜合的代碼和能夠避免系統(tǒng)出現(xiàn)毛刺與亞穩(wěn)態(tài)的電路描述方法。
在進(jìn)行全定制數(shù)字Asic設(shè)計時一定要注意單元庫的建立,在建立時除了滿足基本的邏輯功能外還要注意寬長比與所構(gòu)造單元的功耗和延遲之間的關(guān)系,最好能夠 建立基于verilog和電路圖等多種不同表達(dá)方式的電路結(jié)構(gòu)。這樣便于后面的進(jìn)一步分析與仿真。另外,在全定制數(shù)字IC設(shè)計中經(jīng)常會把數(shù)字電路當(dāng)成模擬 電路來分析功耗與延遲,所以可以使用模數(shù)混合的方法來對所設(shè)計的基于自建單元庫的電路進(jìn)行仿真,從而可以相對全電路模擬仿真大幅度提高仿真的速度,相對全 電路數(shù)字仿真得到更精確的延時信息。不過對于功耗的仿真還是只能使用全電路的模擬仿真。最為重要的一點是通用型數(shù)字IC的版圖布局可以利用軟件實現(xiàn)自動 化,而全定制則更多的依靠有經(jīng)驗的版圖設(shè)計師來實現(xiàn)。
以上是數(shù)字IC部分的,一點個人的看法與大家共同研究,歡迎各位達(dá)人指出錯誤與不足的地方??!