You are on page 1of 3

dd--asdgrdgffdg

extern virtual task set_speed(eth802_3_speed_e speed); // sets ethernet


speed for agent
extedfset_sideband_signals(eth802_3_speed_e an_speed = SPEED_1GBIT, bit
an_link_ok = 1'b0, bit an_full_duplex = 1'b0, logic [3:0] carrier_data = 4'b0,
set_error = 0'b0); // Set sideband signals
gdf02_3_agent
ginput string name, uvm_component parent);
super.new(name, parent);
ap_rx = new("m_analysids_port_rx", this);
ap_tx = new("m_analysis_port_tx", this);
pcap_log_enable = 0;
endfunction: newdase(uvm_pashase phase);
super.buildsasth802_3_ifc)::get(this, "", "vif", this.ifc))
`uvm_fatal("NOVIF",{"virtual indrface must be set for:
",get_full_name(),".vif"});
as, "", "eth802_3_agent_cfg", m_eth_ag_cfg))
`uvm_fatal("NOCONFIG", $ssabegindte("m_gmii_driver", this);
m_sequencer = eth802_3_dsequencer::type_id::create("m_sequencer", this);

// monitor and coverage module that process gRX transactions


if (m_eth_ag_cfg.eth_mode == STANDARD_GMII ) m_gmii_monitor_rx =
eth802_3_gmii_monitor ::type_id::create("m_gmii_monitor_rx", this);
else if (m_eth_ag_cfg.eth_modegfd
m_coverage_rx = eth802_3_coverage::type_id::create("m_coverage_rx", dasdas
// monitor d;
dgh802_3_rgmii_monitor ::type_id::create("m_rgmii_monitor_tx", this);
else if (m_eth_ag_cfg.eth_modeaUnrecognized monitor ethernet mode")

if (m_eth_ag_cfg.has_coverage)gcoverage_tx", this);
dgd

//---------------------sagent::connect_phase(uvm_padsase phase);
if (m_eth_ag_cfg.is_active) begin
// driver and seddquencer
m_gmii_driver.ifcas = m_eth_ag_cfg;
m_gmii_driver.m_asdrage module that process RX transactions
m_gmii_monitor_rdsx.ifc = this.ifc;
m_gmii_monitor_rx.ap.connect(ap_rx);
ds
if (m_eth_ag_cfg.has_cosadrage_rx.coverage_transaction_rx_imp);
m_cfg = m_eth_ag_cfg;
end
d
// monitor and coverage module that process TX transactions
m_gmii_monitor_tx.ifc = this.ifc;
m_gmii_monitor_tx.ap.connect(ap_tx);as
if (m_eth_ag_cfg.has_coveraasge)
ap_tx.connect(m_coverage_tx.coverage_transaction_tx_imp);
d
m_gmii_monitor_tx.m_cfg = m_eth_ag_cfg;
endfunction:
connect_phaseassds----------------------------------------------------------
task eth802_3_agent::set_speed(eth802_3_speed_e speed);
string msg_id;
string speed_str = speed.name();dsd
$sformat(msg_id, "%s::set_speed()", get_name());

m_gmii_monitor_tx.m_cfg.speed = speed;
m_gmii_monitor_rx.m_cfg.speed = speed;
m_gmii_driver.m_cfg.speed = speed;
m_gmii_driver.set_speed(speed);

uvm_report_info(msg_id, $sformatf("Speed was set to %s.", speed_str));


endtask: set_speed

//---------------------------------------------------------------------------------
------------------------------------
task eth802_3_agent::set_gmii_mode(eth_gmii_mode_e gmii_mode);
string msg_id;
string gmii_mode_str = gmii_mode.name();
$sformat(msg_id, "%s::set_speed()", get_name());

m_gmii_monitor_tx.m_cfg.gmii_mode = gmii_mode;
m_gmii_monitor_rx.m_cfg.gmii_mode = gmii_mode;
m_gmii_driver.m_cfg.gmii_mode = gmii_mode;
m_gmii_driver.set_gmii_mode(gmii_mode);

uvm_report_info(msg_id, $sformatf("GMII mode was set to %s.", gmii_mode_str));


endtask: set_gmii_mode

//---------------------------------------------------------------------------------
------------------------------------
task eth802_3_agent::enable_monitor(eth802_3_monitor_type_e mon_typ, bit enable);
string msg_id;
string enable_str = "ENABLED";
string mon_typ_str = "RX";

$sformat(msg_id, "%s::enable_monitor()", get_name());

if (!enable) begin
enable_str = "DISABLED";
end

if (mon_typ == RX_MONITOR) begin


ifc.EN_MON_RXCLK_EN = enable;
end else begin
ifc.EN_MON_TXCLK_EN = enable;
mon_typ_str = "TX";
end

uvm_report_info(msg_id, $sformatf("%s monitor is %s.", mon_typ_str,


enable_str));
endtask: enable_monitor

//---------------------------------------------------------------------------------
------------------------------------
function void eth802_3_agent::enableMonitorRX();
//m_gmii_monitor_tx.monitor_en = 1'b1;
m_gmii_monitor_rx.monitor_en = 1'b1;
endfunction : enableMonitorRX

//---------------------------------------------------------------------------------
------------------------------------
function void eth802_3_agent::disableMonitorRX();
//m_gmii_monitor_tx.monitor_en = 1'b0;
m_gmii_monitor_rx.monitor_en = 1'b0;
endfunction : disableMonitorRX
//---------------------------------------------------------------------------------
------------------------------------
task eth802_3_agent::set_ifg(int ifg, string msg_id = "");
m_gmii_driver.set_ifg(ifg);
`uvm_info(msg_id, $sformatf("%s : IFG was set to %d", get_name(), ifg),
UVM_LOW);
endtask: set_ifg

//---------------------------------------------------------------------------------
------------------------------------
task eth802_3_agent::send_frame(eth802_3_frame tr);
m_sequencer.inject_transaction(tr);
endtask: send_frame

//---------------------------------------------------------------------------------
------------------------------------
task eth802_3_agent::set_sideband_signals(eth802_3_speed_e an_speed = SPEED_1GBIT,
bit an_link_ok = 1'b0, bit an_full_duplex = 1'b0, logic [3:0] carrier_data = 4'b0,
set_error = 0'b0);
if(m_eth_ag_cfg.eth_mode == STANDARD_RGMII ) begin
set_speed(an_speed);
m_gmii_driver.set_sideband_signals_idle(an_speed, an_link_ok, an_full_duplex,
carrier_data, set_error);
end else begin
`uvm_fatal(get_type_name(), $sformatf("Sideband signals can only be set in
STANDARD_RGMII mode"));
end
endtask: set_sideband_signals

//---------------------------------------------------------------------------------
------------------------------------

You might also like