is_active是agent的一个成员,缺省值是UVM_ACTIVE,这表示处在active模式的agent需要例化driver、monitor和sequencer;而如果is_active的值是UVM_PASSIVE,这表示agent是passive模式,只可以例化monitor。active模式的agent既有激励功能也有监测功能;passive模式的agent只有监测功能。 如何配置agent为active模式还是passive模式呢?可...
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,...
reference model:模仿DUT,完成与DUT相同的功能,为scoreboard提供判断标准; agent:将sequencer、driver和monitor封装在一起(UVM_ACTIVE/UVM_PASSIVE、两种模式),agent模块的使用提高了代码的可重用性; env:将平台上的component组件封装在一起,并配置各个组件间的通信端口,实现一个环境多个用例。运行不同用例时,在其中实例...
所有的agent都要派生自uvm_agent类,且其本身是一个component,应该使用uvm_component_utils宏来实现factory注册。这里最令人困惑的可能是build_phase中为何根据is_active这个变量的值来决定是否创建driver的实例。is_active是uvm_agent的一个成员变量,从UVM的源代码中可以找到它的原型如下: uvm_active_passive_enumis_act...
Active: 在总线上通过物理事务做读写操作。Read()、write()、update() 和 mirror() 是Active API,它们使用物理接口在 DUT 上运行。您可以选择使用后门机制,在这种情况下它不会消耗仿真周期。与使用前门访问相同的RTL寄存器行为一致。 Passive:仅使用寄存器模型操作。set()、get() 和 predict() 是直接在模型上操...
is_active是uvm_agent内置的一个成员变量,通过顶层传值,控制driver是否进行例化,且is_active的值默认为UVM_ACTIVE。 UVM_PASSIVE:例化monitor而不需要例化driver(输出端口无需驱动) UVM_ACTIVE:例化monitor,也需要例化driver(输入端口需要驱动) 例化动作可以在build_phase函数中完成,也可以在new函数中完成,但强烈建议仅...
按照约定,UVM agent config类有一个类型为uvm_active_passive_enum的枚举类型变量,该变量定义了agent是构造了sequencer和driver的UVM_ACTIVE还是二者均未构造的UVM_PASSIVE。这个参数称为active,默认值为UVM_ACTIVE。 而是否构建其他子组件则应该由附加的配置属性来控制,这些属性应该具有描述性名称。例如,如果有一个 func...
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只具有监...
从方案二可以看出,mcdf_env的子组件不再是uvm_agent,而是各个模块的验证环境uvm_env类型。通过直接继承这些子环境,也间接复用了它们内部的scoreboard。而在connect阶段,需要将各个子环境中不需要再做激励的agent,配置为passive模式,而默认情况下这些agent的均为active模式。也正因为这种复用方式,无需再新建一个MCDF的sco...
UVM_PASSIVE:agent以这种形式运行时,只监测总线而不驱动总线; UVM_ACTIVE:agent以这种形式运行时,既可以监测总线,也可以驱动总线; 3.两个主要端口:uvm_blocking_get_port是一个TLM事务级端口,用于接收由uvm_analysis_port发送的信息,而uvm_analysis_port是发送信息的端口,其发送的消息会被前面的端口所接收。uvm验证...