Code Browser Pages:
Files in
vmm_eth.tar



call_back.sv
cfg_intf.sv
cfg_xtor.sv
chan.sv
cov.sv
env.sv
file_list
host_driver.sv
host_intf.sv
host_xtor_rx.sv
host_xtor.sv
phy_driver.sv
phy_intf.sv
phy_xtor_rx.sv
Current file: phy_xtor.sv
pkt_generator_rx.sv
pkt_generator.sv
pkt.sv
pro.sv
run
rx_pkt.sv
sb.sv
tb_top.v
timescale.v
top.sv
verilog_top.v



// by gopi@testbench.in
`include "vmm.sv"

`ifndef PHY_TXXTOR_CLASS
`define PHY_TXXTOR_CLASS


class phy_xtor_tx extends vmm_xactor ;

  phy_driver drvr;
  packet_channel chan_mon2sb;

  extern function new(string name,phy_driver drvr,packet_channel chan_mon2sb);
  extern task main();

endclass


function 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)
  `vmm_fatal(log,$psprintf("drvr is null"));
  this.drvr = drvr;
  this.chan_mon2sb = chan_mon2sb;
endfunction

task phy_xtor_tx::main();
  logic [7:0] data[];
  integer i;
  packet p;

  fork
    super.main();
  join_none

  fork
    forever
      begin
        drvr.posedge_clk();
        if(drvr.read_Tx_en())
          begin
            data = new[data.size() + 1] (data);
            data[data.size() - 1] = drvr.read_Txd();
          end
      end
  join_none

 fork
    forever
      begin
        @(negedge phy_intf.Tx_en);
        p = new();
        void'(p.byte_unpack(data));
        `vmm_trace(this.log, "Recieved transaction...");
        `vmm_debug(this.log, p.psdisplay("   "));
        `vmm_callback(data_callback,pre_call(p));
        chan_mon2sb.sneak(p);
        data.delete();
      end
  join_none
endtask



`endif