1.概述 UVM的组建类(uvm_component)是验证环境的骨架,用于验证环境的结构的创建。主要包括uvm_driver、uvm_monitor、uvm_sequencer、uvm_agent、uvm_scoreboard、uvm_env、uvm_test等。 在对组件类进行工厂机制的注册时,需使用宏`uvm_component_utils()。而对于组件的构建函数,其固定形式为: function new(string nam...
SV的reference model和coverage model均对应uvm_component SV的test对应uvm_test 在遵循上面的对应原则的过程中,在进行类的转换时,需要注意: SV的上述类均需要继承于其对应的UVM类 在类定义过程中,一定需要使用'uvm_component_utils()或者'uvm_object_utils()完成类的注册。 在使用上述工厂注册宏的时候,会伴随着“...
uvm_object_utils:用于将一个直接或间接派生自uvm_object的类注册到factory中。 uvm_object_utils_begin:使用这个宏来开启field_automation机制。 uvm_object_utils_end:与uvm_object_*_begin成对出现,作为factory注册的结束标志。 与uvm_component相关的factory宏有: uvm_component_utils:用于将一个直接或间接派生自u...
uvm_component_utils:用于将一个直接或间接派生自uvm_component的类注册到factory中。 uvm_component_utils_begin/uvm_component_utils_end:同上。 值得一提的是,uvm_component_utils_begin用于同时需要使用factory机制和field_automation机制注册的类。也许在前一篇文章中提到的my_transaction类中使用field_automation比较好...
`uvm_component_utils(my_env) drv = my_driver::type_id::create("drv", this); 验证平台中的组件在实例化时都应该使用type_name::type_id::create(name, parent) Monitor extends uvm_monitor 收集DUT的端口数据,并将其转换成transaction i_mon = my_monitor::type_id::create("i_mon", this); ...
uvm_component_utils: 用于把一个直接或者间接派生自 uvm_component 的类注册到 factory; uvm_component_param_utils:用于把一个直接或者间接派生自 uvm_component 的参数化的类注册到 factory uvm_component 类及其成员注册: uvm_component_utils_begin: (类) ... uvm_component_utils_end ...
使用uvm_component_utils宏注册 monitor需要时刻收集数据,所以在main_phase中要使用**while(1)**循环 2.3.4 封装成agent 引入agent的原因: driver和monitor二者处理的是同一种协议,代码高度相似,所以将两者封装在一起。不同的agent就代表了不同的协议。
所有的agent都要派生自uvm_agent类,且其本身是一个component,应该使用uvm_component_utils宏来实现...
`include"uvm_macros.svh"importuvm_pkg::*;classmy_driverextends uvm_driver;`uvm_component_utils(my_driver)//注册 virtual my_if vif;function new(string name="my_driver",uvm_component parent=null);super.new(name,parent);`uvm_info("my_driver","new is called",UVM_LOW)endfunction ...
UVM中component的创建在build_phase完成,并且是从上往下创建的,首先在test中例化env 这行代码执行时,调用env的构造函数new(”env",this),env中的m_parent指向了test(this 指向 test),同时env new()函数内调用test中的m_add_childe()函数(m_parent.m_add_childe(this)),为test中的m_children赋值(m_children...