一个基本的 uvm 验证环境结构如下图所示,包含两个 agent,其中 in_agent 用于驱动 DUT ,同时将驱动数据同时传递给 reference model, out_agent 用于按照协议采集 DUT 的输出数据,并将数据传递给 scoreboard,在 scoreboard 收集到 reference model 的运算结果后,再进行比对验证。 要想实现 monito uvm...
agent包括一个封装了相应的一组接口信号的interface,monitor和driver的BFM,以及一个package,其中包含组成整个agent组件的各种类。agent本身是一个包含sequencer、driver和monitor的容器,也包含其他相关的验证组件,比如functional coverage collector 以及scoreboard(一般不会放置在agent内)。代理只是提供与“普通”类的对象相同AP...
通过reg_master_agent对寄存器进行配置从而达到对三个chnl的配置,然后reg_slv_agent通过slave_if将变化后的chnl_slv的chnl_en信号,arbiter的priority信号,formatter的data_length信号监测回来传到scoreboard中。reg_master_agent写的数据也送到scoreboard中,这部分数据通过数组存放在scoreboard中,然后在scoreboard中将这两部分...
参数agent_is_active可以设置为UVM_ACTIVE或UVM_PASSIVE。默认值为 UVM_ACTIVE。将 agent_is_active 标志设置为 UVM_PASSIVE 就是通过配置顶层验证环境来实现的。 Filename clkndata.tpl ... agent_is_active = UVM_PASSIVE ... Filename top_tb.sv module top_tb; ... top_config env_config; initial be...
agents/ : agent文件目录,内含一个或多个agent,agent包含driver、sequencer、monitor组件,agent从行为上可以理解为与dut交互的模块或组织。 coverage/ : coverage文件目录,内含一个或多个模块的覆盖率文件,也就是covergroup。 checker/ : checker文件目录,也就是reference model和scoreboard文件,不过有时候会将两者融合成...
无论UVM Agent 是 ACTIVE 还是 PASSIVE,两者都需要存在 Monitor。Monitor 的主要工作是接收引脚级接口信号,并根据其他控制信号(如“valid_txn” 或任何其他信号)将引脚级信号转换为交易对象。因此,一旦 Reset 信号被置位,Monitor 就应该禁用从 Interface 收集数据的过程。
(7)agent类:继承于uvm_agent,创建i_agent和o_agent,前者用来封装driver和monitor_before,后者用来封装monitor_after,声明并例化sequencer、driver、monitor,利用端口将它们连接起来。 (8)reference_model:继承于uvm_component,将外部C_Model通过DPI调入,并将数据存储,用来与monitor监测到的DUT的输出做比较。 设计FM0编码...
sequence配置最常见的用例是为agent及其组成组件(sequencer、driver、monitor……)获取agent的配置对象集。 classsub_envextendsuvm_env;...functionvoidbuild_phase(uvm_phasephase);...my_bus_configagent1_config;...uvm_config_db#(my_bus_config)::set(this,"agent1*","my_bus_config",agent1_config);....
这些组件也被称为UVC(通用验证组件)。在uvm_agent中,有两种类型的uvm_component与虚接口交互。driver负责testbench的激励部分,将sequence_item中包含的信息转换为接口活动,包括通过虚接口句柄驱动和采样信号值。monitor负责testbench的被动端,通过虚接口句柄来采样接口信号,以创建表示接口事件的sequence_item。
uvm_monitor负责观察DUT接口上的信号级行为,并将其转换为sequence items,并将这些sequence items提供给agent或testbench上其他地方(如coverage collectors或scoreboard)中的analysis组件。UVM agent还有一个config object,该对象允许test编写人员在组装和执行testbench时配置agent。