快捷导航
科技信息

ESL发展及其在项目中的应用

作者 | JJ.Tian, 复睿微电子ESL建模工程师 一. 前言 随着半导体行业的高速发展,ESL(Electronic System Level)建模或芯片建模在大算力高性能芯片范畴显得越来越紧张,国表里EDA或芯片操持公司都在构建自己的芯片评估

作者 | JJ.Tian, 复睿微电子ESL建模工程师

一. 前言

随着半导体行业的高速发展,ESL(Electronic System Level)建模或芯片建模在大算力高性能芯片范畴显得越来越紧张,国表里EDA或芯片操持公司都在构建自己的芯片评估工具或平台,以应对复杂芯片操持所带来的寻衅。渴望通过这篇文章让各人对ESL建模以及相干的根本概念和操持方法有肯定的认识,相识ESL建模的方法和流程,明白工具并使用工具创造代价。

本文重要先容ESL相干的根本知识、概念、术语、以及ESL发展汗青。基于这些新的理念和方法,ESL建模得到了长足发展而且渐渐趋于完满。与别的技能雷同,ELS或芯片建模采取的工具平台也包罗商业和开源两大阵营。别的,本文还先容了芯片建模标准规范,IEEE1666-2011 SystemC+TLM2.0。

在此根本上,还先容了芯片建模的重要应用范畴,有些应用比力成熟,好比性能模子(架构探索/评估/分析),功能模子(软件提前开辟),功耗模子(功耗评估),肴杂仿真(功能或性能模子),软硬件协同操持,验证与分别等。有些应用比力新奇,好比高阶综合(HLS),主流的EDA供应商已经发布了相应的工具,由于应用范畴范围性而尚未得到广泛应用。限于篇幅,本文只涉及性能模子和功能模子两个应用方向,别的方向的应用后续偶然机再作先容。

在本文中,ESL、ESL建模、芯片建模,名称差别但是寄义相称。

二. 术语

三. ESL发展简介

早在20年前,随着芯片行业的发展,芯片布局越来越复杂,版本迭代越来越快速,应用场景越来越多样化,这些变革给芯片操持带来了巨大的寻衅。人们留意到传统的操持方法已经不能再满足芯片操持需求,亟需一种全新的操持方法和理念,既能处置处罚复杂的内部布局,又能应对功能的快速迭代,由此ESL应运而生。2001年,ESL率先由Gartner Dataquest界说和发布,并被大众所熟知,至今,ESL已经在芯片操持、验证以及仿真范畴得到广泛应用。

如果深入研究ESL的本质,它不是某种详细的操持语言、工具或平台,而是一种通用的操持和验证方法学,根据芯片各阶段的操持要求,在规格界说阶段(前期)、中期、后期使用这种方法对芯片的性能,功能,功耗举行建模,通过仿真得到某些参数或指标,作为芯片操持和优化参考。

ESL重要应用范畴:

·性能/架构模子(CA/AT):架构探索,评估与优化,架构操持阶段

·功能模子(TL):软件提前开辟,软硬件并行开辟,收缩研发周期

·功耗模子:功耗评估

·体系操持(System Level Design):软硬件协同操持、验证与分别

·Co-simulation(Model+RTL)肴杂仿真:包罗功能和性能仿真

·高阶综合(HLS):使用工具将C++/SystemC+TLM2.0模子直接综合成RTL代码

ESL之以是能应用于差别范畴,是由于采取烈?级编程语言,建模机动,快速迭代,可以实现差别抽象条理(Abstraction Level)的模子。如果非要从学术层面来界说ESL,可以明白为“使用恰当的抽象来增长对体系的明白,并以具有本钱效益的方式进步乐成实现功能的大概性”。这内里涉及体系、抽象、软硬协同操持和验证以及功能实现等。

业界根据这些操持方法和头脑,颠末多年发展,已经形成了开源和商用两大阵营,以下是业界具有代表性的仿真工具与平台。

·开源

· SystemC+TLM2.0

· QEMU

· GEM5

· ……

·商用

· FastModel, arm

· VDK, Synopsys

· Simics, Wind River/Intel

· ……

除了以上列出来的仿真工具宁静台之外,固然还包罗别的开源和商用仿真工具,不胜摆列,详情可以参考[15]。

由于商用工具必要购买license,有些公司与其IP深度绑定,形成了完备的生态链,处于把持职位,授权代价昂贵且授权方式完全由供应商主导,对国内芯片公司不是特殊友好。因此国内大多数公司把目的都转向开源仿真工具,开源工具中使用比力广泛的是GEM5和QEMU,两者都提供了丰富的模子和完备的软件,但他们之间也存在差别。GEM5和QEMU都有完备的处置处罚器,总线和外设功能模子,可以快速搭建用户必要的模子,别的,还提供相应的驱动软件和体系软件包,可以更快的实现体系boot功能,用户只必要关注软件开辟工作,这些只是功能模子方向的应用。

别的GEM5还提供了业界主流架构的处置处罚器(core)模子,如x86/arm/risc-v等,总线(NoC)等架构模子,可以举行性能仿真和评估。在学术界也非常盛行,使用GEM5举行盘算机或芯片架构探索,性能评估等,基于GEM5仿真所发表的学术论文特殊多。对于多数自研IP的公司来说,好比AI/GPU/NPU等,通常照旧基于C++/SystemC+TLM2.0建模,根据自研芯片规格来实现自界说架构模子,也会借用GEM5内里现成的模子。趁便提一下,SystemC+TLM2.0之以是紧张,是由于商用仿真平台多数都是参考或基于SystemC+TLM2.0开辟。

好比各人所熟知的Synopsys VDK仿真平台,就是在开源SystemC+TLM2.0根本上,增长和增强了很多新的功能,以图形界面方式出现,专门为用户提供了二次开辟的接口和方法,究其最低层技能照旧基于SystemC+TLM2.0标准实现的,别的Candence Xcelium,一种综合逻辑仿真器,也支持SystemC+TLM2.0模子仿真,SystemC+TLM2.0是芯片建模和仿真的紧张根本。

四. IEEE1666-2011标准

为了可以或许更全面地认识SystemC+TLM2.0, 我们可以从产生配景、编程语言、参考仿真器等多个方面来相识。

根据前面先容,早在2000年左右,人们就提出了抽象条理操持概念以应对复杂芯片操持寻衅,但是其时并没有同一的实现语言和工具,好比LISA/LISA+早在90年代就被提出了,是最早架构建模语言之一,迄今为止,在arm的FastModel内里仍然可以见到其身影,除了FastModel之外业界很少直接使用LISA/LISA+语言建模。

直到2004年SystemC诞生,架构建模语言渐渐趋于收敛和同一,2011年OSCI发了SystemC 2.3.0,现在最新版本为2.3.4,随后被纳入IEEE标准,并正式发布IEEE1666-2011标准版本。直到本日,照旧由OSCI开辟和维护,同时OSCI附属于标准构造Accellera并成为该构造下面浩繁技能标准之一。

起首,SystemC+TLM2.0是全面兼容C/C++的类库(class library),支持C++11/14特性(Feature),以是可以明白为SystemC+TLM2.0是基于C/C++的建模语言(Modeling language),作为一门编程语言,它不绝都在不停升级和发展,根据官方资料表现,重要朝着多线程(Multithreading)、功能安全(Functional Safety)、错误注入(Error Injection等方向举行发展和演变。

其次,SystemC+TLM2.0照旧一种开源参考仿真器,可以通过离散变乱实现进程之间通讯和同步,在这里,进程可以明白为模块内里具备独建功能的逻辑电路,使用进程旨在形貌独建功能的逻辑电路的“并行性”,如果从这个角度来讲,SystemC+TLM2.0编程具有协同步调(Co-routines)的头脑,因此在建模的时间,总是要思量进程(逻辑电路)之间是序次关系照旧并行关系。

通过几张图(均来自IEEE1666-2011)先容SystemC+TLM2.0的重要内容和构成。图1展示了SystemC Language Architecture,最底层是标准C++编程语言,在此之上包罗两大块焦点内容Core Language 和 Data Type。

焦点语言部门重要包罗module(sc_module), port(sc_port/sc_export), interface(sc_interface), channel(sc_channel),clock(sc_clock), 调治器(scheduler),进程(thread/SC_THREA/SC_METHOD),括号内里是相应的类名、函数或宏名。

Data Type用于形貌硬件中的数据位宽,逻辑状态(高电平,低电平,高阻态,不确定态),以及数据和状态之间的操纵等。在两大焦点的根本上还包罗进程之间的控制和交互使用的接口(Interface)和通道(Channel),如signal、buffer、mutex、semaphore等。具备这些建模的根本要素之后就可以根据芯片规格(Specification)对其建模了。

图1. SystemC Language Architecture (IEEE1666-2011)

如果只用SystemC提供的组件来建模,开辟者不光必要关注模块内部布局和功能实现,还必要关注模块之间的通讯功能实现。这对开辟者来说,无疑是增长了开辟负担,也倒霉于开辟更高抽象条理的模子开辟,由于SystemC内里模块之间通讯以channel为主,好比signal/fifo,这种方式固然可以形貌更加精准的硬件举动(CA),但是仿真服从低,对于芯片架构探索或开辟前期来说并不实用。

为相识决不能开辟恣意抽象条理模子和仿真服从低两大题目,OSCI还推出了TLM(Transaction Level Modeling)。在OSCI官方文档中对SystemC+TLM2.0最常用的形貌为SystemC with TLM2.0,SystemC/TLM2.0或SystemC+TLM2.0。SystemC+TLM2.0实际上包罗两块独建功能的内容,建模时会同时使用。参考图2,SystemC又是TLM2.0的根本,包罗TLM1.0和TLM2.0,两个版本在实现方式和细节上有所差别,TLM1.0使用相对较少,本文不做先容。

由于TLM2.0操持更具有通用性,得到了广泛应用,TLM2.0不光提供blocking/non-block/Debug/DMI transport接口,还实现了通用数据范例(generic payload)和通用的相位(phase),由这两个通用模块构成根本协议(Base protocol)。接口和根本协议构成通用层(Interoperability layer),通用层除了极大地方便建模外,还让差别公司开辟的模子可以集成到同一个体系中。

除了通用层之外,TLM2.0还提供了utilities class,可以作为golden simple,包罗socket/callback register/blocking/ non-blocking transport等。此中simple_initiator_socket/ simple_target_socket极为常用。这些接口服从高且使用方便,应用非常广泛,对于大多数建模场景而言,使用自带utilities class根本满足要求,固然如果有特殊需求,比方增长时序或时钟信息,或对新的通讯协议举行建模,可以在通用层的根本上开辟全新的socket,好比AMBA协议簇内里的AXI /CHI等。

图2. TLM2.0 Class (IEEE1666-2011)

根据前文对SystemC+TLM2.0的先容,现在可以研究一下SystemC+TLM2.0建模抽象条理与详细应用之间的关系。图3展示了建模方式(Coding Styles)以及抽象条理,应用场景可分为四类,即软件开辟、软件性能分析、架构性能分析、硬件验证。可以根据仿真需求选择相应的coding styles和TLM2.0通用层来实现,好比transport/ socket等。建模抽象条理应根据要求而定,精度和抽象条理更是必要权衡思量(Trade-off),同时还必要分身仿真服从。

总的来说,对精度要求更高,则对建模抽象条理要求也更低,其仿真服从就越低(仿真慢),反之亦然。除了SytemC+TLM2.0存在这个客观范围之外,别的EDA工具也雷同,纵观芯片操持链路中的EDA工具中,没有任何一个EDA工具可以全部覆盖操持和验证功能,都会存在自身的上风和劣势。即便云云,也可以使用不完满的工具得出相对满足的效果,怎样充实使用好SystemC+TLM2.0必要综合思量模子精度和仿真服从。以模子对时钟或时序要求为例,每一种应用场景对时钟或时序要求差别很大,硬件验证则必要确保时钟周期完全同等,架构探索和软件性能分析则只必要时钟或时序近似,软件开辟则完全不必要思量时序信息,只要包管数据准确即可。

图3. Use cases, coding styles, and mechanism(IEEE1666-2011)

五. 性能模子

图4是简化版本的芯片操持流程,忽略别的步调和细节,对于前端和后端而言,EDA公司可以提供明白的测试与验证平台(工具),包罗方法和流程。但是对于架构操持来说,怎样验证,使用什么工具或平台呢?如果芯片架构师收到了来自市场或客户的产物需求文档(Product Requirement Document, PRD),必要根据产物需求文档量化芯片的参数和指标,即界说芯片规格,确定芯片内里某些子模块的详细参数和举动,好比L1/L2/L3 cache size,总线带宽,关键模块之间的时延,内存架构等,芯片研发初期,此时RTL还未开始开辟,更是没有任何平台共同应用场景来验证参数的准确性和公道性,因此怎样验证架构操持成为芯片寻衅之一。

特殊是AI/GPU/NPU等雷同专用的芯片,对架构验证平台的需求尤为突出。架构模子或性能模子成为验证架构操持的重要工具或平台,在规格界说阶段并可以开始操持架构模子,迭代,测试和优化,将效果反馈给芯片架构师,不停精致化芯片参数,架构或性能模子应当具备以下几点要求:

模子准确性,抽象条理,可定量或定性分析

模子迭代,参数可设置,可快速迭代,可探索全新的架构(下一代)

图4. 芯片操持流程(简化)

参考图4,芯片架构验证就是建模、测试、校验和优化的过程。只管芯片架构验证处于芯片操持初期,实际上这一过程陪同芯片操持整个周期。

架构探索可以分为单元架构(处置处罚器微架构/存储架构)和体系架构,单元架构模子更聚焦于内部实现细节和交互信息,好比处置处罚器5级流水,取指、解码、实行、访存、写回。而体系架构则偏重于团体性能评估,将应用场景实例化之后,直接加载到架构模子上运行,通过网络数据处置处罚信息,好比Latency/Bandwidth/Efficiency/Event/Timing等等,定量分析架构的性能和参数。

抽象条理着实是架构模子在建模之前必要思量的重点。从周期精度模子(CA model),时间近似模子(AT model)到举动模子(LT/Behavior Model),必要根据评估目的而定,无关性能的模子,可以采取举动模子,必要关注性能的模子可以使用周期精度或时间近似模子,将这些差别抽象条理的模子集成到同一体系,还能得到肴杂(Hybrid)模子,该模子可以满足某些特殊场景的测试和验证需求。

图5展示了建模与仿真流程,以及与架构操持之间的关系。无论是软件照旧硬件操持,都有一种操持理念,称为可实行规格(Executable Specifications),对于芯片操持而言,其意是指架构操持、架构建模和架构验证过程。可以直接将架构规格阐明转化为可实行步调,定量分析架构操持。

图5. 建模和仿真流程

架构建模包罗的内容很多,流程固然简单,但是整个建模和仿真过程,可以大略也可以精致,机动多变,效果出现方式和分析方法也是多种多样。颠末仿真除了可以得到带宽(Bandwidth)、时延(Latency/Delay)、波形(Waveform)等最根本的数据之外,还可以得到状态、变乱统计等信息。架构操持和架构建模互为增补,陪同参数调解、仿真迭代、仿真优化和效果分析等过程,直到终极得到满足应用要求的参数和效果。

图6. 简单的NoC参数和性能分析用例

图6给出了一个简单的NoC性能分析用例,在NoC的上行和下行接口上增长监测(Monitor),网络数据传输过程的参数。假设总线协议是AXI,CPU发送的数据包来自某个应用场景。可以调解BL(Burst Length)长度、Burst Size、Burst Type等以适配差别的NoC设置,直到满足要求的效果。

六. 功能模子

我们知道任何产物都有窗口期,每家公司都渴望自己的产物尽快上市(Time-to-Market),更快更多地抢占市场。为了最大化地收缩开辟和生产周期,每个行业都在使用新进的工具来举行并行开辟。芯片操持也不破例,如果简单地将芯片操持分别为硬件和软件两部门,传统的操持流程是先硬件后软件,以串行方式举行。

由于软件开辟依靠于硬件平台,为了实现硬件与软件并行开辟,功能模子使软硬件并行开辟成为大概。功能模子(Function model)也称为假造原型(Virtual Prototyping VP),假造平台(Virtual Platform VP),它们的本质都是一样,如果说非要有些区别,假造原型更倾向于片上体系(System on Chip, SoC),假造平台涉及更大的体系,除了包罗SoC之外,还包罗别的子模子如NoC,DDR,Peripherals等,在这里,可以明白为板级(Printed Circuit Board,PCB)假造体系。

软件操持左移(Shift-left)在芯片操持范畴越来越被器重,左移就是为了实现软硬件并行开辟。参考图7,如果将芯片操持简单分为架构,前端和后端操持三个阶段,使用传统操持流程,软件必要在RTL开辟快竣事的时间,才气在FPGA/Emulator平台开始软件开辟和调试,参考图7中Emulation starting point。

如果采取功能模子或假造原型(VP),在时间上可以提前至少8~12个月,给软件团队富足的时间来开辟和优化软件,利勤劳能模子,可以开辟firmware/driver/API/boot flow/Linux/software stack等,如果功能模子增长了时序和追踪(Trace)功能,还可以运行应用步调,用来分析软件的性能。通过两种方式对比,在时间上有绝对的上风,因此得到了广泛应用,好比VDK、Simics、使用SystemC+TLM2.0开辟的功能模子等。

图7. 芯片研发周期表现图

与性能模子相比,功能模子是步调员视角模子(Programmer View, PV),只要包管寄存器精度和数据传输准确即可,无需关注时序以及链路上数据的详细传输过程。如果有额外的需求,好比分析软件性能,可以在模子内里增长时序(Timing)、变乱(Event)等信息,建模非常机动,完全可以根据需求增长相应的特性(Feature)或功能。

图8. 功能模子内部布局

由于功能模子不必要思量时序和传输过程等因素,与性能模子比起来,相对简单很多,参考图8,典范的功能模子用例重要包罗输入/输出接口,数据队列,控制逻辑,回调函数,寄存器,状态信息,停止信号等等。

针对无时序模子SystemC+TLM2.0专门提供了blocking和DMI接口,即b_transport和get_direct_mem_ptr,通过调用这两个接口函数可以直接返回效果,调用接口函数过程中不会被别的模块或进程打断。别的,SystemC+TLM2.0还提供了时间解耦(Temporal Decoupling),仿真时钟精度(Time Resolution),全局量子时间(Global Quantum)等特性,充实使用non-blocking/DMI接口和这些特性可以巨大地提拔功能模子的仿真服从。

七. 总结

起首,本文先容了ESL发展汗青,以及商用和开源两大阵营中主流仿真工具宁静台。其次,还先容了SystemC+TLM2.0标准规范,末了先容了两个重要应用场景:性能模子(架构模子)和功能模子(假造原型)。只管可以使用SystemC+TLM2.0创建恣意抽象条理的模子,但是也存在不敷之处,现在SystemC+TLM2.0只支持单线程,正是这个缘故原由导致复杂的或抽象条理较低的模子仿真很慢(仿真服从低),从官方渠道可以得知,SystemC+TLM2.0正在朝着多线程、功能安全、错误注入等方向发展和演变,以办理仿真服从题目和拓展更多的应用范畴。

参考资料

[1]. IEEE Standard for Standard SystemC Language Reference Manual, IEEE Std 1666-2011

[2]. TLM_2_0_presentation

[3]. ESL DESIGN AND VERIFICATION 2006

[4]. A SystemC Primer 2002

[5]. systemc-from-the-ground-up-2-edition 2004

[6]. System Design with SystemC 2002

[7]. Enhanced Virtual Prototyping (Featuring RISC-V Case Studies) 2021

[8]. Complete Symbolic Simulation of SystemC Models 2016

[9]. https://en.wikipedia.org/wiki/Virtual_prototyping

[10].https://www.intel.com/content/www/us/en/developer/articles/tool/simics-simulator.html

[11]. https://developer.arm.com/Tools%20and%20Software/Fast%20Models

[12]. https://www.synopsys.com/verification/virtual-prototyping.html

[13]. https://www.qemu.org/

[14]. https://www.gem5.org/

[15]. A Survey of Computer Architecture Simulation Techniques and Tools, 2019

作者先容

JJ.Tian, 复睿微电子ESL建模工程师,华中科技大学工学硕士,在服务器芯片测试和验证、CPU/AI芯片建模等范畴积累了丰富的工作履历。

关于复睿微电子

复睿微电子是天下500强企业复星团体出资设立的先辈技能型企业。公司目的成为天下领先的智能出行期间的大算力方案提供商,致力于为汽车电子、人工智能、通用盘算等范畴提供以高性能芯片为根本的办理方案。现在重要从事汽车智能座舱、ADS/ADAS芯片研发,以领先的芯片操持本事和人工智能算法,通过底层技能赋能。

复睿微电子是复星智能出态的通算和智能算的根本平台。复睿微电子以提拔客户体验为使命,在后摩尔定律期间连续通过先辈封装、先辈制程息争决案提拔算,与相助同伴共同对汽智能化的新期间。

收藏 邀请
上一篇:卢伟冰称小米手机夺走华为五万万用户,苹果夺走两万万下一篇:经观社论|ChatGPT背后的创新焦急
我有任务需求要发布
专业服务商主动承接
快速解决你的需求

专注IT众包服务

平台只专注IT众包,服务数 十万用户,快速解决需求

资金安全

交易资金托管平台,保障资 金安全,确认完成再付款

实力商家

优秀软件人才汇集,实力服务商入驻,高效解决需求

全程监管

交易过程中产生纠纷,官方100%介入受理,交易无忧

  • 微信访问
  • 手机APP