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

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

3天内不再提示

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

思尔芯S2C 2023-07-31 23:16 次阅读

软件仿真(Simulation),原型验证(Prototyping),以及硬件仿真 (Emulation),是当前主要的三种有效的验证方法,在芯片前端设计的功能性验证阶段起到了关键的作用。
近年来,由于大数据处理和AI芯片设计规模的扩大,以及市场竞争激烈导致的快速迭代需求,越来越多的芯片设计公司开始选择硬件仿真,以提高芯片验证效率,缩短芯片开发周期。
相较于软件仿真和原型验证,硬件仿真具有可支持设计容量大、扩展性好、工程构建时间短、仿真速度快、调试能力强、验证场景丰富等特点,适合大型设计从模块级、芯片级到系统级的仿真验证。

硬件仿真验证模式

硬件仿真支持的丰富的验证模式,可以满足芯片设计不同阶段的验证需求,常用于架构设计、前期开发、模块开发、IP开发、系统深度调试等芯片开发阶段。
常见的仿真验证模式,主要包括:电路内仿真(In-Circuit Emulation,ICE仿真),事务级的仿真加速(Transaction Based Acceleration,TBA仿真),以及混合仿真(QEMU)等。在不同的芯片设计阶段,可以选择合适的仿真加速方法,来提升验证效率。

电路内仿真(In-Circuit Emulation,ICE仿真)
电路内仿真是使用在线仿真器(In-Circuit Emulator)进行具有特定调试技术的硬件仿真加速,其中在线仿真器代替实际硬件以便在实际系统环境中运行和测试。此方法允许工程师在实际的系统环境中进行测试和调试,而无需等待硬件原型的生产。这可以大大加速开发过程,并提高最终产品的质量。
事务级的仿真加速(Transaction Based Acceleration,TBA仿真)
事务级的仿真加速是通过使用总线功能模型Bus Functional Model (BFM),将运行在软件上的Testbench和运行在硬件仿真系统中的DUT进行事务级层面的软硬联合验证。即在主机上运行的Testbench和在硬件仿真上运行的DUT是通过无时序的事物进行交互。通过这种方法,仿真速度可以大大提高,因为仿真的焦点从每个时钟周期的具体操作转移到了更高级别的事务。这种方法常用于大规模系统的设计验证,可以提高仿真的效率。
混合仿真(Hybrid Emulation)
混合仿真是将硬件仿真与软件仿真相结合,允许工程师同时观察和调试系统的硬件和软件部分。混合仿真可以提供对整个系统的全面视图,并可以在更高的抽象级别进行仿真,可以进一步提高仿真速度和效率。是IC设计团队在早期架构优化、软硬件协同开发、RTL级仿真验证中的重要验证方法。
这些验证模式都是硬件仿真的一部分或者扩展,它们提供了不同层次和粒度的仿真和验证能力,以适应不同的设计需求和验证目标。在实际的设计和验证过程中,工程师可能会根据需要选择适合的仿真方法。

混合仿真(QEMU)

QEMUQEMU是纯软件实现的一个开源、跨平台的虚拟化模拟器,几乎可以模拟任何硬件设备。通常是模拟一台能够独立运行操作系统的虚拟机,混合仿真时虚拟机会以为自己和真实硬件进行数据交互,而该“硬件”实际上却是QEMU模拟,QEMU 将这些指令转译给真正的硬件。本质上,虚拟出的每个虚拟机对应宿主系统(Host)上的一个QEMU进程,而虚拟机的执行线程(如 CPU 线程、I/O 线程等)对应QEMU进程的一个线程。
28c1227e-2fb5-11ee-bbcf-dac502259ad0.png图1 QEMU架构图SystemCSystemC是一个支持系统建模的开源的C++ library。混合仿真验证前,通常优先开发抽象SystemC模型(如TLM模型),然后将此模型转化为RTL并基于此模型上开发软件。在此过程中,软硬件的诸多错误能尽早被发现,从而节省开发时间。使用QEMU和SystemC可以共同组成虚拟验证平台,实现SoC系统级建模。


28c65f8c-2fb5-11ee-bbcf-dac502259ad0.png

图2 SystemC Simulation

基于QEMU的混合仿真验证
混合验证是一种方法,它在使用硬件仿真进行DUT仿真的同时,利用虚拟原型建立目标SoC环境,并进行相应软硬件的协同开发调试。混合仿真是IC设计团队在早期架构优化、软硬件协同开发、RTL级仿真验证中的重要工具。
基于QEMU和硬件仿真系统的混合仿真,是在硬件仿真系统和QEMU上同时运行SoC的不同设计模块,在SoC整体架构硬件实现之前提供嵌入式软件和硬件的协同仿真,为系统架构的优化、RTL的早期开发、以及嵌入式软件开发,提供准确,即时的仿真验证环境,有力推动产品开发周期左移,从而加速SoC的研发进程。
QEMU运行在Runtime Server上,一般通过SystemC实现TLM(Transaction Level Model)模型,提供虚拟CPU、Linux内核以及用户态程序。QEMU通过标准SCEMI协议和硬件仿真器通信,硬件仿真器上可运行SOC外设等IP,从而实现完整的混合仿真环境。


28e2a6c4-2fb5-11ee-bbcf-dac502259ad0.png

图3QEMU混合仿真

混合仿真带来的好处

混合仿真带来了诸多好处,主要表现在软件开发和集成测试的工作可以大幅度提前,显著地缩短了项目周期。在应用混合验证之前,软硬件开发和集成测试往往要等待硬件设计完成后才能开始,这将会导致项目周期延长。而在使用混合验证之后,软硬件开发和集成测试可以在硬件设计阶段同时进行,这样将会显著地缩短整个项目周期。290297c2-2fb5-11ee-bbcf-dac502259ad0.png

图4使用混合验证前

291d11ba-2fb5-11ee-bbcf-dac502259ad0.png

图5使用混合验证后

基于OmniArk

和QEMU的混合仿真


思尔芯自主研发的OmniArk芯神鼎硬件仿真系统,采用超大规模可扩展阵列架构设计,设计容量最大10亿门。支持TBA、ICE 、混合仿真等多种仿真验证模式,可以满足不同验证场景需求。

思尔芯提供的混合验证解决方案,通过连接开源虚拟机QEMU工具和OmniArk芯神鼎硬件仿真系统,实现了虚拟原型硬件和嵌入式软件协同混合验证,为早期的设计架构的验证优化、嵌入式软件的协同开发、RTL级的仿真加速提供更准确、更及时的仿真验证环境。以混合仿真一个SoC芯片设计为例。SoC整体系统架构如下图所示,主要由ARMv8 CPU、AMBA BUS、NVDLA和DRAM等模块组成。为了实现QEMU虚拟平台与OmniArk芯神鼎硬件仿真系统的混合仿真,我们将NVDLA和DRAM移植到OmniArk芯神鼎硬件仿真系统中进行仿真,同时使用QEMU实现ARMv8的软件模型。
2975bc70-2fb5-11ee-bbcf-dac502259ad0.png


图7SoC系统框图

在设计移植到OmniArk芯神鼎硬件仿真系统后,Runtime Server端采用QEMU模拟运行ARMv8,并通过TLM Wrapper将其挂载到AMBA总线上。OmniArk芯神鼎硬件仿真系统仿真运行NVDLA,通过AXI Transactor(简称Xtor)、GPIO Transactor挂载到AMBA总线上。Runtime Server和OmniArk芯神鼎硬件仿真系统之间通过SCE-MI协议进行软硬件协同仿真。
299779f0-2fb5-11ee-bbcf-dac502259ad0.png

图8QEMU混合仿真系统框图

  • TLM Wrapper,建立一套基于TLM模型的通信机制,将QEMU包装成TLM模型,使QEMU模拟的设备能够与SystemC开发的模块进行通信。
  • AMBA Router,以软件形式模拟AMBA总线,实现了标准的AMBA路由机制和仲裁机制,可将多个TLM模型连接并进行数据通信。
  • AXI TLM,是一个基于AXI总线的TLM模型,负责将AXI接口设备适配到AMBA Router总线上。
  • IRQ TLM,则是中断TLM模型,负责将设备的中断信号经TLM2C发送给QEMU模拟的CPU,由CPU作出响应处理。

总结

当前,许多全流程验证工作都依赖于硬件仿真来完成。在早期,硬件仿真主要被用于代码设计的后端阶段,主要用于确认代码功能的正确性。然而,随着设计流程时间需求的加剧,更多的步骤开始被集成到硬件仿真中,包括早期的功耗分析、系统环境构建和逻辑调试等。
同时,硬件仿真系统的专用化趋势日益显著。对于那些需要处理大量数据,但算法相对单一的应用领域,例如加密算法和WIFI应用等,他们对仿真的需求正在逐步增大。在芯片设计过程中,根据设计的复杂性和特性,可能需要采用不同的仿真验证模式。在芯片设计中,我们可能需要不同的仿真验证模式以适应不同的设计复杂性和特性。因此,专用的硬件仿真技术提供了强大的支持,使硬件仿真具有更高的灵活性和适应性,满足各种不同场景和需求的验证任务。思尔芯自主研发的OmniArk芯神鼎硬件仿真系统,正是这种具有更高灵活性和适应性的硬件仿真系统,目前已在多个芯片设计企业成功使用。产品除了支持TBA、ICE 、混合仿真等多种仿真验证模式外,还支持用户设计的快速导入和全自动快速编译、可以支持高速的仿真运行速度,同时具备强大的调试能力和对海量的数据处理能力,可以快速寻找和修复源代码中潜在的深度错误和性能瓶颈。利用这个平台,用户可以更高效地进行芯片设计和优化,极大地提高了芯片设计的质量和效率。

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

    关注

    50

    文章

    3872

    浏览量

    132163
  • 验证平台
    +关注

    关注

    0

    文章

    7

    浏览量

    2836
  • qemu
    +关注

    关注

    0

    文章

    54

    浏览量

    5207
收藏 人收藏

    评论

    相关推荐

    实时级嵌入式系统半实物仿真测试平台ETest

    产品简介** ETest_RT是一款具有高实时性的嵌入式系统半实物仿真测试平台(Embedded System Real Time Test Studio RT,简称:ETest_RT
    发表于 04-25 17:01

    fpga原型验证平台硬件仿真器的区别

    FPGA原型验证平台硬件仿真器在芯片设计和验证过程中各自发挥着独特的作用,它们之间存在明显的区别。
    的头像 发表于 03-15 15:07 302次阅读

    汤谷智能发布全栈RISC-V硬件仿真加速系统方案

    面向高性能计算、IoT、无线接入、音频、多媒体、消费类电子、边缘计算等迅速扩展的RISC-V使用场景,汤谷智能发布了基于自研Logic Giant原型验证硬件平台的全栈RISC-V硬件
    的头像 发表于 01-25 10:29 398次阅读
    汤谷智能发布全栈RISC-V<b class='flag-5'>硬件</b><b class='flag-5'>仿真</b>加速<b class='flag-5'>系统</b>方案

    面向系统级芯片验证硬件平台介绍

    当设计的规模动辄几十亿门,系统验证时间不断的增加,硬件验证系统几乎是验证工程师不可或缺的利器,因此对高性能
    的头像 发表于 01-05 10:06 307次阅读

    如何使用Verilog语言进行仿真验证

    仿真验证主要作用是搭建一个测试平台,测试和验证程序设计的正确性,验证设计是否实现了我们所预期的功能。其结构如下图所示。
    的头像 发表于 10-02 16:29 857次阅读
    如何使用Verilog语言进行<b class='flag-5'>仿真</b><b class='flag-5'>验证</b>

    添加Linux系统调用与利用QEMU测试

    添加Linux系统调用与利用QEMU测试
    发表于 10-01 12:19 185次阅读
    添加Linux<b class='flag-5'>系统</b>调用与利用<b class='flag-5'>QEMU</b>测试

    vscode运行qemu-vexpress-a9 qemu仿真环境F5后报错处理方法

    修改.vscode下launch.json中qemu debug为qemu simulator,preLaunchTask为调试前的任务执行,找task.json中label对应的任务名称,如果在windows环境下,qemu
    的头像 发表于 09-28 11:17 881次阅读
    vscode运行<b class='flag-5'>qemu</b>-vexpress-a9 <b class='flag-5'>qemu</b><b class='flag-5'>仿真</b>环境F5后报错处理方法

    硬件仿真开课啦!国产EDA技术公开课等你来

    面对复杂的设计代码,确保其准确性至关重要,功能验证就是非常重要的一环。通常使用的验证方法包括软件仿真硬件仿真和原型
    的头像 发表于 09-13 08:28 427次阅读
    <b class='flag-5'>硬件</b><b class='flag-5'>仿真</b>开课啦!国产EDA技术公开课等你来

    嵌入式编程中为什么使用qemuqemu的实际应用

    文件系统,网络,图形,算法等等,这些如果能够利用软件模拟器进行开发,可以大大的减少上板调试的时间。减少硬件连接的烦恼,在家也能随时分析软件代码。 在实际项目的开发过程中,qemu也非常的有用,例如当进行网络
    发表于 08-16 06:44

    EasyGo 实时仿真丨大功率电机控制器硬件在环系统仿真测试

    成功验证了 Easygo 仿真平台在大功率(>400kW)的异步电机和永磁电机驱动系统运行下,软件算法和功能的正确性。 与离线仿真相比,相同控制参数情况下,电流波形更接近实际(如
    发表于 07-28 11:39

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

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

    芯华章发布国内首台超百亿门大容量硬件仿真系统 完备数字验证全流程工具平台

    桦敏HuaEmu E1 2023年6月15日,国内领先的系统验证EDA解决方案提供商芯华章,正式发布 国内首台设计上支持超百亿门大容量的硬件仿真
    发表于 06-16 10:48 429次阅读
    芯华章发布国内首台超百亿门大容量<b class='flag-5'>硬件</b><b class='flag-5'>仿真</b><b class='flag-5'>系统</b> 完备数字<b class='flag-5'>验证</b>全流程工具<b class='flag-5'>平台</b>

    软件仿真硬件仿真、原型验证是如何工作的?

    面对复杂的设计代码,我们如何确保其准确性?功能验证就是这场战斗的关键过程。工程师们通常使用的验证方法包括软件仿真硬件仿真和原型
    的头像 发表于 06-11 14:24 535次阅读
    软件<b class='flag-5'>仿真</b>、<b class='flag-5'>硬件</b><b class='flag-5'>仿真</b>、原型<b class='flag-5'>验证</b>是如何工作的?

    RT-Thread BSP qemu-virt64-aarch64文件系统

    qemu,发现正常识别文件系统了   小结   qemu 文件系统识别了,接下来继续研究一下其他的功能   可以使用 qemu 评估一些
    发表于 05-16 10:29

    设备仿真模拟软件 QEMU 8.0 发布:改进对 ARM / RISC-V 架构支持

    和 HPPA 平台带来各种新功能和改进。 QEMU (Quick Emulator)是业界主流的设备仿真模拟软件之一,可以在一种架构(如 X86 PC)的物理机上运行支持其它架构的操作系统
    发表于 05-05 09:48