用于调试嵌入式系统软件的硬件仿真

描述

  在当今竞争激烈的环境中,将富含嵌入式软件的复杂电子设备更快地推向市场,同时使它们更便宜、更可靠是一个非常冒险的提议。

  不彻底测试硬件设计不可避免地会导致重新设计,增加设计成本并延长网表到布局过程的交付时间,并最终延迟上市时间,从而对收入流产生破坏性影响。缺少市场窗口的更显着结果隐藏在嵌入式软件的后期测试中。

  毫不奇怪,项目周期的验证部分占用了不成比例的大量进度。这是因为跟踪和消除错误并非易事,尤其是当片上系统 (SoC) 的软件内容以每年大约2 0 0 %的速度增长时。相比之下,设计中硬件部分的增长仅为5 0 %左右。

  硬件仿真作为系统验证的基础

  虽然虚拟原型和现场可编程门阵列 (FPGA) 原型在早期嵌入式软件测试中受到关注,但它们无法帮助实现软硬件的集成。前者缺乏跟踪硬件错误所需的硬件准确性。后者提供了快速放大错误所需的有限硬件调试功能。

  因此,开发团队和项目经理已将硬件仿真作为其验证策略的基础。仿真是一种多功能验证工具,具有许多相关优势,包括硬件/软件协同验证,或测试硬件和软件集成的能力。软件开发人员已经注意到了,因为它是唯一能够确保嵌入式系统软件与底层硬件正常工作的验证工具。同样值得注意的是,对于致力于调试复杂 SoC 设计的硬件工程师来说,它可以将软件错误跟踪到硬件或软件行为中的硬件错误。其他好处包括它的快速编译能力,软件验证的另一个优点,全面的设计调试和可扩展性,以适应包含超过 10 亿个专用集成电路 (ASIC) 门的设计。此外,它可以高速处理数十亿个验证周期,以验证嵌入式软件和执行系统验证。

  过去,硬件调试和测试是项目周期验证部分的唯一原因,这是由硬件描述语言 (HDL) 测试台驱动的逻辑仿真管理的。传统的 big-box 仿真仅用于最大的设计。许多开发团队已采用形式验证来补充模拟,增加基本覆盖范围并确保不会遗漏一些极端情况。然而,只有硬件仿真才能在实际时间内完成 SoC 设计的整个验证任务,并缓解与基于事件的仿真相关的运行时问题。

  一切都与软件内容有关

  SoC 的软件内容使联合验证成为验证策略中最重要的部分,因为它确认嵌入式 SoC 的硬件和软件部分同时验证并在提交到芯片之前正确交互。

  过去,如果设计流片到芯片上后出现硬件问题,软件开发人员必须尽可能地解决如何围绕它编写代码。通过在 SoC 完成之前验证软件,设计团队有机会在硬件问题被安装到芯片之前修复它们。如前所述,仿真检查以确保嵌入式软件根据规范在支持硬件上运行。

  过去,软件调试是使用各种调试引擎完成的。每个内核一个,他们利用了硬件功能,这些功能提供了对处理器内部工作的可见性和控制。虽然提供了一些调试功能,但诊断问题的能力受到处理器提供的访问类型的限制。此外,由于传统的软件调试通常发生在实际系统上,因此软件开发人员正在以目标系统速度在真实硬件上执行真实代码。这使他们能够通过大量代码快速找到错误例程。

  这些传统技术在调试 SoC 时会失效。因为没有真正的硬件,代码不能以真正的系统速度执行。假设,可以在执行代码时模拟硬件,并且所有硬件可见性都将由模拟器提供。问题在于速度——这是一种调试代码的缓慢方式。

  例如,如果 SoC 设计为在 Linux 上运行程序,则软件开发人员必须以数十亿个时钟周期完成 Linux 启动,然后软件才能开始执行。粗略的估计是,使用大约1 0赫兹(Hz) 的典型模拟速度完成Linux引导需要超过2 8 年的时间。

  不管是硬件调试还是软件调试,传统的硬件和软件调试工具是互不相识的。对于大型且复杂的 SoC 设计,单独进行两种类型的调试以尝试定位问题是低效的。

  让两者一起工作是理想的场景,而这正是仿真节省时间的地方。SoC 硬件在硬件中实现,通常是 FPGA 或其他一些可编程元件,使其速度更快。使用此设置,Linux 启动可以在1 5分钟内完成,具体取决于运行的实际速度。硬件仿真提供与具有断点和波形的硬件调试器类似的控制和可见性。

  确认 SoC 设计将按预期工作

  硬件仿真以其高性能与其他验证工具区分开来——这是由软件需求驱动的日益重要的需求。它能够确认 SoC 设计将按计划工作,并且适合处理复杂的设计,这些设计可大至 10 亿个 ASIC 等效门,并且每月消耗超过 1 万亿个验证周期。即便如此,在此阶段使用硬件仿真进行彻底和详尽的功能验证仍然是可用的最具成本效益和最有效的调试方法。

  交易级建模 (TLM) 的引入和交易者的可用性可以将硬件仿真转变为一系列垂直市场的虚拟平台测试环境。交易者是验证知识产权 (IP) 组合的一部分,是外围功能或协议的高级抽象模型。交易者,通常作为现成的 IP 提供,可用于各种不同的协议。典型目录包括 PCIe、USB、FireWire、以太网、数字视频、RGB、HDMI、I2C、UART 和 JTAG 组件。

  更好地验证更复杂的系统

  以前,硬件设计独立于要在这些芯片上执行的软件的创建。情况不再如此。由于 SoC 的处理器数量翻了一番,并且每一代产品包含的软件内容增加了一倍,因此对软件的关注成为开发团队和项目经理的首要任务。现在,在开发团队证明预期的软件可以在硬件平台上运行之前,SoC 是不完整的。

  SoC 是一个成熟的嵌入式系统,需要硬件仿真来验证它是否正常工作。借助硬件仿真,开发团队可以更有策略地规划并实施基于多个抽象级别的调试方法。他们可以同时跟踪硬件和嵌入式软件之间的错误,以确定问题所在。在此过程中,他们以经济高效的方式节省了时间,大大降低了错过市场窗口的风险。

  审核编辑:郭婷

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分