專利名稱:根據(jù)算法和規(guī)格的自動最佳集成電路生成器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于設(shè)計(jì)定制集成電路或?qū)S眉呻娐?ASIC)的方法。
背景技術(shù):
現(xiàn)代電子設(shè)備和工業(yè)產(chǎn)品依賴于諸如標(biāo)準(zhǔn)和定制的集成電路(IC)等的電子裝置。將針對特定用途所設(shè)計(jì)和制造的IC稱為ASIC。這些IC各自中所包括的轉(zhuǎn)換為晶體管數(shù)量的功能模塊的數(shù)量由于半導(dǎo)體技術(shù)的進(jìn)步而逐年快速增長。響應(yīng)于這些趨勢,設(shè)計(jì)IC的方法不斷改變。過去,IC被設(shè)計(jì)成僅是多個通用IC的組合。然而,近來,設(shè)計(jì)者需要創(chuàng)建他或她獨(dú)創(chuàng)的1C,以使得該IC可以根據(jù)需要執(zhí)行任何功能。通常,在設(shè)計(jì)功能的不斷增加的同時(shí),單位成本和大小不斷縮小。通常,芯片設(shè)計(jì)過程是以算法設(shè)計(jì)者指定芯片必須進(jìn)行的所有功能作為開始的。這通常以如C或Matlab等語言來實(shí)現(xiàn)。然后,需要芯片專家、工具工程師、驗(yàn)證工程師和固件工程師的整個團(tuán)隊(duì)耗費(fèi)許多人年(man-year)來將該算法映射到硬件芯片和相關(guān)固件。這是非常昂貴的過程并且還伴隨著大量風(fēng)險(xiǎn)。如今的設(shè)計(jì)日益復(fù)雜,并且要求優(yōu)良的功能與不斷縮減的大小、成本和功率相結(jié)合。功耗、信號交互作用、不斷提高的復(fù)雜性和不斷惡化的寄生現(xiàn)象,這些全部造成芯片設(shè)計(jì)方法更加復(fù)雜。設(shè)計(jì)趨勢朝向甚至更高的集成水平,其中對于數(shù)字設(shè)計(jì),晶體管的數(shù)量超過數(shù)百萬個晶體管。利用當(dāng)前技術(shù),高級仿真工具和重復(fù)使用數(shù)據(jù)的能力逐漸落后于這種復(fù)雜設(shè)計(jì)。發(fā)展尖端定制IC設(shè)計(jì)已提出了需要解決的若干問題。較高的處理速度已將本來是純數(shù)字的情況引入到模擬域,這些情況諸如多重時(shí)鐘區(qū)域、日益復(fù)雜的時(shí)鐘乘法和同步技術(shù)、噪聲控制以及高速I/o等。在設(shè)計(jì)和驗(yàn)證周期方面出現(xiàn)了障礙,這是因?yàn)樵O(shè)計(jì)復(fù)雜度持續(xù)增加而設(shè)計(jì)者將他們的產(chǎn)品推向市場可用的時(shí)間縮短,這導(dǎo)致設(shè)計(jì)成本的攤銷降低。設(shè)計(jì)復(fù)雜度增加的另一影響是實(shí)現(xiàn)成功設(shè)計(jì)可能需要的更多數(shù)量的生產(chǎn)周轉(zhuǎn)。又一問題是熟練工人的可用性。ASIC電路設(shè)計(jì)的快速增長與熟練的IC工程師的短缺并存。
發(fā)明內(nèi)容
在一個方面中,一種用于自動設(shè)計(jì)定制集成電路的方法,包括:接收所述定制集成電路的規(guī)格,其中所述規(guī)格包括計(jì)算機(jī)可讀代碼以及針對所述定制集成電路的一個或多個制約;自動設(shè)計(jì)處理器架構(gòu)并且針對所述計(jì)算機(jī)可讀代碼生成獨(dú)特定制的滿足所述制約的處理器芯片規(guī)格;以及將芯片規(guī)格綜合為所述定制集成電路的布局。該方法基于作為輸入的算法過程或代碼并且使用幾乎不需要人為參與的高度自動化工具來自動設(shè)計(jì)和生成定制集成電路。上述方面的實(shí)現(xiàn)可以包括以下中的一個或多個。該系統(tǒng)包括進(jìn)行計(jì)算機(jī)可讀代碼的靜態(tài)評測(profiling)和/或計(jì)算機(jī)可讀代碼的動態(tài)評測。基于計(jì)算機(jī)可讀代碼的評測數(shù)據(jù)(profile)來設(shè)計(jì)系統(tǒng)芯片規(guī)格。可以基于計(jì)算機(jī)可讀代碼的靜態(tài)評測和動態(tài)評測來進(jìn)一步遞增地優(yōu)化該芯片規(guī)格。計(jì)算機(jī)可讀代碼可被編譯成最佳匯編代碼,其中鏈接該最佳匯編代碼以生成針對所選擇的架構(gòu)的固件。仿真器可以進(jìn)行固件的循環(huán)精確仿真。該系統(tǒng)可以進(jìn)行固件的動態(tài)評測。該方法包括基于評測后的固件或基于匯編代碼來進(jìn)一步優(yōu)化芯片規(guī)格。該系統(tǒng)可以針對所設(shè)計(jì)的芯片規(guī)格自動生成寄存器傳輸級(RTL)代碼。該系統(tǒng)還可以進(jìn)行RTL代碼的綜合以制造硅。該系統(tǒng)的優(yōu)選實(shí)施例的優(yōu)點(diǎn)可以包括以下中的一個或多個。該系統(tǒng)減輕了芯片設(shè)計(jì)的問題并使芯片設(shè)計(jì)成為簡單過程。這些實(shí)施例使產(chǎn)品開發(fā)過程的關(guān)注點(diǎn)從硬件實(shí)現(xiàn)過程轉(zhuǎn)變回至產(chǎn)品規(guī)格和計(jì)算機(jī)可讀代碼或算法設(shè)計(jì)。代替束縛于特定硬件選擇,可以在專門針對該應(yīng)用而優(yōu)化的處理器上實(shí)現(xiàn)計(jì)算機(jī)可讀代碼或算法。該優(yōu)選實(shí)施例將優(yōu)化處理器連同所有相關(guān)聯(lián)的軟件工具和固件應(yīng)用程序一起自動生成。該過程可以在數(shù)日內(nèi)完成而非如傳統(tǒng)那樣需要數(shù)年來完成。該系統(tǒng)是設(shè)計(jì)硬件芯片解決方案的方式的徹底的模式轉(zhuǎn)變。本系統(tǒng)消除了芯片設(shè)計(jì)的風(fēng)險(xiǎn)并使芯片設(shè)計(jì)成為自動過程,由此算法設(shè)計(jì)師本身無需具有任何芯片設(shè)計(jì)知識就可以直接制作硬件芯片。針對該系統(tǒng)的主要輸入是采用如C或Matlab那樣的高級語言的計(jì)算機(jī)可讀代碼或算法規(guī)格。使用該系統(tǒng)的多個優(yōu)點(diǎn)可以包括:I)時(shí)程(schedule):在芯片設(shè)計(jì)周期變?yōu)橐灾転閱挝欢皇且阅隇閱挝粊碛?jì)量的情況下,用戶可以通過使其產(chǎn)品快速地推向市場來打入迅速變化的市場。2)成本:為了實(shí)現(xiàn)芯片而通常需要雇傭的大量工程師變得多余。這樣給使用本系統(tǒng)的公司帶來巨額的成本節(jié)省。3)最優(yōu)性:使用本系統(tǒng)所設(shè)計(jì)的芯片的產(chǎn)品在性能、面積和功耗方面均優(yōu)良。本系統(tǒng)是設(shè)計(jì)具有數(shù)字芯片組件的系統(tǒng)時(shí)所使用的方法的徹底的模式轉(zhuǎn)變。該系統(tǒng)是根據(jù)以C/Matlab描述的算法來生成數(shù)字硬件的全自動化軟件產(chǎn)品。該系統(tǒng)對于采用諸如C或Matlab等的高級語言來實(shí)現(xiàn)硬件芯片的過程,使用了獨(dú)特方法。簡言之,本系統(tǒng)使芯片設(shè)計(jì)成為全自動化軟件過程。
圖1示出自動生成定制IC的示例系統(tǒng)。圖2示出自動生成定制IC的示例工作流程。圖3示出自動生成定制IC的示例過程。
圖4示出示例的C代碼評測數(shù)據(jù)。圖5示出基本層級芯片規(guī)格。圖6示出根據(jù)圖5的芯片規(guī)格的第一架構(gòu)。圖7示出根據(jù)圖5的芯片規(guī)格的第二架構(gòu)。
具體實(shí)施例方式圖1示出自動生成定制IC的示例系統(tǒng)。圖1的系統(tǒng)支持針對所選擇的目標(biāo)應(yīng)用程序的最佳定制集成電路解決方案的自動生成。該目標(biāo)應(yīng)用程序的規(guī)格通常通過采用如C、Matlab、SystemC、Fortran、Ada或任何其它語言等的高級語言表示為計(jì)算機(jī)可讀代碼的算法來實(shí)現(xiàn)。該規(guī)格包括目標(biāo)應(yīng)用程序的描述,并且還包括諸如期望成本、面積、功率、速度、性能和硬件解決方案的其它屬性等的一個或多個制約。在圖1中,定制IC生成產(chǎn)品規(guī)格102。通常,存在獲得了期望產(chǎn)品的所有主要功能的初始產(chǎn)品規(guī)格。根據(jù)該產(chǎn)品,算法專家識別針對該產(chǎn)品所需的計(jì)算機(jī)可讀代碼或算法。這些算法中的一部分算法可以作為IP從第三方或標(biāo)準(zhǔn)開發(fā)委員會來獲得。該算法中的一部分必須作為產(chǎn)品開發(fā)的一部分來開發(fā)。以這種方式,產(chǎn)品規(guī)格102可以進(jìn)一步細(xì)化為可表示為諸如C程序等的程序或諸如Matlab模型等的數(shù)學(xué)模型的計(jì)算機(jī)可讀代碼或算法104。此外,產(chǎn)品規(guī)格102還包含諸如成本、面積、功率、工藝類型、庫和存儲器類型等的要求106。將計(jì)算機(jī)可讀代碼或算法104和要求106提供至自動IC生成器110。僅基于該代碼或算法104以及施加于芯片設(shè)計(jì)的制約,IC生成器110使用圖2的處理來在無需人為參與的情況下自動生成如下輸出,其中該輸出包括GDS文件112、用以運(yùn)行IC的固件114、軟件開發(fā)工具包(SDK) 116和/或測試套件118。⑶S文件112用于制造定制芯片120。然后,在所制造的該芯片上運(yùn)彳丁固件114以實(shí)現(xiàn)定制廣品規(guī)格102。本系統(tǒng)減輕了芯片設(shè)計(jì)的問題并使芯片設(shè)計(jì)成為簡單過程。該系統(tǒng)使產(chǎn)品開發(fā)過程的關(guān)注點(diǎn)從硬件實(shí)現(xiàn)過程轉(zhuǎn)變回至產(chǎn)品規(guī)格和算法設(shè)計(jì)。代替束縛于特定硬件選擇,可以總是在專門針對該應(yīng)用而優(yōu)化的數(shù)字芯片處理器上實(shí)現(xiàn)算法。該系統(tǒng)將該優(yōu)化處理器連同所有相關(guān)聯(lián)的軟件工具和固件應(yīng)用程序一起自動生成。該整個過程可以在數(shù)日內(nèi)完成而非如今需要數(shù)年來完成。簡言之,該系統(tǒng)使產(chǎn)品開發(fā)的數(shù)字芯片設(shè)計(jì)部分成為黑盒子。在一個實(shí)施例中,本系統(tǒng)產(chǎn)品可以采用以下作為輸入。以C/Matlab定義的計(jì)算機(jī)可讀代碼或算法所需的外設(shè)IO 規(guī)格面積目標(biāo)功率目標(biāo)余量目標(biāo)(內(nèi)置有多少開銷以用于未來的固件更新和復(fù)雜度的增加)過程選擇標(biāo)準(zhǔn)單元庫選擇存儲器編譯器選擇測試能力(掃描、TAP(測試訪問端口)控制器、內(nèi)置自測試(BIST)等)該系統(tǒng)的輸出可以是數(shù)字硬宏以及所有相關(guān)聯(lián)的固件。針對該數(shù)字硬宏而優(yōu)化的軟件開發(fā)工具包(SDK)也是自動生成的,由此在不必改變處理器的情況下實(shí)現(xiàn)未來針對固件的升級。圖2示出自動生成定制IC的示例工作流程。該系統(tǒng)針對任何所選擇的目標(biāo)應(yīng)用程序自動生成完整且最佳的硬件解決方案。盡管常見的目標(biāo)應(yīng)用程序存在于嵌入式應(yīng)用程序范疇內(nèi),但這些目標(biāo)應(yīng)用程序并非必須局限于此。參考圖2,ASIC定制生成產(chǎn)品規(guī)格202。產(chǎn)品規(guī)格202進(jìn)一步細(xì)化為可表示為諸如C程序等的程序或者諸如Matlab模型等的數(shù)學(xué)模型的計(jì)算機(jī)可讀代碼或算法204。此夕卜,產(chǎn)品規(guī)格202還包含諸如成本、面積、功率、工藝類型、庫和存儲器類型等的產(chǎn)品參數(shù)和要求206。將計(jì)算機(jī)可讀代碼或算法204和產(chǎn)品參數(shù)206提供至包括自動最佳指令集架構(gòu)生成器(AOISAG) (210)的自動IC生成器110。該生成器210控制自動最佳RTL生成器(AORTLG) 242,其中該A0RTLG242對自動最佳芯片生成器(A0CHIPG) 244進(jìn)行驅(qū)動。A0CHIPG244和A0RTLG242的輸出通過反饋循環(huán)被提供至A0ISAG210。A0ISAG210還控制自動最佳固件工具生成器(AOFTG) 246,其中該A0FTG246的輸出被提供至自動最佳固件生成器(AOFG) 248。該A0FG248的輸出也通過反饋循環(huán)被提供至A0ISAG。IC生成器110生成⑶S文件212、用以運(yùn)行IC的固件214和軟件開發(fā)工具包(SDK) 216作為輸出。將⑶S文件212和固件214提供至諸如TSMC或UMC等的IC制造方230以制造定制芯片220。在一個實(shí)施例中,該系統(tǒng)為全自動化。無需人工干預(yù)或引導(dǎo)。該系統(tǒng)為最優(yōu)化的。工具將自動生成最佳解決方案。在其它實(shí)施例中,用戶可以在需要的情況下進(jìn)行干預(yù)以提供人為引導(dǎo)。A0ISAG210可以自動生成最佳指令集架構(gòu)(被稱為ISA)。將該ISA定義為實(shí)現(xiàn)可編程的硬件解決方案所需的涵蓋整個數(shù)字芯片規(guī)格的每一單項(xiàng)細(xì)節(jié)。這些細(xì)節(jié)可以包括以下示例因素中的一個或多個。I)指令集功能、編碼和壓縮2)協(xié)處理器/多處理器架構(gòu)3)定標(biāo)性(scalarity)4)寄存器文件大小和寬度、訪問延遲和端口5)固定點(diǎn)大小6)靜態(tài)和動態(tài)分支預(yù)測7)控制寄存器8)堆棧操作9)循環(huán)10)循環(huán)緩沖器11)數(shù)據(jù)尋址12)流水線深度和功能13)循環(huán)緩沖器14)外設(shè)15)存儲器訪問/延遲/寬度/端口16)掃描/TAP控制器
17)專用加速器模塊18)時(shí)鐘規(guī)格19)數(shù)據(jù)存儲器和高速緩存系統(tǒng)20)數(shù)據(jù)預(yù)取機(jī)制21)程序存儲器和高速緩存系統(tǒng)22)程序預(yù)取機(jī)制A0RTLG242是根據(jù)最佳ISA以寄存器傳輸語言(RTL)自動生成硬件解決方案的自動最佳RTL生成器。A0RTLG242為全自動化。無需人工干預(yù)或引導(dǎo)。該工具將自動生成最佳解決方案。所生成的RTL是可綜合且可編譯的。A0CHIPG244是根據(jù)最佳RTL自動生成⑶SII硬件解決方案的自動最佳芯片生成器。該工具244為全自動化。無需人工干預(yù)或引導(dǎo)。該工具將自動生成最佳解決方案。所生成的芯片為全功能化,并且可以在無需修改的情況下利用標(biāo)準(zhǔn)FAB(標(biāo)準(zhǔn)晶圓制造廠)來制造。A0FTG246是用于自動生成基于硬件解決方案來開發(fā)固件代碼所需的軟件工具的自動最佳固件工具生成器。A0FTG246為全自動化。無需人工干預(yù)或引導(dǎo)。該工具將自動生成最佳解決方案??梢曰跀?shù)字芯片規(guī)格來自動生成諸如編譯器、匯編編譯器、鏈接編譯器、功能仿真器、循環(huán)精確仿真器等的標(biāo)準(zhǔn)工具。A0FG248是自動最佳固件生成器,其中該A0FG248自動生成需要由如此得到的芯片120來執(zhí)行的固件。該工具為全自動化。無需人工干預(yù)或引導(dǎo)。另外,該工具將自動生成最佳解決方案。還可以自動生成優(yōu)化實(shí)時(shí)操作系統(tǒng)(RTOS)。芯片規(guī)格定義了執(zhí)行定制應(yīng)用程序所需的具體的功能單元。還具體地定義了固有的并行性,由此確定了并行使用的單元的數(shù)量。從評測信息提取微觀和宏觀層級的并行性的所有復(fù)雜度,因而利用該知識來設(shè)計(jì)芯片規(guī)格。因此,最佳地設(shè)計(jì)了芯片規(guī)格,并且芯片設(shè)計(jì)不會如在不具有這種評測信息而設(shè)計(jì)芯片規(guī)格的情況那樣被過度設(shè)計(jì)或設(shè)計(jì)不足。在動態(tài)評測期間,收集分支統(tǒng)計(jì)數(shù)據(jù),并且基于該信息來最佳地設(shè)計(jì)分支預(yù)測機(jī)制。此外,根據(jù)該評測可以得到連續(xù)指令之間的所有相依性檢查,因而對芯片規(guī)格的流水線和所有指令調(diào)度方面進(jìn)行了最佳設(shè)計(jì)。芯片規(guī)格可以提供諸如以下等的選項(xiàng):*硬件模塊尋址,允許在不必持續(xù)地測試外包的情況下實(shí)現(xiàn)循環(huán)緩沖器。*針對數(shù)據(jù)串流化所設(shè)計(jì)的存儲器架構(gòu),大量地使用DMA并且期望將代碼寫成知曉高速緩存分層結(jié)構(gòu)和相關(guān)聯(lián)的延遲。*驅(qū)動多個算術(shù)單元可能需要存儲器架構(gòu)支持每個指令周期的若干訪問。*將程序存儲器和數(shù)據(jù)存儲器分開(哈佛(Harvard)架構(gòu)),并且有時(shí)對多個數(shù)據(jù)總線進(jìn)行并行訪問。*特殊SMD (單指令、多數(shù)據(jù))運(yùn)算。* —些處理器使用VLIW技術(shù),因而各指令并行驅(qū)動多個算術(shù)單元。*諸如快速乘法-累加(MAC)等的特殊算術(shù)運(yùn)算。*作為用于計(jì)算FFT的特殊尋址模式的位反轉(zhuǎn)尋址。*諸如用于在無需針對指令提取或退出測試的開銷的情況下、在非常緊湊的循環(huán)內(nèi)執(zhí)行少量指令字的架構(gòu)支持等的特殊循環(huán)控制。*特殊預(yù)取指令與數(shù)據(jù)預(yù)取機(jī)制相關(guān),以使得執(zhí)行單元不會因數(shù)據(jù)不足而停止。因而,針對給定的執(zhí)行單元和使用這些執(zhí)行單元的指令調(diào)度來最佳地設(shè)計(jì)存儲器帶寬。*最佳可變/多離散長度指令編碼,以獲得最佳性能并且同時(shí)針對給定應(yīng)用程序?qū)崿F(xiàn)非常緊湊的指令占用空間。圖3示出用于自動生成圖1的定制芯片120的示例處理流程?,F(xiàn)在轉(zhuǎn)向參考圖3,生成定制產(chǎn)品規(guī)格(302)。此外,定制產(chǎn)品規(guī)格302被進(jìn)一步細(xì)化為可表示為諸如C程序等的程序或者諸如Matlab模型等的數(shù)學(xué)模型的計(jì)算機(jī)可讀代碼或算法304。以靜態(tài)方式316和動態(tài)方式318對定制算法304進(jìn)行評測。在架構(gòu)優(yōu)化器單元320中使用通過該評測收集到的統(tǒng)計(jì)數(shù)據(jù)。該單元還接收定制規(guī)格302。基本功能生成器314確定實(shí)現(xiàn)定制算法304所需要的基本運(yùn)算或執(zhí)行單元?;竟δ苌善?14的輸出還被饋給至架構(gòu)優(yōu)化器320。架構(gòu)優(yōu)化器320配備有來自基本功能生成器的面積、定時(shí)和功率信息,從而隨著內(nèi)部實(shí)現(xiàn)分析來使面積、定時(shí)和功率最小化?;诩軜?gòu)優(yōu)化器320的輸出,將初始芯片規(guī)格定義為架構(gòu)322。然后,將該架構(gòu)322饋送至工具生成器332單元以自動生成編譯器306、匯編編譯器308、鏈接編譯器310、循環(huán)精確仿真器338。然后,使用這一系列工具將定制算法304轉(zhuǎn)換成可以在架構(gòu)322上運(yùn)行的固件312。以靜態(tài)方式334對匯編編譯器308的輸出進(jìn)行評測,并且以動態(tài)方式340對循環(huán)精確仿真器338的輸出進(jìn)行評測。然后,架構(gòu)優(yōu)化器342使用這些評測信息來完善和改進(jìn)架構(gòu)322。重復(fù)執(zhí)行322 — 332 — 306 — 308 — 310 — 312 — 338 — 340 — 342 — 322 的反饋循環(huán)和322 — 332 — 3 06 — 308 — 334 — 342 — 322的反饋循環(huán),直到滿足定制規(guī)格為止。這些反饋循環(huán)在無人為干預(yù)的情況下自動發(fā)生,因而自動達(dá)到最佳解決方案。架構(gòu)優(yōu)化器342還基于架構(gòu)平面設(shè)計(jì)器336以及綜合和P&R328的反饋。不僅參考應(yīng)用程序評測信息還參考物理布局和布線信息來進(jìn)行架構(gòu)決策。架構(gòu)優(yōu)化是精確的,并且在進(jìn)行所設(shè)計(jì)的架構(gòu)的后端設(shè)計(jì)的情況下不會發(fā)生意外情況。例如,在架構(gòu)優(yōu)化器選擇使用乘法器單元的情況下,該架構(gòu)優(yōu)化器采用兩個16位操作數(shù)作為輸入并且生成32位結(jié)果。架構(gòu)優(yōu)化器342獲知操作數(shù)的應(yīng)用與來自平面設(shè)計(jì)器336和綜合328的可用性結(jié)果之間的確切時(shí)間延遲。架構(gòu)優(yōu)化器342還獲知在該乘法器布局和布線在實(shí)際芯片內(nèi)的情況下的確切面積。因而,用于使用該乘法器的架構(gòu)決策不僅基于來自評測數(shù)據(jù)的該乘法器的需求,還基于在面積、時(shí)間延遲(還稱為性能)和功率方面的與該乘法器相關(guān)聯(lián)的成本。在另一示例中,為了在性能對定制芯片造成制約的情況下加速該性能,編譯器306處理在串行處理器上需要長時(shí)間來運(yùn)行的程序、代碼或算法,并且給出包含可以同時(shí)運(yùn)行的多個處理單元的新架構(gòu),目的是通過將該程序分成多個處理單元能夠并行或以重疊方式處理的多個段來縮短該程序的運(yùn)行時(shí)間。前端的附加任務(wù)是尋找并行性計(jì)算,并且后端的附加任務(wù)是對該程序進(jìn)行調(diào)度以使得獲得正確結(jié)果和改進(jìn)的性能。該系統(tǒng)確定該程序應(yīng)被分成哪種段以及可以如何重排這些段。這涉及以下內(nèi)容。 粒度、層級和并行性 針對并行執(zhí)行的候選之間的相依性的分析
在另一示例中,在空間或功率對定制芯片造成制約的情況下,編譯器例如將生成順次執(zhí)行代碼以節(jié)省功率和芯片面積需求的單一低功率處理器/數(shù)字信號處理器(DSP)。根據(jù)架構(gòu)塊322,該過程可以使用RTL生成器(324)來生成RTL。生成RTL代碼(326),并且可以將該RTL代碼提供至綜合布局和布線塊(328)。還可以考慮來自架構(gòu)平面設(shè)計(jì)器的信息(336)??梢陨刹季?330)。該布局例如可以是GDSII文件格式。本發(fā)明的另一個方面是創(chuàng)建統(tǒng)一的架構(gòu)322表達(dá)方式,以使得軟件工具生成器332和硬件RTL生成器324這兩者都可以使用該表達(dá)方式。該表達(dá)方式被稱為SAMA (系統(tǒng)、架構(gòu)和微架構(gòu))。架構(gòu)設(shè)計(jì)操作是基于針對定制芯片要執(zhí)行的程序、代碼或算法的分析。在一個實(shí)現(xiàn)中,針對需要長時(shí)間在單標(biāo)量處理器上運(yùn)行的程序,該系統(tǒng)可以通過將處理需求分成多個處理單元內(nèi)能夠并行或以重疊方式處理的各段來改善性能。前端的附加任務(wù)是尋找并行性,并且后端的附加任務(wù)是對該程序進(jìn)行調(diào)度以使得獲得正確的結(jié)果和改進(jìn)的性能。該系統(tǒng)可以確定程序應(yīng)分成哪種段以及可以如何重排這些段。這涉及粒度、并行性以及針對并行執(zhí)行的候選之間的相依性的分析。由于程序段和多個處理單元在某個大小的范圍內(nèi),因此可能存在相當(dāng)數(shù)量的組合,從而需要不同的編譯方法。針對這些組合來完成芯片規(guī)格,以使得正確設(shè)計(jì)支持計(jì)算單元所需的數(shù)據(jù)帶寬,而不存在過度設(shè)計(jì)或設(shè)計(jì)不足。架構(gòu)優(yōu)化器342首先識別程序內(nèi)的潛在并列單元,然后對這些并列單元進(jìn)行相依性分析以找出彼此獨(dú)立并且可以同時(shí)執(zhí)行的這些段。架構(gòu)優(yōu)化器342識別機(jī)器指令的粒度層級的并行性。例如,在普通的標(biāo)量處理器上添加兩個N-元素向量將一次執(zhí)行一個指令。但在向量處理器上,可以在N個單獨(dú)處理器上執(zhí)行所有N個指令,從而將總時(shí)間縮短成略大于執(zhí)行一次添加所需時(shí)間的N倍。架構(gòu)優(yōu)化器采用與向量語句等同的順序語句并且轉(zhuǎn)譯成向量機(jī)器指令。允許向量化的條件是源操作數(shù)的元素必須獨(dú)立于結(jié)果操作數(shù)。例如,存在如下代碼。DO 100 J=I, NDO 100 1=1, NDO 100 K=I, NC(I1J)= C (I,J)十 A(I,K)*B(K,J)100 C0NTMUE在該矩陣乘法示例中,在各次迭代中,使用先前迭代中計(jì)算出的C(I,J)的先前值來計(jì)算c(i,j),因而無法進(jìn)行向量化。在期望性能的情況下,該系統(tǒng)將代碼變換成如下代碼。DO 100 J=I, NDO 100 K=I, NDO 100 1=1, NC(I, J) =C(I1K)十 A(0,K)*B(K,J)100 CONTINUE在這種情況下,可以進(jìn)行向量化,這是因?yàn)檫B續(xù)指令用于計(jì)算彼此獨(dú)立并可以在不同處理器上同時(shí)執(zhí)行的C(1-1,J)和Cd,J)。因而,指令層級的相依性分析可協(xié)助識別操作數(shù)層級相依性并且應(yīng)用適當(dāng)優(yōu)化以允許向量化。
圖4 6示出用于針對表示為C代碼的以下算法進(jìn)行定制芯片規(guī)格設(shè)計(jì)的示例過程。for (i=0; i〈ilimit; i 十+) {a[i]=b[i]十 2*c[i];t=t 十 a[i];}圖4示出使用吉波(gimple)靜態(tài)評測的示例靜態(tài)評測。在評測中,(與靜態(tài)代碼分析相對的)動態(tài)程序分析的形式使用隨著程序執(zhí)行所收集到的信息來調(diào)查程序的表現(xiàn)。該分析的通常目的是確定要優(yōu)化程序的哪些段,即提高其整體速度、減少其內(nèi)存需求或者有時(shí)為這兩者。(代碼)評測器是最常見的僅測量函數(shù)調(diào)用的頻率和持續(xù)時(shí)間的性能分析工具,但除了更加綜合的評測器以外,還存在能夠收集廣泛性能數(shù)據(jù)的其它特定類型的評測器(例如,內(nèi)存評測器)。在圖4的示例中,C代碼被縮減成一系列的兩次操作數(shù)運(yùn)算。因而,前四項(xiàng)運(yùn)算進(jìn)行a[i]=b[i]+2*c[i]+t,并且并行地后四項(xiàng)運(yùn)算針對i的下一值進(jìn)行a[i]=b[i]+2*c[i]+t,并且在最后運(yùn)算中對這兩組的結(jié)果求和。圖5示出用以實(shí)現(xiàn)上述應(yīng)用的簡單基本層級芯片規(guī)格。各變量1、a[i]、b[i]、c [i]、t和tmp具有被讀取或?qū)懭氲奶卣?。因而,在時(shí)間502處,讀取i并且針對預(yù)定極限進(jìn)行檢查。在504中,i遞增并且被寫入,同時(shí)提取c[i]。在506中,讀取b[i],同時(shí)寫入tmp變量以存儲2*c[i]的結(jié)果并且從tmp變量讀取該結(jié)果以準(zhǔn)備進(jìn)行下一運(yùn)算。在508中,寫入a[i]以存儲tmp與b[i]相加的結(jié)果,并且得到t。在510中,寫入t以存儲508中的相加結(jié)果,并且讀取i。在512 520中,對下一 i重復(fù)502 510的序列。圖6示出根據(jù)圖5的基線架構(gòu)的第一架構(gòu)。在604中,讀取變量i和c [i]。在606中,i遞增并且存儲新的值。讀取h[i],同時(shí)tmp存儲2*c[i]的結(jié)果,然后讀取該結(jié)果以進(jìn)行下一運(yùn)算。在608中,將b[i]與tmp相加并存儲在a[i]中,并且讀取新的a[i]和t以進(jìn)行下一運(yùn)算。在610中,將t與a[i]相加,并且將結(jié)果存儲在t中。在612 618中,針對下一 i值重復(fù)相同的序列。圖7示出根據(jù)圖5的基線架構(gòu)的第二架構(gòu)。在該架構(gòu)中,架構(gòu)優(yōu)化器檢測到可以利用適當(dāng)硬件來將運(yùn)算702和704組合成一次運(yùn)算。該硬件還可以在一次運(yùn)算中處理運(yùn)算706 708。結(jié)果,使用該第二架構(gòu),檢查i以得知其是否超過極限,并且i在一次運(yùn)算中自動遞增。接著,將運(yùn)算706 708組合成一次運(yùn)算以進(jìn)行2*c[i]+b[i]并將該結(jié)果存儲為a[i]。在第三次運(yùn)算中,將t與a[i]相加。針對下一 i值進(jìn)行類似的三次運(yùn)算。第二架構(gòu)充分利用自動遞增運(yùn)算和相乘-累加運(yùn)算的硬件功能以在一個步驟中進(jìn)行幾次交互。因而,該系統(tǒng)可以使架構(gòu)性能優(yōu)化。由于程序段和多個處理單元在某個大小的范圍內(nèi),因此可能存在相當(dāng)大量的組合,從而需要不同的優(yōu)化方法。架構(gòu)優(yōu)化器首先識別程序中的潛在并行單元,然后對這些并行單元進(jìn)行相依性分析以找出彼此獨(dú)立并且可以同時(shí)執(zhí)行的這些段。這種系統(tǒng)所允許的并行優(yōu)化的另一實(shí)施例是減輕電壓下降/IR熱點(diǎn)。該處理將每個機(jī)器指令與作為片上邏輯和互連結(jié)構(gòu)的集合的相關(guān)硬件執(zhí)行路徑相關(guān)聯(lián)。該執(zhí)行路徑可被視為指令的硬件“占用空間”。數(shù)據(jù)模型維持所有可能的執(zhí)行路徑及其相關(guān)指令的記錄。數(shù)據(jù)模型接收各種機(jī)器指令的統(tǒng)計(jì)評測數(shù)據(jù),并且從該統(tǒng)計(jì)評測數(shù)據(jù)提取在任何給定周期內(nèi)執(zhí)行指令的穩(wěn)態(tài)概率。數(shù)據(jù)模型可以針對各指令執(zhí)行路徑來創(chuàng)建估計(jì)拓樸布局?;陬A(yù)先確定的協(xié)議使用多種物理設(shè)計(jì)模型來進(jìn)行布局估計(jì),以選擇物理設(shè)計(jì)建模所需的適當(dāng)抽象層級。數(shù)據(jù)模型將指令的執(zhí)行穩(wěn)態(tài)概率與其執(zhí)行路徑的拓?fù)湎嚓P(guān)聯(lián)。數(shù)據(jù)模型創(chuàng)建了該布局的子區(qū)域,并且針對各子區(qū)域,存在交叉的執(zhí)行路徑的集合,從而產(chǎn)生用于計(jì)算子區(qū)域權(quán)重的執(zhí)行路徑概率的集合。使用(整個區(qū)域內(nèi)的)子區(qū)域權(quán)重分布來估計(jì)功率熱點(diǎn)位置。數(shù)據(jù)模型識別執(zhí)行路徑與功率熱點(diǎn)相交叉的受影響指令。然后,將功率熱點(diǎn)區(qū)域建模成虛擬受限容量資源。數(shù)據(jù)模型針對調(diào)度器進(jìn)行配置,以將受影響指令視為依賴于受限容量資源。受限容量轉(zhuǎn)而限制子區(qū)域內(nèi)應(yīng)當(dāng)容許緊鄰順次激活的執(zhí)行路徑的數(shù)量。這種資源相依性可以容易地添加至調(diào)度器的資源分配表。然后,調(diào)度器優(yōu)化考慮將以上所創(chuàng)建的虛擬資源與其它性能成本函數(shù)相結(jié)合。因而,功率和性能同時(shí)被優(yōu)化。該系統(tǒng)可以根據(jù)評測數(shù)據(jù)來生成功能塊使用情況統(tǒng)計(jì)數(shù)據(jù)。該系統(tǒng)可以按照時(shí)間來追蹤不同處理塊的使用情況。該系統(tǒng)可以推測地切斷一個或多個處理塊的電源并且在需要時(shí)自動接通已關(guān)閉的處理塊的電源。指令譯碼器可以確定何時(shí)向各功率域施加電力。可以自動生成定制IC運(yùn)行應(yīng)用程序代碼所用的軟件工具。這些工具包括編譯器、匯編編譯器、鏈接編譯器、基于循環(huán)的仿真器中的一個或多個。該工具自動生成固件。這些工具可以評測固件并且提供固件評測數(shù)據(jù)作為反饋以優(yōu)化架構(gòu)。編譯器的指令調(diào)度器可以在配備有該功率優(yōu)化方案的情況下排列指令的順序以使效益最大化。關(guān)鍵構(gòu)想是通過僅利用架構(gòu)抽象塊估計(jì)和虛擬構(gòu)建物理設(shè)計(jì)來預(yù)期物理制約和效應(yīng)。在一個示例中,可以基于估計(jì)面積的一組黑盒子來構(gòu)建平面設(shè)計(jì)。具有這種架構(gòu)層級的結(jié)構(gòu)使得系統(tǒng)能夠在實(shí)現(xiàn)RTL之如考慮任何擁塞、定時(shí)和面積等。在另一例中,黑盒子的特定形狀或配置可以產(chǎn)生較好的平面設(shè)計(jì),因此產(chǎn)生較好的定時(shí)和擁塞等。因而,提供了在架構(gòu)層級本身減輕這些問題的機(jī)會。類似于物理世界,建筑師可以通過考慮不同房間的配置來考慮房子如何發(fā)揮功能,而無需知曉長寬比的確切尺寸或房間的內(nèi)容物。該系統(tǒng)減輕了芯片設(shè)計(jì)的問題并使芯片設(shè)計(jì)成為簡單過程。這些實(shí)施例使產(chǎn)品開發(fā)過程的關(guān)注點(diǎn)從硬件實(shí)現(xiàn)過程轉(zhuǎn)變回至產(chǎn)品規(guī)格和計(jì)算機(jī)可讀代碼或算法設(shè)計(jì)。代替束縛于特定硬件選擇,可以總是在專門針對該應(yīng)用而優(yōu)化的處理器上實(shí)現(xiàn)計(jì)算機(jī)可讀代碼或算法。該優(yōu)選實(shí)施例將優(yōu)化處理器連同所有相關(guān)聯(lián)的軟件工具和固件應(yīng)用程序一起自動生成。該過程可以在數(shù)日內(nèi)完成而非如傳統(tǒng)那樣需要數(shù)年來完成。該系統(tǒng)是設(shè)計(jì)硬件芯片解決方案的方式的徹底的模式轉(zhuǎn)變。使用本系統(tǒng)的優(yōu)選實(shí)施例的多個優(yōu)點(diǎn)中的三個優(yōu)點(diǎn)包括以下:I)時(shí)程:在芯片設(shè)計(jì)周期變?yōu)橐灾転閱挝欢皇且阅隇閱挝粊碛?jì)量的情況下,用戶可以通過使產(chǎn)品快速地推向市場來打入迅速變化的市場;以及2)成本:為了實(shí)現(xiàn)芯片而通常需要雇傭的大量工程師變得多余。這樣給使用本系統(tǒng)的公司帶來巨額的成本節(jié)??;以及3)最優(yōu)性:使用本系統(tǒng)所設(shè)計(jì)的芯片的產(chǎn)品在性能、面積和功耗方面均優(yōu)良。例如,接著將論述支持自動芯片設(shè)計(jì)系統(tǒng)的計(jì)算機(jī)。該計(jì)算機(jī)優(yōu)選包括通過CPU總線所連接的處理器、隨機(jī)存取存儲器(RAM)、程序存儲器(優(yōu)選為諸如閃速ROM等的可寫式只讀存儲器(ROM))和輸入/輸出(I/O)控制器。該計(jì)算機(jī)可以可選地包括連接至硬盤和CPU總線的硬盤驅(qū)動器控制器。硬盤可用于存儲諸如本發(fā)明等的應(yīng)用程序以及數(shù)據(jù)??蛇x地,應(yīng)用程序可以存儲在RAM或ROM中。I/O控制器經(jīng)由I/O總線連接至I/O接口。I/O接口經(jīng)由諸如串行鏈路、局域網(wǎng)、無線鏈路和并行鏈路等的通信鏈路來接收和發(fā)送模擬或數(shù)字形式的數(shù)據(jù)??蛇x地,顯示器、鍵盤和指示裝置(鼠標(biāo))也可以連接至I/O總線。可選地,對于I/O接口、顯示器、鍵盤和指示裝置,可以使用單獨(dú)的連接(單獨(dú)的總線)。可以對可編程的處理系統(tǒng)進(jìn)行預(yù)編程,或者可以通過從其它源(例如,軟盤、CD-ROM或其它計(jì)算機(jī))下載程序來對該可編程的處理系統(tǒng)進(jìn)行編程(和重新編程)。各計(jì)算機(jī)程序有形地存儲在通用或?qū)S玫目删幊逃?jì)算機(jī)能夠讀取的機(jī)器可讀存儲介質(zhì)或裝置(例如,程序存儲器或磁盤)中,用于在計(jì)算機(jī)讀取該存儲介質(zhì)或裝置以進(jìn)行這里所述的過程的情況下配置和控制該計(jì)算機(jī)的操作。本發(fā)明的系統(tǒng)還被視為嵌入配置有計(jì)算機(jī)程序的計(jì)算機(jī)可讀存儲介質(zhì),其中如此配置成的存儲介質(zhì)使得計(jì)算機(jī)以特定和預(yù)定方式操作以進(jìn)行這里所述的功能。這里已經(jīng)相當(dāng)詳細(xì)地說明了本發(fā)明,從而符合專利法規(guī)并且向本領(lǐng)域技術(shù)人員提供應(yīng)用新穎原理并根據(jù)需要構(gòu)造和使用這些專用組件所需的信息。然而,應(yīng)當(dāng)理解,可以利用具體不同的設(shè)備和裝置來執(zhí)行本發(fā)明,并且可以在沒有背離本發(fā)明本身的范圍的情況下實(shí)現(xiàn)針對設(shè)備細(xì)節(jié)和操作過程這兩者的各種修改。
權(quán)利要求
1.一種用于自動設(shè)計(jì)定制集成電路的方法,包括: a.接收所述定制集成電路的規(guī)格,其中所述規(guī)格包括計(jì)算機(jī)可讀代碼以及針對所述定制集成電路的一個或多個制約; b.自動設(shè)計(jì)處理器架構(gòu)并且生成針對所述計(jì)算機(jī)可讀代碼獨(dú)特定制的滿足所述制約的處理器芯片規(guī)格;以及 c.將所生成的處理器芯片規(guī)格綜合為半導(dǎo)體制造所用的所述定制集成電路的計(jì)算機(jī)可讀描述。
2.根據(jù)權(quán)利要求1所述的方法,其中,還包括:進(jìn)行所述計(jì)算機(jī)可讀代碼的靜態(tài)評測或動態(tài)評測。
3.根據(jù)權(quán)利要求1所述的方法,其中,還包括:自動生成所述定制集成電路運(yùn)行所述計(jì)算機(jī)可讀代碼所用的固件或軟件開發(fā)工具包即SDK。
4.根據(jù)權(quán)利要求1所述的方法,其中,還包括:基于所述計(jì)算機(jī)可讀代碼來選擇架構(gòu)。
5.根據(jù)權(quán)利要求1所述的方法,其中,還包括:基于所述計(jì)算機(jī)可讀代碼的靜態(tài)評測和動態(tài)評測來優(yōu)化架構(gòu)。
6.根據(jù)權(quán)利要求1所述的方法,其中,還包括:在可編程架構(gòu)中將所述計(jì)算機(jī)可讀代碼編譯成匯編代碼。
7.根據(jù)權(quán)利要求7所述的方法,其中,還包括:鏈接所述匯編代碼以生成針對所選擇的可編程架構(gòu)的固件。
8.根據(jù)權(quán)利要求7所述的方法,其中,還包括:進(jìn)行所述固件的循環(huán)精確仿真。
9.根據(jù)權(quán)利要求7所述的方法,其中,還包括:進(jìn)行所述固件的動態(tài)評測。
10.根據(jù)權(quán)利要求9所述的方法,其中,還包括:基于評測后的固件來優(yōu)化所述可編程架構(gòu)。
11.根據(jù)權(quán)利要求7所述的方法,其中,還包括:基于所述匯編代碼來優(yōu)化所述可編程架構(gòu)。
12.根據(jù)權(quán)利要求1所述的方法,其中,還包括:針對所選擇的架構(gòu)來生成寄存器傳輸級代碼即RTL代碼。
13.根據(jù)權(quán)利要求12所述的方法,其中,還包括:進(jìn)行所述RTL代碼的綜合。
14.一種用于自動設(shè)計(jì)定制集成電路的系統(tǒng),包括: a.用于接收所述定制集成電路的規(guī)格的部件,其中所述規(guī)格包括計(jì)算機(jī)可讀代碼以及針對所述定制集成電路的一個或多個制約; b.用于自動設(shè)計(jì)處理器架構(gòu)并且生成針對所述計(jì)算機(jī)可讀代碼獨(dú)特定制的滿足所述制約的處理器芯片規(guī)格的部件;以及 c.用于將所生成的架構(gòu)綜合為半導(dǎo)體制造所用的所述定制集成電路的計(jì)算機(jī)可讀描述的部件。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括:用于進(jìn)行所述計(jì)算機(jī)可讀代碼的靜態(tài)評測和動態(tài)評測的部件。
16.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括:用于基于所述計(jì)算機(jī)可讀代碼來選擇架構(gòu)的部件。
17.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括:用于基于所述計(jì)算機(jī)可讀代碼的評測來優(yōu)化架構(gòu)的部件。
18.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括編譯器,所述編譯器用于將所述計(jì)算機(jī)可讀代碼轉(zhuǎn)換成匯編代碼。
19.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括循環(huán)精確仿真器,所述循環(huán)精確仿真器用于測試固件。
20.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括針對所選擇的架構(gòu)的寄存器傳輸級代碼生 成器。
全文摘要
公開了一種用于自動設(shè)計(jì)定制集成電路的方法和系統(tǒng),包括接收定制集成電路的規(guī)格,其中所述規(guī)格包括計(jì)算機(jī)可讀代碼以及針對所述定制集成電路的一個或多個制約;自動設(shè)計(jì)處理器架構(gòu)并且生成針對所述計(jì)算機(jī)可讀代碼獨(dú)特定制的滿足所述制約的處理器芯片規(guī)格;以及將芯片規(guī)格綜合為所述定制集成電路的布局。
文檔編號G06F17/50GK103098058SQ201180044079
公開日2013年5月8日 申請日期2011年7月11日 優(yōu)先權(quán)日2010年7月13日
發(fā)明者薩蒂許·帕德馬納班, 皮爾斯·吳, 阿南德·潘德倫根, 瑟雷許·凱迪耶拉, 阿南斯·朵巴, 泰克·席基哈拉 申請人:艾爾葛托奇普股份有限公司