本文介绍如何使用 Questa Verification IP 中实现的回调,在采用 PCIe 协议的设计中进行断言验证。
在 Questa Verification IP 中,首先定义回调方法和策略,使其在所有协议之间通用。随后针对每种具体协议,从这些基类扩展回调方法。
其中一个基类被称为 cb_policy,它从 uvm_object 扩展而来。该基类定义了 register、get 和 return 回调等方法。这些方法被声明为纯虚拟任务或函数,以便派生的类能够覆盖基类定义。
第二个基类从 uvm_component 扩展而来,它被称为 cb_manager。这个类的 run_phase() 是一个无限循环,在其间,我们首先从 BFM 获取序列项,然后将更改后的序列项返回给 BFM。在 cb_manager 类中定义的单独外部任务中,可添加和删除回调队列中的回调序列项,并根据队列大小激活 register 回调方法。
对于每个协议特定的回调实现,该协议独有的各个序列项均从前述基类扩展而来。这些名称的分配方式如下:
在类
Register 回调方法的主要目的是在用于设置状态变量的 BFM 内启动回调相关的任务。在设置 BFM 内的状态变量后,将会立即调用 get 回调方法,此方法用于通过 DPI 调用从 BFM 获取序列项。用于操作序列项字段的整个逻辑被放置在