專利名稱:根據(jù)算法和規(guī)格的自動最佳集成電路生成器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于設(shè)計定制集成電路或?qū)S眉呻娐?ASIC)的方法。
背景技術(shù):
現(xiàn)代電子設(shè)備和工業(yè)產(chǎn)品依賴于諸如標(biāo)準(zhǔn)和定制的集成電路(IC)等的電子裝置。將針對特定用途所設(shè)計和制造的IC稱為ASIC。這些IC各自中所包括的轉(zhuǎn)換為晶體管數(shù)量的功能模塊的數(shù)量由于半導(dǎo)體技術(shù)的進(jìn)步而逐年快速增長。響應(yīng)于這些趨勢,設(shè)計IC的方法不斷改變。過去,IC被設(shè)計成僅是多個通用IC的組合。然而,近來,設(shè)計者需要創(chuàng)建他或她獨(dú)創(chuàng)的1C,以使得該IC可以根據(jù)需要執(zhí)行任何功能。通常,在設(shè)計功能的不斷增加的同時,單位成本和大小不斷縮小。通常,芯片設(shè)計過程是以算法設(shè)計者指定芯片必須進(jìn)行的所有功能作為開始的。這通常以如C或Matlab等語言來實(shí)現(xiàn)。然后,需要芯片專家、工具工程師、驗(yàn)證工程師和固件工程師的整個團(tuán)隊耗費(fèi)許多人年(man-year)來將該算法映射到硬件芯片和相關(guān)固件。這是非常昂貴的過程并且還伴隨著大量風(fēng)險。如今的設(shè)計日益復(fù)雜,并且要求優(yōu)良的功能與不斷縮減的大小、成本和功率相結(jié)合。功耗、信號交互作用、不斷提高的復(fù)雜性和不斷惡化的寄生現(xiàn)象,這些全部造成芯片設(shè)計方法更加復(fù)雜。設(shè)計趨勢朝向甚至更高的集成水平,其中對于數(shù)字設(shè)計,晶體管的數(shù)量超過數(shù)百萬個晶體管。利用當(dāng)前技術(shù),高級仿真工具和重復(fù)使用數(shù)據(jù)的能力逐漸落后于這種復(fù)雜設(shè)計。發(fā)展尖端定制IC設(shè)計已提出了需要解決的若干問題。較高的處理速度已將本來是純數(shù)字的情況引入到模擬域,這些情況諸如多重時鐘區(qū)域、日益復(fù)雜的時鐘乘法和同步技術(shù)、噪聲控制以及高速I/o等。在設(shè)計和驗(yàn)證周期方面出現(xiàn)了障礙,這是因?yàn)樵O(shè)計復(fù)雜度持續(xù)增加而設(shè)計者將他們的產(chǎn)品推向市場可用的時間縮短,這導(dǎo)致設(shè)計成本的攤銷降低。設(shè)計復(fù)雜度增加的另一影響是實(shí)現(xiàn)成功設(shè)計可能需要的更多數(shù)量的生產(chǎn)周轉(zhuǎn)。又一問題是熟練工人的可用性。ASIC電路設(shè)計的快速增長與熟練的IC工程師的短缺并存。
發(fā)明內(nèi)容
在一個方面中,公開了一種用于基于算法過程或代碼作為輸入并且使用幾乎不需要人為參與的高度自動化工具來自動設(shè)計定制集成電路的方法。所述方法包括:接收定制集成電路的規(guī)格,其中所述規(guī)格包括計算機(jī)可讀代碼以及針對所述定制集成電路的一個或多個制約;自動生成針對所述計算機(jī)可讀代碼的最適合所述制約的計算機(jī)架構(gòu);基于代碼評測數(shù)據(jù)來自動確定指令執(zhí)行序列,并且重新分配或延遲所述指令序列以使操作分散到一個或多個處理塊從而減少熱點(diǎn);連續(xù)地評價和優(yōu)化一個或多個因素,其中所述因素包括物理實(shí)現(xiàn)以及寄存器傳輸級即RTL或門控層級綜合以上的架構(gòu)層級的局部和全局面積、定時或功率;自動生成用以在所述定制集成電路上自動執(zhí)行所述計算機(jī)可讀代碼的軟件開發(fā)工具包即SDK和相關(guān)聯(lián)的固件;針對所述定制集成電路上的所述計算機(jī)可讀代碼來自動生成相關(guān)聯(lián)的測試套件和向量;以及自動綜合所設(shè)計的架構(gòu)并且生成半導(dǎo)體制造所用的所述定制集成電路的計算機(jī)可讀描述。在另一方面中,一種用于利用最少的人為參與來自動設(shè)計定制集成電路的方法,包括:接收所述定制集成電路的規(guī)格,其中所述規(guī)格包括計算機(jī)可讀代碼以及針對所述定制集成電路的一個或多個制約;自動設(shè)計處理器架構(gòu)并且生成針對計算機(jī)可讀代碼獨(dú)特定制的滿足所述制約的處理器芯片規(guī)格;以及將所述芯片規(guī)格綜合為所述定制集成電路的布局。該方面也使用幾乎不需要人為參與的高度自動化工具來進(jìn)行。上述方面的實(shí)現(xiàn)可以包括以下中的一個或多個。該系統(tǒng)包括進(jìn)行計算機(jī)可讀代碼的靜態(tài)評測(profiling)和/或計算機(jī)可讀代碼的動態(tài)評測?;谟嬎銠C(jī)可讀代碼的評測數(shù)據(jù)(profile)來設(shè)計系統(tǒng)芯片規(guī)格。可以基于計算機(jī)可讀代碼的靜態(tài)評測和動態(tài)評測來進(jìn)一步遞增地優(yōu)化該芯片規(guī)格。計算機(jī)可讀代碼可被編譯成最佳匯編代碼,其中鏈接該最佳匯編代碼以生成針對所選擇的架構(gòu)的固件。仿真器可以進(jìn)行固件的循環(huán)精確仿真。該系統(tǒng)可以進(jìn)行固件的動態(tài)評測。該方法包括基于評測后的固件或基于匯編代碼來進(jìn)一步優(yōu)化芯片規(guī)格。該系統(tǒng)可以針對所設(shè)計的芯片規(guī)格自動生成寄存器傳輸級(RTL)代碼。該系統(tǒng)還可以進(jìn)行RTL代碼的綜合以制造硅。該系統(tǒng)的優(yōu)選實(shí)施例的優(yōu)點(diǎn)可以包括以下中的一個或多個。該系統(tǒng)減輕了芯片設(shè)計的問題并使芯片設(shè)計成為簡單過程。這些實(shí)施例使產(chǎn)品開發(fā)過程的關(guān)注點(diǎn)從硬件實(shí)現(xiàn)過程轉(zhuǎn)變回至產(chǎn)品規(guī)格和計算機(jī)可讀代碼或算法設(shè)計。代替束縛于特定硬件選擇,可以在專門針對該應(yīng)用而優(yōu)化的處理器上實(shí)現(xiàn)計算機(jī)可讀代碼或算法。該優(yōu)選實(shí)施例將優(yōu)化處理器連同所有相關(guān)聯(lián)的軟件工具和固件應(yīng)用程序一起自動生成。該過程可以在數(shù)日內(nèi)完成而非如傳統(tǒng)那樣需要數(shù)年來完成。該系統(tǒng)是設(shè)計硬件芯片解決方案的方式的徹底的模式轉(zhuǎn)變。本系統(tǒng)消除了芯片設(shè)計的風(fēng)險并使芯片設(shè)計成為自動過程,由此算法設(shè)計師本身無需具有任何芯片設(shè)計知識就可以直接制作硬件芯片。針對該系統(tǒng)的主要輸入是采用如C或Matla那樣的高級語言的計算機(jī)可讀代碼或算法規(guī)格。使用該系統(tǒng)的多個優(yōu)點(diǎn)可以包括:I)時程(schedule):在芯片設(shè)計周期變?yōu)橐灾転閱挝欢皇且阅隇閱挝粊碛嬃康那闆r下,用戶可以通過使其產(chǎn)品快速地推向市場來打入迅速變化的市場。2)成本:為了實(shí)現(xiàn)芯片而通常需要雇傭的大量工程師變得多余。這樣給使用本系統(tǒng)的公司帶來巨額的成本節(jié)省。
3)最優(yōu)性:使用本系統(tǒng)所設(shè)計的芯片的產(chǎn)品在性能、面積和功耗方面均優(yōu)良。本系統(tǒng)是設(shè)計具有數(shù)字芯片組件的系統(tǒng)時所使用的方法的徹底的模式轉(zhuǎn)變。該系統(tǒng)是根據(jù)以C/Matlab描述的算法來生成數(shù)字硬件的全自動化軟件產(chǎn)品。該系統(tǒng)對于采用諸如C或Matlab等的高級語言來實(shí)現(xiàn)硬件芯片的過程,使用了獨(dú)特方法。簡言之,本系統(tǒng)使芯片設(shè)計成為全自動化軟件過程。
圖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ī)可讀代碼的算法來實(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ī)可讀代碼或算法。這些算法中的一部分算法可以作為IP從第三方或標(biāo)準(zhǔn)開發(fā)委員會來獲得。該算法中的一部分必須作為產(chǎn)品開發(fā)的一部分來開發(fā)。以這種方式,產(chǎn)品規(guī)格102可以進(jìn)一步細(xì)化為可表示為諸如C程序等的程序或諸如Matlab模型等的數(shù)學(xué)模型的計算機(jī)可讀代碼或算法104。此外,產(chǎn)品規(guī)格102還包含諸如成本、面積、功率、工藝類型、庫和存儲器類型等的要求106。將計算機(jī)可讀代碼或算法104和要求106提供至自動IC生成器110。僅基于該代碼或算法104以及施加于芯片設(shè)計的制約,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è)計的問題并使芯片設(shè)計成為簡單過程。該系統(tǒng)使產(chǎn)品開發(fā)過程的關(guān)注點(diǎn)從硬件實(shí)現(xiàn)過程轉(zhuǎn)變回至產(chǎn)品規(guī)格和算法設(shè)計。代替束縛于特定硬件選擇,可以總是在專門針對該應(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è)計部分成為黑盒子。在一個實(shí)施例中,本系統(tǒng)產(chǎn)品可以米用以下作為輸入。 以C/Matlab定義的計算機(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ī)可讀代碼或算法204。此夕卜,產(chǎn)品規(guī)格202還包含諸如成本、面積、功率、工藝類型、庫和存儲器類型等的產(chǎn)品參數(shù)和要求206。將計算機(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)被提供至AOISAG。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)時鐘規(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í)時操作系統(tǒng)(RTOS)。芯片規(guī)格定義了執(zhí)行定制應(yīng)用程序所需的具體的功能單元。還具體地定義了固有的并行性,由此確定了并行使用的單元的數(shù)量。從評測信息提取微觀和宏觀層級的并行性的所有復(fù)雜度,因而利用該知識來設(shè)計芯片規(guī)格。因此,最佳地設(shè)計了芯片規(guī)格,并且芯片設(shè)計不會如在不具有這種評測信息而設(shè)計芯片規(guī)格的情況那樣被過度設(shè)計或設(shè)計不足。在動態(tài)評測期間,收集分支統(tǒng)計數(shù)據(jù),并且基于該信息來最佳地設(shè)計分支預(yù)測機(jī)制。此外,根據(jù)該評測可以得到連續(xù)指令之間的所有相依性檢查,因而對芯片規(guī)格的流水線和所有指令調(diào)度方面進(jìn)行了最佳設(shè)計。芯片規(guī)格可以提供諸如以下等的選項(xiàng):*硬件模塊尋址,允許在不必持續(xù)地測試外包的情況下實(shí)現(xiàn)循環(huán)緩沖器。
*針對數(shù)據(jù)串流化所設(shè)計的存儲器架構(gòu),大量地使用DMA并且期望將代碼寫成知曉高速緩存分層結(jié)構(gòu)和相關(guān)聯(lián)的延遲。*驅(qū)動多個算術(shù)單元可能需要存儲器架構(gòu)支持每個指令周期的若干訪問。*將程序存儲器和數(shù)據(jù)存儲器分開(哈佛(Harvard)架構(gòu)),并且有時對多個數(shù)據(jù)總線進(jìn)行并行訪問。*特殊SMD (單指令、多數(shù)據(jù))運(yùn)算。* 一些處理器使用VLIW技術(shù),因而各指令并行驅(qū)動多個算術(shù)單元。*諸如快速乘法-累加(MAC)等的特殊算術(shù)運(yùn)算。*作為用于計算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è)計存儲器帶寬。*最佳可變/多離散長度指令編碼,以獲得最佳性能并且同時針對給定應(yīng)用程序?qū)崿F(xiàn)非常緊湊的指令占用空間。圖3示出用于自動生成圖1的定制芯片120的示例處理流程。現(xiàn)在轉(zhuǎn)向參考圖3,生成定制產(chǎn)品規(guī)格(302)。此外,定制產(chǎn)品規(guī)格302被進(jìn)一步細(xì)化為可表示為諸如C程序等的程序或者諸如Matlab模型等的數(shù)學(xué)模型的計算機(jī)可讀代碼或算法304。以靜態(tài)方式316和動態(tài)方式318對定制算法304進(jìn)行評測。在架構(gòu)優(yōu)化器單元320中使用通過該評測收集到的統(tǒng)計數(shù)據(jù)。該單元還接收定制規(guī)格302?;竟δ苌善?14確定實(shí)現(xiàn)定制算法304所需要的基本運(yùn)算或執(zhí)行單元?;竟δ苌善?14的輸出還被饋給至架構(gòu)優(yōu)化器320。架構(gòu)優(yōu)化器320配備有來自基本功能生成器的面積、定時和功率信息,從而隨著內(nèi)部實(shí)現(xiàn)分析來使面積、定時和功率最小化?;诩軜?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 — 306 — 308 — 334 — 342 — 322的反饋循環(huán),直到滿足定制規(guī)格為止。這些反饋循環(huán)在無人為干預(yù)的情況下自動發(fā)生,因而自動達(dá)到最佳解決方案。架構(gòu)優(yōu)化器342還基于架構(gòu)平面設(shè)計器336以及綜合和P&R328的反饋。不僅參考應(yīng)用程序評測信息還參考物理布局和布線信息來進(jìn)行架構(gòu)決策。架構(gòu)優(yōu)化是精確的,并且在進(jìn)行所設(shè)計的架構(gòu)的后端設(shè)計的情況下不會發(fā)生意外情況。例如,在架構(gòu)優(yōu)化器選擇使用乘法器單元的情況下,該架構(gòu)優(yōu)化器采用兩個16位操作數(shù)作為輸入并且生成32位結(jié)果。架構(gòu)優(yōu)化器342獲知操作數(shù)的應(yīng)用與來自平面設(shè)計器336和綜合328的可用性結(jié)果之間的確切時間延遲。架構(gòu)優(yōu)化器342還獲知在該乘法器布局和布線在實(shí)際芯片內(nèi)的情況下的確切面積。因而,用于使用該乘法器的架構(gòu)決策不僅基于來自評測數(shù)據(jù)的該乘法器的需求,還基于在面積、時間延遲(還稱為性能)和功率方面的與該乘法器相關(guān)聯(lián)的成本。在另一示例中,為了在性能對定制芯片造成制約的情況下加速該性能,編譯器306在包含可以同時運(yùn)行的多個處理單元的新架構(gòu)中處理在串行處理器上需要長時間來運(yùn)行的程序、代碼或算法,目的是通過將該程序分成多個處理單元能夠并行或以重疊方式處理的多個段來縮短該程序的運(yùn)行時間。前端的附加任務(wù)是尋找并行性計算,并且后端的附加任務(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è)計器的信息(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è)計操作是基于針對定制芯片要執(zhí)行的程序、代碼或算法的分析。在一個實(shí)現(xiàn)中,針對需要長時間在單標(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è)計支持計算單元所需的數(shù)據(jù)帶寬,而不存在過度設(shè)計或設(shè)計不足。架構(gòu)優(yōu)化器342首先識別程序內(nèi)的潛在并列單元,然后對這些并列單元進(jìn)行相依性分析以找出彼此獨(dú)立并且可以同時執(zhí)行的這些段。架構(gòu)優(yōu)化器342識別機(jī)器指令的粒度層級的并行性。例如,在普通的標(biāo)量處理器上添加兩個N-元素向量將一次執(zhí)行一個指令。但在向量處理器上,可以在N個單獨(dú)處理器上執(zhí)行所有N個指令,從而將總時間縮短成略大于執(zhí)行一次添加所需時間的N倍。架構(gòu)優(yōu)化器采用與向量語句等同的順序語句并且轉(zhuǎn)譯成向量機(jī)器指令。允許向量化的條件是源操作數(shù)的元素必須獨(dú)立于結(jié)果操作數(shù)。例如,存在如下代碼。
權(quán)利要求
1.一種用于自動設(shè)計定制集成電路的方法,包括: a.接收所述定制集成電路的規(guī)格,其中所述規(guī)格包括計算機(jī)可讀代碼以及針對所述定制集成電路的一個或多個制約; b.自動生成針對所述計算機(jī)可讀代碼的最適合所述制約的計算機(jī)架構(gòu); c.基于代碼評測數(shù)據(jù)來自動確定指令執(zhí)行序列,并且重新分配或延遲所述指令序列以使操作分散到一個或多個處理塊從而減少熱點(diǎn); d.連續(xù)地評價和優(yōu)化一個或多個因素,其中所述因素包括物理實(shí)現(xiàn)以及寄存器傳輸級即RTL或門控層級綜合以上的架構(gòu)層級的局部和全局面積、定時或功率; e.自動生成用以在所述定制集成電路上自動執(zhí)行所述計算機(jī)可讀代碼的軟件開發(fā)工具包即SDK和相關(guān)聯(lián)的固件; f.針對所述定制集成電路上的所述計算機(jī)可讀代碼來自動生成相關(guān)聯(lián)的測試套件和向量;以及 g.自動綜合所設(shè)計的架構(gòu)并且生成半導(dǎo)體制造所用的所述定制集成電路的計算機(jī)可讀描述。
2.根據(jù)權(quán)利要求1所述的方法,其中,還包括:進(jìn)行所述計算機(jī)可讀代碼的靜態(tài)評測。
3.根據(jù)權(quán)利要求1所述的方法,其中,還包括:進(jìn)行所述計算機(jī)可讀代碼的動態(tài)評測。
4.根據(jù)權(quán)利要求1所述的方法,其中,還包括:基于所述計算機(jī)可讀代碼來選擇架構(gòu)。
5.根據(jù)權(quán)利要求1所述的方法,其中,還包括:基于所述計算機(jī)可讀代碼的靜態(tài)評測和動態(tài)評測來優(yōu)化架構(gòu)。
6.根據(jù)權(quán)利要求1所述的方法,其中,還包括:將所述計算機(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è)計定制集成電路的系統(tǒng),包括: a.用于接收所述定制集成電路的規(guī)格的部件,其中所述規(guī)格包括計算機(jī)可讀代碼以及針對所述定制集成電路的一個或多個制約; b.用于自動生成針對所述計算機(jī)可讀代碼的最適合所述制約的計算機(jī)架構(gòu)的部件; c.用于基于代碼評測數(shù)據(jù)來自動確定指令執(zhí)行序列、并且重新分配或延遲所述指令序列以使操作分散到一個或多個處理塊從而減少熱點(diǎn)的部件; d.用于連續(xù)地評價和優(yōu)化一個或多個因素的部件,其中所述因素包括物理實(shí)現(xiàn)以及寄存器傳輸級即RTL或門控層級綜合以上的架構(gòu)層級的局部和全局面積、定時或功率; e.用于自動生成用以在所述定制集成電路上自動執(zhí)行所述計算機(jī)可讀代碼的軟件開發(fā)工具包即SDK和相關(guān)聯(lián)的固件的部件; f.用于針對所述定制集成電路上的所述計算機(jī)可讀代碼來自動生成相關(guān)聯(lián)的測試套件和向量的部件;以及 g.用于自動綜合所設(shè)計的架構(gòu)并且生成半導(dǎo)體制造所用的所述定制集成電路的計算機(jī)可讀描述的部件。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括:用于進(jìn)行所述計算機(jī)可讀代碼的靜態(tài)評測和動態(tài)評測的部件。
16.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括:用于基于所述計算機(jī)可讀代碼來選擇架構(gòu)的部件。
17.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括:用于基于所述計算機(jī)可讀代碼的評測數(shù)據(jù)來優(yōu)化架構(gòu)的部件。
18.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括編譯器,所述編譯器用于將所述計算機(jī)可讀代碼轉(zhuǎn)換成匯編代碼。
19.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括循環(huán)精確仿真器,所述循環(huán)精確仿真器用于測試所述固件。
20.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,還包括針對所選擇的架構(gòu)的寄存器傳輸級代碼生 成器。
全文摘要
公開了基于算法過程作為輸入并且使用幾乎不需要人為參與的高度自動化工具的定制集成電路的自動設(shè)計。該方法包括接收所述定制集成電路的規(guī)格,其中所述規(guī)格包括計算機(jī)可讀代碼以及針對所述定制集成電路的制約;生成針對所述計算機(jī)可讀代碼的最適合所述制約的計算機(jī)架構(gòu);基于代碼評測數(shù)據(jù)來自動確定指令執(zhí)行序列,并且重新分配或延遲所述指令序列以使操作分散到一個或多個處理塊從而減少熱點(diǎn);連續(xù)地評價和優(yōu)化一個或多個因素,其中所述因素包括物理實(shí)現(xiàn)以及寄存器傳輸級即RTL或門控層級綜合以上的架構(gòu)層級的局部和全局面積、定時或功率;以及自動綜合所設(shè)計的架構(gòu)并且生成半導(dǎo)體制造所用的所述定制集成電路的計算機(jī)可讀描述。
文檔編號G06F17/50GK103098059SQ201180044093
公開日2013年5月8日 申請日期2011年7月11日 優(yōu)先權(quán)日2010年7月13日
發(fā)明者薩蒂許·帕德馬納班, 皮爾斯·吳, 阿南德·潘德倫根, 瑟雷許·凱迪耶拉, 阿南斯·朵巴, 泰克·席基哈拉 申請人:艾爾葛托奇普股份有限公司