UVM的configuration机制
uvm configuration机制
- uvm configuration机制
- 特点
- UVM资源池
- 添加配置资源
- 获取配置资源
- config机制的使用
- 单个变量使用configure机制
- interface使用configure机制
- 总结
uvm configuration是一个强大的属性配置工具,它: 1.可以传递值; 2.可以传递对象; 3.可以传递interface(virtual);
特点- 作为半个全局变量,避免全局变量带来的风险;
- 高层组件可以通过该机制实现在不改变代码的机制下更改它所含子组件的变量;
- 各个层次都可使用;
- 支持通配符和正则表达式;
- 支持用户自定义的数据类型;
- 可以在仿真运行的过程中进行配置;
如上图所示,uvm资源池由两部分构成,分别是添加配置资源和获取配置资源
uvm_configure_db#(type)::set(
uvm_component cntxt,//配置资源的源组件
string instance_name,//配置资源的目标对象所属组件,可以使用通配符和正则表达式
string field_name,//配置资源的ID
T value//资源值,
);
获取配置资源
uvm_configure_db#(type)::get(
uvm_component cntxt,
string inst_name,
string field_name,
inout T value
)
config机制的使用
configuration机制的使用就是set函数和get函数的过程
单个变量使用configure机制首先根据DUT构建interface; 为driver添加virtual interface和驱动DUT: 将事务信息分解为pin级信号驱动给DUT
新建top.sv文件,将其他平台组件include,建立顶层module,进行各种连接,将实例化interface配置给virtua interface
使用uvm_config_db的优势在于: 1.与SV的层次化索引不同,可以在顶层对任意层次进行配置,也可以在硬件域对软件域的接口进行配置,操作更方便 2.验证组件更独立,水平复用和垂直的移植都更加方便 3.即使在顶层没有配置,底层也不会报错,一方面提高了复用性,另一方面增加了隐患,所以最好在配置时设置调试语句,在配置失败时报错,以便于调试。