| |
可以将UVM代理视为特定逻辑接口的验证组件工具包。agent被发展为一个package,其中包括用于连接到DUT信号引脚的SystemVerilog接口,以及包含构成整个agent组件的类的SystemVerilog package。agent类本身是driver、sequencer和monitor的顶层包含类,以及也是功能覆盖monitor或记分板等任何其他验证组件的顶层包含类。该agent还具有一个analysis port,该port连接到monitor上的analysis port,使用户可以将外部分析组件连接到agent,而无需了解agent的实现方式。agent是测试平台中最低层级的分层块,其确切结构取决于其配置,该配置可以通过agent配置对象在一个test之间变化。
【此处需一幅图】
为了说明agent的设计和实现,我们将采用APB总线agent并展示它是如何打包,配置,构建和连接的。APB agent使用一个名为apb_if的接口,此接口将存储在名为apb_if.sv的文件中。agent的各种类模板文件一起收集在SystemVerilog包中,该包保存在名为apb_agent_pkg.sv的文件中。使用此package中的文件的任何组件(如env)都将导入此package。
package apb_agent_pkg;
import uvm_pkg::*;
`include "uvm_macros.svh"
`include "apb_seq_item.svh"
`include "apb_agent_config.svh"
`include "apb_driver.svh"
`include "apb_coverage_monitor.svh"
`include "apb_monitor.svh"
`include "apb_sequencer.svh"
`include "apb_agent.svh"
// Utility Sequences
`include "apb_seq.svh"
endpackage: apb_agent_pkg