虚拟平台

什么是虚拟平台?

虚拟平台再现了数字系统的功能,完全在软件中编写。编写该软件是为了实现被建模平台的规范,而不是 HDL 或 RTL 级电路的详细实现。虚拟平台看起来类似于 IT 组织所使用的虚拟机,主要区别在于后者是针对现有软件在生产中的使用,而虚拟平台是为了支持设计验证和软件开发。虚拟平台有时称为虚拟原型设计,该术语在业内有不同的含义,Cadence 主要使用虚拟平台一词。

在硬件设计中,一旦芯片最终流片,就无法通过更改设计来修复漏洞。这是一个重大问题,因为数字电路的设计、开发和制造成本高达数百万美元。仅仅一个硬件漏洞就可能使您的公司损失数百万乃至数十亿美元。例如,英特尔因为处理器的一系列漏洞而丢失了市场份额和声誉。这些漏洞如果被人利用,可能会对英特尔 CPU 用户构成严重的安全威胁。因此,英特尔不得不发布软件补丁,大幅降低受影响处理器的速度,而用户不得不在速度和安全性之间做出抉择。

硬件设计的另一个难点在于,如果某硬件本身没有完成,就无法开始开发对该硬件至关重要的软件。这就是虚拟平台的用武之地。您可以在设计规范敲定后立即开始开发软件,而不是等到第一批芯片生产出来后才开始。这样,您可以同时开发软件和硬件,缩短集成和启动时间,避免产品延期发布。这是因为虚拟平台脱胎于硬件设计师使用的规范,而不是硬件设计本身。因此,软件可以在与硬件验证相同的虚拟平台上运行,确保它们具有相同的规范定义。不过,虚拟平台不像 RTL 那样涉及诸多细节,因此可以更快地创建。您可以在此过程中更早地开始进行软件开发,而不是等到设计完成或设计进入制造环节后才开始。

虚拟平台经常被拿来与待验证设计的软件仿真做比较。虚拟平台通常比软件仿真快得多,但在处理高端设计时不会比硬件仿真更快。

智能手机软件开发者只是虚拟平台受益者之一。如果您正在为新款智能手机开发自己的 Android 发行版,那么应该尽早开始开发软件。此外,虚拟平台还支持您同时开发硬件和软件,确保硬件在准备发布时拥有更好的性能和功能。这同样适用于电子游戏机开发以及在嵌入式平台上运行高性能软件的其他领域。

 

虚拟平台为什么很重要?

虚拟平台很重要,在 GPU 领域就可见一斑。在 GPU 领域,最大的问题之一是发布首日的驱动程序质量。有些用户之所以选择某家制造商而不是另一家制造商,其中的一个重要原因是驱动程序不好用。因此,在发布当天是否拥有出色的软件可能意味着市场份额的得失。借助虚拟平台,驱动程序开发人员不仅可以在产品发布之前,还可以在产品生产之前测试和优化软件。电子市场的竞争非常激烈,必须尽可能取得每一个优势。

想要在产品开发过程早期启动软件代码,最简单、最快捷的方法就是使用虚拟平台。其他大多数的早期启动方法,包括硬件产品的软件仿真和硬件仿真,既困难又相当耗时。即便使用最快的工作站,在设计投入生产之前,您也没有足够的算力在仿真中运行应用软件。硬件仿真虽然速度要快得多,但需要设计基本成熟,因此会推迟漏洞被发现的时间,如果在产品发布前夕才修复则为时已晚。如果不使用虚拟平台而使用性能更低的其他方法,产品开发的软件团队必须等待原型产品才能开始开发软件。对于包含复杂软件的产品,根本来不及在发布前夕着手改善质量,而人们是看中软件的质量才购买该产品。此外,在系统环境中测试关键设计选择的好方法是尽早开始进行软件开发,这有助于在产品上市之前优化软件和硬件设计,而不是在发布之后通过更新的方式来优化。

借助虚拟平台,您可以创建混合平台,将虚拟平台的元素与软件仿真、硬件仿真或 FPGA 原型验证相结合,提高功能性和灵活性。这样做可以打破虚拟平台的局限性,解决了在制造硬件之前需要准确详尽的性能信息来创建和调试复杂软件的问题。软件和硬件工程师可以了解潜在设计在现实世界中的效果。通过虚拟平台,软件工程师可以了解复杂代码在设备上的运行情况。同样,混合平台使硬件工程师可以知道电路实现与软件和其余部分的设计是否配合到位。然后,他们可以进行迭代和更新,无需创建许多的原型版本。这在当今的全球供应链中十分重要,因为把硬件设备运送到世界各地的程序员手中会非常昂贵。由于无需运送硬件,全球各地的团队可以快速启动和运行虚拟或混合平台,避免运输和客户延误的风险。他们还可以轻松地调试自己的代码,确定问题是来自软件还是硬件。

此外,在进行调试时,使用虚拟平台比使用实际硬件更简单方便。调试的深入程度可以达到使用实际硬件时无法达到的水平。因此,您可以更全面地了解您的软件是否运行良好,不需要获得运行该软件的实际硬件,从而可以轻松地为所有人创建一套兼容每一种配置的工具。

虚拟平台是如何工作的?

虚拟平台的一个关键方面是,它将运行与最终硬件实现相同的软件镜像。对系统使用的外设进行建模,使硬件系统和虚拟原型功能相同。此外,虚拟平台可以灵活地连接到软件仿真、硬件仿真或 FPGA 原型设计中的 RTL ,以及现实设备。得益于这种灵活性,虚拟平台支持验证在平台上运行的软件和连接的任何 RTL。

为了在相当长的时间内运行现实软件,虚拟平台必须拥有强悍的性能,这通常使用 SystemC 编程语言来实现。为了达到这种性能并在 RTL 之前做好准备,SystemC 代码不会涉及到硬件的运行细节。因此,您可以专注于规范的实现,而不是编写 HDL 或 RTL 级代码来实现某些功能。例如,在创建某个集成电路的虚拟原型时,您需要实现相同的接口,包括引脚数,但不需要实现该功能在电路内部是如何实现的。您可以使用标准软件技术来获得与硬件实现相同的功能。一个常见的例子是用于软件功能的硬件加速器。在虚拟平台上,只需调用被加速的软件功能即可,不需要想方设法在硬件中实现该功能。

由于输入、输出和状态存储相同,虚拟平台可用于验证功能是否正确,而且由于不涉及所有细节,性能比 RTL 更强。

采用 Cadence 技术的虚拟平台

Cadence 深知在硬件设计过程中尽早大规模部署虚拟平台的重要性。为此,Cadence 推出 Helium Virtual 和 Hybrid Studio 软件解决方案,助您创建高性能的虚拟和混合平台。

借助该工具,您可以通过易于使用的 GUI,为 SOC 平台创建强大的硅前虚拟平台。这些虚拟平台与 Cadence Xcelium、Palladium 和 Protium 验证引擎集成,赋能软件开发和软硬件协同验证。由于囊括了预装最新 Android 或 Linux 镜像的众多行业相关参考平台,易用性得到大大加强。您还可以使用强大的虚拟模型库从头开始创建。

您将获得更强大的虚拟平台创建环境,统一的调试功能提供了业界领先的多核、多进程调试,适用于从 RTL 到虚拟 CPU 模型。

进一步了解 Cadence Helium Virtual 和 Hybrid Studio 如何帮助您更快地将产品推向市场。