一、工厂机制的意义
- 工厂机制也是软件的一种典型设计模式,UVM工厂的存在就是为了更方便地替换验证环境中的实例或者注册了的类型,同时工厂的注册机制也带来了配置的灵活性。
- 这里的实例或者类型替代,在UVM中称作覆盖(override),而被用来替换的对象或者类型,应满足注册和多态的要求。
- UVM的验证环境构成可以分为两个部分。一部分构成了环境的层次,这部分代码是通过uvm_component类完成,另一部分构成了环境的属性(例如配置)和数据传输,这一部分通过uvm_object类完成。uvm_component类继承于uvm_object类,这两种类也是进出工厂的主要模具和生产对象。之所以成为模具,是因为通过注册,可以利用工厂完成对象创建,而之所以对象由工厂生成,也是利用了工厂生产模具可灵活替代的好处,这使得在不修改原有验证环境层次和验证包的同时,实现了对环境内部组件类型或者对象的覆盖。
二、uvm_component类和uvm_object类
参考SV中的组件的概念,即验证环境的不动产,uvm_component的子类中对应的组件大致包括:
- generator
- stimulator
- monitor
- agent
- checker/reference model
- environment
- test
SV中的非固定资产即那些TLM transaction&