65.9K
CodeProject 正在变化。 阅读更多。
Home

通过仿真实现硬件设计的小批量生产

starIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

1.00/5 (1投票)

2017年9月19日

CPOL

7分钟阅读

viewsIcon

5202

在本文中,我将讨论一些更具体的例子,说明我们如何应用仿真来实现硬件和系统设计中的小批量生产、早期调整和提高效率。

在这篇两部分博客的上一篇中,我讨论了小批量工作的通用原则,它带来的巨大好处,以及该原则如何应用于传统的软件开发领域之外。在本文中,我将讨论一些更具体的例子,说明我们如何应用仿真来实现硬件和系统设计中的小批量生产、早期调整和提高效率。

首先,我们将审视物联网等大型系统,然后看芯片和计算机设计。

系统级小批量生产

想象一下,您决定使用物联网技术构建一个监控网络。您为每个传感器节点选择看起来有用的硬件,并购买 100 个。您开发了将在物联网节点上运行的一些软件,用于收集传感器读数并将其报告给您的云服务器。您开发了云服务器数据收集和分析系统。最后,系统部署,数据开始流入。有时数据流会变得有些混乱,数据丢失或比预期晚到。罪魁祸首竟然是采购选择了最便宜的网络连接 GPRS……而您需要节点提供更高的带宽。直到系统部署后才显现出来。修复此类错误相当于完全召回:开发新版本的节点,更新软件,然后出去,带回节点,更换其无线子系统,然后重新部署。这并不便宜、快速、容易,也不受欢迎。

您真的需要在最初的设计和架构阶段就获得有关数据连接和系统性能的反馈。您希望减小架构和设计工作的批量大小。从“构建整个系统”到“设计阶段的快速反馈”。实现这一目标的一种方法是使用更高抽象级别的模型来模拟系统。

不是使用运行实际代码的物理硬件板,而是构建一个具有抽象节点的仿真,这些节点以一定的速率生成数据。无需将实际数据从节点传输到云,重要的是数据的数量及其通过各种网络的路径。这种模型非常适合英特尔® CoFluent™ 物联网技术

使用 CoFluent,可以轻松设置模型,让您可以在承诺投入实际硬件和开发软件之前探索设计空间。这提供了一种开发模式,可以将系统的设计和尺寸划分成一系列小批量,在进行详细实现之前将参数设置正确。

架构反馈循环提早出现,由于您只更改抽象模型,因此更改快速且容易。模型比实际代码小得多,无需更改或重新配置硬件。通过这种方式,仿真可以在不构建和部署硬件迭代的情况下,为大型硬件-软件系统实现小批量工作。

计算机架构与小批量生产

接下来,我们来看看处理器、片上系统 (SoC) 和其他芯片的设计。在这里,仿真基本上是标准的工作方式,而且在相当长一段时间内,对于任何稍微复杂的东西都是如此。为什么?这完全取决于设计和构建有效硬件的难度。

制造测试芯片的成本取决于工艺节点,但对于最先进的工艺,通常估计需要数百万美元。更不用说实现所有硬件细节并从制造中获得可运行的硅片需要非常长的时间。因此,如果设计人员依赖“编写一点,测试一点”的软件模型,我们将永远无法完成任何事情。

在许多方面,物理构建芯片是“大批量”的定义——尤其是在我们看到每一代集成度不断提高的情况下。所有组件都必须到位,芯片才能被制造和测试。这并非设计探索的理想方式。从设计单个 IP 块到集成完整的 SoC,芯片设计是一个漫长而复杂的过程。因此,让我们将其分解一下。

通常,计算机处理器内核和处理块的架构是通过使用“周期精确”架构模拟器来完成的。事实上,软件模拟器通常是计算机架构师的主要工具。通过使用模拟器,您可以非常自然地实现小批量生产——设计现在只是软件,并且可以像更改软件一样轻松地进行更改。

对架构进行更改,更新模型以反映更改,然后根据跟踪、软件、基准测试——任何可获得的输入并针对模型执行的输入——运行仿真。这为架构师提供了信息,他们可以然后修改设计、更新模型并重复。使用计算机仿真进行计算机架构工作有着悠久的历史,可以追溯到 60 年前,即 20 世纪 50 年代末,当时 IBM*使用模拟器设计了世界上第一个流水线处理器,用于著名的 7030“Stretch”超级计算机。计算机架构仿真有许多不同的方法,我在这里不详细介绍——更多分析和阅读可以在这里这里这里(以及这些博客文章中链接的各种资源)找到。

硬件-软件接口小批量生产

除了确定 IP 块如何工作以实现最佳性能和最低功耗的架构设计之外,还需要对块的软件接口进行设计工作。驱动程序和其他支持软件必须编写,才能使 IP 块和芯片真正有用且有价值。

过去(有时现在也是如此),硬件-软件集成是以大批量方式进行的

这种方法导致软件团队对硬件设计的反馈延迟或根本没有反馈。这反过来可能导致硬件难以由软件堆栈编程和使用。这是我几年前关于迭代硬件-软件接口设计主题的博客文章中的一个例子,引用了Windows 驱动程序团队的话

如果每个硬件工程师都明白只写寄存器会导致调试几乎不可能,那么我们的工作就会容易得多。许多产品设计的寄存器可以写入,但不能读取。这使得硬件设计更容易,但这意味着无法快照硬件的当前状态,也无法进行寄存器调试转储,也无法进行读-改-写操作。

如果硬件难以编程,它在市场上的成功率通常也较低——没有支持软件,价值如何暴露给用户?因此,我们需要进入硬件-软件集成的“小批量”模式,并尽快建立反馈循环。

使用模拟器,可以构建一点、编程一点,并获得简短的反馈循环,有充足的机会调整硬件和软件以创建更好的系统。

此类仿真不一定像上述架构仿真那样是周期精确的。事实上,对于硬件-软件接口的工作,通常最好使用快速功能模拟器,例如Simics,它可以运行大型软件负载并为驱动程序和应用程序提供完整的 BIOS + OS 上下文

小批量集成

构建一组 IP 块及其各自的软件堆栈后的下一步是将它们全部集成到一个系统中(通常作为片上系统 SoC 制造)。与其在项目结束时进行大张旗鼓的大批量集成,不如应分步进行集成、测试和验证。集成几个块,检查它们是否正常工作,然后随着时间的推移逐渐添加更多块。我在之前在英特尔™开发者区上发布的博客文章中详细介绍了如何使用虚拟平台实现这一点。

摘要

在这两篇博客文章中,我讨论了小批量原则,以及为什么小批量工作可以提高产品质量、减少浪费并降低开发风险。这是“敏捷”的一种替代表述,更容易作为指导原则应用于软件以外的领域。具体到硬件、硬件-软件和系统开发,可以使用不同抽象级别的仿真来实现小批量生产。仿真消除了硬件的一些“硬性”,使得分阶段构建和快速迭代设计变得更加容易。

欢迎在 Twitter 上关注我(@__jengblom),获取未来的见解、行业最佳实践和讨论。

© . All rights reserved.