回调用于改变组件或对象的行为而不修改其代码。请参阅SystemVerilog callback - VLSI Verify以更好地理解。UVM 中的phasing机制就是回调的一个简单示例。
1 UVM Callback Usage
- 允许即插即用机制以建立可重用的验证环境。
- 基于钩子方法(hook method)调用,执行用户自定义的代码,而不是空的回调方法。这带来了组件或对象的各种风格。
- 回调可用于在组件中引入错误或延迟。
2 UVM Callback Macros
下面仅提及广泛使用的回调宏:
3 UVM Callback Classes
UVM 回调为其实现提供了一组类。
4 UVM Callback Methods
uvm_callback 方法可以使用范围解析运算符来调用,因为它们是静态方法。
例如: uvm_callbacks#(T, CB)::add(obj,cb);
其中:
T :使用用户定义回调的对象类型,它必须从 uvm_object 派生。
CB :用户自定义回调类型
obj : 使用用户定义回调的对象句柄
cb :用户定义回调对象
uvm_callbacks、uvm_callback_iter 和 uvm_callback 类还有许多其他方法,这里不讨论,常用方法和宏在上一节中介绍。