uvm_links.svh定义了基类uvm_link_base
及派生类uvm_parent_child_link
、uvm_cause_effect_link
、uvm_related_link
,采用这几个类可链接任意两个object
。通过把存在一定关系(亲子关系、因果关系等)的object链接在一起,可确保编译安全进行。
uvm_link_base
直接派生自uvm_object,主要实现了以下几个方法:
序号 | 方法 | 描述 |
---|---|---|
1 | new | 创建uvm_link_base |
2 | set_lhs | 调用do_set_lhs设置左分支 |
3 | set_rhs | 调用do_set_rhs设置右分支 |
4 | get_lhs | 调用do_get_lhs获取左分支 |
5 | get_rhs | 调用do_get_rhs获取右分支 |
6 | do_set_lhs | 纯虚函数,设置左分支 |
7 | do_set_rhs | 纯虚函数,设置右分支 |
8 | do_get_lhs | 纯虚函数,获取左分支 |
9 | do_get_rhs | 纯虚函数,获取右分支 |
10 | set | 设置左分支及右分支 |
uvm_parent_child_link
派生自uvm_link_base,适用于满足亲自关系的两个object。类中定义了局部变量左分支m_lhs和右分支m_rhs,对uvm_parent_child_link类注册到factory中。相较于uvm_link_base,uvm_parent_child_link类中实现了do_set_lhs、do_set_rhs、do_get_lhs、do_get_rhs这四个函数,并新实现了一个function get_link(调用set)来预填充当前类节点的左右分支。
uvm_cause_effect_link
类适用于满足因果的两个object,uvm_related_link
则适用于存在其他相关关系的两个object。这两个类与uvm_parent_child_link除名字不同外,实现方法与uvm_parent_child_link别无二致。