// Use `uvm_sequence_utils[_begin] for non-parameterized classes and// `uvm_sequence_param_utils[_begin] for parameterized classes.`define uvm_sequence_utils(TYPE_NAME, SEQUENCER) \ `uvm_sequence_utils_begin(TYPE_NAME,SEQUENCER) \ `uvm_sequence_utils_end//-----------------------------------------------------------------------------//// *** DEPRECATED ***//// Group- Sequencer Registration Macros//// The sequencer-specific macros perform the same function as the set of// `uvm_componenent_*utils macros except that they also declare the plumbing// necessary for creating the sequencer's sequence library.//-----------------------------------------------------------------------------`define uvm_declare_sequence_lib \ protected bit m_set_sequences_called = 1; \ static protected string m_static_sequences[$]; \ static protected string m_static_remove_sequences[$]; \ \ static function bit add_typewide_sequence(string type_name); \ m_static_sequences.push_back(type_name); \ return 1; \ endfunction\ \ static function bit remove_typewide_sequence(string type_name); \ m_static_remove_sequences.push_back(type_name); \ for (int i = 0; i < m_static_sequences.size(); i++) begin \ if (m_static_sequences[i] == type_name) \ m_static_sequences.delete(i); \ end \
// This macro populates the instance-specific sequence library for a sequencer.// It should be invoked inside the sequencer��s constructor.`define uvm_update_sequence_lib \ m_add_builtin_seqs(0); \ uvm_update_sequence_lib();// MACRO- `uvm_update_sequence_lib_and_item//// This macro populates the instance specific sequence library for a sequencer,// and it registers the given ~USER_ITEM~ as an instance override for the simple// sequence's item variable.//// The macro should be invoked inside the sequencer's constructor.`define uvm_update_sequence_lib_and_item(USER_ITEM) \ begin uvm_coreservice_t cs = uvm_coreservice_t::get(); uvm_factory factory=cs.get_factory(); \ factory.set_inst_override_by_type( \ uvm_sequence_item::get_type(), USER_ITEM::get_type(), \ {get_full_name(), "*.item"}); end \ m_add_builtin_seqs(1); \ uvm_update_sequence_lib();// MACRO- `uvm_sequencer_utils`define uvm_sequencer_utils(TYPE_NAME) \ `uvm_sequencer_utils_begin(TYPE_NAME) \ `uvm_sequencer_utils_end// MACRO- `uvm_sequencer_utils_begin`define uvm_sequencer_utils_begin(TYPE_NAME) \ `uvm_declare_sequence_lib \ `uvm_component_utils_begin(TYPE_NAME)// MACRO- `uvm_sequencer_param_utils`define uvm_sequencer_param_utils(TYPE_NAME) \ `uvm_sequencer_param_utils_begin(TYPE_NAME) \ `uvm_sequencer_utils_end
// Use uvm_end_package to endpackage.//-----------------------------------------------------------------------------`define uvm_package(PKG) \ package PKG; \ class uvm_bogus_class extends uvm::uvm_sequence;\ endclass`define uvm_end_package \ endpackage//-----------------------------------------------------------------------------//// MACRO- `uvm_sequence_library_package//// This macro is used to trigger static initializers in packages. `uvm_package// creates a bogus type which gets referred to by uvm_sequence_library_package// to make a package-based variable of the bogus type.//-----------------------------------------------------------------------------`define uvm_sequence_library_package(PKG_NAME) \ import PKG_NAME``::*; \ PKG_NAME``::uvm_bogus_class M_``PKG_NAME``uvm_bogus_class`endif// UVM_NO_DEPRECATED
//| endclass`define uvm_add_to_seq_lib(TYPE,LIBTYPE) \ static bit add_``TYPE``_to_seq_lib_``LIBTYPE =\ LIBTYPE::m_add_typewide_sequence(TYPE::get_type());// MACRO: `uvm_sequence_library_utils////| `uvm_sequence_library_utils(TYPE)// // Declares the infrastructure needed to define extensions to the// <uvm_sequence_library> class. You define new sequence library subtypes// to statically specify sequence membership from within sequence// definitions. See also <`uvm_add_to_sequence_library> for more information.////
// @uvm-ieee 1800.2-2020 auto B.3.2.1`define uvm_add_to_seq_lib(TYPE,LIBTYPE) \ static bit add_``TYPE``_to_seq_lib_``LIBTYPE =\ LIBTYPE::m_add_typewide_sequence(TYPE::get_type());// MACRO -- NODOCS -- `uvm_sequence_library_utils////| `uvm_sequence_library_utils(TYPE)// // Declares the infrastructure needed to define extensions to the// <uvm_sequence_library> class. You define new sequence library subtypes// to statically specify sequence membership from within sequence// definitions. See also <`uvm_add_to_sequence_library> for more information.////