一个示例
若要使用在 10 Hz 下运行的现代软件仿真器来仿真在 100 MHz 下运行的 1 亿 ASIC 门设计上的一秒钟的真实数据,这绝非易事。在这种设计复杂度下,可能需要花费 1 千万秒的时间。即 2,778 小时,或者 115 天。一秒钟的 100 MHz 真实数据等于 1 亿个时钟周期,这个数字相当大,可能会超出处理典型测试平台的要求。在处理典型测试平台时,一毫秒或者更短时间就足够了,在大内存配置的最新 PC 上运行时,则会将执行时间缩短至一天或更短。这是个合理的目标。
HDL 软件仿真器可以在 PC 场中并行运行,每个 PC 会处理功能完善的测试平台。半导体公司有成千上万台 PC 构成的计算场全天运行。
但 1 亿周期仍不足以处理嵌入式软件设计。由于处理软件在本质上为串行流程,所以对于这项任务来说,有必要按顺序执行数十亿周期。然而,带有 HDL 软件仿真许可的 PC 场却鞭长莫及。软件程序无法在子集中进行拆分,再并行运行。
那么,要如何验证SoC设计的嵌入式软件呢?
进入硬件仿真时代
硬件仿真其实由来已久,它给设计人员在流片前提供了一种更为准确的电路行为描述,因为硬件仿真是通过真实的电路和逻辑来实现设计。硬件仿真始于 20 世纪 80 年代末,在 20 世纪 90 年代末盛行,当时主要是通过商业 FPGA 进行实现,用于验证需要较长测试周期的处理器和图形设计。它们也遇到诸如电路建模难度高以及可靠性低等各种问题。其成本也较为高昂,并且作为单用户资源,其投资回报较低。然而,硬件仿真器的出色执行速度仍使其成为长处理周期的必要工具。
还是之前的示例,在 1 MHz 下运行的硬件仿真器需要花费 100 秒来执行 1 秒钟的真实数据以及处理 1 亿次周期。硬件仿真器可以在一小时左右的时间内启动操作系统。而且,硬件仿真器的投入比重新流片便宜得多。
HDL 软件仿真器由于缓存缺失和内存交换,其执行速度会随着设计规模增加而急剧下降。不过与之不同的是,在此情况下,硬件仿真器的性能只会受到轻微影响。
由于商用 FPGA 硬件仿真器有一定的限制性,定制芯片硬件仿真器由此应运而生。这种硬件仿真器主要有两种不同类型:由 Mentor Graphics 提供的定制 FPGA 硬件仿真器,又称片上硬件仿真器;以及由 Cadence Design Systems 提供的基于处理器的硬件仿真器。同时,Synopsys 也支持使用比标准 FPGA 硬件仿真器更为先进且功能有所增强的最新商用 FPGA 硬件仿真器。
直到十年前,硬件仿真器才在电路硬件仿真 (ICE) 模式中被单独部署为物理测试环境。由于当流片提供激励和处理响应时,被测设计 (DUT) 将最终驻留在此环境中。因为难以进行设置,ICE 模式现在并不常见,而对更加灵活的测试环境的需求却在不断增长。应用硬件桥没有可控性/可再现性,并且由于安装时间和维护成本的增加,其还会增加测试环境的复杂度。由于可合成的测试平台能在硬件仿真器内部进行映射,并且无需依赖外部环境便可以硬件仿真器的最高速度执行,因此该测试平台区域还有其他可行的替代方案。不过遗憾的是,它们不易开发。
基于事务的验证或加速(TBV 或 TBX)是业内最看好的方法,具有两方面的优势。首先,能采用少一个数量级的代码行,在更高抽象层次写入测试平台,简便而又不易出错。其次,由于在硬件仿真器内部映射晶体管的总线功能模型 (BFM) 实现了急剧加速,这些测试平台比传统 RTL 平台执行更快。另一个益处是,当用户切换设计或新用户登录时,TBV 或 TBX 不需要人为监督来处理速度适配器。这种方式也适合于远程访问。
何时使用软件仿真,何时使用硬件仿真
HDL 软件仿真器适用于设计周期早期阶段的硬件调试,早期阶段的设计主要专注于模块级别。凭借易用、快速设置、极速设计编译等特点,它们可以极其灵活地调试硬件设计。它们还支持每天进行多次设计迭代…只要设计规模合理。但在数千万门级别时会出现问题,这在现在看来只是典型的系统级设计验证。如上所述,它们并不适合嵌入式软件验证。
相反,硬件仿真能找到几乎所有设计缺陷,无论是在硬件中还是在 SoC 嵌入式软件中。硬件仿真可处理任何设计规模,但需要较长时间进行环境搭建,至少一天,也可能更长时间。而且,相比软件仿真器,其编译速度相对较慢,大约需要一小时以上才能完成编译。
现代硬件仿真器支持多个并发用户,包括通过远程访问,因此可增加投资回报。