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

    文章

    19265

    浏览量

    229684
  • FPGA
    +关注

    关注

    1629

    文章

    21729

    浏览量

    603050
  • 嵌入式
    +关注

    关注

    5082

    文章

    19111

    浏览量

    304872
收藏 人收藏

    评论

    相关推荐

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备中。这些系统的关键特点是它们与硬件的紧密集成
    的头像 发表于 12-09 09:38 238次阅读

    嵌入式学习建议

    对广大渴望学习嵌入式系统的学子提出几点基础阶段的学习建议: ①嵌入式系统软件硬件密切相关,一定要打好软硬件基础。其实,只要找到正确的方法,
    发表于 10-22 11:41

    什么是嵌入式?一文读懂嵌入式主板

    在现代科技浪潮中,嵌入式技术已成为支撑各种智能设备和系统运行的核心力量。那么,究竟什么是嵌入式嵌入式系统,顾名思义,是将计算机的硬件软件
    的头像 发表于 10-16 10:14 936次阅读

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序开发等多个方面。以下是嵌入式Linux开发的基本步骤,以及每个步骤的说明。
    的头像 发表于 09-02 09:11 481次阅读

    嵌入式硬件VS软件,到底哪个更难?

    嵌入式系统开发中,硬件软件是密不可分的两个方面。但是,究竟是硬件开发更具挑战性,还是软件开发更难以应对呢?本文将就这一问题展开讨论,探究
    的头像 发表于 06-13 08:10 1183次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>硬件</b>VS<b class='flag-5'>软件</b>,到底哪个更难?

    从事嵌入式方向,一定要软硬件通吃?

    软件工程师的职责嵌入式软件工程师的主要职责是为嵌入式系统编写和调试代码,确保系统按预期工作。他们需要处理底层硬件接口、实时操作系统(RTOS
    的头像 发表于 06-05 08:10 1182次阅读
    从事<b class='flag-5'>嵌入式</b>方向,一定要软<b class='flag-5'>硬件</b>通吃?

    嵌入式软件工程师和硬件工程师的区别?

    嵌入式软件工程师和硬件工程师的区别? 嵌入式软件工程师 嵌入式
    发表于 05-16 11:00

    嵌入式系统软硬件基础知识大全

    两部分组成的。硬件部分包括处理器、存储器、输入输出等,是嵌入式系统实现功能的基础。软件部分则包括操作系统、驱动程序、应用程序等,负责控制硬件
    发表于 05-09 14:12

    嵌入式软件设计的原则分享

    嵌入式软件开发如果具有更好的阅读性、扩展性以及维护性,就需要考虑很多因素。今天给大家分享几个嵌入式软件设计的原则。
    发表于 02-25 10:54 679次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>设计的原则分享

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

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

    嵌入式学习步骤

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

    高端嵌入式实验平台

    一、整体概述 该嵌入式平台具有前沿性、专业性、高集成度、功能丰富等特点,平台涵盖嵌入式计算机技术、嵌入式硬件接口、嵌入式系统
    的头像 发表于 01-29 09:55 516次阅读
    高端<b class='flag-5'>嵌入式</b>实验平台

    嵌入式软件开发和软件开发的区别

    嵌入式软件开发和软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发嵌入
    的头像 发表于 01-22 15:27 2277次阅读

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

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

    聊聊嵌入式软件分层

    今天以控制LED闪烁为例,聊聊嵌入式软件分层
    的头像 发表于 12-28 09:22 673次阅读