TWI427496B - 製造積體電路的模型的方法和系統 - Google Patents
製造積體電路的模型的方法和系統 Download PDFInfo
- Publication number
- TWI427496B TWI427496B TW095122324A TW95122324A TWI427496B TW I427496 B TWI427496 B TW I427496B TW 095122324 A TW095122324 A TW 095122324A TW 95122324 A TW95122324 A TW 95122324A TW I427496 B TWI427496 B TW I427496B
- Authority
- TW
- Taiwan
- Prior art keywords
- tree
- integrated circuit
- model
- target
- plu
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Description
本發明之實施例大體上係關於積體電路之電腦輔助設計,且更具體言之係關於自一共用資料庫產生各種模型。
習知之積體電路的電腦輔助設計使用不同之碼資料庫來產生該積體電路之各種模型。需要顯著數目之工時及機時來校驗不同模型係正確的。舉例而言,通常由工程小組寫成之積體電路的架構模型用於定義功能要求。接著通常由另一工程小組生產積體電路之暫存器轉移層級(RTL)模型,且對照架構模型來校驗RTL模型之功能性。亦可開發一積體電路之週期精確效能模型來調整架構模型及RTL模型。因為各個模型係使用不同語言來開發的,所以各個模型之校驗對於適當確保所製造之積體電路的功能很關鍵。然而,各個模型之校驗亦耗時,例如通常需要寫出校驗測試台及測試及寫出正式校驗測試台及判定。
因此,需要一種可用於產生一自其可產生積體電路之各種模型的共用資料庫之高階語言。
本發明涉及一種用於設計並產生積體電路之新的系統及方法。一高階語言用於建立積體電路,其包括產生效能模擬、功能模型、定義該積體電路之可合成RTL碼及校驗環境。該高階語言或該高階語言之子語言可用於產生用於特定功能性之定製電腦邏輯單元的模板。高階語言及編譯程式允許優化功率節約及定製之電路布局,以產生具有經改良之每瓦特功率消耗的效能之積體電路。
本發明之一種用於設計積體電路的方法之各種實施例包括自以高階語言寫成之原始碼產生一表示積體電路之共用資料庫。該高階語言用於指定可程式邏輯單元,其中該可程式邏輯單元之一完整表示包括於共用資料庫中。產生一由該等可程式邏輯單元中之一個指定的模板以用於一以高階語言或子語言寫成之可定製邏輯單元,其中該模板包括至及自該可定製邏輯單元的介面之表示。優化表示積體電路的共用資料庫之一部分以產生一特定目標樹,其中該特定目標樹對應於積體電路之各種目標模型中的至少一個並包括該可定製邏輯單元之一表示。
本發明之各種實施例包括一儲存使一計算裝置產生積體電路之各種最終目標模型的指令之電腦可讀媒體。該電腦可讀媒體包括一第一指令組、一第二指令組及一第三指令組。該第一指令組在執行時自以高階語言寫成之原始碼產生表示積體電路的共用資料庫之第一部分,其中該第一指令組指定可程式邏輯單元。該第二指令組在執行時自以高階語言寫成之原始碼產生表示積體電路的共用資料庫之第二部分,其中該第二指令組指定可定製邏輯單元。該第三指令組在執行時優化表示積體電路的共用資料庫之一部分以產生一特定目標樹,其中該特定目標樹對應於積體電路之各種最終目標模型中的至少一個。
在以下說明中,陳述許多特定詳情以更透徹地理解本發明。然而,對於熟習此項技術者顯而易見,可不以一或多個此等特定詳情來實施本發明。在其它實例中,並未描述熟知之特徵以避免使本發明模糊。
新的高階語言能夠產生大部分積體電路,包括積體電路之各種模型,諸如效能模型、功能模型、仿真模型。高階語言在編譯時產生一架構樹(A樹),其為一自其產生其它樹-M樹及R樹之語義修飾的原始樹。M樹為一表示積體電路之共用資料庫,優化程式可使用其來產生諸如效能模擬模型、軟體模板及功能模擬環境之特定模型。在本發明之某些實施例中,儘管M樹可包括時間次序之相依性(例如狀態機及其類似物),但M樹並未包括詳盡之時序資訊。R樹為一自M樹產生之共用資料庫。
與M樹不同,R樹時序精確且包括基於晶片之實體布局的反向演繹資訊。R樹表示積體電路,優化程式可使用其來產生特定模型,諸如可合成RTL碼、低功率結構、實體設計平面佈置及布局及半正式校驗環境。藉由使用共用資料庫來產生晶片及環境之各種不同模型縮短了晶片設計時間。用於產生A樹、M樹、R樹及特定模型之優化程式及編譯程式可用於產生其它晶片,允許程式師以高階語言有效並快速地寫出原始碼以產生比手動或使用不同資料庫來產生不同模型具有更大可靠性且在更短之時段的各個晶片。該共用資料庫亦提供用於晶片設計之中心儲存庫,其在單一設計環境中統一原始碼及所產生之資料庫。
圖1A說明一根據本發明之一或多個態樣使用高階語言來產生積體電路之各種特定模型(例如晶片)的例示性方法之流程圖。在步驟100,用於積體電路之原始碼使用高階語言來寫成。結合圖1C描述了用於一單元之原始碼的一實例。
在步驟105,將原始碼剖析為一模型化原始碼之中間樹格式,其稱作A樹。結合圖2更詳盡地描述了步驟105。在步驟110,如結合圖3A進一步所述,召用各種PLU產生器來將A樹編譯為稱作M樹之另一中間樹格式。在步驟115,如結合圖4A及圖4B所述,特定目標之優化程式用於產生經優化之M樹以產生相應之目標模型。
在步驟120,如結合圖3B進一步所述,將M樹與時序資訊組合以產生稱作R樹之另一中間樹格式。在步驟125,如結合圖4C、4D、4E及4F所述,特定目標優化程式用於產生經優化之R樹來產生相應之目標模型。
M樹及R樹各模型化模組、介面及邏輯且在組合時為產生所有最終目標(例如模型、模板、環境及其類似物)所需之功能性的超集。M樹及R樹為一抽象化最終目標碼格式之詳情的中間碼樹。M樹及R樹包括用於建構模組、介面及模組內之邏輯的公用程式。
與R樹不同,M樹並不包括用於簡化PLU及CLU產生器之週期精確的時序資訊,其中該等產生器處理M樹以產生並不需要週期精確之資訊的模型及環境。基於來自可影響自R樹所產生之特定目標模型之晶片的實體布局之反向演繹資訊以由M樹及時序資訊產生R樹。當基於晶片布局之時序資訊不可用時,例如當產生用於第一時間之R樹時,預設時序資訊用於產生R樹。或者,可使用使用者指定之時序或反向演繹合成資訊來替代來自實體布局之反向演繹資訊或除來自實體布局之反向演繹資訊外可使用使用者指定之時序或反向演繹合成資訊。
相比而言,M樹並未受晶片之實體布局影響且因此並未接收反向演繹資訊。在步驟120,召用優化程式以編譯M樹及R樹之部分並產生最終目標。熟習此項技術者將瞭解,組態為執行圖1A之方法步驟之任意系統或其等價物處於本發明之範疇內。
圖1B說明在根據本發明的一或多個態樣執行圖1A所示之方法步驟時由高階語言產生來產生積體電路之各種特定模型的系統組件。如先前所述,用於積體電路之原始碼130使用高階語言來寫成。A樹資料庫135由原始碼130產生。M樹資料庫140由A樹資料庫135產生。M樹資料庫140可包括回指A樹資料庫135中之節點的節點,以減小冗餘並確保該碼在M樹資料庫140與A樹資料庫135之間一致。在本發明之一實施例中,一基礎C++類用於實施節點遍曆。對於各個樹資料庫,使用一與其它樹資料庫中之節點在不同數值空間之"節點種類"。衍生C++類增強對應於特定樹之節點的遍曆。
R樹資料庫142自M樹資料庫140產生。R樹資料庫142可包括回指M樹資料庫140中之節點的節點,以減小冗餘並確保該碼在M樹資料庫140與R樹資料庫142之間一致。特定樹及模型145自M樹資料庫140及R樹資料庫142產生。來自特定樹及模型145之諸如實體布局模型的實體特性可併入R樹資料庫142中以改良特定樹及模型145之效能及/或晶片面積結果。
高階語言之一特徵為其將範例與計算分離。範例與用於諸如資料移動及臨時儲存之相對通用功能的晶片基礎結構有關。各種範例可用於各個特定晶片且範例通常對於各個晶片具體寫出,即使其實質上與用於先前晶片之彼等範例相同。相比而言,計算並不通用且時間通常表示唯一之演算法及處理能力。範例可由高階語言自動產生,而計算可由程式師寫成。在本發明之某些實施例中,高階語言之子語言可用於寫出計算或產生器。
一由高階語言產生之晶片包括來自兩不同類之單元、範例邏輯單元(PLU)及計算邏輯單元(CLU)。PLU由高階語言指定且可跨越晶片中之一或多個功能單元或實體單元。可自動產生PLU邏輯及相關環境來提供M樹資料庫中之PLU的完整表示。可自動寫出CLU,以插入自動產生之PLU包裹,例如CLU模板。CLU通常執行定義良好之功能且可為數十行碼。所產生之PLU包裹在PLU與CLU之間提供框架及精確之時序。程式師可寫出用於CLU之碼並自動產生用於測試CLU之獨立校驗環境。所產生之PLU包裹允許CLU在寫出CLU之特定碼前用於模擬模型中。此外,由於程式師並未寫用於介面協定之碼(因為其包括於所產生之PLU包裹中),所以減小了程式師引入之錯誤。一旦程式師已校驗所產生之CLU環境內的CLU碼之功能性,則CLU將在包括CLU之環境中適當起作用。
傳統上,晶片設計需要程式師對被認為係PLU及CLU之單元編碼。然而,一旦完成晶片設計,則由於該碼係為將類CLU功能性與類PLU功能性混合之特定設計而定製,所以很難提取可重新使用之類PLU功能性之共用部分。當使用高階語言時,程式師可將其時間集中於將特定CLU編碼及可重新使用優化程式之開發以產生用於CLU之PLU及PLU包裹。
CLU之實例包括在一或多個時脈週期執行之功能,諸如位址轉譯器、仲裁器、算術資料路徑、資料格式轉換器、有限狀態機、多工器、封包括展器或其類似物。CLU通常由一晶片內之單一單元使用且通常對於相同生產線外之其它晶片不可重新使用。CLU通常位於一布局分割內且傾向於依據晶粒面積而更緊密,且因此並未在實體設計期間衝擊布局權衡。
CLU程式師可校驗所產生之PLU包裹內的CLU之功能性。在某些狀況下,CLU程式師可使用自檢測試來證實CLU。舉例而言,自檢測試可用於確保位址轉譯器CLU具有良好的負載平衡且無混淆。相似地,對於數學功能CLU,自檢測試可用於確保以最小之捨入誤差產生平滑功能。CLU模板在較大之晶片層級環境中適當起作用且無需由CLU程式師來校驗。除指定介面外,所產生之PLU包裹提供一用於CLU之嚴格時序框架。在設計方法之早期,可藉由CLU晶粒面積之估計來使用CLU模板,以開始用於晶片之實體設計方法。在實體設計期間,將協商時序預算,或將在PLU與CLU之間進行時序與面積權衡。
PLU可在晶片之不同部分重新使用,但其通常具有可定製或可組態之部分,可能包括PLU內之一或多個CLU。PLU可包括一或多個介面且各個介面可傳輸一或多個類型之封包。封包指定PLU或CLU之一介面且隨後轉譯為一與積體電路內之一實體導線相關聯的訊號。如本文進一步所述,以高階語言定義多週期封包,且在設計方法之隨後點尤其由PLU及CLU產生器將其自動劃分為清楚的週期。該劃分較佳地基於實體設計資訊或指定介面頻寬值之效能約束。
與CLU不同,PLU通常跨越晶片上之多個實體單元,其可能跨越晶片上之所有實體單元。相似地,PLU通常跨越晶片上之多個布局分割,且因此可對晶片之布局具有顯著衝擊。PLU通常不執行功能,但反而移動或臨時儲存所接收之封包。舉例而言,PLU可執行輸入佇列、仲裁、延遲時間緩衝、快取、對效能統計資料進行監視、儲存可程式值或其類似物。PLU亦可建構諸如PCI-E(周邊組件介面表示)及其類似物之工業標準介面。
優化程式用於基於M樹或R樹之一部分來產生PLU。舉例而言,優化程式可由程式師寫成以產生先進先出(FIFO)記憶體。可使用優化程式來產生各種模型,諸如RTL模型、功能模型(F模型)、仿真模型及其類似物。同樣地,亦可產生各種環境,尤其校驗環境。所產生之校驗環境用於證實優化程式適當起作用,即產生正確模型,而並非產生校驗環境來比較在不同模型之間的預期結果,使得由優化程式產生之模型構造正確。當CLU用於PLU內時,一產生可識別資料模式之簡單CLU可被實際CLU替代以校驗產生PLU之優化程式。程式師校驗一可使用參數來組態以產生許多不同PLU之優化程式,而並非校驗各個特定PLU。舉例而言,產生優化程式之FIFO可包括用於多個時脈、各種資料寬度、各種深度、可測試性選項及其類似物之參數。
由PLU執行之功能由於其不確定性通常比由CLU執行之功能PLU更難校驗。因此,產生PLU係有益的,以開發一用於若干晶片設計之可重新使用PLU產生器而非手動寫碼來執行相似之功能。使用PLU產生器藉由減少花費於設計及手動寫碼之校驗上的時間而改良效率。
亦可正式校驗PLU,即藉由插入用於輸入及輸出之判定語句並接著以分段之方式經正式校驗工具來運行RTL模型來數學證明RTL模型正確。具體言之,可在PLU之下游部分前正式校驗PLU之上游部分。PLU之下游部分可使用來自上游部分之輸出約束作為其輸入約束。用於此分段正式校驗之約束可對於PLU之各個部分或整個PLU自動產生。
由產生器產生之PLU的共用屬性包括一全域識別並因此適當連接至一功能及實體重設樹之重設訊號。亦可包括一指示PLU何時不在處理資料的閒置訊號。PLU亦可具有多個時脈域,在不同時脈域之間具有非同步邊界。可基於各個PLU介面之實體設計約束來指定或選擇各種介面協定。舉例而言,可能之介面協定包括一請求/忙碌協定或一有效/信用協定。該請求/忙碌協定指定PLU呈現一封包(請求=1),在忙碌=0之時脈週期期間將該封包傳送至接受者。該有效/信用協定指定PLU在將封包呈現至接受者前必須自接受者接收一信用。使用有效/信用協定之介面可按需要基於實體設計約束使用高速原始同步傳送來實施。介面是否為原始同步、有效/信用、請求/忙碌或其類似物與程式師無關,因此協定之選擇通常在晶片之實體設計模型之產生期間進行且可基於介面需要在晶片上行進之距離。
用於PLU或CLU之輸入封包可置於一或多個虛擬通道中,且多線輸入FIFO記憶體模型可各別由PLU或CLU產生器自動產生。專用槽或共用槽分佈之規格可使用高階語言來程式化。向虛擬通道之指派可例如基於諸如模板分割數目之封包欄位的最低有效位元(LSB)而為靜態的,或基於一列及組的記憶體頁之組合而為動態的。可依據特定類型之封包的數目來指定用於PLU或CLU之輸入FIFO記憶體。或者,可基於同步或非同步傳送延遲時間甚至包括基於實體設計資訊之中繼器(若需要)來自動確定輸入FIFO記憶體之大小。PLU或CLU可回應輸入封包而輸出可停止、不可停止或基於來自CLU之信用訊號的資料。輸入封包可藉由接收PLU或CLU立即被消耗或儲存於諸如單或多線FIFO記憶體、快取記憶體或其類似物之儲存資源中。或者,輸入封包可經一組態以在儲存前執行資料過濾功能的CLU來傳遞。
高階語言或高階語言之子語言允許用於PLU及CLU內之輸入快取記憶體的參數之規格。此等參數可指定但不限於(i)相關性,例如直接映射、固定、全部、組之數目、分區,(ii)資料一致性機制,例如回寫、寫透或唯讀,或(iii)行置換演算法,例如最近最少使用(LRU)、最近配置最少(LRA)或使用CLU定製。諸如無效政策、回寫清除及替換行或整個快取記憶體之特定操作亦可使用參數來指定。快取記憶體標記查找機制可自動產生或使用CLU來定製。
如先前所述,可設計PLU產生器以指定諸如PCI-E之工業標準介面。該PLU產生器亦可使用參數來組態以指定一數目之字組路徑、一數目之虛擬通道,而不管虛擬通道是否包括讀取返回資料排序、一最大數目之用於虛擬通道的未處理讀取或一數目之點對點再映射暫存器組。亦可處理PLU以產生一功能、效能或其它模型。
相似地,可設計PLU產生器以指定主介面、記憶體介面、記憶體管理單元或其類似物。可使用參數來組態用於主介面之PLU產生器以指定主處理器、讀取及寫入FIFO記憶體、控制暫存器、專用主處理器寫入虛擬通道、一數目之推入緩衝器、一數目之直接記憶體存取(DMA)引擎或執行個體阻塞處理之深度。可使用參數來組態用於記憶體介面之PLU產生器以指定記憶體組態及記憶體類型。可使用參數來組態用於記憶體管理單元之PLU產生器以指定一數目之用戶端及特定用戶端要求,例如對各個用戶端之最大數目的未處理請求、是否應結束未對準之請求或對於無序返回是否需要再排序緩衝及其類似物。
PLU與CLU內容可交換,其意指PLU中在任意時脈週期內之資料可掃描入或出PLU或CLU。諸如時脈閘控之功率節約特徵亦可包括於PLU及CLU中。亦可自動產生用於PLU及CLU之效能監視訊號且可將其自動投送至功率監視控制單元。與手動寫入各個PLU相比(其由於各個特徵被程式師不同解釋而易於出現錯誤),將此等特徵實施於PLU產生器及CLU模板產生器中確保特徵對各個PLU及CLU正確地起作用。此外,排程約束通常導致包括較少之功率管理優化。使晶片實施及功率優化自動化產生更有效且成本可能更低之裝置。
邏輯單元(LU)包括PLU、CLU及低層級LU之集合。其可為其它LU之用戶端或伺服器。圖1C為一根據本發明之一或多個態樣以高階語言表示之例示性邏輯單元Niso_hub 150之示意代表圖。Niso_hub 150與10個用戶端、FE 155、DA 160、SCC 165、主機195、Cniso 183、Dniso 180、流175、WID 170、MPEG 185及Hostnb 190建立介面。Niso_hub 150接收nvclk時脈輸入。用戶端為使用高階語言定義之邏輯單元。各個用戶端介面可包括此等封包:xx2fb、fb2xx_ack、fb2xx_rdat及fb2xx_flush_resp。存在本文將進一步描述用於指定該等封包之例外的機制。表1所示之碼建立Niso_hub 150之介面。藉由說明,使用高階語言來定義該碼。然而,可使用其它語言來定義該功能。
表2所示之碼指定用於Niso_hub 150之介面的xx2fb封包,其中fb_op_t為一所列舉之3位元欄位。該最終行指定封包之各個欄位的位元寬度,例如op、rd、ctx_dma_idx、adr、subid、wid、sz、alom及wdat。藉由說明,使用高階語言來定義該碼。然而,可使用其它語言來定義該功能。
表3所示之碼指定用於Niso_hub 150之介面的fb2xx_ack、fb2xx_flush及fb2xx_rdat封包。此等封包各個回應xx2fb封包且定義特定回應。舉例而言,當xx2fb封包中之op欄位匹配FB_OP_FLUSH時,判定fb2xx_flush_resp之flush_completed欄位。相似地,當判定xx2fb封包中之rd欄位時,將相應fb2xx_rdat封包中之subid欄位設定為等於xx2fb封包之subid欄位且相應fb2xx_rdat封包之rdat欄位(返回用於讀取操作之資料)為sz+1週期長且每週期1<<(5+wid)位元寬。藉由說明,使用高階語言來定義該碼。然而,可使用其它語言來定義該功能。
表4所示之碼指定用於FE 155之指定xx2fb封包介面的例外。舉例而言,xx2fb封包之op欄位可不具有一所列舉之對應於FB_OP_BIND_PD之值且ctx_dma_idx欄位可僅具有介於0與7之間的值(包括0及7)。藉由說明,使用高階語言來定義該碼。然而,可使用其它語言來定義該功能。
表5所示之碼指定fb2xx_flush_resp封包未由WID 170支持且指定對WID 170之xx2fb封包介面的例外。舉例而言,xx2fb封包之op欄位可不具有一對應於FB_OP_BIND_PD、FB_OP_BIND_INST_CLK_PTR或FB_OP_FLUSH之列舉之值,ctx_dma_idx欄位必須具有一為0之值,且wid欄位必須具有一為2之值。Subid欄位自8位元增至l0位元,且Wdat欄位自256位元減至128位元。藉由說明,使用高階語言來定義該碼。然而,可使用其它語言來定義該功能。
表6所示之碼指定對流175之xx2fb封包介面的例外。舉例而言,xx2fb封包之op欄位可不具有對應於FB_OP_BIND_PD或FB_OP_BIND_INST_BLK_PTR之列舉之值。始終對rd欄位求反,ctx_dma_idx欄位具有一為0之值,且wid欄位具有一為3之值。藉由說明,使用高階語言來定義該碼。然而,可使用其它語言來定義該功能。
表7所示之碼指定對Dniso 180之xx2fb封包介面的例外。舉例而言,刪除ctx_dma_idx欄位。xx2fb封包之op欄位可不具有一對應於FB_OP_BIND_INST_BLK_PTR、FB_OP_BIND_PD、FB_OP_VIRTUAL或FB_OP_BIND_INST_OBJ_PTR之列舉之值。wdat欄位自256欄位減至32位元,且wid欄位具有一為0之值。藉由說明,使用高階語言來定義該碼。然而,可使用其它語言來定義該功能。
表8所示之碼指定對MPEG 185之xx2fb封包介面的例外。舉例而言,將mpeg_engine_id_idx_t欄位添加至xx2fb封包且使用ctx_dma_idx欄位來判定用於mpeg_engine_ididxt欄位之值。wdat欄位自256欄位減至128位元,且wid欄位可僅具有一介於0與2之間之值(包括0及2)。op欄位可不具有一對應於FB_OP_BIND_PD之列舉之值。藉由說明,使用高階語言來定義該碼。然而,可使用其它語言來定義該功能。
除定義Niso_hub 150之介面外,該高階語言用於定義Niso_hub 150之功能。表9所示之碼指定由Niso_hub 150所執行之功能。舉例而言,指定一仲裁功能且產生一稱作winner1之"winning"封包。CLU合格性、subrequest_info、wdat_reformatter及rdat_reformatter在Niso_hub 150內具現化且可手動寫成碼以執行彼等CLU之功能。藉由說明,使用高階語言來定義該碼。然而,可使用其它語言來定義該功能。
執行PLU仲裁功能以判定來自封包之winner1由Niso_hub 150接收自用戶端FE 155、DA 160、SCC 165、主機195、Cniso 183、Dniso 180、流175、WID 170、MPEG 185及Hostnb 190。指定一仲裁策略及一使用自用戶端接收之"alom"位元的選項,其中alom位元用於指示用戶端具有用於Niso_hub 150之"至少再多一個"xx2fb封包。接著將winner1發送至一在fb2hubtlb封包內之hubtbl單元(未圖示)。自winner1自動複製用於fb2hubtlb封包中之欄位且忽略未使用之欄位。自winner1分離wdat及we_fields且將其可能固持於一諸如暫存器檔案或FIFO記憶體之儲存資源中。
自hub2tbl2fb封包中之hubtlb接收一子請求且其由client_id儲存於一儲存資源中。該等子請求基於hub2tbl2fb封包中之subresponse_numbers來再排序。
應寫出subrequest_info CLU以執行追蹤功能來判定用於用戶端之子請求的狀態。另一仲裁功能用於基於子請求來判定winner2。應寫出wdat_reformatter CLU來執行winner2、wdat及we_之資料格式化。wdat_reformatter產生一輸出至XBAR單元之niso2xbar封包。XBAR藉由發送xbar2niso封包中之rdat來回應。應寫出rdat_reformatter CLU以基於rdat中之client_id將fb2xx_rdat封包輸出至適當用戶端。
高階語言可用於將一或多個CLU具現化於PLU內。產生一在其內程式師可使用高階語言或高階語言之子語言來寫出一功能的模板以執行必需之操作。亦可產生一用於CLU之校驗環境。因為在PLU內指定介面,所以程式師可將其注意力集中於實施並校驗CLU之功能性而非在CLU與跟其建立介面之單元之間的相互作用。
圖2說明根據本發明的一或多個態樣執行圖1A所示之步驟105的一例示性方法之流程圖。在步驟205,高階語言編譯程式剖析原始碼並檢查A樹之語義。該編譯程式在其剖析原始碼時建立A樹且A樹之結構平行於原始碼。舉例而言,各個A樹節點對應於高階語言語句或語句部分,諸如提及之識別符。因此,各個A樹節點具有一唯一之"種類"。A樹節點通常具有多個子節點,其保持於一清單中。存在基於節點種類來快速並使用符號地遍曆該等子節點之公用程式常式。此外,該等公用程式常式可用於註釋節點。或者,一節點可指定另一節點以定義用於遍曆處理期間之路徑。
可將原始碼中之巨集擴展並置於A樹中。在剖析期間,一臨時符號表可用於解析識別符,以填充自識別符之參考A樹節點至識別符宣告之A樹節點的指標。評估指派語句並以與A樹節點有關之常數將其替換。語義檢查程式瀏覽由剖析程式所產生之A樹並檢查正確性。舉例而言,語義檢查程式可檢查定義所有識別符、識別符未定義兩次、所有範例選項合法及其類似物。在本發明之某些實施例中,語義檢查程式亦將註釋添加至由隨後編譯階段使用之A樹,例如以使PLU產生器易於寫入。
在步驟210,編譯程式自原始碼產生A樹並修飾該A樹,即在A樹上註釋有用之資訊。與一節點有關之各段資訊具有一種類及一類型。最常見之類型為"int"及"ptr",其中後者為一指向A樹上之另一節點的指標。各個A樹節點註釋有一指原始碼中之一行以用於錯誤報告目的之原始行號,例如(kind=line_num,type=int)。
在步驟215,編譯程式擴展A樹,以執行優化及簡化。舉例而言,可擴展一特定CLU或PLU之各個實例。此外,可執行A樹之優化,諸如去除死終止碼、基於原始碼別處之恆定表式的表式簡化、巨集模板擴展及其類似物。將A樹傳遞至用於產生M樹之下一階段且可將其寫出至可讀取以用於除錯目的之檔案。該A樹檔案用作用於產生M樹之單一源,其接著用於產生R樹及隨後之目標,例如RTL、效能模型、功能模型或其類似物。
圖3A說明一根據本發明的一或多個態樣執行圖1A所示之步驟110的例示性方法之流程圖。在步驟300,召用PLU產生器來處理A樹並產生以另一中間樹格式表示(即由M樹表示)之各個PLU。相似地,在步驟305,召用CLU產生器來處理A樹並對於其中使用高階語言之子語言來寫出CLU的狀況在M樹中產生各個CLU。M樹平行於用於實施各個PLU及CLU之底層模組及介面。各個PLU及CLU產生器產生一部分M樹且將所有部分M樹聯結在一起以形成完整之M樹。用於M樹之邏輯構造具有語言獨立性且不應包括時序約束。
圖3B說明一根據本發明的一或多個態樣執行圖1A所示之步驟120的例示性方法之流程圖。在步驟310,該方法判定反向演繹布局資訊是否可用,且若可用’則在步驟315將M樹與反向演繹布局資訊結合以產生一優化M樹,即R樹。該R樹平行於用於實施各個PLU及CLU之底層模組及介面。用於R樹之邏輯構造具有語言獨立性且包括時序約束。
若在步驟310反向演繹布局資訊不可用,則在步驟320藉由組合M樹與預設時序資訊來產生R樹。為產生R樹,估計用於各個子操作將花費以將模組管線化之週期數。此等估計對應於在更精確或其它特定約束不可用時使用之預設值,例如在模組或晶片之合成或實體布局之前。在步驟325,一特定目標優化程式處理R樹並產生一目標模型,即RTL模型。PLU通常定義用於資料移動之內部介面及資料結構、功能模型目標不需要但RTL模型目標需要之詳情。該R樹包括將週期至週期狀態模型化所需之模組及介面。
用於RTL模型目標之經優化的R樹包括用於晶片之整個RTL基礎結構與時序資訊且其時脈週期精確。在步驟435,自步驟115產生之優化R樹由特定目標碼發射程式產生晶片之RTL模型。特定目標碼發射程式產生用於PLU之所有RTL模型並產生一包括用於CLU之所有時脈、重設、輸入及輸出訊號的模組模板,例如PLU包裹。
用於CLU之經解碼之可程式組態資訊儲存於CLU外部且如可程式暫存器值作為輸入而存在。特定目標之碼發射程式亦可產生用於各個模組之時序圖,該各個模組反映輸入及輸出各個模組之封包流動及時序。特定目標之碼發射程式基於可用時之反向演繹實體設計資訊來宣告介面協定。特定目標之碼發射程式亦可產生用於PLU及CLU且識別為可交換內容之內容可交換邏輯。因為大多數晶片係自動產生的,所以碼覆查可集中於手動產生之碼,尤其CLU。因此,碼覆查方法更有效且對於若干晶片設計可支持投入特定目標優化程式及特定目標碼發射程式之開發中的努力。
在本發明之某些實施例中,使用R樹產生之特定目標模型可在更高層級來除錯,例如A樹、M樹或R樹層級而非在RTL碼層級。可由開發者使用原始層級之除錯程式及波形檢視器,以在執行RTL碼時對產生之除錯模擬。因此,開發者可將高階語言而非最終目標模型之特定語言(例如Verilog、VHDL、C++或其類似物)之晶片設計除錯。
特定目標之碼發射程式亦可在RTL模型中實施與時脈有關之優化。舉例而言,可以更精細之粒度產生正反器群啟用,以達成啟用微粒時脈閘控。相似地,可實施用於PLU之區塊層級時脈閘控。因為自R樹亦產生實體設計模型,所以亦將布局所需之時脈樹資訊、額外時脈樹及子樹整合入實體設計模型中。在本發明之某些實施例中,用於RTL模型之特定目標碼發射程式產生早一或多個時脈週期之預先計算值,以滿足時序要求。舉例而言,分割交易FIFO記憶體可用於將讀寫請求與資料對準。在本發明之某些實施例中,特定目標之碼發射程式亦可產生自定時非同步邏輯或在時脈之兩邊緣計時的邏輯。詳言之,可基於每個模組來產生該等計時機制。
特定目標碼發射程式亦可在RTL模型中實施關於功率之優化。應產生所產生之RTL模型以避免匯流排切換回零,除非區塊層級時脈閘控生效。某些諸如向後偏壓之低功率技術要求RTL支持慢速喚醒,使得所產生之RTL模型應在此框架內操作。RTL特定目標碼發射程式判定用於區塊之輸入通信量速率且可實施向後偏壓或較低之時脈速率或資料積累以避免經許多時脈週期而傳遞較少量之資料。舉例而言,資料積累可用於避免在讀取或寫入較少量之資料時於若干時脈週期保持DRAM頁開啟。對於分割間介面,可藉由將前一週期之匯流排狀態與當前週期之匯流排狀態比較並將新資料反轉來實施DBI(資料匯流排反轉),使得週期至週期不超過50%之訊號改變。此特徵可基於平面佈置距離資訊來實施。
特定目標碼發射程式亦可在RTL模型中實施關於可測試性之優化並改良良率。具體言之,可將邏輯插入諸如交叉介面之伺服器PLU中以允許若PLU未完全起作用則使該模組禁用或重新投送資料。亦可產生用於關鍵PLU或CLU之冗餘模組或使得能夠使用該等冗餘模組之邏輯或支持邏輯。亦可自動添加用於RAM、快取記憶體線、分割間導線或其類似物之冗餘。
圖3C說明根據本發明的一或多個態樣執行圖1A所示之步驟120的另一例示性方法之流程圖。在步驟330,該方法判定使用者指定之時序資訊是否可用,且若可用,則在步驟335將M樹與使用者指定之時序資訊組合以產生R樹。使用者指定之時序資訊可包括於M樹內之PLU及CLU具現化中。使用者指定之時序資訊的實例包括由模組使用之暫存的類型,諸如輸入及/或輸出暫存器及其它管線約束。
若在步驟330使用者指定之時序資訊不可用,則在步驟360藉由組合M樹與預設時序資訊來產生R樹。在步驟345,特定目標優化程式處理R樹並產生一目標模型,即RTL模型。
圖3D說明根據本發明的一或多個態樣執行圖1A所示之步驟120的另一例示性方法之流程圖。在步驟350,該方法判定反向演繹之合成資訊是否可用,且若可用則在步驟355將M樹與反向演繹之合成資訊組合以產生R樹。詳言之,反向演繹之合成資訊包括不滿足時序之路徑。
若在步驟350使用者指定之時序資訊不可用,則在步驟360藉由組合M樹與預設時序資訊來產生R樹。在步驟365,特定目標優化程式處理R樹並產生一目標模型,即RTL模型。
可組合圖3B、3C及3D所示之方法,例如可藉由組合M樹與時序資訊(例如為來自布局或合成之反向演繹或使用者指定)之任意組合來產生R樹。
召用特定目標之優化程式來藉由優化用於彼特定目標之M樹或R樹而產生用於彼目標(例如RTL、效能模擬器、功能模型或其類似物)之經優化的M樹或R樹。使用R樹來產生需要週期精確資訊之目標,使得週期精確之優化在所有PLU上一致。該等優化在整個晶片上發生且具有範例獨立性,其意指可支持其以用於新的範例。此外,優化程式可使用來自布局之反向演繹資訊以產生用於各個目標之優化R樹(包括基於時序資訊之實體布局)。該等優化程式亦檢查介於模組具現化之間之介面並將其優化。舉例而言,在晶片上投送一介面之距離將判定是否使用具有中繼器之有效/信用協定或請求/忙碌協定,其可接著由於增大了延遲時間而影響輸入FIFO深度。相似地,較低之頻寬約束可用於判定介面之寬度及是否傳遞控制且接著傳遞資料或具有資料之控制。
接著召用一特定目標碼發射程式來取出經優化之M樹或R樹並寫出最終目標,例如適當輸出本文語言、環境檔案及報告。該特定目標碼發射程式行走優化M樹或R樹並產生用於最終目標之碼。特定目標碼發射程式亦可產生一將M樹或R樹中之註釋聯結至原始碼之報告。一旦指定PLU、CLU或簡單之CLU模型、封包及頻寬,則可產生效能模擬器模型及晶粒面積估計。相似地,當提供輸入封包之到達速率時,亦可產生例如效能/面積、效能/瓦特或其類似物之原始效能估計。可使用結合圖4C所述之效能模型來產生更精確之估計。
圖4A說明根據本發明之一或多個態樣執行圖1A所示之步驟115以產生最終目標的例示性方法之流程圖。在步驟405,特定目標優化程式用於產生一用於功能模型目標之優化M樹。使用各個PLU之最簡單的表示以減少執行功能模型模擬所需之時間。詳言之,可使用零時功能即程序召用。詳言之,零時功能即程序召用可用於PLU之M樹表示中。各個PLU之不同表示,尤其包括週期精確資訊之表示,可用於R樹中。舉例而言,在R樹中,PLU表示可包括區塊層級時脈閘控、正反器啟用、資料匯流排反轉、特定介面協定及其類似物。
同樣地,CLU功能亦可由零時功能來表示。可在單一週期中將包括多週期封包之封包提供至用於模擬之CLU功能。由於程式師無需積累經多個時脈週期之輸入,所以在單一週期中提出多週期封包亦簡化插入自動產生之CLU模板中的碼之寫入。在設計方法之一隨後點,特定地在實體設計特徵已知後,判定多少時脈週期用於傳送封包。程式師無需指定所需之週期數,但可指定用於特定介面之頻寬並使特定目標優化程式判定週期數,即如特定目標優化程式判定用於特定介面之時序或協定,例如原始同步、請求/忙碌、有效/信用或其類似物。
在步驟410,自優化M樹由特定目標碼發射程式產生晶片之功能模型。在模擬期間,使用零時功能召用來改良效能。舉例而言,將各個封包處理為一執行線且經盡可能多之功能區塊來執行,直至將其阻止。可在一功能區塊將來自不同介面之輸入封包同步化時阻止一封包。使用者空間穿線套件可用於在彼環境中阻止封包。當PLU(伺服器或用戶端)具有一存取另一伺服器(諸如該紋理單元PLU讀取一碼框緩衝器(伺服器))之用戶端PLU組件時。該紋理單元PLU發出一用於碼框緩衝器之讀取請求(零時功能召用)且該碼框緩衝器以零時回應。因為自單一資料庫產生功能模型,所以模擬器知悉各個用戶端及伺服器之語義並可有效執行該功能模型。當封包產生更多個封包時,將其模型化為"回圈"且每一遍經該回圈發出零時功能召用。
該功能模型可替換通常在晶片開發期間由一或多個架構寫出之習知C++模擬模型。因為功能模型以高階語言表示,所以高階語言原始層級之除錯器可用於將所產生之功能模型除錯而非使用C++除錯器來將所產生之功能模型直接除錯。
圖4B說明根據本發明的一或多個態樣執行圖1A所示之步驟115來產生一最終目標的之另一例示性方法的流程圖。在步驟415,特定目標優化程式用於產生用於軟體模型目標之優化M樹。詳言之,可維持晶片介面及可程式暫存器以產生另一優化M樹。在本發明之某些實施例中,PLU及CLU產生器亦用於產生由軟體使用之資料結構。在步驟420,自在步驟415由特定目標碼發射程式產生之優化M樹產生晶片之軟體模型。該軟體模型可包括用於驅動程式、資料結構之模板、方法注入碼、用於控制內容交換之碼及虛擬記憶體分配常用程式。
圖4C說明一根據本發明的一或多個態樣執行圖1A所示之步驟125以產生一最終目標的例示性方法的流程圖。在步驟425,特定目標優化程式用於產生一用於平面佈置模型目標之優化R樹。在步驟430,自優化R樹由特定目標碼發射程式產生晶片之平面佈置模型。特定目標碼發射程式可用於產生一包括許多模組及介面之實體設計平面佈置模型,該等模組及介面包括實例計數及面積與功率估計。計算用於各個PLU之邏輯及RAM之量的晶粒面積估計。可由在合成期間產生之實體設計模型來提供更精確之估計。亦可由實體設計碼發射程式來執行面積優化及時序優化。舉例而言,可按需要插入中繼器以滿足更長互連上之時序且可以鎖存器、脈衝鎖存器或脈衝正反器來替換正反器。
在合成前,可由程式師寫入CLU來提供CLU晶粒面積估計。產生以作為平面佈置模型之部分的諸如導線長度的資訊可與M樹組合且由特定目標優化程式及特定目標碼發射程式使用來判定分割間之介面協定,例如request/busy_next、有效/信用或其類似物並插入中繼器正反器。該平面佈置模型可使用用於各個模組及介面之靜態及動態功率估計來將模組分佈於平面佈置模型內以平衡晶粒表面上之功率消耗。
圖4D說明根據本發明的一或多個態樣進行圖1A所示之步驟125來產生一最終目標的另一例示性方法之流程圖。在步驟440,特定目標優化程式用於產生用於效能模型目標之優化R樹。在步驟450,自在步驟115產生之優化R樹由特定目標碼發射程式來產生晶片之效能模型RTL。可模擬效能模型來驗證晶片效能,以允許晶片架構以不同設計來快速進行實驗。在步驟450,由在步驟440產生之效能模型R樹來產生效能模擬環境。在步驟455,另一特定目標碼發射程式用於產生一效能仿真環境。效能模擬環境及效能仿真環境可用於模擬在步驟445產生之效能模型RTL。
為產生效能模型RTL,移除所有資料邏輯並維持可影響經晶片的封包之效能流的控制邏輯以產生用於效能模型之優化R樹。習慣上,可手動寫入週期精確之效能模型並使用晶片之功能模型來驗證週期精確之效能模型。因為效能模型自共用R樹產生,所以自動產生效能模型之能力縮短效能驗證所需之時間。因此,其一致且以用於該晶片之其它最終目標模型來更新。
自動產生用於PLU之效能模型,而可手動寫出CLU。然而,用於CLU之效能模型通常為用於CLU之功能模型的子集。因此,用於CLU之功能模型可用於產生用於同一CLU之效能模型。
可維持用於移除之資料邏輯的晶粒面積及功率消耗資訊。該效能模型可包括反向演繹平面佈置資訊以獲取距離並進行後結合(late-binding)介面決策,諸如介面寬度及FIFO深度。邏輯之確切同步時序可包括於效能模型中。高階語言提供一用於程式師之語法,以指定用於介於CLU與PLU之間為晶片之效能模型所需之封包欄位的部分。含於PLU內之封包自動產生於效能模型中。
與效能特徵相似,可產生低功率特徵以將區塊層級時脈閘控、向後偏壓、時脈減速等等模型化。因為效能模型並未包括資料,所以估計改變之資料位元的百分比以產生動態功率估計。反向演繹之效能模擬結果可用於影響由RTL或其它特定目標碼發射程式所進行之低功率碼產生決策之類型。舉例而言,判定用於RAM或快取記憶體之啟用的粒度可用於降低功率消耗。可使用各種參數來模擬效能模型以評估量測的每單位面積之效能或每瓦特之效能並進行架構權衡。
圖4E說明根據本發明的一或多個態樣執行圖1A所示之步驟125以產生一最終目標的另一例示性方法的流程圖。在步驟460,產生一對應於用於RTL模型目標之R樹的校驗環境。該校驗環境可包括區塊層級之測試台、組態檔案、用於將多週期資料注入區塊之共用常用程式及刺激。同樣地,亦可產生全晶片測試台、組態檔案、共用常用程式及刺激。校驗環境可允許用於晶片之功能模型及RTL模型之原始碼層級的除錯。舉例而言,程式師可使用一校驗工具來在一封包自一邏輯單元傳遞至另一邏輯單元時對其進行觀測。程式師可及時俘獲向後及向前之封包狀態以觀測其如何改變。
在步驟465,自用於RTL模型目標之R樹產生一正式校驗模型。該正式校驗模型可用於藉由基於各個區塊之輸入約束之分析產生唯一輸入向量而執行半正式或正式校驗。輸入向量包括於具有對於半正式校驗明顯延遲之檔案中。重放該等檔案且將該等結果與功能模型模擬結果進行比較。相似地,可例如使用符號分析工具來產生用於正式校驗期間之輸入約束。
在步驟470,使用一僅產生RTL之時序部分的特定目標碼發射程式自用於RTL目標之R樹產生一仿真模型。舉例而言,R樹之特定部分可包括於優化R樹中以將晶片之一部分仿真。或者,可產生一用於仿真之晶粒面積小得多且慢得多之RTL的版本。舉例而言,可移除快取記憶體,可縮窄介面,且可減小FIFO記憶體深度以減少由仿真模型使用之閘數。可將仿真模型映射至仿真裝置上並將其執行以比使用效能模型模擬效能更有效地模擬晶片之效能。仿真模型亦可用於識別並固定控制邏輯中之錯誤。
除產生來自M樹及R樹之效能模型、RTL模型、軟體模型、校驗模型及其類似物外,特定目標碼發射程式可用於產生一用於合成RTL優化之M樹或R樹來產生晶片之實體設計模型之合成模型(環境)。圖4F說明根據本發明的一或多個態樣執行圖1A所示之步驟120以產生一或多個最終目標模型的另一例示性方法的流程圖。在步驟480,產生一對應於用於RTL模型目標之R樹的合成環境。該合成環境可包括區塊層級之時序約束及組態檔案。在步驟485,特定目標碼發射程式產生一基於R樹用於晶片之閘層級模型。合成模型及平面佈置模型用於如下文進一步所述來產生晶片之實體模型。在步驟490,特定目標碼發射程式產生一基於R樹之用於晶片的功能合成模型,即布局環境。
若PLU跨越多個分割、CLU及插針,則所產生之合成環境包括所產生之對PLU、PLU之部分之時序約束。可使用市售之合成工具來合成某些邏輯單元,同時可定製設計或產生其它邏輯單元。實體設計碼發射程式可判定某些PLU結構是否可產生為巨集並已正規化。接著可將共用巨集設計為定製電路以改良效能及晶粒密度並降低延遲時間及功率。實體設計碼發射程式亦可優化投送以最小化導線容量,可能將插針重新定位、指定介面協定、改變介面寬度(封包)、改變資料路徑之寬度及其類似物。
因為各個最終目標模型與其它模型一致,所以A樹使用單一資料庫以產生各種最終目標模型係有利的。參數之改變在其再生時反映於各個最終目標模型中。可自動化建立最終目標模型且可建立用於特定目的之最終目標模型的子集。舉例而言,寫CLU之程式師僅需建立功能模型、RTL模型、校驗模型及合成目錄。自動產生PLU及更高層級之區塊。因此,程式師可經許多設計變化重複並快速驗證CLU。由CLU模板提供之介面提供一允許程式師獨立工作之抽象層,即無需與潛在改變之建立介面區塊同步。此外,以高階語言寫成之A樹亦可用於印刷電路板(PCB)設計及校驗。此外,移除特定單元或改變深度及寬度可應用於PCB設計及校驗中。
提供諸如介面距離、區塊縱橫比及插針位置之實體設計資訊以產生R樹且用於產生優化R樹期間。當修改諸如時脈速度之參數時,可再生實體設計模型及有關資訊以調整設計。舉例而言,可能需要匹配時脈速率與特定匯流排速度或外部記憶體速度之速度。相似地,可自R樹快速產生用於較低速度之晶片的實體設計模型。該較低速度之晶片晶粒面積減小且製造成本相應較低。可改變諸如功率、效能及功能特徵之其它參數以使用相同之R樹或基於經修改之原始碼產生的R樹來快速產生其它晶片之實體設計模型。
用於產生合成模型之優化R樹包括來自用於產生後合成實體布局所需之許多組態輸入項之平面佈置模型的資訊。此資訊包括特定用於不同分割中之PLU的分割、各個巨集之縱橫比、各個巨集上之插針位置、互連長度、時脈分佈、時脈閘控、測試時脈、所插入之中繼器、原始同步介面及插入之功能內建式自我測試(BIST)邏輯。熟習此項技術者將瞭解到,組態以執行圖2、3A、3B、3D、3E、4A、4B、4C、4D、4E或4F之方法步驟之任意系統或其等價物處於本發明之範疇內。
圖5為一根據本發明之一或多個態樣之各別電腦系統的一例示性實施例之方塊圖,該電腦系統通常表示為500且包括一處理器505、一記憶體512及一系統介面510。計算系統500可為一桌上型電腦、伺服器、膝上型電腦、掌上型電腦、板塊電腦、遊戲控制臺、諸如PDA或蜂巢式電話之攜帶型無線終端、基於電腦之模擬器或其類似物。可包括系統記憶體控制器之處理器505可與記憶體512直接建立介面(如所示)或可經系統介面510與記憶體512通信。系統介面510可為一I/O(輸入/輸出)介面或一包括系統記憶體控制器以與記憶體512直接建立介面之橋接裝置。
原始碼515、A樹編譯程式520、A樹522、M樹編譯程式525、R樹編譯程式526、M樹528、R樹529、優化程式530、優化M樹532、優化R樹533、發射程式535及最終目標模型538儲存於記憶體512中。以高階語言表示之原始碼515在執行A樹編譯程式520時由處理程式505剖析。處理程式505將所產生之A樹522儲存於記憶體512中。由處理程式505來執行包括於M樹編譯程式525及R樹編譯程式526中之PLU及CLU產生器以分別產生M樹528及R樹529。相似地,由處理器505執行特定目標優化程式530以產生優化M樹532及R樹533。由處理器505執行特定目標發射程式535以產生最終之目標模組538。
藉由使用共用資料庫以產生晶片及環境之各種不同模型來縮短晶片設計時間。用於產生A樹、M樹、R樹及特定模型之優化程式及編譯程式可用於產生其它晶片,以允許程式師以高階語言有效並快速地寫出原始碼以產生比當手動或使用不同資料庫來產生不同模型時具有更大之可靠性且在更短之時段內的各個晶片。抽象化介面協定及封包傳送,以簡化設計及校驗方法。習知地由手動執行以實施功率優化、插入冗餘邏輯、插入內容交換邏輯及其類似物之冗長優化可在模組層級自動產生。此外,共用資料庫有助於實體設計資訊對R樹之反饋,以在晶片之邏輯設計與實體設計之間更緊密地進行耦接。
晶片設計流程之改良為使用高階語言來指定晶片並產生共用資料庫及最終目標模型之另一益處。共用資料庫可用於產生效能模型及模擬環境、產生功能模型及模擬環境、產生暫存器轉移層級模型及合成環境、產生軟體模型並產生仿真模型。此外,由於僅CLU包括手動寫成之碼,所以可更有效地進行碼覆查。可經特定PLU及CLU之位元片(bit-sliced)資料路徑布局及定製布局及均質巨集結構來更有效地使用晶粒面積。
儘管前述說明針對本發明之實施例,但可設計本發明之其它及另外實施例而不偏離其基本範疇,且其範疇由隨後申請專利範圍來確定。因此,前述說明及圖式應被視為說明性的而非限制性的。除非在申請專利範圍中明確說明,否則在方法申請專利範圍中列出步驟並不寓示以任何特定次序來執行該等步驟。
所有商標為其所有者之各別財產。
130...原始碼
135...A樹資料庫
140...M樹資料庫
142...R樹資料庫
145...特定樹及模型
150...Niso_hub
155...FE
160...DA
165...SCC
170...WID
175...流
180...Dniso
183...Cniso
185...MPEG
190...Hostnb
195...主機
500...電腦系統
505...處理器
510...系統介面
512...記憶體
515...原始碼
520...A樹編譯程式
522...A樹
525...M樹編譯程式
526...R樹編譯程式
528...M樹
529...R樹
530...優化程式
532...優化M樹
533...優化R樹
535...發射程式
538...最終目標模型
圖1A說明一根據本發明之一或多個態樣使用高階語言來產生積體電路之各種特定模型之例示性方法的流程圖。
圖1B說明當根據本發明之一或多個態樣執行圖1A所示之方法步驟時由高階語言產生以產生積體電路之各種特定模型之系統組件。
圖1C為一根據本發明之一或多個態樣以高階語言表示之例示性邏輯單元的示意代表圖。
圖2說明一根據本發明的一或多個態樣執行圖1A所示之步驟105的例示性方法的流程圖。
圖3A說明根據本發明的一或多個態樣執行圖1A所示之步驟110來產生一M樹之例示性方法的流程圖。
圖3B、3C及3D說明根據本發明的一或多個態樣執行圖1A所示之步驟115以產生一R樹之例示性方法的流程圖。
圖4A及4B說明根據本發明的一或多個態樣執行圖1A所示之步驟115來產生一最終目標模型的例示性方法之流程圖。
圖4C、4D、4E及4F說明根據本發明的一或多個態樣執行圖1A所示之步驟125以產生一最終目標模型的例示性方法之流程圖。
圖5為一根據本發明之一或多個態樣的計算系統之方塊圖。
Claims (10)
- 一種設計一積體電路之方法,其包含:接收一原始碼的輸入,該原始碼定義由一高階語言寫成的該積體電路,其中該高階語言設定為指定多個可程式的邏輯單元(PLU)和多個可定製邏輯單元(CLU);根據該原始碼,製造該積體電路的一第一樹表示,其中該第一樹表示包括對應於該些PLU和該些CLU的組件,其中該些CLU包括至該些CLU和自該些CLU的多個介面的一表示;根據對該第一樹表示的該些PLU和CLU的剖析,製造該積體電路的一第二樹表示,其中,該第二樹表示並非時脈週期精確,且不相關於被製造的模型的一種類;藉結合該第二樹表示和預設時間資訊,製造該積體電路的一第三樹表示,其中,該第三樹表示是時脈週期精確,且對應於該積體電路的一模型;藉得到將被製造該積體電路的一目標模型的目標模型資訊;根據該目標模型資訊,選擇依目標指定最佳化因子;及使用該選擇的目標指定最佳化因子,處理該積體電路的該第三樹表示,以製造該積體電路的該目標模型。
- 如請求項1之方法,其進一步包含以下步驟:修改一指 定一時脈速度約束、一功率消耗約束或一頻寬約束之參數,或修改一指定一約束的參數,及再製造該積體電路的該第二樹表示。
- 如請求項1之方法,其進一步包含將時序資訊與該積體電路的該第二樹表示組合,以使該積體電路的該第三樹表示時脈週期精確。
- 如請求項1之方法,其中該該積體電路的該第三樹表示包括時間次序獨立性,且並非時脈週期精確的。
- 如請求項1之方法,其中該目標模型對應於該積體電路之一功能模型、該積體電路之一軟體模型或該積體電路之一暫存器轉移層級模型。
- 一種用於積體電路設計之系統,其包含:一高階語言,其經組態以指定多個邏輯單元,其中該等邏輯單元為多個可程式的邏輯單元(PLU)和多個可定製邏輯單元(CLU);一編譯程式,其經組態以處理該高階語言並產生一積體電路之一第一樹表示,其中該第一樹表示之組件對應於該等邏輯單元;一剖析器,其經組態以根據對該第一樹表示的該等邏輯單元的剖析,製造該積體電路的一第二樹表示,其中,該第二樹表示並非時脈週期精確,且不相關於被製造的模型的一種類;多個優化程式,其經組態以處理該第二樹表示之一部分並產生一表示該積體電路之多個目標模型之一的特定 目標樹表示,其中該特定目標樹為時脈週期精確;及碼發射程式,其經組態以處理該特定目標樹表示並產生該積體電路之該目標模型,其中該目標模型對應於表示該積體電路之多個目標模型之其中之一。
- 如請求項6之系統,其中該等邏輯單元中之一個為一記憶體管理單元或一記憶體介面。
- 如請求項6之系統,其中該第一樹表示包括一對應於該等邏輯單元中之一個的模板及介面,該第二樹表示包括由該等優化程式使用以產生該目標特定樹表示的實體設計資訊。
- 如請求項6之系統,其中該等發射程式中之一個判定一用於一在該等邏輯單元中之兩個之間的介面之介面協定,且該高階語言指定在該等邏輯單元之間以作為獨立於一特定介面協定之多週期封包的介面。
- 如請求項6之系統,其中該高階語言指定該些邏輯單元間的多個介面為多個多週期封包,該等多週期封包中之一個在模擬該等邏輯單元中之一個的一功能模型時在一單一時脈週期內輸入。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/158,180 US7483823B2 (en) | 2005-06-21 | 2005-06-21 | Building integrated circuits using logical units |
US11/157,716 US7363610B2 (en) | 2005-06-21 | 2005-06-21 | Building integrated circuits using a common database |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200712968A TW200712968A (en) | 2007-04-01 |
TWI427496B true TWI427496B (zh) | 2014-02-21 |
Family
ID=36754271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW095122324A TWI427496B (zh) | 2005-06-21 | 2006-06-21 | 製造積體電路的模型的方法和系統 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP1736905A3 (zh) |
TW (1) | TWI427496B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10896276B2 (en) | 2017-06-07 | 2021-01-19 | Industrial Technology Research Institute | Timing esimation method and simulator |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117574821B (zh) * | 2023-10-19 | 2024-09-24 | 英诺达(成都)电子科技有限公司 | 基于代表单元的信息关联方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471398A (en) * | 1991-07-01 | 1995-11-28 | Texas Instruments Incorporated | MTOL software tool for converting an RTL behavioral model into layout information comprising bounding boxes and an associated interconnect netlist |
TW514804B (en) * | 1999-11-05 | 2002-12-21 | Intel Corp | Structural regularity extraction and floorplanning in datapath circuits using vectors |
US6505328B1 (en) * | 1999-04-27 | 2003-01-07 | Magma Design Automation, Inc. | Method for storing multiple levels of design data in a common database |
US20050049843A1 (en) * | 2003-08-29 | 2005-03-03 | Lee Hewitt | Computerized extension apparatus and methods |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5841663A (en) * | 1995-09-14 | 1998-11-24 | Vlsi Technology, Inc. | Apparatus and method for synthesizing integrated circuits using parameterized HDL modules |
JP2954894B2 (ja) * | 1996-12-13 | 1999-09-27 | 株式会社半導体理工学研究センター | 集積回路設計方法、集積回路設計のためのデータベース装置および集積回路設計支援装置 |
HUP0301274A2 (en) * | 1998-09-30 | 2003-08-28 | Cadence Design Systems | Block based design methodology |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
CN1666202A (zh) * | 2002-04-25 | 2005-09-07 | Arc国际公司 | 管理集成电路设计的装置和方法 |
US7184946B2 (en) * | 2003-06-19 | 2007-02-27 | Xilinx, Inc. | Co-simulation via boundary scan interface |
GB0322050D0 (en) * | 2003-09-20 | 2003-10-22 | Spiratech Ltd | Modelling and simulation method |
-
2006
- 2006-06-20 EP EP06012664A patent/EP1736905A3/en not_active Withdrawn
- 2006-06-21 TW TW095122324A patent/TWI427496B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471398A (en) * | 1991-07-01 | 1995-11-28 | Texas Instruments Incorporated | MTOL software tool for converting an RTL behavioral model into layout information comprising bounding boxes and an associated interconnect netlist |
US6505328B1 (en) * | 1999-04-27 | 2003-01-07 | Magma Design Automation, Inc. | Method for storing multiple levels of design data in a common database |
TW514804B (en) * | 1999-11-05 | 2002-12-21 | Intel Corp | Structural regularity extraction and floorplanning in datapath circuits using vectors |
US20050049843A1 (en) * | 2003-08-29 | 2005-03-03 | Lee Hewitt | Computerized extension apparatus and methods |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10896276B2 (en) | 2017-06-07 | 2021-01-19 | Industrial Technology Research Institute | Timing esimation method and simulator |
Also Published As
Publication number | Publication date |
---|---|
EP1736905A3 (en) | 2007-09-05 |
EP1736905A2 (en) | 2006-12-27 |
TW200712968A (en) | 2007-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7363610B2 (en) | Building integrated circuits using a common database | |
JP4994393B2 (ja) | 単一のマスターモデルから異なる抽象化レベルの複数のモデルを生成するシステムと方法 | |
US6496972B1 (en) | Method and system for circuit design top level and block optimization | |
US8782580B2 (en) | Executing a hardware simulation and verification solution | |
Hadjiyiannis et al. | A methodology for accurate performance evaluation in architecture exploration | |
US20130179142A1 (en) | Distributed parallel simulation method and recording medium for storing the method | |
US11513818B1 (en) | Method, product, and system for integrating a hardware accelerator with an extensible processor | |
WO2021188429A1 (en) | Machine learning-based prediction of metrics at early-stage circuit design | |
US7483823B2 (en) | Building integrated circuits using logical units | |
Trabelsi et al. | A model-driven approach for hybrid power estimation in embedded systems design | |
Lavagno et al. | Design of embedded systems | |
JP2008140405A (ja) | 電子回路と制御プログラムとのコバリデーション方法 | |
CN118536445B (zh) | 一种用于芯片仿真的方法和计算设备 | |
US7437282B2 (en) | Method and apparatus to provide alternative stimulus to signals internal to a model actively running on a logic simulation hardware emulator | |
TWI427496B (zh) | 製造積體電路的模型的方法和系統 | |
US20140130000A1 (en) | Structural rule analysis with tcl scripts in synthesis or sta tools and integrated circuit design tools | |
KR100928181B1 (ko) | 디지털 시스템 설계 방법 | |
US12259806B2 (en) | Managing high performance simulation representation of an emulation system | |
Wieferink et al. | Retargetable processor system integration into multi-processor system-on-chip platforms | |
Azadi et al. | Extending Memory Compatibility with Yosys Front-End in VTR Flow | |
Liu | Hardware/software codesign for embedded RISC core | |
Tong | Software profiling for an FPGA-based CPU core. | |
WO2024049472A2 (en) | Communication link latency tolerance for hardware assisted verification systems | |
CN117829042A (zh) | 管理仿真系统的高性能模拟表示 | |
CN119088365A (zh) | 一种性能仿真模型构建方法、装置和性能仿真方法 |