所有的agent都要派生自uvm_agent类,且其本身是一个component,应该使用uvm_component_utils宏来实现factory注册。这里最令人困惑的可能是build_phase中为何根据is_active这个变量的值来决定是否创建driver的实例。is_active是uvm_agent的一个成员变量,从UVM的源代码中可以找到它的原型如下: uvm_active_passive_enumis_act...
is_active是agent的一个成员,缺省值是UVM_ACTIVE,这表示处在active模式的agent需要例化driver、monitor和sequencer;而如果is_active的值是UVM_PASSIVE,这表示agent是passive模式,只可以例化monitor。active模式的agent既有激励功能也有监测功能;passive模式的agent只有监测功能。 如何配置agent为active模式还是passive模式呢?可...
is_active是uvm_agent内置的一个成员变量,通过顶层传值,控制driver是否进行例化,且is_active的值默认为UVM_ACTIVE。 UVM_PASSIVE:例化monitor而不需要例化driver(输出端口无需驱动) UVM_ACTIVE:例化monitor,也需要例化driver(输入端口需要驱动) 例化动作可以在build_phase函数中完成,也可以在new函数中完成,但强烈建议仅...
uvm_active_passive_enum is_active=UVM_ACTIVE 这里UVM默认了is_active值为UVM_ACTIVE,其中uvm_active_passive_enum为变量类型,如果要用config_db传参,使用config_db#(uvm_active_passive_enum)进行set和get。 之所以在agent中设置一个if判断语句来决定是否实例化drv的原因是因为,我们在输入和输出的端口都有agent,...
agent:将sequencer、driver和monitor封装在一起(UVM_ACTIVE/UVM_PASSIVE、两种模式),agent模块的使用提高了代码的可重用性; env:将平台上的component组件封装在一起,并配置各个组件间的通信端口,实现一个环境多个用例。运行不同用例时,在其中实例化env即可; ...
uvm_active_passive_enum is_active = UVM_ACTIVE; is_active是agent的一个成员,缺省值是UVM_ACTIVE,这表示处在active模式的agent需要例化driver、monitor和sequencer;而如果is_active的值是UVM_PASSIVE,这表示agent是passive模式,只可以例化monitor。active模式的agent既有激励功能也有监测功能,passive模式的agent只具有监...
Active: 在总线上通过物理事务做读写操作。Read()、write()、update() 和 mirror() 是Active API,它们使用物理接口在 DUT 上运行。您可以选择使用后门机制,在这种情况下它不会消耗仿真周期。与使用前门访问相同的RTL寄存器行为一致。 Passive:仅使用寄存器模型操作。set()、get() 和 predict() 是直接在模型上操...
为了实现这一功能,UVM的agent自带一个成员变量is_active,该成员变量的类型是uvm_active_passive_enum。通过对这个变量进行判断,就能够改变agent例化时的行为。 当然,为了测试的灵活性,这个变量肯定需要想办法从更高层次的组件甚至是tb文件中获取。获取方式一般是直接使用config_db机制或是在上层组件中使用config_db机制...
按照约定,UVM agent config类有一个类型为uvm_active_passive_enum的枚举类型变量,该变量定义了agent是构造了sequencer和driver的UVM_ACTIVE还是二者均未构造的UVM_PASSIVE。这个参数称为active,默认值为UVM_ACTIVE。 而是否构建其他子组件则应该由附加的配置属性来控制,这些属性应该具有描述性名称。例如,如果有一个 func...
这两种i_axi_agent组件包分别作用于射频接口的发送模块和接收模块,目的是为了使配置的active和passive模式能够对interface上的数据信息进行驱动和监测。o_axi_agnet例化模块中的monitor可以监视到测试对象发出的激励数据流,通过TLM接口机制传送到uvm_scoreboard。与此同时,由Matlab封装的record_model模型,通过passive模式占用...