blob: 9cf5d4cdeb5c8310bb3de9d0cde253e5fc93ed62 [file] [log] [blame]
//
// -------------------------------------------------------------
// Copyright 2004-2011 Synopsys, Inc.
// Copyright 2010-2011 Mentor Graphics Corporation
// All Rights Reserved Worldwide
//
// Licensed under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in
// writing, software distributed under the License is
// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See
// the License for the specific language governing
// permissions and limitations under the License.
// -------------------------------------------------------------
//
`ifndef APB_AGENT__SV
`define APB_AGENT__SV
typedef class apb_agent;
class apb_agent extends uvm_agent;
apb_sequencer sqr;
apb_master drv;
apb_monitor mon;
apb_vif vif;
`uvm_component_utils_begin(apb_agent)
`uvm_field_object(sqr, UVM_ALL_ON)
`uvm_field_object(drv, UVM_ALL_ON)
`uvm_field_object(mon, UVM_ALL_ON)
`uvm_component_utils_end
function new(string name, uvm_component parent = null);
super.new(name, parent);
endfunction
virtual function void build_phase(uvm_phase phase);
sqr = apb_sequencer::type_id::create("sqr", this);
drv = apb_master::type_id::create("drv", this);
mon = apb_monitor::type_id::create("mon", this);
if (!uvm_config_db#(apb_vif)::get(this, "", "vif", vif)) begin
`uvm_fatal("APB/AGT/NOVIF", "No virtual interface specified for this agent instance")
end
endfunction: build_phase
virtual function void connect_phase(uvm_phase phase);
drv.seq_item_port.connect(sqr.seq_item_export);
endfunction
endclass: apb_agent
`endif