Code Browser Pages:
Files in
vmm_record_playback.tar



README.txt
Current file: record_playback.sv



////////////////////////////////////////////////
////s~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~s////
////s                                      s////
////s             VMM Tutorial             s////
////s                                      s////
////s           gopi@testbench.in          s////
////s~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~s////
////////////////////////////////////////////////

`include "vmm.sv"


////////////////////////////////////////////////////////
////           Transaction implemntation           /////
////////////////////////////////////////////////////////

class trans extends vmm_data;
  typedef enum bit {BAD_FCS=1'b0, GOOD_FCS=1'b1} kind_e;

  rand bit [47:0] DA;
  rand bit [47:0] SA;
  rand int        length;
  rand kind_e     kind;

  `vmm_data_member_begin(trans)
     `vmm_data_member_scalar(DA, DO_ALL)
     `vmm_data_member_scalar(SA, DO_ALL)
     `vmm_data_member_scalar(length, DO_ALL)
     `vmm_data_member_enum(kind, DO_ALL)
  `vmm_data_member_end(trans)
endclass


// for declaring trans_channel
`vmm_channel(trans)

// for declaring trans_atomic_gen
`vmm_atomic_gen(trans, "Gen")



////////////////////////////////////////////////////////
////    Record/Playback demo example             ///////
////////////////////////////////////////////////////////

program main();
trans tr;
trans_atomic_gen gen = new("Atomic Gen",1);
bit success;

// This is the producer logic.
// Transactions are produced from Atomic generator in RECORD mode.
// Transactions are produced from recorded file in PLAYBACK mode.

 initial
     begin

        if($test$plusargs("RECORD"))
        begin
            $display(" RECORDING started ");
            gen.stop_after_n_insts = 3;
            gen.start_xactor();
            gen.out_chan.record("Trans_recordes.tr");
        end
        else  if($test$plusargs("PLAYBACK"))
        begin
            $display(" PLAYBACK started ");
            tr = new();
            gen.out_chan.playback(success,"Trans_recordes.tr",tr);
            if(!success)
                  $display(" Failed to playback Trans_recordes.tr");
        end
        else
            $display(" give +RECORD or +PLAYBACK with simulation command");
     end

// This is consumer logic.
 initial
     repeat(3)
     begin
        #10;
        gen.out_chan.get(tr);
        tr.display();
     end

endprogram