中文 英语
知识中心
导航
知识中心

Testbench

用于功能验证设计的软件
受欢迎程度

描述

testbench这个术语来自于使用各种测试设备(如信号发生器、示波器、逻辑分析仪等)在实验台上测试电子产品的时代。虽然其中一些仍然用于系统级验证和高速验证,但现在几乎所有功能验证都是在使用模拟器的虚拟世界中执行的。
被测试的设计通常被称为被测试设计(DUT)。许多业内人士喜欢使用“测试”一词,因为这与“制造测试”的概念相混淆,制造测试是为了测试设备是否被正确制造。验证行为是试图找出设计是否会按照规范执行,因此更倾向于将其称为验证下设计(DUV)。因此,测试平台被称为验证环境。所有这些术语都是常用的。

最小测试台组件和定向测试

验证环境的最低要求是向设计中注入刺激并收集结果。在最简单的情况下,输入和输出保存在文件中,所有处理都在验证环境之外执行。当刺激已经提前创建时,通常称为定向测试。也就是说,每个测试都是针对已定义功能的验证。结果与已知为正确输出的黄金向量集进行检查。

创建定向测试非常繁琐,维护成本也很高。每次对设计进行更改时,黄金输出都可能发生变化。这反过来意味着必须手动扫描新输出,以查看新输出是否正确。随着设计变得越来越大、越来越复杂,创建有向测试几乎成为了一项不可能完成的任务,并且非常难以完成。

覆盖面和封闭性
也许验证团队必须问的最重要的问题是:我什么时候完成?虽然这听起来像是一个简单的陈述,但几乎不可能精确量化。首先,现代系统几乎有无限的状态集,即使在模拟器中访问这些状态,也可能比实时运行慢许多个数量级,这将花费一生的时间。与此同时,经济学也表明,一种经过全面验证的产品不太可能具有成本效益,而且可能上市较晚。因此,验证的完整性必须与成本相平衡。

覆盖是一种度量实现验证目标的进展的方法,有许多覆盖模型可供选择。对于许多模型来说,几乎不可能达到100%的覆盖率,因此收尾是决定是否达到了足够的覆盖率、初始目标是否合理以及未覆盖的情况是否可以接受的过程。目标是将设计中仍然存在的缺陷可能导致最终产品出现问题的风险降至最低。

检查,断言和约束随机
前面已经提到,对黄金模型执行检查是有问题的。虽然要证明两件事情是相同的,但分析差异来判断它们是否重要就更加困难了。此外,定向测试开始被约束随机测试模式生成所取代。这具有生成大型向量集的能力,但是不知道任何特定测试的目标是什么。这大大改变了核查环境的作用。检查器现在必须验证所创建的任何输出,给定一组随机输入,都是正确的,而做到这一点的唯一方法是使用预期功能的第二个模型。第二种模型通常比设计具有更高的抽象级别,因为它不需要定义如何实现某些东西,只需要定义结果应该是什么。有时,该模型可能来自设计过程的早期阶段,尽管必须注意这一点,其他时候则由验证团队编写。

模型通常分为几个部分。检查器可分为检查器和记分牌。例如,计分板的作用是跟踪在系统中移动的数据包。假设一个包被注入到系统中,抽象模型可能不知道它应该在什么时候出现,只知道它最终应该发生,以及可以对它进行哪些更改。因此,当数据包被注入时,它会被放在计分板上,当数据包从系统中出来时,检查器会寻找并删除数据包。在模拟结束时留在记分牌上的任何包都可能是丢弃的包。这个例子展示了计分板和检查器如何一起工作来验证系统输出。

验证功能的另一种方法是使用断言。这些定义了必须遵守的规则。例如,在十字路口,任何时候都不允许有两条车道的交通是绿灯。如果在模拟过程中发生此事件,则会创建一个错误。

提高抽象
正如前面所述,验证环境不需要知道在设计中如何完成某些事情,只需要知道应该做什么。这意味着可以在更高的抽象级别上对验证环境的许多方面进行建模。最常用的方法是使用事务级建模。作为事务的一个例子,处理器可以发出读或写请求。该请求是一个简单的事务。在设计中,总线周期将是一系列导线上的复杂信号变化序列,这些导线将读或写请求的地址放置到总线上,编排与内存或外围设备的交互,并导致数据被写入或读取。处理器总线通常是设计和验证环境之间的接口,因此需要在两者之间放置抽象移位器。由于前面的例子,这通常被称为总线功能模型(BFM),尽管它可以在任何接口上执行类似的功能。


相关技术

Baidu