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