0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

工具链工具——映射与调度、模拟与验证、开发与测试工具

廖慧敏 来源:jf_13681693 作者:jf_13681693 2024-05-16 14:30 次阅读

本篇文章将重点介绍工具链的工具相关知识,我们将从工具链的基本概念出发,重点介绍工具链中的映射和调度工具、模拟与验证工具、开发和测试工具,最后提出对工具链发展的展望,从而对工具链的工具进行一个较为系统的讲解。

工具链的基本概念

工具链,英文名称toolchain,通常是指在软件开发或硬件设计中使用的一系列工具和软件,用于完成特定任务或流程。这些工具一般接连地使用,从而完成一个个任务,这也是“工具链”名称的由来。

而在AI芯片领域,工具链特指连接模型算法到芯片部署的端到端系列工具。面向存算一体芯片的深度学习编译工具链包括深度学习的算法设计、前端网络的模型转换、存算一体的电路设计等模块;如今,面向传统芯片的深度学习编译工具链发展健全,而面向存算一体芯片的深度学习编译工具链在前端优化策略、后端空间映射等方面都仍有欠缺,这使得深度学习部署在存算一体芯片上移植性低、成本高,因此需要我们设计出能实现端到端的存算一体工具链及软硬件系统。面向存内计算芯片的深度学习编译工具链通常包括量化、图优化、映射与调度、模拟与验证、开发与测试等工具,前面我们已经介绍过量化和图优化相关知识,本篇文章我们将介绍映射与调度、模拟与验证、开发与测试这三种工具。

映射与调度工具

数据布局和计算任务在存储阵列中的映射至关重要,相应的工具应能智能地分配和管理数据在内存单元中的位置,优化计算效率和带宽使用;调度工具则负责在不同时刻根据资源约束安排计算操作,确保有效利用存内计算硬件的并行性和容量。在深度学习编译工具链中,映射与调度工具专门用于将高层的模型描述转换为优化的硬件指令,并调度这些指令到具体的计算资源上。这些工具通过高级优化技术来提升执行效率和硬件利用率。

下面以一些具体工具举例:

1.TPU-MLIR[1]:

TPU-MLIR是一种专用于处理器的TPU编译器。该编译器项目提供了一个完整的工具链,可以将来自不同深度学习框架(PyTorch, ONNX, TFLite和Caffe)的各种预训练神经网络模型转换为高效的模型文件(bmodel/cvimodel),以便在SOPHON TPU上运行。通过量化到不同精度的bmodel/cvimodel,优化了模型在sophon计算TPU上的加速和性能。这使得可以将与对象检测、语义分割和对象跟踪相关的各种模型部署到底层硬件上以实现加速。

wKgaomZFpuKARkewABFh7NxHIUo638.png

图 1 TPU-MLIR整体架构[1]

2.TensorRT[2]:

TensorRT是NVIDIA提供的一个高性能深度学习推理(inference)引擎,专为生产部署优化。TensorRT提供了API解析器,可以从所有主要的深度学习框架中导入经过训练的模型,广泛用于需要快速推理的应用场景,如视频分析和图像处理。

wKgaomZFpvGAWAKXAAQmxLw0Uy4079.png

图 2 TensorRT logo[2]

3.TVM[3]:

Apache TVM是一个端到端的深度学习编译框架,适用于 CPUGPU 和各种机器学习加速芯片。TVM 提供以下功能:将深度学习模型编译成最小可部署的模块;在更多的后端自动生成和优化模型的基础设施,进一步提高性能。TVM支持广泛的硬件平台和前端框架,能够自动优化模型以适应不同的硬件架构。

wKgZomZFpv2AXiDxABOomawG1Rk056.png

图 3 TVM示意图[3]

4.OpenVINO[4]:

OpenVINO是英特尔开发的一套优化深度学习性能的工具集,是一款可轻松实现“一次写入,处处部署”的开源AI工具套件,可以缩短延迟,提高吞吐量,加速AI推理过程,同时保持精度,缩小模型占用空间,优化硬件使用,支持多种类型的英特尔硬件。OpenVINO可以转换和优化使用TensorFlow和PyTorch等热门框架训练的模型,在多种英特尔硬件和环境、本地、设备、浏览器或云中部署,用于加速计算机视觉、自动驾驶等领域的深度学习推理任务。

wKgaomZFpwyAZqD5ABJ_rRTUUeg604.png

图 4 OpenVINO原理示意图[4]

模拟与验证工具

芯片设计中,模拟与验证工具是确保设计达到期望性能和功能的关键。这些工具模拟实际操作环境,预测芯片行为,并验证设计是否符合规格,帮助发现并修正错误,提高产品可靠性和效率。

芯片设计的模拟技术可分为软件仿真和硬件仿真。软件仿真在计算机上使用仿真软件模拟芯片设计行为,不需硬件参与,常见工具有ModelSim、VCS、Virtuoso、C++或SystemC相关芯片模拟器等;硬件仿真则使用通用硬件平台FPGA或专用仿真器,提供更真实的硬件操作环境,仿真速度更快。

按流程的先后,芯片设计的模拟技术还可更细致地分为行为级仿真(功能仿真)、综合后的功能仿真、综合后带时序信息地仿真、布局布线后的功能仿真、布局布线执行后的时序仿真[5],工具链验证使用的模拟器以行为级为主。在仿真过程中,综合后门级功能仿真被称为前仿,布局布线后的时序仿真被称为后仿,前仿使用硬件描述语言描述电路逻辑;后仿在设计完成后进行,主要考虑电路物理(连线、排布、电容电阻等)的影响。

验证技术包括形式验证和代码验证。形式验证通过数学方法证明设计正确性,不依赖测试例,常用工具有Synopsys的VC Formal;代码验证,尤其是代码覆盖分析,用来检查测试用例是否覆盖所有可能路径,帮助发现遗漏的功能区域。

对于新型的存内计算芯片,由于FPGA平台难以完全仿真其核心功能,常采用软件仿真或特定开发板如知存科技的WTMDK2101系列。而在数字芯片设计中,前端充分的逻辑仿真可避免后端问题。因此,在存算一体芯片的设计过程中,前仿和软件仿真是非常重要的内容。

下面介绍部分常用模拟与验证工具:

1. VCS:高性能Verilog仿真和调试工具,支持多种语言,适用于复杂SoC和ASIC设计验证。优势在于仿真速度快,调试方便,但仅支持Linux和Unix系统。

wKgaomZFpxuAUEbBAA1UDmzG1Yw705.png

图5 使用VCS和Verdi进行仿真并查看波形的一个简单例子

2. PrimeTime:静态时序分析工具,全面进行时序性能验证,包括时序分析和功耗分析。但是该软件的操作需要相关专业知识,准确选择库文件和延时文件至关重要。

3. ModelSim:支持多种HDL语言的仿真工具,提供丰富的调试功能。优势在于友好的用户界面,但在仿真速度和性能上不如VCS。

4. Formality:形式验证工具,验证数字IC设计中功能等效性,保证设计修改不引入错误。但需要设计者熟悉设计语言版本,可能存在编程语言版本导致的兼容性问题。

5. Virtuoso:模拟、混合信号的设计和仿真工具,它为设计者提供了全面的设计和验证环境,从概念设计到芯片布局和制造的每个阶段都能得到支持。但是软件功能较为复杂,所需计算资源较大。

wKgaomZFpy2AIEArAAvKUnRBV5s158.png

图6 Virtuoso用户界面

CEVA SoC:作为一种编程语言,SystemC可用于将硬件和软件描述指定为抽象行为模型。SystemC还提供事件驱动型仿真接口,开发人员可以通过该接口模拟并发进程。即使尚未设计系统的某些部分,开发人员也可以为SoC仿真生成完整系统的可执行模型。CEVA SoC模拟器提供集成SystemC仿真环境,允许系统工程师、架构师和软件开发人员在硅前阶段进行建模、分析和调试。该虚拟模拟器可用于架构定义和快速原型设计,并可用作有效的IP评估和概念验证 (PoC)工具。它能够与MATLAB无缝对接,以便用于开发算法和测试。CEVA客户可以在FPGA平台上模拟他们的系统以进行最终验证[6]。

wKgZomZFpziAeGwnAA6NO2h1RhY199.png


图 7 CEVA SoC模拟器示意图[6]

开发和测试工具
芯片设计中,我们也需要一套完成的开发与测试工具,包括集成开发环境(IDE)、代码编辑器、单元测试和集成测试工具在哪的各种工具等等。前序的模拟与验证阶段主要聚焦于设计的准确性和功能性,包括功能验证、时序验证、形式验证等等;而开发和测试阶段更侧重于设计的实现与测试,包括编码、布局布线、各种测试来确保设计的正确性和性能。

下面介绍部分常用的开发和测试工具:

1. Synopsys IO Complier II:主要应用于物理综合,包括布局布线等相关功能,可实现和优化IC的物理布局,Cadence virtuoso、Mentor Graphics Calibre等软件也有能实现进行物理设计和布局的相关功能。

2. Xilinx Vivado:用于FPGA的设计和综合,提供全面的开发环境和工具支持,可将逻辑设计映射到FPGA架构上,并生成可下载到FPGA器件的比特流文件。

wKgZomZFp0aAP1H8ABFNMcR8GK8308.png

图8 Vivado开发界面

Vim、Emacs、VScode+iverilog:常用的代码编辑器,常用于编辑硬件描述语言Verilog、VHDL等等。

wKgaomZFp1OACQHdABIvsfFDIaQ837.png


图9 Vscode与iverilog联动编写硬件描述语言

4. Cadence Palladium Emulator:用于大规模集成电路验证。

5. Synopsys ZeBu:用于硬件/软件共同验证或验证加速。

6.Mentor Graphics Veloce Emulation Platform:用于验证SoC设计。

7.Witmem studio:由知存科技开发的一款全功能集成开发环境,包含客户识别的SDK推送功能,SDK包自动更新下载安装功能,内核自动识别语法高亮编辑器,面向不同功能的个性化工程创建功能,以及常规IDE所具有的项目工程管理、文件编辑、编译、调试等功能,可在知存科技官网进行软件下载[7]。

wKgZomZFp2GAM3n4AA-iPs4eJPo732.png

图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).

[7]知存科技存内计算芯片开发者中心(witintech.com/develop.php).

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    5155

    浏览量

    126456
  • 芯片设计
    +关注

    关注

    15

    文章

    1001

    浏览量

    54805
  • 映射
    +关注

    关注

    0

    文章

    45

    浏览量

    15796
  • 测试工具
    +关注

    关注

    0

    文章

    53

    浏览量

    11908
  • 开发工具链
    +关注

    关注

    0

    文章

    12

    浏览量

    1583
收藏 人收藏

    评论

    相关推荐

    基于模型的动态测试工具TPT

    针对嵌入式系统的基于模型的动态测试工具,支持众多业内主流的工具平台和测试环境,可应用于整个嵌入式软件开发周期,实现各种异构环境下的自动化测试
    发表于 02-20 14:28 915次阅读
    基于模型的动态<b class='flag-5'>测试工具</b>TPT

    并口开发试工具

    并口开发试工具包:开发试工具包包括三个功能模块:“并口调试器”、“并口测试信号发生器”和“并口监视器”。
    发表于 05-26 09:53 37次下载

    并口开发试工具包 (推荐)

    并口开发试工具包 (推荐):
    发表于 05-27 10:15 35次下载
    并口<b class='flag-5'>开发</b>调<b class='flag-5'>试工具</b>包 (推荐)

    并口开发试工具包源码

    并口开发试工具包源码:开发试工具包包括三个功能模块:“并口调试器”、“并口测试信号发生器”和“并口监视器”
    发表于 10-12 10:39 57次下载

    TD-SCDMA测试工具体系及应用

    目录: TD-SCDMA测试工具体系 TD-SCDMA网络类测试工具介绍 TD-SCDMA终端类测试工具介绍  
    发表于 08-02 15:08 18次下载

    汽车CAN/LIN总线测试流程和测试工具解析

    汽车CAN/LIN总线测试流程和测试工具解析 汽车CAN/LIN总线系统测试的关键是测试流程、测试标准和
    发表于 03-19 10:44 8402次阅读

    TCP/UDPDbg测试工具

    TCP&UDP测试工具 V1.02 此测试工具用于开发网络通讯程序时,在服务器或客户端测试TCP/UDP通讯连接和测试数据的接收和发送
    发表于 10-26 17:30 316次下载

    串口调试工具

    串口调试工具 便于单片机下载 串口调试工具 串口调试工具
    发表于 11-20 16:35 42次下载

    渗透测试工具开发

    渗透测试工具开发
    发表于 09-07 10:30 18次下载
    渗透<b class='flag-5'>测试工具</b><b class='flag-5'>开发</b>

    常用的软件测试工具有哪些_10款常用的软件测试工具推荐

    一个好的软件测试工具测试管理工具结合起来使用将会使软件测试效率大大的提高。那么软件测试工具有哪些呢?本文汇总了十款常用的软件测试工具,具体
    发表于 04-24 14:14 7.5w次阅读

    自主开发的MIL测试自动化测试工具

    37年,55颗卫星,就在今天北斗真的成功了。 上一篇简单文章中介绍了一下MIL测试的流程,本文章将介绍一个小编自主开发的MIL测试用的自动化测试工具。 目前国内主流
    的头像 发表于 10-23 11:33 7634次阅读
    自主<b class='flag-5'>开发</b>的MIL<b class='flag-5'>测试</b>自动化<b class='flag-5'>测试工具</b>

    常用串口通信测试工具sscom

    常用串口通信测试工具,是工程师手头必备的工具软件。
    发表于 06-07 15:11 2次下载

    渗透测试工具箱siusiu的特性及使用

    一款基于docker的渗透测试工具箱,致力于做到渗透工具随身携带、开箱即用。减少渗透测试工程师花在安装工具、记忆工具使用方法上的时间和精力。
    的头像 发表于 10-08 11:54 2673次阅读

    总线测试工具CANOE的使用指南

    CANOE可谓是常用的总线测试工具之一,不管是总线开发工程师还是测试工程师,甚至是驻场工程师,都对它很熟悉。
    发表于 10-10 15:26 5716次阅读

    APK渗透测试工具:AppMessenger

    APK渗透测试工具:AppMessenger,一款适用于以APP病毒分析、APP漏洞挖掘、APP开发、HW行动/红队/渗透测试团队为场景的移动端(Android、iOS)辅助分析工具
    的头像 发表于 11-18 09:32 2769次阅读