TWI767231B - 用於機器學習的電子系統級建模的系統和方法 - Google Patents
用於機器學習的電子系統級建模的系統和方法 Download PDFInfo
- Publication number
- TWI767231B TWI767231B TW109116552A TW109116552A TWI767231B TW I767231 B TWI767231 B TW I767231B TW 109116552 A TW109116552 A TW 109116552A TW 109116552 A TW109116552 A TW 109116552A TW I767231 B TWI767231 B TW I767231B
- Authority
- TW
- Taiwan
- Prior art keywords
- machine learning
- network
- training
- operations
- hardware configuration
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7896—Modular architectures, e.g. assembled from a number of identical packages
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0499—Feedforward networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/09—Supervised learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Geometry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Architecture (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Operation Control Of Excavators (AREA)
- Feedback Control In General (AREA)
- Electrically Operated Instructional Devices (AREA)
- Selective Calling Equipment (AREA)
Abstract
一種方法包括接收用於執行與機器學習演算法相關聯的多個操作的原始程式碼、將每個操作分類為快速操作組或慢速操作組、定義用於執行慢速組操作的網路以及將網路映像到初始機器學習硬體設定。此方法還包括在機器學習硬體上執行慢速操作組操作、回應於決定慢速組操作未能回應於至少一組輸入而產生預期結果來修改初始機器學習硬體設定;以及使用機器學習軟體程式碼執行快速組操作。一種非暫態電腦可讀存儲媒體及一種用於設計半導體裝置的系統亦在此揭示。
Description
本公開實施例涉及用於機器學習應用的電子系統級(ESL)的建模的系統和方法。
電子系統級(Electronic system level,ESL)設計和驗證方法集中於利用適當的抽象來提升對所提出的系統的理解,並提高成功實現期望功能並同時滿足功率、性能和面積(performance and area,PPA)目標的機率。
ESL方法作為一組補充工具而發展,其允許對在實現此系統中使用的硬體和軟體的系統設計、驗證和除錯的整合過程。在一些情況下,所得系統是單晶片系統(system on chip,SOC或SoC)、現場可程式設計閘陣列上系統(system-on-field programmable gate array,SOFPGA或SoFPGA)、板上系統(system-on-board,SOB或SoB)或多板系統(multi-board system)。
提供人工智慧(AI)特徵的機器學習(machine learning,ML)系統預期在許多應用中是有用的,包括
例如汽車系統、高性能計算、和/或物聯網(Internet of Things,IOT或IoT)(也稱為萬物聯網(Internet of Everything,IOE或IoE))。執行這種機器學習系統的高級綜合通常包括將初始演算法的程式碼轉換為更抽象的表示。例如,以解釋高級程式設計語言(例如,C/C++或Python)提供的演算法程式碼可以轉換為硬體描述語言(Hardware Description Language,HDL),例如,超高速積體電路(Very High Speed Integrated Circuit,VHSIC)、硬體描述語言(VHDL)或Verilog,以在抽象的寄存器傳輸等級(Register-Transfer Level,RTL)創建表示。
根據本公開的一個實施例,提供了一種使用機器學習應用的電子系統級(ESL)建模來設計半導體器件的方法,包括:接收原始程式碼,其中,原始程式碼可用於執行與機器學習演算法相關聯的多個操作;基於多個操作中的每個操作的預計執行時間將每個操作分類為快速組或慢速組;定義用於執行慢速組操作的網路,網路包括多個節點以及多個節點中的節點之間的互連;將網路映射到初始機器學習硬體設定;在初始機器學習硬體設定上執行慢速組操作;回應於確定慢速組操作未能回應於至少一組輸入而產生預期結果來修改初始機器學習硬體設定,以生成改進的機器學習硬體設定;在改進的機器學習硬體設定上執
行慢速組操作,並且回應於確定慢速組操作未能回應於至少一組輸入而產生預期結果來修改改進的機器學習硬體設定,以生成下一改進的機器學習硬體設定;繼續執行和修改操作直到慢速組操作回應於至少一組輸入而產生預期結果為止,以定義可操作機器學習硬體設定;以及使用從預定義模型庫選擇的標準單元來對被配置為半導體器件的可操作機器學習硬體設定進行建模。
根據本公開的另一實施例,提供了一種非暫態電腦可讀存儲介質,被編碼有用於使用機器學習應用的ESL建模設計半導體器件的一組指令,此組指令在由具有記憶體和使用者介面的電腦執行時,使得電腦:取回原始程式碼,原始程式碼可操作來執行與機器學習演算法相關聯的一系列操作;基於一系列操作中的每一個操作的預計執行時間,將一系列操作剖析為快速組操作或慢速組操作;定義用於執行慢速組操作的具有多個互連神經元的網路;針對每個互連神經元設置初始系列參數;取回訓練資料集;將訓練資料集應用於網路以獲得訓練網路;取回測試資料集;將測試資料集應用於訓練網路以生成測試結果;評估測試結果以標識最終訓練網路配置;以及基於最終訓練網路配置生成用於評估半導體器件設計的電子系統級(ESL)平台。
根據本公開的又一實施例,提供了一種用於設計半導體器件的系統,包括:剖析模組,可操作來:接收原始程式碼,其中,原始程式碼可操作來執行與機器學習演算法相關聯的多個操作;並且將多個操作中的每個操作剖析
為快速操作或慢速操作;分析模組,可操作來:執行快速操作的第一分析,並且基於分析,生成機器語言代碼和可操作來執行機器語言代碼的記憶體子系統硬體模組二者,其中,記憶體子系統硬體模組包括從模型庫選擇的多個標準單元;並且執行慢速操作的第二分析,並且基於第二分析,生成機器學習硬體模組,機器學習硬體模組被配置為可操作來執行慢速操作組操作的神經網路。
100:系統
102:模組
104:剖析模組
104a:模組
104b:模組
104c’:模組
104c”:模組
106:設計模組
108:分析/生成模組
110:模型庫
112:SOC塊描述庫
114:機器學習硬體模型
116:機器學習記憶體子系統模型
118:機器學習軟體模型
120:神經網路硬體模型
122:記憶體子系統硬體模型
124:機器學習程式碼
126:虛擬平台
128:裝置
130:神經網路
130a:全域SRAM
130b:DMA
130c:匯流排控制器
130d:互連的處理元件
130d’:互連的處理元件
132:圖形處理單元
134:中央處理單元
136:互連/匯流排
138:數位訊號處理器
140:靜態隨機存取記憶體/雙數據速率記憶體
142:直接存取記憶體
144:其他輸入/輸出裝置
146:設計驗證
148:磁帶輸出檔
150:裝置製造
200:系統
300:系統
400:系統
700:方法
702:神經網路
704:操作
706:操作
708:操作
710:操作
712:操作
714:操作
716:操作
718:操作
722:前饋模式
724:框
800:方法
804:操作
806a:操作
806b:操作
806c:操作
806d:操作
808a:操作
808b:操作
810:操作
812:操作
812a:操作
812b:操作
812c:操作
812d:操作
812e:操作
812f:操作
814:操作
900:流程
902:操作
904:操作
906:操作
908:操作
910:操作
912:操作
914:平台
當結合附圖閱讀時,從以下詳細描述中可以最好地理解本揭示。貫穿說明書和附圖,相同的附圖標記表示相同的特徵。
第1圖是根據一些實施例的系統的元件之間的初始交互的流程圖。
第2圖是根據一些實施例的在第1圖的交互之後的系統的元件之間的交互的流程圖。
第3圖是根據一些實施例的在第2圖的交互之後的系統的元件之間的交互的流程圖。
第4圖是根據一些實施例的在第3圖的交互之後的系統的元件之間的交互的流程圖。
第5圖是根據一些實施例的如第1圖所示的模組108內的元件之間的交互的流程圖。
第6圖是根據一些實施例的反映關於如第4圖所示的裝置128的附加細節的流程圖。
第7圖是根據一些實施例的反映用於開發機器學習應用的ESL模型的系統和方法700的一般操作的流程圖。
第8圖是根據一些實施例的反映用於開發機器學習應用的ESL模型的系統和方法800的操作的流程圖。
第9圖是根據被配置用於識別手寫數碼(numerals)的實施例的反映用於開發機器學習的ESL模型的機器學習硬體模型(machine learning hardware module,MLHM)的系統和方法的應用的圖表。
第10圖是根據被配置用於識別手寫數碼的實施例的反映用於開發機器學習的ESL模型的機器學習記憶體子系統和機器學習軟體模型的系統和方法的應用的圖表。
以下公開內容提供了用於實現所提供主題的不同特徵的許多不同的實施例或示例。以下描述了組件、值、操作、材料、佈置等的具體示例以簡化本揭示。當然,這些僅是示例而不意圖是限制性的。預期其他組件、值、操作、材料、佈置等。例如,在以下描述中在第二特徵上方或之上形成第一特徵可以包括其中第一和第二特徵以直接接觸形成的實施例,並且還可以包括其中可以在第一和第二特徵之間形成附加特徵以使得第一和第二特徵可以不直接接觸的實施例。此外,本揭示可以在各個示例中重複參考數碼和/或字母。該重複是為了簡單和清楚的目的,並且本身並不表示所討論的各種實施例和/或配置之間的關
係。
對提供人工智慧功能的機器學習系統進行建模通常選擇以解釋高級程式設計語言編寫的一個或多個初始演算法,包括例如Python、Java、C、C++、JavaScript等。然後將對應於所選(一個或多個)演算法的程式設計語言中的演算法(下文稱為程式碼(code))轉換為硬體描述語言(HDL),包括例如Verilog(IEEE 1364),以模擬可用於實現對機器學習系統進行建模的硬體,通常在抽象的寄存器傳輸等級(RTL)。
然而,對於更複雜的系統,在RTL處執行根據程式碼的模擬導致較長的模擬和回歸時間。取決於模擬的複雜性,在類比期間實現的處理速度不能匹配或甚至接近相應半導體裝置可以實現的速度。在一些情況下,在RTL處工作還限制了設計者劃分設計的硬體(HW)和軟體(SW)元素的靈活性。增加的處理和受限的配置靈活性導致對處理時間和記憶體資源二者的需求增加,以便模擬設計的學習/訓練和測試過程。
在系統和方法的一些實施例中,選擇適當的演算法以用於分配各種根據軟體和根據硬體的模擬工具,以便提高類比速度和效率。適當的演算法可以包括例如:貝葉斯分類器(Bayes classifier)(或樸素貝葉斯分類器(naïve Bayes classifier))演算法,其中,類別標籤被分配給問題實例,被表示為特徵值向量,每個特徵值被認為對於所有其他特徵值是獨立的;
最近鄰(nearest neighbor)演算法,其取點集合作為輸入,並通過重複地合併較小點群集以形成較大點群集來創建點群集的層級;決策樹(decision tree)演算法,其根據若干輸入變數預測目標變數的值;線性回歸(linear regression)演算法,其根據已知(x,y)對系列對因變數(y)和至少一個引數(x)之間的關係進行建模,以根據新值(x n )預測值(y n );前饋(feed forward)演算法,其中,應用於包括神經網路的神經元(或神經網路)的權重用於反覆運算計算每個層的梯度;反向傳播(backpropagation)演算法,用於計算用於調整應用於神經網路中的神經元的權重的梯度以便實現期望結果;高斯-牛頓(Gauss-Newton)演算法,用於求解非線性最小二乘問題的;和/或適用於實現期望機器學習系統功能的另一演算法。
儘管多層神經網路(neuron network,NN)能夠使用各種學習技術,但反向傳播特別有用。在NN的訓練階段期間,使用訓練資料集獲得的輸出值與正確答案進行比較,並用於計算相應誤差函數的值。此誤差函數然後被回饋通過NN並用於調整應用於每個連接的權重,以便減小誤差函數的值並提高NN的精度。在足夠大量的訓練
週期內重複反向傳播過程之後,經訓練的NN傾向於收斂於一組權重,此組權重產生在預定容限範圍內的誤差並且訓練被認為結束。一旦經過訓練,NN就可用於分析測試資料集。
第1圖是根據一些實施例的系統的元件之間的交互的流程圖。在模組102中提供對應於所選演算法的原始程式碼。原始程式碼被饋送到剖析(profiling)模組104,剖析模組104分析原始程式碼中固有的功能並允許對各種功能進行剖析或分類。然後將原始程式碼剖析操作的結果饋送到設計模組106,其中,結果用於生成ESL平台。剖析模組104和設計模組106可以被一起組合為分析/生成模組108。設計模組106在配置所得到的ESL平台設計時存取一個或多個模型庫110和/或SOC塊(block)描述庫112。所引用的模型庫110和SOC塊描述庫112包括標準單元和/或塊(也稱為巨集(macros)、核(cores)、IP或虛擬元件)的集合,其之前已經被設計和驗證用於與全定制設計、自動化佈局生成、物理設計、邏輯綜合和/或CAD工具相結合使用。單元和塊的一些集合可以特定於可用於定制的具體過程和/或多個等級的金屬化。
分析/生成模組108的輸出包括機器學習硬體模型114、機器學習記憶體子系統模型116和機器學習軟體模型118。機器學習軟體模型118被配置為在表示機器學習硬體模型114和機器學習記憶體子系統模型116的組合的裝置上運行。
第2圖是根據一些實施例的系統的元件之間的交互的流程圖,其中,機器學習硬體模型114進而被配置為神經網路硬體模型120。類似地,機器學習記憶體子系統模型116被配置能夠執行從機器學習軟體模型118匯出的機器學習程式碼124的記憶體子系統硬體模型122。然後組合神經網路硬體模型120和記憶體子系統硬體模型122以創建用於類比將在相應的物理半導體裝置上找到的各種功能元件的虛擬平台126。在一些實施例中,由機器學習硬體模型114、神經網路硬體模型120、機器學習記憶體子系統模型116、記憶體子系統硬體模型122、機器學習軟體模型118和/或機器學習程式碼124提供或在其中生成的結構資訊、操作和/或功能中的一些或全部可以合併到設計模組106中。在這樣的實施例中,設計模組106用於生成虛擬平台126。
第3圖是根據一些實施例的系統的元件之間的交互的流程圖,其中,虛擬平台126包括如裝置128中所示的多個離散元件。在此實施例中,離散元件包括例如神經網路130、圖形處理單元(GPU)132、中央處理單元(CPU)134、用於在各個元件之間提供電連接的互連或匯流排136、數位訊號處理器(DSP)138、靜態隨機存取記憶體(SRAM)/雙數據速率記憶體(DDR)140、直接存取記憶體(DMA)142和/或其他輸入/輸出裝置144。裝置128中的各種離散元件可以表示為裝置的電腦模擬、包括一個或多個功能單元的模擬的實際裝置的模擬或者諸如單
晶片系統(SOC)之類的根據功能半導體的裝置。
在一些實施例中,SOC組合各種不同的功能半導體裝置或元件,其進行協作以在單個基板上限定電子系統。在一些實施例中,SOC包含半導體裝置或元件,其被設計用於提供數位、類比、混合訊號和/或射頻(RF)功能的期望組合以用於解決具體問題、任務或相關問題/任務的族(family)。
在一些實施例中,SOC包括中央處理單元(微控制器或微處理器),具有或不具有程式碼壓縮演算法,與一個或多個週邊裝置以及一個或多個記憶體裝置相整合。一個或多個週邊裝置包括圖形處理單元(GPU)、數位訊號處理器(DSP)等。一個或多個記憶體裝置包括例如電可擦除可程式設計唯讀記憶體裝置(EEPROM)、快閃記憶體、直接記憶體存取裝置(DMA)(以及用於在外部介面和SOC記憶體之間路由(routing)資料並同時繞過處理器核從而提供資料輸送量的DMA控制器)、唯讀記憶體(ROM)、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等。
包括在一些實施例中的其他半導體裝置包括時序源,例如,振盪器、鎖相迴路、計數器、即時計時器、電源復位生成器等;外部介面,包括工業介面標準,如通用序列匯流排(USB)、火線(Fire Wire)、乙太網、通用同步和非同步接收器-發送器(USART)、串列週邊介面匯流排(SPI);類比介面,包括類比數位轉換器(ADC)
和數位類比轉換器(DAC);電壓調節器、電源管理電路;以及至少一個匯流排和匯流排控制器,用於控制包括在SOC中的各種功能元件之間的溝通和資料傳輸;以及DMA控制器,用於直接在外部介面和記憶體之間路由資料,繞過處理器核從而傾向於提高SOC的資料輸送量。
在一些實施例中,SOC包括上述硬體元件以及用於控制微控制器、微處理器和/或DSP核、週邊裝置和/或介面的相關聯軟體二者。一些SOC實施例的設計流程並行地開發硬體和軟體。
在一些實施例中,SOC是從被配置為提供上述功能範圍的預先限定的硬體或IP塊的集合(例如,SOC塊描述庫112)開發的。硬體塊與控制各種硬體塊的操作的軟體驅動程式相結合提供。在一些實施例中,在已經定義SOC的基本架構之後,可以利用例如在RTL抽象處的相應模型引入用於定義附加/修改電路行為的附加硬體元件。然後,由設計者組合和改進附加和/或修改電路行為以及與原始模型相組合的相應元件以實現完整SOC設計。
第4圖是根據一些實施例的系統的元件之間的交互的流程圖,其中,裝置128的設計受制於附加功能和佈局設計驗證146。當設計已通過功能驗證和佈局設計驗證二者時,裝置128的經驗證的設計用於生成磁帶輸出檔(tape out file)148。所生成的磁帶輸出檔148然後用於製造與所選製造工藝的設計規則相對應的功能半導體裝置。在一些實施例中,如果所提出的設計未通過任何驗
證步驟,則設計者進行故障(failure)分析以識別和理解導致故障的問題,並然後修改、修正或糾正故障設計以利用改進的設計解決所識別的問題。根據故障的性質,在一些實施例中,系統向設計者提供用於解決或消除故障的建議修改、改編和/或校正。在一些實施例中,改進的設計然後將在更新嘗試中經歷相同(或經修改的)一系列驗證、模擬和/或模擬過程,以產生用於生產的經驗證的設計。
在電子設計自動化(EDA)過程中,功能驗證涉及驗證邏輯設計符合規範。功能驗證是設計驗證過程的一部分,在此期間還考慮了各種非功能性方面,如時序、物理佈局和功耗。功能驗證是越來越複雜的任務,並且在一些實施例中,消耗大型電子系統設計專案中的大部分時間和精力。用於功能驗證的時間和精力是可能的測試用例的數量以及可應用於甚至相對簡單的設計的條件的函數。對於更複雜的設計,驗證每組可能的條件和輸入將極度耗時,因此已經開發了許多方法來提供在減少的時間量內滿足誤差容限的測試等級。
在一些實施例中,EDA過程包括用於驗證具體裝置設計的功能和佈局的多個步驟。在一些實施例中,驗證步驟包括初始高級合成(也稱為行為合成或演算法合成),其中,演算法的高級設計描述被轉換為RTL設計抽象。在一些實施例中,RTL設計抽象包括名義上能夠執行演算法的邏輯閘(邏輯合成)的離散網表(netlist)。在一些實施例中,然後將RTL設計抽象與硬體描述語言(HDL)結
合用於創建相應電路的高級表示(示意性截取(capture)或列表(entry))。然後通過一系列除錯操作和/或低級表示來細化電路的高級表示,直到實現功能塊和相關聯佈線/互連的實際佈局的設計為止。
在一些實施例中,一個或多個模型用於模擬裝置性能,包括例如具體示意圖/佈局的預期行為的低級電晶體模擬。在一些實施例中,一個或多個模型用於模擬從具體RTL設計抽象預期的數位行為。在一些實施例中,一個或多個模型用於提供設計的操作的高級模擬。
在一些實施例中,一個或多個模型用於開發能夠擬真所提出的設計的邏輯功能的半導體裝置硬體的具體配置。在一些實施例中,驗證過程包括等效性檢查,其涉及設計的RTL描述和合成的閘-網表之間的演算法比較,以便確保兩個模型之間的功能等效性。
在一些實施例中,驗證過程包括靜態時序分析和/或物理驗證中的一個或多個,以幫助確保具體設計能夠在相應的一組設計規則下製造,此設計不具有任何致命的或有問題的物理缺陷並將滿足原始性能和設計規範。
在一些實施例中,在已經成功完成設計模型的模擬和/或擬真之後,設計資料被用在一個或多個製造準備過程中,包括例如光罩資料準備,在此期間,用於根據一組已知的設計規則(和/或這種設計規則的某些例外)物理地製造晶片的相應的一系列微影光罩的設計。在一些實施例中,應用解析度增強技術(RET)以提高(一個或多個)最終
光罩或光罩組的品質。在一些實施例中,微影光罩(光罩組)經受光學鄰近校正,以在光罩組用於產生實際裝置時減少與繞射和干涉效應相關聯的不受歡迎的影響。然後,完成的光罩組可用於製造(FAB)組以產生設計。
第5圖提供了關於分析/生成模組108(第1圖)內的功能的附加細節。如第1圖所述,來自模組102的對應於所選(一個或多個)演算法的原始程式碼被饋送到剖析模組104,其中,由原始程式碼執行的功能在模組104a中被剖析,並且在模組104b中取決於完成功能所需的時間而被分類(或分箱(bin))為至少快速組功能和慢速組功能。快速組功能然後被映像(map)到模組104c”中的機器學習軟體,並且慢速組功能然後被映像到模組104c’中的機器學習硬體。然後將機器學習軟體映像和機器學習硬體映像饋送到分析模組106,其中,映像用於生成被配置用於執行機器學習硬體和機器學習軟體二者的ESL平台。
在一些演算法中,功能/子功能的子集消耗總執行時間的大部分。在一些實施例中,在模組104a中進行的剖析操作的輸出包括反映每個功能/子功能對完成完整演算法的總執行時間的執行時間貢獻的報告。然後,根據在剖析操作中決定的執行時間,能夠將各種功能/子功能從最快到最慢進行排序。例如,初始化功能/子功能往往比訓練/學習功能/子功能快得多。然後,快速組功能和慢速組功能之間的區別根據每個功能/子功能的執行時間的分佈。例如:
初始化功能:Load_Training_Set_Data( ) 1%
Loading_Test_Set_Data( ) 1%
Init( ) 2%
Init_Weights( ) 3%
訓練/學習功能:Get_Gradient( ) 15%
Get_Costs( ) 20%
Update_Weights( ) 23%
Feed_Forward( ) 35%
總執行時間段 100%
在上面的示例中,所列出的訓練/學習功能預計消耗93%的總執行時間段,即慢速組功能,而所列出的初始化功能,即快速組功能,預計僅消耗7%的總執行時間段。因此,將快速組/慢速組截止設置在5%和15%之間(例如,10%)的總執行時間段將足以實現快速組和慢組功能的滿意分箱。在一些實施例中,根據使用者偏好自動決定快速和慢速組之間的區分。在一些實施例中,使用者設置用於決定快速組和慢速組的截止。在一些實施例中,向使用者推薦用於決定快速組和慢速組的推薦截止點。
對演算法原始程式碼進行剖析以及隨後將各種功能分箱為至少快速組功能和慢速組功能的過程通過允許在專用且更快硬體(特別是在裝置內提供或作為SOC的一部分的NN)上執行慢速組功能,而由剩餘的半導體裝置和/
或功能元件支援快速組操作來改進所得到的模擬、擬真和/或原型設計。在一些實施例中,通過將演算法的操作劃分為快速組和慢速組,改進了用於相應EDA過程的設計和驗證操作二者的時間和資源,並且改進了針對具體設計可以實現的功率、性能和面積(PPA)的組合。
在一些實施例中,在剖析模組104中進行的剖析利用虛擬機器編譯軟體,包括例如Valgrind,用於將演算法程式碼翻譯成臨時的、處理器中立的資料結構,稱為中間表示(intermediate representation,IR)。在一些實施例中,然後使用多個工具中的一個來將中間表示修改、分析或轉換為將用於後續模擬的目的語言。可以使用的一個工具是調用圖剖析器,例如,Callgrind(或Calltree或Cachegrind)。Callgrind分析包括演算法程式碼並生成表示對應於每個子程式的處理時間的調用圖(多圖)的各種子程式之間的關係。在一些實施例中,此Callgrind分析資料然後用於根據完成相關聯副程式所需的時間將各種子程式分類為快速組功能和慢速組功能。在一些實施例中,設計者為副程式處理時間設置預定最大時間限制,超過最大時間的副程式被指定為慢速組功能,並且在最大時間限制內完成的副程式被指定為快速組功能。在一些實施例中,設計者設置應用於所評估副程式的處理時間分佈的預定最大百分比,具有高於分佈內的最大百分比的時間的副程式被指定為慢速組函數並且具有在最大百分比限制內的時間的副程式被指定為快速組功能。在一些
實施例中,設計者設置應用於所評估副程式的處理時間的加權分佈的預定最大百分比,具有大於最大百分比貢獻於所有副程式的總處理時間的時間的副程式被指定為慢速組功能,並且具有小於最大百分比貢獻於所有副程式的總處理時間的時間的副程式被指定為快速組功能。
第6圖提供了關於裝置128的配置的附加細節,特別是關於包括神經網路130的機器學習硬體的配置。根據方法和系統的一些實施例,神經網路130還包括全域SRAM 130a、DMA 130b、匯流排控制器130c以及多個互連的處理元件(interconnected processing elements,PE)130d。根據系統的一些實施例,每個PE 130d’包括其自己的資料記憶體、權重記憶體、算數邏輯單位(ALU)和控制元件。
神經網路(NN)是由生物神經網路啟發的計算系統,其可以通過考慮一組示例來學習(能夠獨立地提高神經網路實現正確結果的能力)完成任務,通常沒有任務特定程式設計的必要性。神經網路根據稱為神經元或人工神經元的連接單元的集合,這些神經元或人工神經元被用作在哺乳動物大腦中發現的軸突的類似物。一對神經元之間的連接可以被配置為將訊號發送到第二“下游(downstream)”或接收神經元和/或提供兩個連接的神經元之間的雙向溝通。
接收神經元處理從(一個或多個)連接“上游(upstream)”神經元中的每一個接收的(一個或多個)訊
號,並且進而將訊號發送到發送神經元所連接的(一個或多個)“下游”神經元。每個訊號將具有相關聯權重或偏差,反映特定訊號在實現期望或目標結果中的重要性。可以在(一個或多個)學習迴圈期間調整每個連接和/或節點的這些權重和/或偏差,以便增加或減小相關聯訊號的強度。對權重和/或偏差的調整旨在通過一系列反覆運算改進神經網路的總體精度。
基本神經網路(也稱為神經網路)包括連接到至少一個輸出節點的一系列輸入神經元或節點。更一般地,神經網路包括附加的“隱藏”節點層,即未包括在輸入節點或(一個或多個)輸出節點中的節點層。高度連接或完全連接的神經網路包括上一層中的每個節點與包括下一層的每個節點之間的連接。
對於在一個或多個隱藏層中具有大量節點的神經網路,例如,在分析高解析度圖像時使用的那些神經網路,連接的數量可能很快變得難以處理。由於大量連接所導致的複雜性,這種高度連接神經網路的完全硬體實現方式可能消耗較大矽面積並導致高功耗。因此,通常努力使神經網路適應於標準硬體模組,其包括將提供更加可接受的功率、性能和面積(PPA)組合同時仍提供可接受等級的精度的較少節點和/或連接。
神經網路的功率/能量消耗通常由記憶體存取支配,特別是在完全連接神經網路的情況下。取決於所解決的問題的性質和相應演算法,其中已經消除許多互連以產生輕
型或稀疏連接神經網路的神經網路可以提供適當的性能,同時降低能量消耗。
神經網路可以以多種配置來佈置,這些配置進而提供不同的能力。深度神經網路(DNN)是在輸入層和輸出層之間包括多個隱藏層並且可用於建模複雜非線性關係的神經網路。DNN架構中提供的附加層允許從先前的層創建附加特徵,從而允許比使用具有不超過一個隱藏層的神經網路架構可以實現的建模更高效地建模複雜資料。
其他類型的神經網路包括遞迴神經網路(recurrent neuron network,RNN),其中,資料可以在任何方向上流過網路,以及卷積深度神經網路(convolutional deep neuron network,CNN),其利用“卷積”運算子或層以及相關聯步驟來從(一個或多個)輸入圖像識別和提取某些目標元素(即面部特徵),同時保留包括目標元素的像素之間的空間關係。
在配置神經網路時,設計者考慮許多參數,包括尺寸(層數和每層的神經元數量二者)、將在其上執行神經網路的硬體、學習速率、其他變數、初始偏差以及初始權重。一些較新的半導體架構的改進的處理能力增加了可用處理能力,特別是在使用張量處理單元(tensor processing unit,TPU)和/或圖形處理單元(GPU)來處理與更複雜的神經網路相關聯的複雜矩陣和向量計算以及擴展可以高效建模的神經網路的範圍和複雜性方面。
在一些實施例中,設計者選擇包括在輸入層中的神
經元(或節點)(即從外部源接收輸入的那些節點)的數量將對應於神經網路被設計為解決的問題。在一些實施例中,在決定包括在輸入層中的神經元的數量時考慮其他因素,例如,被評估的像素的數量和/或可被指定為單個神經元的ASIC或其他半導體裝置中可用的處理單元的數量。
當在構造高度(或密集)連接的神經網路時考慮包括隱藏層(即從輸入層節點或另一隱藏層節點接收輸入的那些節點)時,將包括的隱藏層的數量並且對於每個層,是根據將包括多少個體神經元(或節點)來選擇的。儘管簡單神經網路被用於解決包括較少輸入、較少輸出以及給定輸入集和相關聯輸出之間的強對應的問題,但生成複雜資料集的問題(例如,分析順序視圖、圖像識別和/或電腦視覺)通常包括具有至少一個隱藏層的神經網路。
在一些實施例中,具有單個隱藏層的神經網路被用於近似包括從第一有限空間到第二有限空間的連續資料映像的函數。在一些實施例中,具有兩個隱藏層的神經網路被用於使用合理的啟動函數來創建任意決策邊界,以將平滑映像函數近似到期望精確度。在一些實施例中,具有多於兩個隱藏層的神經網路被配置用於學習一個或多個後續層的複雜表示。
在決定了隱藏層的數量之後,選擇包括在輸入層、隱藏層和輸出層中的每一層中的神經元的數量。未能在(一個或多個)隱藏層中包括足夠數量的神經元往往會導致低度擬合(underfitting)。在低度擬合神經網路配置中,(一
個或多個)隱藏層不包含足夠數量的神經元來處理來自複雜資料集的輸入。因此,即使在訓練之後,這種低度擬合神經網路通常也不能實現可接受誤差容限內的精確等級。
相反,在神經網路的(一個或多個)隱藏層中包括過多神經元往往導致過度擬合(overfitted)。在過度擬合神經網路配置中,(一個或多個)隱藏層包含過多神經元,使得包含在(一個或多個)訓練資料集中的有限資訊量不足以訓練隱藏層中的所有神經元。如果增加(一個或多個)訓練資料集的大小以便為過度擬合神經網路提供足夠的訓練,則訓練神經網路所需的時間和資源將相應地增加。
為了降低低度擬合或過度擬合神經網路的可能性,在一些實施例中,使用包括將(一個或多個)隱藏層中的隱藏神經元的總數限制為少於輸入層中的神經元數量但多於輸出層中的神經元數量的數量的一般準則。在一些實施例中,準則將(一個或多個)隱藏層中的隱藏神經元的總數限制為輸入層中的神經元數量的分數(例如,½、、或¾)加到輸出層中的神經元數量。在一些實施例中,(一個或多個)隱藏層中的隱藏神經元的總數被限制為輸入層中的神經元數量的直接倍數(倍數,例如,1.25、1.5或2)。
在一些實施例中,輸出層中的神經元(或節點)的數量將取決於神經網路被設計為提供的各種解決方案或結果。在一些實施例中,考慮其他因素,例如,預期輸出值的數量(例如,手寫數位的數位0-9、可能在照片中識別
的物件或事物的數量或與面部識別或虹膜掃描相關的個人識別資訊)、被評估的像素和/或在被指定為單個神經元的專用積體電路(ASIC)或其他半導體期間中可用的處理單元的數量。
第7圖是根據一些實施例的方法700的流程圖,其中,在機器學習應用中利用神經網路。方法700包括3層神經網路702,其包括節點(或特徵)的輸入層,包括f0、f1、f2、...、fx;節點a0、a1、...、ay的隱藏層;以及輸出層,包括生成訊號的單個節點c1。在一些實施例中,方法700包括具有多於3層的神經網路702。神經網路702還包括節點層之間的多個互連,包括輸入層節點和隱藏層節點之間的互連w10...w1y,以及隱藏層節點和(一個或多個)輸出層節點之間的互連w20...w2z。這些互連中的每一個將由權重w表徵,該權重w可以根據利用一個或多個訓練資料集實現的神經網路性能來調整。
對優化由機器學習應用程式實現的回應的努力依賴於來自評估函數的回應,通常稱為代價函數(cost function),在一些實施例中,此代價函數在由設計者選擇的演算法的內部。根據上下文,可以使用包括損失函數、目標函數、評分函數或誤差函數的其他項來代替代價函數。無論名稱如何,這些評估函數中的每一個都用於提供對機器學習演算法將輸入映像到給定資料集和應用的目標結果的程度的測量。
代價函數通過將(一個或多個)演算法預測與和特
定輸入集(例如,訓練資料集)相關聯的(一個或多個)預期結果進行比較來工作。代價函數使用預測值和期望值之間的差異度來決定演算法的錯誤等級。在一些實施例中,特定代價函數與演算法相關聯。在其他實施例中,使用者根據要解決的問題、期望精確度和/或專用於該問題的可用時間和計算資源來選擇或以其他方式定義代價函數。
即使在選擇不允許選擇或定制(一個或多個)相關聯代價函數的演算法時,在一些實施例中,使用者通過選擇相關參數和/或輸入特徵來影響代價函數優化過程,以便根據正在解決的問題來調整結果。
在一些實施例中,進行訓練會話,在此訓練會話期間,代價函數被用於通過辨識提高預測精度的權重參數的變化來引導對神經網路內的權重進行更新的過程。在一些實施例中,隨著訓練會話繼續,代價函數值初始地隨著每次反覆運算而改善(減少),直到達到代價函數值保持不變或從前一次反覆運算增加的點為止,並且訓練/評估過程終止。在一些實施例中,代價函數被用於評估神經網路在將演算法應用於新資料集(例如,測試資料集)時的精確性,作為先前訓練的神經網路高效工作的指示。
與基本神經網路結構702相關聯的參數由X共同表示,並且特定於具體配置,即相關聯神經網路的層、節點和互連的佈置。然後在操作704中使用與這些參數相對應的資料以通過提供例如特徵的數量(#特徵)、隱藏層和/或節點的數量(#隱藏)以及輸出的數量(#輸出)來發起
方法700。在操作706中,神經網路資料被用於構建和初始化神經網路。神經網路載入有在操作708中提供的一系列初始參數。在操作710中,準備訓練資料集以供神經網路執行。
在操作712中,訓練資料集通過神經網路被饋送(FEED_FORWARD( ))以生成代價值(GET_COST( )),也稱為誤差,從此代價值計算梯度(GET_GRADIENT( ))並通過神經網路反向傳播以更新權重和/或偏差,以便減少一系列反覆運算中的代價/誤差。在一些實施例中,用於計算對權重和/或偏差的調整的方程式統稱為Y並且在框724中示出。
在一些實施例中,一旦使用訓練資料集實現了足夠低或“優化”的代價/誤差值,則在操作714中載入測試資料集並由經“訓練”的神經網路在前饋模式722中執行以獲得相應的輸出值。然後在操作716中檢查由神經網路使用測試資料集獲得的結果。如果經訓練的神經網路未實現目標誤差等級,則可以通過操作718將誤差回饋到操作712,由此神經網路可以接收額外的訓練以提高由神經網路獲得的結果的精度。
第8圖示出了方法800的一些實施例,通過此方法800可以在機器學習應用中利用神經網路。在操作804中,獲得一組初始參數,包括例如特徵的數量、隱藏節點的數量、輸出的數量以及將用於計算權重調整的學習因數(或學習率)η。操作806a中的附加計算用於通過將隱藏
節點的數量乘以輸入節點(或特徵)的數量,並且與輸出節點的數量乘以隱藏節點的數量相加,並然後將該總和乘以專用於每個權重記憶體的位元數(在這種情況下為8)來決定完全連接3層神經網路的總權重記憶體大小。
在操作806b中,通過將總權重記憶體大小除以處理元件的數量來計算各個權重記憶體大小和位元組。在操作806c中,可以設置預設處理元件數量,例如,256,並且可以設置預設匯流排寬度,例如,32位元寬度。根據這些輸入和計算,然後在操作806d中生成機器學習硬體模型。
在生成機器學習硬體模型之後,在操作810中載入訓練資料集,在操作814中載入測試資料集,在操作808a中初始化與節點相關聯的權重記憶體,並且在操作808b中初始化與節點相關聯的資料記憶體以完成神經網路的初始化。在初始化神經網路並載入學習和測試資料集的情況下,可以在操作812中進行學習和評估操作。這些操作包括在操作812a中設置初始前饋代價記憶體梯度記憶體值、在操作812b中在機器學習處理元件陣列上運行前饋操作、在操作812c中在機器學習處理元件陣列上運行代價計算、在操作812d中獲得機器學習處理元件陣列上的梯度、在操作812e中更新權重並檢查機器學習硬體的狀態以及在操作812f中準備下一訓練資料集並監測系統性能。取決於機器學習硬體各種操作的容量和配置,包含在操作812內的各種操作812a-f可以順序地或並行地
運行。
第9圖和第10圖示出了用於對各個手寫數位進行分類的問題的機器學習和建模系統的實施例的示例應用。儘管該示例包括3層神經網路,但期望具有類似或更大複雜度的其他配置令人滿意地執行。在該示例中,如第9圖所示,在28×28像素陣列(總共784個像素)上掃描手寫數位。設計神經網路,其中每個像素與在0和783之間編號的相應輸入節點(或特徵)相關聯,每個輸入節點(或特徵)進而連接到在0和49之間編號的隱藏層中的50個節點中的每一個。50個隱藏節點中的每一個還連接到10個輸出節點中的一個,每個可能的數字一個輸出節點。
輸入節點和隱藏節點之間的每個連接具有相應權重W10-W1y。類似地,隱藏節點和輸出節點之間的每個連接具有相應權重W20-W2z。此系統的實施例接收關於特定節點配置/指定和各種互連的資訊,並通過定義處理單元(PE)之間的連接來將慢速組操作映像到機器學習硬體模型中可用的PE陣列上,以配置神經網路。PE陣列可以在例如ASIC裝置上製造或提供,其中,較上層連接器被配置為提供類比初始3層NN設計的連線性和功能性所需的連線性和功能性。
每個輸入節點被分配一個值,例如,在0和1之間,0代表白色,1代表黑色,並且中間值對應於各種灰度,或替代地,8位元版本,在0(白色)和255(黑色)系統之間值,值0-254對應於不同的灰度。所分配的輸入值
與在28×28陣列的相應像素中找到的所考慮的手寫數位部分的“黑度”的程度相對應。
在定義神經網路之後,需要使用訓練資料集來訓練神經網路,此訓練資料集包括足以使神經網路暴露於每個數位的樣式和表達的廣泛變化的多個手寫數字。神經網路處理測試資料集的精度使用函數來評估,替代地稱為代價函數、誤差函數、損失函數或目標函數,其將通過應用了特定權重和偏差配置的神經網路運行訓練集資料時產生的“代價”相加。訓練的目標是找到將最小化總代價進而提高輸出精度的一組權重和偏差。
第10圖示出了處理流程900的實施例,包括在操作902中載入手寫訓練資料集、在操作904中構建和初始化神經網路的操作。操作904使用關於神經網路的設計的輸入,包括特徵的數量、隱藏節點的數量和輸出節點的數量,並輸出初始配置,包括初始權重、初始偏差、初始層、學習常數(η)和其他變數。
然後使用訓練資料集在操作906中訓練神經網路。如結合第7圖詳細描述的,操作906中的神經網路訓練包括使用訓練資料集的前饋操作、使用此前饋操作的結果來生成代價和梯度資料以及然後反向傳播此代價/誤差資料並使用學習因數來相應地調整權重和偏差。在一些實施例中,學習因數是固定的,在其他實施例中,可以在學習/訓練操作期間減小學習因數以減少獲得經訓練的NN所需的時間。在一些實施例中,可以在訓練操作的過程中根據預
定義學習因數調度來減小學習因數。在一些實施例中,可以根據包括根據時間衰減、步進衰減、指數衰減或其他可用方法的自我調整學習因數方法在訓練操作的過程中減小學習因數。此反覆運算過程繼續,直到代價值達到最小值或低於預定目標值為止,此時訓練過程結束。在訓練結束時,在操作908中使用測試資料集測試經訓練的神經網路,並且在操作910中評估測試的結果。
與被歸類為屬於慢速組的功能/操作不同,被歸類為屬於快速組的那些功能和操作不被轉換為機器學習硬體。相反,快速組功能和操作在轉換操作912中被轉換為機器學習軟體和被配置用於運行機器學習軟體的傳統平台914的組合。轉換操作912可以包括使用Python、C/C++編譯器或其他適當的工具。
設計半導體裝置的方法的一些實施例包括:接收可用於執行與機器學習演算法相關聯的多個操作的原始程式碼、將每個操作分類為快速組或慢速組、定義用於執行慢速組操作的包括多個節點和互連的網路、將網路映像到初始機器學習硬體設定、在機器學習硬體上執行慢速操作組操作、回應於決定慢速組操作未能回應於至少一組輸入而產生預期結果來修改初始機器學習硬體設定、以及使用機器學習軟體程式碼執行快速組操作。在一些實施例中,每個互連在初始機器學習硬體設定中被分配初始互連權重。在一些實施例中,網路的每個節點對應於ASIC半導體裝置設計上的處理元件。在一些實施例中,第一訓練資料集
應被用於初始機器學習硬體設定以生成第一誤差值,該第一誤差值然後通過網路反向傳播以將初始互連權重調整為第一互連權重,並生成第一訓練機器學習硬體設定。在一些實施例中,第一訓練資料集被應用於第一訓練機器學習硬體設定以生成第二誤差值,該第二誤差值然後通過網路反向傳播以調整第一互連權重並生成第二訓練機器學習硬體設定。在一些實施例中,第x訓練資料集被應用於第n訓練機器學習硬體設定以生成第(n+1)誤差值,該第(n+1)誤差值然後通過網路反向傳播以調整第n互連權重並生成第(n+1)訓練機器學習硬體設定。在一些實施例中,第一訓練資料集和第x訓練資料集是不同的,而在其他實施例中,第一訓練資料集到第x訓練資料集中的每一個是相同的。在一些實施例中,定義網路包括定義包括多個輸入節點的輸入層、定義包括第一多個第一隱藏節點的第一隱藏層、以及定義包括至少一個輸出節點的輸出層。在該方法的一些實施例中,定義網路包括定義包括第二多個第二隱藏節點的第二隱藏層。在一些實施例中,第一測試資料集被應用於第(n+1)訓練機器學習硬體設定以生成失敗測試結果或通過測試結果,並且回應於失敗測試結果,修改第(n+1)訓練機器學習硬體設定以生成改進的機器學習硬體設定。第二測試資料集然後被應用於改進的機器學習硬體設定以生成失敗測試結果或通過測試結果,失敗測試結果導致進一步修改機器學習硬體設定,並重新應用第二測試資料集直到最終機器學習硬體設定實現通過測試結
果為止。然後生成對應於最終機器學習硬體設定的設計檔以及用於執行快速組操作的機器學習軟體程式碼,所述機器學習軟體程式碼被執行以完成快速組操作以支援慢速組操作。在一些實施例中,第一測試資料集和第二測試資料集不同。在一些實施例中,回應於通過測試結果,生成並輸出對應於最終機器學習硬體設定的設計檔、生成用於執行快速組操作的機器學習軟體程式碼、並且執行機器學習軟體程式碼以完成執行快速組操作以支援慢速組操作。在一些實施例中,最終機器學習硬體設定被製造為包括多個處理元件的專用積體電路(ASIC)設計,其中,神經網路的多個節點中的每個節點對應於ASIC設計上的處理元件。
在一些實施例中,非暫態電腦可讀存儲媒體被編碼有用於設計半導體裝置的一組指令,該組指令在由具有記憶體和使用者介面的電腦執行時,使得電腦:取回被配置用於執行與機器學習演算法相關聯的一系列操作的原始程式碼、將一系列操作剖析為快速組操作或慢速組操作、定義用於執行慢速組操作的具有多個互連神經元的網路、針對每個互連神經元設置初始系列參數、取回訓練資料集、將訓練資料集應用於網路以獲得訓練網路、取回測試資料集、將測試資料集應用於訓練網路以生成測試結果、以及評估測試結果以辨識最終訓練網路配置。在一些實施例中,在非暫態電腦可讀存儲媒體上提供的指令使得電腦定義用於結合網路執行快速組操作的機器學習程式碼,並定義被
配置用於執行機器學習程式碼的記憶體子系統。在一些實施例中,在非暫態電腦可讀存儲媒體上提供的指令使得電腦使用從包括GPU、CPU、DSP、RAM、ROM、DMA、IP和互連器的組中選擇的多個設計元件來定義記憶體子系統。在一些實施例中,在非暫態電腦可讀存儲媒體上提供的指令使得電腦生成ASIC裝置設計,該ASIC裝置設計包括與最終訓練網路配置相對應的多個處理單元。
在一些實施例中,一種用於設計半導體裝置的系統包括:剖析模組,被配置用於接收可用於執行與機器學習演算法相關聯的多個操作的原始程式碼並剖析每個操作以分成快速操作組或慢速操作組;分析模組,被配置用於執行快速操作組操作的第一分析,並且根據該分析,生成機器語言程式碼和被配置用於執行機器語言程式碼的記憶體子系統硬體模組二者;並且執行慢速操作組操作的第二分析,並根據第二分析,生成機器學習硬體模組,該機器學習硬體模組被配置為被配置用於執行慢速操作組操作的神經網路。在一些實施例中,一種系統包括虛擬測試模組,該虛擬測試模組被配置用於類比記憶體子系統硬體模組和機器學習硬體模組,和/或製造模組,該製造模組被配置用於製造包括記憶體子系統硬體模組和機器學習硬體模組二者的半導體裝置。
機器學習系統的應用包括例如語音辨識、圖像識別、手寫分析、安全性、視覺處理、自然語言處理、藥物研究、醫學成像、醫學診斷、生物資訊學和圖像校正/恢復。
前文概述了數個實施例的特徵,使得熟習此項技術者可更好地理解本揭示案的態樣。熟習此項技術者應瞭解,可易於使用本揭示案作為設計或修改其他製程及結構的基礎以便實施本文所介紹的實施例的相同目的及/或實現相同優勢。熟習此項技術者亦應認識到,此類等效結構並未脫離本揭示案的精神及範疇,並且可在不脫離本揭示案的精神及範疇的情況下在本文中實施各種變化、取代及修改。
100:系統
102:模組
104:剖析模組
106:設計模組
108:分析/生成模組
110:模型庫
112:SOC塊描述庫
114:機器學習硬體模型
116:機器學習記憶體子系統模型
118:機器學習軟體模型
Claims (10)
- 一種使用機器學習應用的電子系統級建模來設計半導體裝置的方法,包括:接收原始程式碼,其中該原始程式碼可用於執行與一機器學習演算法相關聯的複數操作;根據該些操作中的每個操作的一預計執行時間,將該些操作中的每個操作分類為一快速組或一慢速組;定義用於執行一慢速組操作的一網路,該網路包括複數節點以及該些節點中的多個節點之間的複數互連;將該網路映像到一初始機器學習硬體配置;在該初始機器學習硬體配置上執行該慢速組操作;回應於決定該慢速組操作未能回應於至少一組輸入而產生一預期結果來修改該初始機器學習硬體配置,以生成改進的機器學習硬體配置;在該改進的機器學習硬體配置上執行該慢速組操作,並且回應於決定該慢速組操作未能回應於至少一組輸入而產生預期結果來修改該改進的機器學習硬體配置,以生成一下一改進的機器學習硬體配置;繼續該執行和修改操作直到該慢速組操作回應於至少一組輸入而產生一預期結果為止,以定義可操作機器學習硬體配置;以及使用從一預定義模型庫選擇的多個標準單元來對被配置為一半導體裝置的該可操作機器學習硬體配置進行建模。
- 如請求項1所述之使用機器學習應用的電子系統級建模來設計半導體裝置的方法,還包括:在該初始機器學習硬體配置中為該些互連中的每一者分配一初始互連權重;其中,該網路的該些節點中的每一者對應於一應用積體電路半導體裝置設計上的一處理元件。
- 如請求項1所述之使用機器學習應用的電子系統級建模來設計半導體裝置的方法,還包括:將一第一訓練資料集應用於該初始機器學習硬體配置,以生成多個第一誤差值;以及通過該網路反向傳播該些第一誤差值,以將複數個初始互連權重調整為複數個第一互連權重並生成一第一訓練機器學習硬體配置。
- 如請求項3所述之使用機器學習應用的電子系統級建模來設計半導體裝置的方法,還包括:將該第一訓練資料集應用於該第一訓練機器學習硬體配置,以生成多個第二誤差值;以及通過該網路反向傳播該些第二誤差值,以調整該些第一互連權重並生成一第二訓練機器學習硬體配置。
- 如請求項3所述之使用機器學習應用的電子系統級建模來設計半導體裝置的方法,還包括: 將一第x訓練資料集應用於一第n訓練機器學習硬體配置,以生成一組第(n+1)誤差值;以及通過該網路反向傳播該組第(n+1)誤差值,以調整多個第n互連權重並生成一第(n+1)訓練機器學習硬體配置。
- 如請求項5所述之使用機器學習應用的電子系統級建模來設計半導體裝置的方法,其中:該第一訓練資料集和該第x訓練資料集是不同的。
- 如請求項5所述之使用機器學習應用的電子系統級建模來設計半導體裝置的方法,其中:該第一訓練資料集到該些第x訓練資料集中的每一者是相同的。
- 如請求項1所述之使用機器學習應用的電子系統級建模來設計半導體裝置的方法,其中該定義該網路包括:定義包括複數輸入節點的一輸入層;定義包括第一複數第一隱藏節點的第一隱藏層;以及定義包括至少一輸出節點的一輸出層。
- 一種非暫態電腦可讀存儲媒體,被編碼有用於使用機器學習應用的電子系統級建模設計半導體裝置的 一組指令,該組指令在由具有記憶體和使用者介面的電腦執行時,使得該電腦:取回一原始程式碼,該原始程式碼可操作來執行與一機器學習演算法相關聯的一系列操作;根據該些系列操作中的每一者的一預計執行時間,將該些系列操作剖析為多個快速組操作或多個慢速組操作;定義用於執行該些慢速組操作的具有複數互連神經元的一網路;針對該些互連神經元中的每一者設置一初始系列參數;取回一訓練資料集;將該訓練資料集應用於該網路,以獲得一訓練網路;取回一測試資料集;將該測試資料集應用於該訓練網路,以生成多個測試結果;評估該些測試結果,以辨識一最終訓練網路配置;以及根據該最終訓練網路配置,生成用於評估一半導體裝置設計的一電子系統級平台。
- 一種用於設計半導體裝置的系統,包括:一剖析模組,可操作來:接收一原始程式碼,其中該原始程式碼可操作來執行與一機器學習演算法相關聯的複數操作;以及將該些操作中的每個操作剖析為一快速操作或一慢速操作; 一分析模組,可操作來:執行該快速操作的一第一分析,並且根據該分析,生成一機器語言程式碼和可操作來執行該機器語言程式碼的一記憶體子系統硬體模組二者,其中該記憶體子系統硬體模組包括從一模型庫選擇的複數標準單元;以及執行該慢速操作的一第二分析,並且根據該第二分析,生成一機器學習硬體模組,該機器學習硬體模組被配置為可操作來執行該慢速操作的一神經網路。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910417773.2A CN112052642B (zh) | 2019-05-20 | 2019-05-20 | 用于机器学习的esl建模的系统和方法 |
| CN201910417773.2 | 2019-05-20 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202111590A TW202111590A (zh) | 2021-03-16 |
| TWI767231B true TWI767231B (zh) | 2022-06-11 |
Family
ID=73457161
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW109116552A TWI767231B (zh) | 2019-05-20 | 2020-05-19 | 用於機器學習的電子系統級建模的系統和方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (4) | US10867098B1 (zh) |
| CN (1) | CN112052642B (zh) |
| TW (1) | TWI767231B (zh) |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112052642B (zh) * | 2019-05-20 | 2024-08-16 | 台积电(南京)有限公司 | 用于机器学习的esl建模的系统和方法 |
| GB2590482B (en) * | 2019-12-19 | 2022-04-13 | Advanced Risc Mach Ltd | Fault detection in neural networks |
| US11823018B1 (en) * | 2020-06-30 | 2023-11-21 | Cadence Design Systems, Inc. | Method, product, and apparatus for a machine learning process using weight sharing within a systolic array having reduced memory bandwidth |
| US11636244B1 (en) * | 2020-09-30 | 2023-04-25 | Synopsys, Inc. | Performance tuning of a hardware description language simulator |
| US12124782B1 (en) * | 2020-11-12 | 2024-10-22 | Synopsys, Inc. | Machine learning-enabled estimation of path-based timing analysis based on graph-based timing analysis |
| CN113627087B (zh) * | 2021-08-23 | 2023-11-03 | 中机中联工程有限公司 | 基于物流仿真与机器学习的生产系统参数自适应优化方法 |
| KR102365168B1 (ko) * | 2021-09-17 | 2022-02-18 | 주식회사 애자일소다 | 설계 데이터 기반의 물체의 위치 최적화를 위한 강화학습 장치 및 방법 |
| CN114545899B (zh) * | 2022-02-10 | 2024-09-10 | 上海交通大学 | 基于先验知识的燃气轮机系统多传感器故障信号重构方法 |
| KR102454202B1 (ko) * | 2022-05-04 | 2022-10-17 | 주식회사 애자일소다 | 파티셔닝을 이용한 심층 강화학습 기반의 집적회로 설계 시스템 및 방법 |
| CN115810016B (zh) * | 2023-02-13 | 2023-04-28 | 四川大学 | 肺部感染cxr图像自动识别方法、系统、存储介质及终端 |
| WO2024246370A1 (en) * | 2023-06-01 | 2024-12-05 | Deepmind Technologies Limited | Designing efficient logic circuits using machine learning |
| CN117829569A (zh) * | 2023-12-22 | 2024-04-05 | 北京镁伽机器人科技有限公司 | 自动化流程的排程方法和系统、电子设备及存储介质 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI322365B (en) * | 2004-02-19 | 2010-03-21 | Ibm | Design verification system for integrated circuit design and computer program product thereof |
| US9021409B2 (en) * | 2011-07-11 | 2015-04-28 | The Board Of Trustees Of The University Of Illinois | Integration of data mining and static analysis for hardware design verification |
| US20170344909A1 (en) * | 2016-05-27 | 2017-11-30 | Fanuc Corporation | Machine learning device, failure prediction device, machine system and machine learning method for learning end-of-life failure condition |
| US20180005134A1 (en) * | 2016-06-30 | 2018-01-04 | Cogniac, Corp. | Operating Machine-Learning Models on Different Platforms |
| TW201835795A (zh) * | 2017-03-15 | 2018-10-01 | 台灣積體電路製造股份有限公司 | 開發電子架構設計的方法、電腦系統及機器可讀取媒體 |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2007066319A1 (en) * | 2005-12-08 | 2007-06-14 | Mentor Graphics Corporation | Conversion of switching signals of a circuit simulation into a transaction model |
| CA2779034C (en) * | 2011-06-08 | 2022-03-01 | Accenture Global Services Limited | High-risk procurement analytics and scoring system |
| US20150286766A1 (en) * | 2012-10-25 | 2015-10-08 | Satish Chandra Tiwari | Method and system for automated design of an integrated circuit using configurable cells |
| US9348742B1 (en) * | 2013-12-18 | 2016-05-24 | Amazon Technologies, Inc. | Detecting code alteration based on memory allocation |
| US10474950B2 (en) * | 2015-06-29 | 2019-11-12 | Microsoft Technology Licensing, Llc | Training and operation of computational models |
| US20180005111A1 (en) * | 2016-06-30 | 2018-01-04 | International Business Machines Corporation | Generalized Sigmoids and Activation Function Learning |
| US11488008B2 (en) * | 2017-05-05 | 2022-11-01 | Intel Corporation | Hardware implemented point to point communication primitives for machine learning |
| US11321618B2 (en) * | 2018-04-25 | 2022-05-03 | Om Digital Solutions Corporation | Learning device, image pickup apparatus, image processing device, learning method, non-transient computer-readable recording medium for recording learning program, display control method and inference model manufacturing method |
| US10796068B2 (en) * | 2018-09-11 | 2020-10-06 | Samsung Electronics Co., Ltd. | Standard cell design system, standard cell design optimization method thereof, and semiconductor design system |
| US11392748B2 (en) * | 2018-09-28 | 2022-07-19 | Taiwan Semiconductor Manufacturing Company, Ltd. | Integrated circuit design using fuzzy machine learning |
| CN112052642B (zh) * | 2019-05-20 | 2024-08-16 | 台积电(南京)有限公司 | 用于机器学习的esl建模的系统和方法 |
-
2019
- 2019-05-20 CN CN201910417773.2A patent/CN112052642B/zh active Active
- 2019-09-25 US US16/582,603 patent/US10867098B1/en active Active
-
2020
- 2020-05-19 TW TW109116552A patent/TWI767231B/zh active
- 2020-12-08 US US17/115,407 patent/US12014130B2/en active Active
-
2024
- 2024-06-17 US US18/745,089 patent/US12406123B2/en active Active
-
2025
- 2025-06-17 US US19/240,851 patent/US20250307513A1/en active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI322365B (en) * | 2004-02-19 | 2010-03-21 | Ibm | Design verification system for integrated circuit design and computer program product thereof |
| US9021409B2 (en) * | 2011-07-11 | 2015-04-28 | The Board Of Trustees Of The University Of Illinois | Integration of data mining and static analysis for hardware design verification |
| US20170344909A1 (en) * | 2016-05-27 | 2017-11-30 | Fanuc Corporation | Machine learning device, failure prediction device, machine system and machine learning method for learning end-of-life failure condition |
| US20180005134A1 (en) * | 2016-06-30 | 2018-01-04 | Cogniac, Corp. | Operating Machine-Learning Models on Different Platforms |
| TW201835795A (zh) * | 2017-03-15 | 2018-10-01 | 台灣積體電路製造股份有限公司 | 開發電子架構設計的方法、電腦系統及機器可讀取媒體 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20250307513A1 (en) | 2025-10-02 |
| TW202111590A (zh) | 2021-03-16 |
| US10867098B1 (en) | 2020-12-15 |
| CN112052642B (zh) | 2024-08-16 |
| US20240338506A1 (en) | 2024-10-10 |
| CN112052642A (zh) | 2020-12-08 |
| US20210089696A1 (en) | 2021-03-25 |
| US12014130B2 (en) | 2024-06-18 |
| US12406123B2 (en) | 2025-09-02 |
| US20200372124A1 (en) | 2020-11-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI767231B (zh) | 用於機器學習的電子系統級建模的系統和方法 | |
| JP7539373B2 (ja) | 実装コストを目的として含めることによるニューラルネットワークのトレーニング | |
| Gschwend | Zynqnet: An fpga-accelerated embedded convolutional neural network | |
| Huynh et al. | Implementing spiking neural networks on neuromorphic architectures: A review | |
| Patel et al. | A spiking neural network for image segmentation | |
| WO2019060290A1 (en) | Direct access, hardware acceleration in neural network | |
| Porrmann et al. | A massively parallel architecture for self-organizing feature maps | |
| Rouhani et al. | Deep3: Leveraging three levels of parallelism for efficient deep learning | |
| US20240020536A1 (en) | Processor architecture and model exploration system for deep learning | |
| US20240086235A1 (en) | Estimating Resource Costs for Computing Tasks for a Reconfigurable Dataflow Computing System | |
| US12197379B2 (en) | High performance layer normalization for large models | |
| US20190050514A1 (en) | Fault injection using hybrid simulation model | |
| Matinizadeh et al. | Neuromorphic computing for the masses | |
| WO2021069211A1 (en) | Method of and apparatus for processing data of a deep neural network | |
| Saravanan | CNN Accelerator For Edge Inference | |
| US12204488B2 (en) | High performance softmax for large models | |
| Liu et al. | An adversarial active sampling-based data augmentation framework for manufacturable chip design | |
| CN116386740A (zh) | 基于自编码器的材料微观演化预测方法及系统 | |
| Akimova et al. | Hardware implementation of a convolutional neural network | |
| Shahshahani | Framework for Mapping Convolutional Neural Networks on FPGAs | |
| Senthil Kumar | Efficient Design and Optimization of Artificial Neural Networks: SW and HW | |
| Krishnani | In-Situ Implementation and Training of Convolutional Neural Network on FPGAs | |
| CN120012860B (zh) | 卷积神经网络模型的训练方法、装置、电子设备及介质 | |
| Jain et al. | DIANA: DIgital and ANAlog Heterogeneous Multi-core System-on-Chip | |
| Mansoor et al. | AI-Enabled Placement for 2D and 3D ICs |