TW202338655A - 具模組交換之積體電路設計驗證 - Google Patents
具模組交換之積體電路設計驗證 Download PDFInfo
- Publication number
- TW202338655A TW202338655A TW112101254A TW112101254A TW202338655A TW 202338655 A TW202338655 A TW 202338655A TW 112101254 A TW112101254 A TW 112101254A TW 112101254 A TW112101254 A TW 112101254A TW 202338655 A TW202338655 A TW 202338655A
- Authority
- TW
- Taiwan
- Prior art keywords
- integrated circuit
- instance
- circuit design
- simulation model
- data structure
- Prior art date
Links
- 238000012942 design verification Methods 0.000 title description 2
- 238000013461 design Methods 0.000 claims abstract description 255
- 238000004088 simulation Methods 0.000 claims abstract description 167
- 238000000034 method Methods 0.000 claims description 57
- 238000012546 transfer Methods 0.000 claims description 14
- 238000004566 IR spectroscopy Methods 0.000 claims description 12
- 238000003860 storage Methods 0.000 claims description 9
- 238000012360 testing method Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 35
- 238000004519 manufacturing process Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 14
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 13
- 230000009466 transformation Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 238000000844 transformation Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 235000012431 wafers Nutrition 0.000 description 6
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 229910052710 silicon Inorganic materials 0.000 description 5
- 239000010703 silicon Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000005923 long-lasting effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/333—Design for testability [DFT], e.g. scan chain or built-in self-test [BIST]
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)
Abstract
可以為積體電路產生積體電路設計。積體電路設計可以包括描述模組的功能操作的模組描述的實例。該實例可以包括輸入及輸出。積體電路設計可以被編碼於中間表示(IR)資料結構之中。可以接收指示實例應該被模擬模型替換的參數。參數可以包括指向實例的第一參數及指向模擬模型的第二參數。
Description
相關申請案的交叉引用
本申請主張在2022年2月18日提交的U.S.美國臨時專利申請序號63/311,543的優先權及利益,其全部內容藉由引用併入本文。
本揭示一般涉及積體電路設計,並且更具體地,涉及具有模組交換的積體電路設計驗證。
積體電路可以在多步驟過程中設計及測試,該過程涉及多個專業工程師對積體電路設計執行各種不同的設計及驗證任務。這些工程師可以使用各種積體電路設計工具鏈來處理使用商業電子設計自動化(EDA)工具的積體電路設計工作流程的不同部分。
積體電路設計的自動產生允許專用積體電路(ASIC)或系統單晶片(SoC)的配置根據設計參數(或通俗地稱為旋鈕)來指定。然後,系統可以使用設計參數將用於積體電路設計的商業電子設計自動化(EDA)工具的操作自動化。
例如,系統可以執行積體電路產生器(或簡稱為產生器)以存取設計參數並產生積體電路設計。在一些實施中,產生器可以使用嵌入在支援物件導向編程及/或函數式編程的通用編程語言(例如,Scala)中的硬體描述語言(HDL)。 例如,Chisel(一種嵌入在Scala中的開源HDL,Scala 是一種支援物件導向編程及函數式編程的靜態類型通用編程語言)可用於產生積體電路設計。產生器可以包括指定輸入、輸出及/或模組功能操作的描述的模組描述(例如,處理器核、快取等,其可以被例如Scala類別來表示)。
在稱為擬訂(elaboration)的過程中,產生器可以執行以基於設計參數產生積體電路設計。積體電路設計可以包括進行連接的模組描述的實例。例如,產生器可以執行構造函數代碼來建立Scala類的實例,它們之間有線連接,作為積體電路設計的實例。在一些實施方案中,積體電路設計可編碼於中間表示(IR)資料結構之中。IR資料結構可以被配置為用於編譯器優化及/或轉譯以產生暫存器傳輸級(RTL)資料結構。例如,產生器可以產生積體電路設計作為暫存器傳輸級(FIRRTL)資料結構的靈活中間表示。FIRRTL資料結構可由IRRTL編譯器編譯以產生RTL資料結構。
在稱為編譯的過程中,可以編譯精心設計的積體電路設計(例如,IR資料結構)以產生RTL資料結構。例如,編譯積體電路設計可以包括執行一個或多個降低轉換(例如,去除高級構造的編譯器轉換)以轉換積體電路設計以產生RTL資料結構。RTL資料結構可以對與在積體電路設計中(例如,模組的邏輯描述,諸如處理器核、快取等)實施的模組描述的實例相關聯的邏輯拓撲進行編碼。RTL資料結構可與EDA工具相容,該EDA工具可用於功能驗證(例如,模擬分析)、合成(例如,轉換為閘級描述)、佈局及路由(例如,物理設計)及/或積體電路(例如,處理器、微控制器、ASIC或SoC)的製造。在一些實施中,RTL資料結構可以包括Verilog。例如,可以使用FIRRTL編譯器編譯積體電路設計以產生Verilog。
在設計過程中,驗證(例如,測試)與在RTL資料結構中實施的一個或多個模組相關聯的邏輯描述可能是有用的,例如處理器核或快取的其中之一。一種用於測試邏輯描述的技術是用模擬模型替換RTL資料結構中(例如,與設計相關聯)的邏輯描述。模擬模型可以包括以預定方式模擬硬體操作的軟體,例如,提供特定輸入及/或輸出。還可以藉由與設計相關聯的邏輯描述來簡化模擬模型。例如,為了驗證與私有 2 級(L2)快取相關聯的邏輯描述,關聯於與L2快取通訊的處理器核的邏輯描述可以用模擬模型(例如,匯流排功能模型,例如流量產生器(traffic generator))替換。模擬模型可以被配置為將特定流量模式發送到與二級快取相關聯的邏輯描述。使用模擬模型可以允許測試與L2快取關聯的邏輯描述,並改進對邊角案例的覆蓋,例如藉由控制模型的行為(例如,控制與處理器核關聯的軟體將特定模式發送到L2快取)。使用模擬模型還可以允許更快的測試,例如藉由使用與模擬模型相關聯的軟體來簡化與處理器核相關聯的邏輯描述。
用模擬模型替換RTL資料結構中的邏輯描述可能是手動及/或耗時的過程。例如,用模擬模型替換邏輯描述可能涉及在多個位置手動編輯RTL資料結構以包括與模擬模型的連接(及/或在獨自的配置檔案中準備此類與模擬模型的連接)。此外,當積體電路產生器做出改變時,RTL資料結構可能變得與產生器產生的積體電路設計不同步。結果,可能再次編譯積體電路設計,這可能涉及再次手動編輯RTL資料結構。因此,需要允許以改善效率及/或保持設計及模擬過程同步的方式測試RTL資料結構中的邏輯描述。
本文描述的是允許測試RTL資料結構中的邏輯描述的技術(例如,模擬)。積體電路產生器可用於產生包括模組描述實例的積體電路設計。模組描述可以指定模組的功能操作的輸入、輸出及/或描述(例如,處理器核、快取等,其可以被例如Scala類別來表示)。模組描述的實例可以包括輸入及/或輸出。產生器(例如,Chisel)可以使用嵌入在通用編程語言(例如,Scala)中的 HDL 來產生積體電路設計。 積體電路設計可以編碼在IR資料結構中。 諸如應用程式介面(API)之類的控制介面可以接收指示積體電路設計中的實例應該被模擬模型替換(例如,取代或交換)的參數。 參數可以包括指向積體電路設計中的實例的第一參數(例如,要被替換的)及指向模擬模型的第二參數(例如,要用於替換的)。
在一些實施方式中,參數可以用於為編譯器產生註釋,該編譯器用於編譯積體電路設計以產生RTL資料結構。例如,參數可用於為FIRRTL編譯器產生註釋,該編譯器用於編譯積體電路設計以產生Verilog。註釋可用於建構及/或修改編譯器使用的一個或多個轉換。
在一些實施方式中,編譯器可以使用註釋來產生RTL資料結構,其中與實例相關聯的邏輯描述被與模擬模型相關聯的邏輯描述替代。原生不支援模型替換的模擬器(例如,Verilator)然後可以使用與RTL資料結構中的模擬模型相關聯的邏輯描述來模擬RTL資料結構。
在一些實施方式中,編譯器可以使用註釋來產生用於模擬器的指令(例如,配置檔案)以用與模擬模型相關聯的邏輯描述替換與實例相關聯的邏輯描述。在模擬RTL資料結構時,原生支援模型取代的模擬器(例如,Synopsys VCS®)然後可以使用指令將與實例關聯的邏輯描述取代為與模擬模型關聯的邏輯描述。在一些實施方式中,指令可以包括Verilog。
因此,積體電路設計中的模組描述的實例可以編程方式選擇用於由模擬模型之替換(例如,使用者可以遍歷(walk)設計中的實例層次結構並選擇要用模型替換的實例)。控制介面及編譯器可以促成用模擬模型替換實例。這可以改善由模擬器測試的效率及/或可以使設計及模擬過程保持同步。
圖1是用於產生及製造積體電路的系統100的示例的方塊圖。 系統100包括網路106、積體電路設計服務基礎設施110(例如,積體電路產生器)、現場可程式閘陣列(FPGA)/模擬器伺服器120、及製造商伺服器130。例如,使用者可以利用網頁客戶端或腳本應用程式介面(API)客戶端命令積體電路設計服務基礎設施110基於使用者為一個或多個模板積體電路設計選擇的一組設計參數值自動產生積體電路設計。在一些實施方案中,積體電路設計服務基礎設施110可經配置以產生類似於圖3中所展示的積體電路設計310、如圖4所示的積體電路設計410、如圖5所示的積體電路設計510,及/或如圖6所示的積體電路設計610的積體電路設計。
積體電路設計服務基礎設施110可以包括暫存器傳輸級(RTL)服務模組,其被配置為基於設計參數資料結構為積體電路產生RTL資料結構。例如,RTL服務模組可以實施為Scala代碼。例如,RTL服務模組可以使用Chisel來實施。例如,RTL服務模組可以使用暫存器傳輸級(FIRRTL)的靈活中間表示及/或FIRRTL編譯器來實施。例如,RTL服務模組可以使用Diplomacy來實施。例如,RTL服務模組可以使良好設計的晶片能夠使用Diplomacy、Chisel及FIRRTL的混合從配置設置的高級集合自動開發。RTL服務模組可以將設計參數資料結構(例如java腳本物件表示法(JSON)檔案)作為晶片的輸入及輸出RTL資料結構(例如Verilog檔案)。
在一些實施方式中,積體電路設計服務基礎設施110可以調用(例如,經由網路106上的網路通訊)由運行一個或多個FPGA的FPGA/模擬伺服器120或者其他類型的硬體或軟體模擬器執行的所得設計的測試。例如,積體電路設計服務基礎設施110可以調用使用基於現場可程式閘陣列模擬資料結構編程的現場可程式閘陣列的測試以獲得模擬結果。現場可程式閘陣列可以在可以是雲端伺服器的FPGA/模擬伺服器120上運行。測試結果可以由FPGA/模擬伺服器120返回到積體電路設計服務基礎設施110,並以有用的格式中繼給使用者(例如,經由網頁客戶端或腳本API客戶端)。
積體電路設計服務基礎設施110還可以促進在與製造商伺服器130相關聯的製造設施中使用積體電路設計來製造積體電路。在一些實施方式中,基於積體電路的物理設計資料結構的物理設計規範(例如,圖形資料系統(GDS)檔案,例如GDSII檔案)被傳輸到製造商伺服器130以調用積體電路的製造(例如,使用相關製造商的製造設備)。例如,製造商伺服器 130 可以代管晶圓代廠工投片(foundry tape-out)網站,其被配置為接收物理設計規範(例如,GDSII 檔案或開放式原圖系統交換標準(open artwork system interchange standard, OASIS)檔案)以安排或以其他方式促進積體電路的製造。在一些實施方式中,積體電路設計服務基礎設施110支援多租戶以允許多個積體電路設計(例如,來自一個或多個使用者)分擔製造的固定成本(例如,標線(rectile)/光罩產生,及/或共乘晶圓(shuttles wafer)測試)。例如,積體電路設計服務基礎設施110可以使用固定封裝(例如,準標準化封裝),其被定義而降低固定成本並促進標線/光罩、晶圓測試及其他固定製造成本的分擔。例如,物理設計規範可以包括來自一個或多個分別的物理設計資料結構的一個或多個物理設計,以便促進多租戶製造。
回應於物理設計規範的傳輸,與製造商伺服器130相關聯的製造商可以基於積體電路設計以製造及/或測試積體電路。例如,相關製造商(例如,晶圓代工廠)可以執行光學鄰近校正(optical proximity correction, OPC)及類似的投片後/生產前處理,在定期或非同步製造過程的狀態上製造積體電路132,更新積體電路設計服務基礎設施 110(例如,經由與控制器或網頁應用伺服器的通訊),執行適當的測試(例如,晶圓測試),並發送到封裝廠進行封裝。封裝廠可以從製造商及測試材料接收完成的晶圓或晶粒,並且在封裝及交付過程的狀態上週期性地或非同步地更新積體電路設計服務基礎設施110。在一些實施方式中,當使用者使用網頁介面查看時,狀態更新可以中繼給使用者,及/或控制器可以藉由電子郵件向使用者告知更新已可獲得。
在一些實施方式中,所得積體電路132(例如,物理晶片)被遞送(例如,藉由郵件)到與矽測試伺服器140相關聯的矽測試服務提供商。在一些實施方式中,所得積體電路132(例如,物理晶片)安裝在由矽測試伺服器140(例如,雲伺服器)控制的系統中,使它們可以快速存取以使用網路通訊遠程運行及測試,以控制積體電路132的操作。例如,到控制製造的積體電路132的矽測試伺服器140的登錄可被發送到積體電路設計服務基礎設施110,並且中繼到使用者(例如,經由網頁客戶端)。例如,積體電路設計服務基礎設施110可用於控制一個或多個積體電路132的測試。
圖2是用於促進具有改進的互連的積體電路的產生、用於促進積體電路的電路表示的產生及/或用於編程或製造積體電路的系統200的示例的方塊圖。系統200是計算裝置的內部配置的示例,其可用於實施積體電路設計服務基礎設施110,及/或產生檔案,該檔案產生積體電路設計的電路表示,如圖3所示的積體電路設計310、如圖4所示積體電路設計410、如圖5所示積體電路設計510、及/或如圖6所示積體電路設計610。系統 200可以包括組件或單元,例如處理器 202、匯流排 204、記憶體 206、週邊設備 214、電源216、網路通訊介面 218、使用者介面 220、其他合適的組件,或它們的組合。
處理器202可以是中央處理單元(CPU),例如微處理器,並且可以包括具有單個或多個處理核的單個或多個處理器。或者,處理器202可以包括能夠操縱或處理資訊的現在存在的或以後開發的另一種類型的裝置或多個裝置。例如,處理器202可以包括以任何方式互連的多個處理器,包括硬配線或聯網式,包括無線聯網式。在一些實施中,處理器202的操作可以分佈在多個物理裝置或單元上,這些物理裝置或單元可以直接耦合或分佈在區域網路或其他合適類型的網路上。在一些實施方式中,處理器202可以包括用於操作資料或指令的本地儲存的快取或快取記憶體。
記憶體206可以包括揮發性記憶體、非揮發性記憶體或其組合。 例如,記憶體206可以包括揮發性記憶體,例如一個或多個動態隨機存取記憶體(DRAM)模組,例如雙倍資料速率(DDR)同步DRAM(SDRAM),以及非揮發性記憶體,例如磁碟驅動器,固態驅動器、快閃記憶體、相變記憶體(Phase-Change Memory, PCM)或任何形式的能夠持久電子資訊儲存的非揮發性記憶體,例如在沒有主動電源的情況下。記憶體206可以包括現在存在的或以後開發的另一種類型的裝置或多個裝置,其能夠儲存資料或指令以供處理器202處理。處理器202可以經由匯流排204存取或操作記憶體206中的資料。儘管在圖2中顯示為單個塊,記憶體206可以實施為多個單元。例如,系統200可以包括揮發性記憶體,例如隨機存取記憶體(RAM),以及持久性記憶體,例如硬碟驅動器或其他儲存裝置。
記憶體206可以包括可執行指令208、諸如應用資料210的資料、作業系統212或其組合,以供處理器202立即存取。可執行指令208可以包括,例如,一個或更多的應用程式,其可以全部或部分地從非揮發性記憶體載入或複製到揮發性記憶體以由處理器202執行。可執行指令208可以組織成可編程模組或演算法、功能程式、代碼、代碼段或其組合,以執行此處描述的各種功能。例如,可執行指令208可以包括可由處理器202執行的指令以使得系統200回應於命令自動產生積體電路設計及基於設計參數資料結構的關聯測試結果。應用資料210可以包括例如使用者檔案、資料庫目錄或字典、配置資訊或功能程式,例如網頁瀏覽器、網頁伺服器、資料庫伺服器、或其組合。作業系統212例如可以是Microsoft Windows®、macOS®或Linux®;用於小型裝置(例如智慧型手機或平板裝置)的作業系統;或用於大型裝置(例如大型電腦)的作業系統。記憶體206可以包括一個或多個裝置並且可以利用一種或多種類型的記憶體,例如固態或磁性儲存器。
週邊設備214可以經由匯流排204耦合到處理器202。週邊設備214可以是感測器或偵測器,或者包含任意數量的感測器或偵測器的裝置,其可以監控系統200本身或系統200周圍的環境。例如,系統200可以包含用於測量系統200的組件(例如處理器202)的溫度的溫度感測器。可以想到,其他感測器或偵測器可以與系統200一起使用。在一些實施方式中,電源216可以是電池,並且系統200可以獨立於外部配電系統運行。系統200的任何組件,例如週邊設備214或電源216,可以經由匯流排204與處理器202通訊。
網路通訊介面218也可以經由匯流排204耦合到處理器202。在一些實施方式中,網路通訊介面218可以包括一個或多個收發器。 網路通訊介面218例如可以提供到網路的連接或鏈接,例如圖1所示的網路106、經由網路介面,其可以是有線網路介面,如乙太網路,或是無線網路介面。例如,系統200可以藉由網路通訊介面218及使用一種或多種網路協定的網路介面與其他裝置通訊,例如乙太網路、傳輸控制協定(TCP)、網際網路協定(IP)、電力線通訊(PLC)、Wi-Fi、紅外線、通用封包無線電服務(GPRS)、全球移動通訊系統(GSM)、分碼多重存取(CDMA)或其他合適的協定。
使用者介面220可以包括顯示器;位置輸入裝置,例如滑鼠、觸控板、觸控螢幕等;鍵盤;或其他合適的人或機器介面裝置。使用者介面220可以經由匯流排204耦合到處理器202。除了顯示器之外或作為顯示器的替代,可以提供允許使用者編程或以其他方式使用系統200的其他介面裝置。在一些實施方式中,使用者介面220可以包括顯示器,其可以是液晶顯示器(LCD)、陰極射線管(CRT)、發光二極管(LED)顯示器(例如,有機發光二極管(OLED)顯示器)或其他合適的顯示器。在一些實施方式中,客戶端或伺服器可以省略週邊設備214。處理器202的操作可以分佈在多個客戶端或伺服器上,這些客戶端或伺服器可以直接耦合或藉由區域網路或其他合適類型的網路耦合。記憶體206可以分佈在多個客戶端或伺服器上,例如基於網路的記憶體或執行客戶端或伺服器的操作的多個客戶端或伺服器中的記憶體。儘管這裡被描述為單個匯流排,但是匯流排204可以由多個匯流排組成,這些匯流排可以通過各種橋接器、控制器或適配器相互連接。
非暫時性電腦可讀媒體可以儲存電路表示,當由電腦處理時,該電路表示用於編程或製造積體電路。例如,電路表示可以描述使用電腦可讀語法指定的積體電路。電腦可讀語法可以指定積體電路的結構或功能或其組合。在一些實施中,電路表示可以採用硬體描述語言(HDL)程式、暫存器傳輸級(RTL)資料結構、暫存器傳輸級資料結構的靈活中間表示(FIRRTL為“暫存器傳輸級的靈活中間表示”的簡稱)、圖形設計系統 II(GDSII)資料結構、網表或其組合。在一些實施方式中,積體電路可以採用現場可程式閘陣列(FPGA)、專用積體電路(ASIC)、系統單晶片(SoC)或其某種組合的形式。電腦可以處理電路表示以便編程或製造積體電路,這可以包括編程現場可程式閘陣列(FPGA)或製造專用積體電路(ASIC)或系統單晶片(SoC)。在一些實施方式中,電路表示可以包括檔案,當由電腦處理時,該檔案可以產生積體電路的新描述。例如,電路表示可以用Chisel之類的語言編寫,這是一種嵌入Scala的HDL,Scala是一種支援物件導向編程及函數式編程的靜態類型通用編程語言。
在示例中,電路表示可以是Chisel語言程式,其可以由電腦執行以產生以FIRRTL資料結構表示的電路表示。在一些實施方式中,處理步驟的設計流程可用於將電路表示處理成一個或多個中間電路表示,隨後是最終電路表示,該最終電路表示隨後被用於編程或製造積體電路。 在一個示例中,Chisel程式形式的電路表示可以儲存在非暫時性電腦可讀媒體上並且可以由電腦處理以產生FIRRTL電路表示。電腦可以處理FIRRTL電路表示以產生RTL電路表示。RTL電路表示可由電腦處理以產生網表電路表示。 網表電路表示可由電腦處理以產生GDSII電路表示。GDSII電路表示可由電腦處理以產生積體電路。
在另一示例中,Verilog或VHDL形式的電路表示可以儲存在非暫時性電腦可讀媒體上並且可以由電腦處理以產生RTL電路表示。RTL電路表示可由電腦處理以產生網表電路表示。網表電路表示可由電腦處理以產生 GDSII 電路表示。GDSII 電路表示可由電腦處理以產生積體電路。取決於實施方式,前述步驟可以由相同電腦、不同電腦或其某種組合來執行。
圖3是用於使用模擬模型替換模組描述的實例的系統300的示例的方塊圖。 系統300可以包括積體電路設計310、控制介面320、資料館(library)330、編譯器340及模擬器350。積體電路產生器可以用於產生積體電路設計310。例如,如圖1所示的積體電路 設計服務基礎設施110可用於產生積體電路設計310。產生器可使用嵌入支援物件導向編程及/或函數式編程的通用編程語言(例如,Scala)中的HDL。例如,Chisel(一種嵌入在 Scala 中的開源HDL,Scala是一種支援物件導向編程及函數式編程的靜態類型通用編程語言)可用於產生積體電路設計310。例如,積體電路設計310可以被編碼於中間表示(IR)資料結構之中(例如,FIRRTL資料結構)。
積體電路設計310可以包括模組描述。 模組描述可以描述模組(例如,處理器核或快取)的功能操作。積體電路設計310可以被執行以使其被擬訂(例如,擴展)以包括模組描述的實例。例如,積體電路設計310可以擴展為包括模組描述1的實例1到N,以及模組描述2的實例1到M。可以使用通用編程語言的函數(例如, 嵌入在Scala中)來操縱模組描述。 模組描述的介面可以用與通用編程語言相關聯的類型而被編碼。
模組描述的實例可以包括輸入及/或輸出並且可以表示要在積體電路設計中(例如,處理器核或快取)實施的硬體。例如,模組描述1可以對應於處理器核,模組描述1的實例1到N可以對應於處理器核的N個實例。 另外,模組描述2可以對應於快取,並且模組描述2的實例1到M可以對應於快取的M個實例。 此外,一個或多個實例可以被配置為彼此通訊,例如經由系統匯流排。
控制介面320可以在系統300中執行以接收指示用模擬模型替換模組描述(在積體電路設計310中)的第一實例的參數。例如,控制介面320可以是在系統300中執行的API。控制介面320可以接收指向要被替換的積體電路設計310中的第一實例的第一參數及指向要用於替換的模擬模型的第二參數。 例如,控制介面320可以接收指向積體電路設計310中的模組描述1的實例1的第一參數(例如,將被替換)及指向資料館330中的模擬模型A的第二參數(例如,向用於替換模組描述1的實例1)。 模擬模型可以包括以預定方式模擬硬體操作的軟體,例如,提供特定輸入及/或輸出。模擬模型也可以經由描述被替換的實例的軟體來簡化。例如,模擬模型A可以包括模擬由模組描述1的實例1(例如,處理器核)表示的硬體的操作的軟體。此外,模擬模型A可以藉由描述與模組描述 1(例如,處理器核)的實例1相關聯的邏輯的軟體來簡化。在一些實施中,參數可以指定多個實例以被一個或多個模擬模型替換。
控制介面320可進一步在系統300中執行以為編譯器340產生一個或多個編譯器註釋335。註釋335可基於參數。註釋335可用於建構及/或修改由編譯器340執行的一個或多個轉換。在一些實施中,註釋335可包括序列化資料格式的一個或多個字符串。編譯器340可以編譯積體電路設計310(例如,基於註釋335執行轉換)以產生RTL資料結構345,其中與第一實例相關聯的邏輯描述被與在RTL資料結構345中的模擬模型相關聯的邏輯描述所替代。例如,編譯器340可以編譯積體電路設計310以產生RTL資料結構345,其中與模組描述1的實例1相關聯的邏輯描述被與在RTL資料結構345中模擬模型A相關聯的邏輯描述所替代。在一些實施中,編譯器340可以是FIRRTL編譯器,其編譯積體電路設計310以產生RTL資料結構。在一些實施方式中,編譯器340編譯積體電路設計310以產生包括Verilog的RTL資料結構。在編譯之後,與第一實例相關聯的邏輯描述可以由與在RTL資料結構345中的模擬模型相關聯的邏輯描述替代。例如,與模組描述1的實例1相關聯的邏輯描述可以由與在邏輯RTL資料結構345中的模擬模型 A(例如,來自資料館 330)相關聯的描述替代。
模擬器350可以是原生不支援模型替換的模擬器(例如 Verilator),然後可以模擬RTL資料結構345,其中與第一個實例相關聯的邏輯描述被與在RTL資料結構345中的模擬模型相關聯的邏輯描述所替代。換言之,由模擬器350模擬的RTL 資料結構345可能已經具有與第一實例相關聯的邏輯描述,該第一實例被與模擬模型(例如,基於參數)相關聯的邏輯描述所替代。 例如,由模擬器350模擬的RTL資料結構345可以具有與模組描述1的實例1相關聯的邏輯描述,該模組描述1被替換為與在RTL資料結構345中的模擬模型A(例如,來自資料館330)相關聯的邏輯描述。
模擬器350然後可以模擬RTL資料結構345以驗證(例如,測試)設計中的邏輯(例如與模組描述的第二實例相關聯的邏輯描述),其中益處是某邏輯被模擬模型替換。使用模擬模型可以允許藉由改進對邊角案例的覆蓋進行測試,例如藉由控制正在被使用的模擬模型的行為。使用模擬模型還可以允許更快的測試,例如藉由使用與模擬模型相關聯的軟體來簡化設計中的邏輯描述。例如,模擬器350可以模擬RTL資料結構345以驗證與模組描述的另一個實例相關聯的邏輯。結果,積體電路設計310中的模組描述的實例(例如,模組描述1的實例1)可以被編程地選擇用於由模擬模型(例如,模擬模型A)替換。控制介面320及編譯器340可以促進用模擬模型替換實例。這可以改善模擬器350的測試效率及/或可以使設計及模擬過程保持同步。
在一些實施方式中,模擬模型可以用於模擬系統匯流排上的流量。換句話說,模擬模型可以是匯流排功能模型或流量產生器。例如,與模擬模型相關聯的邏輯可用於模擬處理器核在系統匯流排上產生流量。在一些實施中,模擬模型可用於模擬藉由系統匯流排儲存資料及/或回應記憶體請求。例如,與模擬模型相關聯的邏輯可用於模擬快取(例如,與處理器核相關聯的私有L2快取,或與多個處理器核相關聯的共享3級(L3)快取)。在一些實施方式中,資料館330可以包括模擬不同類型硬體的多個模擬模型。例如,模擬模型A可用於模擬第一類處理器核,模擬模型B可用於模擬第二類處理器核,模擬模型C可用於模擬第一類快取,等等。
圖4是用於使用模擬模型替換模組描述的實例的系統400的另一示例的方塊圖。系統400可以包括積體電路設計410、控制介面420、資料館430及編譯器440,分別如圖3所示的積體電路設計310、控制介面320、資料館330及編譯器340。積體電路產生器可用於產生積體電路設計410。例如,圖1中所示的積體電路設計服務基礎設施110可用於產生積體電路設計410。
控制介面420可以在系統400中執行以接收指示用模擬模型替換模組描述的第一實例(在積體電路設計410中)的參數。例如,控制介面420可以是在系統400中執行的API。控制介面420可以接收指向要替換的積體電路設計410中的第一實例的第一參數及指向要用於替換的模擬模型的第二參數。例如,控制介面420可以接收指向積體電路設計410中的模組描述1的實例1的第一參數(例如,將被替換)及指向資料館430中的模擬模型B的第二參數(例如,到用於替換模組描述 1 的實例 1)。 在一些實施中,參數可以指定多個實例,其被一個或多個模擬模型替換。
控制介面420可進一步在系統400中執行以為編譯器440產生一個或多個編譯器註釋435。註釋435可基於參數。註釋435可用於建構及/或修改由編譯器440執行的一個或多個轉換。在一些實施中,註釋435可包括序列化資料格式的一個或多個字符串。當模擬RTL資料結構445的時候,編譯器440可產生用於模擬器450的指令448(例如,基於註釋435執行轉換)以使用與模擬模型相關聯的邏輯描述替換與在RTL資料結構中的第一實例相關聯的邏輯描述。例如,編譯器440可以為模擬器產生配置檔案。另外,編譯器440可以編譯積體電路設計410以產生RTL資料結構445(不用使用與模擬模型相關聯的邏輯描述替換與第一實例相關聯的邏輯描述)。 例如,當模擬RTL資料結構445的時候,編譯器440可以為模擬器450產生RTL資料結構445及指令448,以使用與模擬模型B相關聯的邏輯描述(例如,來自資料館430)替換與模組描述1的實例1相關聯的邏輯描述。在一些實施中,編譯器440可以是FIRRTL編譯器,其產生指令448並編譯積體電路設計410以產生RTL資料結構。在一些實施方式中,編譯器440可以產生指令448並且編譯積體電路設計410以產生包括Verilog的RTL資料結構。 在一些實施方式中,指令448可以包括Verilog。在編譯之後,與在RTL資料結構 445中的第一個實例相關聯的邏輯描述可以保留在RTL資料結構445中,並且可以發出指令以供模擬器450將與第一個實例相關聯的邏輯描述替換為與模擬模型相關聯的邏輯描述。
模擬器450(其可以是原生支援模型替換的模擬器(例如Synopsys VCS))在模擬RTL資料結構445的時候可以使用指令448。例如,當模擬RTL資料結構445的時候,模擬器450可以使用指令448以將與模組描述1的實例1相關聯的邏輯描述替換為與模擬模型B相關聯的邏輯描述。
然後,模擬器450可以基於指令448來模擬RTL資料結構445,以驗證(例如,測試)設計中的邏輯(例如與模組描述的第二實例相關聯的邏輯描述),其具有某些邏輯被模擬模型取代的好處。藉由控制正在被使用的模擬模型的行為,使用模擬模型可以允許測試具有改進的邊角案例覆蓋率。使用模擬模型還可以允許更快的測試,例如藉由使用與模擬模型相關聯的軟體來簡化設計中的邏輯描述 例如,模擬器450可以基於指令448模擬RTL資料結構445,以驗證與模組描述的另一個實例相關聯的邏輯。結果,積體電路設計410中的模組描述的實例(例如,模組描述1的實例1)可以被編程地選擇用於由模擬模型(例如,模擬模型B)替換。控制介面420及編譯器440可以促進用模擬模型替換實例。這可以改善模擬器450的測試效率及/或可以使設計及模擬過程保持同步。
圖5是包括具有模組描述實例的積體電路設計510的系統500的示例的方塊圖。系統500可以包括積體電路設計510及控制介面520,如圖3所示的積體電路設計310及控制介面320及/或如圖4所示的積體電路設計410及控制介面420。積體電路產生器可用於產生積體電路設計510。例如,圖1中所示的積體電路設計服務基礎設施110可用於產生積體電路設計510。
積體電路設計510可以被擬訂(例如,擴展)以包括一個或多個模組描述的一個或多個實例,例如第一模組描述的實例515A至515C,以及第二模組描述的實例517A。例如,實例515A到515C可以是對應於處理器核(例如,處理器核1、處理器核2及處理器核3)的模組描述的實例。例如,實例517A可以是對應於快取(例如,由處理器核1、處理器核2及處理器核3共享的L3快取)的模組描述的實例。可以藉由執行積體電路設計510來細化積體電路設計510。例如,可以藉由執行Chisel來擬訂積體電路設計510。積體電路設計510可以被編碼於IR資料結構中(例如,FIRRTL資料結構)。此外,實例可以包括積體電路設計510中的有線連接,例如到系統匯流排560的連接。例如,實例515A到515C及實例517A可以被設計成經由系統匯流排560彼此通訊。
圖6是包括積體電路設計610的系統600的示例的方塊圖,其中模組描述的實例被選擇用於由模擬模型替換。系統600可以包括積體電路設計610及控制介面620,如圖5所示的積體電路設計510及控制介面520。積體電路產生器可用於產生積體電路設計610。例如,圖1中所示的積體電路設計服務基礎設施110可用於產生積體電路設計610。
積體電路設計610可以被細化(例如,擴展)以包括一個或多個模組描述的一個或多個實例,例如第一模組描述的實例615A至615C,以及第二模組描述的實例617A。例如,實例615A到615C可以是對應於處理器核(例如,處理器核1、處理器核2及處理器核3)的模組描述的實例。例如,實例617A可以是對應於快取(例如,由處理器核1、處理器核2及處理器核3共享的L3快取)的模組描述的實例。 可以藉由執行積體電路設計610來細化積體電路設計610。積體電路設計610可以被編碼於IR資料結構中(例如,FIRRTL資料結構)。例如,可以藉由執行Chisel來細化積體電路設計610。此外,實例可以包括積體電路設計610中的有線連接,例如到系統匯流排660的連接。例如,實例615A到615C及實例617A可以被設計成經由系統匯流排660彼此通訊。
諸如應用程式介面(API)之類的控制介面620可以接收指示用模擬模型替換積體電路設計610中的實例的參數。例如,控制介面620可以接收指示用模擬模型632替換積體電路設計610中的實例615A的參數。這些參數可以用於產生一個或多個註釋(例如,註釋335或註釋435)用於編譯器(例如,編譯器340或編譯器440)以編譯積體電路設計以產生RTL資料結構(例如,RTL資料結構345或RTL資料結構445)及/或指令(例如,指令448 )以用於模擬器。例如,註釋可用於建構及/或修改由編譯器使用的一個或多個轉換。例如,模擬模型632可以是匯流排功能模型(例如,流量產生器),其被配置為在系統匯流排660上產生預定的流量模式,例如測試與實例617A(例如,快取)相關聯的邏輯描述。結果,積體電路設計中模組描述的實例可以編程方式選擇用於由模擬模型替換,例如實例615A被編程方式選擇用於由模擬模型632替換。控制介面620及編譯器(例如, 編譯器 340 或編譯器 440)可以促進用模擬模型取代實例。這可以改善模擬器的測試效率及/或可以使設計及模擬過程保持同步。
圖7是用於用模擬模型替換模組描述的實例的過程700的流程圖。 過程700包括產生702包括模組描述實例的積體電路設計;接收704參數,其指示用模擬模型替換積體電路設計中的實例;基於參數產生706註釋;使用註釋編譯708積體電路設計以產生用模擬模型替換實例的RTL資料結構; 模擬710 RTL資料結構;以及儲存及/或傳輸712積體電路設計。例如,過程700可以使用圖1所示的系統100、圖2所示系統200、圖3所示的系統300、圖4所示的系統400、圖5所示的系統500、及/或圖6所示的系統600來實施。
過程 700可以包括產生702包括模組描述實例的積體電路設計(例如,積體電路設計310或積體電路設計 410)。例如,圖1所示的積體電路設計服務基礎設施110可用於產生積體電路設計。產生器可以使用嵌入在支援物件導向編程及/或函數式編程的通用編程語言(例如,Scala)中的HDL。例如,Chisel可用於產生積體電路設計。積體電路設計可以編碼在IR資料結構中(例如,FIRRTL資料結構)。模組描述的實例可以代表要在積體電路設計中實施的硬體(例如,處理器核、快取等)。模組描述的實例可以包括輸入及/或輸出。
過程700還可以包括接收704參數,這些參數指示用模擬模型替換積體電路設計中的實例。例如,控制介面(例如,控制介面320或控制介面420)可以執行以接收指示用模擬模型替換模組描述(在積體電路設計中)的實例的參數。在一些實施方式中,控制介面可以是在系統中執行的API。控制介面可以接收指向積體電路設計中要被替換的實例的第一參數及指向要用於替換的模擬模型的第二參數。模擬模型可以包括以預定方式模擬硬體操作的軟體,例如,提供特定輸入及/或輸出。模擬模型也可以藉由描述被替換的設計中的邏輯描述的軟體來簡化。在一些實施中,參數可以指定多個實例以被一個或多個模擬模型替換。
過程700還可以包括基於參數產生706一個或多個編譯器註釋以供編譯器(例如,編譯器340或編譯器440)使用。例如,控制介面還可以在系統中執行以產生用於編譯器的一個或多個註釋。一個或多個註釋可以基於參數。一個或多個註釋可用於建構及/或修改由編譯器執行的一個或多個轉換。在一些實施方式中,一個或多個註釋可以包括序列化資料格式的一個或多個字符串。一個或多個註釋可以被配置為允許編譯器用與RTL資料結構中的模擬模型相關聯的邏輯描述替換與實例相關聯的邏輯描述。
過程700還可以包括使用一個或多個註釋編譯708積體電路設計。 編譯器可以編譯積體電路設計(例如,基於一個或多個註釋執行轉換)以產生 RTL資料結構,其中與實例相關聯的邏輯描述被替換為與在RTL資料結構中模擬模型相關聯的邏輯描述。 在一些實施中,編譯器可以是FIRRTL編譯器,其編譯積體電路設計(例如,在FIRRTL中)以產生RTL資料結構。在一些實施方式中,編譯器可以編譯積體電路設計以產生包括Verilog的RTL資料結構。在編譯之後,與實例相關的邏輯描述可以被與在RTL資料結構中的模擬模型相關的邏輯描述所取代。
過程700還可以包括模擬710 RTL資料結構以測試與積體電路設計的另一個實例相關聯的邏輯描述。例如,可能原生不支援模型替換的模擬器(例如 Verilator)可以模擬RTL資料結構,其中與實例關聯的邏輯描述被替換為與在RTL資料結構中模擬模型相關聯的邏輯描述(例如,被編譯器替換)。 換句話說,模擬器模擬的RTL資料結構可能已經將與實例相關的邏輯描述替換為在RTL資料結構中與模擬模型相關的邏輯描述。模擬器然後可以模擬RTL資料結構以驗證(例如,測試)設計中的邏輯(例如與設計中的另一個實例相關聯的邏輯描述),其中有某邏輯被模擬模型替換的好處。
過程700還可以包括儲存及/或傳輸712積體電路設計。可以儲存積體電路設計以用於後續步驟,例如合成、佈局及路由、時脈樹的實施及/或模擬分析。另外,積體電路設計可以被傳送用於積體電路的製造,例如SoC。
圖8是用於用模擬模型替換模組描述的實例的過程800的流程圖。 過程800包括產生802包括模組描述實例的積體電路設計;接收804指示用模擬模型替換積體電路設計中的第一個實例的參數;基於參數產生806註釋; 使用註釋編譯808積體電路設計以產生RTL資料結構及用於用與模擬模型相關聯的邏輯描述替換與第一實例相關聯的邏輯描述的指令; 模擬810 RTL資料結構;儲存及/或傳輸812積體電路設計。 例如,過程800可以使用圖1所示的系統100、圖2所示的系統200、圖3所示的系統300、圖4所示的系統400、圖5所示的系統500、及/或圖6所示的系統600來實施。
過程800可以包括產生802包括模組描述實例的積體電路設計(例如,積體電路設計310或積體電路設計410)。例如,圖1所示的積體電路設計服務基礎設施110可用於產生積體電路設計。產生器可以使用嵌入在支援物件導向編程及/或函數式編程的通用編程語言(例如,Scala)中的HDL。例如,Chisel可用於產生積體電路設計。積體電路設計可以被編碼在IR資料結構中(例如,FIRRTL 資料結構)。模組描述的實例可以代表要在積體電路設計中實施的硬體(例如,處理器核、快取等)。模組描述的實例可以包括輸入及/或輸出。
過程800還可以包括接收804參數,該參數指示用模擬模型替換積體電路設計中的實例。例如,控制介面(例如,控制介面320或控制介面420)可以執行以接收指示用模擬模型替換模組描述(在積體電路設計中)的實例的參數。在一些實施方式中,控制介面可以是在系統中執行的API。控制介面可以接收指向積體電路設計中要被替換的實例的第一參數及指向要用於替換的模擬模型的第二參數。模擬模型可以包括以預定方式模擬硬體操作的軟體,例如,提供特定輸入及/或輸出。模擬模型也可以藉由描述被替換的設計中的邏輯描述的軟體來簡化。在一些實施中,參數可以指定多個實例以被一個或多個模擬模型替換。
過程800還可以包括基於參數產生806一個或多個編譯器註釋以供編譯器(例如,編譯器340或編譯器440)使用。例如,控制介面還可以在系統中執行以產生用於編譯器的一個或多個註釋。一個或多個註釋可以基於參數。一個或多個註釋可用於建構及/或修改由編譯器執行的一個或多個轉換。在一些實施方式中,一個或多個註釋可以包括序列化資料格式的一個或多個字符串。一個或多個註釋可以被配置為允許編譯器產生指令以供模擬器在模擬RTL資料結構的時候用與模擬模型相關聯的邏輯描述替換與在RTL資料結構中的實例相關聯的邏輯描述。
過程800還可以包括使用一個或多個註釋編譯808積體電路設計。 編譯器可以編譯積體電路設計並為模擬器產生指令(例如,基於一個或多個註釋執行轉換)以用當模擬RTL資料結構的時候與模擬模型相關聯的邏輯描述替換在RTL資料結構中與實例相關聯的邏輯描述。換句話說,編譯器可以編譯積體電路設計以產生RTL資料結構,而無需將與實例相關的邏輯描述替換為與模擬模型相關的邏輯描述。編譯器可以產生指令,使得模擬器在模擬RTL資料結構時可以用與模擬模型相關聯的邏輯描述替換與實例相關聯的邏輯描述。在一些實施中,編譯器可以是FIRRTL編譯器,其編譯積體電路設計(例如,在 FIRRTL 中)以產生RTL資料結構。在一些實施方式中,編譯器可以編譯積體電路設計以產生包括Verilog的RTL資料結構。
過程800還可以包括使用指令模擬810 RTL資料結構,以測試與積體電路設計的另一個實例相關聯的邏輯描述。例如,原生可支援模型替換的模擬器(例如 Synopsys VCS)然後可以使用指令來模擬RTL資料結構。模擬器在模擬RTL資料結構時可以使用指令將與實例相關聯的邏輯描述替換為與模擬模型相關聯的邏輯描述。 模擬器然後可以模擬RTL資料結構以驗證(例如,測試)設計中的邏輯(例如與設計中的另一個實例相關聯的邏輯描述),其中有某邏輯被模擬模型替換的好處。
過程800還可以包括儲存及/或傳輸812積體電路設計。可以儲存積體電路設計以用於後續步驟,例如合成、佈局及佈線、時脈樹的實施及/或模擬分析。另外,積體電路設計可以被傳送以用於積體電路的製造,例如SoC。
在第一方面,本說明書中描述的主題可以體現在一種方法中,該方法包括:為積體電路產生積體電路設計,其中該積體電路設計包括描述模組的功能操作的模組描述的實例,其中實例包括輸入及輸出,並且其中積體電路設計被編碼於中間表示(IR)資料結構之中; 以及接收指示用模擬模型替換實例的參數,其中參數包括指向實例的第一參數及指向模擬模型的第二參數。 在一些實施方式中,該方法可以包括基於參數產生註釋以供編譯器使用以編譯具有由模擬模型替換的實例的積體電路設計。在一些實施方式中,該方法可以包括編譯積體電路設計以產生暫存器傳輸級(RTL)資料結構,其中RTL資料結構包括與模擬模型相關聯的邏輯描述。在一些實施中,該實例是模組描述的第一實例,並且該方法可以包括用與模擬模型相關聯的邏輯描述來模擬RTL資料結構以驗證與模組描述的第二實例相關聯的邏輯描述。 在一些實施中,IR資料結構是暫存器傳輸級(FIRRTL)資料結構的靈活中間表示,而RTL資料結構包括Verilog。在一些實施中,該方法可以包括為模擬器產生指令以模擬積體電路設計,其中指令允許模擬器用與模擬模型相關聯的邏輯描述替換與實例相關聯的邏輯描述。在一些實施方式中,該方法可以包括編譯積體電路設計以產生RTL資料結構,其中RTL資料結構包括與實例相關聯的邏輯描述; 以及使用指令來模擬RTL資料結構,其中模擬器將與實例相關聯的邏輯描述替換為與模擬模型相關聯的邏輯描述。在一些實施中,模擬模型是匯流排功能模型,其藉由在匯流排上產生流量來模擬實例的操作。在一些實施方式中,該方法可以包括從資料館中選擇模擬模型,其中在資料館中的第一模擬模型模擬處理器核,並且其中在資料館中的第二模擬模型模擬快取。在一些實施方式中,該方法可以包括執行應用程式介面(API)以接收參數。 在一些實施方式中,該方法可以包括執行產生器以產生積體電路設計,其中該產生器使用通用編程語言來配置。
在第二方面,本說明書中描述的主題可以體現在一種裝置中,該裝置包括:記憶體;以及被配置為執行儲存在記憶體中的指令的處理器以:產生用於積體電路的積體電路設計,其中積體電路設計包括描述模組的功能操作的模組描述的實例,其中該實例包括輸入及輸出,以及其中積體電路設計被編碼在IR資料結構中;以及接收指示用模擬模型替換實例的參數,其中參數包括指向實例的第一參數及指向模擬模型的第二參數。在一些實施方式中,處理器還被配置為執行儲存在記憶體中的指令以基於參數產生註釋以供編譯器使用以編譯具有由模擬模型替換的實例的積體電路設計。在一些實施方式中,處理器還被配置為執行儲存在記憶體中的指令以編譯積體電路設計以產生RTL資料結構,其中RTL資料結構包括與模擬模型相關聯的邏輯描述。在一些實施方式中,該實例是模組描述的第一實例,並且處理器還被配置為執行儲存在記憶體中的指令以使用與模擬模型相關聯的邏輯描述來模擬RTL資料結構,以驗證與模組描述的第二個實例相關聯的邏輯描述。在一些實施方式中,處理器還被配置為產生用於模擬器的指令以模擬積體電路設計,其中指令允許模擬器用與模擬模型相關聯的邏輯描述替換與實例相關聯的邏輯描述。
在第三方面,本說明書中描述的主題內容可以體現在包括指令的非暫時性電腦可讀儲存媒體中,該指令當由處理器執行時,使處理器:產生積體電路設計用於積體電路,其中積體電路設計包括描述模組的功能操作的模組描述的實例,其中實例包括輸入及輸出,並且其中積體電路設計被編碼在IR資料結構中;以及接收指示用模擬模型替換實例的參數,其中參數包括指向實例的第一參數及指向模擬模型的第二參數。在一些實施方式中,指令在由處理器執行時還使處理器基於參數產生註釋以供編譯器使用以編譯具有由模擬模型替換的實例的積體電路設計。在一些實施方式中,指令在由處理器執行時還使處理器編譯積體電路設計以產生RTL資料結構,其中RTL資料結構包括與模擬模型相關聯的邏輯描述。在一些實施方式中,指令在由處理器執行時還使處理器產生用於模擬器的指令以模擬積體電路設計,其中指令允許模擬器用與模擬模型相關聯的邏輯描述替換與實例關聯的邏輯描述。
儘管已經結合某些實施例描述了本揭示,但是應當理解,本揭示不限於所揭示的實施例,相反,旨在涵蓋各種修改、組合及等效佈置,其包含在所附請求項的範圍內,該範圍應給予最廣泛的解釋,以便包含法律允許的所有此類修改及等效結構。
100:用於產生及製造積體電路的系統
106:網路
110:積體電路設計服務基礎設施
120:現場可程式閘陣列(FPGA)/模擬器(EMU)伺服器
130:製造商伺服器
132:積體電路
140:矽測試伺服器
200:系統
202:處理器
204:匯流排
206:記憶體
208:可執行指令
210:應用資料
212:作業系統
214:週邊設備
216:電源
218:網路通訊介面
220:使用者介面
300、400:用於使用模擬模型替換模組描述的實例的系統
310、410、510、610:積體電路設計
320、420、520、620:控制介面
330、430:資料館
335、435:註釋
340、440:編譯器
345、445:暫存器傳輸級(RTL)資料結構
350、450:模擬器
448:指令
500:具有模組描述實例的積體電路設計的系統
515A、615A:模組1的實例1
515B、615B:模組1的實例2
515C、615C:模組1的實例3
517A、617A:模組2的實例1
600:包括積體電路設計的系統
632:模型A
700、702、704、706、708、710、712、800、802、804、806、808、810、812:過程
當結合附圖閱讀時,從以下詳細描述可以最好地理解本揭示。需要強調的是,根據慣例,附圖的各種特徵不是按比例繪製的。相反,為了清楚起見,各種特徵的尺寸被任意擴大或縮小。
圖1是用於促進積體電路的產生及製造的系統的示例的方塊圖。
圖2是用於促進積體電路產生的系統的示例的方塊圖
圖3是用於用模擬模型替換模組描述的實例的系統的示例的方塊圖。
圖4是用於用模擬模型替換模組描述的實例的系統的另一示例的方塊圖。
圖5是包括具有模組描述實例的積體電路設計的系統的示例的方塊圖。
圖6是包括積體電路設計的系統的示例的方塊圖,其中模組描述的實例被選擇用於由模擬模型替換。
圖7是用模擬模型替換模組描述之實例的過程的流程圖。
圖8是用模擬模型替換模組描述之實例的另一個過程的流程圖。
700、702、704、706、708、710、712:過程
Claims (20)
- 一種方法,包括: 為一積體電路產生一積體電路設計,其中該積體電路設計包括描述一模組的一功能操作的一模組描述的一實例,其中該實例包括一輸入及一輸出,並且其中該積體電路設計被編碼於一中間表示(intermediate representation, IR)資料結構之中;及 接收指示用一模擬模型替換該實例的參數,其中該參數包括指向該實例的一第一參數及指向該模擬模型的一第二參數。
- 如請求項1所述的方法,還包括: 基於該參數產生一註釋,供一編譯器使用,以編譯具有由該模擬模型替換的該實例的該積體電路設計。
- 如請求項1所述的方法,還包括: 編譯該積體電路設計以產生暫存器傳輸級(RTL)資料結構,其中該RTL資料結構包括與該模擬模型相關聯的一邏輯描述。
- 如請求項3所述的方法,其中該實例是該模組描述的一第一實例,並且還包括: 用與該模擬模型相關聯的該邏輯描述來模擬該RTL資料結構,以驗證與該模組描述的一第二個實例相關聯的一邏輯描述。
- 如請求項3所述的方法,其中該IR資料結構是用於暫存器傳輸級(FIRRTL)資料結構的一靈活中間表示,並且其中該RTL資料結構包括Verilog。
- 如請求項1所述的方法,還包括: 為一模擬器產生指令以模擬該積體電路設計,其中該指令允許該模擬器用與該模擬模型相關聯的一邏輯描述替換與該實例相關聯的一邏輯描述。
- 如請求項6所述的方法,還包括: 編譯該積體電路設計以產生一RTL資料結構,其中該RTL資料結構包括與該實例相關聯的一邏輯描述;及 使用該指令來模擬該RTL資料結構,其中該模擬器用與該模擬模型相關聯的該邏輯描述替換與該實例相關聯的該邏輯描述。
- 如請求項1所述的方法,其中該模擬模型是一匯流排功能模型,其藉由在一匯流排上產生流量(traffic)來模擬該實例的操作。
- 如請求項1所述的方法,還包括: 從一資料館中選擇該模擬模型,其中在該資料館中的一第一模擬模型模擬一處理器核,並且其中在該資料館中的一第二模擬模型模擬一快取。
- 如請求項1所述的方法,還包括: 執行一應用程式介面(API)以接收該參數。
- 如請求項1所述的方法,還包括: 執行一產生器以產生該積體電路設計,其中該產生器使用一通用編程語言而被配置。
- 一種裝置,包括: 一記憶體;及 一處理器,被配置為執行儲存在該記憶體中的指令以: 為一積體電路產生一積體電路設計,其中該積體電路設計包括描述一模組的一功能操作的一模組描述的一實例,其中該實例包括一輸入及一輸出,並且其中該積體電路設計被編碼於一IR資料結構之中;及 接收指示用一模擬模型替換該實例的參數,其中該參數包括指向該實例的一第一參數及指向該模擬模型的一第二參數。
- 如請求項12所述的裝置,其中該處理器還被配置為執行儲存在該記憶體中的指令以: 基於該參數產生一註釋,以供一編譯器使用,以編譯具有由該模擬模型替換的該實例的該積體電路設計。
- 如請求項12所述的裝置,其中該處理器還被配置為執行儲存在該記憶體中的指令以: 編譯該積體電路設計以產生一RTL資料結構,其中該RTL資料結構包括與該模擬模型相關聯的一邏輯描述。
- 如請求項14所述的裝置,其中該實例是該模組描述的一第一實例,並且其中該處理器還被配置為執行儲存在該記憶體中的指令以: 用與該模擬模型相關聯的該邏輯描述來模擬該RTL資料結構,以驗證與該模組描述的一第二個實例相關聯的一邏輯描述。
- 如請求項12所述的裝置,其中該處理器還被配置為執行儲存在該記憶體中的指令以: 為一模擬器產生指令以模擬該積體電路設計,其中該指令允許該模擬器用與該模擬模型相關聯的一邏輯描述替換與該實例相關聯的一邏輯描述。
- 一種非暫時性電腦可讀儲存介質,包括指令,當由一處理器執行時,使該處理器: 為一積體電路產生一積體電路設計,其中該積體電路設計包括描述一模組的一功能操作的一模組描述的一實例,其中該實例包括一輸入及一輸出,並且其中該積體電路設計被編碼於一IR表示資料結構之中;及 接收指示用一模擬模型替換該實例的參數,其中該參數包括指向該實例的一第一參數及指向該模擬模型的一第二參數。
- 如請求項17所述的暫時性電腦可讀儲存介質,其中該指令在由該處理器執行的時候進一步使該處理器: 基於該參數產生一註釋,以供該編譯器使用,以編譯具有由該模擬模型替換的該實例的該積體電路設計。
- 如請求項17所述的暫時性電腦可讀儲存介質,其中該指令在由該處理器執行的時候還使該處理器: 編譯該積體電路設計以產生一RTL資料結構,其中該RTL資料結構包括與該模擬模型相關聯的一邏輯描述。
- 如請求項17所述的暫時性電腦可讀儲存介質,其中該指令在由該處理器執行的時候進一步使該處理器: 為一模擬器產生指令以模擬該積體電路設計,其中該指令允許該模擬器用與該模擬模型相關聯的一邏輯描述替換與該實例相關聯的一邏輯描述。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263311543P | 2022-02-18 | 2022-02-18 | |
US63/311,543 | 2022-02-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202338655A true TW202338655A (zh) | 2023-10-01 |
Family
ID=85199251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112101254A TW202338655A (zh) | 2022-02-18 | 2023-01-11 | 具模組交換之積體電路設計驗證 |
Country Status (2)
Country | Link |
---|---|
TW (1) | TW202338655A (zh) |
WO (1) | WO2023158530A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117034822B (zh) * | 2023-10-10 | 2023-12-15 | 北京云枢创新软件技术有限公司 | 基于三步式仿真的验证方法、电子设备和介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6859878B2 (ja) * | 2017-07-06 | 2021-04-14 | 富士通株式会社 | シミュレーションプログラム、方法、及び装置 |
CN113051855A (zh) * | 2021-03-11 | 2021-06-29 | 黑芝麻智能科技(上海)有限公司 | 用于片上系统芯片验证的方法、系统及验证平台 |
CN113139359B (zh) * | 2021-03-29 | 2023-09-08 | 西安润道智检科技有限公司 | 基于fpga内嵌处理器的虚拟仿真测试方法 |
-
2023
- 2023-01-11 TW TW112101254A patent/TW202338655A/zh unknown
- 2023-01-11 WO PCT/US2023/010557 patent/WO2023158530A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023158530A1 (en) | 2023-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11048837B2 (en) | Generation of dynamic design flows for integrated circuits | |
US10922462B1 (en) | Intellectual property block validation and design integration for integrated circuits | |
US20230237217A1 (en) | Integrated circuits as a service | |
US11675945B2 (en) | Reset crossing and clock crossing interface for integrated circuit generation | |
US11645438B2 (en) | Generating a template-driven schematic from a netlist of electronic circuits | |
WO2020112999A1 (en) | Integrated circuits as a service | |
JP4140917B2 (ja) | 検証作業支援システム及びその方法 | |
TW202338655A (zh) | 具模組交換之積體電路設計驗證 | |
US11675959B2 (en) | Point-to-point module connection interface for integrated circuit generation | |
US10902171B1 (en) | Clock crossing interface for integrated circuit generation | |
US11023635B1 (en) | Sequence of frames generated by emulation and waveform reconstruction using the sequence of frames | |
US11080446B2 (en) | Method to regulate clock frequencies of hybrid electronic systems | |
TW202344987A (zh) | 具窄資料路徑向量收集 | |
US20230195980A1 (en) | Integrated Circuit Generation Using an Integrated Circuit Shell | |
TW202336627A (zh) | 具訊號強制之積體電路設計驗證 | |
US20240211665A1 (en) | Integrated circuit generator using a provider | |
TW202336626A (zh) | 使用元資料之積體電路設計 | |
US10936776B1 (en) | Analyzing waveform data generated for simulated circuit design | |
WO2023121958A1 (en) | Integrated circuit generation with composable interconnect | |
US20240220693A1 (en) | Making Circuitry Having An Attribute | |
WO2023121832A1 (en) | Integrated circuit generation with improved interconnect | |
Etxeberria et al. | Enabling co-simulation of smart energy control systems for buildings and districts | |
Saji et al. | Test suite for SoC interconnect verification | |
US20230267253A1 (en) | Automated synthesis of virtual system-on-chip environments | |
Drabik et al. | Object-oriented hardware-software model based on novel CII concept |