Code Browser Pages:
Files in
rvm_eth.tar



call_back.vr
cfg_intf.vr
cfg_xtor.vr
chan.vr
cov.vr
defines.vr
env.vr
host_driver.vr
host_intf.vr
host_xtor_rx.vr
host_xtor.vr
phy_driver.vr
phy_intf.vr
phy_xtor_rx.vr
Current file: phy_xtor.vr
pkt.vr
pro.vr
run
rx_pkt.vr
sb.vr
timescale.v
top.v



#include <rvm_std_lib.vrh>

#ifndef PHY_XTOR_CLASS
#define PHY_XTOR_CLASS


class phy_xtor_tx extends rvm_xactor{
phy_driver drvr;
packet_channel chan_mon2sb;
task new(string name,phy_driver drvr,packet_channel chan_mon2sb);
task main_t();
}


task phy_xtor_tx::new(string name,phy_driver drvr,packet_channel chan_mon2sb){
super.new("PHY_XTOR",name);
log = new("PHY_XTOR",name);
if(drvr == null)
{ rvm_note(log,psprintf("drvr is null"));
  exit(0);
}
this.drvr = drvr;
this.chan_mon2sb = chan_mon2sb;
}

task phy_xtor_tx::main_t(){
bit [7:0] data[*];
integer i;
packet p;
super.main_t();
fork
while(1){
drvr.posedge_clk();
if(drvr.read_Tx_en())
{
  data = new[data.size() + 1] (data);
  data[data.size() - 1] = drvr.read_Txd();
}
}
join none
fork
while(1)
{
@(negedge phy_intf.Tx_en);
p = new();
void = p.byte_unpack(data);
rvm_trace(this.log, "Recieved transaction...");
rvm_debug(this.log, p.psdisplay("   "));
rvm_OO_callback(data_callback,pre_cb(p));
chan_mon2sb.sneak(p);
data.delete();
}
join none

}




#endif