使用 Renode 缩短联合设计 SoC 的设计周期长度
在本文中,我们将解释如何使用像 Antmicro 的 Renode 这样的开源功能模拟器可以成为软硬件协同设计工作的一个组成部分.
在本文中,我们将解释如何使用像 Antmicro 的 Renode 这样的开源功能模拟器可以成为软硬件协同设计工作的一个组成部分。
据 Semico Research 称,随着市场对其嵌入式系统的要求越来越高,下一代 SoC 变得越来越复杂,导致设计周期延长和成本上升。
对于设备制造商来说,令人沮丧的现实是,提供客户要求的新的和创新的功能、更高的安全性和更好的性能的唯一方法是参与“全栈”协同设计、不断发展的硬件、固件、运行时(OS) 和开发工具链协同工作。这样做可以让硬件和软件团队围绕堆栈中的哪个位置来实现功能和优化进行复杂的权衡。
不幸的是,如果没有适当的仿真工具,协同设计通常是延长设计周期并因此增加成本的关键驱动因素。
在本文中,我们将解释如何使用像 Antmicro 的 Renode 这样的开源功能模拟器可以成为软硬件协同设计工作的一个组成部分。此外,我们将向您展示一个示例,说明 Renode 用户如何能够利用该工具大幅缩短设计周期,为客户提供一种简单有效的方法来评估他们的解决方案,并开始并行调整软件抵押品与硬件集成工作。
软件模拟器的不足之处
选择正确的仿真工具的重要性在 Dover Microsystems 中得到了最好的说明。
Dover 的 CoreGuard® 技术是唯一可防止利用软件漏洞并使处理器能够防御基于网络的攻击的解决方案。通过八年的研发,Dover 得以实现这一目标——首先是作为 DARPA Crash Program 中最大的执行者,然后是 Draper Labs——这为嵌入式系统提供了独特的硬件/软件混合解决方案。
这种混合解决方案需要硬件和软件组件之间的紧密集成。 CoreGuard 硅 IP 是一种哨兵处理器,可充当保镖,保护嵌入式系统免受网络攻击。它监控主机处理器执行的每条指令,以确保它符合一组定义的安全、安全和隐私规则,称为微策略——CoreGuard 的软件组件。如果指令违反现有规则,CoreGuard 会在造成任何损害之前阻止其执行。
为此,CoreGuard 需要跟上主机处理器的执行。也就是说,平均而言,它必须能够以与受保护的主机处理器相同的速率停用(通过微策略批准)指令。还希望 CoreGuard 最小化元数据管理所需的内存量。
因此,要满足性能、功耗和面积需求,需要从硬件和软件层进行复杂的优化相互作用。
Dover 的硬件团队使用基于 SystemVerilog 的标准流程和工具链。 CoreGuard 系统的初始原型建立在基于 RISC-V 的 SoC 上。因为 CoreGuard 除了硬件 IP 之外还有大量的软件组件,所以重要的是软件团队能够在任何硬件原型可用之前就开始。
Dover 的软件团队最初使用了 RISC-V GitHub 存储库中提供的 Spike RISC-V ISA 软件模拟器。他们在围绕 Spike 进行 CoreGuard 商业开发时遇到了两个问题:
- Spike 不提供任何逼真的外围设备;也就是说,Spike 是一个 ISA 模拟器,而不是一个 SoC 模拟器。 Dover 团队开始向 Spike 添加外围设备,例如 UART 和持久存储,这是一项大量工作。
- Spike 根据定义是 RISC-V 专用的,但 Dover Microsystems 的初始客户既基于 RISC-V,又基于 Arm。
这些缺点凸显了 Dover 需要一个灵活的多架构模拟器,该模拟器具有外围模型的概念,可以用来代替 Spike。
Renode 如何满足重要的协同设计需求
面临类似的异构硬件/软件协同设计工程挑战,这些挑战源于与开源软核、领先计算平台的早期软件、FPGA SoC 以及新兴的 CPU 架构(如 RISC-V、Antmicro——一种专注于开源的技术和服务提供商——开发了一个名为 Renode 的灵活模拟框架。
Renode 是一个分层、模块化的仿真框架,旨在在各种复杂系统中运行真实的生产(即未经修改的)固件,包括互连的多节点、多架构、异构、MCU 级和支持 Linux 的系统。
为了解决这些不同级别的复杂性,Renode 围绕着强大的抽象概念而构建,并采用面向对象的模块化方法进行系统模拟。内核和外设被视为构建块,可以通过不同配置的接口连接,反映真正的 SoC 是如何构建的。
图 1. 仿真 RISC-V SoC 示例。
图 1 显示了一个模拟 RISC-V SoC 的示例。每个构建块,包括 CPU,都有一组属性和 API,可用于构建整个 SoC 的仿真模型。同样,可以使用虚拟化无线和有线连接(6LoWPAN、UART、以太网等)将单个节点进一步组合成多节点系统。所有这一切都不需要更改 Renode 的代码库,而是通过配置和脚本完成,减少了学习曲线并限制了代码库碎片。
Renode 框架的灵活性、开源可用性以及作者提供的商业支持使得 Dover 可以轻松地首先构建他们所需工作流程的原型实现,然后与 Antmicro 签约来实现(并发布到开放的源域)功能,使 Renode 更适合其用例,例如按指令执行。
特别是,使用 Renode,Dover 工程师现在能够:
- 使用相同的设置在基于 Arm 和 RISC-V 的集成工作之间切换。
- 在不同的细节/保真度级别上制作 SoC 原型(参考/最小和客户定义)。
对 Dover 硬件组的硬件架构规范进行建模,然后针对这些模型编写和测试固件,同时硬件还在开发中。
Renode 如何显着缩短 Dover 的设计周期
Dover 的 CoreGuard 技术是一种混合网络安全产品,其中硬件和软件设计都在不断发展。因此,重要的是 Dover 的开发过程允许硬件和软件的并行开发和测试。
图 2. Dover 使用的开发流程。
Dover 正在使用图 2 中概述的开发过程。硬件和软件团队在硬件接口上进行协作(当然这将继续发展)。当硬件团队开始在 SystemVerilog 中实现块时,软件团队用 C#(Renode 的本机语言)创建新块的模型。然后,软件团队能够编写与新硬件接口通信的固件,并在 Renode 模拟下测试该软件。最终,该软件在 FPGA 仿真器上运行。
这个由 Renode 实现的开发过程帮助 Dover 优化了“低保真”和“高保真”模拟。
虽然这种“低保真”模拟抽象出了 CoreGuard 的所有硬件逻辑,但 Dover 仍然发现这种设置在以下情况下很有用:
- 微策略调试: 在开发新的 CoreGuard 微策略时,我们希望针对各种软件测试快速迭代,以检查行为。
- 演示和客户预览: 对于 CoreGuard 演示,纯软件模拟通常足以让潜在客户了解 CoreGuard® 的功能并激发进一步讨论的兴趣。此外,Dover 通常会向客户提供一个“SDK”,由这个“低保真”模拟器和一些预定义的微策略组成,以便客户“玩”CoreGuard,包括可能针对客户的软件运行 CoreGuard 微策略。莉>
在“高保真”模拟中,复制了更准确的硬件模型,Dover 工程团队已经能够认识到 Renode 的许多好处,包括:
- 与硬件启动 ROM 使用的各种非 ELF(例如,分散加载)二进制格式集成。
- 开发和测试启动过程;从闪存复制到 RAM,初始化设备。
- 使用 Renode 工具调试总线流量。
- 通过仪器调试外设(UART、PIC、CoreGuard 接口本身)。
- 使用内存映射。
- 在硬件工作之前实施 HDMI 视频固件。
如前所述,CoreGuard 等下一代解决方案在实施过程中给 SoC 设计团队带来了一些具有挑战性的性能和面积限制。
为了提高性能并减少内存使用,需要进行广泛的优化,这些优化经常跨越硬件/软件边界。
至关重要的是,设计团队能够探索大量可能的硬件/软件协同优化技术和权衡,而无需大型、序列化的“先硬件再软件开发过程”。灵活的软件功能模拟器(例如 Renode)允许 Dover 工程师跨越硬件-软件鸿沟进行协作,以找到硬件和软件复杂性之间的最佳权衡,使其成为他们工作不可或缺的一部分。
要了解有关 Renode 如何简化协同设计项目的更多信息,请访问 renode.io。要详细了解 CoreGuard 如何保护嵌入式系统免受基于网络的攻击,请申请演示以了解 CoreGuard 的实际应用。
本文由 Antmicro 业务发展副总裁兼联合创始人 Michael Gielda 合着。
行业文章是一种内容形式,允许行业合作伙伴以编辑内容不太适合的方式与 All About Circuits 读者分享有用的新闻、消息和技术。所有行业文章都遵循严格的编辑指南,旨在为读者提供有用的新闻、技术专长或故事。行业文章中表达的观点和意见是合作伙伴的观点和意见,不一定是All About Circuits或其作者的观点和意见。
嵌入式