微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 行业新闻动态 > 使用保存和恢复进行调试,提高硬件加速仿真的智能性

使用保存和恢复进行调试,提高硬件加速仿真的智能性

时间:07-10 来源:3721RD 点击:

之前在 ICE 或测试平台硬件加速中无法使用的技术现在可以大幅提高这些模式中的硬件加速仿真调试速度。

硬件加速仿真最近取得了较大的进步,但仍有提升空间。其调试功能就是一个很好的例子。调试功能的基础为跟踪所有设计元件的活动或波形的能力,因此能够跟踪到错误根源。

简单的算术表明,如果通过蛮力算法应用该工具,则对于每个门输出,硬件加速器以 1MHz 实时运行一秒将产生 1 Mbit 的数据。如果不进行数据压缩或优化,那么就大约是每时钟周期 1 比特。照此推算,100M 门设计实时运行一秒将产生 100TB 数据。

未优化的数据量会带来两大难题。首先,您需要拥有极大的存储容量。其次,要进行后处理和波形显示,将数据从硬件加速器传输到存储介质的耗时极长。

更糟糕的是,长时间硬件加速仿真运行时的调试数据生成会使硬件加速器的运行速度降低两个数量级,即 100 倍。对于昂贵的硬件来说,这样使用十分不妥。

值得高兴的是,我们已针对这个问题进行了研究,现在可以提供多种方法予以解决。例如,实际上所有的硬件加速器供应商都可提供数据压缩和优化技术,从而降低存储容量。

如果门的输出在 1,000 个连续的时钟周期内没有改变状态,则不需要消耗 1,000 比特来反复存储相同的数据。相反,为了限制在硬件加速器和存储介质之间传输的数据量,仅会读出来自时序元件(例如,寄存器和存储器)的数据。我们可以从连接到硬件加速器的工作站中作为驱动器的序列元件活动中快速重新创建夹杂在时序元件之间的组合元件的活动(图 1)。


图 1:只有序列活动才能从硬件加速器传输到主机,主机中快速的算法可生成夹在序列元件之间的组合信号的活动 (Mentor)。

通过检查点进行保存和恢复

在十亿门时代,嵌入式设计的测试需要操作系统启动,而执行软件应用程序和/或长测试序列可以消耗数十亿个时钟周期。以 1MHz 运行的硬件加速器在 1,000 秒或约 15 分钟内可处理 1B 周期。如果在启动操作系统之后激活了执行的应用程序或软件测试中的设计错误,那么可能需要运行数小时。要重复运行(调试期间通常必须如此),实际花费的时间则是这个小时数乘以必要的额外运行次数。

为了控制这种潜在的时间剧增,业内人士提出了在被测设计 (DUT) 的整个状态空间期间内捕捉快照,并在外部保存这一数据。它们被称为"检查点"。

如此一来,便可将 DUT 恢复到设置检查点时的状态,而不必恢复到最开始的状态。通过检查点,用户可以快速移动硬件加速器,使其运行到所需的 DUT 状态。

这对验证工程师来说极为有用,因为设计错误通常将故障传播到接近激活时间的观察点;激活和观察点之间的间隔通常只有数百万个时钟周期。如果初始硬件加速仿真会话每隔数百万周期就设置一个检查点,那么验证工程师可以在设计错误显示出其影响后停止运行,并从距离最近的检查点开始重新运行。

这样的话,极有可能在首次发现错误的前后两个检查点之间的时间间隔中,跟踪到错误根源。如果错误在此时间点之前已激活,那么工程师仍可以从一个更早但是相对较近的检查点开始重新运行,而不是从最开始一直运行到出错的位置。

该功能的核心在于,假设 DUT 和测试环境已映射到硬件加速器内部。可综合的测试平台就是这种情况。然而,当硬件加速器在内电路仿真 (ICE) 模式下运行或受通过事务/标准协同仿真建模接口 (SCEMI)/通用验证方法 (UVM) 构建的硬件验证语言 (HVL) 测试平台(也称为"测试平台硬件加速"或"协同硬件加速仿真")驱动时,将出现问题。

在 ICE 模式中,驱动 DUT 的物理测试环境本身是非重复性或非确定性环境。一个错误可以在两个连续的硬件加速仿真运行中不同的时间标记上出现,或是在一次运行中出现,而在另一次运行中不出现。利用 Mentor Veloce 硬件加速仿真平台中的 Veloce Deterministic ICE 应用程序,即可消除这一风险。它可以确定非确定性 ICE 环境。

不过,HVL 测试平台又是怎样的情况呢?他们在行为级别进行描述,不能综合到状态机定义的寄存器传输级 (RTL) 构造中。因此它们无法保存。为 DUT 设置检查点而不为测试平台设置检查点,这没有任何意义。

我们如何才能保存和恢复不可综合的测试平台,尤其是基于事务的测试平台呢?

测试平台检查点
在测试平台硬件加速期间,测试平台设置是一个双域环境,它包含以下两部分:

·基于软件的或 HVL 域,其在比 RTL 更高抽象层次进行编写,可实施测试平台预期的任何验证活动,并可在主机服务器上运行。

·基于硬件的或硬件描述语言 (HDL) 域,其采用 RTL 代码编写并可合成到硬件加速器中,可实施测试平台 I/O 协议,也就是控制 DUT I/O 管脚转换的状态机或总线功能模型 (BFM)。

域之间的通信包括多周期事务而不是信号级的事务,并且使用基于 SCEMI 的直接编程接口 (DPI) 实施,可导入和导出函数与任务,以及管道语义(图 2)。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top