一些典型的验证组件配置参数示例:
一个agent可以被配置为active或者passive模式。在active模式下agent驱动DUT,在passive模式下agent被动地检查DUT的行为和收集DUT的覆盖率。
monitor默认收集DUT覆盖率和检查DUT接口行为。用户可以通过典型的 check_enable和coverage_enable参数禁用。
验证组件配置机制
UVM提供了一种配置机制允许验证环境集成者在不知道验证组件的具体实现的条件下配置环境,示例:
uvm_config_db是一个type-specific的配置机制,配置层次化验证环境中某个层级的参数。uvm_config_db建立在更通用的uvm_resource_db之上,uvm_resource_db提供全局非层次化的数据共享。上述:
第一个例子设置所有以masters[0]结尾的验证组件实例的master_id参数。
第二个例子告诉masters[0].sequencer在进入main phase时执行 read_modify_write_seq 类 型的sequence。
第 三 个 例 子设置ubus_example_env0下的所有验证组件中的vif指针变量。
最后一个例子将一些共享资源存储到验证层次结构中任何对象都可以访问的位置。当uvm_resource_db::set()调用来自一个类时,最后一个参数应该是this,以允许调试信息显示set的来源。
在uvm_resource_db和uvm_config_db之间做出选择
uvm_config_db 和 uvm_resource_db 共 享 同 一 个 数 据库,因此可以用uvm_config_db::set()写数据库,用uvm_resource_db::read_by_name()从数据库检索该配置。
选择uvm_resource_db还是uvm_config_db的考量是层次路径对参数设置是否重要。对于与层次路径有关的配置属性,例如,"为特定agent中的所有组件设置coverage_enable",uvm_config_db是 正 确 的 选 择 。而如果希望配置参数被共享而不考虑层次路径时,应该使用uvm_resource_db。
使用配置类
一些验证组件会随机一个配置类,这些参数配置之间的依赖关系是通过configuration object内的约束来实现的。在这种情况下,用户可以扩展配置类以添加新的约束,在配置类被随机化后使用uvm_config_db::set()将配置对象指针set给验证环境。
责任编辑:彭菁
全部0条评论
快来发表一下你的评论吧 !