uvm_agent:所有的agent要派生自uvm_agent。uvm_agent的作用并不是那么明显,只是把driver和monitor封装在一起,根据参数值来决定是只实例化monitor还是要同时实例化driver和monitor。agent的使用主要是从可重用性的角度来考虑。如果在做验证平台时不考虑可重用性,那么agent其实可有可无。与uvm_component相比,uvm_agent的...
agent还有一个连接到monitor的analysis port 的analysis port ,用户不需要知道agent的内部结构,便可以将外部分析组件连接到agent。agent是testbench上最低级的层次结构块,其确切结构取决于其配置,每个agent的配置(config object)可能因test而异。这些类和接口共同构成一个可移植可重用的agent。 这也就是说agent是与DUT的...
uvm_config_db#(xxx_configuration)::get(this, "", "AGENT_CONFIG", xxx_config); ... //Place this agents sequencer in the uvm_config_db using the interface identifier uvm_config_db#(uvm_sequencer #(xxx_transaction))::set(null, "SEQUENCERS", xxx_config.interface_name, xxx_sequencer); ...
agent的存在是为了验证环境的复用。按照总线的传输方向划分可以分为master和slave,master agent是用来向DUT发起transaction的,slave agent是用来响应DUT的events的。 在my_agent中声明了build_phase和connect_phase,在外部定义。is_active的配置可以通过外部使用config_db的方式配置。 scoreboard uvm_scoreboard承担的功能就是...
uvm_agent:所有的agent要派生自uvm_agent。与前面几个比起来,uvm_agent的作用并不是那么明显。它只是把driver和monitor封装在一起,根据参数值来决定是只实例化monitor还是要同时实例化driver和monitor。 uvm_env:所有的env(environment的缩写)要派生自uvm_env。env将验证平台上用到的固定不变的component都封装在一起...
uvm_agent:所有的agent要派生自uvm_agent。与前面几个比起来,uvm_agent的作用并不是那么明显,它只是把driver和monitor封装在一起,根据参数值来确定只是例化monitor还是要例化driver和monitor,这个主要从可重用性的角度来考虑。 uvm_env:所有的env要派生自uvm_env。env是environment的缩写,env把验证平台上用到的固定不...
一个基本的 uvm 验证环境结构如下图所示,包含两个 agent,其中 in_agent 用于驱动 DUT ,同时将驱动数据同时传递给 reference model, out_agent 用于按照协议采集 DUT 的输出数据,并将数据传递给 scoreboard,在 scoreboard 收集到 reference model 的运算结果后,再进行比对验证。
uvm_config_db#(int)::set(this,”env.agent.driver”,”pre_num_max”,100); 在enc的set语句如下: uvm_config_db#(int)::set(this,”agent.driver”,”pre_num_max”,99); 那么driver中get到的值是100还是99呢?答案是100.UVM规定层次越高,那么他set的优先级越高。在整个UVM树中,uvm_test_top的位...
# uvm_test_top.env.d_agent.drv_h reads:1@0.000ns writes:0@0.000ns 它会把TB driver上config_db操作的字符串匹配、数据类型和数据值都打印出来,另外,由于我们指定audit为1,因此也会把config_db操作的时间、次数和操作者路径打印出来了。这个一个很强大的debug功能。
uvm_config_db#(int)::set(this,”env.agent.driver”,”pre_num_max”,100); 那么在driver的build_phase中要这样做: uvm_config_db#(int)::get(this,””,”pre_num_max”,pre_num_max); 这样,设置的pre_num_max的数值100就会传递给driver的pre_num_max。