为了遵循验证计划完成不同的验证任务,用户可能需要扩展原始的通用验证环境。验证过程是动态的,可重用验证环境的开发人员无法预见未来每一个corner case验证的项目需求。
UVM factory是经典软件开发中工厂设计模式(factory design pattern)的实现,该模式用于创建通用代码,从而在运行时(run-time)确定对象的确切子类型。对于以下可重用的类定义:
//UVM Non-Factory Allocation
class driver extends uvm_component
`uvm_component_utils(driver)
function new(string name, uvm_component parent);
super.new(name,parent);
endfunction
virtual task drive_transfer();
...
endtask
endclass:driver
class agent extends uvm_component; // bad example that uses new()
`uvm_component_utils(agent)
driver my_driver;
function new(string name, uvm_component parent);
super.new(name,parent);
// create the driver
my_driver= new ("my_driv