本篇文章將重點介紹工具鏈的工具相關知識,我們將從工具鏈的基本概念出發,重點介紹工具鏈中的映射和調度工具、模擬與驗證工具、開發和測試工具,最后提出對工具鏈發展的展望,從而對工具鏈的工具進行一個較為系統的講解。
工具鏈的基本概念
工具鏈,英文名稱toolchain,通常是指在軟件開發或硬件設計中使用的一系列工具和軟件,用于完成特定任務或流程。這些工具一般接連地使用,從而完成一個個任務,這也是“工具鏈”名稱的由來。
而在AI芯片領域,工具鏈特指連接模型算法到芯片部署的端到端系列工具。面向存算一體芯片的深度學習編譯工具鏈包括深度學習的算法設計、前端網絡的模型轉換、存算一體的電路設計等模塊;如今,面向傳統芯片的深度學習編譯工具鏈發展健全,而面向存算一體芯片的深度學習編譯工具鏈在前端優化策略、后端空間映射等方面都仍有欠缺,這使得深度學習部署在存算一體芯片上移植性低、成本高,因此需要我們設計出能實現端到端的存算一體工具鏈及軟硬件系統。面向存內計算芯片的深度學習編譯工具鏈通常包括量化、圖優化、映射與調度、模擬與驗證、開發與測試等工具,前面我們已經介紹過量化和圖優化相關知識,本篇文章我們將介紹映射與調度、模擬與驗證、開發與測試這三種工具。
映射與調度工具
數據布局和計算任務在存儲陣列中的映射至關重要,相應的工具應能智能地分配和管理數據在內存單元中的位置,優化計算效率和帶寬使用;調度工具則負責在不同時刻根據資源約束安排計算操作,確保有效利用存內計算硬件的并行性和容量。在深度學習編譯工具鏈中,映射與調度工具專門用于將高層的模型描述轉換為優化的硬件指令,并調度這些指令到具體的計算資源上。這些工具通過高級優化技術來提升執行效率和硬件利用率。
下面以一些具體工具舉例:
1.TPU-MLIR[1]:
TPU-MLIR是一種專用于處理器的TPU編譯器。該編譯器項目提供了一個完整的工具鏈,可以將來自不同深度學習框架(PyTorch, ONNX, TFLite和Caffe)的各種預訓練神經網絡模型轉換為高效的模型文件(bmodel/cvimodel),以便在SOPHON TPU上運行。通過量化到不同精度的bmodel/cvimodel,優化了模型在sophon計算TPU上的加速和性能。這使得可以將與對象檢測、語義分割和對象跟蹤相關的各種模型部署到底層硬件上以實現加速。
圖 1 TPU-MLIR整體架構[1]
2.TensorRT[2]:
TensorRT是NVIDIA提供的一個高性能深度學習推理(inference)引擎,專為生產部署優化。TensorRT提供了API和解析器,可以從所有主要的深度學習框架中導入經過訓練的模型,廣泛用于需要快速推理的應用場景,如視頻分析和圖像處理。
圖 2 TensorRT logo[2]
3.TVM[3]:
Apache TVM是一個端到端的深度學習編譯框架,適用于 CPU、GPU 和各種機器學習加速芯片。TVM 提供以下功能:將深度學習模型編譯成最小可部署的模塊;在更多的后端自動生成和優化模型的基礎設施,進一步提高性能。TVM支持廣泛的硬件平臺和前端框架,能夠自動優化模型以適應不同的硬件架構。
圖 3 TVM示意圖[3]
4.OpenVINO[4]:
OpenVINO是英特爾開發的一套優化深度學習性能的工具集,是一款可輕松實現“一次寫入,處處部署”的開源AI工具套件,可以縮短延遲,提高吞吐量,加速AI推理過程,同時保持精度,縮小模型占用空間,優化硬件使用,支持多種類型的英特爾硬件。OpenVINO可以轉換和優化使用TensorFlow和PyTorch等熱門框架訓練的模型,在多種英特爾硬件和環境、本地、設備、瀏覽器或云中部署,用于加速計算機視覺、自動駕駛等領域的深度學習推理任務。
圖 4 OpenVINO原理示意圖[4]
模擬與驗證工具
芯片設計中,模擬與驗證工具是確保設計達到期望性能和功能的關鍵。這些工具模擬實際操作環境,預測芯片行為,并驗證設計是否符合規格,幫助發現并修正錯誤,提高產品可靠性和效率。
芯片設計的模擬技術可分為軟件仿真和硬件仿真。軟件仿真在計算機上使用仿真軟件模擬芯片設計行為,不需硬件參與,常見工具有ModelSim、VCS、Virtuoso、C++或SystemC相關芯片模擬器等;硬件仿真則使用通用硬件平臺FPGA或專用仿真器,提供更真實的硬件操作環境,仿真速度更快。
按流程的先后,芯片設計的模擬技術還可更細致地分為行為級仿真(功能仿真)、綜合后的功能仿真、綜合后帶時序信息地仿真、布局布線后的功能仿真、布局布線執行后的時序仿真[5],工具鏈驗證使用的模擬器以行為級為主。在仿真過程中,綜合后門級功能仿真被稱為前仿,布局布線后的時序仿真被稱為后仿,前仿使用硬件描述語言描述電路邏輯;后仿在設計完成后進行,主要考慮電路物理(連線、排布、電容、電阻等)的影響。
驗證技術包括形式驗證和代碼驗證。形式驗證通過數學方法證明設計正確性,不依賴測試例,常用工具有Synopsys的VC Formal;代碼驗證,尤其是代碼覆蓋分析,用來檢查測試用例是否覆蓋所有可能路徑,幫助發現遺漏的功能區域。
對于新型的存內計算芯片,由于FPGA平臺難以完全仿真其核心功能,常采用軟件仿真或特定開發板如知存科技的WTMDK2101系列。而在數字芯片設計中,前端充分的邏輯仿真可避免后端問題。因此,在存算一體芯片的設計過程中,前仿和軟件仿真是非常重要的內容。
下面介紹部分常用模擬與驗證工具:
1. VCS:高性能Verilog仿真和調試工具,支持多種語言,適用于復雜SoC和ASIC設計驗證。優勢在于仿真速度快,調試方便,但僅支持Linux和Unix系統。
圖5 使用VCS和Verdi進行仿真并查看波形的一個簡單例子
2. PrimeTime:靜態時序分析工具,全面進行時序性能驗證,包括時序分析和功耗分析。但是該軟件的操作需要相關專業知識,準確選擇庫文件和延時文件至關重要。
3. ModelSim:支持多種HDL語言的仿真工具,提供豐富的調試功能。優勢在于友好的用戶界面,但在仿真速度和性能上不如VCS。
4. Formality:形式驗證工具,驗證數字IC設計中功能等效性,保證設計修改不引入錯誤。但需要設計者熟悉設計語言版本,可能存在編程語言版本導致的兼容性問題。
5. Virtuoso:模擬、混合信號的設計和仿真工具,它為設計者提供了全面的設計和驗證環境,從概念設計到芯片布局和制造的每個階段都能得到支持。但是軟件功能較為復雜,所需計算資源較大。
圖6 Virtuoso用戶界面
CEVA SoC:作為一種編程語言,SystemC可用于將硬件和軟件描述指定為抽象行為模型。SystemC還提供事件驅動型仿真接口,開發人員可以通過該接口模擬并發進程。即使尚未設計系統的某些部分,開發人員也可以為SoC仿真生成完整系統的可執行模型。CEVA SoC模擬器提供集成SystemC仿真環境,允許系統工程師、架構師和軟件開發人員在硅前階段進行建模、分析和調試。該虛擬模擬器可用于架構定義和快速原型設計,并可用作有效的IP評估和概念驗證 (PoC)工具。它能夠與MATLAB無縫對接,以便用于開發算法和測試。CEVA客戶可以在FPGA平臺上模擬他們的系統以進行最終驗證[6]。
圖 7 CEVA SoC模擬器示意圖[6]
開發和測試工具
芯片設計中,我們也需要一套完成的開發與測試工具,包括集成開發環境(IDE)、代碼編輯器、單元測試和集成測試工具在哪的各種工具等等。前序的模擬與驗證階段主要聚焦于設計的準確性和功能性,包括功能驗證、時序驗證、形式驗證等等;而開發和測試階段更側重于設計的實現與測試,包括編碼、布局布線、各種測試來確保設計的正確性和性能。
下面介紹部分常用的開發和測試工具:
1. Synopsys IO Complier II:主要應用于物理綜合,包括布局布線等相關功能,可實現和優化IC的物理布局,Cadence virtuoso、Mentor Graphics Calibre等軟件也有能實現進行物理設計和布局的相關功能。
2. Xilinx Vivado:用于FPGA的設計和綜合,提供全面的開發環境和工具支持,可將邏輯設計映射到FPGA架構上,并生成可下載到FPGA器件的比特流文件。
圖8 Vivado開發界面
Vim、Emacs、VScode+iverilog:常用的代碼編輯器,常用于編輯硬件描述語言Verilog、VHDL等等。
圖9 Vscode與iverilog聯動編寫硬件描述語言
4. Cadence Palladium Emulator:用于大規模集成電路驗證。
5. Synopsys ZeBu:用于硬件/軟件共同驗證或驗證加速。
6.Mentor Graphics Veloce Emulation Platform:用于驗證SoC設計。
7.Witmem studio:由知存科技開發的一款全功能集成開發環境,包含客戶識別的SDK推送功能,SDK包自動更新下載安裝功能,內核自動識別語法高亮編輯器,面向不同功能的個性化工程創建功能,以及常規IDE所具有的項目工程管理、文件編輯、編譯、調試等功能,可在知存科技官網進行軟件下載[7]。
圖10 Witmem Studio開發界面
8.其他工具:Tcl/TK、Python等用于自動化測試和腳本編寫的軟件。
總而言之,為推動存內計算規模應用,工具鏈的發展壯大將成為存內計算芯片設計中的必然訴求,它們需要業界共同發力,共同搭建面向存內計算的映射與調度、模擬與驗證、開發與測試工具鏈。相信在不久的將來,存內計算芯片相關工具鏈將迎來井噴式發展,讓我們一同分享、一同創造,一起見證存內計算芯片的生態繁榮時代。
參考文獻:
[1]編譯器:TPU-MLIR環境構建及使用指南(一) - 江左子固 - 博客園 (cnblogs.com).
[2]使用 NVIDIA TensorRT 加速深度學習推理(更新) - NVIDIA 技術博客.
[3]Apache TVM中文站(tvm.hyper.ai).
[4]英特爾? 發行版 OpenVINO? 工具套件 (intel.cn).
[5] FPGA中的五個級別和五種仿真(blog.csdn.net).
[6]CEVA SystemC 模擬器:出色的 SoC 模擬器 - 與非網 (eefocus.com).
-
測試
+關注
關注
8文章
5303瀏覽量
126652 -
芯片設計
+關注
關注
15文章
1019瀏覽量
54896 -
映射
+關注
關注
0文章
47瀏覽量
15816 -
測試工具
+關注
關注
0文章
54瀏覽量
11921 -
開發工具鏈
+關注
關注
0文章
12瀏覽量
1588
發布評論請先 登錄
相關推薦
評論