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

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

3天内不再提示

利用硬件辅助工具加速芯片前端设计的功能性验证阶段

ruikundianzi 来源:无锡亚科鸿禹电子有限公 作者:白建东 2022-10-10 16:06 次阅读

近年来,芯片规模,功能复杂度以及集成度的不断增加,验证工作面临着非常大的挑战。软件仿真(Simulation),FPGA原型验证(FPGA Based Prototyping)和硬件仿真加速(Emulation)这三种有效的功能验证的方法,在验证流程中发挥着非常重要的作用。

软件仿真有着出色的信号可见性,FPGA原型验证有着极强的实时性和系统开发性,硬件仿真加速则兼具了信号可见性,可调试性,以及仿真加速的能力,这几种验证方法在芯片前端设计的功能性验证阶段发挥着重要的作用。FPGA原型验证和硬件仿真加速作为硬件辅助验证的两种手段,在芯片设计的过程中相辅相成,互为补充,为芯片成功流片保驾护航。

硬件仿真加速阶段,一般用于代码还不很成熟的开发的中后期阶段,需要能够提供更大的系统容量,更方便的调试手段和方法,主要用来验证设计的RTL代码,兼顾软硬件协同验证和软件开发。而FPGA原型验证阶段一般应用于代码比较成熟的的偏后阶段,主要是做软件开发和软硬件协同验证。

ffdc370e-485b-11ed-a3b6-dac502259ad0.png

图一 硬件辅助验证在流程中的位置

00097c78-485c-11ed-a3b6-dac502259ad0.png

几种不同的仿真验证手段的效果对比

(一)基于硬件辅助验证工具的仿真加速方法

一般意义上,我们将FPGA原型验证和硬件仿真加速都归为硬件辅助验证手段,比较有效和最为常见的仿真加速方式分为:软件仿真(Software Simulation),周期精确级的仿真加速(Cycle Based Simulation ),事务级的仿真加速(Transaction Based Simulation),和完全可综合的仿真加速(Synthesizable Simulation)这几种方法。通过不同的仿真加速方法,对验证速度能够有接近千倍的提升。

第一种,软件仿真(Software Simulation),最常见的仿真方法,将Testbench和DUT都在仿真软件中运行。最主流的仿真软件的算法机制大部分都是“基于事件的算法”这种算法更适合处理离散的时间,状态和变量。仿真器首先在编译数据结构的时候会建立一个事件队列,仿真从时间0开始,在时间0的所有事件队列处理完毕以后,才可以进入下一个时间周期。而在同一个时间周期内的事件在“硬件”上都是并行的。

00254660-485c-11ed-a3b6-dac502259ad0.png

图二 Simulator仿真的结构

0034fb00-485c-11ed-a3b6-dac502259ad0.png

图三 基于事件的Simulator算法

第二种:周期精确级的仿真加速(Cycle Based Simulation Acceleration )

我们在针对软硬件联合仿真的方式做说明之前,需要对SCE-MI/MII(标准协同仿真建模接口)做一下说明,该接口是为了标准化软件模型和硬件平台之间的通讯而定义的,属于Accellera标准,目的是使用者将DUT和Testbench做连接,通过事务器模型(Transactor)能够轻松的实现互联。下图是该协议的基本结构说明。

00497f12-485c-11ed-a3b6-dac502259ad0.png

图四 SCE-MII基本结构

周期精确级的仿真加速,是通过专用的硬件来运行用户设计,通过仿真软件运行Testbench,根据专用的软硬件协同工作的协议来进行软件硬件侧的数据转换和交付,从而实现软件仿真加速的一种方法。

该方法在软硬件两侧交互的周期中,严格按照时间单位推进每一步的协议转换,并且采用双握手的方式进行通讯确认,这将产生大量的软硬件之间的交互开销,所以在加速的效果上不是十分的理想。这种方式的优点是针对一些非标协议的转换和时钟同步结构的设计有很大的灵活性。

007a036c-485c-11ed-a3b6-dac502259ad0.png

图五:周期精确级的仿真加速结构

008e3364-485c-11ed-a3b6-dac502259ad0.png


图六:双握手协议示意

第三种:事务级的仿真加速(Transaction Based Acceleration)

事务级的仿真加速是将DUT和部分Testbench运行在硬件辅助验证工具之中,通过事务器与仿真器中运行的Testbench进行通讯,可以实现将无时序激励变为有时序功能的交互。这是因为软件侧的一个操作所花费的时间在一般情况下会远大于硬件侧的时钟周期。

当发送一个带时序的激励时,软件侧需要花更多的时间进行时序的构建,会在一定程度上影响软硬件协同仿真平台的性能。所以在软硬件验证过程中,事务级仿真加速能够很好的解决这类型的问题。

比如对于一个拥有AXI或者AHB接口的DUT,软件侧需要按照AXI或者AHB的时序规则构建激励,而扩展了无时序激励变有时序功能时,仅需要将AXI或者AHB的总线数据按顺序发送至硬件侧,硬件侧可以自动完成时序的构建,这样的功能结构能够大幅度提高仿真的效率。

00a9412c-485c-11ed-a3b6-dac502259ad0.png

图七:事务级的仿真加速结构

第四种:完全可综合的仿真加速(Synthesizable Testbench Simulation )

00cea00c-485c-11ed-a3b6-dac502259ad0.png

图八:完全可综合的仿真加速结构

这种仿真加速方式相较于Transaction的仿真加速,是需要将用户的DUT和测试激励完全综合进仿真加速器,这样可以大大的减少因为软硬件的交互而产生的通讯开销,从而可以极大地提高仿真速度。

不同的软硬件结合的仿真加速方式能够带来不同的加速比,周期精确级的仿真加速因为通讯开销带来的影响,相较于软件仿真基本上可以做到5-100倍的仿真加速;基于事务级的仿真加速则能够为用户带来20-1000倍的加速体验,尤其适用于各种专用的算法实现,比如:视频编解码的处理,交互数据量巨大的通讯芯片验证等。而完全可综合的仿真加速则可以针对全流程的设计验证提供最有效的仿真加速手段。

00e84f5c-485c-11ed-a3b6-dac502259ad0.png

图九:几种不同的仿真加速的加速比

(二)利用硬件辅助验证工具实现混合仿真

基于硬件辅助验证的混合仿真是指利用硬件仿真加速器和虚拟原型同时运行SoC的不同设计模块,在SoC整体架构硬件实现之前提供嵌入式软件和硬件的协同仿真,从而加速SoC的研发进程。

可以实现硅前硬件和嵌入式软件协同混合验证,为系统架构的优化、嵌入式软件以及RTL的早期开发提供准确,即时的仿真验证环境,有力推动产品开发左移。

一般的混合仿真系统由Qemu宿主机和硬件仿真加速系统两部分构成,其中,宿主机的操作系统中会运行基于开源环境的目标嵌入式处理器和基于Qemu Virtual Linux Platform的内核驱动程序以及用户态的驱动程序。

通过专有协议实现软件和用户设计的通讯,将运行硬件仿真加速工具的宿主机和硬件平台,通过TLM(Transaction Level Model)的传输模型,将用户设计的IP和实现硬件结构的功能子卡进行联合,从而实现一个完整的混合仿真系统。

01105f56-485c-11ed-a3b6-dac502259ad0.png

图十:混合验证工作流程

(三)集成高效的并行逻辑综合工具提升硬件辅助验证效率

设计验证过程综合时间长,迭代频率高,需要设计工程师和验证工程师花费大量的工作时间和精力。近年来,随着多种图像处理器人工智能加速算法,大数据采集,多处理器应用等应用方向的芯片设计增加,各种GPU,TPU,XPU等大逻辑量的IP被集成至单颗芯片内,造成设计、仿真和验证的数据量出现了指数级的增长,所以综合和仿真等过程都展现出“过长的编译综合时间”、“编译迭代耗时过长”等情况,工程师大量的时间浪费在了等待综合编译上。

流程节点不同,存在不同的综合策略需求。硬件仿真加速阶段,一般用于代码还不很成熟的开发的中后期阶段,需要能够提供更大的系统容量,更方便的调试手段和方法,主要用来验证设计的RTL代码,兼顾软硬件协同验证和软件开发。而原型验证阶段一般应用于代码比较成熟的的偏后阶段,主要是做软件开发和软硬件协同验证。

在以上两个流程阶段,综合加速的需求各有侧重点。硬件仿真加速阶段代码的成熟度不高,迭代频繁,需要更高速的编译速度来提高迭代效率,以及对RTL代码的忠实的一致反映以便于调试;而原型验证阶段代码相对成熟,需要产生出更高效的功能等效系统来提高运行速度。

高效并行综合是将用户的RTL代码按照不同模组分类,分别调用综合工具,同时进行综合,从而实现快速综合的目的,按照不同的阶段,可以设置不同的综合流程,可以实现“Top-down”和“Bottom-up”两种方式;支持多种的逻辑综合器,比如:Xilinx Vivado, Synposys Synplify和其他的一些开源的逻辑综合器,支持GUI和Batch模式,用户可以灵活选择功能展现模式;可以支持模组并行化处理,既支持本地多线程并行处理,也可以有效的支持多种作业调度系统;可以设置不同的参数来制定不同的综合策略,从而实现综合效率的最大化,比如:面积优先,速度优先,最大化、小化优先等策略。

通过并行逻辑综合方案可以提供出色的自动化流程,大大缩短编译所需时间,提高整体的效率和利用率,极大的提高生产率。

012c74a2-485c-11ed-a3b6-dac502259ad0.png

图十一:并行综合处理界面

(四)高效的在线逻辑分析工具提升硬件辅助验证效率

FPGA产品自带的在线逻辑分析仪工具(ILA 或 SignalTap)可以为FPGA提供观测信号的便捷性,但因为其本身的属性问题,存在了诸多的短板,例如:数据波形存储在片上的RAM中,需要均衡用户设计占用的存储资源和用于调试的存储资源;受限于FPGA片上RAM的容量,对待抓取的信号的位宽和深度都有限制;待抓取波形需要从FPGA的RAM资源中通过JTAG导出到工作站中,由于传输速度过慢,当数据量巨大时,传输时间占用更加的明显;芯片逻辑容量增加,原厂的逻辑分析仪无法满足调试需求。

硬件辅助验证工具中的专用逻辑分析仪有效的解决了以上的几个问题。

1)波形数据存储在FPGA外部存储,几乎不占用FPGA的片上ram资源;FPGA器件因为其工艺特殊性,一般会集成一些RAM资源在FPGA种,但是该种资源的深度和位宽都非常的小,无法满足超大容量的存储需求,亞科鸿禹新研发的hsTrace,在系统内部集成有专用的外置存储空间,可以完全不占用FPGA的RAM资源。

2)外接存储容量最高可支持16GB的存储空间,极大地提高了波形数据的采样大小;硬件辅助验证工具外置专用的存储空间,可以使数据存储和读取的资源加大,也就意味着可以提供更深的存储空间和更宽的存储位宽,为解决当下验证功能的需求提供了基础。

3)波形数据的传输通过网口(或PCIE)实现,传输速率也得到了极大的提升。FPGA原厂提供在线逻辑分析仪的调试通道是通过JTAG接口完成的,JTAG的最大传输速度只能到12Mhz,我们选用的PCIE的传输带宽能够到5Gbps,这为大数据量吞吐提供了硬件通道。

4)支持多颗FPGA的硬件辅助验证工具,实现多FPGA的系统级debug。

5)每颗FPGA可以设置4K*10组的采样信号量;通过专用的传输接口和存储器,可以针对单颗FPGA的采样信号进行增加,这意味着可以有更多和更深的信号被采样到,也就是可以完成更多数量的观测,适应当前的复杂协议的应用。

(五)硬件辅助验证的发展趋势

硬件辅助验证工具可以有效加速软件仿真速度,用于验证设计的RTL代码、软硬件协同验证和软件开发。近些年,硬件辅助验证出现了一些明显的发展趋势:

1)企业级和桌面化的硬件仿真加速需求快速增长。当前,以GPU,5G,存算一体为代表的超大型的集成电路设计层出不穷,对系统仿真速度和代码快速签核提出了大量的需求。由于数据计算量大,用户测试场景复杂所以需要能够在超大型的硬件仿真加速工具下进行用户设计和验证环境的部署。

企业级的硬件仿真加速器可以为用户提供指数级的逻辑验证容量,高效的纠错能力,信号可见和功耗分析的特征。桌面化的硬件仿真加速器可以为用户提供混合验证环境,能够为各类型的CPU用户,提供更早期的环境验证。企业级硬件仿真加速器侧重在多用户,多区域访问的特性,桌面化能够提供更加便利的调试手段,所以两种不同的应用方向各自发展。

2)硬件仿真加速器的专用化越来越明显。加密算法,WIFI应用等各种测试数据量巨大,而算法相对单一的用户,对仿真需求增大。而传统的仿真加速器并不能非常有效的解决这类用户的问题。所以,针对各类型应用而专用的仿真加速器产品非常适合这种类型的应用。集中固定的硬件扩展卡或者专用的降速桥都可以为某些类型的应用提供完整的加速环境。

3)全流程验证需要在硬件仿真加速工具中完成。早期的硬件仿真加速器出现在代码设计的后端,用于确认代码功能的正确性。现在随着设计的时间需求进坡度增加,越来越多的流程会被集成至硬件仿真加速工具中来实现。早期的功耗分析,系统环境搭建,逻辑调试等功能都逐渐的被集成至硬件仿真加速工具中。

4)仿真和验证环境有统一性的趋势。仿真代码和用户芯片设计代码是分开处理的,涉及到一些无法综合的代码可以分别在仿真和验证场景中实现,但是用户期望的是设计代码和测试代码保持一致。所以硬件仿真加速工具会增加大量的功能属性用于统一仿真代码和设计代码,从而减少因为设计不一致而造成的功能风险。

5)需要支持多种的软件仿真工具。因为硬件仿真加速器的历史原因,各家的工具分别只能支持自己家的软件仿真工具,而对于不同的用户来说,有一些诉求是能够支持不同家的仿真工具的。

6)待验设计的运行频率逐渐升高。硬件仿真加速器的运行频率,因为软硬件交互的原因,会产生大量的通讯开销,会对待验设计的运行速率有很大的影响,绝大多数情况下只能运行在几百K-几兆Hz,随着各种专用算法的出现,验证的实时性也相当的重要。所以对于硬件仿真加速器来说,能够提供比较实时的运行频率,是非常关键的。




审核编辑:刘清

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

    关注

    9

    文章

    425

    浏览量

    26273
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59069
  • AHB总线
    +关注

    关注

    0

    文章

    18

    浏览量

    9385
  • DUT
    DUT
    +关注

    关注

    0

    文章

    180

    浏览量

    11998

原文标题:利用硬件辅助验证工具加速功能仿真

文章出处:【微信号:IP与SoC设计,微信公众号:IP与SoC设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    QE for Motor V1.3.0:汽车开发辅助工具解决方案工具

    电子发烧友网站提供《QE for Motor V1.3.0:汽车开发辅助工具解决方案工具包.pdf》资料免费下载
    发表于 02-19 10:44 0次下载
    QE for Motor V1.3.0:汽车开发<b class='flag-5'>辅助工具</b>解决方案<b class='flag-5'>工具</b>包

    解决方案工具包QE显示[RX,RA]V3.2.0:用于显示应用程序的开发辅助工具

    电子发烧友网站提供《解决方案工具包QE显示[RX,RA]V3.2.0:用于显示应用程序的开发辅助工具.pdf》资料免费下载
    发表于 01-03 09:59 0次下载
    解决方案<b class='flag-5'>工具</b>包QE显示[RX,RA]V3.2.0:用于显示应用程序的开发<b class='flag-5'>辅助工具</b>

    芯片设计分为哪些步骤?为什么要分前端后端?前端后端是什么意思

    设计过程。 前端设计是芯片设计的起点,涉及到定义芯片功能、性能和接口等。具体步骤包括需求分析、体系结构设计、逻辑设计、逻辑综合和验证
    的头像 发表于 12-07 14:31 1994次阅读

    SimSurfing静噪滤波器设计辅助工具功能版操作手册

    电子发烧友网站提供《SimSurfing静噪滤波器设计辅助工具功能版操作手册.pdf》资料免费下载
    发表于 11-22 09:59 0次下载
    SimSurfing静噪滤波器设计<b class='flag-5'>辅助工具</b>高<b class='flag-5'>功能</b>版操作手册

    英诺达EnCitius® SVS新功能发布,加速芯片验证流程

    /ITC)等。这些新功能旨在帮助客户加速设计验证,实现云端资源的灵活调度,提高效率。 当前的芯片规模越来越大,开发周期日益紧迫。
    发表于 08-28 16:15 198次阅读
    英诺达EnCitius® SVS新<b class='flag-5'>功能</b>发布,<b class='flag-5'>加速</b><b class='flag-5'>芯片</b><b class='flag-5'>验证</b>流程

    如何使用NUC240 UART驱动ESP8266

    的序列端口和网络辅助工具查看执行结果。 您可以在下列时间下载样本代码http://www.nuvoton.com/resources-downlo. 1213170501 nuvoton 核
    发表于 08-23 08:19

    基于OmniArk芯神鼎硬件仿真系统和QEMU的混合验证平台

    软件仿真(Simulation),原型验证(Prototyping),以及硬件仿真(Emulation),是当前主要的三种有效的验证方法,在芯片前端
    的头像 发表于 07-31 23:16 452次阅读
    基于OmniArk芯神鼎<b class='flag-5'>硬件</b>仿真系统和QEMU的混合<b class='flag-5'>验证</b>平台

    基于OmniArk芯神鼎硬件仿真系统和QEMU的混合验证平台

    软件仿真(Simulation),原型验证(Prototyping),以及硬件仿真 (Emulation),是当前主要的三种有效的验证方法,在芯片
    的头像 发表于 07-27 09:57 377次阅读
    基于OmniArk芯神鼎<b class='flag-5'>硬件</b>仿真系统和QEMU的混合<b class='flag-5'>验证</b>平台

    COVID辅助工具

    电子发烧友网站提供《COVID辅助工具包.zip》资料免费下载
    发表于 07-03 14:58 0次下载
    COVID<b class='flag-5'>辅助工具</b>包

    ​阻抗计算,真的没有那么难!

    在具有电阻、电感和电容的电路里,对电路中的电流所起的阻碍作用叫做阻抗。影响阻抗的因素有很多,利用辅助工具轻松验证这些影响因素。
    的头像 发表于 07-03 10:42 298次阅读
    ​阻抗计算,真的没有那么难!

    ChatGPT 时代,程序员的生存之道 | 人工智能 AI

    ChatGPT 近期炙手可热,仿佛没有什么问题是它不能解决的。出于对 ChatGPT 的好奇,我们决定探索下它对于前端开发人员来讲,是作为辅助工具多一些,还是主力工具更多一些?
    的头像 发表于 06-06 09:54 644次阅读
    ChatGPT 时代,程序员的生存之道 | 人工智能 AI

    一款YYDS内网横向渗透辅助工具介绍

    主要功能 配合使用工具(如Mimikatz)扫描本地密码,并将密码写入source/pass_list.txt 以下工具(1)简称(1) (1)检测域。检测到域后,工具
    的头像 发表于 05-28 14:15 479次阅读
    一款YYDS内网横向渗透<b class='flag-5'>辅助工具</b>介绍

    如何解决大芯片验证痛点

    如今芯片设计软件已走过了60多年的浩浩荡荡发展史,其过程是从辅助绘图CAD,到能够仿真验证的CAE阶段,再到模块化的自动化工具EDA。EDA
    的头像 发表于 05-22 11:47 753次阅读
    如何解决大<b class='flag-5'>芯片</b>的<b class='flag-5'>验证</b>痛点

    关于手工杀毒辅助工具AntiSpy常用功能

    AntiSpy 是一款功能强大的手工杀毒辅助工具,完全免费,并且功能强大的手工杀毒辅助工具。她可以枚举系统中隐藏至深的进程、文件、网络连接、内核对象等,并且也可以检测用户态、内核态各种
    的头像 发表于 05-16 15:09 755次阅读
    关于手工杀毒<b class='flag-5'>辅助工具</b>AntiSpy常用<b class='flag-5'>功能</b>

    硬件开发工具AD、PADS、Cadence优势分析!是你,会选择了哪一款?

    Designer PADS: Pads Logic+Pads PCB Cadence: ORCAD+Allegro (每一套工具都带有很多辅助工具,如仿真、库管理等等,这里只讲主要工具辅助
    的头像 发表于 05-11 10:17 4857次阅读
    <b class='flag-5'>硬件</b>开发<b class='flag-5'>工具</b>AD、PADS、Cadence优势分析!是你,会选择了哪一款?