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

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

3天内不再提示

嵌入式软件驱动的硬件验证

星星科技指导员 来源:嵌入式计算设计 作者:Frank Schirrmeister 2022-06-14 15:21 次阅读

另一组片上系统验证方法依赖于使用经过验证的硅片、新的和未经测试(可能尚不可用)硅片的虚拟原型以及 FPGA 原型在硬件上执行实际软件。正如我们从这个角度看到的那样,有时会使用所有三种方法。

据最佳估计,90 nm 芯片设计背后的软件开发工作已经超过了硬件开发工作。对 2011 年的预测是,不到 40% 的整体芯片开发成本将用于硬件。软件现在主导着项目周期,并决定了芯片何时可以投入批量生产。结果,软件验证的重要性增加了,软件在硬件验证过程中扮演了不可或缺的角色。

将硬件和软件结合在一起

今天,工程师使用三种基本技术在硬件表示上执行软件。在衍生设计中,部分软件可以使用上一代芯片进行开发。这种方法通常最适用于分层软件架构中较高的软件部分,特别是对于独立于硬件的应用程序。

虚拟原型提供了设计周期中最早的解决方案,因为它们可以在架构确定后立即实施。这些原型是片上系统 (SoC)、电路板、I/O 和用户界面的预寄存器传输级别 (RTL)、寄存器精确和功能齐全的软件模型。它们执行未经修改的生产代码,并使用 USB 等外部接口作为虚拟 I/O 近乎实时地运行。

因为虚拟原型本质上是软件,所以它们提供了高度的系统可见性和控制,包括多核调试。它们还可以作为半导体和系统制造商之间协作的工具。自 Open SystemC Initiative Transaction Level Model (TLM) 2.0 API 标准化以来,SystemC 已成为使用可互操作的事务级模型开发快速虚拟原型的合适基础设施。

在 RTL 完成并使用功能验证技术达到稳定状态后,可以使用 FPGA 原型。原型是 SoC、电路板和 I/O 实现未修改的 ASIC RTL 代码的硅前、功能齐全的硬件表示。经过优化实施,它们可以在连接外部接口和激励的情况下几乎实时运行,并结合 RTL 仿真提供比实际芯片更高的系统可见性和控制。与传统的硬件/软件覆盖相比,FPGA 原型提供了更高的速度水平,后者将 RTL 仿真与周期精确的处理器模型相结合。

根据所需的准确性、速度和所需的可用时间,不同的技术为软件开发和软件驱动的硬件验证提供最合适的解决方案。混合产品通常允许设计人员利用多种产品的优势。例如,可以通过处理器和外围设备的快速事务级模型来增强 RTL 仿真,以提高仿真速度和验证覆盖率。或者,在混合使用模式下处理设计问题的虚拟原型和 FPGA 原型结合了基于软件和硬件的执行,提供了比单独产品更好的解决方案。

从实际项目中学习

为了更好地理解这个问题,Synopsys 和 International Business Strategies 分析了包括复杂硬件和软件在内的 12 个项目的项目工作量和经过的时间。图 1 显示了分析的 12 个项目的示例。上半部分显示了不同开发阶段的时间线;底部显示了每个阶段的总体项目工作量的百分比。

图 1:在对 12 个项目的分析中,RTL 验证占用了 21% 的硬件/软件开发工作量。

poYBAGKoN4SAe7SdAAJudbYtL-U173.png

RTL 验证平均占整体硬件/软件工作量的 21%,或仅硬件工作量的 38%。此外,RTL 验证消耗了从需求到 GDSII 所用时间的大约 55%。验证在流片的整个流程中以不同的变体继续进行,而且在 IP 认证上花费的大部分精力也可以被认为是另一种形式的验证。因此,验证很容易达到硬件开发中经常提到的 70% 的数字。

从硬件从规范到流片的开发时间来看,移植操作系统平均需要大约三分之一的时间,开发实用软件大约需要一半时间,三分之二的时间用于移植操作系统。开发应用软件。在工程样品可用时开始软件开发的全系列开发过程将使项目进度再增加半年到四分之三的时间。除非项目是并行开发的,否则软件开发会延迟大量交付硬件的能力。

虽然在项目开始后从需求到流片有 17% 的时间可以使用稳定的规范(虚拟原型的先决条件),但从需求到流片需要将近 70% 的时间才能达到稳定的 RTL(先决条件)用于硬件原型。虚拟和硬件原型在非常不同的时间可用,因此适用于非常不同的开发阶段。

提高验证效率

如果在 SoC 设计周期的早期提供虚拟原型用于软件开发,它可以不断发展以满足不同的需求。软件驱动验证的三种主要使用模型在 RTL 中利用虚拟原型与信号级仿真的集成:

1. 当一个 RTL 块可用时,它可以在虚拟原型中替换它的 TLM。然后可以在此版本的原型上验证软件,作为验证硬件和软件的一种方式。知道使用了真实的系统场景会增加验证的信心。此外,鉴于尽可能多的系统在事务级别进行模拟,验证的模拟速度更快。

2. 虚拟原型还可以作为运行实际系统软件的测试台组件,为 RTL 验证测试台开发和硅后验证测试提供先机。虚拟原型可用于生成系统激励来测试 RTL,然后验证虚拟原型和 RTL 功能是否相同。用户可以在TLM嵌入式定向软件测试上进行高效开发,也可以用于系统集成测试。结果,验证测试用例开发的生产力提高了。

3. 由于虚拟原型的某些部分被验证为等同于它们相应的 RTL,虚拟原型可以成为参考可执行规范。因此,用户获得了针对事务级别和 RTL 的单一黄金测试平台。

图 2 显示了 Synopsys Innovator 虚拟原型开发环境中的 USB On-The-Go 示例和分别使用事务级处理器模型和嵌入式软件的 USB 验证环境。

图 2:在 USB 验证环境中,事务级处理器模型通过 USB 连接到 RTL。

poYBAGKoN46AOn-nAAPhXJM6Rrk850.png

即使在项目开始时没有虚拟原型,硬件组件的虚拟化也可以帮助从 RTL 验证环境开始逐步提高验证效率。

在事务级别用虚拟处理器模型替换系统中片上处理器的 RTL 表示可以显着提高仿真速度,从而缩短验证周转时间。在几个客户示例中,更换单个处理器模型将仿真速度提高了 32 倍。

为了在功能 RTL 验证中加入软件驱动程序以执行实际产品测试用例,只需对适当的子系统进行建模并将其连接到 RTL 仿真。这可以像从库中添加事务级处理器模型一样简单,通过简单的总线模型将其连接到正在验证的外设的 TLM,然后将其连接到 RTL,如图 2 所示。

混合原型

为了通过提高仿真速度和系统中嵌入式软件的执行来进一步提高验证效率,可以使用硬件原型。鉴于虚拟原型和硬件原型在项目的根本不同阶段都可用,混合原型提供了一个可行的解决方案,让开发人员可以利用这两个世界的优势。

虽然虚拟原型在设计流程的早期就可用——通常仅在规范稳定后几周——它们通常并不代表 FPGA 原型可以展示的完整实现细节。相比之下,FPGA 原型在相当高的速度下运行完全准确,但在设计流程的后期可用,尽管在硅片从生产中返回之前还很长时间。

图 3 显示了混合 TLM 和硬件原型的原理图。几种混合使用模型结合了虚拟原型和 FPGA 原型的优点,包括重用实际 RTL 而不是重新建模和加速硬件和软件的整体执行。

图 3:虚拟原型和 FPGA 原型的混合使用模型结合了虚拟原型和 FPGA 原型的优点。

poYBAGKoN52AOkMVAAPApSgwAuE373.png

未来更智能的验证

由于验证对项目工作和时间表以及软件对项目成功的影响越来越大,考虑到嵌入式软件的智能验证变得越来越重要。

使用虚拟原型,无论是自下而上的 RTL 验证,还是自上而下的虚拟原型验证,都可以逐步提高验证效率。通过使用处理器和外围设备的虚拟化事务级模型增强传统 RTL 仿真,可以提高验证效率。这提高了仿真速度,并允许直接执行 TLM 参考模型作为测试台的一部分。在自上而下的流程中,可以通过重用现有的虚拟原型及其模型来提高验证效率,这可以通过简单地将正在验证的 RTL 替换为 TLM 直到 RTL 可用,从而为验证场景开发提供先机。虚拟原型随后成为 RTL 验证的参考。

虚拟原型和 FPGA 原型的混合以及 RTL 仿真和事务级模型的混合允许开发人员利用各个解决方案的综合优势。对验证效率的直接影响很大程度上源于更快的模拟执行,这反过来又可以加快验证周转速度。

审核编辑:郭婷

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

    关注

    68

    文章

    18298

    浏览量

    222217
  • FPGA
    +关注

    关注

    1603

    文章

    21328

    浏览量

    593267
  • 嵌入式
    +关注

    关注

    4983

    文章

    18295

    浏览量

    288593
收藏 人收藏

    评论

    相关推荐

    嵌入式软件开发应该掌握哪些知识?

    嵌入式软件开发应该掌握哪些知识? 一、 什么是嵌入式软件嵌入式软件通常是指
    发表于 02-19 11:23

    嵌入式学习步骤

    嵌入式行业是一个涉及广泛领域的行业,嵌入式、物联网、人工智能、智能与科学、电子信息工程、通信工程、自动化工程、测控、计算机科学等专业在嵌入式系统中使得软件
    发表于 02-02 15:24

    基于功能安全的汽车嵌入式软件单元验证技术研究

    ,对满足功能安全ASIL等级的汽车嵌入式软件单元验证技术进行详细介绍,从而提高软件质量,减少软件安全隐患,对汽车
    的头像 发表于 01-07 11:27 518次阅读
    基于功能安全的汽车<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>单元<b class='flag-5'>验证</b>技术研究

    嵌入式硬件软件哪个好?

    嵌入式硬件软件哪个好? 嵌入式硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软
    发表于 12-05 15:17

    嵌入式软件设计和单片机软件设计的区别是什么?

    嵌入式软件设计和单片机软件设计目前的应用很多,这两者有什么区别? 嵌入式主要说的什么?结构是啥!
    发表于 11-10 07:46

    什么是嵌入式Linux?

    之有运行程序的能力与作用。在很多智能家电开发,智能产品的研究上有着主导的作用。(对个人、团队开发产品有兴趣的朋友一定要看看嵌入式!) linux的嵌入式系统开发,涵盖了从硬件软件设计
    发表于 10-11 13:47

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件
    发表于 09-28 06:59

    嵌入式Linux应用开发的完全手册

    论坛疯狂发帖求教,现在回头一看不免感叹:怎么会提出这么弱智的问题?但是,当时就是被这类问题折磨得寝食难安。 相对于嵌入式Linux常识的匮乏,更大的困难是缺乏完善的知识结构:只了解硬件,或是只了解软件
    发表于 09-25 07:12

    嵌入式软件好还是硬件好?

    架构,有一定的C语言基础,熟悉ARM、PROTEL设计软件,有四层板开发经验。 成为优秀的嵌入式硬件开发工程师需具备以下技能:由需求分析至总体方案、详细设计的规划能力;熟练运用设计工具、设计原理图
    发表于 09-18 15:31

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件
    发表于 09-11 07:24

    嵌入式新手应该怎么学?

    要学哪个了,你要知道,嵌入式也就是软件硬件,编程这些方面的,最基础的也就是C语言了,那刚开始接触,你就需要先从C语言入手。 1、C语言,关于C语言要知道基本的语法,什么是结构体,什么是共同体,有的
    发表于 09-08 10:22

    如何提高嵌入式软件单元测试效率

    在本指南中,您将学习如何通过在更短的时间内运行更多的测试来增加您的单元测试吞吐量。 这种效率的提高来自于使用虚拟平台而不是物理硬件作为开发平台。 本指南对任何开发或运行嵌入式软件单元测试的人都很
    发表于 08-28 06:31

    嵌入式硬件嵌入式软件哪个好?

    嵌入式都是拿成品的芯片来做,不会接触到芯片开发。说起来嵌入式软件的更多,就是码农。有人说嵌入式硬件属于抄板工,版图设计就是前期抄板,抄完第
    发表于 08-16 12:48 1626次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>硬件</b>和<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>哪个好?

    嵌入式学习路线你知道吗?

    外围设备的硬件工作原理,以及如何使用C语言来编程、控制这些硬件。除了要学习对硬件编程之外,还需要学习嵌入式硬件的知识,但是对于
    发表于 06-14 16:00

    什么人适合学习嵌入式开发?

    和最初级的硬件驱动程序等,他们的优势是对硬件原理非常清楚,当然也会有不足之处,不足的是他们更擅长定义各种硬件接口,但对复杂软件系统往往表现的
    发表于 06-07 15:55