專利名稱:集成電路的系統(tǒng)、架構和微架構(sama)表達方式的制作方法
技術領域:
本發(fā)明涉及針對定制集成電路(IC)或專用集成電路(ASIC)的中間表達方式的系統(tǒng)和方法。
背景技術:
隨著電子裝置變得更加用戶友好化,附加于這些電子裝置的特征已經(jīng)增多。例如,在針對嵌入式應用程序的典型硬件產(chǎn)品開發(fā)周期中,進行算法開發(fā)。接著,系統(tǒng)架構師對需要如何在產(chǎn)品中實現(xiàn)這些算法進行劃分以便分析。傳統(tǒng)上,該算法被轉換成接近于硬件的諸如寄存器傳輸語言(RTL)等的低層級中間表達方式。RTL通常用于電子設計行業(yè)以指代硬件描述語言中所使用的編碼類型,其中該編碼類型有效地確保了能夠在諸如FPGA或ASIC等的給定硬件平臺上對代碼模型進行綜合(轉換成實際邏輯函數(shù))。存在許多可用于創(chuàng)建邏輯綜合所用的RTL模塊的硬件描述語言。最為普及的RTL建模語言中的一部分包括System Verilog、Verilog和VHDL。美國專利申請20090144690公開了一種用于將C型編程語言程序轉換成硬件設計的方法,其中該程序是一個或多個處理的算法表達方式。將C型編程語言程序編譯成可綜合硬件描述語言(HDL)設計。編譯器將變量歸類為使用默認存儲器或定制存儲器。該編程語言可以使用ANSI C,并且HDL可以是Verilog寄存器傳輸級語言(RTL)。根據(jù)可綜合HDL設計所生成的硬件裝置可以是專用集成電路(ASIC)或現(xiàn)場可編程門控陣列(FPGA)。然而,RTL仍是硬件的低層級描述。因而,可能難以利用RTL來分析并且隨后優(yōu)化設計。
發(fā)明內容
在一個方面中,一種用于通過以下來自動生成定制集成電路設計即定制IC設計的系統(tǒng)和方法:接收所述定制IC的規(guī)格,所述規(guī)格包括所述定制IC要執(zhí)行的計算機可讀代碼;生成所述定制IC的抽象作為系統(tǒng)、處理器架構和微架構表達方式即SAMA表達方式;將所述SAMA表達方式提供至至少具有架構優(yōu)化視圖、物理設計視圖和軟件工具視圖的數(shù)據(jù)模型;通過迭代地更新所述SAMA表達方式和所述數(shù)據(jù)模型以自動生成針對計算機可讀代碼所獨特定制的滿足一個或多個制約的處理器架構,來優(yōu)化所述處理器架構;以及,將所生成的架構綜合為半導體制造所用的所述定制集成電路的計算機可讀描述。上述方面的實現(xiàn)可以包括以下中的一個或多個。該系統(tǒng)可以根據(jù)指定定制IC的功能的算法、工藝或代碼輸入來在幾乎無人為參與或人為參與最少的情況下自動工作。用戶可以在定制IC上執(zhí)行計算機可讀代碼。數(shù)據(jù)模型是IC的擴展統(tǒng)一功能和物理模型。該數(shù)據(jù)模型可以接收IC的物理原始信息。可以自動生成定制IC運行應用程序代碼所用的軟件工具。這些工具包括編譯器、匯編編譯器、鏈接編譯器、基于循環(huán)的仿真器中的一個或多個。該工具自動生成固件。這些工具可以評測固件并且提供該固件的評測數(shù)據(jù)作為反饋以優(yōu)化架構。該系統(tǒng)可以基于預定的物理制約來迭代地優(yōu)化處理器架構。該系統(tǒng)可以進行計算機可讀代碼的靜態(tài)評測或動態(tài)評測。該系統(tǒng)可以自動生成定制集成電路運行計算機可讀代碼所用的軟件開發(fā)工具包(SDK)。可以將該計算機可讀代碼變換成匯編代碼并且可以鏈接該匯編代碼以生成針對所選擇的架構的固件。該系統(tǒng)可以進行固件的循環(huán)精確仿真??梢曰谠u測后的固件和/或匯編代碼來優(yōu)化該架構。該系統(tǒng)可以針對所選擇的架構、以及如此針對在定時、面積或功率方面得到優(yōu)化的物理設計生成寄存器傳輸級代碼。該系統(tǒng)可以綜合該RTL代碼。在一個實施例中,SAMA可以指定以下中的一個或多個:1.系統(tǒng)a.時鐘b.性能目標c.引腳分配d.外設e.中斷方式f.連接性g.其它2.架構a.片上存儲器b.高速緩存器c.寄存器文件d.存儲器映射e.HW 功能塊f.流水線g.1SA 定義h.其它3.工具a.匯編編譯器設置b.鏈接編譯器變量c.其它4.微架構
a.電源域b.電源門控c.其它。優(yōu)選實施例的優(yōu)點可以包括以下中的一個或多個。SAMA表達方式提供使得容易優(yōu)化處理器架構的硬件的中間抽象?;赟AMA的系統(tǒng)優(yōu)于使規(guī)范化處理和便攜性復雜化的RTL0 SAMA允許先于代碼生成的獨立于機器的全局優(yōu)化。該架構可以使用通常本地工作的簡單快速的代碼生成器。SAMA系統(tǒng)使用起來較為容易,簡化了代碼生成器并且隨后可以以使用RTL代碼無法實現(xiàn)的方式優(yōu)化架構。該系統(tǒng)的優(yōu)選實施例的優(yōu)點可以包括以下中的一個或多個。該系統(tǒng)減輕了芯片設計的問題并使芯片設計成為簡單過程。這些實施例使產(chǎn)品開發(fā)過程的關注點從硬件實現(xiàn)過程轉變回至產(chǎn)品規(guī)格和計算機可讀代碼或算法設計。代替束縛于特定硬件選擇,可以在專門針對該應用而優(yōu)化的處理器上實現(xiàn)計算機可讀代碼或算法。該優(yōu)選實施例將優(yōu)化處理器連同所有相關聯(lián)的軟件工具和固件應用程序一起自動生成。該過程可以在數(shù)日內完成而非如傳統(tǒng)那樣需要數(shù)年來完成。上述自動系統(tǒng)消除了芯片設計的風險并使芯片設計成為自動過程,由此算法設計師本身無需具有任何芯片設計知識就可以直接制作硬件芯片。針對該系統(tǒng)的主要輸入是采用如C或Matlab那樣的高級語言的計算機可讀代碼或算法規(guī)格。
圖1示出用于根據(jù)應用程序代碼或算法來自動制造ASIC的示例工作流程系統(tǒng)。圖2示出SAMA和AS IC之間的關系的示例圖。圖3示出示例數(shù)據(jù)模型。圖4示出利用SAMA表達方式的示例工作流程處理。圖5示出用于使用SAMA來自動生成定制IC的示例系統(tǒng)。
具體實施例方式圖1示出用于根據(jù)應用程序代碼或算法來自動制造ASIC的示例工作流程系統(tǒng)。首先,用戶生成應用程序代碼或算法(110)。接著,將該代碼提供至架構優(yōu)化器112。架構優(yōu)化器112生成針對應用程序代碼所定制的中間硬件表達方式,其中該中間硬件表達方式被稱為作為ASIC的抽象統(tǒng)一表達方式的系統(tǒng)、架構和微架構(SAMA)表達方式120。SAMA120是使得架構優(yōu)化器112能夠優(yōu)化和生成SAMA120中所描述的新架構的高層級輕權值抽象模塊。SAMA120向作為ASIC的擴展統(tǒng)一功能和物理模型的數(shù)據(jù)模型(DM) 130提供信息。DM130例如接收諸如加法器和乘法器等的ASIC的物理原始信息。DM130向工具生成器134提供數(shù)據(jù),而工具生成器134對諸如編譯器、匯編編譯器、鏈接編譯器、基于循環(huán)的仿真器等的一組工具136進行驅動。工具136生成可通過評測工具140進行評測的固件138。該固件的評測數(shù)據(jù)被饋給至架構優(yōu)化器112,以基于諸如功率、面積和定時等的預定物理制約150來優(yōu)化ASIC設計。DM130可以生成符合制約150的RTL代碼132以實現(xiàn)具有提供至架構優(yōu)化器112的定時、面積和功率反饋信息的物理設計160。例如,通用寄存器文件為簡單結構?;谟伤傻墓ぞ呔幾g后的固件的評測,架構優(yōu)化器112可以優(yōu)化寄存器文件的大小并且生成寄存器文件縮小了的新SAMA120以節(jié)省空間和功率。由此得到的新工具可以經(jīng)由另一輪的評測來確認改進?,F(xiàn)在參考圖2,示出SAMA和ASIC之間的關系的示例圖。SAMA200是從諸如C代碼或Mathlab代碼等的算法抽象化得到的硬件的中間表達方式。數(shù)據(jù)模型(DM)210可以以各種設計視圖220來表示SAMA200??梢赃M行這些視圖的分析230,并且在滿足了制約的情況下,可以進行實現(xiàn)240。SAMA用作軟件編譯和硬件綜合之間的過渡層。這種過渡層意圖利用編譯器工具流中可用的優(yōu)化,并且還對低層級綜合器提供自由度,以探索針對專用實現(xiàn)的選項。在一個實施例中,SAMA可以指定以下內容中的一個或多個。1.系統(tǒng)a.時鐘b.性能目標c.引腳分配d.外設e.中斷方式f.連接性g.其它2.架構a.片上存儲器b.高速緩存器c.寄存器文件d.存儲器映射e.HW 功能塊f.流水線g.1SA 定義h.其它3.工具a.匯編編譯器設置b.鏈接編譯器變量c.其它4.微架構a.電源域b.電源門控c.其它。圖3示出示例數(shù)據(jù)模型280。DM280可用于生成應用程序的各種視圖。例如,架構優(yōu)化器視圖282提供諸如定時、面積、功率效率等的架構組成信息,以使得該優(yōu)化器可以使設計最適合制約??梢陨山鉀Q諸如空間/大小要求等的物理制約的物理設計視圖284。軟件工具視圖286可以充分利用DM280以針對要使用的軟件提供ISA和架構制約。還可以根據(jù)DM280生成其它視圖。在一個實施例中,算法設計師生成用于解決應用問題的計算機可讀代碼。代替手動IC設計,該系統(tǒng)采用代碼并且分析該代碼或算法。接著,該系統(tǒng)基于代碼來自動生成最佳架構。該架構以SAMA并且連同數(shù)據(jù)模型一起來表示,該架構可以通過一次或多次迭代而進行優(yōu)化。接著,IC制造設備可以制造該定制1C,并且可以在人為參與最小或無需人為參與的情況下針對算法來優(yōu)化由此產(chǎn)生的1C。現(xiàn)在參考圖4,示出使用SAMA的示例工作流程。該工作流程通過分析以如C或Matlab那樣的高級語言所指定的算法而開始(10)。接著,該系統(tǒng)生成針對算法或代碼所定制的最佳架構的第一設計(12)。所設計的架構以SAMA來表示(14)。該系統(tǒng)在數(shù)據(jù)模型中應用原始物理信息和SAMA信息(16)。針對該數(shù)據(jù)模型自動生成軟件工具(18)。然后,該系統(tǒng)自動生成固件并且評測該固件(20)。該系統(tǒng)迭代架構設計,直到滿足制約為止(22)。然后,該系統(tǒng)制造定制IC(24)并且用戶可以在該定制IC上運行固件(26)。在一個實施例中,架構可以自動設計可變寬度指令集編碼方式??梢允褂脽o損壓縮方式來對在可變寬度指令集上構成的程序代碼進行進一步壓縮,以節(jié)省存儲空間。此外,在選擇這種壓縮方式的情況下,還自動設計相應的解壓縮方式,以使得對這些指令進行動態(tài)譯碼并發(fā)出這些指令。該系統(tǒng)可以使用可變長度指令集來對該指令集進行最佳編碼??梢砸宰罴训臎]有限制于特定寬度的任何指令集寬度來對各指令進行編碼。這樣使得與傳統(tǒng)的編碼方式相比能夠支持更多的指令,并且將提供顯著的性能優(yōu)勢。此外,這些指令可以具有非常精細的粒度,并且可以在一次程序存儲器訪問中包括多個指令。這將增加每周期要發(fā)出的可提取指令的數(shù)量。一旦指令集和架構是針對應用程序代碼/算法而定制設計的,則該系統(tǒng)在無需人為參與的情況下自動生成定制集成電路,由此縮短了產(chǎn)品開發(fā)時間并降低了成本。使用自動生成的軟件開發(fā)工具包(SDK)和自動生成的固件,該定制IC可以高效地運行代碼/算法。這些實施例使產(chǎn)品開發(fā)過程的關注點從硬件實現(xiàn)過程轉變回至產(chǎn)品規(guī)格和計算機可讀代碼或算法設計。代替束縛于特定硬件選擇,可以在專門針對該應用而優(yōu)化的處理器上實現(xiàn)計算機可讀代碼或算法。該優(yōu)選實施例將優(yōu)化處理器連同所有相關聯(lián)的軟件工具和固件應用程序一起自動生成。該過程可以在數(shù)日內完成而非如傳統(tǒng)那樣需要數(shù)年來完成。圖5示出用于自動生成定制IC的示例系統(tǒng)。圖5的系統(tǒng)支持如下的自動生成,其中該自動生成用于針對所選擇的目標應用程序,使用可編程硬件解決方案的指令集壓縮和可變寬度編碼來自動生成具有最佳指令集的架構。該目標應用程序的規(guī)格通常通過采用如C、Matlab、SystemC、Fortran、Ada或任何其它語言那樣的高級語言表示為計算機可讀代碼的算法來實現(xiàn)。該規(guī)格包括對目標應用程序的描述,并且還包括諸如期望成本、面積、功率、速度、性能和硬件解決方案的其它屬性等的一個或多個制約。在圖5中,定制IC生成產(chǎn)品規(guī)格102。通常,存在獲得了期望產(chǎn)品的所有主要功能的初始產(chǎn)品規(guī)格。根據(jù)該產(chǎn)品,算法專家識別針對該產(chǎn)品所需的計算機可讀代碼或算法。這些算法中的一部分算法可以作為IP從第三方或標準開發(fā)委員會來獲得。該算法中的一部分必須作為產(chǎn)品開發(fā)的一部分來開發(fā)。以這種方式,產(chǎn)品規(guī)格102可進一步細化為可表示為諸如C程序等的程序或諸如Mathlab模型等的數(shù)學模型的計算機可讀代碼或算法104。此外,產(chǎn)品規(guī)格102還包含諸如成本、面積、功率、工藝類型、庫和存儲器類型等的要求106。將計算機可讀代碼或算法104和要求106提供至自動IC生成器111。僅基于該代碼或算法104以及施加于芯片設計的制約,IC生成器111在人為參與較少或無需人為參與的情況下自動生成如下輸出,其中該輸出包括⑶S文件113、用以運行IC的固件115、軟件開發(fā)工具包(SDK) 116和/或測試套件118。⑶S文件113和固件115用于制造定制芯片121。本系統(tǒng)減輕了芯片設計的問題并使芯片設計成為簡單過程。該系統(tǒng)使產(chǎn)品開發(fā)過程的關注點從硬件實現(xiàn)過程轉變回至產(chǎn)品規(guī)格和算法設計。代替束縛于特定硬件選擇,可以總是在專門針對該應用而優(yōu)化的處理器上實現(xiàn)算法。該系統(tǒng)將該優(yōu)化處理器連同所有相關聯(lián)的軟件工具和固件應用程序一起自動生成。該整個過程可以在數(shù)日內完成而非如今需要數(shù)年來完成。簡言之,該系統(tǒng)使產(chǎn)品開發(fā)的數(shù)字芯片設計部分成為黑盒子。在一個實施例中,本系統(tǒng)可以采用以下作為輸入。以C/Matlab定義的計算機可讀代碼或算法所需的外設面積目標功率目標余量目標(內置有多少開銷以用于未來的固件更新和復雜度的增加)過程選擇標準單元庫選擇測試能力掃描該系統(tǒng)的輸出可以是數(shù)字硬宏以及所有相關聯(lián)的固件。針對該數(shù)字硬宏而優(yōu)化的軟件開發(fā)工具包(SDK)也是自動生成的,由此在不必改變處理器的情況下實現(xiàn)未來針對固件的升級。該系統(tǒng)針對任何所選擇的目標應用程序自動生成完整且最佳的硬件解決方案。盡管常見的目標應用程序存在于嵌入式應用程序領域,但這些目標應用程序并非必須局限于此。例如,接著將論述支持自動芯片設計系統(tǒng)的計算機。該計算機優(yōu)選包括通過CPU總線所連接的處理器、隨機存取存儲器(RAM)、程序存儲器(優(yōu)選為諸如閃速ROM等的可寫式只讀存儲器(ROM))和輸入/輸出(I/O)控制器。該計算機可以可選地包括連接至硬盤和CPU總線的硬盤驅動器控制器。硬盤可用于存儲諸如本發(fā)明等的應用程序以及數(shù)據(jù)??蛇x地,應用程序可以存儲在RAM或ROM中。I/O控制器經(jīng)由I/O總線連接至I/O接口。I/O接口經(jīng)由諸如串行鏈路、局域網(wǎng)、無線鏈路和并行鏈路等的通信鏈路來以模擬或數(shù)字形式接收和發(fā)送數(shù)據(jù)??蛇x地,顯示器、鍵盤和指示裝置(鼠標)也可以連接至I/O總線??蛇x地,對于I/O接口、顯示器、鍵盤和指示裝置,可以使用單獨的連接(單獨的總線)。可以對可編程的處理系統(tǒng)進行預編程,或者可以通過從其它源(例如,軟盤、CD-ROM或其它計算機)下載程序來對該可編程的處理系統(tǒng)進行編程(和重新編程)。各計算機程序有形地存儲在通用或專用的可編程計算機能夠讀取的機器可讀存儲介質或裝置(例如,程序存儲器或磁盤)中,用于在計算機讀取該存儲介質或裝置以進行這里所述的過程的情況下配置和控制該計算機的操作。本發(fā)明的系統(tǒng)還被視為嵌入配置有計算機程序的計算機可讀存儲介質,其中如此配置成的存儲介質使得計算機以特定和預定方式操作以進行這里所述的功能。
這里已經(jīng)相當詳細地說明了本發(fā)明,從而符合專利法規(guī)并且向本領域技術人員提
供應用新穎原理并根據(jù)需要構造和使用這些專用組件所需的信息。然而,應當理解,可以利
用具體不同的設備和裝置來執(zhí)行本發(fā)明,并且可以在沒有背離本發(fā)明本身的范圍的情況下
實現(xiàn)針對設備細節(jié)和操作過程這兩者的各種修改。附件——某本架構的示例SAMA描沭-假定任何兩個流水級之間的旁路,架構優(yōu)化器削減這些旁路
權利要求
1.一種用于自動生成定制集成電路設計即定制IC設計的方法,包括: a.接收定制IC的規(guī)格,所述規(guī)格包括所述定制IC要執(zhí)行的計算機可讀代碼; b.生成所述定制IC的抽象作為系統(tǒng)、處理器架構和微架構表達方式即SAMA表達方式; c.將所述SAMA表達方式提供至至少具有架構優(yōu)化視圖、物理設計視圖和軟件工具視圖的數(shù)據(jù)模型; d.通過迭代地更新所述SAMA表達方式和所述數(shù)據(jù)模型以自動生成針對所述計算機可讀代碼所獨特定制的滿足一個或多個制約的處理器架構,來優(yōu)化所述處理器架構;以及 e.將所生成的架構綜合為半導體制造所用的所述定制IC的計算機可讀描述。
2.根據(jù)權利要求1所述的方法,其中,還包括:在所述定制IC上執(zhí)行所述計算機可讀代碼。
3.根據(jù)權利要求1所述的方法,其中,所述數(shù)據(jù)模型包括所述定制IC的擴展統(tǒng)一功能和物理模型。
4.根據(jù)權利要求1所述的方法,其中,所述數(shù)據(jù)模型接收與所述定制IC有關的物理原始信息。
5.根據(jù)權利要求1所述的方法,其中,還包括:生成軟件工具。
6.根據(jù)權利要求5所 述的方法,其中,所述工具包括編譯器、匯編編譯器、鏈接編譯器、基于循環(huán)的仿真器中的一個或多個。
7.根據(jù)權利要求6所述的方法,其中,所述工具自動生成固件。
8.根據(jù)權利要求7所述的方法,其中,還包括:自動評測所述固件并且提供所述固件的評測數(shù)據(jù)作為反饋以優(yōu)化所述架構。
9.根據(jù)權利要求1所述的方法,其中,還包括:基于預定的物理制約來優(yōu)化所述處理器架構。
10.根據(jù)權利要求1所述的方法,其中,還包括:進行所述計算機可讀代碼的靜態(tài)評測或動態(tài)評測。
11.根據(jù)權利要求1所述的方法,其中,還包括:自動生成所述定制IC運行所述計算機可讀代碼所用的固件或軟件開發(fā)工具包即SDK。
12.根據(jù)權利要求1所述的方法,其中,還包括:將所述計算機可讀代碼編譯成匯編代碼。
13.根據(jù)權利要求8所述的方法,其中,還包括:鏈接匯編代碼以生成針對所選擇的架構的固件。
14.根據(jù)權利要求8所述的方法,其中,還包括:進行所述固件的循環(huán)精確仿真。
15.根據(jù)權利要求10所述的方法,其中,還包括:進行固件的靜態(tài)評測或動態(tài)評測。
16.根據(jù)權利要求11所述的方法,其中,還包括:基于評測后的固件來優(yōu)化所述架構。
17.根據(jù)權利要求8所述的方法,其中,還包括:基于匯編代碼來優(yōu)化所述架構。
18.根據(jù)權利要求1所述的方法,其中,還包括:針對所選擇的架構來生成寄存器傳輸級代碼即RTL代碼。
19.根據(jù)權利要求18所述的方法,其中,還包括:針對在定時、面積或功率方面得到優(yōu)化的物理設計生成所述RTL代碼。
20.根據(jù)權利要求11所述 的方法,其中,還包括:進行RTL代碼的綜合。
全文摘要
公開了一種用于通過以下來自動生成定制集成電路設計即定制IC設計的系統(tǒng)和方法接收所述定制IC的包括所述定制IC要執(zhí)行的計算機可讀代碼的規(guī)格;生成所述定制IC的抽象作為系統(tǒng)、處理器架構和微架構表達方式即SAMA表達方式;將所述SAMA表達方式提供至至少具有架構優(yōu)化視圖、物理設計視圖和軟件工具視圖的數(shù)據(jù)模型;通過迭代地更新所述SAMA表達方式和所述數(shù)據(jù)模型以自動生成針對計算機可讀代碼獨特定制的滿足一個或多個制約的處理器架構,來優(yōu)化所述處理器架構;以及將所生成的架構綜合為半導體制造所用的所述定制集成電路的計算機可讀描述。前述可以在無需人為參與或人為參與最少的情況下實現(xiàn)。
文檔編號G06F9/455GK103098026SQ201180044097
公開日2013年5月8日 申請日期2011年7月11日 優(yōu)先權日2010年7月13日
發(fā)明者皮爾斯·吳, 瑟雷許·凱迪耶拉, 薩蒂許·帕德馬納班 申請人:艾爾葛托奇普股份有限公司