VMM OpenSource - Macro Reference

Macros defined for VMM OpenSource:

F  R  V


F


R

__FILE__ 

V

__LINE__ 
foreach_vmm_xactor 
RVM_RAL__SV 
RVM_RAL_VERSION__SV 
RVM_RW__SV 
VMM__SV 
VMM_AA_INT 
vmm_atomic_gen 
vmm_atomic_gen_ 
vmm_atomic_gen_callbacks_ 
vmm_atomic_gen_using 
vmm_atomic_scenario_ 
vmm_callback 
VMM_CHANNEL 
vmm_channel 
vmm_channel_ 
VMM_CHANNEL_BASE_METHODS 
vmm_command 
VMM_CONSENSUS 
VMM_CONSENSUS__SV 
VMM_CONSENSUS_BASE_METHODS 
vmm_cycle 
VMM_DATA 
VMM_DATA_BASE_METHODS 
VMM_DATA_BASE_NEW_ARGS 
VMM_DATA_BASE_NEW_EXTERN_ARGS 
vmm_data_byte_size 
vmm_data_member_begin 
vmm_data_member_end 
vmm_data_member_enum 
vmm_data_member_enum_aa_scalar 
vmm_data_member_enum_aa_string 
vmm_data_member_enum_array 
vmm_data_member_enum_da 
vmm_data_member_enum_set_name 
vmm_data_member_handle 
vmm_data_member_handle_aa_scalar 
vmm_data_member_handle_aa_string 
vmm_data_member_handle_array 
vmm_data_member_handle_da 
vmm_data_member_scalar 
vmm_data_member_scalar_aa_scalar 
vmm_data_member_scalar_aa_string 
vmm_data_member_scalar_array 
vmm_data_member_scalar_count 
vmm_data_member_scalar_da 
vmm_data_member_scalar_pack 
vmm_data_member_scalar_packint 
vmm_data_member_scalar_unpack 
vmm_data_member_scalar_unpackint 
vmm_data_member_string 
vmm_data_member_string_aa_scalar 
vmm_data_member_string_aa_string 
vmm_data_member_string_array 
vmm_data_member_string_da 
vmm_data_member_update_offset 
vmm_data_member_user_defined 
vmm_data_member_vmm_data 
vmm_data_member_vmm_data_aa_scalar 
vmm_data_member_vmm_data_aa_string 
vmm_data_member_vmm_data_array 
vmm_data_member_vmm_data_da 
VMM_DATA_NEW_ARGS 
VMM_DATA_NEW_CALL 
VMM_DATA_NEW_EXTERN_ARGS 
vmm_debug 
vmm_delQ 
VMM_DOSFILE_CHECK 
VMM_DPI_ 
VMM_ENV 
VMM_ENV_BASE_METHODS 
VMM_ENV_BASE_NEW_ARGS 
VMM_ENV_BASE_NEW_EXTERN_ARGS 
VMM_ENV_NEW_ARGS 
VMM_ENV_NEW_CALL 
VMM_ENV_NEW_EXTERN_ARGS 
vmm_error 
vmm_fatal 
VMM_HW__SV 
VMM_HW_ARCH 
VMM_HW_ARCH_NULL__SV 
VMM_HW_DATA_WIDTH 
VMM_HW_INCL_DUT 
VMM_HW_RTL__SV 
VMM_HW_VERSION__SV 
VMM_HW_XACTOR__SV 
vmm_inject_item_scenario_ 
VMM_LOG 
VMM_LOG_BASE_METHODS 
VMM_MACRO_DEFINED 
VMM_MACRO_TO_STRING 
VMM_MAM__SV 
vmm_note 
VMM_NOTIFY 
VMM_NOTIFY_BASE_METHODS 
VMM_OBJECT_SET_PARENT 
VMM_PERF__SV 
VMM_PERF_ANALYZER__SV 
VMM_PERF_TENURE__SV 
VMM_PERF_VERSION__SV 
vmm_protocol 
VMM_RAL_ADDR_WIDTH 
VMM_RAL_DATA_WIDTH 
vmm_report 
VMM_RW_ADDR_WIDTH 
VMM_RW_DATA_WIDTH 
VMM_SB__SV 
VMM_SB_DS_SV 
VMM_SB_VERSION__SV 
VMM_SCENARIO 
vmm_scenario_ 
VMM_SCENARIO_BASE 
VMM_SCENARIO_BASE_METHODS 
VMM_SCENARIO_BASE_NEW_ARGS 
VMM_SCENARIO_BASE_NEW_CALL 
VMM_SCENARIO_BASE_NEW_EXTERN_ARGS 
vmm_scenario_election_ 
vmm_scenario_election_valid_ 
vmm_scenario_gen 
vmm_scenario_gen_ 
vmm_scenario_gen_callbacks_ 
vmm_scenario_gen_using 
VMM_SCENARIO_NEW_ARGS 
VMM_SCENARIO_NEW_CALL 
VMM_SCENARIO_NEW_EXTERN_ARGS 
vmm_scenario_valid_ 
vmm_sformatf 
VMM_SOLVE_BEFORE_OPT 
VMM_SQL__SV 
VMM_SQL_DB__SV 
VMM_SQL_DB_ASCII__SV 
VMM_SQL_DB_SQLITE__SV 
VMM_SQLITE_NUM_TRANS_TO_COMMIT 
VMM_STATIC_M 
vmm_str_backref 
vmm_str_match 
vmm_str_postmatch 
vmm_str_prematch 
VMM_SUBENV 
VMM_SUBENV_BASE_METHODS 
VMM_SUBENV_BASE_NEW_ARGS 
VMM_SUBENV_BASE_NEW_EXTERN_ARGS 
vmm_subenv_member_begin 
vmm_subenv_member_channel 
vmm_subenv_member_channel_aa_scalar 
vmm_subenv_member_channel_aa_string 
vmm_subenv_member_channel_array 
vmm_subenv_member_end 
vmm_subenv_member_enum 
vmm_subenv_member_enum_aa_scalar 
vmm_subenv_member_enum_aa_string 
vmm_subenv_member_enum_array 
vmm_subenv_member_scalar 
vmm_subenv_member_scalar_aa_scalar 
vmm_subenv_member_scalar_aa_string 
vmm_subenv_member_scalar_array 
vmm_subenv_member_string 
vmm_subenv_member_string_aa_scalar 
vmm_subenv_member_string_aa_string 
vmm_subenv_member_string_array 
vmm_subenv_member_subenv 
vmm_subenv_member_subenv_aa_scalar 
vmm_subenv_member_subenv_aa_string 
vmm_subenv_member_subenv_array 
vmm_subenv_member_user_defined 
vmm_subenv_member_vmm_data 
vmm_subenv_member_vmm_data_aa_scalar 
vmm_subenv_member_vmm_data_aa_string 
vmm_subenv_member_vmm_data_array 
vmm_subenv_member_xactor 
vmm_subenv_member_xactor_aa_scalar 
vmm_subenv_member_xactor_aa_string 
vmm_subenv_member_xactor_array 
VMM_SUBENV_NEW_ARGS 
VMM_SUBENV_NEW_CALL 
VMM_SUBENV_NEW_EXTERN_ARGS 
vmm_test_begin 
vmm_test_end 
vmm_trace 
vmm_transaction 
vmm_user 
vmm_verbose 
VMM_VERSION__SV 
vmm_warning 
VMM_XACTOR 
VMM_XACTOR_BASE_METHODS 
VMM_XACTOR_BASE_NEW_ARGS 
VMM_XACTOR_BASE_NEW_EXTERN_ARGS 
vmm_xactor_member_begin 
vmm_xactor_member_channel 
vmm_xactor_member_channel_aa_scalar 
vmm_xactor_member_channel_aa_string 
vmm_xactor_member_channel_array 
vmm_xactor_member_end 
vmm_xactor_member_enum 
vmm_xactor_member_enum_aa_scalar 
vmm_xactor_member_enum_aa_string 
vmm_xactor_member_enum_array 
vmm_xactor_member_scalar 
vmm_xactor_member_scalar_aa_scalar 
vmm_xactor_member_scalar_aa_string 
vmm_xactor_member_scalar_array 
vmm_xactor_member_string 
vmm_xactor_member_string_aa_scalar 
vmm_xactor_member_string_aa_string 
vmm_xactor_member_string_array 
vmm_xactor_member_user_defined 
vmm_xactor_member_vmm_data 
vmm_xactor_member_vmm_data_aa_scalar 
vmm_xactor_member_vmm_data_aa_string 
vmm_xactor_member_vmm_data_array 
vmm_xactor_member_xactor 
vmm_xactor_member_xactor_aa_scalar 
vmm_xactor_member_xactor_aa_string 
vmm_xactor_member_xactor_array 
VMM_XACTOR_NEW_ARGS 
VMM_XACTOR_NEW_CALL 

F  R  V


Macro Definition Documentation

 `define __FILE__


`"`"

Defined at line 306 of file sv/std_lib/vmm.sv.

 `define __LINE__


-1

Defined at line 309 of file sv/std_lib/vmm.sv.

 `define foreach_vmm_xactor ( xactor, name, inst )



xactor xact;
   vmm_xactor_iter xactor_iter = new(name, inst);
   for (vmm_xactor _xact = xactor_iter.first();
        _xact != null;
        _xact = xactor_iter.next())
     if ($cast(xact, _xact))

Defined at line 480 of file sv/std_lib/vmm.sv.

 `define RVM_RAL__SV


Defined at line 23 of file sv/RAL/vmm_ral.sv.

 `define RVM_RAL_VERSION__SV


Defined at line 23 of file sv/RAL/vmm_ral_version.sv.

 `define RVM_RW__SV


Defined at line 24 of file sv/RAL/vmm_rw.sv.

 `define VMM__SV


Defined at line 637 of file sv/std_lib/vmm.sv.

 `define VMM_AA_INT


int

Defined at line 626 of file sv/std_lib/vmm.sv.

 `define vmm_atomic_gen ( class_name, text )



vmm_atomic_gen_using(class_name, class_name``_channel, text)

Defined at line 27 of file sv/std_lib/vmm_atomic_gen.sv.

 `define vmm_atomic_gen_ ( class )


class``_atomic_gen

Defined at line 23 of file sv/std_lib/vmm_atomic_gen.sv.

 `define vmm_atomic_gen_callbacks_ ( class )


class``_atomic_gen_callbacks

Defined at line 24 of file sv/std_lib/vmm_atomic_gen.sv.

 `define vmm_atomic_gen_using ( class_name, channel_name, text )




typedef class vmm_atomic_gen_(class_name);
class vmm_atomic_gen_callbacks_(class_name) extends vmm_xactor_callbacks;
   virtual task post_inst_gen(vmm_atomic_gen_(class_name) gen,
                              class_name obj,
                              ref bit drop);
   endtask
endclass
 
 
class vmm_atomic_gen_(class_name) extends VMM_XACTOR;
 
   int unsigned stop_after_n_insts;
 
   typedef enum int {GENERATED,
                     DONE} symbols_e;
 
 
   class_name randomized_obj;
 
   channel_name out_chan;
 
   local int scenario_count;
   local int obj_count;
 
   virtual function string psdisplay(string prefix = "");
      psdisplay = super.psdisplay(prefix);
      $sformat(psdisplay, "%s [stops after #insts %0d>%0d]",
               psdisplay, this.obj_count, this.stop_after_n_insts);
      $sformat(psdisplay, "%s\n%sOutChan: %s(%s) [level=%0d of %0d]",
               psdisplay, prefix, this.out_chan.log.get_name(),
               this.out_chan.log.get_instance(), this.out_chan.level(),
               this.out_chan.full_level());
      if (this.randomized_obj != null) begin
         prefix = {prefix, "Factory: "};
         psdisplay = {psdisplay, "\n",
                      this.randomized_obj.psdisplay(prefix)};
      end
      return psdisplay;
   endfunction: psdisplay
 
   function new(string inst,
                int stream_id = -1,
                channel_name out_chan = null VMM_XACTOR_NEW_ARGS);
      super.new({text, " Atomic Generator"}, inst, stream_id VMM_XACTOR_NEW_CALL);
 
      if (out_chan == null) begin
         out_chan = new({text, " Atomic Generator output channel"},
                         inst);
         VMM_OBJECT_SET_PARENT(out_chan, this)
      end
      this.out_chan = out_chan;
      this.out_chan.set_producer(this);
      this.log.is_above(this.out_chan.log);
 
      this.scenario_count = 0;
      this.obj_count = 0;
      this.stop_after_n_insts = 0;
 
      void'(this.notify.configure(GENERATED, vmm_notify::ONE_SHOT));
      void'(this.notify.configure(DONE, vmm_notify::ON_OFF));
 
      this.randomized_obj = new;
      VMM_OBJECT_SET_PARENT(this.randomized_obj, this)
   endfunction: new
 
   virtual task inject(class_name obj,
                       ref bit dropped);
      dropped = 0;
 
      vmm_callback(vmm_atomic_gen_callbacks_(class_name),
                    post_inst_gen(this, obj, dropped));
 
      if (!dropped) begin
         this.obj_count++;
         this.notify.indicate(GENERATED, obj);
         this.out_chan.put(obj);
      end
   endtask: inject
 
   virtual function void reset_xactor(vmm_xactor::reset_e rst_typ = SOFT_RST);
      super.reset_xactor(rst_typ);
 
      this.out_chan.flush();
      this.scenario_count = 0;
      this.obj_count = 0;
 
      if (rst_typ >= FIRM_RST) begin
         this.notify.reset( , vmm_notify::HARD);
      end
 
      if (rst_typ >= HARD_RST) begin
         this.stop_after_n_insts = 0;
         this.randomized_obj = new;
      end
   endfunction: reset_xactor
 
   virtual protected task main();
      bit dropped;
 
      fork
         super.main();
      join_none
 
      while (this.stop_after_n_insts <= 0 ||
             this.obj_count < this.stop_after_n_insts) begin
 
         this.wait_if_stopped();
 
         this.randomized_obj.stream_id = this.stream_id;
         this.randomized_obj.scenario_id = this.scenario_count;
         this.randomized_obj.data_id = this.obj_count;
 
         if (!this.randomized_obj.randomize()) begin
            vmm_fatal(this.log, "Cannot randomize atomic instance");
            continue;
         end
 
         begin
            class_name obj;
 
            $cast(obj, this.randomized_obj.copy());
            VMM_OBJECT_SET_PARENT(obj, this)
            this.inject(obj, dropped);
         end
      end
 
      this.notify.indicate(DONE);
      this.notify.indicate(XACTOR_STOPPED);
      this.notify.indicate(XACTOR_IDLE);
      this.notify.reset(XACTOR_BUSY);
      this.scenario_count++;
   endtask: main
 
endclass

Defined at line 30 of file sv/std_lib/vmm_atomic_gen.sv.

 `define vmm_atomic_scenario_ ( class )


class``_atomic_scenario

Defined at line 35 of file sv/std_lib/vmm_scenario_gen.sv.

 `define vmm_callback ( facade, call )




do foreach (this.callbacks[vmm_i]) begin
   facade cb;
   if (!$cast(cb, this.callbacks[vmm_i])) continue;
 
   cb.call;
end while (0)

Defined at line 470 of file sv/std_lib/vmm.sv.

 `define VMM_CHANNEL


vmm_channel

Defined at line 189 of file sv/std_lib/vmm.sv.

 `define vmm_channel ( T )



class vmm_channel_(T) extends vmm_channel;
 
   function new(string name,
                string inst,
                int full = 1,
                int empty = 0,
                bit fill_as_bytes = 0);
      super.new(name, inst, full, empty, fill_as_bytes);
   endfunction: new
 
   function T unput(int offset = -1);
      $cast(unput, super.unput(offset));
   endfunction: unput
 
   task get(output T obj, input int offset = 0);
      vmm_data o;
      super.get(o, offset);
      $cast(obj, o);
   endtask: get
 
   task peek(output T obj, input int offset = 0);
      vmm_data o;
      super.peek(o, offset);
      $cast(obj, o);
   endtask: peek
 
   task activate(output T obj, input int offset = 0);
      vmm_data o;
      super.activate(o, offset);
      $cast(obj, o);
   endtask: activate
 
   function T active_slot();
      $cast(active_slot, super.active_slot());
   endfunction: active_slot
 
   function T start();
      $cast(start, super.start());
   endfunction: start
 
   function T complete(vmm_data status = null);
      $cast(complete, super.complete(status));
   endfunction: complete
 
   function T remove();
      $cast(remove, super.remove());
   endfunction: remove
 
   task tee(output T obj);
      vmm_data o;
      super.tee(o);
      $cast(obj, o);
   endtask: tee
 
   function T for_each(bit reset = 0);
      $cast(for_each, super.for_each(reset));
   endfunction: for_each
 
endclass

Defined at line 511 of file sv/std_lib/vmm.sv.

 `define vmm_channel_ ( T )


T``_channel

Defined at line 509 of file sv/std_lib/vmm.sv.

 `define VMM_CHANNEL_BASE_METHODS


Defined at line 197 of file sv/std_lib/vmm.sv.

 `define vmm_command ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::COMMAND_TYP, , __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 412 of file sv/std_lib/vmm.sv.

 `define VMM_CONSENSUS


vmm_consensus

Defined at line 201 of file sv/std_lib/vmm.sv.

 `define VMM_CONSENSUS__SV


Defined at line 24 of file sv/std_lib/vmm_consensus.sv.

 `define VMM_CONSENSUS_BASE_METHODS


Defined at line 209 of file sv/std_lib/vmm.sv.

 `define vmm_cycle ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::CYCLE_TYP, , __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 442 of file sv/std_lib/vmm.sv.

 `define VMM_DATA


vmm_data

Defined at line 146 of file sv/std_lib/vmm.sv.

 `define VMM_DATA_BASE_METHODS


Defined at line 163 of file sv/std_lib/vmm.sv.

 `define VMM_DATA_BASE_NEW_ARGS


Defined at line 154 of file sv/std_lib/vmm.sv.

 `define VMM_DATA_BASE_NEW_EXTERN_ARGS


Defined at line 155 of file sv/std_lib/vmm.sv.

 `define vmm_data_byte_size ( _max, _n )



virtual protected function int unsigned __vmm_byte_size(int kind = -1);
      return this.byte_size(kind);
   endfunction: __vmm_byte_size
 
   virtual function int unsigned byte_size(int kind = -1);
      this.__vmm_done_user = 1;
      byte_size = this.do_byte_size(kind);
      if (this.__vmm_done_user) return byte_size;
 
      return _n;
   endfunction: byte_size
 
   virtual function int unsigned max_byte_size(int kind = -1);
      this.__vmm_done_user = 1;
      max_byte_size = this.do_max_byte_size(kind);
      if (this.__vmm_done_user) return max_byte_size;
 
      return _max;
   endfunction

Defined at line 2068 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_begin ( _class )




protected static _class __vmm_rhs;
 
   function void do_all(vmm_data::do_what_e do_what,
                        ref logic [7:0] pack[],
                        const ref logic [7:0] unpack[]);
      super.__vmm_rhs = this.__vmm_rhs;
      this.__vmm_status = 1;
      super.do_all(do_what, pack, unpack);
      if (super.__vmm_status == 0) return;

Defined at line 26 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_end ( _class )



endfunction
 
   static VMM_LOG log = new(`"_class`", `"class`");
 
   function new(vmm_log log = null);
      super.new((log == null) ? this.log : log);
   endfunction
 
   virtual function vmm_data allocate();
      _class i = new;
      return i;
   endfunction
 
   virtual function bit is_valid(bit silent = 1,
                                 int kind = -1);
      return 1;
   endfunction
 
   virtual function string psdisplay(string prefix = `"`");
      $sformat(this.__vmm_image, `"%s``_class (%0d.%0d.%0d):`", prefix,
               this.stream_id, this.scenario_id, this.data_id);
      this.__vmm_done_user = 1;
      psdisplay = this.do_psdisplay(prefix);
      if (this.__vmm_done_user) return psdisplay;
 
      this.__vmm_prefix = prefix;
      if (vmm_str_match(prefix, ": $")) begin
         this.__vmm_prefix = {vmm_str_prematch(prefix), "."};
      end
      this.do_all(DO_PRINT, __vmm_bytes, __vmm_bytes);
      return this.__vmm_image;
   endfunction
 
   virtual function vmm_data copy(vmm_data to = null);
      _class cpy;
 
      this.__vmm_done_user = 1;
      copy = this.do_copy(to);
      if (this.__vmm_done_user) return copy;
 
      if (to == null) cpy = new;
      else if (!$cast(cpy, to)) begin
         vmm_fatal(this.log, `"Cannot copy to non-_class instance`");
         return null;
      end
 
      super.copy_data(cpy);
      this.__vmm_rhs = cpy;
      this.do_all(DO_COPY, __vmm_bytes, __vmm_bytes);
 
      return cpy;
   endfunction
 
   virtual function bit compare( vmm_data to,
                                output string diff,
                                input int kind = -1);
      _class cp;
 
      this.__vmm_done_user = 1;
      compare = this.do_compare(to, diff, kind);
      if (this.__vmm_done_user) return compare;
 
      if (!$cast(cp, to)) begin
         vmm_fatal(this.log, `"Cannot compare to non-_class instance`");
         return 0;
      end
 
      this.__vmm_rhs = cp;
      this.__vmm_kind = kind;
      this.do_all(DO_COMPARE, __vmm_bytes, __vmm_bytes);
  diff = this.__vmm_image;
 
      return this.__vmm_status;
   endfunction
 
   virtual function int unsigned byte_pack(ref logic [7:0] bytes[],
                                           input int unsigned offset = 0,
                                           input int kind = -1);
      int min_size;
      this.__vmm_done_user = 1;
      byte_pack = this.do_byte_pack(bytes, offset, kind);
      if (this.__vmm_done_user) return byte_pack;
 
      min_size = offset + this.__vmm_byte_size(kind);
      if (bytes.size() < min_size) bytes = new [min_size] (bytes);
      this.__vmm_offset = offset;
      this.__vmm_kind = kind;
      this.do_all(DO_PACK, bytes, __vmm_bytes);
 
      return this.__vmm_offset - offset;
   endfunction
 
   virtual function int unsigned byte_unpack(const ref logic [7:0] bytes[],
                                             input int unsigned offset = 0,
                                             input int len = -1,
                                             input int kind = -1);
      this.__vmm_done_user = 1;
      byte_unpack = this.do_byte_unpack(bytes, offset, len, kind);
      if (this.__vmm_done_user) return byte_unpack;
 
      this.__vmm_offset = offset;
      this.__vmm_kind = kind;
      this.do_all(DO_UNPACK, __vmm_bytes, bytes);
 
      return this.__vmm_offset - offset;
   endfunction

Defined at line 1959 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_enum ( _name, _do )




case (do_what & _do)
       DO_PRINT: begin
          $sformat(this.__vmm_image, `"%s\n%s``_name=%s`", this.__vmm_image, this.__vmm_prefix, this._name.name());
       end
       DO_COPY: begin
          __vmm_rhs._name = this._name;
       end
        DO_COMPARE: begin
           if (__vmm_rhs._name !== this._name) begin
              $sformat(this.__vmm_image, `"this._name (%s) !== to._name (%s)`",
                       this._name.name(), __vmm_rhs._name.name());
              this.__vmm_status = 0;
              return;
           end
        end
        DO_PACK: begin
           int start;
           int count;
           string stemp;
           bit [31:0] size=0;
           start = this.__vmm_offset;
           stemp = this._name.name();
           count = (stemp.len());
           this.__vmm_maxbits = this._name.name();
    vmm_data_member_scalar_packint(pack,count,this.__vmm_offset,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
           vmm_data_member_update_offset(this.__vmm_offset,count)
           this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
    int count;
           int start;
           int size;
           int index;
           string stemp;
           start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
           vmm_data_member_update_offset(this.__vmm_offset,count)
           stemp = this.__vmm_maxbits;
    index = 0;
    vmm_data_member_enum_set_name(this._name,stemp,index)
        end
      endcase

Defined at line 787 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_enum_aa_scalar ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           int _count = 0;
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, this._name.num());
           foreach(this._name[i]) begin
              if (_count <= 2 || _count >= this._name.num()-2) begin
                 $sformat(this.__vmm_image, `"%s %0d: %s `", this.__vmm_image, i, this._name[i].name());
                 if (_count == 2 && this._name.num() > 5) begin
                    this.__vmm_image = {this.__vmm_image, `" ...`"};
                 end
              end
              _count++;
           end
           $sformat(this.__vmm_image, `"%s`", this.__vmm_image);
        end
        DO_COPY: begin
    __vmm_rhs._name.delete();
      foreach(this._name[i]) begin
  __vmm_rhs._name[i]=this._name[i];
      end
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.num() !== this._name.num()) begin
              $sformat(this.__vmm_image, `"this._name.size() (%0d) !== to._name.size() (%0d)`",
                       this._name.num(), __vmm_rhs._name.num());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
       if (!__vmm_rhs._name.exists(i)) begin
   $sformat(this.__vmm_image, `"this._name[%0d] exists but to._name[%0d] does not`",
     i, i);
   this.__vmm_status = 0;
   return;
       end
              else if (__vmm_rhs._name[i] != this._name[i]) begin
                $sformat(this.__vmm_image, `"this._name[%0d] (%s) !== to._name[%0d] (%s)`",
                         i, this._name[i].name, i, __vmm_rhs._name[i].name);
                this.__vmm_status = 0;
                return;
              end
           end
       end
       DO_PACK: begin
    int start;
    int count;
    int index;
    string stemp;
           bit [31:0] size=0;
           start = this.__vmm_offset;
      this.__vmm_maxbits = 0;
    size = this._name.num();
    vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           foreach (this._name[j]) begin
          this.__vmm_maxbits = 0;
               stemp = this._name[j].name();
               count = (stemp.len());
               this.__vmm_maxbits = this._name[j].name();
        index = j;
        vmm_data_member_scalar_packint(pack,index,this.__vmm_offset,0)
               vmm_data_member_update_offset(this.__vmm_offset,4)
        vmm_data_member_scalar_packint(pack,count,this.__vmm_offset,0)
               vmm_data_member_update_offset(this.__vmm_offset,4)
        vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
               vmm_data_member_update_offset(this.__vmm_offset,count)
    end
     this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
           int count;
           int start;
           int index=0;
           string stemp;
           bit [31:0] size = 0;
           start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           this.__vmm_maxbits =0;
           for (int j=0; j < size; j++) begin
               this.__vmm_maxbits =0;
                vmm_data_member_scalar_unpackint(unpack,index,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,count)
               stemp = this.__vmm_maxbits;
               count = 0;
        vmm_data_member_enum_set_name(this._name[index],stemp,count)
               this.__vmm_maxbits =`"`";
           end
        end
      endcase

Defined at line 991 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_enum_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
    int _count = 0;
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, this._name.num());
    foreach(this._name[i]) begin
       if (_count <= 2 || _count >= this._name.num()-2) begin
                $sformat(this.__vmm_image, `"%s ``%s':%s`", this.__vmm_image, i, this._name[i].name);
                if (_count == 2 && this._name.num() > 5) begin
                    this.__vmm_image = {this.__vmm_image, `" ...`"};
                end
              end
       _count++;
           end
        end
        DO_COPY: begin
    __vmm_rhs._name.delete();
    foreach (this._name[i]) begin
  __vmm_rhs._name[i] = this._name[i];
    end
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.num() !== this._name.num()) begin
              $sformat(this.__vmm_image, `"this._name.size() (%0d) !== to._name.size() (%0d)`",
                       this._name.num(), __vmm_rhs._name.num());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
              if (!__vmm_rhs._name.exists(i)) begin
                 $sformat(this.__vmm_image, `"this._name[``%s'] exists but to._name[``%s'] does not`",
                          i, i);
                 this.__vmm_status = 0;
                 return;
              end
              else if (__vmm_rhs._name[i] != this._name[i]) begin
                $sformat(this.__vmm_image, `"this._name[``%s'] (%s) !== to._name[``%s'] (%s)`",
                         i, this._name[i].name, i, __vmm_rhs._name[i].name);
                this.__vmm_status = 0;
                return;
              end
           end
        end
        DO_PACK: begin
    int start;
    int count;
    int index;
    string sindextemp;
    int sindexcount;
    string stemp;
    bit [31:0] size=0;
    start = this.__vmm_offset;
           stemp = this._name.first(sindextemp);
      index = 0;
    size = this._name.num();
           vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits = 0;
    foreach (this._name[j]) begin
         this.__vmm_maxbits =0;
         sindextemp = j;
         sindexcount = sindextemp.len();
         this.__vmm_maxbits = sindextemp;
                vmm_data_member_scalar_packint(pack,sindexcount,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,sindexcount,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,sindexcount)
                this.__vmm_maxbits =0;
                stemp = this._name[j].name();
                count = (stemp.len());
                vmm_data_member_scalar_packint(pack,count,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                this.__vmm_maxbits = this._name[j].name();
                vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,count)
    end
     this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
    int start;
    int count;
    int index;
    string sindextemp;
    int sindexcount;
    string stemp;
    bit [31:0] size=0;
      index = 0;
           start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits = 0;
    for (int j=0; j < size; j++) begin
         this.__vmm_maxbits = 0;
                vmm_data_member_scalar_unpackint(unpack,sindexcount,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,sindexcount,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,sindexcount)
         sindextemp = this.__vmm_maxbits;
         this.__vmm_maxbits = 0;
                vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,count)
                stemp = this.__vmm_maxbits;
                index = 0;
                vmm_data_member_enum_set_name(this._name[sindextemp],stemp,index)
                this.__vmm_maxbits =`"`";
    end
        end
      endcase

Defined at line 1090 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_enum_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           int size =0;
           size = $size(this._name);
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, size);
           for (int i = 0; i < size; i++) begin
              $sformat(this.__vmm_image, `"%s %s`", this.__vmm_image, this._name[i].name());
              if (i == 2 && size > 5) begin
                 this.__vmm_image = {this.__vmm_image, `" ...`"};
                 i = size - 3;
              end
           end
        end
        DO_COPY: begin
               __vmm_rhs._name = this._name;
        end
        DO_COMPARE: begin
           foreach (this._name[i]) begin
              if (__vmm_rhs._name[i] !== this._name[i]) begin
                 $sformat(this.__vmm_image, `"this._name[%0d] (%s) !== to._name[%0d] (%s)`",
                          i, this._name[i].name(), i, __vmm_rhs._name[i].name());
                 this.__vmm_status = 0;
                 return;
              end
           end
        end
        DO_PACK: begin
           int start;
           int count;
           string stemp;
           bit [31:0] size=0;
           start = this.__vmm_offset;
           vmm_data_member_update_offset(this.__vmm_offset,4)
           this.__vmm_maxbits = 0;
           foreach (this._name[j]) begin
               stemp = this._name[j].name();
               count = (stemp.len());
               this.__vmm_maxbits = this._name[j].name();
               vmm_data_member_scalar_packint(pack,count,this.__vmm_offset,0)
               vmm_data_member_update_offset(this.__vmm_offset,4)
               vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
               vmm_data_member_update_offset(this.__vmm_offset,count)
              size++;
           end
           vmm_data_member_scalar_packint(pack,size,start,0)
           this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
           int count;
           int start;
           int index;
           string stemp;
           bit [31:0] size = 0;
           start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           this.__vmm_maxbits =0;
           for (int j=0; j < size; j++) begin
                vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,count)
                stemp = this.__vmm_maxbits;
                index = 0;
                vmm_data_member_enum_set_name(this._name[j],stemp,index)
                this.__vmm_maxbits =`"`";
     end
        end
      endcase

Defined at line 837 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_enum_da ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
          $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, this._name.size());
           for (int i = 0; i < this._name.size(); i++) begin
              $sformat(this.__vmm_image, `"%s %s`", this.__vmm_image, this._name[i].name());
              if (i == 2 && this._name.size() > 5) begin
                 this.__vmm_image = {this.__vmm_image, `" ...`"};
                 i = this._name.size() - 3;
              end
           end
        end
        DO_COPY: begin
  __vmm_rhs._name = new [this._name.size()];
            foreach(this._name[i]) __vmm_rhs._name[i] = this._name[i];
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.size() !== this._name.size()) begin
              $sformat(this.__vmm_image, `"this._name.size() (%0d) !== to._name.size() (%0d)`",
                       this._name.size(), __vmm_rhs._name.size());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
              if (__vmm_rhs._name[i] !== this._name[i]) begin
                 $sformat(this.__vmm_image, `"this._name[%0d] (%s) !== to._name[%0d] (%s)`",
                          i, this._name[i].name(), i, __vmm_rhs._name[i].name());
                 this.__vmm_status = 0;
                 return;
              end
           end
        end
        DO_PACK: begin
           int start;
           int count;
           int index;
           int element;
           string stemp;
           bit [31:0] size=0;
           start = this.__vmm_offset;
    size = this._name.size();
    vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits = 0;
           foreach (this._name[j]) begin
               stemp = this._name[j].name();
               count = (stemp.len());
               this.__vmm_maxbits = this._name[j].name();
        vmm_data_member_scalar_packint(pack,count,this.__vmm_offset,0)
               vmm_data_member_update_offset(this.__vmm_offset,4)
        vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
               vmm_data_member_update_offset(this.__vmm_offset,count)
           end
           this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
           int count;
           int index;
           int start;
           string stemp;
           bit [31:0] size = 0;
           start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           this._name = new [size];
           this.__vmm_maxbits =0;
           for (int j=0; j < size; j++) begin
                this.__vmm_maxbits =`"`";
                vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,count)
                stemp = this.__vmm_maxbits;
                index = 0;
         vmm_data_member_enum_set_name(this._name[j],stemp,index)
                this.__vmm_maxbits =`"`";
           end
        end
      endcase

Defined at line 909 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_enum_set_name ( __name, __stemp, __index )




if ( __stemp == __name.name()) begin
                   __name = __name;
                   __index =0;
          end
   else begin
              while ( __stemp != __name.name()) begin
                   __name = __name.next();
                   if ( __index > __name.num() )
                       break;
                   __index++;
               end
           end

Defined at line 72 of file sv/std_lib/vmm_data_macros_utils.sv.

 `define vmm_data_member_handle ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           if ( _name == null ) begin
                vmm_warning(this.log, `" vmm_data _name object does not exist, no action`");
           end
           else begin
       string _prefix = this.__vmm_prefix;
              $sformat(this.__vmm_image, `"%s\n%s``_name is %s`", this.__vmm_image, this.__vmm_prefix,
                   (this._name == null) ? `"null`" : `"`");
       this.__vmm_prefix = _prefix;
    end
        end
        DO_COPY: begin
           if ( _name == null ) begin
              vmm_warning(this.log, `" vmm_data _name object does not exist, no action`");
           end
           else begin
         __vmm_rhs._name = this._name;
    end
 end
        DO_COMPARE: begin
    string diff;
           if ( _name == null ) begin
              vmm_warning(this.log, `" vmm_data _name object does not exist, no action`");
           end
           else begin
              if (this._name != __vmm_rhs._name) begin
                  this.__vmm_image = `"this._name !== to._name`";
                  this.__vmm_status = 0;
                  return;
              end
           end
        end
        DO_PACK: begin
           if ( _name == null ) begin
              vmm_warning(this.log, `" vmm_data _name object does not exist, no action`");
           end
           else begin
           end
        end
        DO_UNPACK: begin
           this._name = null;
        end
      endcase

Defined at line 1203 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_handle_aa_scalar ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
    int _count = 0;
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, this._name.num());
      foreach(this._name[i]) begin
  if (_count <= 2 || _count >= this._name.num()-2)
               $sformat(this.__vmm_image, `"%s %0d: %s`", this.__vmm_image, i,(this._name[i] == null) ? `"null`" : `"`");
                  if (_count== 2 && this._name.num() > 5) begin
                  this.__vmm_image = {this.__vmm_image, `"\n...`"};
               end
      _count++;
           end
        end
        DO_COPY: begin
    __vmm_rhs._name.delete();
    foreach(this._name[i]) begin
       __vmm_rhs._name[i] = new;
              __vmm_rhs._name[i] = this._name[i];
    end
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.num() !== this._name.num()) begin
              $sformat(this.__vmm_image, `"this._name.num() (%0d) !== to._name.num() (%0d)`",
                       this._name.num(), __vmm_rhs._name.num());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
       if (!__vmm_rhs._name.exists(i)) begin
   $sformat(this.__vmm_image, `"this._name[%0d] exists but to._name[%0d] does not`", i, i);
   this.__vmm_status = 0;
          return;
       end
              if (this._name[i] != __vmm_rhs._name[i]) begin
                $sformat(this.__vmm_image, `"this._name[%0d] !== to._name[%0d]`", i, i);
                this.__vmm_status = 0;
                return;
              end
           end
        end
        DO_PACK: begin
        end
        DO_UNPACK: begin
           foreach (this._name[i]) begin
              this._name[i] = null;
           end
        end
      endcase

Defined at line 1334 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_handle_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
    int _count = 0;
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, this._name.num());
      foreach(this._name[i]) begin
  if (_count <= 2 || _count >= this._name.num()-2)
               $sformat(this.__vmm_image, `"%s ``%s': %s`", this.__vmm_image, i,(this._name[i] == null) ? `"null`" : `"`");
                  if (_count== 2 && this._name.num() > 5) begin
                  this.__vmm_image = {this.__vmm_image, `"\n...`"};
               end
      _count++;
           end
        end
        DO_COPY: begin
    __vmm_rhs._name.delete();
    foreach(this._name[i]) begin
       __vmm_rhs._name[i] = new;
              __vmm_rhs._name[i] = this._name[i];
    end
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.num() !== this._name.num()) begin
              $sformat(this.__vmm_image, `"this._name.num() (%0d) !== to._name.num() (%0d)`",
                       this._name.num(), __vmm_rhs._name.num());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
       if (!__vmm_rhs._name.exists(i)) begin
   $sformat(this.__vmm_image, `"this._name[``%s'] exists but to._name[``%s'] does not`", i, i);
   this.__vmm_status = 0;
          return;
       end
              if (this._name[i] != __vmm_rhs._name[i]) begin
                $sformat(this.__vmm_image, `"this._name[``%s'] !== to._name[``%s']`", i, i);
                this.__vmm_status = 0;
                return;
              end
           end
        end
        DO_PACK: begin
        end
        DO_UNPACK: begin
           foreach (this._name[i]) begin
              this._name[i] = null;
           end
        end
      endcase

Defined at line 1386 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_handle_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
    int size =0;
    size = $size(this._name);
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, size);
           for (int i = 0; i < size; i++) begin
              $sformat(this.__vmm_image, `"%s %s`", this.__vmm_image,
                       (this._name[i] == null) ? `"null`" : `"`");
              if (i == 2 && size > 5) begin
                 this.__vmm_image = {this.__vmm_image, `" ...`"};
                 i = size - 3;
              end
           end
        end
        DO_COPY: begin
    __vmm_rhs._name = this._name;
        end
        DO_COMPARE: begin
           foreach (this._name[i]) begin
              if (this._name[i] != __vmm_rhs._name[i]) begin
                $sformat(this.__vmm_image, `"this._name[%0d] !== to._name[%0d]`", i, i);
                this.__vmm_status = 0;
                return;
              end
           end
        end
        DO_PACK: begin
        end
        DO_UNPACK: begin
           foreach (this._name[i]) begin
              this._name[i] = null;
           end
        end
      endcase

Defined at line 1251 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_handle_da ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, this._name.size());
           for (int i = 0; i < this._name.size(); i++) begin
              $sformat(this.__vmm_image, `"%s %s`", this.__vmm_image,
                       (this._name[i] == null) ? `"null`" : `"`");
              if (i == 2 && this._name.size() > 5) begin
                 this.__vmm_image = {this.__vmm_image, `" ...`"};
                 i = this._name.size() - 3;
              end
           end
        end
        DO_COPY: begin
    __vmm_rhs._name = new[this._name.size()];
    foreach(this._name[i]) begin
              __vmm_rhs._name[i] = this._name[i];
    end
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.size() !== this._name.size()) begin
              $sformat(this.__vmm_image, `"this._name.size() (%0d) !== to._name.size() (%0d)`",
                       this._name.size(), __vmm_rhs._name.size());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
              if (this._name[i] != __vmm_rhs._name[i]) begin
                $sformat(this.__vmm_image, `"this._name[%0d] !== to._name[%0d]`", i, i);
                this.__vmm_status = 0;
                return;
              end
           end
        end
        DO_PACK: begin
        end
        DO_UNPACK: begin
           foreach (this._name[i]) begin
              this._name[i] = null;
           end
        end
      endcase

Defined at line 1289 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_scalar ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           $sformat(this.__vmm_image, `"%s\n%s``_name='h%0h`", this.__vmm_image, this.__vmm_prefix, this._name);
        end
        DO_COPY: begin
           __vmm_rhs._name = this._name;
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name !== this._name) begin
              $sformat(this.__vmm_image, `"this._name ('h%0h) !== to._name ('h%0h)`",
                       this._name, __vmm_rhs._name);
              this.__vmm_status = 0;
              return;
           end
        end
        DO_PACK: begin
    int start;
    int count;
    start = this.__vmm_offset;
    vmm_data_member_scalar_count(this._name,count)
    this.__vmm_maxbits = this._name;
    vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
           vmm_data_member_update_offset(this.__vmm_offset,count)
     this.__vmm_len = this.__vmm_offset;
     end
        DO_UNPACK: begin
    int count;
    int start;
    start = this.__vmm_offset;
    vmm_data_member_scalar_count(this._name,count)
    vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
    this._name = this.__vmm_maxbits;
           vmm_data_member_update_offset(this.__vmm_offset,count)
     end
      endcase

Defined at line 38 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_scalar_aa_scalar ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
    int _count = 0;
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image,
                    this.__vmm_prefix, this._name.num());
    foreach (this._name[i]) begin
       if (_count <= 2 || _count >= this._name.num()-2)
                 $sformat(this.__vmm_image, `"%s %0d:`h%0h`", this.__vmm_image,
                          i, this._name[i]);
              if (_count == 2 && this._name.num() > 5) begin
                 this.__vmm_image = {this.__vmm_image, `" ...`"};
              end
       _count++;
           end
        end
        DO_COPY: begin
    __vmm_rhs._name.delete();
      foreach(this._name[i]) begin
  __vmm_rhs._name[i]=this._name[i];
      end
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.num() !== this._name.num()) begin
              $sformat(this.__vmm_image, `"this._name.num() (%0d) !== to._name.num() (%0d)`",
                       this._name.num(), __vmm_rhs._name.num());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
       if (!__vmm_rhs._name.exists(i)) begin
   $sformat(this.__vmm_image, `"this._name[%0d] exists but to._name[%0d] does not`",
     i, i);
   this.__vmm_status = 0;
   return;
       end
              else if (__vmm_rhs._name[i] != this._name[i]) begin
                $sformat(this.__vmm_image, `"this._name[%0d]:'h%0h !== to._name[%0d]:'h%0h`",
                         i, this._name[i], i, __vmm_rhs._name[i]);
                this.__vmm_status = 0;
                return;
              end
           end
        end
        DO_PACK: begin
    int start;
    int count;
    int index;
    int element=0;
    bit [31:0] size=0;
    start = this.__vmm_offset;
           element = this._name.first(index);
           vmm_data_member_scalar_count(element,count)
      element = 0;
    size = this._name.num();
    foreach (this._name[j]) begin
       this.__vmm_maxbits = this._name[j];
       index = j;
       if (element == 0 ) begin
                  vmm_data_member_update_offset(this.__vmm_offset,8)
            element = 1;
       end
              vmm_data_member_scalar_packint(pack,index,this.__vmm_offset,0)
              vmm_data_member_update_offset(this.__vmm_offset,4)
              vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
              vmm_data_member_update_offset(this.__vmm_offset,count)
    end
     this.__vmm_len = this.__vmm_offset;
    vmm_data_member_scalar_packint(pack,size,start,0)
    vmm_data_member_scalar_packint(pack,count,(start+4),0)
        end
        DO_UNPACK: begin
    int start;
    int count;
    int index;
    bit [31:0] size = 0;
    start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,size,this.__vmm_offset,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    for (int j=0; j < size; j++) begin
                vmm_data_member_scalar_unpackint(unpack,index,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,count)
          this._name[index] = this.__vmm_maxbits;
    end
        end
      endcase

Defined at line 211 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_scalar_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
    int _count = 0;
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image,
                    this.__vmm_prefix, this._name.num());
    foreach (this._name[i]) begin
       if (_count <= 2 || _count >= this._name.num()-2)
               $sformat(this.__vmm_image, `"%s ``%s':'h%0h`", this.__vmm_image, i, this._name[i]);
              if (_count == 2 && this._name.num() > 5) begin
                 this.__vmm_image = {this.__vmm_image, `" ...`"};
              end
       _count++;
           end
        end
        DO_COPY: begin
    __vmm_rhs._name.delete();
    foreach(this._name[i]) begin
       __vmm_rhs._name[i] = this._name[i];
    end
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.num() !== this._name.num()) begin
              $sformat(this.__vmm_image, `"this._name.num() (%0d) !== to._name.num() (%0d)`",
                       this._name.num(), __vmm_rhs._name.num());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
       if(!__vmm_rhs._name.exists(i)) begin
   $sformat(this.__vmm_image, `"this._name[``%s'] exists but to._name[``%s'] does not`",
     i, i);
   this.__vmm_status = 0;
   return;
       end
              else if (__vmm_rhs._name[i] != this._name[i]) begin
                $sformat(this.__vmm_image, `"this._name[``%s']:'h%0h !== to._name[``%s']:'h%0h`",
                         i, this._name[i], i, __vmm_rhs._name[i]);
                this.__vmm_status = 0;
                return;
              end
           end
        end
        DO_PACK: begin
    int start;
    int count;
    string sindextemp;
    int sindexcount;
    string stemp;
    bit [31:0] size=0;
    start = this.__vmm_offset;
           stemp = this._name.first(sindextemp);
    size = this._name.num();
    vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits = 0;
    foreach (this._name[j]) begin
       this.__vmm_maxbits =0;
       sindextemp = j;
       sindexcount = sindextemp.len();
       this.__vmm_maxbits = sindextemp;
       vmm_data_member_scalar_packint(pack,sindexcount,this.__vmm_offset,0)
              vmm_data_member_update_offset(this.__vmm_offset,4)
              vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,sindexcount,this.__vmm_offset)
              vmm_data_member_update_offset(this.__vmm_offset,sindexcount)
              this.__vmm_maxbits =0;
       vmm_data_member_scalar_count(this._name[j],count)
       vmm_data_member_scalar_packint(pack,count,this.__vmm_offset,0)
              vmm_data_member_update_offset(this.__vmm_offset,4)
       this.__vmm_maxbits = this._name[j];
              vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
              vmm_data_member_update_offset(this.__vmm_offset,count)
    end
     this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
    int start;
    int count;
    string sindextemp;
    int sindexcount;
    string stemp;
    bit [31:0] size=0;
    this.__vmm_maxbits = 0;
    start = this.__vmm_offset;
    vmm_data_member_scalar_unpackint(unpack,size,this.__vmm_offset,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    for (int j=0; j < size; j++) begin
         vmm_data_member_scalar_unpackint(unpack,sindexcount,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
         vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,sindexcount,this.__vmm_offset)
         sindextemp = this.__vmm_maxbits;
                vmm_data_member_update_offset(this.__vmm_offset,sindexcount)
         this.__vmm_maxbits = 0;
         vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
         vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
         this._name[sindextemp] = this.__vmm_maxbits;
                vmm_data_member_update_offset(this.__vmm_offset,count)
    end
        end
      endcase

Defined at line 303 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_scalar_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
    int size =0;
    size = $size(this._name);
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, size);
           for (int i = 0; i < size; i++) begin
              $sformat(this.__vmm_image, `"%s 'h%0h`", this.__vmm_image, this._name[i]);
              if (i == 2 && size > 5) begin
                 this.__vmm_image = {this.__vmm_image, `" ...`"};
                 i = size - 3;
              end
           end
        end
        DO_COPY: begin
    __vmm_rhs._name = this._name;
        end
        DO_COMPARE: begin
           foreach (this._name[i]) begin
              if (__vmm_rhs._name[i] !== this._name[i]) begin
                 $sformat(this.__vmm_image, `"this._name[%0d] ('h%0h) !== to._name[%0d] ('h%0h)`",
                          i, this._name[i], i, __vmm_rhs._name[i]);
                 this.__vmm_status = 0;
                 return;
              end
           end
        end
        DO_PACK: begin
    int start;
    int count;
    bit [31:0] size=0;
    start = this.__vmm_offset;
           vmm_data_member_update_offset(this.__vmm_offset,8)
    foreach (this._name[j]) begin
              if ( j == 0 )
           vmm_data_member_scalar_count(this._name[j],count)
       this.__vmm_maxbits = this._name[j];
              vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
              vmm_data_member_update_offset(this.__vmm_offset,count)
       size++;
    end
           vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_scalar_packint(pack,count,(start+4),0)
     this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
    int start;
    int count;
    bit [31:0] size = 0;
           vmm_data_member_scalar_unpackint(unpack,size,this.__vmm_offset,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    for (int j=0; j < size; j++) begin
       vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
       this._name[j] = this.__vmm_maxbits;
              vmm_data_member_update_offset(this.__vmm_offset,count)
           end
        end
      endcase

Defined at line 76 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_scalar_count ( __name, __count )




__count = $bits(__name)/8;
    if ($bits(__name)%8 ) __count++;

Defined at line 23 of file sv/std_lib/vmm_data_macros_utils.sv.

 `define vmm_data_member_scalar_da ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, this._name.size());
           for (int i = 0; i < this._name.size(); i++) begin
              $sformat(this.__vmm_image, `"%s 'h%0h`", this.__vmm_image, this._name[i]);
              if (i == 2 && this._name.size() > 5) begin
                 this.__vmm_image = {this.__vmm_image, `" ...`"};
                 i = this._name.size() - 3;
              end
           end
        end
        DO_COPY: begin
    __vmm_rhs._name = new [this._name.size()];
    foreach(this._name[i]) __vmm_rhs._name[i]=this._name[i];
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.size() !== this._name.size()) begin
              $sformat(this.__vmm_image, `"this._name.size() (%0d) !== to._name.size() (%0d)`",
                       this._name.size(), __vmm_rhs._name.size());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
              if (__vmm_rhs._name[i] !== this._name[i]) begin
                 $sformat(this.__vmm_image, `"this._name[%0d] ('h%0h) !== to._name[%0d] ('h%0h)`",
                          i, this._name[i], i, __vmm_rhs._name[i]);
                 this.__vmm_status = 0;
                 return;
              end
           end
        end
        DO_PACK: begin
    int start;
    int count;
    int index;
    bit [31:0] size=0;
    start = this.__vmm_offset;
      size = this._name.size();
    foreach (this._name[j]) begin
       if ( j == 0) begin
                  vmm_data_member_scalar_count(this._name[j],count)
                  vmm_data_member_update_offset(this.__vmm_offset,8)
       end
       this.__vmm_maxbits = this._name[j];
              vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
              vmm_data_member_update_offset(this.__vmm_offset,count)
    end
     this.__vmm_len = this.__vmm_offset;
           vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_scalar_packint(pack,count,(start+4),0)
        end
        DO_UNPACK: begin
    int start;
    int count;
    int index;
    bit [31:0] size = 0;
           vmm_data_member_scalar_unpackint(unpack,size,this.__vmm_offset,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this._name = new [size];
    for (int j=0; j < size; j++) begin
       vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
       this._name[j] = this.__vmm_maxbits;
              vmm_data_member_update_offset(this.__vmm_offset,count)
           end
        end
      endcase

Defined at line 139 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_scalar_pack ( __pack, __maxbits, __count, __offset )




if (__pack.size() < __offset+__count)
              __pack = new [__offset+__count] (__pack);
       for (int i=0; i < __count; i++) begin
       __pack[__offset+i] = __maxbits[i*8 +: 8];
    end

Defined at line 29 of file sv/std_lib/vmm_data_macros_utils.sv.

 `define vmm_data_member_scalar_packint ( __pack, __index, __st, __endian )




if (__pack.size() < __st+4)
            __pack = new [__st+4] (__pack);
 if ( __endian) begin
           {__pack[__st],__pack[__st+1],__pack[__st+2],__pack[__st+3]} = __index;
 end
 else begin
           {__pack[__st+3],__pack[__st+2],__pack[__st+1],__pack[__st]} = __index;
 end

Defined at line 45 of file sv/std_lib/vmm_data_macros_utils.sv.

 `define vmm_data_member_scalar_unpack ( __unpack, __maxbits, __count, __offset )




for (int i=0; i < __count; i++) begin
        __maxbits[i*8 +: 8] = __unpack[__offset+i];
    end

Defined at line 38 of file sv/std_lib/vmm_data_macros_utils.sv.

 `define vmm_data_member_scalar_unpackint ( __unpack, __index, __st, __endian )




if ( __endian) begin
           __index = {__unpack[__st],__unpack[__st+1],__unpack[__st+2],__unpack[__st+3]};
 end
 else begin
           __index = {__unpack[__st+3],__unpack[__st+2],__unpack[__st+1],__unpack[__st]};
 end

Defined at line 57 of file sv/std_lib/vmm_data_macros_utils.sv.

 `define vmm_data_member_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
          $sformat(this.__vmm_image, `"%s\n%s``_name=``%s'`", this.__vmm_image, this.__vmm_prefix, this._name);
        end
        DO_COPY: begin
           __vmm_rhs._name = this._name;
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name != this._name) begin
             $sformat(this.__vmm_image, `"this._name (``%s') !== to._name (``%s')`",
                       this._name, __vmm_rhs._name);
              this.__vmm_status = 0;
              return;
           end
        end
        DO_PACK: begin
    int start;
    int count;
    start = this.__vmm_offset;
    count = (this._name.len());
    this.__vmm_maxbits = 0;
           vmm_data_member_scalar_packint(pack,count,this.__vmm_offset,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits = this._name;
    vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
           vmm_data_member_update_offset(this.__vmm_offset,count)
     this.__vmm_len = this.__vmm_offset;
     end
        DO_UNPACK: begin
    int count;
    int start;
    int size;
    this.__vmm_maxbits = 0;
    start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
    this._name = this.__vmm_maxbits;
           vmm_data_member_update_offset(this.__vmm_offset,count)
     end
      endcase

Defined at line 407 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_string_aa_scalar ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
    int _count = 0;
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, this._name.num());
    foreach(this._name[i]) begin
       if (_count <= 2 || _count >= this._name.num()-2)
               $sformat(this.__vmm_image, `"%s %0d:``%s'`", this.__vmm_image, i, this._name[i]);
               if (_count == 2 && this._name.num() > 5) begin
                   this.__vmm_image = {this.__vmm_image, `" ...`"};
               end
       _count++;
           end
           $sformat(this.__vmm_image, `"%s'`", this.__vmm_image);
        end
        DO_COPY: begin
    __vmm_rhs._name.delete();
    foreach(this._name[i]) begin
       __vmm_rhs._name[i]=this._name[i];
    end
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.num() !== this._name.num()) begin
              $sformat(this.__vmm_image, `"this._name.num() (%0d) !== to._name.num() (%0d)`",
                       this._name.num(), __vmm_rhs._name.num());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
       if (!__vmm_rhs._name.exists(i)) begin
   $sformat(this.__vmm_image, `"this._name[%0d] exists but to._name[%0d] does not`",
     i, i);
   this.__vmm_status = 0;
   return;
       end
              else if (__vmm_rhs._name[i] != this._name[i]) begin
                $sformat(this.__vmm_image, `"this._name[%0d] (``%s') !== to._name[%0d] (``%s')`",
                           i, this._name[i], i, __vmm_rhs._name[i]);
                this.__vmm_status = 0;
                return;
              end
           end
        end
       DO_PACK: begin
    int start;
    int count;
    int index;
    bit [31:0] size=0;
    start = this.__vmm_offset;
      this.__vmm_maxbits = 0;
    size = this._name.num();
    vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    foreach (this._name[j]) begin
            this.__vmm_maxbits = 0;
          count = (this._name[j].len());
          this.__vmm_maxbits = this._name[j];
          index = j;
         vmm_data_member_scalar_packint(pack,index,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
         vmm_data_member_scalar_packint(pack,count,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
         vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,count)
    end
     this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
           int start;
           int count;
           int index;
           bit [31:0] size = 0;
           start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           this.__vmm_maxbits = 0;
           for (int j=0; j < size; j++) begin
                vmm_data_member_scalar_unpackint(unpack,index,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,count)
               this._name[index] = this.__vmm_maxbits;
               this.__vmm_maxbits = 0;
           end
        end
      endcase

Defined at line 596 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_string_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
    int _count = 0;
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, this._name.num());
    foreach (this._name[i]) begin
       if (_count <= 2 || _count >= this._name.num()-2)
                $sformat(this.__vmm_image, `"%s ``%s':``%s'`", this.__vmm_image, i, this._name[i]);
                if (_count == 2 && this._name.num() > 5) begin
                    this.__vmm_image = {this.__vmm_image, `" ...`"};
                end
       _count++;
           end
        end
        DO_COPY: begin
    __vmm_rhs._name.delete();
    foreach(this._name[i]) __vmm_rhs._name[i] = this._name[i];
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.num() !== this._name.num()) begin
              $sformat(this.__vmm_image, `"this._name.num() (%0d) !== to._name.num() (%0d)`",
                       this._name.num(), __vmm_rhs._name.num());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
       if (!__vmm_rhs._name.exists(i)) begin
   $sformat(this.__vmm_image, `"this._name[``%s'] exists but to._name[``%s'] does not`",
     i, i);
   this.__vmm_status = 0;
   return;
       end
              else if (__vmm_rhs._name[i] != this._name[i]) begin
                $sformat(this.__vmm_image, `"this._name[``%s'] (``%s') !== to._name[``%s'] (``%s')`",
                         i, this._name[i], i, __vmm_rhs._name[i]);
                this.__vmm_status = 0;
                return;
              end
           end
        end
        DO_PACK: begin
    int start;
    int count;
    string sindextemp;
    int sindexcount;
    bit [31:0] size=0;
    start = this.__vmm_offset;
    size = this._name.num();
    vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits = 0;
    foreach (this._name[j]) begin
         this.__vmm_maxbits =0;
         sindextemp = j;
         sindexcount = sindextemp.len();
         this.__vmm_maxbits = sindextemp;
         vmm_data_member_scalar_packint(pack,sindexcount,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
         vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,sindexcount,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,sindexcount)
                this.__vmm_maxbits =0;
                count = this._name[j].len();
                vmm_data_member_scalar_packint(pack,count,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
         this.__vmm_maxbits = this._name[j];
         vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,count)
    end
           this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
    int start;
    int count;
    string sindextemp;
    int sindexcount;
    string stemp;
    bit [31:0] size=0;
    this.__vmm_maxbits = 0;
           start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    for (int j=0; j < size; j++) begin
         this.__vmm_maxbits = 0;
                vmm_data_member_scalar_unpackint(unpack,sindexcount,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,sindexcount,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,sindexcount)
         sindextemp = this.__vmm_maxbits;
         this.__vmm_maxbits = 0;
                vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,count)
         this._name[sindextemp] = this.__vmm_maxbits;
    end
        end
      endcase

Defined at line 687 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_string_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
    int size =0;
    size = $size(this._name);
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, size);
           for (int i = 0; i < size; i++) begin
              $sformat(this.__vmm_image, `"%s ``%s'`", this.__vmm_image, this._name[i]);
              if (i == 2 && size > 5) begin
                 this.__vmm_image = {this.__vmm_image, `" ...`"};
                 i = size - 3;
              end
           end
        end
        DO_COPY: begin
  __vmm_rhs._name = this._name;
        end
        DO_COMPARE: begin
           foreach (this._name[i]) begin
              if (__vmm_rhs._name[i] != this._name[i]) begin
                 $sformat(this.__vmm_image, `"this._name[%0d] (%s) !== to._name[%0d] (%s)`",
                          i, this._name[i], i, __vmm_rhs._name[i]);
                 this.__vmm_status = 0;
                 return;
              end
           end
        end
        DO_PACK: begin
    int start;
    int count;
    string stemp;
    bit [31:0] size=0;
    start = this.__vmm_offset;
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits =0;
    foreach (this._name[j]) begin
         count = (this._name[j].len());
         this.__vmm_maxbits = this._name[j];
     vmm_data_member_scalar_packint(pack,count,this.__vmm_offset,0)
            vmm_data_member_update_offset(this.__vmm_offset,4)
     vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
            vmm_data_member_update_offset(this.__vmm_offset,count)
       size++;
    end
    vmm_data_member_scalar_packint(pack,size,start,0)
      this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
    int count;
           int start;
           bit [31:0] size = 0;
    start = this.__vmm_offset;
    this.__vmm_maxbits =0;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           for (int j=0; j < size; j++) begin
   this.__vmm_maxbits =`"`";
                 vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
                 vmm_data_member_update_offset(this.__vmm_offset,4)
                 vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
                 vmm_data_member_update_offset(this.__vmm_offset,count)
   this._name[j] = this.__vmm_maxbits;
   this.__vmm_maxbits =`"`";
           end
        end
      endcase

Defined at line 452 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_string_da ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           $sformat(this.__vmm_image, `"%s\n%s``_name[%0d]=`", this.__vmm_image, this.__vmm_prefix, this._name.size());
           for (int i = 0; i < this._name.size(); i++) begin
              $sformat(this.__vmm_image, `"%s ``%s'`", this.__vmm_image, this._name[i]);
              if (i == 2 && this._name.size() > 5) begin
                 this.__vmm_image = {this.__vmm_image, `" ...`"};
                 i = this._name.size() - 3;
              end
           end
        end
        DO_COPY: begin
  __vmm_rhs._name = new [this._name.size()];
  foreach(this._name[i]) __vmm_rhs._name[i] = this._name[i];
        end
        DO_COMPARE: begin
           if (__vmm_rhs._name.size() !== this._name.size()) begin
              $sformat(this.__vmm_image, `"this._name.size() (%0d) !== to._name.size() (%0d)`",
                       this._name.size(), __vmm_rhs._name.size());
              this.__vmm_status = 0;
              return;
           end
           foreach (this._name[i]) begin
              if (__vmm_rhs._name[i] != this._name[i]) begin
                 $sformat(this.__vmm_image, `"this._name[%0d] (%s) !== to._name[%0d] (%s)`",
                          i, this._name[i], i, __vmm_rhs._name[i]);
                 this.__vmm_status = 0;
                 return;
              end
           end
        end
        DO_PACK: begin
    int start;
    int count;
    int firstcount;
    string stemp;
    bit [31:0] size=0;
    start = this.__vmm_offset;
    size = this._name.size();
    vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits =0;
    foreach (this._name[j]) begin
         count = (this._name[j].len());
         this.__vmm_maxbits = this._name[j];
     vmm_data_member_scalar_packint(pack,count,this.__vmm_offset,0)
            vmm_data_member_update_offset(this.__vmm_offset,4)
     vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,count,this.__vmm_offset)
            vmm_data_member_update_offset(this.__vmm_offset,count)
    end
     this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
    int count;
    int index;
           int start;
           bit [31:0] size = 0;
    start = this.__vmm_offset;
    this.__vmm_maxbits =0;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           this._name = new [size];
           for (int j=0; j < size; j++) begin
   this.__vmm_maxbits =`"`";
                 vmm_data_member_scalar_unpackint(unpack,count,this.__vmm_offset,0)
                 vmm_data_member_update_offset(this.__vmm_offset,4)
                 vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,count,this.__vmm_offset)
                 vmm_data_member_update_offset(this.__vmm_offset,count)
   this._name[j] = this.__vmm_maxbits;
   this.__vmm_maxbits =`"`";
           end
        end
      endcase

Defined at line 520 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_update_offset ( __offset, __count )




__offset = __offset + __count;

Defined at line 67 of file sv/std_lib/vmm_data_macros_utils.sv.

 `define vmm_data_member_user_defined ( _name )




this.__vmm_status = this.do_``_name(do_what, this.__vmm_prefix, this.__vmm_image,
                                    this.__vmm_rhs,
                                    this.__vmm_kind, this.__vmm_offset, pack, unpack);
      if (__vmm_status == 0) return;

Defined at line 1951 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_vmm_data ( _name, _do, _how )




case (do_what & _do)
        DO_PRINT: begin
          if ( _name == null ) begin
              vmm_warning(this.log, `" do-print 1jvmm_data _name object does not exist, no action`");
          end
          else begin
      string _prefix = this.__vmm_prefix;
             $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image, this._name.psdisplay({this.__vmm_prefix, `"_name: `"}));
      this.__vmm_prefix = _prefix;
          end
        end
        DO_COPY: begin
           if (_name == null) begin
             vmm_warning(this.log, `" do-copy 1vmm_data _name object does not exist, no action`");
           end
           else begin
           case (_how & HOW_TO_COPY)
       DO_REFCOPY: begin
                __vmm_rhs._name = this._name;
      end
      DO_DEEPCOPY: begin
  $cast(__vmm_rhs._name, this._name.copy());
      end
    endcase
           end
        end
        DO_COMPARE: begin
           if (_name == null) begin
               vmm_warning(this.log, `" do-ccompare 1 vmm_data _name object does not exist, no action`");
           end
           else begin
           case (_how & HOW_TO_COMPARE)
       DO_REFCOMPARE: begin
                if (this._name != __vmm_rhs._name) begin
                  $sformat(this.__vmm_image, `"this._name !== to._name`");
                  this.__vmm_status = 0;
                  return;
                end
      end
      DO_DEEPCOMPARE: begin
  string diff;
                if (!this._name.compare(__vmm_rhs._name, diff)) begin
                   $sformat(this.__vmm_image, `"this._name !== to._name: %s `", diff);
                   this.__vmm_status = 0;
                   return;
                end
      end
    endcase
           end
        end
        DO_PACK: begin
    int count=0;
           if (_name == null) begin
              vmm_warning(this.log, `" vmm_data _name object does not exist, no action`");
           end
           else begin
       count = this._name.byte_pack(pack, this.__vmm_offset, this.__vmm_kind);
              vmm_data_member_update_offset(this.__vmm_offset,count)
            end
        end
        DO_UNPACK: begin
     int count=0;
     this._name = new();
     count = this._name.byte_unpack(unpack, this.__vmm_offset, this.__vmm_len, this.__vmm_kind);
            vmm_data_member_update_offset(this.__vmm_offset,count)
        end
      endcase

Defined at line 1438 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_vmm_data_aa_scalar ( _name, _do, _how )




case (do_what & _do)
        DO_PRINT: begin
    int _count = 0;
           string _prefix = this.__vmm_prefix;
           foreach (this._name[i]) begin
               if (_count <= 2 || _count >= this._name.num()-2) begin
                  string pf;
                  $sformat(pf, `"%s``_name[%0d]`", this.__vmm_prefix, i);
                  $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image, this._name[i].psdisplay(pf));
                  if (_count== 2 && this._name.num() > 5) begin
                       this.__vmm_image = {this.__vmm_image, `"\n`", _prefix, `"...`"};
                  end
               _count++;
               end
           end
           this.__vmm_prefix = _prefix;
        end
        DO_COPY: begin
           case (_how & HOW_TO_COPY)
       DO_REFCOPY: begin
  __vmm_rhs._name.delete();
  foreach (this._name[i]) begin
               __vmm_rhs._name[i] = this._name[i];
  end
      end
      DO_DEEPCOPY: begin
  __vmm_rhs._name.delete();
  foreach(this._name[i]) begin
               $cast(__vmm_rhs._name[i], this._name[i].copy());
  end
      end
    endcase
        end
        DO_COMPARE: begin
    string diff;
           if (__vmm_rhs._name.num() !== this._name.num()) begin
              $sformat(this.__vmm_image, `"this._name.num() (%0d) !== to._name.num() (%0d)`",
                       this._name.num(), __vmm_rhs._name.num());
              this.__vmm_status = 0;
              return;
           end
           case (_how & HOW_TO_COMPARE)
       DO_REFCOMPARE: begin
  __vmm_rhs._name.delete();
  foreach (this._name[i]) begin
            if (!__vmm_rhs._name.exists(i)) begin
        $sformat(this.__vmm_image, `"this._name[%0d] exists but to._name[%0d] does not`", i, i);
        this.__vmm_status = 0;
        return;
            end
                   if (this._name[i] != __vmm_rhs._name[i]) begin
                     $sformat(this.__vmm_image, `"this._name[%0d] !== to._name[%0d]`", i, i);
                     this.__vmm_status = 0;
                     return;
                   end
    end
      end
      DO_DEEPCOMPARE: begin
  __vmm_rhs._name.delete();
  foreach(this._name[i]) begin
            if (!__vmm_rhs._name.exists(i)) begin
        $sformat(this.__vmm_image, `"this._name[%0d] exists but to._name[%0d] does not`", i, i);
        this.__vmm_status = 0;
        return;
            end
                   if (!this._name[i].compare(__vmm_rhs._name[i], diff)) begin
                     $sformat(this.__vmm_image, `"this._name[%0d] !== to._name[%0d]: %s`", i, i, diff);
                     this.__vmm_status = 0;
                     return;
                   end
  end
      end
    endcase
        end
       DO_PACK: begin
    int start;
    int count;
    int index;
    string stemp;
           bit [31:0] size=0;
           start = this.__vmm_offset;
      this.__vmm_maxbits = 0;
    size = this._name.num();
    vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           foreach (this._name[j]) begin
          this.__vmm_maxbits = 0;
        index = j;
        vmm_data_member_scalar_packint(pack,index,this.__vmm_offset,0)
               vmm_data_member_update_offset(this.__vmm_offset,4)
        count = this._name[j].byte_pack(pack, this.__vmm_offset, this.__vmm_kind);
               vmm_data_member_update_offset(this.__vmm_offset,count)
    end
     this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
           int count;
           int start;
           int index=0;
           string stemp;
           bit [31:0] size = 0;
           start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           this.__vmm_maxbits =0;
           for (int j=0; j < size; j++) begin
               this.__vmm_maxbits =0;
                vmm_data_member_scalar_unpackint(unpack,index,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
         this._name[index] = new();
         count = this._name[index].byte_unpack(unpack, this.__vmm_offset, this.__vmm_len, this.__vmm_kind);
                vmm_data_member_update_offset(this.__vmm_offset,count)
           end
        end
      endcase

Defined at line 1697 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_vmm_data_aa_string ( _name, _do, _how )




case (do_what & _do)
        DO_PRINT: begin
    int _count = 0;
    string _prefix = this.__vmm_prefix;
    foreach (this._name[i]) begin
       if (_count <= 2 || _count >= this._name.num()-2) begin
                 string pf;
                 $sformat(pf, `"%s``_name[``%s']`", this.__vmm_prefix, i);
             $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image, this._name[i].psdisplay(pf));
                if (_count== 2 && this._name.num() > 5) begin
                   this.__vmm_image = {this.__vmm_image, `"\n`", _prefix, `"...`"};
                 end
       _count++;
              end
           end
    this.__vmm_prefix = _prefix;
        end
        DO_COPY: begin
           case (_how & HOW_TO_COPY)
       DO_REFCOPY: begin
  this.__vmm_rhs._name.delete();
  foreach (this._name[i]) begin
               this.__vmm_rhs._name[i] = this._name[i];
  end
      end
      DO_DEEPCOPY: begin
  this.__vmm_rhs._name.delete();
  foreach(this._name[i]) begin
               $cast(this.__vmm_rhs._name[i], this._name[i].copy());
  end
      end
    endcase
        end
        DO_COMPARE: begin
    string diff;
           if (this.__vmm_rhs._name.num() !== this._name.num()) begin
              $sformat(this.__vmm_image, `"this._name.num() (%0d) !== to._name.num() (%0d)`",
                       this._name.num(), this.__vmm_rhs._name.num());
              this.__vmm_status = 0;
              return;
           end
           case (_how & HOW_TO_COMPARE)
       DO_REFCOMPARE: begin
  this.__vmm_rhs._name.delete();
  foreach (this._name[i]) begin
            if (!this.__vmm_rhs._name.exists(i)) begin
        $sformat(this.__vmm_image, `"this._name[``%s'] exists but to._name[``%s'] does not`", i, i);
        this.__vmm_status = 0;
        return;
            end
                   if (this._name[i] != this.__vmm_rhs._name[i]) begin
                     $sformat(this.__vmm_image, `"this._name[%0d] !== to._name[%0d]`", i, i);
                     this.__vmm_status = 0;
                     return;
                   end
    end
      end
      DO_DEEPCOMPARE: begin
  this.__vmm_rhs._name.delete();
  foreach(this._name[i]) begin
            if (!this.__vmm_rhs._name.exists(i)) begin
        $sformat(this.__vmm_image, `"this._name[``%s'] exists but to._name[``%s'] does not`", i, i);
        this.__vmm_status = 0;
        return;
            end
                   if (!this._name[i].compare(this.__vmm_rhs._name[i], diff)) begin
                     $sformat(this.__vmm_image, `"this._name[``%s'] !== to._name[``%s']: %s`", i, i, diff);
                     this.__vmm_status = 0;
                     return;
                   end
  end
      end
    endcase
        end
        DO_PACK: begin
    int start;
    int count;
    int index;
    string sindextemp;
    int sindexcount;
    string stemp;
    bit [31:0] size=0;
    start = this.__vmm_offset;
           stemp = this._name.first(sindextemp);
      index = 0;
    size = this._name.num();
           vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits = 0;
    foreach (this._name[j]) begin
         this.__vmm_maxbits =0;
         sindextemp = j;
         sindexcount = sindextemp.len();
         this.__vmm_maxbits = sindextemp;
                vmm_data_member_scalar_packint(pack,sindexcount,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_pack(pack,this.__vmm_maxbits,sindexcount,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,sindexcount)
                this.__vmm_maxbits =0;
         count = this._name[j].byte_pack(pack, this.__vmm_offset, this.__vmm_kind);
                vmm_data_member_update_offset(this.__vmm_offset,count)
    end
     this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
    int start;
    int count;
    int index;
    string sindextemp;
    int sindexcount;
    string stemp;
    bit [31:0] size=0;
      index = 0;
           start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits = 0;
    for (int j=0; j < size; j++) begin
         this.__vmm_maxbits = 0;
                vmm_data_member_scalar_unpackint(unpack,sindexcount,this.__vmm_offset,0)
                vmm_data_member_update_offset(this.__vmm_offset,4)
                vmm_data_member_scalar_unpack(unpack,this.__vmm_maxbits,sindexcount,this.__vmm_offset)
                vmm_data_member_update_offset(this.__vmm_offset,sindexcount)
         sindextemp = this.__vmm_maxbits;
         this.__vmm_maxbits = 0;
         this._name[sindextemp] = new();
         count = this._name[sindextemp].byte_unpack(unpack, this.__vmm_offset, this.__vmm_len, this.__vmm_kind);
                vmm_data_member_update_offset(this.__vmm_offset,count)
    end
        end
      endcase

Defined at line 1816 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_vmm_data_array ( _name, _do, _how )




case (do_what & _do)
        DO_PRINT: begin
    int size =0;
    string _prefix = this.__vmm_prefix;
    size = $size(this._name);
    for (int i = 0; i < size; i++) begin
        string pf;
        $sformat(pf, `"%s _name[%0d]: `", this.__vmm_prefix, i);
        $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image, this._name[i].psdisplay(pf));
        if (i == 2 && size > 5 ) begin
     this.__vmm_image = {this.__vmm_image, `"\n`", _prefix, `"...`"};
     i = size -3;
        end
    end
    this.__vmm_prefix = _prefix;
        end
        DO_COPY: begin
           case (_how & HOW_TO_COPY)
             DO_REFCOPY: begin
                __vmm_rhs._name = this._name;
                foreach (this._name[i]) begin
                   __vmm_rhs._name[i] = this._name[i];
                end
             end
             DO_DEEPCOPY: begin
                __vmm_rhs._name = this._name;
                foreach(this._name[i]) begin
                   $cast(__vmm_rhs._name[i], this._name[i].copy());
                end
             end
           endcase
        end
        DO_COMPARE: begin
        string diff;
           case (_how & HOW_TO_COMPARE)
             DO_REFCOMPARE: begin
                foreach (this._name[i]) begin
                   if (this._name[i] != __vmm_rhs._name[i]) begin
                      $sformat(this.__vmm_image, `"this._name[%0d] !== to._name[%0d]`", i, i);
                      this.__vmm_status = 0;
                      return;
                   end
                end
             end
             DO_DEEPCOMPARE: begin
                foreach(this._name[i]) begin
                   if (!this._name[i].compare(__vmm_rhs._name[i],diff)) begin
                      $sformat(this.__vmm_image, `"this._name[%0d] !== to._name[%0d]: %s`", i, i, diff);
                      this.__vmm_status = 0;
                      return;
                   end
                end
             end
           endcase
        end
        DO_PACK: begin
           int start;
           int count;
           bit [31:0] size=0;
           start = this.__vmm_offset;
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits = 0;
           foreach (this._name[j]) begin
        count = this._name[j].byte_pack(pack, this.__vmm_offset, this.__vmm_kind);
               vmm_data_member_update_offset(this.__vmm_offset,count)
       size++;
           end
    vmm_data_member_scalar_packint(pack,size,start,0)
           this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
           int count;
           int start;
           int index;
           string stemp;
           bit [31:0] size = 0;
           start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           this.__vmm_maxbits =0;
           for (int j=0; j < size; j++) begin
         this._name[j] = new();
         count = this._name[j].byte_unpack(unpack, this.__vmm_offset, this.__vmm_len, this.__vmm_kind);
                vmm_data_member_update_offset(this.__vmm_offset,count)
           end
        end
      endcase

Defined at line 1509 of file sv/std_lib/vmm_data_macros.sv.

 `define vmm_data_member_vmm_data_da ( _name, _do, _how )




case (do_what & _do)
        DO_PRINT: begin
    string _prefix = this.__vmm_prefix;
           for (int i = 0; i < this._name.size(); i++) begin
              string pf;
              $sformat(pf, `"%s``_name[%0d]: `", this.__vmm_prefix, i);
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image, this._name[i].psdisplay(pf));
              if (i == 2 && this._name.size() > 5) begin
                 this.__vmm_image = {this.__vmm_image, `"\n`", _prefix, `"...`"};
                 i = this._name.size() - 3;
              end
           end
    this.__vmm_prefix = _prefix;
        end
        DO_COPY: begin
           case (_how & HOW_TO_COPY)
       DO_REFCOPY: begin
  __vmm_rhs._name = new [this._name.size()];
  foreach (this._name[i]) begin
               __vmm_rhs._name[i] = this._name[i];
  end
      end
             DO_DEEPCOPY: begin
         __vmm_rhs._name = new [this._name.size()];
         foreach(this._name[i]) begin
                   $cast(__vmm_rhs._name[i], this._name[i].copy());
         end
      end
           endcase
        end
        DO_COMPARE: begin
    string diff;
           if (__vmm_rhs._name.size() !== this._name.size()) begin
              $sformat(this.__vmm_image, `"this._name.size() (%0d) !== to._name.size() (%0d)`",
                       this._name.size(), __vmm_rhs._name.size());
              this.__vmm_status = 0;
              return;
           end
           case (_how & HOW_TO_COMPARE)
       DO_REFCOMPARE: begin
  foreach (this._name[i]) begin
                   if (this._name[i] != __vmm_rhs._name[i]) begin
                     $sformat(this.__vmm_image, `"this._name[%0d] !== to._name[%0d]`", i, i);
                     this.__vmm_status = 0;
                     return;
               end
  end
      end
      DO_DEEPCOMPARE: begin
  foreach(this._name[i]) begin
                   if (!this._name[i].compare(__vmm_rhs._name[i],diff)) begin
                     $sformat(this.__vmm_image, `"this._name[%0d] !== to._name[%0d]: %s`", i, i, diff);
                     this.__vmm_status = 0;
                     return;
               end
  end
      end
    endcase
        end
        DO_PACK: begin
           int start;
           int count;
           int index;
           int element;
           string stemp;
           bit [31:0] size=0;
           start = this.__vmm_offset;
    size = this._name.size();
    vmm_data_member_scalar_packint(pack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
    this.__vmm_maxbits = 0;
           foreach (this._name[j]) begin
        count = this._name[j].byte_pack(pack, this.__vmm_offset, this.__vmm_kind);
               vmm_data_member_update_offset(this.__vmm_offset,count)
           end
           this.__vmm_len = this.__vmm_offset;
        end
        DO_UNPACK: begin
           int count;
           int start;
           int index;
           string stemp;
           bit [31:0] size = 0;
           start = this.__vmm_offset;
           vmm_data_member_scalar_unpackint(unpack,size,start,0)
           vmm_data_member_update_offset(this.__vmm_offset,4)
           this.__vmm_maxbits =0;
           foreach (this._name[j]) begin
         this._name[j] = new();
         count = this._name[j].byte_unpack(unpack, this.__vmm_offset, this.__vmm_len, this.__vmm_kind);
                vmm_data_member_update_offset(this.__vmm_offset,count)
           end
        end
      endcase

Defined at line 1600 of file sv/std_lib/vmm_data_macros.sv.

 `define VMM_DATA_NEW_ARGS


Defined at line 149 of file sv/std_lib/vmm.sv.

 `define VMM_DATA_NEW_CALL


Defined at line 151 of file sv/std_lib/vmm.sv.

 `define VMM_DATA_NEW_EXTERN_ARGS


Defined at line 150 of file sv/std_lib/vmm.sv.

 `define vmm_debug ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::DEBUG_TYP, vmm_log::DEBUG_SEV, __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 372 of file sv/std_lib/vmm.sv.

 `define vmm_delQ ( _q )


_q = '{}

Defined at line 29 of file sv/std_lib/vmm_scenario_gen.sv.

 `define VMM_DOSFILE_CHECK


If you get a syntax error on this line,
        the file is corrupt. Make sure you unpack the VMM distribution
        file with gunzip then tar, not a Windows tool

Defined at line 23 of file sv/std_lib/vmm.sv.

 `define VMM_DPI_


Defined at line 60 of file sv/std_lib/vmm.sv.

 `define VMM_ENV


vmm_env

Defined at line 279 of file sv/std_lib/vmm.sv.

 `define VMM_ENV_BASE_METHODS


Defined at line 296 of file sv/std_lib/vmm.sv.

 `define VMM_ENV_BASE_NEW_ARGS


Defined at line 287 of file sv/std_lib/vmm.sv.

 `define VMM_ENV_BASE_NEW_EXTERN_ARGS


Defined at line 288 of file sv/std_lib/vmm.sv.

 `define VMM_ENV_NEW_ARGS


Defined at line 282 of file sv/std_lib/vmm.sv.

 `define VMM_ENV_NEW_CALL


Defined at line 284 of file sv/std_lib/vmm.sv.

 `define VMM_ENV_NEW_EXTERN_ARGS


Defined at line 283 of file sv/std_lib/vmm.sv.

 `define vmm_error ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::FAILURE_TYP, vmm_log::ERROR_SEV, __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 322 of file sv/std_lib/vmm.sv.

 `define vmm_fatal ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::FAILURE_TYP, vmm_log::FATAL_SEV, __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 332 of file sv/std_lib/vmm.sv.

 `define VMM_HW__SV


Defined at line 24 of file sv/HAL/vmm_hw.sv.

 `define VMM_HW_ARCH


Defined at line 52 of file sv/HAL/vmm_hw_rtl.sv.

 `define VMM_HW_ARCH_NULL__SV


Defined at line 25 of file sv/HAL/vmm_hw_arch_null.sv.

 `define VMM_HW_DATA_WIDTH


1024

Defined at line 27 of file sv/HAL/vmm_hw.sv.

 `define VMM_HW_INCL_DUT


Defined at line 69 of file sv/HAL/vmm_hw_rtl.sv.

 `define VMM_HW_RTL__SV


Defined at line 29 of file sv/HAL/vmm_hw_rtl.sv.

 `define VMM_HW_VERSION__SV


Defined at line 23 of file sv/HAL/vmm_hw_version.sv.

 `define VMM_HW_XACTOR__SV


Defined at line 25 of file sv/HAL/vmm_hw_port.sv.

 `define vmm_inject_item_scenario_ ( class )


class``_inject_item_scenario

Defined at line 34 of file sv/std_lib/vmm_scenario_gen.sv.

 `define VMM_LOG


vmm_log

Defined at line 213 of file sv/std_lib/vmm.sv.

 `define VMM_LOG_BASE_METHODS


Defined at line 221 of file sv/std_lib/vmm.sv.

 `define VMM_MACRO_DEFINED


Defined at line 130 of file sv/std_lib/vmm.sv.

 `define VMM_MACRO_TO_STRING ( x )


`"x`"

Defined at line 132 of file sv/std_lib/vmm.sv.

 `define VMM_MAM__SV


Defined at line 24 of file sv/RAL/vmm_mam.sv.

 `define vmm_note ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::NOTE_TYP, , __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 392 of file sv/std_lib/vmm.sv.

 `define VMM_NOTIFY


vmm_notify

Defined at line 225 of file sv/std_lib/vmm.sv.

 `define VMM_NOTIFY_BASE_METHODS


Defined at line 233 of file sv/std_lib/vmm.sv.

 `define VMM_OBJECT_SET_PARENT ( _child, _parent )


 

Defined at line 494 of file sv/std_lib/vmm.sv.

 `define VMM_PERF__SV


Defined at line 23 of file sv/perf/vmm_perf.sv.

 `define VMM_PERF_ANALYZER__SV


Defined at line 24 of file sv/perf/vmm_perf_analyzer.sv.

 `define VMM_PERF_TENURE__SV


Defined at line 24 of file sv/perf/vmm_perf_tenure.sv.

 `define VMM_PERF_VERSION__SV


Defined at line 23 of file sv/perf/vmm_perf_version.sv.

 `define vmm_protocol ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::PROTOCOL_TYP, , __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 422 of file sv/std_lib/vmm.sv.

 `define VMM_RAL_ADDR_WIDTH


64

Defined at line 27 of file sv/RAL/vmm_ral.sv.

 `define VMM_RAL_DATA_WIDTH


64

Defined at line 31 of file sv/RAL/vmm_ral.sv.

 `define vmm_report ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::REPORT_TYP, , __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 402 of file sv/std_lib/vmm.sv.

 `define VMM_RW_ADDR_WIDTH



Defined at line 30 of file sv/RAL/vmm_rw.sv.

 `define VMM_RW_DATA_WIDTH



Defined at line 37 of file sv/RAL/vmm_rw.sv.

 `define VMM_SB__SV


Defined at line 24 of file sv/sb/vmm_sb.sv.

 `define VMM_SB_DS_SV


Defined at line 24 of file sv/sb/vmm_sb_ds.sv.

 `define VMM_SB_VERSION__SV


Defined at line 24 of file sv/sb/vmm_sb_version.sv.

 `define VMM_SCENARIO


vmm_scenario

Defined at line 167 of file sv/std_lib/vmm.sv.

 `define vmm_scenario_ ( class )


class``_scenario

Defined at line 32 of file sv/std_lib/vmm_scenario_gen.sv.

 `define VMM_SCENARIO_BASE


vmm_data

Defined at line 175 of file sv/std_lib/vmm.sv.

 `define VMM_SCENARIO_BASE_METHODS



Defined at line 185 of file sv/std_lib/vmm.sv.

 `define VMM_SCENARIO_BASE_NEW_ARGS



Defined at line 178 of file sv/std_lib/vmm.sv.

 `define VMM_SCENARIO_BASE_NEW_CALL


`VMM_DATA_BASE_NEW_CALL

Defined at line 182 of file sv/std_lib/vmm.sv.

 `define VMM_SCENARIO_BASE_NEW_EXTERN_ARGS



Defined at line 179 of file sv/std_lib/vmm.sv.

 `define vmm_scenario_election_ ( class )


class``_scenario_election

Defined at line 36 of file sv/std_lib/vmm_scenario_gen.sv.

 `define vmm_scenario_election_valid_ ( class )


class``_scenario_election_valid

Defined at line 37 of file sv/std_lib/vmm_scenario_gen.sv.

 `define vmm_scenario_gen ( class_name, text )



vmm_scenario_gen_using(class_name, class_name``_channel, text)

Defined at line 41 of file sv/std_lib/vmm_scenario_gen.sv.

 `define vmm_scenario_gen_ ( class )


class``_scenario_gen

Defined at line 38 of file sv/std_lib/vmm_scenario_gen.sv.

 `define vmm_scenario_gen_callbacks_ ( class )


class``_scenario_gen_callbacks

Defined at line 39 of file sv/std_lib/vmm_scenario_gen.sv.

 `define vmm_scenario_gen_using ( class_name, channel_name, text )




class vmm_scenario_(class_name) extends VMM_SCENARIO;
 
   static VMM_LOG log;
 
   rand class_name items[];
        class_name using;
 
   virtual function string psdisplay(string prefix = "");
      psdisplay = super.psdisplay(prefix);
      foreach (this.items[i]) begin
         string pfx;
         if (this.items[i] == null) continue;
         $sformat(pfx, "%s Item[%0d]: ", prefix, i);
         psdisplay = {psdisplay, "\n", this.items[i].psdisplay(pfx)};
      end
      if (this.using != null) begin
         psdisplay = {psdisplay, "\n", this.using.psdisplay({prefix, " Using: "})};
      end
      return psdisplay;
   endfunction
 
   constraint vmm_scenario_valid_(class_name) {
      items.size() == length;
 
      solve length before items.size() VMM_SOLVE_BEFORE_OPT;
   }
 
   function new(VMM_SCENARIO_NEW_ARGS);
      super.new(this.log VMM_SCENARIO_NEW_CALL);
      if (this.log == null) begin
         this.log = new({text, " Scenario"}, "Class");
         this.notify.log = this.log;
      end
 
      using = null;
   endfunction: new
 
   function void allocate_scenario(class_name using = null);
      this.items = new [this.get_max_length()];
      foreach (this.items[i]) begin
         if (using == null) this.items[i] = new;
         else $cast(this.items[i], using.copy());
         VMM_OBJECT_SET_PARENT(this.items[i], this)
 
         this.items[i].stream_id = this.stream_id;
         this.items[i].scenario_id = this.scenario_id;
         this.items[i].data_id = i;
      end
   endfunction: allocate_scenario
 
   function void fill_scenario(class_name using = null);
      int i;
 
      if (this.items.size() < this.get_max_length()) begin
         this.items = new [this.get_max_length()] (this.items);
      end
      foreach (this.items[i]) begin
         if (this.items[i] != null) continue;
 
         if (using == null) this.items[i] = new;
         else $cast(this.items[i], using.copy());
         VMM_OBJECT_SET_PARENT(this.items[i], this)
 
         this.items[i].stream_id = this.stream_id;
         this.items[i].scenario_id = this.scenario_id;
         this.items[i].data_id = i;
      end
   endfunction: fill_scenario
 
   function void pre_randomize();
      this.fill_scenario(this.using);
   endfunction: pre_randomize
 
   virtual task apply(channel_name channel,
                      ref int unsigned n_insts);
      int i;
 
      for (i = 0; i < this.length; i++) begin
         class_name item;
         $cast(item, this.items[i].copy());
`ifndef VMM_GRAB_DISABLED
         channel.put(item,,this);
`else
         channel.put(item);
`endif
      end
 
      n_insts = this.length;
   endtask: apply
endclass
 
 
class vmm_inject_item_scenario_(class_name) extends vmm_scenario_(class_name);
 
   function new(class_name obj VMM_DATA_NEW_ARGS);
      super.new(VMM_DATA_NEW_CALL);
 
      this.items = new [1];
      this.items[0] = obj;
      this.length = 1;
      this.repeated = 0;
   endfunction: new
 
   virtual task apply(channel_name channel,
                      ref int unsigned n_insts);
`ifndef VMM_GRAB_DISABLED
      channel.put(this.items[0],,this);
`else
      channel.put(this.items[0]);
`endif
      n_insts = 1;
   endtask: apply
 
endclass
 
 
class vmm_atomic_scenario_(class_name) extends vmm_scenario_(class_name);
 
   int unsigned ATOMIC;
 
   constraint atomic_scenario {
      if (scenario_kind == ATOMIC) {
         length == 1;
         repeated == 0;
      }
   }
 
   function new(VMM_DATA_NEW_ARGS);
      super.new(VMM_DATA_NEW_CALL);
 
      this.ATOMIC = this.define_scenario("Atomic", 1);
 
      this.scenario_kind = this.ATOMIC;
      this.length = 1;
   endfunction: new
 
   virtual function string psdisplay(string prefix = "");
      psdisplay = super.psdisplay(prefix);
   endfunction:psdisplay
 
   function void pre_randomize();
      super.pre_randomize();
   endfunction
 
   virtual task apply(channel_name channel,
                      ref int unsigned n_insts);
      super.apply(channel, n_insts);
   endtask: apply
 
endclass
 
 
class vmm_scenario_election_(class_name);
   int stream_id;
   int scenario_id;
   int unsigned n_scenarios;
   int unsigned last_selected[$];
   int unsigned next_in_set;
 
   vmm_scenario_(class_name) scenario_set[$];
 
   rand int select;
 
   constraint vmm_scenario_election_valid_(class_name) {
      select >= 0;
      select < n_scenarios;
   }
 
   constraint round_robin {
      select == next_in_set;
   }
 
endclass
 
typedef class vmm_scenario_gen_(class_name);
 
class vmm_scenario_gen_callbacks_(class_name) extends vmm_xactor_callbacks;
   virtual task pre_scenario_randomize(vmm_scenario_gen_(class_name) gen,
                                       ref vmm_scenario_(class_name) scenario);
   endtask
 
   virtual task post_scenario_gen(vmm_scenario_gen_(class_name) gen,
                                  vmm_scenario_(class_name) scenario,
                                  ref bit dropped);
   endtask
endclass
 
 
class vmm_scenario_gen_(class_name) extends VMM_XACTOR;
 
   int unsigned stop_after_n_insts;
   int unsigned stop_after_n_scenarios;
 
   typedef enum int {GENERATED,
                     DONE} symbols_e;
 
   vmm_scenario_election_(class_name) select_scenario;
 
   vmm_scenario_(class_name) scenario_set[$];
   protected vmm_scenario_(class_name) scenario_registry[string];
 
   channel_name out_chan;
 
   protected int scenario_count;
   protected int inst_count;
 
   virtual function string psdisplay(string prefix = "");
      psdisplay = super.psdisplay(prefix);
      $sformat(psdisplay, "%s [stops after #insts %0d>%0d or #scenarios %0d>%0d]",
               psdisplay, this.inst_count, this.stop_after_n_insts,
               this.scenario_count, this.stop_after_n_scenarios);
      $sformat(psdisplay, "%s\n%sOutChan: %s(%s) [level=%0d of %0d]",
               psdisplay, prefix, this.out_chan.log.get_name(),
               this.out_chan.log.get_instance(), this.out_chan.level(),
               this.out_chan.full_level());
      foreach (this.scenario_registry[name]) begin
         psdisplay = {psdisplay, "\n",
                      this.scenario_registry[name].psdisplay(prefix)};
      end
      return psdisplay;
   endfunction: psdisplay
 
   function new(string inst,
                int stream_id = -1,
                channel_name out_chan = null
                VMM_XACTOR_NEW_ARGS);
      super.new({text, " Scenario Generator"}, inst, stream_id
                VMM_XACTOR_NEW_CALL);
 
      if (out_chan == null) begin
         out_chan = new({text, " Scenario Generator output channel"},
                        inst);
         VMM_OBJECT_SET_PARENT(out_chan, this)
      end
      this.out_chan = out_chan;
      this.out_chan.set_producer(this);
      this.log.is_above(this.out_chan.log);
 
      this.scenario_count = 0;
      this.inst_count = 0;
      this.stop_after_n_insts = 0;
      this.stop_after_n_scenarios = 0;
 
      this.select_scenario = new;
      begin
         vmm_atomic_scenario_(class_name) sc = new;
         VMM_OBJECT_SET_PARENT(sc, this)
         this.register_scenario("Atomic", sc);
      end
 
      void'(this.notify.configure(GENERATED));
      void'(this.notify.configure(DONE, vmm_notify::ON_OFF));
   endfunction: new
 
   virtual function void register_scenario(string name,
                                           vmm_scenario_(class_name) scenario);
      if(name == "") begin
         vmm_error(this.log, vmm_sformatf("Invalid '%s' string was passed", name));
         return;
      end

      if(this.scenario_registry.exists(name)) begin
         vmm_error(this.log, vmm_sformatf("%s already has an entry in the scenario registry", name));
         return;
      end

      if(scenario == null) begin
         vmm_error(this.log, vmm_sformatf("scenario passed for %s is a null value", name));
         return;
      end

      this.scenario_registry[name] = scenario;

      foreach(this.scenario_set[i]) begin
         if(this.scenario_set[i] == scenario)
            return;
      end
      this.scenario_set.push_back(scenario);
   endfunction: register_scenario

   virtual function bit scenario_exists(string name);
        if(name == "") begin
            vmm_error(this.log, vmm_sformatf("Invalid '%s' string was passed", name));
            return 0;
        end

        if(this.scenario_registry.exists(name))
            scenario_exists = 1;
        else
            scenario_exists = 0;
    endfunction: scenario_exists

   virtual function void replace_scenario(string name,
                                           vmm_scenario_(class_name) scenario);
      if(name == "") begin
         vmm_error(this.log, vmm_sformatf("Invalid '%s' string was passed", name));
         return;
      end

      if(scenario == null) begin
         vmm_error(this.log, vmm_sformatf("scenario passed for %s is a null value", name));
         return;
      end

      if(!this.scenario_registry.exists(name)) begin
         vmm_error(this.log, vmm_sformatf("cannot replace a unregistered %s entry [use register_scenario]", name));
         return ;
      end

      foreach(this.scenario_set[i]) begin
         if(this.scenario_set[i] == this.scenario_registry[name]) begin
            this.scenario_set.delete(i);
            break;
         end
      end
      this.scenario_registry[name] = scenario;
      foreach(this.scenario_set[i]) begin
          if(this.scenario_set[i] == scenario)
              return;
      end
      this.scenario_set.push_back(scenario);
   endfunction: replace_scenario

   virtual function void get_all_scenario_names(ref string name[$]);
      string s;

      if(this.scenario_registry.first(s)) begin
         do begin
            name.push_back(s);
         end while(this.scenario_registry.next(s));
      end
      if(name.size() == 0) begin
         vmm_warning(this.log, "There are no entries in the scenario generator registry");
      end
   endfunction: get_all_scenario_names

   virtual function void get_names_by_scenario(vmm_scenario_(class_name) scenario,
                                               ref string name[$]);
      string s;

      if(scenario == null) begin
         vmm_error(this.log, vmm_sformatf("scenario is a null value"));
         return;
      end

      if(this.scenario_registry.first(s)) begin
         do begin
            if(this.scenario_registry[s] == scenario)
               name.push_back(s);
         end while(this.scenario_registry.next(s));
      end
      if(name.size() == 0) begin
         vmm_warning(this.log, "There are no entries in the scenario registry");
      end
   endfunction: get_names_by_scenario

   virtual function string get_scenario_name(vmm_scenario_(class_name) scenario);
        string s[$];

        if(scenario == null) begin
            vmm_error(this.log, vmm_sformatf("scenario is a null value"));
            return "";
        end

        this.get_names_by_scenario(scenario, s);

        if(s.size())
            get_scenario_name = s[0];
        else
            get_scenario_name = "";
   endfunction: get_scenario_name

   virtual function int get_scenario_index(vmm_scenario_(class_name) scenario);
       get_scenario_index = -1;
       foreach(this.scenario_set[i]) begin
          if(this.scenario_set[i] == scenario) begin
             return (get_scenario_index = i);
          end
       end
       if(get_scenario_index == -1) begin
          vmm_warning(this.log, vmm_sformatf("Cannot find the index for the scenario"));
       end
   endfunction: get_scenario_index

   virtual function bit unregister_scenario(vmm_scenario_(class_name) scenario);
      string s;
      unregister_scenario=0;

      if(scenario == null) begin
         vmm_error(this.log, vmm_sformatf("scenario is a null value"));
         return 0;
      end
      if(this.scenario_registry.first(s)) begin
         do begin
            if(this.scenario_registry[s] == scenario) begin
               this.scenario_registry.delete(s);
               unregister_scenario=1;
            end
         end while(this.scenario_registry.next(s));
      end
      if(unregister_scenario==0) begin
         vmm_warning(this.log, "There are no entries in the scenario registry");
      end
      if(unregister_scenario) begin
         foreach(this.scenario_set[i]) begin
            if(this.scenario_set[i] == scenario) begin
               this.scenario_set.delete(i);
               break;
            end
         end
      end
   endfunction: unregister_scenario

   virtual function vmm_scenario_(class_name) unregister_scenario_by_name(string name);
      if(name == "") begin
         vmm_error(this.log, vmm_sformatf("Invalid '%s' string was passed", name));
         return null;
      end
      if(!this.scenario_registry.exists(name)) begin
         vmm_warning(this.log, vmm_sformatf("There is no entry for %s in the scenario registry", name));
         return null;
      end
      else begin
         unregister_scenario_by_name = this.scenario_registry[name];
         foreach(this.scenario_set[i]) begin
            if(this.scenario_set[i] == this.scenario_registry[name]) begin
               this.scenario_set.delete(i);
               break;
            end
         end
         this.scenario_registry.delete(name);
      end
   endfunction: unregister_scenario_by_name

   virtual function vmm_scenario_(class_name) get_scenario(string name);
      if(name == "") begin
         vmm_error(this.log, vmm_sformatf("Invalid '%s' string was passed", name));
         return null;
      end
      if(!this.scenario_registry.exists(name)) begin
         vmm_error(this.log, vmm_sformatf("%s does not have an entry in the scenario registry", name));
         return null;
      end

      get_scenario = this.scenario_registry[name];
      if(get_scenario == null)
         vmm_warning(this.log, vmm_sformatf("%s has a null scenario associated with it in the scenario registry", name));

   endfunction: get_scenario
 
   function int unsigned get_n_insts();
      get_n_insts = this.inst_count;
   endfunction: get_n_insts
 
   function int unsigned get_n_scenarios();
      get_n_scenarios = this.scenario_count;
   endfunction: get_n_scenarios
 
   virtual task inject_obj(class_name obj);
      vmm_inject_item_scenario_(class_name) scenario = new(obj);
      this.inject(scenario);
   endtask: inject_obj
 
   virtual task inject(vmm_scenario_(class_name) scenario);
      bit drop = 0;
 
      scenario.stream_id = this.stream_id;
      scenario.scenario_id = this.scenario_count;
      foreach (scenario.items[i]) begin
         scenario.items[i].stream_id = scenario.stream_id;
         scenario.items[i].scenario_id = scenario.scenario_id;
         scenario.items[i].data_id = i;
      end
 
      vmm_callback(vmm_scenario_gen_callbacks_(class_name),
                    post_scenario_gen(this, scenario, drop));
 
      if (!drop) begin
         this.scenario_count++;
         this.notify.indicate(GENERATED, scenario);
 
         if (scenario.repeated > scenario.repeat_thresh) begin
            vmm_warning(this.log, vmm_sformatf("A scenario will be repeated %0d times...",
                                                 scenario.repeated));
         end
         repeat (scenario.repeated + 1) begin
            int unsigned n_insts = 0;
            scenario.apply(this.out_chan, n_insts);
            this.inst_count += n_insts;
         end
      end
   endtask: inject
 
   virtual function void reset_xactor(vmm_xactor::reset_e rst_typ = SOFT_RST);
      super.reset_xactor(rst_typ);
      this.scenario_count = 0;
      this.inst_count = 0;
      this.out_chan.flush();
      vmm_delQ(this.select_scenario.last_selected);
 
      if (rst_typ >= FIRM_RST) begin
         this.notify.reset( , vmm_notify::HARD);
      end
 
      if (rst_typ >= HARD_RST) begin
         vmm_atomic_scenario_(class_name) sc = new;
         VMM_OBJECT_SET_PARENT(sc, this)
 
         this.stop_after_n_insts = 0;
         this.stop_after_n_scenarios = 0;
         this.select_scenario = new;
         this.scenario_set.push_back(sc);
      end
 
   endfunction: reset_xactor
 
   virtual protected task main();
      vmm_scenario_(class_name) the_scenario;
 
      fork
         super.main();
      join_none
 
      if(this.scenario_set.size() == 0)
          return;
 
      while ((this.stop_after_n_insts <= 0
              || this.inst_count < this.stop_after_n_insts)
             && (this.stop_after_n_scenarios <= 0
                 || this.scenario_count < this.stop_after_n_scenarios)) begin
 
         this.wait_if_stopped();
 
         this.select_scenario.stream_id = this.stream_id;
         this.select_scenario.scenario_id = this.scenario_count;
         this.select_scenario.n_scenarios = this.scenario_set.size();
         this.select_scenario.scenario_set = this.scenario_set;
         if (this.select_scenario.last_selected.size() == 0)
            this.select_scenario.next_in_set = 0;
         else
            this.select_scenario.next_in_set = ((this.select_scenario.last_selected[$] + 1) % this.scenario_set.size());
 
         if (!this.select_scenario.randomize()) begin
            vmm_fatal(this.log, "Cannot select scenario descriptor");
            continue;
         end
 
         if (this.select_scenario.select < 0 ||
             this.select_scenario.select >= this.scenario_set.size()) begin
            vmm_fatal(this.log, vmm_sformatf("Select scenario #%0d is not within available set (0-%0d)",
                                               this.select_scenario.select,
                                               this.scenario_set.size()-1));
            continue;
         end
 
         this.select_scenario.last_selected.push_back(this.select_scenario.select);
         while (this.select_scenario.last_selected.size() > 10) begin
            void'(this.select_scenario.last_selected.pop_front());
         end
 
         the_scenario = this.scenario_set[this.select_scenario.select];
         if (the_scenario == null) begin
            vmm_fatal(this.log, vmm_sformatf("Selected scenario #%0d does not exist",
                                               this.select_scenario.select));
            continue;
         end
 
         the_scenario.stream_id = this.stream_id;
         the_scenario.scenario_id = this.scenario_count;
         foreach (the_scenario.items[i]) begin
            if (the_scenario.items[i] == null) continue;
 
            the_scenario.items[i].stream_id = the_scenario.stream_id;
            the_scenario.items[i].scenario_id = the_scenario.scenario_id;
            the_scenario.items[i].data_id = i;
         end
 
         vmm_callback(vmm_scenario_gen_callbacks_(class_name),
                       pre_scenario_randomize(this, the_scenario));
         if (the_scenario == null) continue;
 
         if (!the_scenario.randomize()) begin
            vmm_fatal(this.log, $psprintf("Cannot randomize scenario descriptor #%0d",
                                           this.select_scenario.select));
            continue;
         end
 
         this.inject(the_scenario);
      end
 
      this.notify.indicate(DONE);
      this.notify.indicate(XACTOR_STOPPED);
      this.notify.indicate(XACTOR_IDLE);
      this.notify.reset(XACTOR_BUSY);
      this.scenario_count++;
   endtask: main
  
endclass

Defined at line 44 of file sv/std_lib/vmm_scenario_gen.sv.

 `define VMM_SCENARIO_NEW_ARGS



Defined at line 170 of file sv/std_lib/vmm.sv.

 `define VMM_SCENARIO_NEW_CALL



Defined at line 172 of file sv/std_lib/vmm.sv.

 `define VMM_SCENARIO_NEW_EXTERN_ARGS



Defined at line 171 of file sv/std_lib/vmm.sv.

 `define vmm_scenario_valid_ ( class )


class``_scenario_valid

Defined at line 33 of file sv/std_lib/vmm_scenario_gen.sv.

 `define vmm_sformatf


$psprintf

Defined at line 72 of file sv/std_lib/vmm.sv.

 `define VMM_SOLVE_BEFORE_OPT


Defined at line 582 of file sv/std_lib/vmm.sv.

 `define VMM_SQL__SV


Defined at line 24 of file sv/perf/vmm_sql.sv.

 `define VMM_SQL_DB__SV


Defined at line 24 of file sv/perf/vmm_sql_db.sv.

 `define VMM_SQL_DB_ASCII__SV


Defined at line 24 of file sv/perf/vmm_sql_db_ascii.sv.

 `define VMM_SQL_DB_SQLITE__SV


 

Defined at line 24 of file sv/perf/vmm_sql_db_sqlite.sv.

 `define VMM_SQLITE_NUM_TRANS_TO_COMMIT


2047

Defined at line 36 of file sv/perf/vmm_sql_db_sqlite.sv.

 `define VMM_STATIC_M


static

Defined at line 620 of file sv/std_lib/vmm.sv.

 `define vmm_str_backref ( str, n )


vmm_str_backref(n+1)

Defined at line 113 of file sv/std_lib/vmm.sv.

 `define vmm_str_match ( str, regex )


vmm_str_match(str, regex)

Defined at line 110 of file sv/std_lib/vmm.sv.

 `define vmm_str_postmatch ( str )


vmm_str_postmatch()

Defined at line 112 of file sv/std_lib/vmm.sv.

 `define vmm_str_prematch ( str )


vmm_str_prematch()

Defined at line 111 of file sv/std_lib/vmm.sv.

 `define VMM_SUBENV


vmm_subenv

Defined at line 258 of file sv/std_lib/vmm.sv.

 `define VMM_SUBENV_BASE_METHODS


Defined at line 275 of file sv/std_lib/vmm.sv.

 `define VMM_SUBENV_BASE_NEW_ARGS


Defined at line 266 of file sv/std_lib/vmm.sv.

 `define VMM_SUBENV_BASE_NEW_EXTERN_ARGS


Defined at line 267 of file sv/std_lib/vmm.sv.

 `define vmm_subenv_member_begin ( _class )




function void do_all(vmm_subenv::do_what_e do_what,
                        vmm_env::restart_e restart = vmm_env::FIRM);
      super.do_all(do_what, restart);

Defined at line 23 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_channel ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                    this._name.psdisplay({this.__vmm_prefix, `"_name: `"}));
        end
        DO_RESET: begin
           case (restart)
           vmm_env::FIRM: this._name.flush();
           vmm_env::HARD: this._name.kill();
           endcase
        end
        DO_VOTE: begin
           this.end_test.register_channel(this._name);
        end
      endcase

Defined at line 79 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_channel_aa_scalar ( _name, _do )



Defined at line 127 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_channel_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%s]: ",
                                                             this.__vmm_prefix,
                                                             `"_name`", i)));
           end
        end
        DO_RESET: begin
           case (restart)
           vmm_env::FIRM: foreach (this._name[i]) begin
              this._name[i].flush();
           end
           vmm_env::HARD: foreach (this._name[i]) begin
              this._name[i].kill();
           end
           endcase
        end
        DO_VOTE: begin
           foreach (this._name[i]) begin
              this.end_test.register_channel(this._name[i]);
           end
        end
      endcase

Defined at line 132 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_channel_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%0d]: ",
                                                             this.__vmm_prefix,
                                                             `"_name`", i)));
           end
        end
        DO_RESET: begin
           case (restart)
           vmm_env::FIRM: foreach (this._name[i]) begin
              this._name[i].flush();
           end
           vmm_env::HARD: foreach (this._name[i]) begin
              this._name[i].kill();
           end
           endcase
        end
        DO_VOTE: begin
           foreach (this._name[i]) begin
              this.end_test.register_channel(this._name[i]);
           end
        end
      endcase

Defined at line 98 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_end ( _class )



endfunction
 
   virtual function string psdisplay(string prefix = `"`");
      this.__vmm_done_user = 1;
      psdisplay = this.do_psdisplay(prefix);
      if (this.__vmm_done_user) return psdisplay;
 
      this.__vmm_image = super.psdisplay(prefix);
      this.__vmm_prefix = prefix;
      if (vmm_str_match(prefix, ": $")) begin
         this.__vmm_prefix = {vmm_str_prematch(prefix), "."};
      end
      this.do_all(DO_PRINT);
      return this.__vmm_image;
   endfunction
 
   virtual task start();
      super.start();
      this.__vmm_done_user = 1;
      this.do_vote();
      if (!this.__vmm_done_user) begin
         this.do_all(DO_VOTE);
      end
 
      this.__vmm_done_user = 1;
      this.do_start();
      if (this.__vmm_done_user) return;
 
      this.__vmm_forks = 0;
      this.do_all(DO_START);
      wait (this.__vmm_forks == 0);
   endtask
 
   virtual task stop();
      super.stop();
      this.__vmm_done_user = 1;
      this.do_stop();
      if (this.__vmm_done_user) return;
 
      this.__vmm_forks = 0;
      this.do_all(DO_STOP);
      wait (this.__vmm_forks == 0);
   endtask
 
   virtual task reset(vmm_env::restart_e kind = vmm_env::FIRM);
      super.stop();
      this.__vmm_done_user = 1;
      this.do_reset(kind);
      if (this.__vmm_done_user) return;
 
      this.__vmm_forks = 0;
      this.do_all(DO_RESET, kind);
      wait (this.__vmm_forks == 0);
   endtask
`include "std_lib/vmm_env_macros.sv"

Defined at line 427 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_enum ( _name, _do )



Defined at line 42 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_enum_aa_scalar ( _name, _do )



Defined at line 48 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_enum_aa_string ( _name, _do )



Defined at line 51 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_enum_array ( _name, _do )



Defined at line 45 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_scalar ( _name, _do )



`define vmm_xactor_member_scalar(_name, _do)

Defined at line 30 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_scalar_aa_scalar ( _name, _do )



Defined at line 36 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_scalar_aa_string ( _name, _do )



Defined at line 39 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_scalar_array ( _name, _do )



Defined at line 33 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_string ( _name, _do )



Defined at line 54 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_string_aa_scalar ( _name, _do )



Defined at line 60 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_string_aa_string ( _name, _do )



Defined at line 63 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_string_array ( _name, _do )



Defined at line 57 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_subenv ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           string _prefix = this.__vmm_prefix;
           $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                    this._name.psdisplay({this.__vmm_prefix, `"_name: `"}));
           this.__vmm_prefix = _prefix;
        end
        DO_START: begin
           this.__vmm_forks++;
           fork
              begin
                 this._name.start();
                 this.__vmm_forks--;
              end
           join_none
        end
        DO_STOP: begin
           this.__vmm_forks++;
           fork
              begin
                 this._name.stop();
                 this.__vmm_forks--;
              end
           join_none
        end
        DO_RESET: begin
           this.__vmm_forks++;
           fork
              begin
                 this._name.reset(restart);
                 this.__vmm_forks--;
              end
           join_none
        end
      endcase

Defined at line 274 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_subenv_aa_scalar ( _name, _do )



Defined at line 365 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_subenv_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           string _prefix = this.__vmm_prefix;
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%s]: ",
                                                             _prefix,
                                                             `"_name`", i)));
           end
           this.__vmm_prefix = _prefix;
        end
        DO_START: begin
           this.__vmm_forks++;
           foreach (this._name[i]) begin
              automatic string j = i;
              fork
                 begin
                    this._name[j].start();
                    this.__vmm_forks--;
                 end
              join_none
           end
        end
        DO_STOP: begin
           this.__vmm_forks++;
           foreach (this._name[i]) begin
              automatic string j = i;
              fork
                 begin
                    this._name[j].stop();
                    this.__vmm_forks--;
                 end
              join_none
           end
        end
        DO_RESET: begin
           this.__vmm_forks++;
           foreach (this._name[i]) begin
              automatic int j = i;
              fork
                 begin
                    this._name[j].reset(restart);
                    this.__vmm_forks--;
                 end
              join_none
           end
        end
      endcase

Defined at line 369 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_subenv_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           string _prefix = this.__vmm_prefix;
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%0d]: ",
                                                             _prefix,
                                                             `"_name`", i)));
           end
           this.__vmm_prefix = _prefix;
        end
        DO_START: begin
           this.__vmm_forks++;
           foreach (this._name[i]) begin
              automatic int j = i;
              fork
                 begin
                    this._name[j].start();
                    this.__vmm_forks--;
                 end
              join_none
           end
        end
        DO_STOP: begin
           this.__vmm_forks++;
           foreach (this._name[i]) begin
              automatic int j = i;
              fork
                 begin
                    this._name[j].stop();
                    this.__vmm_forks--;
                 end
              join_none
           end
        end
        DO_RESET: begin
           this.__vmm_forks++;
           foreach (this._name[i]) begin
              automatic int j = i;
              fork
                 begin
                    this._name[j].reset(restart);
                    this.__vmm_forks--;
                 end
              join_none
           end
        end
      endcase

Defined at line 313 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_user_defined ( _name )




this.__vmm_restart = restart;
      void'(this.do_``_name(do_what));

Defined at line 421 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_vmm_data ( _name, _do )



Defined at line 66 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_vmm_data_aa_scalar ( _name, _do )



Defined at line 72 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_vmm_data_aa_string ( _name, _do )



Defined at line 75 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_vmm_data_array ( _name, _do )



Defined at line 69 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_xactor ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           string _prefix = this.__vmm_prefix;
           $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                    this._name.psdisplay({this.__vmm_prefix, `"_name: `"}));
           this.__vmm_prefix = _prefix;
        end
        DO_START: begin
           this._name.start_xactor();
        end
        DO_STOP: begin
           this._name.stop_xactor();
        end
        DO_RESET: begin
           case (restart)
           vmm_env::FIRM: this._name.reset_xactor(vmm_xactor::SOFT_RST);
           vmm_env::HARD: this._name.kill();
           endcase
        end
        DO_VOTE: begin
           this.end_test.register_xactor(this._name);
        end
      endcase

Defined at line 161 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_xactor_aa_scalar ( _name, _do )



Defined at line 229 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_xactor_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           string _prefix = this.__vmm_prefix;
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%s]: ",
                                                             _prefix,
                                                             `"_name`", i)));
           end
           this.__vmm_prefix = _prefix;
        end
        DO_START: begin
           foreach (this._name[i]) begin
              this._name[i].start_xactor();
           end
        end
        DO_STOP: begin
           foreach (this._name[i]) begin
              this._name[i].stop_xactor();
           end
        end
        DO_RESET: begin
           case (restart)
           vmm_env::FIRM: foreach (this._name[i]) begin
              this._name[i].reset_xactor();
           end
           vmm_env::HARD: foreach (this._name[i]) begin
              this._name[i].kill();
           end
           endcase
        end
        DO_VOTE: begin
           foreach (this._name[i]) begin
              this.end_test.register_xactor(this._name[i]);
           end
        end
      endcase

Defined at line 233 of file sv/std_lib/vmm_subenv_macros.sv.

 `define vmm_subenv_member_xactor_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           string _prefix = this.__vmm_prefix;
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%0d]: ",
                                                             _prefix,
                                                             `"_name`", i)));
           end
           this.__vmm_prefix = _prefix;
        end
        DO_START: begin
           foreach (this._name[i]) begin
              this._name[i].start_xactor();
           end
        end
        DO_STOP: begin
           foreach (this._name[i]) begin
              this._name[i].stop_xactor();
           end
        end
        DO_RESET: begin
           case (restart)
           vmm_env::FIRM: foreach (this._name[i]) begin
              this._name[i].reset_xactor();
           end
           vmm_env::HARD: foreach (this._name[i]) begin
              this._name[i].kill();
           end
           endcase
        end
        DO_VOTE: begin
           foreach (this._name[i]) begin
              this.end_test.register_xactor(this._name[i]);
           end
        end
      endcase

Defined at line 188 of file sv/std_lib/vmm_subenv_macros.sv.

 `define VMM_SUBENV_NEW_ARGS


Defined at line 261 of file sv/std_lib/vmm.sv.

 `define VMM_SUBENV_NEW_CALL


Defined at line 263 of file sv/std_lib/vmm.sv.

 `define VMM_SUBENV_NEW_EXTERN_ARGS


Defined at line 262 of file sv/std_lib/vmm.sv.

 `define vmm_test_begin ( testclassname, envclassname, doc )



class testclassname extends vmm_test;
    envclassname env;
    function new();
      super.new(`"testclassname`", doc);
    endfunction
    static testclassname testclassname``_inst = new();
    task run(vmm_env env1);
      $cast(env, env1);
      begin

Defined at line 596 of file sv/std_lib/vmm.sv.

 `define vmm_test_end ( testclassname )



end
    endtask
  endclass

Defined at line 607 of file sv/std_lib/vmm.sv.

 `define vmm_trace ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::DEBUG_TYP, vmm_log::TRACE_SEV, __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 362 of file sv/std_lib/vmm.sv.

 `define vmm_transaction ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::TRANSACTION_TYP, , __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 432 of file sv/std_lib/vmm.sv.

 `define vmm_user ( n, log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::USER_TYP_``n, , __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 452 of file sv/std_lib/vmm.sv.

 `define vmm_verbose ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::DEBUG_TYP, vmm_log::VERBOSE_SEV, __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while (0)

Defined at line 382 of file sv/std_lib/vmm.sv.

 `define VMM_VERSION__SV


Defined at line 27 of file sv/std_lib/vmm_version.sv.

 `define vmm_warning ( log, msg )



do
   /* synopsys translate_off */
   if (log.start_msg(vmm_log::FAILURE_TYP, vmm_log::WARNING_SEV, __FILE__, __LINE__)) begin
      void'(log.text(msg));
      log.end_msg();
   end
   /* synopsys translate_on */
while(0)

Defined at line 312 of file sv/std_lib/vmm.sv.

 `define VMM_XACTOR


vmm_xactor

Defined at line 237 of file sv/std_lib/vmm.sv.

 `define VMM_XACTOR_BASE_METHODS


Defined at line 254 of file sv/std_lib/vmm.sv.

 `define VMM_XACTOR_BASE_NEW_ARGS


Defined at line 245 of file sv/std_lib/vmm.sv.

 `define VMM_XACTOR_BASE_NEW_EXTERN_ARGS


Defined at line 246 of file sv/std_lib/vmm.sv.

 `define vmm_xactor_member_begin ( _class )




function void do_all(vmm_xactor::do_what_e do_what,
                        vmm_xactor::reset_e rst_typ = SOFT_RST);
      super.do_all(do_what, rst_typ);

Defined at line 23 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_channel ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                    this._name.psdisplay({this.__vmm_prefix, `"_name: `"}));
        end
        DO_RESET: begin
           this._name.flush();
        end
        DO_KILL: begin
           this._name.kill();
        end
      endcase

Defined at line 196 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_channel_aa_scalar ( _name, _do )



Defined at line 236 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_channel_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%s]: ",
                                                             this.__vmm_prefix,
                                                             `"_name`", i)));
           end
        end
        DO_RESET: begin
           foreach (this._name[i]) begin
              this._name[i].flush();
           end
        end
        DO_KILL: begin
           foreach (this._name[i]) begin
              this._name[i].kill();
           end
        end
      endcase

Defined at line 241 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_channel_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%0d]: ",
                                                             this.__vmm_prefix,
                                                             `"_name`", i)));
           end
        end
        DO_RESET: begin
           foreach (this._name[i]) begin
              this._name[i].flush();
           end
        end
        DO_KILL: begin
           foreach (this._name[i]) begin
              this._name[i].kill();
           end
        end
      endcase

Defined at line 212 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_end ( _class )



endfunction
 
   virtual function string psdisplay(string prefix = `"`");
      this.__vmm_done_user = 1;
      psdisplay = this.do_psdisplay(prefix);
      if (this.__vmm_done_user) return psdisplay;
 
      this.__vmm_image = super.psdisplay(prefix);
      this.__vmm_prefix = prefix;
      if (vmm_str_match(prefix, ": $")) begin
         this.__vmm_prefix = {vmm_str_prematch(prefix), "."};
      end
      this.do_all(DO_PRINT);
      return this.__vmm_image;
   endfunction
 
   virtual function void start_xactor();
      super.start_xactor();
      this.__vmm_done_user = 1;
      this.do_start_xactor();
      if (this.__vmm_done_user) return;
 
      this.do_all(DO_START);
   endfunction
 
   virtual function void stop_xactor();
      super.stop_xactor();
      this.__vmm_done_user = 1;
      this.do_stop_xactor();
      if (this.__vmm_done_user) return;
 
      this.do_all(DO_STOP);
   endfunction
 
   virtual function void reset_xactor(vmm_xactor::reset_e rst_typ = SOFT_RST);
      super.reset_xactor(rst_typ);
      this.__vmm_done_user = 1;
      this.do_reset_xactor(rst_typ);
      if (this.__vmm_done_user) return;
 
      this.do_all(DO_RESET, rst_typ);
   endfunction
 
   virtual function void kill();
      super.kill();
      this.__vmm_done_user = 1;
      this.do_kill_xactor();
      if (this.__vmm_done_user) return;
 
      this.do_all(DO_KILL);
   endfunction

Defined at line 371 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_enum ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           $sformat(this.__vmm_image, `"%s\n%s%s: %0s`", this.__vmm_image,
                    this.__vmm_prefix, `"_name`", this._name.name());
        end
      endcase

Defined at line 71 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_enum_aa_scalar ( _name, _do )




`define vmm_xactor_member_enum_array(_name, _do)

Defined at line 94 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_enum_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s%s[%s]: %s`",
                       this.__vmm_image, this.__vmm_prefix,
                       `"_name`", i, this._name[i].name());
           end
        end
      endcase

Defined at line 99 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_enum_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s%s[%0d]: %0s`",
                       this.__vmm_image, this.__vmm_prefix,
                       `"_name`", i, this._name[i].name());
           end
        end
      endcase

Defined at line 81 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_scalar ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           $sformat(this.__vmm_image, `"%s\n%s%s: %0d`", this.__vmm_image,
                    this.__vmm_prefix, `"_name`", this._name);
        end
      endcase

Defined at line 30 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_scalar_aa_scalar ( _name, _do )



Defined at line 53 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_scalar_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s%s[%s]: %0d`",
                       this.__vmm_image, this.__vmm_prefix,
                       `"_name`", i, this._name[i]);
           end
        end
      endcase

Defined at line 58 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_scalar_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s%s[%0d]: %0d`",
                       this.__vmm_image, this.__vmm_prefix,
                       `"_name`", i, this._name[i]);
           end
        end
      endcase

Defined at line 40 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           $sformat(this.__vmm_image, `"%s\n%s%s: %s`", this.__vmm_image,
                    this.__vmm_prefix, `"_name`", this._name);
        end
      endcase

Defined at line 112 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_string_aa_scalar ( _name, _do )



Defined at line 135 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_string_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s%s[%s]: %s`",
                       this.__vmm_image, this.__vmm_prefix,
                       `"_name`", i, this._name[i]);
           end
        end
      endcase

Defined at line 140 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_string_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s%s[%0d]: %s`",
                       this.__vmm_image, this.__vmm_prefix,
                       `"_name`", i, this._name[i]);
           end
        end
      endcase

Defined at line 122 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_user_defined ( _name )




void'(this.do_``_name(do_what, rst_typ));

Defined at line 366 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_vmm_data ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                    this._name.psdisplay({this.__vmm_prefix, `"_name: `"}));
        end
      endcase

Defined at line 153 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_vmm_data_aa_scalar ( _name, _do )



Defined at line 177 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_vmm_data_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%s]: ",
                                                             this.__vmm_prefix,
                                                             `"_name`", i)));
           end
        end
      endcase

Defined at line 182 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_vmm_data_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%0d]: ",
                                                             this.__vmm_prefix,
                                                             `"_name`", i)));
           end
        end
      endcase

Defined at line 163 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_xactor ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           string _prefix = this.__vmm_prefix;
           $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                    this._name.psdisplay({this.__vmm_prefix, `"_name: `"}));
           this.__vmm_prefix = _prefix;
        end
        DO_START: begin
           this._name.start_xactor();
        end
        DO_STOP: begin
           this._name.stop_xactor();
        end
        DO_RESET: begin
           this._name.reset_xactor(rst_typ);
        end
        DO_KILL: begin
           this._name.kill();
        end
      endcase

Defined at line 265 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_xactor_aa_scalar ( _name, _do )



Defined at line 325 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_xactor_aa_string ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           string _prefix = this.__vmm_prefix;
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%s]: ",
                                                             _prefix,
                                                             `"_name`", i)));
           end
           this.__vmm_prefix = _prefix;
        end
        DO_START: begin
           foreach (this._name[i]) begin
              this._name[i].start_xactor();
           end
        end
        DO_STOP: begin
           foreach (this._name[i]) begin
              this._name[i].stop_xactor();
           end
        end
        DO_RESET: begin
           foreach (this._name[i]) begin
              this._name[i].reset_xactor(rst_typ);
           end
        end
        DO_KILL: begin
           foreach (this._name[i]) begin
              this._name[i].kill();
           end
        end
      endcase

Defined at line 330 of file sv/std_lib/vmm_xactor_macros.sv.

 `define vmm_xactor_member_xactor_array ( _name, _do )




case (do_what & _do)
        DO_PRINT: begin
           string _prefix = this.__vmm_prefix;
           foreach (this._name[i]) begin
              $sformat(this.__vmm_image, `"%s\n%s`", this.__vmm_image,
                       this._name[i].psdisplay(vmm_sformatf("%s%s[%0d]: ",
                                                             _prefix,
                                                             `"_name`", i)));
           end
           this.__vmm_prefix = _prefix;
        end
        DO_START: begin
           foreach (this._name[i]) begin
              this._name[i].start_xactor();
           end
        end
        DO_STOP: begin
           foreach (this._name[i]) begin
              this._name[i].stop_xactor();
           end
        end
        DO_RESET: begin
           foreach (this._name[i]) begin
              this._name[i].reset_xactor(rst_typ);
           end
        end
        DO_KILL: begin
           foreach (this._name[i]) begin
              this._name[i].kill();
           end
        end
      endcase

Defined at line 289 of file sv/std_lib/vmm_xactor_macros.sv.

 `define VMM_XACTOR_NEW_ARGS


Defined at line 240 of file sv/std_lib/vmm.sv.

 `define VMM_XACTOR_NEW_CALL


Defined at line 242 of file sv/std_lib/vmm.sv.

 `define VMM_XACTOR_NEW_EXTERN_ARGS


Defined at line 241 of file sv/std_lib/vmm.sv.