西门子业务导师Matthew Ballance撰写
的 存在理由 对于便携式刺激是重复使用。 Accellera便携式激励器标准(PSS)可以在整个验证过程中以及执行验证的多个引擎之间促进测试意图的重用。捕获为便携式激励模型的测试意图可实现从IP到SoC级别的测试重用,并提高测试创建效率。
当用户考虑应用便携式刺激时,一个立即的认识就是其组织中当前可用的便携式刺激内容的数量有限。幸运的是,组织中有许多现有的描述和格式,可重复使用以创建便携式激励描述。
UVM寄存器模型以及SystemVerilog类和约束是现有描述的示例,可以与便携式激励有效地重用。
在这个由四部分组成的系列文章中,我们将向您展示如何使用您可能已经拥有的UVM和SystemVerilog描述,以便您可以快速开始创建便携式刺激模型。我们将从UVM寄存器模型开始。
UVM寄存器模型在模块和子系统级别上大量使用,以简化与设备寄存器的交互。在寄存器模型描述中捕获的信息-寄存器地址,可以写入的字段等-对创建SoC集成测试非常有帮助。另外,以机器可读的方式捕获该信息,这使得自动重用此关键便携式刺激信息变得容易。
UVM库提供了内置的,有针对性的序列测试,可循环访问UVM寄存器模型以检查寄存器的复位值并确认可访问寄存器。这些序列测试在IP级别上非常有用,但是在子系统和系统级别上重用它们仍然很困难。
这就是PSS的用处。在便携式激励模型中捕获寄存器测试意图可以使寄存器测试功能从IP移植到SoC级别,并提供更大的灵活性来控制在给定测试运行中检查哪些寄存器。
分裂原子:测试意图和实现
分离测试意图和测试实现,通常将它们合并在定向测试中,是便携式激励的核心要素,而这一划分是使测试意图能够轻松地在整个环境中重新定位的关键。测试意图是高级设计 什么 去测试。测试实现是 机制 通过该测试进行。
在测试寄存器模型的情况下,测试意图如下所示:从寄存器块中选择一个寄存器;从寄存器中选择一个读/写字段,然后在该字段中选择一个位进行测试。
上述测试意图与我们是否要验证模块,子系统或SoC级别设计无关。它也与是否以SystemVerilog环境或嵌入式软件环境为目标无关。下面的PSS代码捕获了用于测试单个寄存器的测试意图,其中: reg_id 捕获要测试的寄存器, flip_bit 捕获要测试的寄存器中的位,并且 reg_addr 捕获内存映射中字段的地址。
考虑到便携式激励因素来设计测试实现方案,使我们能够设计在所有环境中都可用的通用API。例如,我们可以指定一个名为 测试位 在所有环境中都可用,并且该方法将测试修改指定位的能力。此类功能的功能原型如下所示。
在SystemVerilog IP或子系统级别的环境中,我们可以将此方法作为UVM序列中的一项任务来实现。下面显示的SystemVerilog任务使用内存访问API读取和写入内存,并通过读取寄存器的当前值,取反寄存器的目标位并写入新的寄存器值并回读来实现寄存器位测试操作寄存器地址,并检查该位是否保留其值。
在这种情况下,如果遇到错误,测试将继续运行。这是UVM测试非常典型的。但是,嵌入式软件环境具有不同的约束。以下示例显示了 测试位 嵌入式处理器的功能。这种方法与SystemVerilog版本非常相似,尽管具体情况有所不同。最大的区别之一是,在这种情况下,我们假设如果寄存器位测试失败,我们将结束整个测试。
现在,我们将创建子系统UVM寄存器模型。图1中的示例子系统具有一个处理器,两个以太网控制器和两个DMA引擎。

在验证过程中,很可能使用寄存器创建工具(参见图2)在模块级别创建了一个UVM寄存器模型,用于以太网和DMA控制器。

在子系统级别,寄存器创建工具可以帮助我们为整个子系统组装寄存器模型。或者,我们可以简单地采用各个块级寄存器模型,然后手动组装子系统级寄存器模型。下面的代码从以太网和DMA控制器寄存器模型中组装出子系统级别的寄存器模型。不需要太多代码:仅设计中的可用寄存器,它们的地址,这些寄存器中的字段以及任何访问限制。
可能令人惊讶的是寄存器的累积速度有多快。到我们为两个以太网控制器和两个DMA控制器创建寄存器模型时,我们已经拥有989个带有可测试字段的寄存器。想象一下,一个完整的SoC包含多少个寄存器!
现在,我们已经了解了如何捕获子系统或SoC级别的寄存器模型,我们如何继续创建寄存器访问测试?首先,我们需要创建一个寄存器访问测试意图的PSS模型。然后,我们需要通过测试实现将该测试意图连接到特定的验证环境。
的 下一篇 本系列将向您展示如何做到这一点。
其他资源:
//accellera.org/activities/working-groups/portable-stimulus
//verificationacademy.com/topics/portable-test-stimulus
//www.mentor.com/products/fv/infact/
Matthew Ballance是Mentor Graphics的产品工程师和便携式刺激技术人员,与Questa inFact便携式刺激产品一起工作。在EDA行业的过去20年中,他曾在硬件/软件协同验证,事务级别建模以及IP封装和重用领域从事产品开发,营销和管理职务。 Matthew毕业于俄勒冈州立大学。
发表评论