SVT - Macro Reference

Macros defined for SVT:

G  M  S  U


G
GUARD_SVT_8B10B_DATA_SV 
GUARD_SVT_ACCEPT_BEGIN_END_FILTER_PORT_SV 
GUARD_SVT_AGENT_SV 
GUARD_SVT_BASE_MEM_SUITE_CONFIGURATION_SV 
GUARD_SVT_BFM_SHELL_ASSISTANT_SV 
GUARD_SVT_BFM_SHELL_SOURCE_UVM_SVI 
GUARD_SVT_BFM_SHELL_UVM_PKG 
GUARD_SVT_BOOTLOADER_SVI 
GUARD_SVT_BROADCAST_SEQUENCE_SV 
GUARD_SVT_BROADCAST_SV 
GUARD_SVT_CALLBACK_SOURCE_SV 
GUARD_SVT_CHANNEL_SV 
GUARD_SVT_CMD_DEFINES_SVI 
GUARD_SVT_COMMON_DEFINES_SVI 
GUARD_SVT_COMPARER_SV 
GUARD_SVT_COMPONENT_SV 
GUARD_SVT_COMPOUND_PATTERN_DATA_SV 
GUARD_SVT_CONFIG_DB_SV 
GUARD_SVT_CONFIGURATION_SV 
GUARD_SVT_CONSENSUS_SV 
GUARD_SVT_CONTROLLED_EVENT_SV 
GUARD_SVT_DATA_CONVERTER_SV 
GUARD_SVT_DATA_FSDB_WRITER_SV 
GUARD_SVT_DATA_ITER_SV 
GUARD_SVT_DATA_QUEUE_ITER_SV 
GUARD_SVT_DATA_STREAM_SV 
GUARD_SVT_DATA_SV 
GUARD_SVT_DATA_UTIL_SVI 
GUARD_SVT_DATA_WRITER_SV 
GUARD_SVT_DEBUG_OPTS_CARRIER_SV 
GUARD_SVT_DEBUG_OPTS_IMP_PORT_SV 
GUARD_SVT_DEBUG_OPTS_INTERCEPT_SV 
GUARD_SVT_DEBUG_OPTS_PORT_SV 
GUARD_SVT_DEBUG_OPTS_SV 
GUARD_SVT_DEBUG_VIP_DESCRIPTOR_SV 
GUARD_SVT_DEFINES_SVI 
GUARD_SVT_DISPATCH_SEQUENCE_SV 
GUARD_SVT_DISPATCH_SV 
GUARD_SVT_DOWNSTREAM_IMP_SV 
GUARD_SVT_DRIVER_BFM_SHELL_SV 
GUARD_SVT_DRIVER_SV 
GUARD_SVT_DYNAMIC_REPORT_OBJECT_SV 
GUARD_SVT_ENV_SV 
GUARD_SVT_ERR_CATCHER_SV 
GUARD_SVT_ERR_CHECK_STATS_COV_SV 
GUARD_SVT_ERR_CHECK_STATS_SV 
GUARD_SVT_ERR_CHECK_SV 
GUARD_SVT_EVENT_CONTROLLER_SV 
GUARD_SVT_EVENT_POOL_SV 
GUARD_SVT_EXCEPTION_LIST_SV 
GUARD_SVT_EXCEPTION_SV 
GUARD_SVT_EXIT_TIMER_SV 
GUARD_SVT_FACTORY_1ARG_SV 
GUARD_SVT_FACTORY_2ARG_SV 
GUARD_SVT_FACTORY_3ARG_SV 
GUARD_SVT_FACTORY_SV 
GUARD_SVT_FIFO_RATE_CONTROL 
GUARD_SVT_FIFO_RATE_CONTROL_CONFIGURATION_SV 
GUARD_SVT_FSM_SV 
GUARD_SVT_FUZZY_REAL_COMPARER_SV 
GUARD_SVT_GLOBALS_SV 
GUARD_SVT_IF_UTIL_SVI 
GUARD_SVT_INTERNAL_XACTOR_SV 
GUARD_SVT_LOADER_UTIL_SVI 
GUARD_SVT_LOGGER_SV 
GUARD_SVT_MEM_ADDRESS_MAPPER_STACK_SV 
GUARD_SVT_MEM_ADDRESS_MAPPER_SV 
GUARD_SVT_MEM_BACKDOOR_BASE_SV 
GUARD_SVT_MEM_BACKDOOR_SV 
GUARD_SVT_MEM_CATALOG_SV 
GUARD_SVT_MEM_CATALOG_SVI 
GUARD_SVT_MEM_CMD_ASSISTANT_SV 
GUARD_SVT_MEM_COMMON_DEFINES_SVI 
GUARD_SVT_MEM_CONFIGURATION_SV 
GUARD_SVT_MEM_CORE_SV 
GUARD_SVT_MEM_DEFINES_SVI 
GUARD_SVT_MEM_DPI_SVI 
GUARD_SVT_MEM_DRIVER_CALLBACK_SV 
GUARD_SVT_MEM_DRIVER_SV 
GUARD_SVT_MEM_RAM_SEQUENCE_SV 
GUARD_SVT_MEM_SA_CORE_2state_SV 
GUARD_SVT_MEM_SA_CORE_4state_SV 
GUARD_SVT_MEM_SA_DEFS_SVI 
GUARD_SVT_MEM_SA_DPI_SVI 
GUARD_SVT_MEM_SA_HELPERS_SV 
GUARD_SVT_MEM_SEQUENCE_SV 
GUARD_SVT_MEM_SEQUENCER_SV 
GUARD_SVT_MEM_SOURCE_UVM_SVI 
GUARD_SVT_MEM_SUITE_CONFIGURATION_SV 
GUARD_SVT_MEM_SV 
GUARD_SVT_MEM_SYSTEM_BACKDOOR_SV 
GUARD_SVT_MEM_TRANSACTION_SV 
GUARD_SVT_MEM_UVM_PKG 
GUARD_SVT_MEM_WORD_SV 
GUARD_SVT_MESSAGE_MANAGER_SV 
GUARD_SVT_MONITOR_BFM_SHELL_SV 
GUARD_SVT_MONITOR_SV 
GUARD_SVT_NOTIFY_SV 
GUARD_SVT_NVS_LOADER_UTIL_SVI 
GUARD_SVT_OBJECT_PATTERN_DATA_SV 
GUARD_SVT_PA_OBJECT_DATA_SV 
GUARD_SVT_PACKER_SV 
GUARD_SVT_PATTERN_DATA_CARRIER_SV 
GUARD_SVT_PATTERN_DATA_SV 
GUARD_SVT_PATTERN_SEQUENCE_SV 
GUARD_SVT_PATTERN_SV 
GUARD_SVT_PHASE_SV 
GUARD_SVT_PKG_PRECURSOR_SV 
GUARD_SVT_RANDOMIZE_ASSISTANT_SV 
GUARD_SVT_REACTIVE_DRIVER_SV 
GUARD_SVT_REACTIVE_SEQUENCE_SV 
GUARD_SVT_REACTIVE_SEQUENCER_SV 
GUARD_SVT_REPORT_CATCHER_SV 
GUARD_SVT_SEQUENCE_LIBRARY_SV 
GUARD_SVT_SEQUENCE_SV 
GUARD_SVT_SEQUENCER_SV 
GUARD_SVT_SOURCE_INTERNAL_SVI 
GUARD_SVT_SOURCE_UVM_SVI 
GUARD_SVT_STATUS_SV 
GUARD_SVT_SVC_ERR_CHECK_STATS_SV 
GUARD_SVT_SVC_ERR_CHECK_SV 
GUARD_SVT_SVC_MESSAGE_MANAGER_SV 
GUARD_SVT_SVC_SOURCE_UVM_SVI 
GUARD_SVT_SVC_UVM_PKG 
GUARD_SVT_TIMER_SV 
GUARD_SVT_TOGGLE_COV_BIT_SV 
GUARD_SVT_TOGGLE_COV_BIT_VECTOR_SV 
GUARD_SVT_TRAFFIC_ARBITER_SV 
GUARD_SVT_TRAFFIC_PROFILE_EVENT_SV 
GUARD_SVT_TRAFFIC_PROFILE_TRANSACTION_SV 
GUARD_SVT_TRANSACTION_ITER_SV 
GUARD_SVT_TRANSACTION_REPORT_SV 
GUARD_SVT_TRANSACTION_SV 
GUARD_SVT_TRIGGERED_TIMER_SV 
GUARD_SVT_TYPES_SV 
GUARD_SVT_UVM_CMD_ASSISTANT_SV 
GUARD_SVT_UVM_CMD_DEFINES_SVI 
GUARD_SVT_UVM_PKG 
GUARD_SVT_UVM_UTIL_SVI 
GUARD_SVT_VCAP_SV 
GUARD_SVT_VIP_WRITER_FSDB_UTIL_SV 
GUARD_SVT_VIP_WRITER_SV 
GUARD_SVT_VMM_UVM_BRIDGE_SOURCE_UVM_SVI 
GUARD_SVT_VMM_UVM_BRIDGE_UVM_PKG 
GUARD_SVT_VOTER_SV 
GUARD_SVT_XACTOR_CALLBACK_SV 
GUARD_SVT_XACTOR_SV 
GUARD_SVT_XML_WRITER_SV 

M
M_FIELD_QDA_ENUM 
M_UVM_ARRAY_RESIZE 
m_uvm_bottomup_phase 
m_uvm_component_registry_internal 
m_uvm_component_registry_param 
M_UVM_FIELD_DATA_AA_enum_key 
M_UVM_FIELD_DATA_AA_generic 
M_UVM_FIELD_DATA_AA_int_key 
M_UVM_FIELD_DATA_AA_int_string 
M_UVM_FIELD_DATA_AA_object_int 
M_UVM_FIELD_DATA_AA_object_string 
M_UVM_FIELD_DATA_AA_string_string 
M_UVM_FIELD_QDA_INT 
M_UVM_FIELD_QDA_OBJECT 
M_UVM_FIELD_QDA_REAL 
M_UVM_FIELD_QDA_STRING 
M_UVM_FIELD_SET_AA_INT_ENUMTYPE 
M_UVM_FIELD_SET_AA_INT_TYPE 
M_UVM_FIELD_SET_AA_OBJECT_TYPE 
M_UVM_FIELD_SET_AA_TYPE 
m_uvm_get_type_name_func 
m_uvm_object_create_func 
m_uvm_object_registry_internal 
m_uvm_object_registry_param 
M_UVM_QUEUE_RESIZE 
m_uvm_record_int 
m_uvm_record_object 
m_uvm_record_qda_enum 
m_uvm_record_qda_int 
m_uvm_record_qda_object 
m_uvm_record_qda_real 
m_uvm_record_qda_string 
m_uvm_record_string 
m_uvm_register_sequence 
M_UVM_SARRAY_RESIZE 
m_uvm_task_phase 
m_uvm_topdown_phase 

S
START_ITEM_SEQ 
SVT_ABSTRACT 
svt_add_to_seq_lib 
SVT_ALL_ON 
SVT_BATHTUB_DIST 
SVT_BATHTUB_LOWER_WT_DIST 
SVT_BATHTUB_MIDDLE_WT_DIST 
SVT_BATHTUB_UPPER_WT_DIST 
SVT_BIAS_DIST 
SVT_BIAS_LOWER_WT_DIST 
SVT_BIAS_UPPER_WT_DIST 
SVT_BIN 
svt_callback_utils 
SVT_CHANNEL_BASE_TYPE 
SVT_CMD_ASSISTANT_TYPE 
SVT_CMD_CALLBACKS_RESET_TIMEOUT 
SVT_CMD_CLEAR_SEVERITY 
SVT_CMD_DEBUG_SEVERITY 
SVT_CMD_DEBUG_VERBOSITY 
SVT_CMD_ERROR_SEVERITY 
SVT_CMD_FATAL_SEVERITY 
SVT_CMD_FIRM 
SVT_CMD_FIRM_RST 
SVT_CMD_HARD 
SVT_CMD_HARD_RST 
SVT_CMD_NONE_VERBOSITY 
SVT_CMD_NORMAL_SEVERITY 
SVT_CMD_NORMAL_VERBOSITY 
SVT_CMD_NULL_HANDLE 
SVT_CMD_PROTOCOL_RST 
SVT_CMD_RESET_HANDLE 
SVT_CMD_SOFT 
SVT_CMD_SOFT_RST 
SVT_CMD_TRACE_SEVERITY 
SVT_CMD_TRACE_VERBOSITY 
SVT_CMD_VERBOSE_SEVERITY 
SVT_CMD_VERBOSE_VERBOSITY 
SVT_CMD_WARNING_SEVERITY 
SVT_CMD_XACT_STATUS_ABORTED 
SVT_CMD_XACT_STATUS_ACCEPT 
SVT_CMD_XACT_STATUS_ACTIVE 
SVT_CMD_XACT_STATUS_CANCELLED 
SVT_CMD_XACT_STATUS_DISABLED 
SVT_CMD_XACT_STATUS_INITIAL 
SVT_CMD_XACT_STATUS_PARTIAL_ACCEPT 
SVT_CMD_XACT_STATUS_RETRY 
SVT_COMPLETE 
SVT_CONSENSUS_BASE_TYPE 
SVT_CONTROL_TYPE_STR 
svt_create_event 
svt_create_named_event 
svt_create_pool_event 
SVT_DATA_BASE_OBJECT_TYPE 
SVT_DATA_BASE_TYPE 
SVT_DATA_BYTE_PACK 
SVT_DATA_BYTE_UNPACK 
SVT_DATA_COPY 
SVT_DATA_DISPLAY 
SVT_DATA_DISPLAY_KEYWORD 
SVT_DATA_GET_OBJECT_HIERNAME 
SVT_DATA_GET_OBJECT_TYPENAME 
SVT_DATA_ITER_TYPE 
SVT_DATA_LOG_KEYWORD 
svt_data_member_begin 
svt_data_member_end 
SVT_DATA_METHODOLOGY_KEYWORD 
SVT_DATA_METHODOLOGY_KEYWORD_UC 
svt_data_param_member_begin 
svt_data_param_member_w_type_name_begin 
SVT_DATA_PSDISPLAY 
SVT_DATA_PSDISPLAY_KEYWORD 
SVT_DATA_QUEUE_ITER_NOTIFY 
SVT_DATA_QUEUE_ITER_NOTIFY_TYPE 
SVT_DATA_QUEUE_ITER_TYPE 
SVT_DATA_QUEUE_TYPE 
SVT_DATA_SAFE_GETENV 
SVT_DATA_TYPE 
SVT_DATA_UTIL_ARG_TO_STRING 
SVT_DATA_UTIL_BITS_PER_BYTE 
SVT_DATA_UTIL_BITS_PER_INT 
SVT_DATA_UTIL_BYTES_PER_ENUM 
SVT_DATA_UTIL_BYTES_PER_INT 
SVT_DATA_UTIL_BYTES_PER_LONGINT 
SVT_DATA_UTIL_BYTES_PER_REAL 
SVT_DATA_UTIL_BYTES_PER_REALTIME 
SVT_DATA_UTIL_BYTES_PER_TIME 
SVT_DATA_UTIL_UNSPECIFIED 
svt_debug 
svt_debug_context 
SVT_DEBUG_EFFECT 
SVT_DEBUG_FAIL_EFFECT 
SVT_DEBUG_OPTS_CARRIER_CB_UTIL 
SVT_DEBUG_OPTS_FILENAME 
SVT_DEBUG_OPTS_FSDB_FILE_NAME 
SVT_DEBUG_OPTS_IMP_PORT 
SVT_DEBUG_OPTS_IMP_PORT_INTERCEPT_DECL 
SVT_DEBUG_OPTS_IMP_PORT_SFX 
SVT_DEBUG_OPTS_TRANSCRIPT_FILENAME 
SVT_DEBUG_VERBOSITY 
SVT_DEC 
svt_decl_event 
SVT_DEEP 
SVT_DEEP_RECURSION 
SVT_DEFAULT 
SVT_DEFAULT_EFFECT 
SVT_DEFAULT_FAIL_EFFECT 
SVT_DEFAULT_FUZZY_COMPARE_PRECISION 
SVT_DEFINE_LOG_IN_PORT 
SVT_DEFINE_LOG_INOUT_PORT 
SVT_DEFINE_LOG_OUT_PORT 
SVT_DEFINE_NDRIVE 
SVT_DEFINE_NSAMPLE 
SVT_DEFINE_PDRIVE 
SVT_DEFINE_PSAMPLE 
svt_do_callbacks 
svt_do_obj_callbacks 
SVT_ENUM 
SVT_ERR_CHECK_EXECUTE 
SVT_ERR_CHECK_EXECUTE_STATS 
SVT_ERR_CHECK_STATS_COV_EXTENDED_CLASS_DECL 
SVT_ERR_CHECK_STATS_COV_EXTENDED_CLASS_OVERRIDE 
SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_DECL 
SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_OVERRIDE 
SVT_ERR_CHECK_STATS_ENABLE_EXTENDED_BASE_NAME 
svt_error 
svt_error_context 
SVT_ERROR_EFFECT 
SVT_ERROR_FAIL_EFFECT 
SVT_ERROR_VERBOSITY 
svt_event_is_on 
svt_event_status 
SVT_EXCEPTION_LIST_COMBINE_NOT_OK 
SVT_EXPECTED_EFFECT 
SVT_EXPECTED_FAIL_EFFECT 
svt_fatal 
svt_fatal_context 
SVT_FATAL_VERBOSITY 
svt_field_aa_int_byte 
svt_field_aa_int_byte_unsigned 
svt_field_aa_int_int 
svt_field_aa_int_int_unsigned 
svt_field_aa_int_integer 
svt_field_aa_int_integer_unsigned 
svt_field_aa_int_key 
svt_field_aa_int_longint 
svt_field_aa_int_longint_unsigned 
svt_field_aa_int_shortint 
svt_field_aa_int_shortint_unsigned 
svt_field_aa_int_string 
svt_field_aa_object_int 
svt_field_aa_object_string 
svt_field_aa_string_int 
svt_field_aa_string_string 
svt_field_array_enum 
svt_field_array_int 
svt_field_array_object 
svt_field_array_real 
svt_field_array_string 
svt_field_enum 
svt_field_event 
svt_field_handle 
svt_field_handle_aa_int 
svt_field_handle_aa_string 
svt_field_handle_array 
svt_field_handle_sarray 
svt_field_int 
svt_field_object 
svt_field_queue_enum 
svt_field_queue_handle 
svt_field_queue_int 
svt_field_queue_object 
svt_field_queue_real 
svt_field_queue_string 
svt_field_real 
svt_field_real_begin 
svt_field_real_end 
svt_field_sarray_enum 
svt_field_sarray_int 
svt_field_sarray_object 
svt_field_sarray_real 
svt_field_sarray_string 
svt_field_string 
SVT_FIFO_ADD_TO_ACTIVE 
SVT_FIFO_EMPTY_ON_START 
SVT_FIFO_FULL_ON_START 
SVT_FIFO_MAX_FULL_LEVEL 
SVT_FIFO_MAX_RATE 
SVT_FIFO_READ 
SVT_FIFO_REMOVE_FROM_ACTIVE 
SVT_FIFO_WRITE 
svt_fsm_create_fsm 
svt_fsm_create_state 
svt_fsm_from_states 
svt_fsm_state_utils 
SVT_FSM_TRANSITION_OPTIONS_EXIST 
svt_fsm_utils 
svt_get_event_status 
svt_get_named_event_is_on 
svt_get_named_event_status 
SVT_HEX 
SVT_HOW_DEEP 
SVT_HOW_DEEPCOMPARE 
SVT_HOW_DEEPCOPY 
SVT_HOW_NOCOMPARE 
SVT_HOW_NOCOPY 
SVT_HOW_NONE 
SVT_HOW_REF 
SVT_HOW_REFCOMPARE 
SVT_HOW_REFCOPY 
SVT_HOW_TO_COMPARE 
SVT_HOW_TO_COPY 
SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING 
SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING_DECL 
SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING_IMPL 
SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING_VLOG_2001_IMPL 
SVT_IF_UTIL_WAIT_ENABLE_SIGNAL_LOG 
SVT_IGNORE_EFFECT 
SVT_IGNORE_FAIL_EFFECT 
svt_insuppressible_note 
svt_internal_error 
SVT_INTERNAL_MESSAGING 
svt_internal_warning 
SVT_LOADER_USE_ABS_PATH 
SVT_LOADER_USE_ABS_PATH 
SVT_LOADER_USE_ABS_PATH 
SVT_LOADER_USE_ABS_PATH 
SVT_LOADER_USE_ABS_PATH 
SVT_LOADER_USE_ABS_PATH 
SVT_MAP_TO_VMM_AUTOMATION_FLAGS 
SVT_MAX_ARRAY_ELEM_DISPLAY_DEFAULT 
SVT_MAX_DELAY 
SVT_MAX_DOWNSTREAM_IMP_Q_SIZE 
SVT_MCD_FORMAT_VERSION 
SVT_MEM_ACTION_CREATE_PATTERN 
SVT_MEM_ACTION_FILE_DATA 
SVT_MEM_ACTION_LOAD_FILE 
SVT_MEM_ACTION_PEEK 
SVT_MEM_ACTION_POKE 
SVT_MEM_ACTION_READ 
SVT_MEM_ACTION_TYPE_COUNT 
SVT_MEM_ACTION_UNLOAD 
SVT_MEM_ACTION_UNLOAD_ALL 
SVT_MEM_ACTION_WRITE 
SVT_MEM_ACTION_WRITE_MASKED 
SVT_MEM_ATTRIBUTE_ACC_LOCK 
SVT_MEM_ATTRIBUTE_INIT 
SVT_MEM_ATTRIBUTE_LAST_RD 
SVT_MEM_ATTRIBUTE_LAST_WR 
SVT_MEM_ATTRIBUTE_OP_MASK 
SVT_MEM_ATTRIBUTE_OR 
SVT_MEM_ATTRIBUTE_UNINIT 
SVT_MEM_ATTRIBUTE_WR_PROT 
SVT_MEM_BD_SVR_DO_E 
SVT_MEM_BD_SVR_DO_LR 
SVT_MEM_BD_SVR_DO_S 
SVT_MEM_COMPARE_INTERSECT 
SVT_MEM_COMPARE_OP_MASK 
SVT_MEM_COMPARE_STRICT 
SVT_MEM_COMPARE_SUBSET 
SVT_MEM_COMPARE_SUPERSET 
SVT_MEM_CORE_2STATE 
SVT_MEM_CORE_4STATE 
SVT_MEM_CORE_READ 
SVT_MEM_CORE_WRITE 
svt_mem_debug 
SVT_MEM_DEPTH_128GB 
SVT_MEM_DEPTH_128KB 
SVT_MEM_DEPTH_128MB 
SVT_MEM_DEPTH_12GB 
SVT_MEM_DEPTH_1536MB 
SVT_MEM_DEPTH_16GB 
SVT_MEM_DEPTH_16KB 
SVT_MEM_DEPTH_16MB 
SVT_MEM_DEPTH_192GB 
SVT_MEM_DEPTH_192MB 
SVT_MEM_DEPTH_1_5GB 
SVT_MEM_DEPTH_1GB 
SVT_MEM_DEPTH_1MB 
SVT_MEM_DEPTH_24GB 
SVT_MEM_DEPTH_24MB 
SVT_MEM_DEPTH_256GB 
SVT_MEM_DEPTH_256KB 
SVT_MEM_DEPTH_256MB 
SVT_MEM_DEPTH_2GB 
SVT_MEM_DEPTH_2KB 
SVT_MEM_DEPTH_2MB 
SVT_MEM_DEPTH_32GB 
SVT_MEM_DEPTH_32KB 
SVT_MEM_DEPTH_32MB 
SVT_MEM_DEPTH_384MB 
SVT_MEM_DEPTH_3GB 
SVT_MEM_DEPTH_48GB 
SVT_MEM_DEPTH_48MB 
SVT_MEM_DEPTH_4_5GB 
SVT_MEM_DEPTH_4GB 
SVT_MEM_DEPTH_4KB 
SVT_MEM_DEPTH_4MB 
SVT_MEM_DEPTH_512KB 
SVT_MEM_DEPTH_512MB 
SVT_MEM_DEPTH_64GB 
SVT_MEM_DEPTH_64KB 
SVT_MEM_DEPTH_64MB 
SVT_MEM_DEPTH_6GB 
SVT_MEM_DEPTH_768MB 
SVT_MEM_DEPTH_8_5GB 
SVT_MEM_DEPTH_8GB 
SVT_MEM_DEPTH_8KB 
SVT_MEM_DEPTH_8MB 
SVT_MEM_DEPTH_96GB 
SVT_MEM_DEPTH_9GB 
SVT_MEM_DUMP_ALL 
SVT_MEM_DUMP_APPEND 
SVT_MEM_DUMP_NO_BEGIN 
SVT_MEM_DUMP_NO_END 
SVT_MEM_DUMP_NO_HEADER 
SVT_MEM_DUMP_OP_MASK 
SVT_MEM_FREE_OP_MASK 
SVT_MEM_INIT_ADDRESS 
SVT_MEM_INIT_DECR 
SVT_MEM_INIT_INCR 
SVT_MEM_INIT_ONES 
SVT_MEM_INIT_RANDOM 
SVT_MEM_INIT_UNKNOWNS 
SVT_MEM_INIT_USER_PATTERN 
SVT_MEM_INIT_VALUE 
SVT_MEM_INIT_ZEROES 
SVT_MEM_INITIALIZE_CONST 
SVT_MEM_INITIALIZE_DECR 
SVT_MEM_INITIALIZE_INCR 
SVT_MEM_INITIALIZE_ODD_EVEN_CONST 
SVT_MEM_INITIALIZE_OP_MASK 
SVT_MEM_INITIALIZE_RAND 
SVT_MEM_INITIALIZE_WALK_LEFT 
SVT_MEM_INITIALIZE_WALK_RIGHT 
SVT_MEM_LOAD_OP_MASK 
SVT_MEM_LOAD_PROTECT 
SVT_MEM_MAX_ADDR_REGION_WIDTH 
SVT_MEM_MAX_ADDR_WDTH 
SVT_MEM_MAX_ADDR_WIDTH 
SVT_MEM_MAX_ATTR_WIDTH 
SVT_MEM_MAX_DATA_SIZE 
SVT_MEM_MAX_DATA_WDTH 
SVT_MEM_MAX_DATA_WIDTH 
SVT_MEM_MAX_PATTERN_WIDTH 
SVT_MEM_MSG_TYPE_DEBUG 
SVT_MEM_MSG_TYPE_ERROR 
SVT_MEM_MSG_TYPE_FATAL 
SVT_MEM_MSG_TYPE_INFO 
SVT_MEM_MSG_TYPE_VERBOSE 
SVT_MEM_MSG_TYPE_WARN 
SVT_MEM_PEEK_OP_MASK 
SVT_MEM_POKE_OP_MASK 
SVT_MEM_SA_2STATE 
SVT_MEM_SA_4STATE 
SVT_MEM_SA_ACCESS_READ_MODE 
SVT_MEM_SA_ACCESS_STATUS 
SVT_MEM_SA_ACCESS_STATUS_INIT 
SVT_MEM_SA_ACCESS_STATUS_LAST_RD 
SVT_MEM_SA_ACCESS_STATUS_LAST_WR 
SVT_MEM_SA_ACCESS_STATUS_MASK 
SVT_MEM_SA_ACCESS_STATUS_UNINIT 
SVT_MEM_SA_ACCESS_WRITE_MODE 
SVT_MEM_SA_BREAK_EVENT_TYPE_RD 
SVT_MEM_SA_BREAK_EVENT_TYPE_RD_B4_WR 
SVT_MEM_SA_BREAK_EVENT_TYPE_RD_RD_NO_WR 
SVT_MEM_SA_BREAK_EVENT_TYPE_WR 
SVT_MEM_SA_BREAK_EVENT_TYPE_WR_LOST 
SVT_MEM_SA_BREAK_EVENT_TYPE_WR_PROT 
SVT_MEM_SA_BREAK_EVENT_TYPE_WR_SAME 
SVT_MEM_SA_BREAK_EVENT_TYPE_WR_WR 
SVT_MEM_SA_BREAK_FLAG_CMP_ADR 
SVT_MEM_SA_BREAK_FLAG_CMP_ATTRS 
SVT_MEM_SA_BREAK_FLAG_CMP_DATA 
SVT_MEM_SA_BREAK_FLAG_CMP_RD 
SVT_MEM_SA_BREAK_FLAG_CMP_WR 
SVT_MEM_SA_BREAK_FLAG_ENA_ADR_MASKING 
SVT_MEM_SA_BREAK_FLAG_ENA_DATA_MASKING 
SVT_MEM_SA_BREAK_FLAG_MASK_CMP_ADR_OUT 
SVT_MEM_SA_BREAK_FLAG_MASK_CMP_DATA_RANGE 
SVT_MEM_SA_BREAK_FLAG_MASK_DATA_CMP_MASK 
SVT_MEM_SA_BREAK_FLAG_MASK_EQ 
SVT_MEM_SA_BREAK_FLAG_MASK_GT 
SVT_MEM_SA_BREAK_FLAG_MASK_GTE 
SVT_MEM_SA_BREAK_FLAG_MASK_LT 
SVT_MEM_SA_BREAK_FLAG_MASK_LTE 
SVT_MEM_SA_BREAK_FLAG_MASK_NE 
SVT_MEM_SA_BREAK_FLAG_NO_STOP 
SVT_MEM_SA_BREAK_FLAG_ONESHOT 
SVT_MEM_SA_BREAK_FLAG_RD_B4_WR 
SVT_MEM_SA_BREAK_FLAG_SELF_DELETING 
SVT_MEM_SA_BREAK_FLAG_TEXT 
SVT_MEM_SA_BREAK_FLAG_WPE 
SVT_MEM_SA_BREAK_FLAG_WR_LOSS 
SVT_MEM_SA_BREAK_FLAG_WR_SAME 
SVT_MEM_SA_BREAK_FLAG_WR_WR 
SVT_MEM_SA_CHECK_ACCESS_ERROR 
SVT_MEM_SA_CHECK_ACCESS_LOCKED 
SVT_MEM_SA_CHECK_ADR_ERR 
SVT_MEM_SA_CHECK_ALL 
SVT_MEM_SA_CHECK_DATA_ERR 
SVT_MEM_SA_CHECK_MISCOMPARE 
SVT_MEM_SA_CHECK_PARTIAL_RD 
SVT_MEM_SA_CHECK_RD_B4_WR 
SVT_MEM_SA_CHECK_RD_RD_NO_WR 
SVT_MEM_SA_CHECK_STD 
SVT_MEM_SA_CHECK_WR_LOSS 
SVT_MEM_SA_CHECK_WR_PROT 
SVT_MEM_SA_CHECK_WR_SAME 
SVT_MEM_SA_CHECK_WR_WR 
SVT_MEM_SA_COMPARE_INTERSECT 
SVT_MEM_SA_COMPARE_MAX_FILE_COMPARE_ERRORS 
SVT_MEM_SA_COMPARE_MISCOMPARE 
SVT_MEM_SA_COMPARE_MODES 
SVT_MEM_SA_COMPARE_NOT_IN_CORE 
SVT_MEM_SA_COMPARE_NOT_IN_DEST 
SVT_MEM_SA_COMPARE_NOT_IN_FILE 
SVT_MEM_SA_COMPARE_NOT_IN_SRC 
SVT_MEM_SA_COMPARE_STRICT 
SVT_MEM_SA_COMPARE_SUBSET 
SVT_MEM_SA_COMPARE_SUPERSET 
SVT_MEM_SA_CORE_ADDR_BITS 
SVT_MEM_SA_CORE_PHYSICAL_DIMENSIONS_MAX 
SVT_MEM_SA_DATAARRAY32 
SVT_MEM_SA_DATAARRAY8 
SVT_MEM_SA_DATAARRAYPACKED 
SVT_MEM_SA_DATAARRAYS64 
SVT_MEM_SA_DUMP_ALL 
SVT_MEM_SA_DUMP_APPEND 
SVT_MEM_SA_DUMP_NO_HEADER 
SVT_MEM_SA_LOAD_NO_PROTECT 
SVT_MEM_SA_LOAD_PROTECT 
SVT_MEM_SA_MODE_COHERENCE_GET 
SVT_MEM_SA_MODE_COHERENCE_MASK 
SVT_MEM_SA_MODE_COHERENCE_SET 
SVT_MEM_SA_MODE_NO_ACCESS_ATTR 
SVT_MEM_SA_MODE_NO_WPE_ATTR 
SVT_MEM_SA_MODE_OPT_SPACE_GET 
SVT_MEM_SA_MODE_OPT_SPACE_SET 
SVT_MEM_SA_MODE_QUIET 
SVT_MEM_SA_MODE_READ_ONLY 
SVT_MEM_SA_MODE_SIM_SIZE_GET 
SVT_MEM_SA_MODE_SIM_SIZE_MASK 
SVT_MEM_SA_MODE_SIM_SIZE_SET 
SVT_MEM_SA_MODE_SPACE_MASK 
SVT_MEM_SA_PATTERN_NON_VIRTUAL 
SVT_MEM_SA_PATTERN_TYPE_CONST 
SVT_MEM_SA_PATTERN_TYPE_DECR 
SVT_MEM_SA_PATTERN_TYPE_INCR 
SVT_MEM_SA_PATTERN_TYPE_MASK 
SVT_MEM_SA_PATTERN_TYPE_ODD_EVEN_CONST 
SVT_MEM_SA_PATTERN_TYPE_RAND_DATA 
SVT_MEM_SA_PATTERN_TYPE_USE_BASE_ADR 
SVT_MEM_SA_PATTERN_TYPE_WALK_LEFT 
SVT_MEM_SA_PATTERN_TYPE_WALK_RIGHT 
SVT_MEM_SA_PATTERN_VIRTUAL 
SVT_MEM_SA_PHYSICAL_ADDRESS 
SVT_MEM_SA_STATUS_ACCESS_ERROR 
SVT_MEM_SA_STATUS_ACCESS_LOCKED 
SVT_MEM_SA_STATUS_ADR_ERR 
SVT_MEM_SA_STATUS_BREAK 
SVT_MEM_SA_STATUS_DATA_ERR 
SVT_MEM_SA_STATUS_ENABLE_ALL 
SVT_MEM_SA_STATUS_ERROR 
SVT_MEM_SA_STATUS_FORMAT_ERR 
SVT_MEM_SA_STATUS_INTERNAL 
SVT_MEM_SA_STATUS_IO_ERROR 
SVT_MEM_SA_STATUS_MISCOMPARE 
SVT_MEM_SA_STATUS_OK 
SVT_MEM_SA_STATUS_OPEN_FAILED 
SVT_MEM_SA_STATUS_PARTIAL_RD 
SVT_MEM_SA_STATUS_RD_B4_WR 
SVT_MEM_SA_STATUS_RD_RD_NO_WR 
SVT_MEM_SA_STATUS_WR_LOSS 
SVT_MEM_SA_STATUS_WR_PROT 
SVT_MEM_SA_STATUS_WR_SAME 
SVT_MEM_SA_STATUS_WR_WR 
SVT_MEM_SA_STATUS_WR_WR_COMPARE 
SVT_MEM_SHORTHAND_CUST_COMPARE 
SVT_MEM_SHORTHAND_CUST_COPY 
SVT_MEM_SYSTEM_BACKDOOR_ENABLE_FACTORY 
svt_mem_vendor_catalog_begin 
svt_mem_vendor_catalog_end 
svt_mem_vendor_part 
svt_mem_vendor_part2 
svt_mem_verbose 
SVT_MESSAGE_MANAGER_ERROR_SEVERITY 
SVT_MESSAGE_MANAGER_FATAL_SEVERITY 
SVT_MESSAGE_MANAGER_GET_CLIENT_VERBOSITY_LEVEL 
SVT_MESSAGE_MANAGER_NOTE_SEVERITY 
SVT_NO_REGPACK 
SVT_NOCOMPARE 
SVT_NOCOPY 
SVT_NODEFPRINT 
SVT_NOPACK 
SVT_NOPRINT 
SVT_NORECORD 
SVT_NORMAL_VERBOSITY 
svt_note 
svt_note_context 
SVT_NOTE_EFFECT 
SVT_NOTE_FAIL_EFFECT 
SVT_NOTIFY_BASE_TYPE 
SVT_NOTIFY_CONFIGURE 
SVT_NULL_RECURSION 
SVT_NVS_SOURCE_MAP_SUITE_COMMON_H 
SVT_NVS_SOURCE_MAP_SUITE_COMMON_SVH 
SVT_NVS_SOURCE_MAP_SUITE_COMMON_VI 
SVT_NVS_SOURCE_MAP_SUITE_COMMON_VIH 
SVT_NVS_SOURCE_MAP_SUITE_COMP_COMMON_VI 
SVT_NVS_SOURCE_MAP_SUITE_COMP_MODULE_V 
SVT_NVS_SOURCE_MAP_SUITE_INTERFACE_SV 
SVT_NVS_SOURCE_MAP_SUITE_LIB_MODULE_V 
SVT_NVS_SOURCE_MAP_SUITE_MODULE_INCLUDE_V 
SVT_NVS_SOURCE_MAP_SUITE_MODULE_INCLUDE_VIH 
SVT_NVS_SOURCE_MAP_SUITE_MODULE_V 
SVT_OCT 
SVT_PACKER_MAX_BYTES 
SVT_PHYSICAL 
SVT_POUND_ZERO_COUNT 
SVT_PRE_UVM_12 
SVT_PRE_VMM_11 
SVT_PRE_VMM_12 
SVT_READONLY 
SVT_REFERENCE 
SVT_REGPACK_ALPHA 
SVT_RELEVANT 
svt_reset_event 
svt_reset_named_event 
SVT_SEQUENCE_LIBRARY_DECL 
SVT_SEQUENCE_LIBRARY_IMP 
SVT_SEQUENCE_LIBRARY_SAFE_ADD_SEQUENCE 
svt_sequence_library_utils 
SVT_SEQUENCER_DECL 
SVT_SEQUENCER_IMP 
SVT_SEQUENCER_IMP_BASE 
SVT_SHALLOW 
SVT_SHALLOW_RECURSION 
SVT_SIMULATOR_STR 
SVT_SOURCE_MAP_AGENT_CMD_INCLUDE_SVI 
SVT_SOURCE_MAP_AGENT_INCLUDE_SVI 
SVT_SOURCE_MAP_ENV_CMD_INCLUDE_SVI 
SVT_SOURCE_MAP_ENV_INCLUDE_SVI 
SVT_SOURCE_MAP_LIB_INCLUDE_PKG 
SVT_SOURCE_MAP_LIB_INCLUDE_PKG 
SVT_SOURCE_MAP_LIB_INCLUDE_PKG 
SVT_SOURCE_MAP_LIB_INCLUDE_PKG 
SVT_SOURCE_MAP_LIB_INCLUDE_PKG 
SVT_SOURCE_MAP_LIB_INCLUDE_PKG 
SVT_SOURCE_MAP_LIB_INCLUDE_SVI 
SVT_SOURCE_MAP_LIB_INCLUDE_SVI 
SVT_SOURCE_MAP_LIB_INCLUDE_SVI 
SVT_SOURCE_MAP_LIB_INCLUDE_SVI 
SVT_SOURCE_MAP_LIB_INCLUDE_SVI 
SVT_SOURCE_MAP_LIB_INCLUDE_SVI 
SVT_SOURCE_MAP_LIB_MODULE 
SVT_SOURCE_MAP_LIB_SRC_SVI 
SVT_SOURCE_MAP_MODEL_CMD_INCLUDE_SVI 
SVT_SOURCE_MAP_MODEL_INCLUDE_SVI 
SVT_SOURCE_MAP_MODEL_MODULE 
SVT_SOURCE_MAP_MODEL_SRC_SVI 
SVT_SOURCE_MAP_SUITE_MODULE 
SVT_SOURCE_MAP_SUITE_ROOT 
SVT_SOURCE_MAP_SUITE_SRC_SVI 
SVT_SOURCE_QUOTE_DESIGNWARE_HOME 
SVT_STATUS_EVENT_CHECK 
SVT_STATUS_EVENT_IS_ON 
SVT_STATUS_EVENT_STATUS 
SVT_STATUS_GET_EVENT_STATUS 
SVT_STATUS_NOTIFY_CHECK 
SVT_STATUS_NOTIFY_CONFIGURE 
SVT_STATUS_NOTIFY_CONFIGURE_BASE 
SVT_STATUS_NOTIFY_CONFIGURE_NAMED_NOTIFY 
SVT_STATUS_NOTIFY_CONFIGURE_NAMED_NOTIFY_BASE 
SVT_STATUS_RESET_EVENT 
SVT_STATUS_TRIGGER_COPY_DATA_EVENT 
SVT_STATUS_TRIGGER_DATA_EVENT 
SVT_STATUS_TRIGGER_EVENT 
SVT_STATUS_WAIT_FOR_OFF 
SVT_STATUS_WAIT_FOR_ON 
SVT_STATUS_WAIT_FOR_TRIGGER 
SVT_STRING 
SVT_SVC_MESSAGE_MANAGER_LOG_DEBUG 
SVT_SVC_MESSAGE_MANAGER_LOG_DWORD 
SVT_SVC_MESSAGE_MANAGER_LOG_ERR 
SVT_SVC_MESSAGE_MANAGER_LOG_FRAME 
SVT_SVC_MESSAGE_MANAGER_LOG_INFO 
SVT_SVC_MESSAGE_MANAGER_LOG_NOTE 
SVT_SVC_MESSAGE_MANAGER_LOG_OPT_FLUSH_BUFFER 
SVT_SVC_MESSAGE_MANAGER_LOG_OPT_MASK 
SVT_SVC_MESSAGE_MANAGER_LOG_OPT_NO_LOG_LEVEL 
SVT_SVC_MESSAGE_MANAGER_LOG_OPT_NO_NEWLINE 
SVT_SVC_MESSAGE_MANAGER_LOG_OPT_NO_PREFIX 
SVT_SVC_MESSAGE_MANAGER_LOG_OPT_NO_TIMESTAMP 
SVT_SVC_MESSAGE_MANAGER_LOG_OPT_START_BUFFER 
SVT_SVC_MESSAGE_MANAGER_LOG_OPT_TRANSACTION 
SVT_SVC_MESSAGE_MANAGER_LOG_TRANSACT 
SVT_SVC_MESSAGE_MANAGER_LOG_WARN 
SVT_SVC_MESSAGE_MANAGER_SHARED_MSG_MGR_NAME 
SVT_SVC_MESSAGE_MANAGER_USE_SVT_MESSAGING_EXCLUSIVELY 
SVT_TIME 
SVT_TIMER_EVENT_IS_ON 
SVT_TIMER_WAIT_FOR 
SVT_TIMER_WAIT_FOR_OFF 
SVT_TIMER_WAIT_FOR_ON 
SVT_TIMEUNIT_100_FS 
SVT_TIMEUNIT_100_MS 
SVT_TIMEUNIT_100_NS 
SVT_TIMEUNIT_100_PS 
SVT_TIMEUNIT_100_S 
SVT_TIMEUNIT_100_US 
SVT_TIMEUNIT_10_FS 
SVT_TIMEUNIT_10_MS 
SVT_TIMEUNIT_10_NS 
SVT_TIMEUNIT_10_PS 
SVT_TIMEUNIT_10_S 
SVT_TIMEUNIT_10_US 
SVT_TIMEUNIT_1_FS 
SVT_TIMEUNIT_1_MS 
SVT_TIMEUNIT_1_NS 
SVT_TIMEUNIT_1_PS 
SVT_TIMEUNIT_1_S 
SVT_TIMEUNIT_1_US 
SVT_TIMEUNIT_UNKNOWN 
svt_trace 
svt_trace_context 
SVT_TRACE_VERBOSITY 
SVT_TRAFFIC_MAX_FRAME_SIZE 
SVT_TRAFFIC_MAX_FRAME_TIME 
SVT_TRAFFIC_MAX_TOTAL_NUM_BYTES 
SVT_TRAFFIC_MAX_XACT_SIZE 
SVT_TRAFFIC_PROFILE_CYCLE 
SVT_TRAFFIC_PROFILE_END_OF_FRAME_SIZE 
SVT_TRAFFIC_PROFILE_END_OF_FRAME_TIME 
SVT_TRAFFIC_PROFILE_END_OF_PROFILE 
SVT_TRAFFIC_PROFILE_FIXED 
SVT_TRAFFIC_PROFILE_INPUT_EVENT 
SVT_TRAFFIC_PROFILE_MAX_ARBITER_THREADS 
SVT_TRAFFIC_PROFILE_OUTPUT_EVENT 
SVT_TRAFFIC_PROFILE_RANDOM 
SVT_TRAFFIC_PROFILE_RANDOM_ADDR 
SVT_TRAFFIC_PROFILE_SEQUENTIAL 
SVT_TRAFFIC_PROFILE_TWODIM 
SVT_TRAFFIC_PROFILE_UNIQUE 
SVT_TRANSACTION_BASE_TYPE 
SVT_TRANSACTION_END_TIME 
SVT_TRANSACTION_ENDED_NOTIFY 
SVT_TRANSACTION_EXCEPTION_LIST_INITIATOR 
SVT_TRANSACTION_ITER_FIRST_IX 
SVT_TRANSACTION_ITER_LAST_IX 
SVT_TRANSACTION_ITER_TOP_LEVEL_QUEUE_SIZE 
SVT_TRANSACTION_ITER_TOP_LEVEL_XACT 
SVT_TRANSACTION_ITER_TYPE 
SVT_TRANSACTION_OBJECT_TYPE 
SVT_TRANSACTION_REPORT_TYPE 
SVT_TRANSACTION_SHORTHAND_CUST_COPY 
SVT_TRANSACTION_START_TIME 
SVT_TRANSACTION_STARTED_NOTIFY 
SVT_TRANSACTION_TYPE 
SVT_TRANSACTION_UVM_DISABLE_AUTO_ITEM_RECORDING 
svt_trigger_copy_data_event 
svt_trigger_data_event 
svt_trigger_event 
svt_trigger_named_copy_data_event 
svt_trigger_named_data_event 
svt_trigger_named_event 
SVT_UNASSIGNED 
SVT_UNSET_INST_NAME 
SVT_UNSIGNED 
SVT_UVM_CMD_NULL_HANDLE 
SVT_UVM_CMD_RESET_HANDLE 
SVT_UVM_FGP_LOCK 
SVT_UVM_NOCOMPARE 
SVT_UVM_NOCOPY 
SVT_UVM_NODEFPRINT 
SVT_UVM_NOPACK 
SVT_UVM_NOPRINT 
SVT_UVM_NORECORD 
svt_verbose 
svt_verbose_context 
SVT_VERBOSE_EFFECT 
SVT_VERBOSE_FAIL_EFFECT 
SVT_VERBOSE_VERBOSITY 
SVT_VERSION 
SVT_VMM_NOCOMPARE 
SVT_VMM_NOCOPY 
SVT_VMM_NODEFPRINT 
SVT_VMM_NOPACK 
SVT_VMM_NOPRINT 
SVT_VMM_NORECORD 
SVT_VOTER_BASE_TYPE 
svt_wait_event_off 
svt_wait_event_on 
svt_wait_event_ptrigger 
svt_wait_event_trigger 
svt_wait_named_event_off 
svt_wait_named_event_on 
svt_wait_named_event_trigger 
svt_warning 
svt_warning_context 
SVT_WARNING_EFFECT 
SVT_WARNING_FAIL_EFFECT 
SVT_WARNING_VERBOSITY 
SVT_WRITER_FORMAT_FSDB 
SVT_WRITER_FORMAT_FSDB_PERF_ANALYSIS 
SVT_WRITER_FORMAT_XML 
SVT_WRITER_FORMAT_XML_N_FSDB 
SVT_XVM 
SVT_XVM_ALL_ON 
svt_xvm_component_param_utils 
svt_xvm_component_param_utils_begin 
svt_xvm_component_utils 
svt_xvm_component_utils_begin 
svt_xvm_component_utils_end 
svt_xvm_create 
svt_xvm_create_on 
svt_xvm_debug 
svt_xvm_declare_p_sequencer 
svt_xvm_do 
svt_xvm_do_callbacks 
svt_xvm_do_obj_callbacks 
svt_xvm_do_on 
svt_xvm_do_on_pri 
svt_xvm_do_on_pri_with 
svt_xvm_do_on_with 
svt_xvm_do_pri 
svt_xvm_do_pri_with 
svt_xvm_do_with 
svt_xvm_error 
svt_xvm_fatal 
svt_xvm_field_array_object 
svt_xvm_field_int 
svt_xvm_field_object 
svt_xvm_field_queue_int 
svt_xvm_ix_analysis_imp_decl 
svt_xvm_ix_blocking_put_imp_decl 
svt_xvm_note 
svt_xvm_object_param_utils 
svt_xvm_object_param_utils_begin 
svt_xvm_object_utils 
svt_xvm_object_utils_begin 
svt_xvm_object_utils_end 
svt_xvm_rand_send 
svt_xvm_rand_send_pri 
svt_xvm_rand_send_pri_with 
svt_xvm_rand_send_with 
SVT_XVM_REFERENCE 
svt_xvm_register_cb 
svt_xvm_send 
svt_xvm_send_pri 
svt_xvm_trace 
svt_xvm_typedef_cb 
SVT_XVM_UC 
svt_xvm_verbose 
svt_xvm_warning 
SVTI_CHECKXZ 

U
uvm_add_to_seq_lib 
uvm_analysis_imp_decl 
UVM_BASE_SVH 
UVM_BLOCKING_GET_IMP 
uvm_blocking_get_imp_decl 
UVM_BLOCKING_GET_IMP_SFX 
UVM_BLOCKING_GET_PEEK_IMP 
uvm_blocking_get_peek_imp_decl 
uvm_blocking_master_imp_decl 
UVM_BLOCKING_PEEK_IMP 
uvm_blocking_peek_imp_decl 
UVM_BLOCKING_PEEK_IMP_SFX 
UVM_BLOCKING_PUT_IMP 
uvm_blocking_put_imp_decl 
UVM_BLOCKING_PUT_IMP_SFX 
uvm_blocking_slave_imp_decl 
UVM_BLOCKING_TRANSPORT_IMP 
uvm_blocking_transport_imp_decl 
UVM_BLOCKING_TRANSPORT_IMP_SFX 
uvm_builtin_bottomup_phase 
uvm_builtin_task_phase 
uvm_builtin_topdown_phase 
UVM_CALLBACK_SVH 
UVM_CB_MACROS_SVH 
uvm_cb_trace 
uvm_cb_trace_noobj 
UVM_CMDLINE_PROCESSOR_SV 
uvm_component_param_utils 
uvm_component_param_utils_begin 
uvm_component_registry 
uvm_component_utils 
uvm_component_utils_begin 
uvm_component_utils_end 
uvm_create 
uvm_create_on 
uvm_create_seq 
uvm_declare_p_sequencer 
uvm_declare_sequence_lib 
UVM_DEFAULT_TIMEOUT 
UVM_DEFAULT_TIMEOUT 
uvm_delay 
uvm_do 
uvm_do_callbacks 
uvm_do_callbacks_exit_on 
uvm_do_obj_callbacks 
uvm_do_obj_callbacks_exit_on 
uvm_do_on 
uvm_do_on_pri 
uvm_do_on_pri_with 
uvm_do_on_with 
uvm_do_pri 
uvm_do_pri_with 
uvm_do_seq 
uvm_do_seq_with 
uvm_do_with 
UVM_DPI_SVH 
uvm_end_package 
uvm_error 
uvm_error_context 
UVM_EXPORT_COMMON 
uvm_fatal 
uvm_fatal_context 
uvm_field_aa_int_byte 
uvm_field_aa_int_byte_unsigned 
uvm_field_aa_int_enumkey 
uvm_field_aa_int_int 
uvm_field_aa_int_int_unsigned 
uvm_field_aa_int_integer 
uvm_field_aa_int_integer_unsigned 
uvm_field_aa_int_key 
uvm_field_aa_int_longint 
uvm_field_aa_int_longint_unsigned 
uvm_field_aa_int_shortint 
uvm_field_aa_int_shortint_unsigned 
uvm_field_aa_int_string 
uvm_field_aa_object_int 
uvm_field_aa_object_string 
uvm_field_aa_string_string 
uvm_field_array_enum 
uvm_field_array_int 
uvm_field_array_object 
uvm_field_array_real 
uvm_field_array_string 
uvm_field_enum 
uvm_field_event 
uvm_field_int 
uvm_field_object 
uvm_field_queue_enum 
uvm_field_queue_int 
uvm_field_queue_object 
uvm_field_queue_string 
uvm_field_real 
uvm_field_sarray_enum 
uvm_field_sarray_int 
uvm_field_sarray_object 
uvm_field_sarray_real 
uvm_field_sarray_string 
uvm_field_string 
uvm_field_utils_begin 
uvm_field_utils_end 
uvm_file 
UVM_FIX_REV 
UVM_FIX_REV_d 
UVM_FIX_VERSION_1_1_d 
UVM_FUNCTION_ERROR 
UVM_GET_IMP 
uvm_get_imp_decl 
UVM_GET_PEEK_IMP 
uvm_get_peek_imp_decl 
UVM_HDL__SVH 
UVM_HDL_MAX_WIDTH 
UVM_HEARTBEAT_SVH 
UVM_IMP_COMMON 
uvm_info 
uvm_info_context 
uvm_line 
UVM_LINE_WIDTH 
UVM_MACROS_SVH 
UVM_MAJOR_REV 
UVM_MAJOR_REV_1 
UVM_MAJOR_VERSION_1_1 
uvm_master_imp_decl 
UVM_MAX_STREAMBITS 
UVM_MEM_MAM__SV 
UVM_MESSAGE_DEFINES_SVH 
UVM_MINOR_REV 
UVM_MINOR_REV_1 
UVM_MS_IMP_COMMON 
UVM_NAME 
uvm_new_func 
uvm_non_blocking_transport_imp_decl 
UVM_NONBLOCKING_GET_IMP 
uvm_nonblocking_get_imp_decl 
UVM_NONBLOCKING_GET_IMP_SFX 
UVM_NONBLOCKING_GET_PEEK_IMP 
uvm_nonblocking_get_peek_imp_decl 
uvm_nonblocking_master_imp_decl 
UVM_NONBLOCKING_PEEK_IMP 
uvm_nonblocking_peek_imp_decl 
UVM_NONBLOCKING_PEEK_IMP_SFX 
UVM_NONBLOCKING_PUT_IMP 
uvm_nonblocking_put_imp_decl 
UVM_NONBLOCKING_PUT_IMP_SFX 
uvm_nonblocking_slave_imp_decl 
UVM_NONBLOCKING_TRANSPORT_IMP 
uvm_nonblocking_transport_imp_decl 
UVM_NONBLOCKING_TRANSPORT_IMP_SFX 
UVM_NUM_LINES 
UVM_OBJECT_DEFINES_SVH 
uvm_object_param_utils 
uvm_object_param_utils_begin 
uvm_object_registry 
uvm_object_utils 
uvm_object_utils_begin 
uvm_object_utils_end 
UVM_OBJECTION_SVH 
uvm_pack_array 
uvm_pack_arrayN 
uvm_pack_enum 
uvm_pack_enumN 
uvm_pack_int 
uvm_pack_intN 
uvm_pack_queue 
uvm_pack_queueN 
uvm_pack_real 
uvm_pack_sarray 
uvm_pack_sarrayN 
uvm_pack_string 
uvm_package 
UVM_PACKER_MAX_BYTES 
UVM_PEEK_IMP 
uvm_peek_imp_decl 
UVM_PH_TRACE 
UVM_PHASE_DEFINES_SVH 
UVM_PKG_SV 
UVM_PORT_COMMON 
uvm_print_aa_int_key4 
uvm_print_aa_int_object 
uvm_print_aa_int_object3 
uvm_print_aa_string_int 
uvm_print_aa_string_int3 
uvm_print_aa_string_object 
uvm_print_aa_string_object3 
uvm_print_aa_string_string 
uvm_print_aa_string_string2 
uvm_print_array_int 
uvm_print_array_int3 
uvm_print_array_object 
uvm_print_array_object3 
uvm_print_array_real 
uvm_print_array_real2 
uvm_print_array_string 
uvm_print_array_string2 
uvm_print_enum 
uvm_print_int 
uvm_print_int3 
uvm_print_int4 
uvm_print_object 
uvm_print_object2 
uvm_print_object_qda4 
uvm_print_object_queue 
uvm_print_object_queue3 
uvm_print_qda_enum 
uvm_print_qda_int4 
uvm_print_qda_real3 
uvm_print_queue_int 
uvm_print_queue_int3 
uvm_print_sarray_int3 
uvm_print_sarray_object 
uvm_print_sarray_object3 
uvm_print_sarray_string2 
uvm_print_string 
uvm_print_string2 
uvm_print_string_qda3 
uvm_print_string_queue 
uvm_print_string_queue2 
UVM_PRINTER_DEFINES_SVH 
UVM_PUT_IMP 
uvm_put_imp_decl 
UVM_QUEUE_SVH 
uvm_rand_send 
uvm_rand_send_pri 
uvm_rand_send_pri_with 
uvm_rand_send_with 
uvm_record_attribute 
uvm_record_field 
uvm_record_int 
uvm_record_real 
uvm_record_string 
uvm_record_time 
UVM_REG_ADDR_WIDTH 
UVM_REG_BYTENABLE_WIDTH 
UVM_REG_CVR_WIDTH 
UVM_REG_DATA_WIDTH 
UVM_REG_MODEL__SV 
uvm_register_cb 
UVM_REGISTRY_SVH 
UVM_REPORT_CATCHER_SVH 
UVM_REPORT_CLIENT_SVH 
UVM_REPORT_HANDLER_SVH 
UVM_REPORT_SERVER_SVH 
UVM_RESOURCE_GET_FCNS 
uvm_send 
uvm_send_pri 
UVM_SEQ_ITEM_FUNCTION_ERROR 
UVM_SEQ_ITEM_GET_MASK 
UVM_SEQ_ITEM_GET_NEXT_ITEM_MASK 
UVM_SEQ_ITEM_HAS_DO_AVAILABLE_MASK 
UVM_SEQ_ITEM_ITEM_DONE_MASK 
UVM_SEQ_ITEM_PEEK_MASK 
UVM_SEQ_ITEM_PULL_IMP 
UVM_SEQ_ITEM_PULL_MASK 
UVM_SEQ_ITEM_PUSH_MASK 
UVM_SEQ_ITEM_PUT_MASK 
UVM_SEQ_ITEM_PUT_RESPONSE_MASK 
UVM_SEQ_ITEM_TASK_ERROR 
UVM_SEQ_ITEM_TRY_NEXT_ITEM_MASK 
UVM_SEQ_ITEM_UNI_PULL_MASK 
UVM_SEQ_ITEM_WAIT_FOR_SEQUENCES_MASK 
UVM_SEQ_PORT 
uvm_sequence_library_package 
uvm_sequence_library_utils 
uvm_sequence_utils 
uvm_sequence_utils_begin 
uvm_sequence_utils_end 
uvm_sequencer_param_utils 
uvm_sequencer_param_utils_begin 
uvm_sequencer_utils 
uvm_sequencer_utils_begin 
uvm_sequencer_utils_end 
uvm_set_super_type 
uvm_slave_imp_decl 
UVM_TASK_ERROR 
UVM_TLM_ANALYSIS_MASK 
UVM_TLM_B_MASK 
UVM_TLM_B_TRANSPORT_IMP 
UVM_TLM_BLOCKING_GET_MASK 
UVM_TLM_BLOCKING_GET_PEEK_MASK 
UVM_TLM_BLOCKING_MASTER_MASK 
UVM_TLM_BLOCKING_PEEK_MASK 
UVM_TLM_BLOCKING_PUT_MASK 
UVM_TLM_BLOCKING_SLAVE_MASK 
UVM_TLM_BLOCKING_TRANSPORT_MASK 
UVM_TLM_FIFO_FUNCTION_ERROR 
UVM_TLM_FIFO_TASK_ERROR 
UVM_TLM_FUNCTION_ERROR 
UVM_TLM_GET_MASK 
UVM_TLM_GET_PEEK_MASK 
UVM_TLM_GET_TYPE_NAME 
UVM_TLM_IMPS_SVH 
UVM_TLM_MASTER_BIT_MASK 
UVM_TLM_MASTER_MASK 
UVM_TLM_NB_BW_MASK 
UVM_TLM_NB_FW_MASK 
UVM_TLM_NB_TRANSPORT_BW_IMP 
UVM_TLM_NB_TRANSPORT_FW_IMP 
UVM_TLM_NONBLOCKING_GET_MASK 
UVM_TLM_NONBLOCKING_GET_PEEK_MASK 
UVM_TLM_NONBLOCKING_MASTER_MASK 
UVM_TLM_NONBLOCKING_PEEK_MASK 
UVM_TLM_NONBLOCKING_PUT_MASK 
UVM_TLM_NONBLOCKING_SLAVE_MASK 
UVM_TLM_NONBLOCKING_TRANSPORT_MASK 
UVM_TLM_PEEK_MASK 
UVM_TLM_PUT_MASK 
UVM_TLM_SLAVE_BIT_MASK 
UVM_TLM_SLAVE_MASK 
UVM_TLM_TASK_ERROR 
UVM_TLM_TRANSPORT_MASK 
UVM_TRANSPORT_IMP 
uvm_transport_imp_decl 
uvm_typename 
uvm_unpack_array 
uvm_unpack_arrayN 
uvm_unpack_enum 
uvm_unpack_enumN 
uvm_unpack_int 
uvm_unpack_intN 
uvm_unpack_queue 
uvm_unpack_queueN 
uvm_unpack_real 
uvm_unpack_sarray 
uvm_unpack_sarrayN 
uvm_unpack_string 
uvm_update_sequence_lib 
uvm_update_sequence_lib_and_item 
uvm_user_bottomup_phase 
uvm_user_task_phase 
uvm_user_topdown_phase 
UVM_VERSION_1_1 
UVM_VERSION_DEFINES_SVH 
UVM_VERSION_STRING 
UVM_VERSION_SVH 
uvm_warning 
uvm_warning_context 

G  M  S  U


Macro Definition Documentation

 `define GUARD_SVT_8B10B_DATA_SV

 `define GUARD_SVT_ACCEPT_BEGIN_END_FILTER_PORT_SV

 `define GUARD_SVT_AGENT_SV

Wait for a request from the reactive driver. Returns a REQ instance.

 `define GUARD_SVT_BASE_MEM_SUITE_CONFIGURATION_SV

 `define GUARD_SVT_BFM_SHELL_ASSISTANT_SV

 `define GUARD_SVT_BFM_SHELL_SOURCE_UVM_SVI

 `define GUARD_SVT_BFM_SHELL_UVM_PKG

 `define GUARD_SVT_BOOTLOADER_SVI

Clients wishing to pull in the UVM package manually have a couple of options for doing so.

  • SVT_EXCLUDE_METHODOLOGY_PKG - If the goal is to avoid having to specify UVM_HOME on the command line, then the SVT package needs to exclude all UVM file references. The client can accomplish this by setting the SVT_EXCLUDE_METHODOLOGY_PKG define on the command line. This will cause both uvm_pkg.sv and uvm_macros.svh to be excluded from svt.uvm.pkg. The testbench must ensure that the UVM package has already been compiled and that the uvm_pkg is available to be imported before compiling the VIP package when using this option. The uvm_macros.svh file must also be included by the testbench before compiling the VIP package.

  • SVT_EXCLUDE_METHODOLOGY_PKG_INCLUDE - If the goal is to just externalize the compile, but to support the specification of an UVM_HOME on the command line, then the SVT package just needs to exclude the 'include' reference for the UVM package. The client can accomplish this by setting the SVT_EXCLUDE_METHODOLOGY_PKG_INCLUDE define on the command line. This will cause uvm_pkg.sv to be excluded from svt.uvm.pkg, but uvm_macros.svh will still be included by the SVT package. The testbench must ensure that the UVM package has already been compiled and that the uvm_pkg is available to be imported before compiling the VIP package when using this option.

 `define GUARD_SVT_BROADCAST_SEQUENCE_SV

 `define GUARD_SVT_BROADCAST_SV

 `define GUARD_SVT_CALLBACK_SOURCE_SV

 `define GUARD_SVT_CHANNEL_SV

 `define GUARD_SVT_CMD_DEFINES_SVI

 `define GUARD_SVT_COMMON_DEFINES_SVI

 `define GUARD_SVT_COMPARER_SV

 `define GUARD_SVT_COMPONENT_SV

 `define GUARD_SVT_COMPOUND_PATTERN_DATA_SV

 `define GUARD_SVT_CONFIG_DB_SV

 `define GUARD_SVT_CONFIGURATION_SV

 `define GUARD_SVT_CONSENSUS_SV

 `define GUARD_SVT_CONTROLLED_EVENT_SV

 `define GUARD_SVT_DATA_CONVERTER_SV

 `define GUARD_SVT_DATA_FSDB_WRITER_SV

 `define GUARD_SVT_DATA_ITER_SV

 `define GUARD_SVT_DATA_QUEUE_ITER_SV

 `define GUARD_SVT_DATA_STREAM_SV

 

 `define GUARD_SVT_DATA_SV

 `define GUARD_SVT_DATA_UTIL_SVI

 `define GUARD_SVT_DATA_WRITER_SV

 `define GUARD_SVT_DEBUG_OPTS_CARRIER_SV

 `define GUARD_SVT_DEBUG_OPTS_IMP_PORT_SV

 `define GUARD_SVT_DEBUG_OPTS_INTERCEPT_SV

 `define GUARD_SVT_DEBUG_OPTS_PORT_SV

 `define GUARD_SVT_DEBUG_OPTS_SV

 `define GUARD_SVT_DEBUG_VIP_DESCRIPTOR_SV

 `define GUARD_SVT_DEFINES_SVI

 `define GUARD_SVT_DISPATCH_SEQUENCE_SV

 `define GUARD_SVT_DISPATCH_SV

 

 `define GUARD_SVT_DOWNSTREAM_IMP_SV

 

 `define GUARD_SVT_DRIVER_BFM_SHELL_SV

 `define GUARD_SVT_DRIVER_SV

 `define GUARD_SVT_DYNAMIC_REPORT_OBJECT_SV

 `define GUARD_SVT_ENV_SV

 `define GUARD_SVT_ERR_CATCHER_SV

 `define GUARD_SVT_ERR_CHECK_STATS_COV_SV

 `define GUARD_SVT_ERR_CHECK_STATS_SV

 `define GUARD_SVT_ERR_CHECK_SV

 `define GUARD_SVT_EVENT_CONTROLLER_SV

 `define GUARD_SVT_EVENT_POOL_SV

 `define GUARD_SVT_EXCEPTION_LIST_SV

 `define GUARD_SVT_EXCEPTION_SV

 `define GUARD_SVT_EXIT_TIMER_SV

 `define GUARD_SVT_FACTORY_1ARG_SV

 `define GUARD_SVT_FACTORY_2ARG_SV

 `define GUARD_SVT_FACTORY_3ARG_SV

 `define GUARD_SVT_FACTORY_SV

 `define GUARD_SVT_FIFO_RATE_CONTROL

 `define GUARD_SVT_FIFO_RATE_CONTROL_CONFIGURATION_SV

 `define GUARD_SVT_FSM_SV

 `define GUARD_SVT_FUZZY_REAL_COMPARER_SV

 `define GUARD_SVT_GLOBALS_SV

 `define GUARD_SVT_IF_UTIL_SVI

 `define GUARD_SVT_INTERNAL_XACTOR_SV

 `define GUARD_SVT_LOADER_UTIL_SVI

 `define GUARD_SVT_LOGGER_SV

 `define GUARD_SVT_MEM_ADDRESS_MAPPER_STACK_SV

 `define GUARD_SVT_MEM_ADDRESS_MAPPER_SV

 `define GUARD_SVT_MEM_BACKDOOR_BASE_SV

 `define GUARD_SVT_MEM_BACKDOOR_SV

 `define GUARD_SVT_MEM_CATALOG_SV

 `define GUARD_SVT_MEM_CATALOG_SVI

 `define GUARD_SVT_MEM_CMD_ASSISTANT_SV

 `define GUARD_SVT_MEM_COMMON_DEFINES_SVI

 `define GUARD_SVT_MEM_CONFIGURATION_SV

 `define GUARD_SVT_MEM_CORE_SV

 `define GUARD_SVT_MEM_DEFINES_SVI

 `define GUARD_SVT_MEM_DPI_SVI

 `define GUARD_SVT_MEM_DRIVER_CALLBACK_SV

 `define GUARD_SVT_MEM_DRIVER_SV

 `define GUARD_SVT_MEM_RAM_SEQUENCE_SV

 `define GUARD_SVT_MEM_SA_CORE_2state_SV

 `define GUARD_SVT_MEM_SA_CORE_4state_SV

 `define GUARD_SVT_MEM_SA_DEFS_SVI

 `define GUARD_SVT_MEM_SA_DPI_SVI

 `define GUARD_SVT_MEM_SA_HELPERS_SV

1

 `define GUARD_SVT_MEM_SEQUENCE_SV

 `define GUARD_SVT_MEM_SEQUENCER_SV

 `define GUARD_SVT_MEM_SOURCE_UVM_SVI

 `define GUARD_SVT_MEM_SUITE_CONFIGURATION_SV

 `define GUARD_SVT_MEM_SV

 `define GUARD_SVT_MEM_SYSTEM_BACKDOOR_SV

 `define GUARD_SVT_MEM_TRANSACTION_SV

 `define GUARD_SVT_MEM_UVM_PKG

The basic objective of this program is to delave a final block to terminate the SLI license server. Since final blocks cannot exist inside a package, this must be defined external to the SVT package.

This file therefore provides the final block, inside a program, for inclusion in the SVT package files.

 `define GUARD_SVT_MEM_WORD_SV

 `define GUARD_SVT_MESSAGE_MANAGER_SV

 `define GUARD_SVT_MONITOR_BFM_SHELL_SV

 `define GUARD_SVT_MONITOR_SV

 `define GUARD_SVT_NOTIFY_SV

 `define GUARD_SVT_NVS_LOADER_UTIL_SVI

 `define GUARD_SVT_OBJECT_PATTERN_DATA_SV

 `define GUARD_SVT_PA_OBJECT_DATA_SV

 `define GUARD_SVT_PACKER_SV

 `define GUARD_SVT_PATTERN_DATA_CARRIER_SV

 `define GUARD_SVT_PATTERN_DATA_SV

 `define GUARD_SVT_PATTERN_SEQUENCE_SV

 `define GUARD_SVT_PATTERN_SV

 `define GUARD_SVT_PHASE_SV

 `define GUARD_SVT_PKG_PRECURSOR_SV

 `define GUARD_SVT_RANDOMIZE_ASSISTANT_SV

 `define GUARD_SVT_REACTIVE_DRIVER_SV

 `define GUARD_SVT_REACTIVE_SEQUENCE_SV

 `define GUARD_SVT_REACTIVE_SEQUENCER_SV

 `define GUARD_SVT_REPORT_CATCHER_SV

 `define GUARD_SVT_SEQUENCE_LIBRARY_SV

 `define GUARD_SVT_SEQUENCE_SV

 `define GUARD_SVT_SEQUENCER_SV

 `define GUARD_SVT_SOURCE_INTERNAL_SVI

 `define GUARD_SVT_SOURCE_UVM_SVI

 `define GUARD_SVT_STATUS_SV

 `define GUARD_SVT_SVC_ERR_CHECK_STATS_SV

 `define GUARD_SVT_SVC_ERR_CHECK_SV

 `define GUARD_SVT_SVC_MESSAGE_MANAGER_SV

 `define GUARD_SVT_SVC_SOURCE_UVM_SVI

 `define GUARD_SVT_SVC_UVM_PKG

 `define GUARD_SVT_TIMER_SV

 `define GUARD_SVT_TOGGLE_COV_BIT_SV

 `define GUARD_SVT_TOGGLE_COV_BIT_VECTOR_SV

 `define GUARD_SVT_TRAFFIC_ARBITER_SV

 `define GUARD_SVT_TRAFFIC_PROFILE_EVENT_SV

 `define GUARD_SVT_TRAFFIC_PROFILE_TRANSACTION_SV

 `define GUARD_SVT_TRANSACTION_ITER_SV

 `define GUARD_SVT_TRANSACTION_REPORT_SV

 `define GUARD_SVT_TRANSACTION_SV

 `define GUARD_SVT_TRIGGERED_TIMER_SV

 `define GUARD_SVT_TYPES_SV

 `define GUARD_SVT_UVM_CMD_ASSISTANT_SV

 `define GUARD_SVT_UVM_CMD_DEFINES_SVI

 `define GUARD_SVT_UVM_PKG

 `define GUARD_SVT_UVM_UTIL_SVI

 `define GUARD_SVT_VCAP_SV

 `define GUARD_SVT_VIP_WRITER_FSDB_UTIL_SV

 `define GUARD_SVT_VIP_WRITER_SV

 `define GUARD_SVT_VMM_UVM_BRIDGE_SOURCE_UVM_SVI

 `define GUARD_SVT_VMM_UVM_BRIDGE_UVM_PKG

 `define GUARD_SVT_VOTER_SV

 `define GUARD_SVT_XACTOR_CALLBACK_SV

 `define GUARD_SVT_XACTOR_SV

 `define GUARD_SVT_XML_WRITER_SV

 `define M_FIELD_QDA_ENUM ( TYPE, T, ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG !== local_data__.ARG) begin
               if(__m_uvm_status_container.comparer.show_max == 1) begin
                 __m_uvm_status_container.scope.set_arg(`"ARG`");
                 __m_uvm_status_container.comparer.print_msg("");
               end
               else if(__m_uvm_status_container.comparer.show_max) begin
                 ``if(ARG.size() != local_data__.ARG.size()) begin
                 `` void'(__m_uvm_status_container.comparer.compare_field(`"ARG``.size`", ARG.size(), local_data__.ARG.size(), 32));
                 ``end
                 ``else begin
                   foreach(ARG[i]) begin
                     if(ARG[i] !== local_data__.ARG[i]) begin
                       __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
                       $swrite(__m_uvm_status_container.stringv, "lhs = %0s : rhs = %0s",
                         ARG[i].name(), local_data__.ARG[i].name());
                       __m_uvm_status_container.comparer.print_msg(__m_uvm_status_container.stringv);
                       if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
                     end
                   end
                 ``end
               end
               else if ((__m_uvm_status_container.comparer.physical&&((FLAG)&UVM_PHYSICAL)) ||
                        (__m_uvm_status_container.comparer.abstract&&((FLAG)&UVM_ABSTRACT)) ||
                        (!((FLAG)&UVM_PHYSICAL) && !((FLAG)&UVM_ABSTRACT)) )
                 __m_uvm_status_container.comparer.result++;
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          ``if(__m_uvm_status_container.packer.use_metadata) __m_uvm_status_container.packer.pack_field_int(ARG.size(), 32);
          foreach(ARG[i])
            __m_uvm_status_container.packer.pack_field_int(int'(ARG[i]), $bits(ARG[i]));
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          ``int sz = ARG.size();
          ``if(__m_uvm_status_container.packer.use_metadata) sz = __m_uvm_status_container.packer.unpack_field_int(32);
          ``if(sz != ARG.size()) begin
          `` T tmp__;
          `` `M_UVM_``TYPE``_RESIZE(ARG,tmp__)
          ``end
          foreach(ARG[i])
            ARG[i] = T'(__m_uvm_status_container.packer.unpack_field_int($bits(ARG[i])));
        end
      UVM_RECORD:
        ``m_uvm_record_qda_enum(ARG,FLAG,ARG.size())
      UVM_PRINT:
        begin
          if(((FLAG)&UVM_NOPRINT) == 0) begin
             uvm_print_qda_enum(ARG, __m_uvm_status_container.printer, array, T)
          end
        end
      UVM_SETINT:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            ``else begin
            `` int sz = uvm_object::__m_uvm_status_container.bitstream;
            `` if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
            `` if(ARG.size() != sz) begin
            `` T tmp__;
            `` `M_UVM_``TYPE``_RESIZE(ARG,tmp__)
            `` end
            `` __m_uvm_status_container.status = 1;
            ``end
          end
          else if(!((FLAG)&UVM_READONLY)) begin
            bit wildcard_index__;
            int index__;
            index__ = uvm_get_array_index_int(str__, wildcard_index__);
            if(uvm_is_array(str__) && (index__ != -1)) begin
              if(wildcard_index__) begin
                for(index__=0; index__<ARG.size(); ++index__) begin
                  if(uvm_is_match(str__, {__m_uvm_status_container.scope.get_arg(),$sformatf("[%0d]", index__)})) begin
                    if (__m_uvm_status_container.print_matches)
                      uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg(), $sformatf("[%0d]",index__)}, UVM_LOW);
                    ARG[index__] = T'(uvm_object::__m_uvm_status_container.bitstream);
                    __m_uvm_status_container.status = 1;
                  end
                end
              end
              else if(uvm_is_match(str__, {__m_uvm_status_container.scope.get_arg(),$sformatf("[%0d]", index__)})) begin
                if(index__+1 > ARG.size()) begin
                  int sz = index__;
                  T tmp__;
                  `M_UVM_``TYPE``_RESIZE(ARG,tmp__)
                end
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                ARG[index__] = T'(uvm_object::__m_uvm_status_container.bitstream);
                __m_uvm_status_container.status = 1;
              end
            end
          end
        end
    endcase
  end

 `define M_UVM_ARRAY_RESIZE ( ARG, VAL )


ARG = new[sz](ARG);
 

 `define m_uvm_bottomup_phase ( PHASE, COMP, PREFIX )


class PREFIX``PHASE``_phase extends uvm_bottomup_phase;
          virtual function void exec_func(uvm_component comp, uvm_phase phase);
            COMP comp_;
            if ($cast(comp_,comp))
              comp_.``PHASE``_phase(phase);
          endfunction
          static PREFIX``PHASE``_phase m_inst;
          static const string type_name = `"PREFIX``PHASE``_phase`";
          static function PREFIX``PHASE``_phase get();
            if(m_inst == null) begin
              m_inst = new();
            end
            return m_inst;
          endfunction
          protected function new(string name=`"PHASE`");
            super.new(name);
          endfunction
          virtual function string get_type_name();
            return type_name;
          endfunction
        endclass
 

 `define m_uvm_component_registry_internal ( T, S )


typedef uvm_component_registry #(T,`"S`") type_id;
   static function type_id get_type();
     return type_id::get();
   endfunction
   virtual function uvm_object_wrapper get_object_type();
     return type_id::get();
   endfunction

 `define m_uvm_component_registry_param ( T )


typedef uvm_component_registry #(T) type_id;
   static function type_id get_type();
     return type_id::get();
   endfunction
   virtual function uvm_object_wrapper get_object_type();
     return type_id::get();
   endfunction

 `define M_UVM_FIELD_DATA_AA_enum_key ( KEY, ARG, FLAG )


begin
    begin
      KEY aa_key;
      case (what__)
        UVM_COMPARE:
           begin
            if(!((FLAG)&UVM_NOCOMPARE) && (tmp_data__ != null) )
            begin
              $cast(local_data__, tmp_data__);
              if(ARG.num() != local_data__.ARG.num()) begin
                 int s1__, s2__;
                 __m_uvm_status_container.stringv = "";
                 s1__ = ARG.num(); s2__ = local_data__.ARG.num();
                 $swrite(__m_uvm_status_container.stringv, "lhs size = %0d : rhs size = %0d",
                    s1__, s2__);
                 __m_uvm_status_container.comparer.print_msg(__m_uvm_status_container.stringv);
              end
              if(ARG.first(aa_key))
                do begin
                  void'(__m_uvm_status_container.comparer.compare_field_int({`"ARG[`",aa_key.name(),"]"},
                    ARG[aa_key], local_data__.ARG[aa_key], $bits(ARG[aa_key]),
                    uvm_radix_enum'((FLAG)&UVM_RADIX) ));
                end while(ARG.next(aa_key));
            end
           end
        UVM_COPY:
          begin
            if(!((FLAG)&UVM_NOCOPY) && (tmp_data__ != null) )
            begin
              $cast(local_data__, tmp_data__);
              ARG.delete();
              if(local_data__.ARG.first(aa_key))
                do begin
                  ARG[aa_key] = local_data__.ARG[aa_key];
                end while(local_data__.ARG.next(aa_key));
            end
          end
        UVM_PRINT:
          if(!((FLAG)&UVM_NOPRINT)) begin
            uvm_printer p__ = __m_uvm_status_container.printer;
            p__.print_array_header (`"ARG`", ARG.num(),`"aa_``KEY`");
            if((p__.knobs.depth == -1) || (__m_uvm_status_container.printer.m_scope.depth() < p__.knobs.depth+1))
            begin
              if(ARG.first(aa_key))
                do begin
                  __m_uvm_status_container.printer.print_int(
                    {"[",aa_key.name(),"]"}, ARG[aa_key], $bits(ARG[aa_key]),
                    uvm_radix_enum'((FLAG)&UVM_RADIX), "[" );
                end while(ARG.next(aa_key));
            end
            p__.print_array_footer(ARG.num());
          end
      endcase
    end
  end

 `define M_UVM_FIELD_DATA_AA_generic ( TYPE, KEY, ARG, FLAG )


begin
    begin
      case (what__)
        UVM_COMPARE:
           begin
            if(!((FLAG)&UVM_NOCOMPARE) && (tmp_data__ != null) )
            begin
              $cast(local_data__, tmp_data__);
              if(ARG.num() != local_data__.ARG.num()) begin
                 int s1__, s2__;
                 __m_uvm_status_container.stringv = "";
                 s1__ = ARG.num(); s2__ = local_data__.ARG.num();
                 $swrite(__m_uvm_status_container.stringv, "lhs size = %0d : rhs size = %0d",
                    s1__, s2__);
                 __m_uvm_status_container.comparer.print_msg(__m_uvm_status_container.stringv);
              end
              string_aa_key = "";
              while(ARG.next(string_aa_key)) begin
                string s;
                __m_uvm_status_container.scope.set_arg({"[",string_aa_key,"]"});
                s = {`"ARG[`",string_aa_key,"]"};
                if($bits(ARG[string_aa_key]) <= 64)
                  void'(__m_uvm_status_container.comparer.compare_field_int(s, ARG[string_aa_key], local_data__.ARG[string_aa_key], $bits(ARG[string_aa_key]), uvm_radix_enum'((FLAG)&UVM_RADIX)));
                else
                  void'(__m_uvm_status_container.comparer.compare_field(s, ARG[string_aa_key], local_data__.ARG[string_aa_key], $bits(ARG[string_aa_key]), uvm_radix_enum'((FLAG)&UVM_RADIX)));
                __m_uvm_status_container.scope.unset_arg(string_aa_key);
              end
            end
           end
        UVM_COPY:
          begin
            if(!((FLAG)&UVM_NOCOPY) && (tmp_data__ != null) )
            begin
              $cast(local_data__, tmp_data__);
              ARG.delete();
              string_aa_key = "";
              while(local_data__.ARG.next(string_aa_key))
                ARG[string_aa_key] = local_data__.ARG[string_aa_key];
            end
          end
        UVM_PRINT:
          if(!((FLAG)&UVM_NOPRINT)) begin
            `uvm_print_aa_``KEY``_``TYPE``3(ARG, uvm_radix_enum'((FLAG)&(UVM_RADIX)),
                                            __m_uvm_status_container.printer)
          end
      endcase
    end
  end

 `define M_UVM_FIELD_DATA_AA_int_key ( KEY, ARG, FLAG )


begin
    begin
      KEY aa_key;
      case (what__)
        UVM_COMPARE:
           begin
            if(!((FLAG)&UVM_NOCOMPARE) && (tmp_data__ != null) )
            begin
              $cast(local_data__, tmp_data__);
              if(ARG.num() != local_data__.ARG.num()) begin
                 int s1__, s2__;
                 __m_uvm_status_container.stringv = "";
                 s1__ = ARG.num(); s2__ = local_data__.ARG.num();
                 $swrite(__m_uvm_status_container.stringv, "lhs size = %0d : rhs size = %0d",
                    s1__, s2__);
                 __m_uvm_status_container.comparer.print_msg(__m_uvm_status_container.stringv);
              end
              if(ARG.first(aa_key))
                do begin
                  string s;
                  $swrite(string_aa_key, "%0d", aa_key);
                  __m_uvm_status_container.scope.set_arg({"[",string_aa_key,"]"});
                  s = {`"ARG[`",string_aa_key,"]"};
                  if($bits(ARG[aa_key]) <= 64)
                    void'(__m_uvm_status_container.comparer.compare_field_int(s, ARG[aa_key], local_data__.ARG[aa_key], $bits(ARG[aa_key]), uvm_radix_enum'((FLAG)&UVM_RADIX)));
                  else
                    void'(__m_uvm_status_container.comparer.compare_field(s, ARG[aa_key], local_data__.ARG[aa_key], $bits(ARG[aa_key]), uvm_radix_enum'((FLAG)&UVM_RADIX)));
                  __m_uvm_status_container.scope.unset_arg(string_aa_key);
                end while(ARG.next(aa_key));
            end
           end
        UVM_COPY:
          begin
            if(!((FLAG)&UVM_NOCOPY) && (tmp_data__ != null) )
            begin
              $cast(local_data__, tmp_data__);
              ARG.delete();
              if(local_data__.ARG.first(aa_key))
                do begin
                  ARG[aa_key] = local_data__.ARG[aa_key];
                end while(local_data__.ARG.next(aa_key));
            end
          end
        UVM_PRINT:
          if(!((FLAG)&UVM_NOPRINT)) begin
             uvm_print_aa_int_key4(KEY,ARG, uvm_radix_enum'((FLAG)&(UVM_RADIX)),
                                    __m_uvm_status_container.printer)
          end
      endcase
    end
  end

 `define M_UVM_FIELD_DATA_AA_int_string ( ARG, FLAG )


M_UVM_FIELD_DATA_AA_generic(int, string, ARG, FLAG)

 `define M_UVM_FIELD_DATA_AA_object_int ( ARG, FLAG )


begin
    int key__;
    begin
      case (what__)
        UVM_COMPARE:
           begin
            if(!((FLAG)&UVM_NOCOMPARE) && (tmp_data__ != null) )
            begin
              $cast(local_data__, tmp_data__);
              if(ARG.num() != local_data__.ARG.num()) begin
                 int s1__, s2__;
                 __m_uvm_status_container.stringv = "";
                 s1__ = ARG.num(); s2__ = local_data__.ARG.num();
                 $swrite(__m_uvm_status_container.stringv, "lhs size = %0d : rhs size = %0d",
                          s1__, s2__);
                 __m_uvm_status_container.comparer.print_msg(__m_uvm_status_container.stringv);
              end
              if(ARG.first(key__)) begin
                do begin
                  uvm_object lhs;
                  uvm_object rhs;
                  lhs = ARG[key__];
                  rhs = local_data__.ARG[key__];
                  __m_uvm_status_container.scope.down_element(key__);
                  if(rhs != lhs) begin
                    bit refcmp;
                    refcmp = ((FLAG)& UVM_SHALLOW) && !(__m_uvm_status_container.comparer.policy == UVM_DEEP);
                    if(!refcmp && !(__m_uvm_status_container.comparer.policy == UVM_REFERENCE)) begin
                      if(((rhs == null) && (lhs != null)) || ((lhs==null) && (rhs!=null))) begin
                        __m_uvm_status_container.comparer.print_msg_object(lhs, rhs);
                      end
                      else begin
                        if (lhs != null)
                          void'(lhs.compare(rhs, __m_uvm_status_container.comparer));
                      end
                    end
                    else begin __m_uvm_status_container.comparer.print_msg_object(lhs, rhs);
                    end
                  end
                  __m_uvm_status_container.scope.up_element();
                end while(ARG.next(key__));
              end
            end
          end
        UVM_COPY:
          begin
           if(!((FLAG)&UVM_NOCOPY) && (tmp_data__ != null) )
           begin
            $cast(local_data__, tmp_data__);
            ARG.delete();
            if(local_data__.ARG.first(key__))
             do begin
               if((FLAG)&UVM_REFERENCE)
                ARG[key__] = local_data__.ARG[key__];
             /*else if((FLAG)&UVM_SHALLOW)*/
             /* ARG[key__] = new local_data__.ARG[key__];*/
               else begin
                 uvm_object tmp_obj;
                 tmp_obj = local_data__.ARG[key__].clone();
                 if(tmp_obj != null)
                   $cast(ARG[key__], tmp_obj);
                 else
                   ARG[key__]=null;
               end
             end while(local_data__.ARG.next(key__));
           end
         end
        UVM_PRINT:
          if(!((FLAG)&UVM_NOPRINT)) begin
             uvm_print_aa_int_object3(ARG, __m_uvm_status_container.printer,FLAG)
          end
      endcase
    end
  end

 `define M_UVM_FIELD_DATA_AA_object_string ( ARG, FLAG )


begin
    begin
      case (what__)
        UVM_COMPARE:
           begin
            if(!((FLAG)&UVM_NOCOMPARE) && (tmp_data__ != null) )
            begin
              $cast(local_data__, tmp_data__);
              if(ARG.num() != local_data__.ARG.num()) begin
                 int s1__, s2__;
                 __m_uvm_status_container.stringv = "";
                 s1__ = ARG.num(); s2__ = local_data__.ARG.num();
                 $swrite(__m_uvm_status_container.stringv, "lhs size = %0d : rhs size = %0d",
                          s1__, s2__);
                 __m_uvm_status_container.comparer.print_msg(__m_uvm_status_container.stringv);
              end
              string_aa_key = "";
              while(ARG.next(string_aa_key)) begin
                uvm_object lhs;
                uvm_object rhs;
                lhs = ARG[string_aa_key];
                rhs = local_data__.ARG[string_aa_key];
                __m_uvm_status_container.scope.down({"[",string_aa_key,"]"});
                if(rhs != lhs) begin
                  bit refcmp;
                  refcmp = ((FLAG)& UVM_SHALLOW) && !(__m_uvm_status_container.comparer.policy == UVM_DEEP);
                  if(!refcmp && !(__m_uvm_status_container.comparer.policy == UVM_REFERENCE)) begin
                    if(((rhs == null) && (lhs != null)) || ((lhs==null) && (rhs!=null))) begin
                      __m_uvm_status_container.comparer.print_msg_object(lhs, rhs);
                    end
                    else begin
                      if (lhs != null)
                        void'(lhs.compare(rhs, __m_uvm_status_container.comparer));
                    end
                  end
                  else begin __m_uvm_status_container.comparer.print_msg_object(lhs, rhs);
                  end
                end
                __m_uvm_status_container.scope.up_element();
              end
            end
          end
        UVM_COPY:
          begin
           if(!((FLAG)&UVM_NOCOPY) && (tmp_data__ != null) )
           begin
            $cast(local_data__, tmp_data__);
            ARG.delete();
            if(local_data__.ARG.first(string_aa_key))
             do
               if((FLAG)&UVM_REFERENCE)
                ARG[string_aa_key] = local_data__.ARG[string_aa_key];
             /*else if((FLAG)&UVM_SHALLOW)*/
             /* ARG[string_aa_key] = new local_data__.ARG[string_aa_key];*/
               else begin
                $cast(ARG[string_aa_key],local_data__.ARG[string_aa_key].clone());
                ARG[string_aa_key].set_name({`"ARG`","[",string_aa_key, "]"});
               end
             while(local_data__.ARG.next(string_aa_key));
           end
          end
        UVM_PRINT:
          if(!((FLAG)&UVM_NOPRINT)) begin
            uvm_print_aa_string_object3(ARG, __m_uvm_status_container.printer,FLAG)
          end
      endcase
    end
  end

 `define M_UVM_FIELD_DATA_AA_string_string ( ARG, FLAG )


begin
    begin
      case (what__)
        UVM_COPY:
          begin
            if(!((FLAG)&UVM_NOCOPY) && (local_data__ !=null))
              ARG = local_data__.ARG ;
          end
        UVM_PRINT:
          if(!((FLAG)&UVM_NOPRINT)) begin
            uvm_print_aa_string_string2(ARG, __m_uvm_status_container.printer)
          end
        UVM_COMPARE:
           begin
            if(!((FLAG)&UVM_NOCOMPARE) && (tmp_data__ != null) )
            begin
              $cast(local_data__, tmp_data__);
              if(ARG.num() != local_data__.ARG.num()) begin
                 int s1__, s2__;
                 __m_uvm_status_container.stringv = "";
                 s1__ = ARG.num(); s2__ = local_data__.ARG.num();
                 $swrite(__m_uvm_status_container.stringv, "lhs size = %0d : rhs size = %0d",
                    s1__, s2__);
                 __m_uvm_status_container.comparer.print_msg(__m_uvm_status_container.stringv);
              end
              string_aa_key = "";
              while(ARG.next(string_aa_key)) begin
                string s__ = ARG[string_aa_key];
                __m_uvm_status_container.scope.set_arg({"[",string_aa_key,"]"});
                if(ARG[string_aa_key] != local_data__.ARG[string_aa_key]) begin
                   __m_uvm_status_container.stringv = { "lhs = \"", s__, "\" : rhs = \"", local_data__.ARG[string_aa_key], "\""};
                   __m_uvm_status_container.comparer.print_msg(__m_uvm_status_container.stringv);
                end
                __m_uvm_status_container.scope.unset_arg(string_aa_key);
              end
            end
           end
      endcase
    end
  end

 `define M_UVM_FIELD_QDA_INT ( TYPE, ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if (local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if (local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG !== local_data__.ARG) begin
               if(__m_uvm_status_container.comparer.show_max == 1) begin
                 __m_uvm_status_container.scope.set_arg(`"ARG`");
                 __m_uvm_status_container.comparer.print_msg("");
               end
               else if(__m_uvm_status_container.comparer.show_max) begin
                 `` if(ARG.size() != local_data__.ARG.size()) begin
                 `` void'(__m_uvm_status_container.comparer.compare_field(`"ARG``.size`", ARG.size(), local_data__.ARG.size(), 32));
                 `` end
                 else begin
                   foreach(ARG[i]) begin
                     if(ARG[i] !== local_data__.ARG[i]) begin
                       __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
                       void'(__m_uvm_status_container.comparer.compare_field("", ARG[i], local_data__.ARG[i], $bits(ARG[i])));
                     end
                   end
                 end
               end
               else if ((__m_uvm_status_container.comparer.physical&&((FLAG)&UVM_PHYSICAL)) ||
                        (__m_uvm_status_container.comparer.abstract&&((FLAG)&UVM_ABSTRACT)) ||
                        (!((FLAG)&UVM_PHYSICAL) && !((FLAG)&UVM_ABSTRACT)) )
                 __m_uvm_status_container.comparer.result++;
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          `` if(__m_uvm_status_container.packer.use_metadata) __m_uvm_status_container.packer.pack_field_int(ARG.size(), 32);
          foreach(ARG[i])
            if($bits(ARG[i]) <= 64) __m_uvm_status_container.packer.pack_field_int(ARG[i], $bits(ARG[i]));
            else __m_uvm_status_container.packer.pack_field(ARG[i], $bits(ARG[i]));
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          `` int sz = ARG.size();
          `` if(__m_uvm_status_container.packer.use_metadata) sz = __m_uvm_status_container.packer.unpack_field_int(32);
          if(sz != ARG.size()) begin
          `M_UVM_``TYPE``_RESIZE (ARG,0)
          end
          foreach(ARG[i])
            if($bits(ARG[i]) <= 64) ARG[i] = __m_uvm_status_container.packer.unpack_field_int($bits(ARG[i]));
            else ARG[i] = __m_uvm_status_container.packer.unpack_field($bits(ARG[i]));
        end
      UVM_RECORD:
        m_uvm_record_qda_int(ARG, FLAG, ARG.size())
      UVM_PRINT:
        begin
          if(((FLAG)&UVM_NOPRINT) == 0) begin
             uvm_print_array_int3(ARG, uvm_radix_enum'((FLAG)&(UVM_RADIX)),
                                   __m_uvm_status_container.printer)
          end
        end
      UVM_SETINT:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            `` else begin
            `` int sz = uvm_object::__m_uvm_status_container.bitstream;
            `` if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
            `` if(ARG.size() != sz) begin
            `` `M_UVM_``TYPE``_RESIZE(ARG,0)
            `` end
            `` __m_uvm_status_container.status = 1;
            `` end
          end
          else if(!((FLAG)&UVM_READONLY)) begin
            bit wildcard_index__;
            int index__;
            index__ = uvm_get_array_index_int(str__, wildcard_index__);
            if(uvm_is_array(str__) && (index__ != -1)) begin
              if(wildcard_index__) begin
                for(index__=0; index__<ARG.size(); ++index__) begin
                  if(uvm_is_match(str__, {__m_uvm_status_container.scope.get_arg(),$sformatf("[%0d]", index__)})) begin
                    if (__m_uvm_status_container.print_matches)
                      uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg(), $sformatf("[%0d]",index__)}, UVM_LOW);
                    ARG[index__] = uvm_object::__m_uvm_status_container.bitstream;
                    __m_uvm_status_container.status = 1;
                  end
                end
              end
              else if(uvm_is_match(str__, {__m_uvm_status_container.scope.get_arg(),$sformatf("[%0d]", index__)})) begin
                if(index__+1 > ARG.size()) begin
                  int sz = index__;
                  int tmp__;
                  `M_UVM_``TYPE``_RESIZE(ARG,tmp__)
                end
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                ARG[index__] = uvm_object::__m_uvm_status_container.bitstream;
                __m_uvm_status_container.status = 1;
              end
            end
          end
        end
    endcase
  end

 `define M_UVM_FIELD_QDA_OBJECT ( TYPE, ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) begin
            if(((FLAG)&UVM_REFERENCE))
              ARG = local_data__.ARG;
            else begin
              int sz = local_data__.ARG.size();
              `M_UVM_``TYPE``_RESIZE(ARG,null)
              foreach(ARG[i]) begin
                if(ARG[i] != null && local_data__.ARG[i] != null)
                  ARG[i].copy(local_data__.ARG[i]);
                else if(ARG[i] == null && local_data__.ARG[i] != null)
                  $cast(ARG[i], local_data__.ARG[i].clone());
                else
                  ARG[i] = null;
              end
            end
          end
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(((FLAG)&UVM_REFERENCE) && (__m_uvm_status_container.comparer.show_max <= 1) && (ARG !== local_data__.ARG) ) begin
               if(__m_uvm_status_container.comparer.show_max == 1) begin
                 __m_uvm_status_container.scope.set_arg(`"ARG`");
                 __m_uvm_status_container.comparer.print_msg("");
               end
               else if ((__m_uvm_status_container.comparer.physical&&((FLAG)&UVM_PHYSICAL)) ||
                        (__m_uvm_status_container.comparer.abstract&&((FLAG)&UVM_ABSTRACT)) ||
                        (!((FLAG)&UVM_PHYSICAL) && !((FLAG)&UVM_ABSTRACT)) )
                 __m_uvm_status_container.comparer.result++;
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
            else begin
              string s;
              if(ARG.size() != local_data__.ARG.size()) begin
                if(__m_uvm_status_container.comparer.show_max == 1) begin
                  __m_uvm_status_container.scope.set_arg(`"ARG`");
                  __m_uvm_status_container.comparer.print_msg($sformatf("size mismatch: lhs: %0d rhs: %0d", ARG.size(), local_data__.ARG.size()));
                end
              end
              for(int i=0; i<ARG.size() && iARG.size(); ++i) begin
                if(ARG[i] != null && local_data__.ARG[i] != null) begin
                  $swrite(s,`"ARG[%0d]`",i);
                  void'(__m_uvm_status_container.comparer.compare_object(s, ARG[i], local_data__.ARG[i]));
                end
                if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
              end
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          if(__m_uvm_status_container.packer.use_metadata) __m_uvm_status_container.packer.pack_field_int(ARG.size(), 32);
          foreach(ARG[i])
            __m_uvm_status_container.packer.pack_object(ARG[i]);
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          int sz = ARG.size();
          if(__m_uvm_status_container.packer.use_metadata) sz = __m_uvm_status_container.packer.unpack_field_int(32);
          if(sz != ARG.size()) begin
            `M_UVM_``TYPE``_RESIZE(ARG,null)
          end
          foreach(ARG[i])
            __m_uvm_status_container.packer.unpack_object(ARG[i]);
        end
      UVM_RECORD:
        m_uvm_record_qda_object(ARG,FLAG,ARG.size())
      UVM_PRINT:
        begin
          if(((FLAG)&UVM_NOPRINT) == 0) begin
             uvm_print_array_object3(ARG, __m_uvm_status_container.printer,FLAG)
          end
        end
      UVM_SETINT:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
              int sz = uvm_object::__m_uvm_status_container.bitstream;
              if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
              if(ARG.size() != sz) begin
                `M_UVM_``TYPE``_RESIZE(ARG,null)
              end
              __m_uvm_status_container.status = 1;
            end
          end
          else if(!((FLAG)&UVM_READONLY)) begin
            foreach(ARG[i]) begin
              string s;
              $swrite(s,`"ARG[%0d]`",i);
              __m_uvm_status_container.scope.set_arg(s);
              if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
   uvm_report_warning("STRMTC", {"set_int()", ": Match ignored for string ", str__, ". Cannot set object to int value."});
              end
              else if(ARG[i]!=null && !((FLAG)&UVM_REFERENCE)) begin
                int cnt;
                for(cnt=0; cnt                   if(str__[cnt] == "." || str__[cnt] == "*") break;
                end
                if(cnt!=str__.len()) begin
                  __m_uvm_status_container.scope.down(s);
                  ARG[i].__m_uvm_field_automation(null, UVM_SETINT, str__);
                  __m_uvm_status_container.scope.up();
                end
              end
            end
          end
        end
      UVM_SETSTR:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
                  uvm_report_warning("STRMTC", {"set_str()", ": Match ignored for string ", str__, ". Cannot set array of objects to string value."});
            end
          end
          else if(!((FLAG)&UVM_READONLY)) begin
            foreach(ARG[i]) begin
              string s;
              $swrite(s,`"ARG[%0d]`",i);
              __m_uvm_status_container.scope.set_arg(s);
              if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
                  uvm_report_warning("STRMTC", {"set_str()", ": Match ignored for string ", str__, ". Cannot set object to string value."});
              end
              else if(ARG[i]!=null && !((FLAG)&UVM_REFERENCE)) begin
                int cnt;
                for(cnt=0; cnt                   if(str__[cnt] == "." || str__[cnt] == "*") break;
                end
                if(cnt!=str__.len()) begin
                  __m_uvm_status_container.scope.down(s);
                  ARG[i].__m_uvm_field_automation(null, UVM_SETSTR, str__);
                  __m_uvm_status_container.scope.up();
                end
              end
            end
          end
        end
      UVM_SETOBJ:
        begin
          string s;
          if(!((FLAG)&UVM_READONLY)) begin
            bit wildcard_index__;
            int index__;
            __m_uvm_status_container.scope.set_arg(`"ARG`");
            index__ = uvm_get_array_index_int(str__, wildcard_index__);
            if(uvm_is_array(str__) && (index__ != -1)) begin
              if(wildcard_index__) begin
                for(index__=0; index__<ARG.size(); ++index__) begin
                  if(uvm_is_match(str__, {__m_uvm_status_container.scope.get_arg(),$sformatf("[%0d]", index__)})) begin
                    if (__m_uvm_status_container.print_matches)
                      uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg(), $sformatf("[%0d]",index__)}, UVM_LOW);
                    $cast(ARG[index__], uvm_object::__m_uvm_status_container.object);
                    __m_uvm_status_container.status = 1;
                  end
                end
              end
              else if(uvm_is_match(str__, {__m_uvm_status_container.get_full_scope_arg(),$sformatf("[%0d]", index__)})) begin
                if(index__+1 > ARG.size()) begin
                  int sz = index__+1;
                  `M_UVM_``TYPE``_RESIZE(ARG,null)
                end
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                $cast(ARG[index__], uvm_object::__m_uvm_status_container.object);
                __m_uvm_status_container.status = 1;
              end
            end
            else if(!((FLAG)&UVM_REFERENCE)) begin
              int cnt;
              foreach(ARG[i]) begin
                if (ARG[i]!=null) begin
                  string s;
                  $swrite(s,`"ARG[%0d]`",i);
                for(cnt=0; cnt                   if(str__[cnt] == "." || str__[cnt] == "*") break;
                end
                if(cnt!=str__.len()) begin
                  __m_uvm_status_container.scope.down(s);
                  ARG[i].__m_uvm_field_automation(null, UVM_SETOBJ, str__);
                  __m_uvm_status_container.scope.up();
                end
              end
            end
          end
        end
        end
    endcase
  end

 `define M_UVM_FIELD_QDA_REAL ( TYPE, ARG, FLAG, T )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if (local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if (local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG != local_data__.ARG) begin
               if(__m_uvm_status_container.comparer.show_max == 1) begin
                 __m_uvm_status_container.scope.set_arg(`"ARG`");
                 __m_uvm_status_container.comparer.print_msg("");
               end
               else if(__m_uvm_status_container.comparer.show_max) begin
                 if(ARG.size() != local_data__.ARG.size()) begin
                   void'(__m_uvm_status_container.comparer.compare_field(`"ARG_size`", ARG.size(), local_data__.ARG.size(), 32));
                 end
                 else begin
                   foreach(ARG[i]) begin
                     if(ARG[i] != local_data__.ARG[i]) begin
                       __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
                       void'(__m_uvm_status_container.comparer.compare_field_real(`"ARG`", ARG[i], local_data__.ARG[i]));
                     end
                   end
                 end
               end
               else if ((__m_uvm_status_container.comparer.physical&&((FLAG)&UVM_PHYSICAL)) ||
                        (__m_uvm_status_container.comparer.abstract&&((FLAG)&UVM_ABSTRACT)) ||
                        (!((FLAG)&UVM_PHYSICAL) && !((FLAG)&UVM_ABSTRACT)) )
                 __m_uvm_status_container.comparer.result++;
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
         end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          if(__m_uvm_status_container.packer.use_metadata) __m_uvm_status_container.packer.pack_field_int(ARG.size(), 32);
          foreach(ARG[i]) begin
            __m_uvm_status_container.packer.pack_field_int($realtobits(ARG[i]), 64);
          end
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          int sz = ARG.size();
          if(__m_uvm_status_container.packer.use_metadata) sz = __m_uvm_status_container.packer.unpack_field_int(32);
          if(sz != ARG.size()) begin
            `M_UVM_``TYPE``_RESIZE (ARG,0)
          end
          foreach(ARG[i]) begin
            ARG[i] = $bitstoreal(__m_uvm_status_container.packer.unpack_field_int(64));
          end
        end
      UVM_RECORD:
        m_uvm_record_qda_real(ARG, FLAG, ARG.size())
      UVM_PRINT:
        begin
          if(((FLAG)&UVM_NOPRINT) == 0) begin
            uvm_print_qda_real3(ARG, __m_uvm_status_container.printer, T)
          end
        end
      UVM_SETINT:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
             int sz = uvm_object::__m_uvm_status_container.bitstream;
             if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
             if(ARG.size() != sz) begin
               `M_UVM_``TYPE``_RESIZE(ARG,0)
             end
             __m_uvm_status_container.status = 1;
            end
          end
          else if(!((FLAG)&UVM_READONLY)) begin
            foreach(ARG[i]) begin
              __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
              if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                ARG[i] = uvm_object::__m_uvm_status_container.bitstream;
                __m_uvm_status_container.status = 1;
              end
            end
          end
        end
    endcase
  end

 `define M_UVM_FIELD_QDA_STRING ( TYPE, ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG != local_data__.ARG) begin
               if(__m_uvm_status_container.comparer.show_max == 1) begin
                 __m_uvm_status_container.scope.set_arg(`"ARG`");
                 __m_uvm_status_container.comparer.print_msg("");
               end
               else if(__m_uvm_status_container.comparer.show_max) begin
                 if(ARG.size() != local_data__.ARG.size()) begin
                   void'(__m_uvm_status_container.comparer.compare_field(`"ARG``.size`", ARG.size(), local_data__.ARG.size(), 32));
                 end
                 else begin
                   foreach(ARG[i]) begin
                     if(ARG[i] != local_data__.ARG[i]) begin
                       __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
                       void'(__m_uvm_status_container.comparer.compare_string("", ARG[i], local_data__.ARG[i]));
                     end
                   end
                 end
               end
               else if ((__m_uvm_status_container.comparer.physical&&((FLAG)&UVM_PHYSICAL)) ||
                        (__m_uvm_status_container.comparer.abstract&&((FLAG)&UVM_ABSTRACT)) ||
                        (!((FLAG)&UVM_PHYSICAL) && !((FLAG)&UVM_ABSTRACT)) )
                 __m_uvm_status_container.comparer.result++;
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          if(__m_uvm_status_container.packer.use_metadata) __m_uvm_status_container.packer.pack_field_int(ARG.size(), 32);
          foreach(ARG[i])
            __m_uvm_status_container.packer.pack_string(ARG[i]);
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          int sz = ARG.size();
          if(__m_uvm_status_container.packer.use_metadata) sz = __m_uvm_status_container.packer.unpack_field_int(32);
          if(sz != ARG.size()) begin
            `M_UVM_``TYPE``_RESIZE(ARG,"")
          end
          foreach(ARG[i])
            ARG[i] = __m_uvm_status_container.packer.unpack_string();
        end
      UVM_RECORD:
        m_uvm_record_qda_string(ARG,FLAG,ARG.size())
      UVM_PRINT:
        begin
          if(((FLAG)&UVM_NOPRINT) == 0) begin
             uvm_print_array_string2(ARG, __m_uvm_status_container.printer)
          end
        end
      UVM_SETINT:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
              int sz = uvm_object::__m_uvm_status_container.bitstream;
              if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
              if(ARG.size() != sz) begin
                `M_UVM_``TYPE``_RESIZE(ARG,"")
              end
              __m_uvm_status_container.status = 1;
            end
          end
        end
      UVM_SETSTR:
        begin
          if(!((FLAG)&UVM_READONLY)) begin
            bit wildcard_index__;
            int index__;
            __m_uvm_status_container.scope.set_arg(`"ARG`");
            index__ = uvm_get_array_index_int(str__, wildcard_index__);
            if(uvm_is_array(str__) && (index__ != -1)) begin
              if(wildcard_index__) begin
                for(index__=0; index__<ARG.size(); ++index__) begin
                  if(uvm_is_match(str__, {__m_uvm_status_container.scope.get_arg(),$sformatf("[%0d]", index__)})) begin
                    if (__m_uvm_status_container.print_matches)
                      uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg(), $sformatf("[%0d]",index__)}, UVM_LOW);
                    ARG[index__] = uvm_object::__m_uvm_status_container.stringv;
                    __m_uvm_status_container.status = 1;
                  end
                end
              end
              else if(uvm_is_match(str__, {__m_uvm_status_container.scope.get_arg(),$sformatf("[%0d]", index__)})) begin
                if(index__+1 > ARG.size()) begin
                  int sz = index__;
                  string tmp__;
                  `M_UVM_``TYPE``_RESIZE(ARG,tmp__)
                end
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                ARG[index__] = uvm_object::__m_uvm_status_container.stringv;
                __m_uvm_status_container.status = 1;
              end
            end
          end
        end
    endcase
  end

 `define M_UVM_FIELD_SET_AA_INT_ENUMTYPE ( INDEX_TYPE, ARRAY_TYPE, ARRAY, RHS, FLAG )


if((what__ >= UVM_START_FUNCS && what__ <= UVM_END_FUNCS) && (((FLAG)&UVM_READONLY) == 0)) begin
    bit wildcard_index__;
    INDEX_TYPE index__;
    string idx__;
    index__ = INDEX_TYPE'(uvm_get_array_index_int(str__, wildcard_index__));
    if(what__==UVM_SET``ARRAY_TYPE)
    begin
      __m_uvm_status_container.scope.down(`"ARRAY`");
      if(uvm_is_array(str__) ) begin
        if(wildcard_index__) begin
          if(ARRAY.first(index__))
          do begin
            $swrite(idx__, __m_uvm_status_container.scope.get(), "[", index__, "]");
            if(uvm_is_match(str__, idx__)) begin
              ARRAY[index__] = RHS;
              __m_uvm_status_container.status = 1;
            end
          end while(ARRAY.next(index__));
        end
        else if(uvm_is_match(str__, {__m_uvm_status_container.scope.get(),$sformatf("[%0d]", index__)})) begin
          ARRAY[index__] = RHS;
          __m_uvm_status_container.status = 1;
        end
      end
      __m_uvm_status_container.scope.up();
    end
 end

 `define M_UVM_FIELD_SET_AA_INT_TYPE ( INDEX_TYPE, ARRAY_TYPE, ARRAY, RHS, FLAG )


if((what__ >= UVM_START_FUNCS && what__ <= UVM_END_FUNCS) && (((FLAG)&UVM_READONLY) == 0)) begin
    bit wildcard_index__;
    INDEX_TYPE index__;
    string idx__;
    index__ = uvm_get_array_index_int(str__, wildcard_index__);
    if(what__==UVM_SET``ARRAY_TYPE)
    begin
      __m_uvm_status_container.scope.down(`"ARRAY`");
      if(uvm_is_array(str__) ) begin
        if(wildcard_index__) begin
          if(ARRAY.first(index__))
          do begin
            $swrite(idx__, __m_uvm_status_container.scope.get(), "[", index__, "]");
            if(uvm_is_match(str__, idx__)) begin
              ARRAY[index__] = RHS;
              __m_uvm_status_container.status = 1;
            end
          end while(ARRAY.next(index__));
        end
        else if(uvm_is_match(str__, {__m_uvm_status_container.scope.get(),$sformatf("[%0d]", index__)})) begin
          ARRAY[index__] = RHS;
          __m_uvm_status_container.status = 1;
        end
      end
      __m_uvm_status_container.scope.up();
    end
 end

 `define M_UVM_FIELD_SET_AA_OBJECT_TYPE ( INDEX_TYPE, ARRAY, FLAG )


if((what__ >= UVM_START_FUNCS && what__ <= UVM_END_FUNCS) && (((FLAG)&UVM_READONLY) == 0)) begin
    bit wildcard_index__;
    INDEX_TYPE index__;
    index__ = uvm_get_array_index_``INDEX_TYPE(str__, wildcard_index__);
    if(what__==UVM_SETOBJ)
    begin
      __m_uvm_status_container.scope.down(`"ARRAY`");
      if(uvm_is_array(str__) ) begin
        if(wildcard_index__) begin
          if(ARRAY.first(index__))
          do begin
            if(uvm_is_match(str__, {__m_uvm_status_container.scope.get(),$sformatf("[%0d]", index__)}) ||
               uvm_is_match(str__, {__m_uvm_status_container.scope.get(),$sformatf("[%0s]", index__)})) begin
              if (__m_uvm_status_container.object != null)
                $cast(ARRAY[index__], __m_uvm_status_container.object);
              __m_uvm_status_container.status = 1;
            end
          end while(ARRAY.next(index__));
        end
        else if(uvm_is_match(str__, {__m_uvm_status_container.scope.get(),$sformatf("[%0d]", index__)})) begin
          if (__m_uvm_status_container.object != null)
            $cast(ARRAY[index__], __m_uvm_status_container.object);
          __m_uvm_status_container.status = 1;
        end
        else if(uvm_is_match(str__, {__m_uvm_status_container.scope.get(),$sformatf("[%0s]", index__)})) begin
          if (__m_uvm_status_container.object != null)
            $cast(ARRAY[index__], __m_uvm_status_container.object);
          __m_uvm_status_container.status = 1;
        end
      end
      __m_uvm_status_container.scope.up();
    end
 end

 `define M_UVM_FIELD_SET_AA_TYPE ( INDEX_TYPE, ARRAY_TYPE, ARRAY, RHS, FLAG )


if((what__ >= UVM_START_FUNCS && what__ <= UVM_END_FUNCS) && (((FLAG)&UVM_READONLY) == 0)) begin
    bit wildcard_index__;
    INDEX_TYPE index__;
    index__ = uvm_get_array_index_``INDEX_TYPE(str__, wildcard_index__);
    if(what__==UVM_SET``ARRAY_TYPE)
    begin
      __m_uvm_status_container.scope.down(`"ARRAY`");
      if(uvm_is_array(str__) ) begin
        if(wildcard_index__) begin
          if(ARRAY.first(index__))
          do begin
            if(uvm_is_match(str__, {__m_uvm_status_container.scope.get(),$sformatf("[%0d]", index__)}) ||
               uvm_is_match(str__, {__m_uvm_status_container.scope.get(),$sformatf("[%0s]", index__)})) begin
              ARRAY[index__] = RHS;
              __m_uvm_status_container.status = 1;
            end
          end while(ARRAY.next(index__));
        end
        else if(uvm_is_match(str__, {__m_uvm_status_container.scope.get(),$sformatf("[%0d]", index__)})) begin
          ARRAY[index__] = RHS;
          __m_uvm_status_container.status = 1;
        end
        else if(uvm_is_match(str__, {__m_uvm_status_container.scope.get(),$sformatf("[%0s]", index__)})) begin
          ARRAY[index__] = RHS;
          __m_uvm_status_container.status = 1;
        end
      end
      __m_uvm_status_container.scope.up();
    end
 end

 `define m_uvm_get_type_name_func ( T )


const static string type_name = `"T`";
   virtual function string get_type_name ();
     return type_name;
   endfunction

 `define m_uvm_object_create_func ( T )


function uvm_object create (string name="");
     T tmp;
`ifdef UVM_OBJECT_MUST_HAVE_CONSTRUCTOR
     if (name=="") tmp = new();
     else tmp = new(name);
`else
     tmp = new();
     if (name!="")
       tmp.set_name(name);
`endif
     return tmp;
   endfunction

 `define m_uvm_object_registry_internal ( T, S )


typedef uvm_object_registry#(T,`"S`") type_id;
   static function type_id get_type();
     return type_id::get();
   endfunction
   virtual function uvm_object_wrapper get_object_type();
     return type_id::get();
   endfunction

 `define m_uvm_object_registry_param ( T )


typedef uvm_object_registry #(T) type_id;
   static function type_id get_type();
     return type_id::get();
   endfunction
   virtual function uvm_object_wrapper get_object_type();
     return type_id::get();
   endfunction

 `define M_UVM_QUEUE_RESIZE ( ARG, VAL )


while(ARG.size()ARG.push_back(VAL);
  while(ARG.size()>sz) void'(ARG.pop_front());
 

 `define m_uvm_record_int ( ARG, FLAG )


if(!((FLAG)&UVM_NORECORD)) begin
    __m_uvm_status_container.recorder.record_field(`"ARG`", ARG, $bits(ARG), uvm_radix_enum'((FLAG)&(UVM_RADIX)));
  end

 `define m_uvm_record_object ( ARG, FLAG )


if(!((FLAG)&UVM_NORECORD)) begin
    __m_uvm_status_container.recorder.record_object(`"ARG`", ARG);
  end

 `define m_uvm_record_qda_enum ( ARG, FLAG, SZ )


begin
    if(!((FLAG)&UVM_NORECORD) && (__m_uvm_status_container.recorder.tr_handle != 0)) begin
      int sz__ = SZ;
      if(sz__ == 0) begin
        __m_uvm_status_container.recorder.record_field(`"ARG``.size`", 0, 32, UVM_DEC);
      end
      else if(sz__ < 10) begin
        foreach(ARG[i]) begin
           __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
           __m_uvm_status_container.recorder.record_string(__m_uvm_status_container.scope.get(), ARG[i].name());
        end
      end
      else begin
        for(int i=0; i<5; ++i) begin
           __m_uvm_status_container.scope.set_arg_element(`"ARG`", i);
           __m_uvm_status_container.recorder.record_string(__m_uvm_status_container.scope.get(), ARG[i].name());
        end
        for(int i=sz__-5; i            __m_uvm_status_container.scope.set_arg_element(`"ARG`", i);
           __m_uvm_status_container.recorder.record_string(__m_uvm_status_container.scope.get(), ARG[i].name());
        end
      end
    end
  end

 `define m_uvm_record_qda_int ( ARG, FLAG, SZ )


begin
    if(!((FLAG)&UVM_NORECORD)) begin
      int sz__ = SZ;
      if(sz__ == 0) begin
        __m_uvm_status_container.recorder.record_field(`"ARG`", 0, 32, UVM_DEC);
      end
      else if(sz__ < 10) begin
        foreach(ARG[i]) begin
           __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
           __m_uvm_status_container.recorder.record_field(__m_uvm_status_container.scope.get(), ARG[i], $bits(ARG[i]), uvm_radix_enum'((FLAG)&UVM_RADIX));
        end
      end
      else begin
        for(int i=0; i<5; ++i) begin
           __m_uvm_status_container.scope.set_arg_element(`"ARG`", i);
           __m_uvm_status_container.recorder.record_field(__m_uvm_status_container.scope.get(), ARG[i], $bits(ARG[i]), uvm_radix_enum'((FLAG)&UVM_RADIX));
        end
        for(int i=sz__-5; i            __m_uvm_status_container.scope.set_arg_element(`"ARG`", i);
           __m_uvm_status_container.recorder.record_field(__m_uvm_status_container.scope.get(), ARG[i], $bits(ARG[i]), uvm_radix_enum'((FLAG)&UVM_RADIX));
        end
      end
    end
  end

 `define m_uvm_record_qda_object ( ARG, FLAG, SZ )


begin
    if(!((FLAG)&UVM_NORECORD)) begin
      int sz__ = SZ;
      string s;
      if(sz__ == 0 ) begin
        __m_uvm_status_container.recorder.record_field(`"ARG``.size`", 0, 32, UVM_DEC);
      end
      if(sz__ < 10) begin
        foreach(ARG[i]) begin
           $swrite(s,`"ARG[%0d]`", i);
           __m_uvm_status_container.recorder.record_object(s, ARG[i]);
        end
      end
      else begin
        for(int i=0; i<5; ++i) begin
           $swrite(s,`"ARG[%0d]`", i);
           __m_uvm_status_container.recorder.record_object(s, ARG[i]);
        end
        for(int i=sz__-5; i            $swrite(s,`"ARG[%0d]`", i);
           __m_uvm_status_container.recorder.record_object(s, ARG[i]);
        end
      end
    end
  end

 `define m_uvm_record_qda_real ( ARG, FLAG, SZ )


begin
    if(!((FLAG)&UVM_NORECORD)) begin
      int sz__ = SZ;
      if(sz__ == 0) begin
        __m_uvm_status_container.recorder.record_field(`"ARG``.size`", 0, 32, UVM_DEC);
      end
      else if(sz__ < 10) begin
        foreach(ARG[i]) begin
           __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
           __m_uvm_status_container.recorder.record_field_real(__m_uvm_status_container.scope.get(), ARG[i]);
        end
      end
      else begin
        for(int i=0; i<5; ++i) begin
           __m_uvm_status_container.scope.set_arg_element(`"ARG`", i);
           __m_uvm_status_container.recorder.record_field_real(__m_uvm_status_container.scope.get(), ARG[i]);
        end
        for(int i=sz__-5; i            __m_uvm_status_container.scope.set_arg_element(`"ARG`", i);
           __m_uvm_status_container.recorder.record_field_real(__m_uvm_status_container.scope.get(), ARG[i]);
        end
      end
    end
  end

 `define m_uvm_record_qda_string ( ARG, FLAG, SZ )


begin
    int sz__ = SZ;
    if(!((FLAG)&UVM_NORECORD)) begin
      if(sz__ == 0) begin
        __m_uvm_status_container.recorder.record_field(`"ARG``.size`", 0, 32, UVM_DEC);
      end
      else if(sz__ < 10) begin
        foreach(ARG[i]) begin
           __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
           __m_uvm_status_container.recorder.record_string(__m_uvm_status_container.scope.get(), ARG[i]);
        end
      end
      else begin
        for(int i=0; i<5; ++i) begin
           __m_uvm_status_container.scope.set_arg_element(`"ARG`", i);
           __m_uvm_status_container.recorder.record_string(__m_uvm_status_container.scope.get(), ARG[i]);
        end
        for(int i=sz__-5; i            __m_uvm_status_container.scope.set_arg_element(`"ARG`", i);
           __m_uvm_status_container.recorder.record_string(__m_uvm_status_container.scope.get(), ARG[i]);
        end
      end
    end
  end

 `define m_uvm_record_string ( ARG, STR, FLAG )


if(!((FLAG)&UVM_NORECORD)) begin
    __m_uvm_status_container.recorder.record_string(`"ARG`", STR);
  end

 `define m_uvm_register_sequence ( TYPE_NAME, SEQUENCER )


static bit is_registered_with_sequencer = SEQUENCER``::add_typewide_sequence(`"TYPE_NAME`");

 `define M_UVM_SARRAY_RESIZE ( ARG, VAL )


/* fixed arrays can not be resized; do nothing */

 `define m_uvm_task_phase ( PHASE, COMP, PREFIX )


class PREFIX``PHASE``_phase extends uvm_task_phase;
          virtual task exec_task(uvm_component comp, uvm_phase phase);
            COMP comp_;
            if ($cast(comp_,comp))
              comp_.``PHASE``_phase(phase);
          endtask
          local static PREFIX``PHASE``_phase m_inst;
          static const string type_name = `"PREFIX``PHASE``_phase`";
          static function PREFIX``PHASE``_phase get();
            if(m_inst == null) begin
              m_inst = new;
            end
            return m_inst;
          endfunction
          protected function new(string name=`"PHASE`");
            super.new(name);
          endfunction
          virtual function string get_type_name();
            return type_name;
          endfunction
        endclass
 

 `define m_uvm_topdown_phase ( PHASE, COMP, PREFIX )


class PREFIX``PHASE``_phase extends uvm_topdown_phase;
          virtual function void exec_func(uvm_component comp, uvm_phase phase);
            COMP comp_;
            if ($cast(comp_,comp))
              comp_.``PHASE``_phase(phase);
          endfunction
          local static PREFIX``PHASE``_phase m_inst;
          static const string type_name = `"PREFIX``PHASE``_phase`";
          static function PREFIX``PHASE``_phase get();
            if(m_inst == null) begin
              m_inst = new();
            end
            return m_inst;
          endfunction
          protected function new(string name=`"PHASE`");
            super.new(name);
          endfunction
          virtual function string get_type_name();
            return type_name;
          endfunction
        endclass
 

 `define START_ITEM_SEQ

item

Determine which prototype the UVM start_item task has * UVM 1.0ea was the first to use the new prototype

 `define SVT_ABSTRACT

(1<<14)

 `define svt_add_to_seq_lib ( TYPE, LIBTYPE )


uvm_add_to_seq_lib(TYPE,LIBTYPE)

 `define SVT_ALL_ON

'b000010101010101

 `define SVT_BATHTUB_DIST ( minimum, maximum, lowerwt, middlewt, upperwt, sidewallpercent )


[ SVT_BATHTUB_LOWER_WT_DIST(minimum,maximum,sidewallpercent) ] :/ lowerwt,
  [ SVT_BATHTUB_MIDDLE_WT_DIST(minimum,maximum,sidewallpercent) ] :/ middlewt,
  [ SVT_BATHTUB_UPPER_WT_DIST(minimum,maximum,sidewallpercent) ] :/ upperwt

Creates a 'bathtub' shaped distribution with 'x'% of the (max-min) range as the width of the walls of the bathtub and (100 - 2'x')% of the width of the bottom of the tub; where 'x' equals the value of sidewallpercent (expressed as an integer).

Note: no checks are performed to make sure the bathtub sidewalls do not overlap.

 `define SVT_BATHTUB_LOWER_WT_DIST ( minimum, maximum, sidewallpercent )


minimum : (minimum + (maximum - minimum)/sidewallpercent)

Defines the 'lower' portion of a bathtub constraint.

 `define SVT_BATHTUB_MIDDLE_WT_DIST ( minimum, maximum, sidewallpercent )


(minimum + ((maximum - minimum)/sidewallpercent)) : (maximum - ((maximum - minimum)/sidewallpercent))

Defines the 'middle' portion of a bathtub constraint.

 `define SVT_BATHTUB_UPPER_WT_DIST ( minimum, maximum, sidewallpercent )


(maximum - ((maximum - minimum)/sidewallpercent)) : maximum

Defines the 'upper' portion of a bathtub constraint.

 `define SVT_BIAS_DIST ( minimum, maximum, lowerwt, upperwt, biasdivisor )


[ SVT_BIAS_LOWER_WT_DIST(minimum,maximum,biasdivisor) ] :/ lowerwt,
  [ SVT_BIAS_UPPER_WT_DIST(minimum,maximum,biasdivisor) ] :/ upperwt

Creates a 'biased' distribution with 1/biasdivisor of the overall range making up the lower portion of the range and the remainder making up the upper portion of the range.

 `define SVT_BIAS_LOWER_WT_DIST ( minimum, maximum, biasdivisor )


minimum : (minimum + (maximum - minimum)/biasdivisor)

Defines the 'lower' portion of a bias constraint.

 `define SVT_BIAS_UPPER_WT_DIST ( minimum, maximum, biasdivisor )


(minimum + (maximum - minimum)/biasdivisor) : maximum

Defines the 'upper' portion of a bias constraint.

 `define SVT_BIN

UVM_BIN

 `define svt_callback_utils ( T )

 

 `define SVT_CHANNEL_BASE_TYPE

svt_channel

If not using VMM technology then create equivalent channel functionality, but assuming sequence_items

 `define SVT_CMD_ASSISTANT_TYPE

svt_uvm_cmd_assistant

 `define SVT_CMD_CALLBACKS_RESET_TIMEOUT

 500

 `define SVT_CMD_CLEAR_SEVERITY

1007

 `define SVT_CMD_DEBUG_SEVERITY

1005

 `define SVT_CMD_DEBUG_VERBOSITY

1011

 `define SVT_CMD_ERROR_SEVERITY

1001

 `define SVT_CMD_FATAL_SEVERITY

1000

Values (constants) used as arguments for commands utilizing a severity argument

 `define SVT_CMD_FIRM

2

 `define SVT_CMD_FIRM_RST

0

 `define SVT_CMD_HARD

0

 `define SVT_CMD_HARD_RST

2

 `define SVT_CMD_NONE_VERBOSITY

1008

Values (constants) used as arguments for commands utilizing a verbosity argument

 `define SVT_CMD_NORMAL_SEVERITY

1003

 `define SVT_CMD_NORMAL_VERBOSITY

1009

 `define SVT_CMD_NULL_HANDLE

-1

Null handle which can be used to indicate that a data search should take place at the top level object, and not a contained object

 `define SVT_CMD_PROTOCOL_RST

3

 `define SVT_CMD_RESET_HANDLE

-2

Reset handle which can be used to indicate that a reset has taken place and that the testbench should update in accordance with this event.

 `define SVT_CMD_SOFT

1

 `define SVT_CMD_SOFT_RST

1

 `define SVT_CMD_TRACE_SEVERITY

1004

 `define SVT_CMD_TRACE_VERBOSITY

1010

 `define SVT_CMD_VERBOSE_SEVERITY

1006

 `define SVT_CMD_VERBOSE_VERBOSITY

1012

 `define SVT_CMD_WARNING_SEVERITY

1002

 `define SVT_CMD_XACT_STATUS_ABORTED

7

 `define SVT_CMD_XACT_STATUS_ACCEPT

4

 `define SVT_CMD_XACT_STATUS_ACTIVE

2

 `define SVT_CMD_XACT_STATUS_CANCELLED

6

 `define SVT_CMD_XACT_STATUS_DISABLED

5

 `define SVT_CMD_XACT_STATUS_INITIAL

0

 `define SVT_CMD_XACT_STATUS_PARTIAL_ACCEPT

3

 `define SVT_CMD_XACT_STATUS_RETRY

1

 `define SVT_COMPLETE

9

 `define SVT_CONSENSUS_BASE_TYPE

svt_consensus

 `define SVT_CONTROL_TYPE_STR

"SV"

 `define svt_create_event ( evname, evtype )


/* Just drop the evtype */
  evname = new(SVT_DATA_UTIL_ARG_TO_STRING(evname));

Macro used to create a notification event instance for the current methodology

 `define svt_create_named_event ( evowner, evname, evtype )


evowner.evname = evowner.event_pool.get(SVT_DATA_UTIL_ARG_TO_STRING(evname));

Macro used to create a named notification event instance for the current methodology

 `define svt_create_pool_event ( evpool, evname, evtype )


/* Just drop the evtype */
  evname = evpool.get(SVT_DATA_UTIL_ARG_TO_STRING(evname));

Macro used to create a notification event instance in the indicated pool for the current methodology

 `define SVT_DATA_BASE_OBJECT_TYPE

uvm_object

 `define SVT_DATA_BASE_TYPE

uvm_sequence_item

 `define SVT_DATA_BYTE_PACK

pack

 `define SVT_DATA_BYTE_UNPACK

unpack

 `define SVT_DATA_COPY

clone

 `define SVT_DATA_DISPLAY ( prefix )

print()

 `define SVT_DATA_DISPLAY_KEYWORD

print

 `define SVT_DATA_GET_OBJECT_HIERNAME

get_full_name

 `define SVT_DATA_GET_OBJECT_TYPENAME

get_type_name

 `define SVT_DATA_ITER_TYPE

svt_sequence_item_base_iter

 `define SVT_DATA_LOG_KEYWORD

reporter

 `define svt_data_member_begin ( class_type )


/** @cond SVDOC */
  uvm_object_utils_begin(class_type)

 `define svt_data_member_end ( class_type )


uvm_object_utils_end
/** @endcond */

 `define SVT_DATA_METHODOLOGY_KEYWORD

uvm

 `define SVT_DATA_METHODOLOGY_KEYWORD_UC

UVM

 `define svt_data_param_member_begin ( class_type )


/** @cond SVDOC */
  uvm_object_param_utils_begin(class_type)

 `define svt_data_param_member_w_type_name_begin ( class_type, class_type_no_params )


/** @cond SVDOC */
  m_uvm_object_registry_internal(class_type_no_params,class_type_no_params)
  m_uvm_object_create_func(class_type)
  m_uvm_get_type_name_func(class_type)
  uvm_field_utils_begin(class_type)

Macro combining the uvm_object_utils_begin and uvm_object_param_utils_begin macro features. Mostly modeled after uvm_object_utils_begin but also designed to provide a 'non-parameterized' type name when registering the object with the factory. This type name, and the type it is associated with, corresponds to the 'default' parameterized object.

 `define SVT_DATA_PSDISPLAY ( prefix )

sprint()

 `define SVT_DATA_PSDISPLAY_KEYWORD

sprint

 `define SVT_DATA_QUEUE_ITER_NOTIFY

event_pool

 `define SVT_DATA_QUEUE_ITER_NOTIFY_TYPE

svt_event_pool

 `define SVT_DATA_QUEUE_ITER_TYPE

svt_sequence_item_base_queue_iter

 `define SVT_DATA_QUEUE_TYPE

svt_sequence_item_base_queue

 `define SVT_DATA_SAFE_GETENV

 `define SVT_DATA_TYPE

svt_sequence_item_base

 `define SVT_DATA_UTIL_ARG_TO_STRING ( str )

`"str`"

 `define SVT_DATA_UTIL_BITS_PER_BYTE

8

 `define SVT_DATA_UTIL_BITS_PER_INT

 `define SVT_DATA_UTIL_BYTES_PER_ENUM

1

 `define SVT_DATA_UTIL_BYTES_PER_INT

4

 `define SVT_DATA_UTIL_BYTES_PER_LONGINT

8

 `define SVT_DATA_UTIL_BYTES_PER_REAL

8

 `define SVT_DATA_UTIL_BYTES_PER_REALTIME

8

 `define SVT_DATA_UTIL_BYTES_PER_TIME

8

 `define SVT_DATA_UTIL_UNSPECIFIED

""

 `define svt_debug ( id, msg )


`ifdef uvm_info_context
   do
     uvm_info_context(id, msg, UVM_HIGH, reporter)
   while (0)
 `else
   do
     if (reporter.uvm_report_enabled(UVM_HIGH,UVM_INFO,id))
       reporter.uvm_report_info(id, msg, UVM_HIGH, uvm_file, uvm_line);
   while (0)
 `endif

 `define svt_debug_context ( id, msg, clientfile, clientline )


`ifdef uvm_info_context
  do
    if ((clientfile != "") || (clientline != 0)) begin
`ifdef UVM_REPORT_DISABLE_FILE
      clientfile = "";
`endif
`ifdef UVM_REPORT_DISABLE_LINE
      clientline = 0;
`endif
      if (reporter.uvm_report_enabled(UVM_HIGH,UVM_INFO,id))
        reporter.uvm_report_info(id, msg, UVM_HIGH, clientfile, clientline);
    end else
      uvm_info_context(id, msg, UVM_HIGH, reporter)
  while (0)
`else
  /* This can lose the clientfile/clientline information in non-context situations, */
  /* but since we believe the exposure is minimal we have chosen to live with this. */
  svt_debug(id, msg)
`endif

 `define SVT_DEBUG_EFFECT

2

 `define SVT_DEBUG_FAIL_EFFECT

 `define SVT_DEBUG_OPTS_CARRIER_CB_UTIL ( T, CB, compinst )


int current_method_triggered_counter[string];
 
  function bit has_user_cb();
`ifdef SVT_VMM_TECHNOLOGY
    for (int i = 0; (!has_user_cb && (i < compinst.callbacks.size())); i++) begin
      svt_xactor_callback svt_cb;
      if ($cast(svt_cb, compinst.callbacks[i]))
        has_user_cb = compinst.is_user_cb(svt_cb.get_name());
      else
        /* Its not a SNPS callback, so must be a user callback. */
        has_user_cb = 1;
    end
`elsif SVT_UVM_TECHNOLOGY
    uvm_callback_iter#(T, CB) cb_iter = new(compinst);
    CB cb = cb_iter.first();
    has_user_cb = 0;
    while (!has_user_cb && (cb != null)) begin
      has_user_cb = compinst.is_user_cb(cb.get_type_name());
      cb = cb_iter.next();
    end
`elsif SVT_OVM_TECHNOLOGY
    ovm_callbacks#(T, CB) cbs = ovm_callbacks #(T,CB)::get_global_cbs();
    ovm_queue#(CB) cbq = cbs.get(compinst);
    has_user_cb = 0;
    for (int i = 0; !has_user_cb && (cbq != null) && (i < cbq.size()); i++) begin
      CB cb = cbq.get(i);
      has_user_cb = compinst.is_user_cb(cb.get_type_name());
    end
`endif
  endfunction
 
  function string get_debug_opts_full_name();
    get_debug_opts_full_name = compinst.SVT_DATA_GET_OBJECT_HIERNAME();
  endfunction
 
  function bit is_debug_enabled();
    is_debug_enabled = compinst.get_is_debug_enabled();
  endfunction

This macro needs to be called by all classes that do callback logging in order to support logging. It should be called within the class declaration, so that the method is available to all cb_exec methods which are implemented within the class.

T -- The component type that the callbacks are registered with. CB -- The callback type that is registered with the component. compinst -- The component instance which the callbacks will be directed through, and which contains a valid 'is_user_cb' (i.e., typically inherited from the SVT component classes) implementation.

 `define SVT_DEBUG_OPTS_FILENAME

"svt_debug.out"

 `define SVT_DEBUG_OPTS_FSDB_FILE_NAME

"svt_model_log.fsdb"

 `define SVT_DEBUG_OPTS_IMP_PORT ( PTYPE, T, IMP )


svt_debug_opts_``PTYPE``_imp_port#(T, IMP, SVT_XVM(PTYPE``_imp)#(T, IMP))

Macro used to create simple imp ports. Used when there is just one imp port of the given type on a component and suffixes are not necessary.

 `define SVT_DEBUG_OPTS_IMP_PORT_INTERCEPT_DECL ( PTYPE, IMP, ETYPE )


/** Object used to intercept and log sequence items going through the report when enabled. */
  local svt_debug_opts_intercept_``PTYPE#(T,IMP,ETYPE) m_intercept;

Macro used to define the common fields in the imp port intercept objects.

 `define SVT_DEBUG_OPTS_IMP_PORT_SFX ( PTYPE, SFX, T, IMP )


svt_debug_opts_``PTYPE``_imp_port#(T, IMP, SVT_XVM(PTYPE``_imp``SFX)#(T, IMP))

Macro used to create imp ports for exports with suffixes. Used when there are multiple imp ports of the same type on a component and the suffix is used to differentiate them.

 `define SVT_DEBUG_OPTS_TRANSCRIPT_FILENAME

"svt_debug.transcript"

 `define SVT_DEBUG_VERBOSITY

UVM_HIGH

 `define SVT_DEC

UVM_DEC

 `define svt_decl_event ( evname )


uvm_event evname;

Macro used to declare a notification event instance for the current methodology

 `define SVT_DEEP

UVM_DEEP

 `define SVT_DEEP_RECURSION

0

Values (constants) representing levels of recursion.

 `define SVT_DEFAULT

'b000000101010101

 `define SVT_DEFAULT_EFFECT

7

 `define SVT_DEFAULT_FAIL_EFFECT

 `define SVT_DEFAULT_FUZZY_COMPARE_PRECISION

 0.000001

 `define SVT_DEFINE_LOG_IN_PORT ( port_number, name, width, in_signal_type, in_skew, ifName, clkName )


begin
  integer sig_depth = 0;
  $fwrite(mcd_log_file, "# P %0d I %0d name %0d %0d %0d %s %s\n",
          port_number, width, in_signal_type, in_skew, sig_depth, ifName, clkName);
end

 `define SVT_DEFINE_LOG_INOUT_PORT ( port_number, name, width, in_signal_type, in_skew, out_signal_type, out_skew, ifName, clkName )


begin
  integer sig_depth = 0;
  integer xTime = 0;
  $fwrite(mcd_log_file, "# P %0d X %0d name %0d %0d %0d %0d %0d %0d %s %s\n",
          port_number, width, in_signal_type, out_signal_type, in_skew, out_skew, xTime, sig_depth, ifName, clkName);
end

 `define SVT_DEFINE_LOG_OUT_PORT ( port_number, name, width, out_signal_type, out_skew, ifName, clkName )


begin
  integer sig_depth = 0;
  $fwrite(mcd_log_file, "# P %0d O %0d name %0d %0d %0d %s %s\n",
          port_number, width, out_signal_type, out_skew, sig_depth, ifName, clkName);
end

 `define SVT_DEFINE_NDRIVE

0

 `define SVT_DEFINE_NSAMPLE

0

Logging support: Used to log input port changes

 `define SVT_DEFINE_PDRIVE

1

 `define SVT_DEFINE_PSAMPLE

1

 `define svt_do_callbacks ( T, CB, METHOD )


svt_xvm_do_callbacks(T,CB,METHOD)

 `define svt_do_obj_callbacks ( T, CB, OBJ, METHOD )


svt_xvm_do_obj_callbacks(T,CB,OBJ,METHOD)

 `define SVT_ENUM

UVM_ENUM

 `define SVT_ERR_CHECK_EXECUTE ( errchk, chkstats, testpass, failmsg,faileffect = 5 )


if (testpass) errchk.pass(chkstats);
  else errchk.fail(chkstats,failmsg,faileffect);

Macro that can be used to execute a check, but allows for the deferral of the formatting of 'failmsg'

 `define SVT_ERR_CHECK_EXECUTE_STATS ( errchk, chkstats, testpass,failmsg = )


SVT_ERR_CHECK_EXECUTE(errchk,chkstats,testpass,failmsg,svt_err_check_stats::DEFAULT)

 `define SVT_ERR_CHECK_STATS_COV_EXTENDED_CLASS_DECL ( statsname )


This macro is provided for backwards compatibility. Clients should now use the SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_DECL macro to avoid class name conflicts.

 `define SVT_ERR_CHECK_STATS_COV_EXTENDED_CLASS_OVERRIDE ( statsname )


This macro is provided for backwards compatibility. Clients should now use the SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_OVERRIDE macro to avoid class name conflicts.

 `define SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_DECL ( suiteprefix, statsname )


/** Class declaration of error check stats coverage instance for the protocol check statsname */
    class suiteprefix``_err_check_stats_cov_``statsname extends svt_err_check_stats_cov;
`ifdef SVT_VMM_TECHNOLOGY
`ifndef SVT_PRE_VMM_12
    `vmm_typename(suiteprefix``_err_check_stats_cov_``statsname)
`endif
`endif
  
`ifndef SVT_ERR_CHECK_STATS_COV_EXCLUDE_STATUS_CG
    covergroup status;
      option.per_instance = 1;
      option.goal = 100;
      pass : coverpoint status_bit iff (enable_pass_cov) {
        bins pass = {1};
`ifdef SVT_MULTI_SIM_IGNORE_BINS
`ifndef SVT_ERR_CHECK_STATS_COV_DISABLE_IGNORE_BINS
        ignore_bins pass_i = {(enable_pass_cov == 1'b0) ? 1'b1 : 1'b0};
`endif
`else
        ignore_bins pass_i = {1} iff (!enable_pass_cov);
`endif
      }
      fail : coverpoint !status_bit iff (enable_fail_cov) {
        bins fail = {1};
`ifdef SVT_MULTI_SIM_IGNORE_BINS
`ifndef SVT_ERR_CHECK_STATS_COV_DISABLE_IGNORE_BINS
        ignore_bins fail_i = {(enable_fail_cov == 1'b0) ? 1'b1 : 1'b0};
`endif
`else
        ignore_bins fail_i = {1} iff (!enable_fail_cov);
`endif
      }
    endgroup
`endif
  
    extern function new(string name = "");
`ifndef SVT_VMM_TECHNOLOGY
    svt_xvm_object_utils(suiteprefix``_err_check_stats_cov_``statsname)
`endif
  
`ifdef SVT_VMM_TECHNOLOGY
`ifndef SVT_PRE_VMM_12
    extern virtual function suiteprefix``_err_check_stats_cov_``statsname allocate();
  
    extern virtual function suiteprefix``_err_check_stats_cov_``statsname copy();
`endif
`endif
  
    extern virtual function void sample_status(bit status_bit, string message = "");
  
    extern virtual function void set_unique_id(string unique_id);
  
    extern static function void override(string inst_path);
  
    extern static function void direct_override(svt_err_check_stats stats);
`ifdef SVT_VMM_TECHNOLOGY
`ifndef SVT_PRE_VMM_12
    `vmm_class_factory(suiteprefix``_err_check_stats_cov_``statsname)
`endif
`endif
  endclass
  
  function suiteprefix``_err_check_stats_cov_``statsname::new(string name = "");
    super.new(name, 0);
    /* If client has disabled pass/fail coverage, then don't create the covergroup */
    if ((svt_err_check_stats_cov::initial_enable_pass_cov != 0) || (svt_err_check_stats_cov::initial_enable_fail_cov != 0)) begin
`ifndef SVT_ERR_CHECK_STATS_COV_EXCLUDE_STATUS_CG
      status = new();
`ifdef SVT_ERR_CHECK_STATS_COV_DISABLE_IGNORE_BINS
      /* NOTE: Some older versions of Incisive (i.e., prior to 12.10.005) require the goal to */
      /* be a constant if it is set in the covergroup definition. So set it here instead. */
      status.option.goal = 50*(enable_pass_cov+enable_fail_cov);
`endif
`endif
`ifndef SVT_MULTI_SIM_COVERAGE_IFF_SHAPING
      shape_cov();
`endif
    end
  
  endfunction
  
`ifdef SVT_VMM_TECHNOLOGY
`ifndef SVT_PRE_VMM_12
  function suiteprefix``_err_check_stats_cov_``statsname suiteprefix``_err_check_stats_cov_``statsname::allocate();
    allocate = new(this.get_object_name());
  endfunction
  
  function suiteprefix``_err_check_stats_cov_``statsname suiteprefix``_err_check_stats_cov_``statsname::copy();
    copy = new(this.get_object_name());
    copy.set_enable_pass_cov(this.enable_pass_cov);
    copy.set_enable_fail_cov(this.enable_fail_cov);
  endfunction
  
`endif
`endif
  
  function void suiteprefix``_err_check_stats_cov_``statsname::sample_status(bit status_bit, string message = "");
    this.status_bit = status_bit;
`ifndef SVT_ERR_CHECK_STATS_COV_EXCLUDE_STATUS_CG
    status.sample();
`endif
  endfunction
  
  function void suiteprefix``_err_check_stats_cov_``statsname::set_unique_id(string unique_id);
`ifndef SVT_ERR_CHECK_STATS_COV_EXCLUDE_STATUS_CG
    /* Make sure the unique_id doesn't have any spaces in it -- otherwise get warnings */
    `SVT_DATA_UTIL_REPLACE_PATTERN(unique_id," ", "_");
    status.set_inst_name({unique_id,"_status"});
`endif
  endfunction
  
  function void suiteprefix``_err_check_stats_cov_``statsname::override(string inst_path);
`ifdef SVT_VMM_TECHNOLOGY
`ifndef SVT_PRE_VMM_12
    /* Set initial pass/fail cov values to 0, since VMM is going to create a dummy instance and we don't want a dummy covergroup */
    svt_err_check_stats_cov::initial_enable_pass_cov = 0;
    svt_err_check_stats_cov::initial_enable_fail_cov = 0;
    svt_err_check_stats_cov::override_with_new(inst_path, suiteprefix``_err_check_stats_cov_``statsname::this_type(),shared_log);
    svt_err_check_stats_cov::override_with_copy(inst_path, suiteprefix``_err_check_stats_cov_``statsname::this_type(),shared_log);
    /* Restore the initial pass/fail cov values to their favored defaults */
    svt_err_check_stats_cov::initial_enable_pass_cov = 0;
    svt_err_check_stats_cov::initial_enable_fail_cov = 1;
`endif
`else
    svt_err_check_stats_cov::type_id::set_inst_override(suiteprefix``_err_check_stats_cov_``statsname::get_type(),inst_path);
`endif
  endfunction
  
  function void suiteprefix``_err_check_stats_cov_``statsname::direct_override(svt_err_check_stats stats);
`ifdef SVT_VMM_TECHNOLOGY
`ifndef SVT_PRE_VMM_12
    suiteprefix``_err_check_stats_cov_``statsname factory = null;
    /* Set initial pass/fail cov values to 0, since VMM is going to create a dummy instance and we don't want a dummy covergroup */
    svt_err_check_stats_cov::initial_enable_pass_cov = 0;
    svt_err_check_stats_cov::initial_enable_fail_cov = 0;
    factory = new();
    stats.register_cov_override(factory);
    /* Restore the initial pass/fail cov values to their favored defaults */
    svt_err_check_stats_cov::initial_enable_pass_cov = 0;
    svt_err_check_stats_cov::initial_enable_fail_cov = 1;
`endif
`else
    stats.register_cov_override(suiteprefix``_err_check_stats_cov_``statsname::get_type());
`endif
  endfunction

This macro declares a class by the name _err_check_stats_cov_. 'suiteprefix' should be the suite prefix (e.g., 'svt_pcie') or a more specific component prefix (e.g., 'svt_pcie_tl'). 'statsname' should to the check_id_str value assigned to the stats instance by the developer.

The resulting class is extended from the svt_err_check_stats_cov.sv class.

This class includes its own base class covergroup definition, as well as "allocate", "copy", "sample_status", and "set_unique_id" methods, which pertain to the "status" covergroup.

It relies on an additional "override" strategy which involves a call to svt_err_check_stats :: register_cov_override. This call establishes an object wrapper for the svt_err_check_stats_cov class extension so that it can be used to create the new class type coverage is added to the svt_err_check_stats instance.

Usage of the "override" method:

1. User creates the svt_err_check_stats class instance. 2. Calls the "register_check" method for the check. 3. Call the svt_err_check_stats :: register_cov_override method with an object wrapper for the svt_err_check_stats_cov class instance which provides the overide.

Note that the override should normally be done by using the SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_OVERRIDE macro.

 `define SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_OVERRIDE ( suiteprefix, statsname )


suiteprefix``_err_check_stats_cov_``statsname::direct_override(statsname);

Macro that can be used to setup the class override for a specific svt_err_check_stats class instance, identified by statsname, to use the corredponding coverage class defined using the SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_DECL macro. Note that this macro relies on the statsname being used for both the 'check_id_str' provided to the original svt_err_check_stats constructor, as well as the name given to the svt_err_check_stats instance in the local scope.

 `define SVT_ERR_CHECK_STATS_ENABLE_EXTENDED_BASE_NAME

 `define svt_error ( id, msg )


`ifdef uvm_error_context
     do
     uvm_error_context(id, msg, reporter)
   while (0)
 `else
   do
     if (reporter.uvm_report_enabled(UVM_NONE,UVM_ERROR,id))
       reporter.uvm_report_error(id, msg, UVM_NONE, uvm_file, uvm_line);
   while (0)
 `endif

 `define svt_error_context ( id, msg, clientfile, clientline )


`ifdef uvm_error_context
  do
    if ((clientfile != "") || (clientline != 0)) begin
`ifdef UVM_REPORT_DISABLE_FILE
      clientfile = "";
`endif
`ifdef UVM_REPORT_DISABLE_LINE
      clientline = 0;
`endif
      if (reporter.uvm_report_enabled(UVM_NONE,UVM_ERROR,id))
        reporter.uvm_report_error(id, msg, UVM_NONE, clientfile, clientline);
    end else
      uvm_error_context(id, msg, reporter)
  while (0)
`else
  /* This can lose the clientfile/clientline information in non-context situations, */
  /* but since we believe the exposure is minimal we have chosen to live with this. */
  svt_error(id, msg)
`endif

 `define SVT_ERROR_EFFECT

5

 `define SVT_ERROR_FAIL_EFFECT

 `define SVT_ERROR_VERBOSITY

UVM_NONE

 `define svt_event_is_on ( evowner, evname )


evowner.evname.is_on()

Macro used to check the is_on state for a notification event in the current methodology.

 `define svt_event_status ( evowner, evname )


evowner.evname.get_trigger_data()

Macro used to use the notification event accessor function for the current methodology to retrieve the status for the notification event

 `define SVT_EXCEPTION_LIST_COMBINE_NOT_OK ( excep_list1, except_list2 )


((excep_list1 != null) &&
   (excep_list1.num_exceptions != 0) &&
   (!excep_list1.enable_combine) &&
   (except_list2 != null) &&
   (!except_list2.enable_combine))

Does the appropriate logical compares to determine if 2 exception lists are NOT allowed to be merged/combined. Expected 'general' usage is shown below.

  • excep_list1 is .exception_list
  • excep_list2 is the randomized_*_exception_list factory

if (excep2_list == null)
`svt_verbose("randomize_*_exception_list", "is null, no exceptions will be generated.");
else if `SVT_EXCEPTION_LIST_COMBINE_NOT_OK(excep_list1,except_list2) begin
`svt_verbose("randomize_*_exception_list", "cannot be combined with .exception_list.");
end else begin
// Logic to do the randomization of the exceptions to be added
// and then combine the two lists.
//
// If one list has (enable_combine == 1) then the final exception_list
// is to have (enable_combine == 1) also.
end

 `define SVT_EXPECTED_EFFECT

6

 `define SVT_EXPECTED_FAIL_EFFECT

 `define svt_fatal ( id, msg )


`ifdef uvm_fatal_context
   do
     uvm_fatal_context(id, msg, reporter)
   while (0)
 `else
   do
     if (reporter.uvm_report_enabled(UVM_NONE,UVM_FATAL,id))
       reporter.uvm_report_fatal(id, msg, UVM_NONE, uvm_file, uvm_line);
   while (0)
 `endif

 `define svt_fatal_context ( id, msg, clientfile, clientline )


`ifdef uvm_fatal_context
  do
    if ((clientfile != "") || (clientline != 0)) begin
`ifdef UVM_REPORT_DISABLE_FILE
      clientfile = "";
`endif
`ifdef UVM_REPORT_DISABLE_LINE
      clientline = 0;
`endif
      if (reporter.uvm_report_enabled(UVM_NONE,UVM_FATAL,id))
        reporter.uvm_report_fatal(id, msg, UVM_NONE, clientfile, clientline);
    end else
      uvm_fatal_context(id, msg, reporter)
  while (0)
`else
  /* This can lose the clientfile/clientline information in non-context situations, */
  /* but since we believe the exposure is minimal we have chosen to live with this. */
  svt_fatal(id, msg)
`endif

 `define SVT_FATAL_VERBOSITY

UVM_NONE

 `define svt_field_aa_int_byte ( ARG, FLAG )

 `define svt_field_aa_int_byte_unsigned ( ARG, FLAG )

 `define svt_field_aa_int_int ( ARG, FLAG )

 `define svt_field_aa_int_int_unsigned ( ARG, FLAG )

 `define svt_field_aa_int_integer ( ARG, FLAG )

 `define svt_field_aa_int_integer_unsigned ( ARG, FLAG )

 `define svt_field_aa_int_key ( KEY, ARG, FLAG )


uvm_field_aa_int_key(KEY, ARG, FLAG)

 `define svt_field_aa_int_longint ( ARG, FLAG )

 `define svt_field_aa_int_longint_unsigned ( ARG, FLAG )


`uvm_field_aa_string_int(ARG, FLAG)

 `define svt_field_aa_int_shortint ( ARG, FLAG )

 `define svt_field_aa_int_shortint_unsigned ( ARG, FLAG )

 `define svt_field_aa_int_string ( ARG, FLAG )

 `define svt_field_aa_object_int ( ARG, FLAG, HOW )

 `define svt_field_aa_object_string ( ARG, FLAG, HOW )

 `define svt_field_aa_string_int ( ARG, FLAG )


`uvm_field_aa_string_int(ARG, FLAG)

 `define svt_field_aa_string_string ( ARG, FLAG )

 `define svt_field_array_enum ( T, ARG, FLAG )


uvm_field_array_enum(T,ARG,FLAG)

 `define svt_field_array_int ( ARG, FLAG )

 `define svt_field_array_object ( ARG, FLAG, HOW )

 `define svt_field_array_real ( ARG, FLAG )

 `define svt_field_array_string ( ARG, FLAG )

 `define svt_field_enum ( T, ARG, FLAG )


uvm_field_enum(T,ARG,FLAG)

 `define svt_field_event ( ARG, FLAG )


uvm_field_event(ARG,FLAG)

 `define svt_field_handle ( ARG, FLAG )


uvm_field_object(ARG,FLAG|UVM_REFERENCE)

 `define svt_field_handle_aa_int ( ARG, FLAG )


uvm_field_aa_object_int(ARG, FLAG|UVM_REFERENCE)

 `define svt_field_handle_aa_string ( ARG, FLAG )


uvm_field_aa_object_string(ARG, FLAG|UVM_REFERENCE)

 `define svt_field_handle_array ( ARG, FLAG )


uvm_field_array_object(ARG,FLAG|UVM_REFERENCE)

 `define svt_field_handle_sarray ( ARG, FLAG )


uvm_field_sarray_object(ARG,FLAG|UVM_REFERENCE)

 `define svt_field_int ( ARG, FLAG )


uvm_field_int(ARG,FLAG)

 `define svt_field_object ( ARG, FLAG, HOW )


uvm_field_object(ARG,FLAG)

 `define svt_field_queue_enum ( T, ARG, FLAG )


uvm_field_queue_enum(T,ARG,FLAG)

 `define svt_field_queue_handle ( ARG, FLAG )


uvm_field_queue_object(ARG, FLAG|UVM_REFERENCE)

 `define svt_field_queue_int ( ARG, FLAG )

 `define svt_field_queue_object ( ARG, FLAG, HOW )

 `define svt_field_queue_real ( ARG, FLAG )


M_UVM_FIELD_QDA_REAL(QUEUE,ARG,FLAG,da)

 `define svt_field_queue_string ( ARG, FLAG )

 `define svt_field_real ( ARG, FLAG )

 `define svt_field_real_begin


`ifdef SVT_MULTI_SIM_REAL_COMPARE_TOO_PRECISE
  if (what__ == UVM_COMPARE) begin
    svt_sequence_item_base seq_item_base;
    if ($cast(seq_item_base, this)) begin
      seq_item_base.substitute_fuzzy_real_comparer(__m_uvm_status_container);
    end
  end
`endif

 `define svt_field_real_end


`ifdef SVT_MULTI_SIM_REAL_COMPARE_TOO_PRECISE
  if (what__ == UVM_COMPARE) begin
    svt_sequence_item_base seq_item_base;
    if ($cast(seq_item_base, this)) begin
      seq_item_base.restore_real_comparer(__m_uvm_status_container);
    end
  end
`endif

 `define svt_field_sarray_enum ( T, ARG, FLAG )


uvm_field_sarray_enum(T,ARG,FLAG)

 `define svt_field_sarray_int ( ARG, FLAG )

 `define svt_field_sarray_object ( ARG, FLAG, HOW )

 `define svt_field_sarray_real ( ARG, FLAG )

 `define svt_field_sarray_string ( ARG, FLAG )

 `define svt_field_string ( ARG, FLAG )


uvm_field_string(ARG,FLAG)

 `define SVT_FIFO_ADD_TO_ACTIVE

0

 `define SVT_FIFO_EMPTY_ON_START

0

 `define SVT_FIFO_FULL_ON_START

1

 `define SVT_FIFO_MAX_FULL_LEVEL

256

 `define SVT_FIFO_MAX_RATE

256

 `define SVT_FIFO_READ

1

 `define SVT_FIFO_REMOVE_FROM_ACTIVE

1

 `define SVT_FIFO_WRITE

0

 `define svt_fsm_create_fsm ( T, _fsm, _name )


begin
   $cast(_fsm, create_fsm(T::__type::get(), _name));
end

Create a sub-FSM of the specified type with the specified name in the specified variable. Must be used in the svt_fsm :: build method.

 `define svt_fsm_create_state ( T, _st )


begin
   $cast(_st, m_create_state(T::__type::get()));
   _st.set_fsm(this);
end

Create a state of the specified type in the specified variable. Must be used in the svt_fsm :: build method.

 `define svt_fsm_from_states ( _st )


protected virtual function void m_incoming_states(ref svt_fsm_state_base state_q[$]);
  svt_fsm_state_base new_q[$] = _st;
  super.m_incoming_states(state_q);
  state_q = {state_q, new_q};
endfunction

Short-hand macro for defining the set of states than can transition into this state. Simply appends the specified array litteral of states to the list of incoming states specified by the base class. Must be specified within the state definition class, instead of explicitly implementing the svt_fsm_state_base :: m_incoming_states method.

 `define svt_fsm_state_utils ( __T )


`svt_type_factory_item(__T, svt_fsm_state_base)
   virtual function string get_class_name(); return SVT_DATA_UTIL_ARG_TO_STRING(__T); endfunction

Automatically include the required support code for the specified FSM state type. Must be called in the FSM state class.

 `define SVT_FSM_TRANSITION_OPTIONS_EXIST

The following define is provided to let clients know that this version of the FSM implementation includes support for different transition options, as defined by svt_fsm_state_base :: state_transition_options_enum. Prior to these options being available the only supported transition choice was svt_fsm_state_base :: EXTERNAL_INTERRUPT_NEXT.

With the addition of these options VIPs can improve their performance by updating to support and utilize the svt_fsm_state_base :: INTERNAL_INTERRUPT_NEXT transition choice.

 `define svt_fsm_utils ( __T )


`svt_type_factory_item(__T, svt_fsm)

Automatically include the required support code for the specified FSM type. Must be called in the FSM class.

 `define svt_get_event_status ( evowner, evname, evstatus )


evstatus = svt_event_status(evowner,evname);

Macro used to get the notification event status

 `define svt_get_named_event_is_on ( evowner, evname, ison )


ison = svt_event_pool::get_event_is_on(evowner.event_pool, SVT_DATA_UTIL_ARG_TO_STRING(evname));

Macro used to check the is_on state for a named notification event in the current methodology.

 `define svt_get_named_event_status ( evowner, evname, evstatus )


evstatus = svt_event_pool::get_event_trigger_data(evowner.event_pool, SVT_DATA_UTIL_ARG_TO_STRING(evname));

Macro used to get the named notification event status

 `define SVT_HEX

UVM_HEX

 `define SVT_HOW_DEEP

'h024

 `define SVT_HOW_DEEPCOMPARE

'h020

 `define SVT_HOW_DEEPCOPY

'h004

 `define SVT_HOW_NOCOMPARE

'h008

 `define SVT_HOW_NOCOPY

'h001

 `define SVT_HOW_NONE

'h009

 `define SVT_HOW_REF

'h012

 `define SVT_HOW_REFCOMPARE

'h010

 `define SVT_HOW_REFCOPY

'h002

 `define SVT_HOW_TO_COMPARE

'h038

 `define SVT_HOW_TO_COPY

'h007

 `define SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING ( depth )


Executing this macro in an interface provides an interface accessible method that can be used to enable fsdb dumping of the interface.

The 'depth' argument can be used to define the depth of dumping which is to be enabled. The expectation is '1' for interfaces without any hierarchy. Hierarchical interfaces should provide a value corresponding to the overall interface depth.

 `define SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING_DECL


`ifdef SVT_FSDB_ENABLE
  bit enable_signal_log = 0;
 
  function void set_enable_signal_log();
    enable_signal_log = 1;
  endfunction
`else
  function void set_enable_signal_log();
    /** Provide a no-op that clients can call safely when FSDB not enabled. */
  endfunction
`endif

Calling this macro in an interface or module declares a variable and a method for controlling whether FSDB dumping is enabled. Modules should call this macro directly. Interfaces use will call this macro indirectly when they use call SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING.

 `define SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING_IMPL ( triggerpath, depth )



/** Full path to this interface or module instance */
  string full_name;
  initial full_name = $sformatf("%m");
 
  /** Simple method for getting the full path for an interface or module. */
  function string get_full_name();
    get_full_name = full_name;
  endfunction
 
  SVT_IF_UTIL_WAIT_ENABLE_SIGNAL_LOG(triggerpath,depth)

Calling this macro in a module or interface adds an initial block that will enable fsdb dumping of the module or interface when the enable_signal_log variable in the object indicated by 'triggerpath' is set. Modules should call this macro directly, in concert with SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING_DECL. Interfaces use this macro indirectly when they call SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING.

The client must set the enable_signal_log value in the object indicated by 'triggerpath' by calling the 'set_enable_signal_log' method on the object when it knows the module or interface dumping is desired. The 'depth' argument can be used to define the depth of dumping which is to be enabled. The expectation is that it will be '1' for all modules and for any interfaces without any hierarchy. Hierarchical interfaces should provide a value corresponding to the overall interface depth.

 `define SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING_VLOG_2001_IMPL ( triggerpath )



/** Full path to this interface or module instance */
  reg [80*8:1] full_name;
  initial full_name = $sformatf("%m");
 
  /** Simple method for getting the full path for an interface or module. */
  function reg [80*8:1] get_full_name();
    get_full_name = full_name;
  endfunction
 
  SVT_IF_UTIL_WAIT_ENABLE_SIGNAL_LOG(triggerpath,1)

NOTE: The following macro is the same as SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING_IMPL, but has been designed to be acceptable in a VLOG module where verilog2001 syntax is being enforced for all VLOG modules. Note that on Questa we actually just defer to the base SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING_IMPL macro.

Calling this macro in a module adds an initial block that will enable fsdb dumping of the module or interface when the enable_signal_log variable in the object indicated by 'triggerpath' is set. Modules should call this macro directly, in concert with SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING_DECL.

The client must set the enable_signal_log value in the object indicated by 'triggerpath' by calling the 'set_enable_signal_log' method on the object when it knows the module or interface dumping is desired.

Note that unlike SVT_IF_UTIL_SUPPORT_SIGNAL_LOGGING_IMPL, since this macro is aimed at modules, it does not support a 'depth' option.

 `define SVT_IF_UTIL_WAIT_ENABLE_SIGNAL_LOG ( triggerpath, depth )


`ifdef SVT_FSDB_ENABLE
  initial begin
`ifdef QUESTA
    /* On questa accessing the concatenated string directly results in an 'argument is invalid' message. */
    /* So we put '{"+fsdbfile+",SVT_DEBUG_OPTS_FSDB_FILE_NAME}' into a local 'fsdbfile_plus_filename' variable to avoid the error. */
    static reg [80*8:1] fsdbfile_plus_filename = {"+fsdbfile+",SVT_DEBUG_OPTS_FSDB_FILE_NAME};
`endif
    wait(triggerpath``enable_signal_log == 1);
`ifdef SVT_IF_UTIL_DISABLE_DEFAULT_FSDB
    /* Use the 'no_default' switch, available with Verdi 2016.06, to */
    /* identify that the DEBUG_OPTS FSDB file should not become the */
    /* default for all signal storage. This reserves the file for our */
    /* interface/module signal information, and ensures that the user */
    /* signal information is excluded. */
    $fsdbDumpfile(SVT_DEBUG_OPTS_FSDB_FILE_NAME, "+no_default");
`endif
`ifdef QUESTA
    $fsdbDumpvars(depth,$sformatf("%m"),"+all",fsdbfile_plus_filename);
`else
    $fsdbDumpvars(depth,$sformatf("%m"),"+all",{"+fsdbfile+",SVT_DEBUG_OPTS_FSDB_FILE_NAME});
`endif
  end
`endif

Utility macro used to setup an initial block to initiate FSDB signal logging once the client specified trigger has been fired. Acts as a no-op if FSDB support not enabled.

 `define SVT_IGNORE_EFFECT

0

Constants used to indicate the pass or fail effect for a check..

 `define SVT_IGNORE_FAIL_EFFECT


DEPRECATED: The original error check constants, stated in terms of fail, but used for both pass and fail.

 `define svt_insuppressible_note ( id, msg )


`ifdef uvm_info_context
   do
     uvm_info_context(id, msg, UVM_NONE, reporter)
   while (0)
 `else
   do
     /* The check to see if the report is enabled is skipped because we always want to generate this message. */
     reporter.uvm_report_info(id, msg, UVM_NONE, uvm_file, uvm_line);
   while (0)
 `endif

 `define svt_internal_error ( id, msg )


`ifdef SVT_INTERNAL_MESSAGING
  svt_error(id, msg)
`else
  svt_verbose(id, msg)
`endif

This macro is used to flag issues which we want to catch during internal development, but which we are willing to live with at the customer site. In these situations its an 'error' internally, but just a verbose message externally.

 `define SVT_INTERNAL_MESSAGING

 `define svt_internal_warning ( id, msg )


`ifdef SVT_INTERNAL_MESSAGING
  svt_warning(id, msg)
`else
  svt_verbose(id, msg)
`endif

This macro is used to flag issues which we want to catch during internal development, but which we are willing to live with at the customer site. In these situations its a 'warning' internally, but just a verbose message externally.

 `define SVT_LOADER_USE_ABS_PATH

 `define SVT_LOADER_USE_ABS_PATH

 `define SVT_LOADER_USE_ABS_PATH

 `define SVT_LOADER_USE_ABS_PATH

 `define SVT_LOADER_USE_ABS_PATH

 `define SVT_LOADER_USE_ABS_PATH

 `define SVT_MAP_TO_VMM_AUTOMATION_FLAGS ( value )


(DO_ALL &
  (((value) & SVT_NOPRINT) ? ~DO_PRINT : DO_ALL) &
  (((value) & SVT_NOCOPY) ? ~DO_COPY : DO_ALL) &
  (((value) & SVT_NOCOMPARE) ? ~DO_COMPARE : DO_ALL) &
  (((value) & SVT_NOPACK) ? ~(DO_PACK|DO_UNPACK) : DO_ALL))

 `define SVT_MAX_ARRAY_ELEM_DISPLAY_DEFAULT

 1024

 `define SVT_MAX_DELAY

real'('hFFFF_FFFF)

 `define SVT_MAX_DOWNSTREAM_IMP_Q_SIZE

 4

 `define SVT_MCD_FORMAT_VERSION

3

 `define SVT_MEM_ACTION_CREATE_PATTERN

9

 `define SVT_MEM_ACTION_FILE_DATA

8

 `define SVT_MEM_ACTION_LOAD_FILE

7

 `define SVT_MEM_ACTION_PEEK

3

 `define SVT_MEM_ACTION_POKE

4

 `define SVT_MEM_ACTION_READ

0

 `define SVT_MEM_ACTION_TYPE_COUNT

10

 `define SVT_MEM_ACTION_UNLOAD

5

 `define SVT_MEM_ACTION_UNLOAD_ALL

6

 `define SVT_MEM_ACTION_WRITE

1

 `define SVT_MEM_ACTION_WRITE_MASKED

2

 `define SVT_MEM_ATTRIBUTE_ACC_LOCK

'h8

 `define SVT_MEM_ATTRIBUTE_INIT

'h2

 `define SVT_MEM_ATTRIBUTE_LAST_RD

'h3

 `define SVT_MEM_ATTRIBUTE_LAST_WR

'h1

 `define SVT_MEM_ATTRIBUTE_OP_MASK

'h80

 `define SVT_MEM_ATTRIBUTE_OR

1

Indicates that the attribute operation should 'OR' values.

 `define SVT_MEM_ATTRIBUTE_UNINIT

'h0

 `define SVT_MEM_ATTRIBUTE_WR_PROT

'h4

 `define SVT_MEM_BD_SVR_DO_E ( R )

mem_core.get_is_4state()?mem_core.svr_4state.R:mem_core.svr_2state.R

 `define SVT_MEM_BD_SVR_DO_LR ( L, R )

if (mem_core.get_is_4state()) L=mem_core.svr_4state.R; else L=mem_core.svr_2state.R

 `define SVT_MEM_BD_SVR_DO_S ( R )

if (mem_core.get_is_4state()) mem_core.svr_4state.R; else mem_core.svr_2state.R

 `define SVT_MEM_COMPARE_INTERSECT

3

 `define SVT_MEM_COMPARE_OP_MASK

'h40

 `define SVT_MEM_COMPARE_STRICT

1

 `define SVT_MEM_COMPARE_SUBSET

0

Constants for the compare options supported by backdoor classes

 `define SVT_MEM_COMPARE_SUPERSET

2

 `define SVT_MEM_CORE_2STATE

1'b0

 `define SVT_MEM_CORE_4STATE

1'b1

 `define SVT_MEM_CORE_READ

1'b0

 `define SVT_MEM_CORE_WRITE

1'b1

 `define svt_mem_debug ( id, msg )


`ifdef SVT_MEM_ENABLE_INTERNAL_MESSAGING
  svt_debug(id,msg)
`else
  do begin end while(0)
`endif

svt_mem class can use this macro to insure the debug messages they produce are filtered based on the 'SVT_MEM_ENABLE_INTERNAL_MESSAGING' define.

 `define SVT_MEM_DEPTH_128GB

43

 `define SVT_MEM_DEPTH_128KB

7

 `define SVT_MEM_DEPTH_128MB

19

 `define SVT_MEM_DEPTH_12GB

36

 `define SVT_MEM_DEPTH_1536MB

25

 `define SVT_MEM_DEPTH_16GB

37

 `define SVT_MEM_DEPTH_16KB

4

 `define SVT_MEM_DEPTH_16MB

14

 `define SVT_MEM_DEPTH_192GB

44

 `define SVT_MEM_DEPTH_192MB

20

 `define SVT_MEM_DEPTH_1_5GB

27

 `define SVT_MEM_DEPTH_1GB

26

 `define SVT_MEM_DEPTH_1MB

10

 `define SVT_MEM_DEPTH_24GB

38

 `define SVT_MEM_DEPTH_24MB

15

 `define SVT_MEM_DEPTH_256GB

45

 `define SVT_MEM_DEPTH_256KB

8

 `define SVT_MEM_DEPTH_256MB

21

 `define SVT_MEM_DEPTH_2GB

28

 `define SVT_MEM_DEPTH_2KB

1

 `define SVT_MEM_DEPTH_2MB

11

 `define SVT_MEM_DEPTH_32GB

39

 `define SVT_MEM_DEPTH_32KB

5

 `define SVT_MEM_DEPTH_32MB

16

 `define SVT_MEM_DEPTH_384MB

22

 `define SVT_MEM_DEPTH_3GB

29

 `define SVT_MEM_DEPTH_48GB

40

 `define SVT_MEM_DEPTH_48MB

17

 `define SVT_MEM_DEPTH_4_5GB

31

 `define SVT_MEM_DEPTH_4GB

30

 `define SVT_MEM_DEPTH_4KB

2

 `define SVT_MEM_DEPTH_4MB

12

 `define SVT_MEM_DEPTH_512KB

9

 `define SVT_MEM_DEPTH_512MB

23

 `define SVT_MEM_DEPTH_64GB

41

 `define SVT_MEM_DEPTH_64KB

6

 `define SVT_MEM_DEPTH_64MB

18

 `define SVT_MEM_DEPTH_6GB

32

 `define SVT_MEM_DEPTH_768MB

24

 `define SVT_MEM_DEPTH_8_5GB

34

 `define SVT_MEM_DEPTH_8GB

33

 `define SVT_MEM_DEPTH_8KB

3

 `define SVT_MEM_DEPTH_8MB

13

 `define SVT_MEM_DEPTH_96GB

42

 `define SVT_MEM_DEPTH_9GB

35

 `define SVT_MEM_DUMP_ALL

'h1

Dump ALL locations in the address range. When not set only the written (i.e., via the bus, a poke, or a load) values will be included in the dump output.

 `define SVT_MEM_DUMP_APPEND

'h10

Append the contents to the existing file if found. For internal use only.

 `define SVT_MEM_DUMP_NO_BEGIN

'h4

Exclude the BEGIN from the file output. Used with append when BEGIN not required.

 `define SVT_MEM_DUMP_NO_END

'h8

Exclude the END from the file output. Used with append when END not required.

 `define SVT_MEM_DUMP_NO_HEADER

'h2

Exclude the dump file text header. Note that with MIF this will exclude WIDTH and other settings.

 `define SVT_MEM_DUMP_OP_MASK

'h8

 `define SVT_MEM_FREE_OP_MASK

'h10

 `define SVT_MEM_INIT_ADDRESS

3

 `define SVT_MEM_INIT_DECR

6

 `define SVT_MEM_INIT_INCR

5

 `define SVT_MEM_INIT_ONES

2

 `define SVT_MEM_INIT_RANDOM

8

 `define SVT_MEM_INIT_UNKNOWNS

0

 `define SVT_MEM_INIT_USER_PATTERN

7

 `define SVT_MEM_INIT_VALUE

4

 `define SVT_MEM_INIT_ZEROES

1

 `define SVT_MEM_INITIALIZE_CONST

0

Constants for the initialize options supported by backdoor classes

 `define SVT_MEM_INITIALIZE_DECR

2

 `define SVT_MEM_INITIALIZE_INCR

1

 `define SVT_MEM_INITIALIZE_ODD_EVEN_CONST

6

 `define SVT_MEM_INITIALIZE_OP_MASK

'h20

 `define SVT_MEM_INITIALIZE_RAND

5

 `define SVT_MEM_INITIALIZE_WALK_LEFT

3

 `define SVT_MEM_INITIALIZE_WALK_RIGHT

4

 `define SVT_MEM_LOAD_OP_MASK

'h4

 `define SVT_MEM_LOAD_PROTECT

'h1

Write protect the memory locations in the load file

 `define SVT_MEM_MAX_ADDR_REGION_WIDTH

16

 `define SVT_MEM_MAX_ADDR_WDTH

 `define SVT_MEM_MAX_ADDR_WIDTH

64

 `define SVT_MEM_MAX_ATTR_WIDTH

8

 `define SVT_MEM_MAX_DATA_SIZE

1024

 `define SVT_MEM_MAX_DATA_WDTH

 `define SVT_MEM_MAX_DATA_WIDTH

1024

 `define SVT_MEM_MAX_PATTERN_WIDTH

8

 `define SVT_MEM_MSG_TYPE_DEBUG

'h10

 `define SVT_MEM_MSG_TYPE_ERROR

'h02

 `define SVT_MEM_MSG_TYPE_FATAL

'h01

 `define SVT_MEM_MSG_TYPE_INFO

'h08

 `define SVT_MEM_MSG_TYPE_VERBOSE

'h20

 `define SVT_MEM_MSG_TYPE_WARN

'h04

 `define SVT_MEM_PEEK_OP_MASK

'h1

Mask values for to the currently defined system memory manager operations.

 `define SVT_MEM_POKE_OP_MASK

'h2

 `define SVT_MEM_SA_2STATE

0

 `define SVT_MEM_SA_4STATE

1

 `define SVT_MEM_SA_ACCESS_READ_MODE

'h0

 `define SVT_MEM_SA_ACCESS_STATUS

'h0003

 `define SVT_MEM_SA_ACCESS_STATUS_INIT

 `define SVT_MEM_SA_ACCESS_STATUS_LAST_RD

 `define SVT_MEM_SA_ACCESS_STATUS_LAST_WR

 `define SVT_MEM_SA_ACCESS_STATUS_MASK

'hfffffffc

 `define SVT_MEM_SA_ACCESS_STATUS_UNINIT

 `define SVT_MEM_SA_ACCESS_WRITE_MODE

'h1

 `define SVT_MEM_SA_BREAK_EVENT_TYPE_RD

'h0002

 `define SVT_MEM_SA_BREAK_EVENT_TYPE_RD_B4_WR

'h0003

 `define SVT_MEM_SA_BREAK_EVENT_TYPE_RD_RD_NO_WR

'h0004

 `define SVT_MEM_SA_BREAK_EVENT_TYPE_WR

'h0001

 `define SVT_MEM_SA_BREAK_EVENT_TYPE_WR_LOST

'h0007

 `define SVT_MEM_SA_BREAK_EVENT_TYPE_WR_PROT

'h0008

 `define SVT_MEM_SA_BREAK_EVENT_TYPE_WR_SAME

'h0006

 `define SVT_MEM_SA_BREAK_EVENT_TYPE_WR_WR

'h0005

 `define SVT_MEM_SA_BREAK_FLAG_CMP_ADR

32'h00000010

 `define SVT_MEM_SA_BREAK_FLAG_CMP_ATTRS

32'h00000040

 `define SVT_MEM_SA_BREAK_FLAG_CMP_DATA

32'h00000020

 `define SVT_MEM_SA_BREAK_FLAG_CMP_RD

32'h00000001

 `define SVT_MEM_SA_BREAK_FLAG_CMP_WR

32'h00000002

 `define SVT_MEM_SA_BREAK_FLAG_ENA_ADR_MASKING

32'h00000100

 `define SVT_MEM_SA_BREAK_FLAG_ENA_DATA_MASKING

32'h00000200

 `define SVT_MEM_SA_BREAK_FLAG_MASK_CMP_ADR_OUT

32'h00080000

 `define SVT_MEM_SA_BREAK_FLAG_MASK_CMP_DATA_RANGE

32'h00070000

 `define SVT_MEM_SA_BREAK_FLAG_MASK_DATA_CMP_MASK

32'h00070000

 `define SVT_MEM_SA_BREAK_FLAG_MASK_EQ

32'h00010000

 `define SVT_MEM_SA_BREAK_FLAG_MASK_GT

32'h00030000

 `define SVT_MEM_SA_BREAK_FLAG_MASK_GTE

32'h00050000

 `define SVT_MEM_SA_BREAK_FLAG_MASK_LT

32'h00040000

 `define SVT_MEM_SA_BREAK_FLAG_MASK_LTE

32'h00060000

 `define SVT_MEM_SA_BREAK_FLAG_MASK_NE

32'h00020000

 `define SVT_MEM_SA_BREAK_FLAG_NO_STOP

32'h00100000

 `define SVT_MEM_SA_BREAK_FLAG_ONESHOT

32'h00020000

 `define SVT_MEM_SA_BREAK_FLAG_RD_B4_WR

32'h00002000

 `define SVT_MEM_SA_BREAK_FLAG_SELF_DELETING

32'h00040000

 `define SVT_MEM_SA_BREAK_FLAG_TEXT

32'h00200000

 `define SVT_MEM_SA_BREAK_FLAG_WPE

32'h00001000

 `define SVT_MEM_SA_BREAK_FLAG_WR_LOSS

32'h00010000

 `define SVT_MEM_SA_BREAK_FLAG_WR_SAME

32'h00008000

 `define SVT_MEM_SA_BREAK_FLAG_WR_WR

32'h00004000

 `define SVT_MEM_SA_CHECK_ACCESS_ERROR

 `define SVT_MEM_SA_CHECK_ACCESS_LOCKED

 `define SVT_MEM_SA_CHECK_ADR_ERR

 `define SVT_MEM_SA_CHECK_ALL

(SVT_MEM_SA_STATUS_RD_RD_NO_WR |
                                           SVT_MEM_SA_STATUS_WR_LOSS |
                                           SVT_MEM_SA_STATUS_WR_SAME |
                                           SVT_MEM_SA_STATUS_WR_WR |
                                           SVT_MEM_SA_STATUS_RD_B4_WR |
                                           SVT_MEM_SA_STATUS_WR_PROT |
                                           SVT_MEM_SA_STATUS_ADR_ERR |
                                           SVT_MEM_SA_STATUS_DATA_ERR |
                                           SVT_MEM_SA_STATUS_ACCESS_LOCKED |
                                           SVT_MEM_SA_STATUS_ACCESS_ERROR |
                                           SVT_MEM_SA_STATUS_PARTIAL_RD |
                                           SVT_MEM_SA_STATUS_MISCOMPARE )

 `define SVT_MEM_SA_CHECK_DATA_ERR

 `define SVT_MEM_SA_CHECK_MISCOMPARE

 `define SVT_MEM_SA_CHECK_PARTIAL_RD

 `define SVT_MEM_SA_CHECK_RD_B4_WR

 `define SVT_MEM_SA_CHECK_RD_RD_NO_WR

 `define SVT_MEM_SA_CHECK_STD

(SVT_MEM_SA_STATUS_RD_B4_WR |
                                           SVT_MEM_SA_STATUS_PARTIAL_RD |
                                           SVT_MEM_SA_STATUS_ADR_ERR |
                                           SVT_MEM_SA_STATUS_DATA_ERR )

 `define SVT_MEM_SA_CHECK_WR_LOSS

 `define SVT_MEM_SA_CHECK_WR_PROT

 `define SVT_MEM_SA_CHECK_WR_SAME

 `define SVT_MEM_SA_CHECK_WR_WR

 `define SVT_MEM_SA_COMPARE_INTERSECT

'h3

 `define SVT_MEM_SA_COMPARE_MAX_FILE_COMPARE_ERRORS

200

 `define SVT_MEM_SA_COMPARE_MISCOMPARE

'h1

 `define SVT_MEM_SA_COMPARE_MODES

'h3

 `define SVT_MEM_SA_COMPARE_NOT_IN_CORE

'h2

 `define SVT_MEM_SA_COMPARE_NOT_IN_DEST

'h4

 `define SVT_MEM_SA_COMPARE_NOT_IN_FILE

'h3

 `define SVT_MEM_SA_COMPARE_NOT_IN_SRC

'h5

 `define SVT_MEM_SA_COMPARE_STRICT

'h1

 `define SVT_MEM_SA_COMPARE_SUBSET

'h0

 `define SVT_MEM_SA_COMPARE_SUPERSET

'h2

 `define SVT_MEM_SA_CORE_ADDR_BITS

64

 `define SVT_MEM_SA_CORE_PHYSICAL_DIMENSIONS_MAX

6

Maximum number of physical addressing dimensions the memserver System Verilog component will handle Set to the maximum currently required by all known memserver clients

 `define SVT_MEM_SA_DATAARRAY32

1

 `define SVT_MEM_SA_DATAARRAY8

4

 `define SVT_MEM_SA_DATAARRAYPACKED

3

 `define SVT_MEM_SA_DATAARRAYS64

2

 `define SVT_MEM_SA_DUMP_ALL

 `define SVT_MEM_SA_DUMP_APPEND

 `define SVT_MEM_SA_DUMP_NO_HEADER

 `define SVT_MEM_SA_LOAD_NO_PROTECT

'h0

 `define SVT_MEM_SA_LOAD_PROTECT

 `define SVT_MEM_SA_MODE_COHERENCE_GET ( m )

(((m)&SVT_MEM_SA_MODE_COHERENCE_MASK)>>6)

 `define SVT_MEM_SA_MODE_COHERENCE_MASK

'h000000c0

 `define SVT_MEM_SA_MODE_COHERENCE_SET ( val )

(((val)&'h3)<<6)

 `define SVT_MEM_SA_MODE_NO_ACCESS_ATTR

'h00000004

 `define SVT_MEM_SA_MODE_NO_WPE_ATTR

'h00000002

 `define SVT_MEM_SA_MODE_OPT_SPACE_GET ( m )

(((m)&SVT_MEM_SA_MODE_SPACE_MASK)>>4)

 `define SVT_MEM_SA_MODE_OPT_SPACE_SET ( val )

(((val)&'h3)<<4)

 `define SVT_MEM_SA_MODE_QUIET

'h00000008

 `define SVT_MEM_SA_MODE_READ_ONLY

'h00000001

 `define SVT_MEM_SA_MODE_SIM_SIZE_GET ( m )

(((m)&SVT_MEM_SA_MODE_SIM_SIZE_MASK)>>8)

 `define SVT_MEM_SA_MODE_SIM_SIZE_MASK

'h00000300

 `define SVT_MEM_SA_MODE_SIM_SIZE_SET ( val )

(((val)&'h3)<<8)

 `define SVT_MEM_SA_MODE_SPACE_MASK

'h00000030

 `define SVT_MEM_SA_PATTERN_NON_VIRTUAL

0

 `define SVT_MEM_SA_PATTERN_TYPE_CONST

0

 `define SVT_MEM_SA_PATTERN_TYPE_DECR

2

 `define SVT_MEM_SA_PATTERN_TYPE_INCR

1

 `define SVT_MEM_SA_PATTERN_TYPE_MASK

'h1f

 `define SVT_MEM_SA_PATTERN_TYPE_ODD_EVEN_CONST

6

 `define SVT_MEM_SA_PATTERN_TYPE_RAND_DATA

5

 `define SVT_MEM_SA_PATTERN_TYPE_USE_BASE_ADR

'h80

 `define SVT_MEM_SA_PATTERN_TYPE_WALK_LEFT

3

 `define SVT_MEM_SA_PATTERN_TYPE_WALK_RIGHT

4

 `define SVT_MEM_SA_PATTERN_VIRTUAL

1

 `define SVT_MEM_SA_PHYSICAL_ADDRESS ( ADDR )

 `define SVT_MEM_SA_STATUS_ACCESS_ERROR

32'h00000200

 `define SVT_MEM_SA_STATUS_ACCESS_LOCKED

32'h00000100

 `define SVT_MEM_SA_STATUS_ADR_ERR

32'h00000040

 `define SVT_MEM_SA_STATUS_BREAK

32'h20000000

 `define SVT_MEM_SA_STATUS_DATA_ERR

32'h00000080

 `define SVT_MEM_SA_STATUS_ENABLE_ALL

 `define SVT_MEM_SA_STATUS_ERROR

32'h40000000

 `define SVT_MEM_SA_STATUS_FORMAT_ERR

32'h00000400

 `define SVT_MEM_SA_STATUS_INTERNAL

32'h80000000

 `define SVT_MEM_SA_STATUS_IO_ERROR

32'h00002000

 `define SVT_MEM_SA_STATUS_MISCOMPARE

32'h00004000

 `define SVT_MEM_SA_STATUS_OK

32'h00000000

 `define SVT_MEM_SA_STATUS_OPEN_FAILED

32'h00001000

 `define SVT_MEM_SA_STATUS_PARTIAL_RD

32'h00000800

 `define SVT_MEM_SA_STATUS_RD_B4_WR

32'h00000010

 `define SVT_MEM_SA_STATUS_RD_RD_NO_WR

32'h00000001

 `define SVT_MEM_SA_STATUS_WR_LOSS

32'h00000002

 `define SVT_MEM_SA_STATUS_WR_PROT

32'h00000020

 `define SVT_MEM_SA_STATUS_WR_SAME

32'h00000004

 `define SVT_MEM_SA_STATUS_WR_WR

32'h00000008

 `define SVT_MEM_SA_STATUS_WR_WR_COMPARE

 `define SVT_MEM_SHORTHAND_CUST_COMPARE


`ifdef SVT_VMM_TECHNOLOGY
  if (do_what == DO_COMPARE) begin
    if (!svt_mem_compare_hook(this.__vmm_rhs, this.__vmm_image)) begin
      this.__vmm_status = 0;
    end
  end
`endif

Add some customized logic to compare the actual memory elements

 `define SVT_MEM_SHORTHAND_CUST_COPY


`ifdef SVT_VMM_TECHNOLOGY
  if (do_what == DO_COPY) begin
    svt_mem_copy_hook(this.__vmm_rhs);
  end
`endif

Add some customized logic to copy the actual memory elements

 `define SVT_MEM_SYSTEM_BACKDOOR_ENABLE_FACTORY

 `define svt_mem_vendor_catalog_begin ( __suite, __name )


`define svt___current_suite __suite
`define svt___current_vendor __name

Short-hand macro to define a suite-specific, vendor-specific catalog class and start populating part entries. May be used multiple times to create multiple catalog "pages".

Assumes the existence of a catalog class named svt__vendor_catalog and of a catalog entry class named svt__vendor_part.

 `define svt_mem_vendor_catalog_end


`undef svt___current_suite
`undef svt___current_vendor

Short-hand macro for closing a vendor part catalog "page".

 `define svt_mem_vendor_part ( __name, __descr, __depth, __width, __speed, __cfg )


svt_mem_vendor_part2(`svt___current_suite, `svt___current_vendor, __name, __descr, __depth, __width, __speed, __cfg)

Short-hand macro for defining a vendor part catalog entry. Must be used between `svt_mem_vendor_catalog_begin and

`undef svt___current_suite `undef svt___current_vendor macros

 `define svt_mem_vendor_part2 ( __suite, __vendor, __name, __descr, __depth, __width, __speed, __cfg )


svt_``__suite``_vendor_part __name``__in__``__suite``_``__vendor``_catalog
    = new(svt_``__suite``_vendor_catalog::get_vendor(`"__vendor`"), `"__name`", __descr,
          SVT_MEM_``__depth, SVT_MEM_``__width, SVT_MEM_``__speed, __cfg);

 `define svt_mem_verbose ( id, msg )


`ifdef SVT_MEM_ENABLE_INTERNAL_MESSAGING
  svt_verbose(id,msg)
`else
  do begin end while(0)
`endif

svt_mem class can use this macro to insure the verbose messages they produce are filtered based on the 'SVT_MEM_ENABLE_INTERNAL_MESSAGING' define.

 `define SVT_MESSAGE_MANAGER_ERROR_SEVERITY

SVT_XVM_UC(ERROR)

 `define SVT_MESSAGE_MANAGER_FATAL_SEVERITY

SVT_XVM_UC(FATAL)

Simple defines to make it easier to write portable FATAL/ERROR/WARNING requests.

 `define SVT_MESSAGE_MANAGER_GET_CLIENT_VERBOSITY_LEVEL ( prefmgrid, defmgrid )


svt_message_manager::facilitate_get_client_verbosity_level(prefmgrid,defmgrid)

Macro used to get the verbosity for the associated message manager.

 `define SVT_MESSAGE_MANAGER_NOTE_SEVERITY

SVT_XVM_UC(WARNING)

 `define SVT_NO_REGPACK

0

 `define SVT_NOCOMPARE

(1<<3)

 `define SVT_NOCOPY

(1<<1)

 `define SVT_NODEFPRINT

(1<<16)

 `define SVT_NOPACK

(1<<9)

 `define SVT_NOPRINT

(1<<5)

 `define SVT_NORECORD

(1<<7)

 `define SVT_NORMAL_VERBOSITY

UVM_LOW

 `define svt_note ( id, msg )


`ifdef uvm_info_context
   do
     uvm_info_context(id, msg, UVM_LOW, reporter)
   while (0)
 `else
   do
     if (reporter.uvm_report_enabled(UVM_LOW,UVM_INFO,id))
       reporter.uvm_report_info(id, msg, UVM_LOW, uvm_file, uvm_line);
   while (0)
 `endif

 `define svt_note_context ( id, msg, clientfile, clientline )


`ifdef uvm_info_context
  do
    if ((clientfile != "") || (clientline != 0)) begin
`ifdef UVM_REPORT_DISABLE_FILE
      clientfile = "";
`endif
`ifdef UVM_REPORT_DISABLE_LINE
      clientline = 0;
`endif
      if (reporter.uvm_report_enabled(UVM_LOW,UVM_INFO,id))
        reporter.uvm_report_info(id, msg, UVM_LOW, clientfile, clientline);
    end else
      uvm_info_context(id, msg, UVM_LOW, reporter)
  while (0)
`else
  /* This can lose the clientfile/clientline information in non-context situations, */
  /* but since we believe the exposure is minimal we have chosen to live with this. */
  svt_note(id, msg)
`endif

 `define SVT_NOTE_EFFECT

3

 `define SVT_NOTE_FAIL_EFFECT

 `define SVT_NOTIFY_BASE_TYPE

svt_notify

 `define SVT_NOTIFY_CONFIGURE ( methodname, stateclass, notifyname, notifykind )


if (stateclass.notifyname == 0) begin
    stateclass.notifyname = stateclass.notify.configure(, notifykind);
  end else begin
    svt_fatal(SVT_DATA_UTIL_ARG_TO_STRING(methodname), $sformatf("Attempted to configure notify '%0s' twice. Unable to continue.", SVT_DATA_UTIL_ARG_TO_STRING(notifyname)));
  end

This macro can be used to configure a basic notification, independent of the base technology.

 `define SVT_NULL_RECURSION

2

 `define SVT_NVS_SOURCE_MAP_SUITE_COMMON_H ( suite, version, common )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(suite/include/common.h)

 `define SVT_NVS_SOURCE_MAP_SUITE_COMMON_SVH ( suite, version, common )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(suite/include/common.svh)

 `define SVT_NVS_SOURCE_MAP_SUITE_COMMON_VI ( suite, version, common )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(suite/include/common.vi)

 `define SVT_NVS_SOURCE_MAP_SUITE_COMMON_VIH ( suite, version, common )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(suite/include/common.vih)

 `define SVT_NVS_SOURCE_MAP_SUITE_COMP_COMMON_VI ( suite, model, version, common )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(suite/model/bfm/include/common.vi)

 `define SVT_NVS_SOURCE_MAP_SUITE_COMP_MODULE_V ( suite, model, version, module )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(suite/model/bfm/include/module.v)

 `define SVT_NVS_SOURCE_MAP_SUITE_INTERFACE_SV ( suite, version, interface )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(suite/include/interface.sv)

 `define SVT_NVS_SOURCE_MAP_SUITE_LIB_MODULE_V ( suite, version, module )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(suite/include/module.v)

 `define SVT_NVS_SOURCE_MAP_SUITE_MODULE_INCLUDE_V ( suite, version, module )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(suite/include/verilog/module.v)

 `define SVT_NVS_SOURCE_MAP_SUITE_MODULE_INCLUDE_VIH ( suite, version, module )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(suite/include/verilog/module.vih)

 `define SVT_NVS_SOURCE_MAP_SUITE_MODULE_V ( suite, version, module )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(suite/src/verilog/module.v)

 `define SVT_OCT

UVM_OCT

 `define SVT_PACKER_MAX_BYTES

 `define SVT_PHYSICAL

(1<<13)

 `define SVT_POUND_ZERO_COUNT

1

The use of variables on the left-hand side in non-blocking assignments can be problematic for global methods unless they are included in packages or modules. For example if the 'svt_wait_for_nba_region' method is simply loaded in the top level testbench, outside a module or package, VCS will generate the following error:

Error-[DTNBA] Dynamic type in non-blocking assignment..."nba"...Dynamic type (Automatic variable in this case) cannot be used on the left-hand side of non blocking assignment.

As some SVT VIPs have committed to support the use of their VMM versions outside of a package, and since the 'svt_wait_for_nba_region' is not currently required to provide VMM support for any of the SVT VIPs, this method has been excluded in the VMM version of SVT.

Since this feature has been identified as a necessity in UVM/OVM, and since we require that the VIP be loaded via package in these domains, this feature is fully supported in UVM/OVM.

 `define SVT_PRE_UVM_12

 `define SVT_PRE_VMM_11

 `define SVT_PRE_VMM_12

 `define SVT_READONLY

(1<<16)

 `define SVT_REFERENCE

UVM_REFERENCE

 `define SVT_REGPACK_ALPHA

1

 `define SVT_RELEVANT

-1

Constants used with operations such as byte_pack, compare, etc., to select the completeness of the action. RELEVANT for protocol specific fields, COMPLETE for all fields.

 `define svt_reset_event ( evowner, evname )


/* Only request the wakeup if the event is currently on */
  evowner.evname.reset(evowner.evname.is_on());

Macro used to reset a notification event in the current methodology

 `define svt_reset_named_event ( evowner, evname )


svt_event_pool::reset_event(evowner.event_pool, SVT_DATA_UTIL_ARG_TO_STRING(evname));

Macro used to reset a named notification event in the current methodology

 `define SVT_SEQUENCE_LIBRARY_DECL ( ITEM )


/** Sequence library for ITEM transaction. */
class ITEM``_sequence_library extends svt_sequence_library#(ITEM);
`ifdef SVT_UVM_TECHNOLOGY
  uvm_object_utils(ITEM``_sequence_library)
  uvm_sequence_library_utils(ITEM``_sequence_library)
`else
  `ovm_object_utils(ITEM``_sequence_library)
`endif
  extern function new (string name = SVT_DATA_UTIL_ARG_TO_STRING(ITEM``_sequence_library));
endclass

THIS MACRO IS BEING DEPRECATED !!!

Clients should instead create sequence libraries manually, using the SVT_SEQUENCE_LIBRARY_SAFE_ADD_SEQUENCE macro to populate the library.

 `define SVT_SEQUENCE_LIBRARY_IMP ( ITEM, SUITE )


function ITEM``_sequence_library::new(string name = SVT_DATA_UTIL_ARG_TO_STRING(ITEM``_sequence_library));
  super.new(name, SVT_DATA_UTIL_ARG_TO_STRING(SUITE));
`ifdef SVT_UVM_TECHNOLOGY
  init_sequence_library();
`endif
endfunction

THIS MACRO IS BEING DEPRECATED !!!

Clients should instead create sequence libraries manually, using the SVT_SEQUENCE_LIBRARY_SAFE_ADD_SEQUENCE macro to populate the library.

 `define SVT_SEQUENCE_LIBRARY_SAFE_ADD_SEQUENCE ( seqtype, count )


begin
  seqtype seq = new();
  if (seq.is_applicable(cfg)) begin
    this.add_sequence(seqtype::get_type());
    count++;
  end
end

Macro which can be used to add a sequence to a sequence library, after checking to make sure the sequence is valid relative to the sequence library cfg. When a sequence is added successfully the count variable provided by the caller is incremented to indicate the successful addition.

 `define svt_sequence_library_utils ( TYPE )

 `define SVT_SEQUENCER_DECL ( ITEM, CFG_TYPE )


/**
 * This class is Sequencer that provides stimulus for the
 * #ITEM``_driver class. The #ITEM``_agent class is responsible
 * for connecting this SVT_XVM(sequencer) to the driver if the agent is configured as
 * SVT_XVM_UC(ACTIVE).
 */
class ITEM``_sequencer extends svt_sequencer#(ITEM);
 
  /** @cond PRIVATE */
  /** Configuration object for this sequencer. */
  local CFG_TYPE cfg;
  /** @endcond */
 
`ifdef SVT_UVM_TECHNOLOGY
  uvm_component_utils(ITEM``_sequencer)
`else
  `ovm_sequencer_utils(ITEM``_sequencer)
`endif
 
  /**
   * CONSTRUCTOR: Create a new agent instance
   *
   * @param name The name of this instance. Used to construct the hierarchy.
   *
   * @param parent The component that contains this intance. Used to construct
   * the hierarchy.
   */
  extern function new (string name = SVT_DATA_UTIL_ARG_TO_STRING(ITEM``_sequencer), SVT_XVM(component) parent = null);
 
  /** Build phase */
`ifdef SVT_UVM_TECHNOLOGY
  extern virtual function void build_phase(uvm_phase phase);
`else
  extern virtual function void build();
`endif
 
  /**
   * Updates the sequencer's configuration with data from the supplied object.
   * NOTE:
   * This operation is different than the reconfigure() methods for svt_driver and
   * svt_monitor classes. This method sets a reference to the original
   * rather than making a copy.
   */
  extern virtual function void reconfigure(svt_configuration cfg);
 
  /**
   * Returns a reference of the sequencer's configuration object.
   * NOTE:
   * This operation is different than the get_cfg() methods for svt_driver and
   * svt_monitor classes. This method returns a reference to the configuration
   * rather than a copy.
   */
  extern virtual function void get_cfg(ref svt_configuration cfg);
 
endclass

Macro used to implement a sequencer for the supplied transaction.

 `define SVT_SEQUENCER_IMP ( ITEM, SUITE_NAME, CFG_TYPE )


Macro used to implement a sequencer for the supplied transaction. This macro should be called from an encrypted portion of the extended file.

 `define SVT_SEQUENCER_IMP_BASE ( ITEM, SUITE_STRING, CFG_TYPE )


function ITEM``_sequencer::new(string name = SVT_DATA_UTIL_ARG_TO_STRING(ITEM``_sequencer), SVT_XVM(component) parent = null);
   super.new(name, parent, SUITE_STRING);
 endfunction: new
 
`ifdef SVT_UVM_TECHNOLOGY
function void ITEM``_sequencer::build_phase(uvm_phase phase);
  string method_name = "build_phase";
  super.build_phase(phase);
`elsif SVT_OVM_TECHNOLOGY
function void ITEM``_sequencer::build();
  string method_name = "build";
  super.build();
`endif
  begin
    if (cfg == null) begin
      if (svt_config_object_db#(CFG_TYPE)::get(this, "", "cfg", cfg) && (cfg != null)) begin
        /* If we got it from the config_db, then make a copy of it for use with the internally generated objects */
        if(!($cast(this.cfg, cfg.clone()))) begin
          svt_fatal(method_name, $sformatf("Failed when attempting to cast '%0s'", SVT_DATA_UTIL_ARG_TO_STRING(CFG_TYPE)));
        end
      end else begin
        svt_fatal(method_name, $sformatf("'cfg' is null. An '%0s' object or derivative object must be set using the configuration infrastructure or via reconfigure.",
                                       SVT_DATA_UTIL_ARG_TO_STRING(CFG_TYPE)));
      end
    end
  end
endfunction
 
function void ITEM``_sequencer::reconfigure(svt_configuration cfg);
  if (!$cast(this.cfg, cfg)) begin
    svt_error("reconfigure", "Failed attempting to assign 'cfg' argument to sequencer 'cfg' field.");
  end
endfunction
 
function void ITEM``_sequencer::get_cfg(ref svt_configuration cfg);
  cfg = this.cfg;
endfunction

Base macro used to implement a sequencer for the supplied transaction. This macro should be called from an encrypted portion of the extended file, and only if the client needs to provide a 'string' suite name. Clients should normally use the SVT_SEQUENCER_IMP macro instead.

 `define SVT_SHALLOW

UVM_SHALLOW

 `define SVT_SHALLOW_RECURSION

1

 `define SVT_SIMULATOR_STR

"VCS"

 `define SVT_SOURCE_MAP_AGENT_CMD_INCLUDE_SVI ( suite, model, version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/suite/model/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_AGENT_INCLUDE_SVI ( suite, model, version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/suite/model/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_ENV_CMD_INCLUDE_SVI ( suite, model, version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/suite/model/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_ENV_INCLUDE_SVI ( suite, model, version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/suite/model/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_PKG ( version, incpkg )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/incpkg.pkg)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_PKG ( version, incpkg )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/incpkg.pkg)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_PKG ( version, incpkg )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/incpkg.pkg)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_PKG ( version, incpkg )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/incpkg.pkg)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_PKG ( version, incpkg )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/incpkg.pkg)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_PKG ( version, incpkg )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/incpkg.pkg)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_SVI ( version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_SVI ( version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_SVI ( version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_SVI ( version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_SVI ( version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_LIB_INCLUDE_SVI ( version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_LIB_MODULE ( version, module )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/src/module.sv)

 `define SVT_SOURCE_MAP_LIB_SRC_SVI ( version, srcsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/svt/src/srcsvi.svi)

 `define SVT_SOURCE_MAP_MODEL_CMD_INCLUDE_SVI ( suite, model, version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/suite/model/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_MODEL_INCLUDE_SVI ( suite, model, version, inclsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/suite/model/include/inclsvi.svi)

 `define SVT_SOURCE_MAP_MODEL_MODULE ( suite, model, version, module )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/suite/model/src/module.sv)

 `define SVT_SOURCE_MAP_MODEL_SRC_SVI ( suite, model, version, srcsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/suite/model/src/srcsvi.svi)

 `define SVT_SOURCE_MAP_SUITE_MODULE ( suite, version, module )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/suite/src/module.sv)

 `define SVT_SOURCE_MAP_SUITE_ROOT ( suite, version )

 `define SVT_SOURCE_MAP_SUITE_SRC_SVI ( suite, version, srcsvi )

SVT_SOURCE_QUOTE_DESIGNWARE_HOME(vip/suite/src/srcsvi.svi)

 `define SVT_SOURCE_QUOTE_DESIGNWARE_HOME ( leafname )

`"/remote/sdgvips02/rajneesh/svt_rel_client/leafname`"

 `define SVT_STATUS_EVENT_CHECK ( funcname, evowner, evname )


if (`SVT_STATUS_EVENT_IS_EMPTY(evowner,evname)) begin
    svt_error(SVT_DATA_UTIL_ARG_TO_STRING(funcname), $sformatf("Notify '%0s' has not been configured. Unable to continue.", SVT_DATA_UTIL_ARG_TO_STRING(evname)));
    funcname = 0;
  end

This macro can be used to check whether a notification event has been configured.

 `define SVT_STATUS_EVENT_IS_ON ( evowner, evname )


svt_event_is_on(evowner,evname)

Macro used to check the is_on state for a notification event in the current methodology.

 `define SVT_STATUS_EVENT_STATUS ( evowner, evname )


svt_event_status(evowner,evname)

Macro used to use the event status accessor function for the current methodology to retrieve the status for a notification event

 `define SVT_STATUS_GET_EVENT_STATUS ( evowner, evname, evstatus )


svt_get_event_status(evowner,evname,evstatus)

Macro used to get the notification event status

 `define SVT_STATUS_NOTIFY_CHECK ( funcname, evname )


SVT_STATUS_EVENT_CHECK(funcname,this,evname)

This macro can be used to check whether a notification event has been configured. NOTE: This is kept around for backwards compatibility -- classes should be moving to SVT_STATUS_EVENT_CHECK.

 `define SVT_STATUS_NOTIFY_CONFIGURE ( methodname, stateclass, notifyname )


SVT_STATUS_NOTIFY_CONFIGURE_BASE(methodname,stateclass,notifyname,svt_notify::ON_OFF)

This macro can be used to configure a basic notify, as supported by vmm_notify, avoiding redundant configuration of the notify. This macro assumes the client desires an ON/OFF notify.

 `define SVT_STATUS_NOTIFY_CONFIGURE_BASE ( methodname, stateclass, notifyname, notifykind )


`ifdef SVT_VMM_TECHNOLOGY
  if (stateclass.notifyname == 0) begin
    stateclass.notifyname = stateclass.notify.configure(, notifykind);
`else
  if (stateclass.notifyname == null) begin
    SVT_XVM(event_pool) event_pool = stateclass.get_event_pool();
    stateclass.notifyname = event_pool.get(SVT_DATA_UTIL_ARG_TO_STRING(notifyname));
`endif
  end else begin
    svt_fatal(SVT_DATA_UTIL_ARG_TO_STRING(methodname), $sformatf("Attempted to configure notify '%0s' twice. Unable to continue.", SVT_DATA_UTIL_ARG_TO_STRING(notifyname)));
  end

This base macro can be used to configure a basic notify, as supported by the underlying technology, avoiding redundant configuration of the notify. This macro must be supplied with all pertinent info, including an indication of the notify type.

 `define SVT_STATUS_NOTIFY_CONFIGURE_NAMED_NOTIFY ( methodname, stateclass, notifyname )


SVT_STATUS_NOTIFY_CONFIGURE_NAMED_NOTIFY_BASE(methodname,stateclass,notifyname,svt_notify::ON_OFF)

This macro can be used to configure a named notify, as supported by `SVT_XVM(event_pool), avoiding redundant configuration of the notify. This macro assumes the client desires an ON/OFF notify.

 `define SVT_STATUS_NOTIFY_CONFIGURE_NAMED_NOTIFY_BASE ( methodname, stateclass, notifyname, notifykind )


`ifdef SVT_VMM_TECHNOLOGY
  if (stateclass.notifyname == 0) begin
`ifdef SVT_MULTI_SIM_LOCAL_STATIC_VARIABLE_WITH_INITIALIZER_REQUIRES_STATIC_KEYWORD
    svt_notify typed_notify ;
    typed_notify = stateclass.get_notify();
`else
    svt_notify typed_notify = stateclass.get_notify();
`endif
    stateclass.notifyname = typed_notify.configure_named_notify(SVT_DATA_UTIL_ARG_TO_STRING(notifyname), , notifykind);
`else
  if (stateclass.notifyname == null) begin
    SVT_XVM(event_pool) event_pool = stateclass.get_event_pool();
    stateclass.notifyname = event_pool.get(SVT_DATA_UTIL_ARG_TO_STRING(notifyname));
`endif
  end else begin
    svt_fatal(SVT_DATA_UTIL_ARG_TO_STRING(methodname), $sformatf("Attempted to configure notify '%0s' twice. Unable to continue.", SVT_DATA_UTIL_ARG_TO_STRING(notifyname)));
  end

This macro can be used to configure a named notify, as supported by `SVT_XVM(event_pool), avoiding redundant configuration of the notify.

 `define SVT_STATUS_RESET_EVENT ( evowner, evname )


svt_reset_event(evowner,evname)

Macro used to reset a notification event in the current methodology

 `define SVT_STATUS_TRIGGER_COPY_DATA_EVENT ( evowner, evname, evdata )


svt_trigger_copy_data_event(evowner,evname,evdata)

Macro used to signal a notification event and corresponding data for the current methodology, but with a 'copy' of the original data

 `define SVT_STATUS_TRIGGER_DATA_EVENT ( evowner, evname, evdata )


svt_trigger_data_event(evowner,evname,evdata)

Macro used to signal a notification event and corresponding data for the current methodology

 `define SVT_STATUS_TRIGGER_EVENT ( evowner, evname )


svt_trigger_event(evowner,evname)

Macro used to signal a notification event for the current methodology

 `define SVT_STATUS_WAIT_FOR_OFF ( evowner, evname )


svt_wait_event_off(evowner,evname)

Macro used to wait for an 'off' a notification event in the current methodology

 `define SVT_STATUS_WAIT_FOR_ON ( evowner, evname )


svt_wait_event_on(evowner,evname)

Macro used to wait for an 'on' notification event in the current methodology

 `define SVT_STATUS_WAIT_FOR_TRIGGER ( evowner, evname )


svt_wait_event_trigger(evowner,evname)

Macro used to wait for a notification event in the current methodology

 `define SVT_STRING

UVM_STRING

 `define SVT_SVC_MESSAGE_MANAGER_LOG_DEBUG

7

 `define SVT_SVC_MESSAGE_MANAGER_LOG_DWORD

6

 `define SVT_SVC_MESSAGE_MANAGER_LOG_ERR

0

 `define SVT_SVC_MESSAGE_MANAGER_LOG_FRAME

5

 `define SVT_SVC_MESSAGE_MANAGER_LOG_INFO

3

 `define SVT_SVC_MESSAGE_MANAGER_LOG_NOTE

2

 `define SVT_SVC_MESSAGE_MANAGER_LOG_OPT_FLUSH_BUFFER

32'h0000_4000 /* Flush Buffered Message */

 `define SVT_SVC_MESSAGE_MANAGER_LOG_OPT_MASK

32'h0000_FF00

 `define SVT_SVC_MESSAGE_MANAGER_LOG_OPT_NO_LOG_LEVEL

32'h0000_0200 /* Don't display the Log Level */

 `define SVT_SVC_MESSAGE_MANAGER_LOG_OPT_NO_NEWLINE

32'h0000_0400 /* Neither Timestamp nor Log Level are displayed */

 `define SVT_SVC_MESSAGE_MANAGER_LOG_OPT_NO_PREFIX

32'h0000_0300 /* Neither Timestamp nor Log Level are displayed */

 `define SVT_SVC_MESSAGE_MANAGER_LOG_OPT_NO_TIMESTAMP

32'h0000_0100 /* Don't display the timestamp */

 `define SVT_SVC_MESSAGE_MANAGER_LOG_OPT_START_BUFFER

32'h0000_2000 /* Start Buffered Message */

 `define SVT_SVC_MESSAGE_MANAGER_LOG_OPT_TRANSACTION

32'h0000_0800 /* This is a transaction msglog, write to trace file, ignoring log level */

 `define SVT_SVC_MESSAGE_MANAGER_LOG_TRANSACT

4

 `define SVT_SVC_MESSAGE_MANAGER_LOG_WARN

1

 `define SVT_SVC_MESSAGE_MANAGER_SHARED_MSG_MGR_NAME

"shared_svc_msg_mgr"

 `define SVT_SVC_MESSAGE_MANAGER_USE_SVT_MESSAGING_EXCLUSIVELY

 `define SVT_TIME

UVM_TIME

 `define SVT_TIMER_EVENT_IS_ON ( timername, eventname )


`ifdef SVT_VMM_TECHNOLOGY
  (timername.notify.is_on(timername.eventname))
`else
  (timername.eventname.is_on())
`endif

Macro used to check the is_on state for a notification event in the current methodology.

 `define SVT_TIMER_WAIT_FOR ( timername, evname )


`ifdef SVT_VMM_TECHNOLOGY
  timername.notify.wait_for(timername.evname);
`else
  timername.evname.wait_trigger();
`endif

Macro used to wait for a notification event in the current methodology

 `define SVT_TIMER_WAIT_FOR_OFF ( timername, evname )


`ifdef SVT_VMM_TECHNOLOGY
  timername.notify.wait_for_off(timername.evname);
`else
  timername.evname.wait_off();
`endif

Macro used to wait for an 'off' a notification event in the current methodology

 `define SVT_TIMER_WAIT_FOR_ON ( timername, evname )


`ifdef SVT_VMM_TECHNOLOGY
  timername.notify.wait_for(timername.evname);
`else
  timername.evname.wait_on();
`endif

Macro used to wait for an 'on' notification event in the current methodology

 `define SVT_TIMEUNIT_100_FS

3

 `define SVT_TIMEUNIT_100_MS

15

 `define SVT_TIMEUNIT_100_NS

9

 `define SVT_TIMEUNIT_100_PS

6

 `define SVT_TIMEUNIT_100_S

18

 `define SVT_TIMEUNIT_100_US

12

 `define SVT_TIMEUNIT_10_FS

2

 `define SVT_TIMEUNIT_10_MS

14

 `define SVT_TIMEUNIT_10_NS

8

 `define SVT_TIMEUNIT_10_PS

5

 `define SVT_TIMEUNIT_10_S

17

 `define SVT_TIMEUNIT_10_US

11

 `define SVT_TIMEUNIT_1_FS

1

 `define SVT_TIMEUNIT_1_MS

13

 `define SVT_TIMEUNIT_1_NS

7

 `define SVT_TIMEUNIT_1_PS

4

 `define SVT_TIMEUNIT_1_S

16

 `define SVT_TIMEUNIT_1_US

10

 `define SVT_TIMEUNIT_UNKNOWN

0

Macros defined to represent different timeunit values.

 `define svt_trace ( id, msg )


`ifdef uvm_info_context
   do
     uvm_info_context(id, msg, UVM_MEDIUM, reporter)
   while (0)
 `else
   do
     if (reporter.uvm_report_enabled(UVM_MEDIUM,UVM_INFO,id))
       reporter.uvm_report_info(id, msg, UVM_MEDIUM, uvm_file, uvm_line);
   while (0)
 `endif

 `define svt_trace_context ( id, msg, clientfile, clientline )


`ifdef uvm_info_context
  do
    if ((clientfile != "") || (clientline != 0)) begin
`ifdef UVM_REPORT_DISABLE_FILE
      clientfile = "";
`endif
`ifdef UVM_REPORT_DISABLE_LINE
      clientline = 0;
`endif
      if (reporter.uvm_report_enabled(UVM_MEDIUM,UVM_INFO,id))
        reporter.uvm_report_info(id, msg, UVM_MEDIUM, clientfile, clientline);
    end else
      uvm_info_context(id, msg, UVM_MEDIUM, reporter)
  while (0)
`else
  /* This can lose the clientfile/clientline information in non-context situations, */
  /* but since we believe the exposure is minimal we have chosen to live with this. */
  svt_trace(id, msg)
`endif

 `define SVT_TRACE_VERBOSITY

UVM_MEDIUM

 `define SVT_TRAFFIC_MAX_FRAME_SIZE

4096

 `define SVT_TRAFFIC_MAX_FRAME_TIME

4096

 `define SVT_TRAFFIC_MAX_TOTAL_NUM_BYTES

4096

 `define SVT_TRAFFIC_MAX_XACT_SIZE

64

 `define SVT_TRAFFIC_PROFILE_CYCLE

2

 `define SVT_TRAFFIC_PROFILE_END_OF_FRAME_SIZE

2

 `define SVT_TRAFFIC_PROFILE_END_OF_FRAME_TIME

1

 `define SVT_TRAFFIC_PROFILE_END_OF_PROFILE

0

 `define SVT_TRAFFIC_PROFILE_FIXED

0

 `define SVT_TRAFFIC_PROFILE_INPUT_EVENT

0

 `define SVT_TRAFFIC_PROFILE_MAX_ARBITER_THREADS

512

 `define SVT_TRAFFIC_PROFILE_OUTPUT_EVENT

1

 `define SVT_TRAFFIC_PROFILE_RANDOM

1

 `define SVT_TRAFFIC_PROFILE_RANDOM_ADDR

2

 `define SVT_TRAFFIC_PROFILE_SEQUENTIAL

0

 `define SVT_TRAFFIC_PROFILE_TWODIM

1

 `define SVT_TRAFFIC_PROFILE_UNIQUE

3

 `define SVT_TRANSACTION_BASE_TYPE

svt_sequence_item_base

 `define SVT_TRANSACTION_END_TIME

end_time

 `define SVT_TRANSACTION_ENDED_NOTIFY

uvm_transaction::end_event

 `define SVT_TRANSACTION_EXCEPTION_LIST_INITIATOR ( classname )


/** Exception list initiator for classname transaction */
class classname``_exception_list_initiator extends classname;
  rand classname``_exception_list rand_exception_list;
 
`ifndef SVT_VMM_TECHNOLOGY
  /** Constructor */
  function new(string name="");
    super.new(name);
  endfunction
 
  svt_data_member_begin(classname``_exception_list_initiator)
  svt_data_member_end(classname``_exception_list_initiator)
`endif
 
  /** pre_randomize method which can be insures rand_exception_list is non-null. */
  function void pre_randomize();
    super.pre_randomize();
    if (this.rand_exception_list == null) this.rand_exception_list = new();
    this.rand_exception_list.setup_randomized_exception(this.cfg, this);
`ifdef SVT_MULTI_SIM_SKIPPED_PRE_RANDOMIZE
    this.rand_exception_list.populate_exceptions();
`endif
  endfunction
 
  /** pre_randomize method which removes the exception list if it is empty. */
  function void post_randomize();
    super.post_randomize();
    if ((this.rand_exception_list != null) && (this.rand_exception_list.num_exceptions > 0)) begin
      this.exception_list = this.rand_exception_list;
    end else begin
      /* Clearing this.rand_exception_list can result in warning in some simulators, so leave it. */
      /* this.rand_exception_list = null; */
      this.exception_list = null;
    end
  endfunction
 
endclass

Container which automates exception generation for a transaction.

 `define SVT_TRANSACTION_ITER_FIRST_IX


( (start_ix == -1) ? 0 : start_ix )

Macro used to figure out the first available index

 `define SVT_TRANSACTION_ITER_LAST_IX


( (end_ix == -1) ? SVT_TRANSACTION_ITER_TOP_LEVEL_QUEUE_SIZE-1 : end_ix )

Macro used to figure out the last available index

 `define SVT_TRANSACTION_ITER_TOP_LEVEL_QUEUE_SIZE


(
  (iter_type == IMPLEMENTATION) ? this.iter_xact.implementation.size() :
  ((iter_type == TRACE) && (this.iter_xact.trace.size() == 0)) ? this.iter_xact.implementation.size() :
  ((iter_type == TRACE) && ((name_match == null) || scan_name_match_trace)) ? this.iter_xact.trace.size() :
  ((iter_type == TRACE) && (name_match.get_class_name() != iter_xact.get_class_name())) ? this.iter_xact.trace.size() :
  (iter_type == TRACE) ? this.iter_xact.implementation.size() :
  0
)

Macro used to access the queue size for the proper collection

 `define SVT_TRANSACTION_ITER_TOP_LEVEL_XACT


(
  (iter_type == IMPLEMENTATION) ? this.iter_xact.implementation[top_level_ix] :
  ((iter_type == TRACE) && (this.iter_xact.trace.size() == 0)) ? this.iter_xact.implementation[top_level_ix] :
  ((iter_type == TRACE) && ((name_match == null) || scan_name_match_trace)) ? this.iter_xact.trace[top_level_ix] :
  ((iter_type == TRACE) && (name_match.get_class_name() != iter_xact.get_class_name())) ? this.iter_xact.trace[top_level_ix] :
  (iter_type == TRACE) ? this.iter_xact.implementation[top_level_ix] :
  null
)

Macro used to pull the data object from the proper collection

 `define SVT_TRANSACTION_ITER_TYPE

svt_sequence_item_iter

 `define SVT_TRANSACTION_OBJECT_TYPE

uvm_object

 `define SVT_TRANSACTION_REPORT_TYPE

svt_sequence_item_report

 `define SVT_TRANSACTION_SHORTHAND_CUST_COPY


`ifdef SVT_VMM_TECHNOLOGY
  if (do_what == DO_COPY) begin
    svt_transaction_copy_hook(this.__vmm_rhs);
  end
`endif

Add some customized logic to copy implementation and trace queues

 `define SVT_TRANSACTION_START_TIME

begin_time

 `define SVT_TRANSACTION_STARTED_NOTIFY

uvm_transaction::begin_event

 `define SVT_TRANSACTION_TYPE

svt_sequence_item

 `define SVT_TRANSACTION_UVM_DISABLE_AUTO_ITEM_RECORDING

UVM_DISABLE_AUTO_ITEM_RECORDING

 `define svt_trigger_copy_data_event ( evowner, evname, evdata )


evowner.evname.trigger(evdata.clone());

Macro used to signal a notification event and corresponding data for the current methodology, but with a 'copy' of the original data

 `define svt_trigger_data_event ( evowner, evname, evdata )


evowner.evname.trigger(evdata);

Macro used to signal a notification event and corresponding data for the current methodology

 `define svt_trigger_event ( evowner, evname )


evowner.evname.trigger();

Macro used to signal a notification event for the current methodology

 `define svt_trigger_named_copy_data_event ( evowner, evname, evdata )


svt_event_pool::trigger_event(evowner.event_pool, SVT_DATA_UTIL_ARG_TO_STRING(evname), evdata.clone());

Macro used to signal a named notification event and corresponding data for the current methodology, but with a 'copy' of the original data

 `define svt_trigger_named_data_event ( evowner, evname, evdata )


svt_event_pool::trigger_event(evowner.event_pool, SVT_DATA_UTIL_ARG_TO_STRING(evname), evdata);

Macro used to signal a named notification event and corresponding data for the current methodology

 `define svt_trigger_named_event ( evowner, evname )


svt_event_pool::trigger_event(evowner.event_pool, SVT_DATA_UTIL_ARG_TO_STRING(evname));

Macro used to signal a named notification event for the current methodology

 `define SVT_UNASSIGNED

10

 `define SVT_UNSET_INST_NAME

"unset_inst"

Default string used as the initial value in all instances to recognize instances whose names have and have not been set.

 `define SVT_UNSIGNED

UVM_UNSIGNED

 `define SVT_UVM_CMD_NULL_HANDLE

-1

Null handle which can be used to indicate that a data search should take place at the top level object, and not a contained object

 `define SVT_UVM_CMD_RESET_HANDLE

-2

Reset handle which can be used to indicate that a reset has taken place and that the testbench should update in accordance with this event.

 `define SVT_UVM_FGP_LOCK


`ifdef SVT_UVM_ENABLE_FGP
`ifdef SVT_UVM_TECHNOLOGY
`ifndef SVT_MULTI_SIM_UNIDENTIFIED_PRAGMA
(* snps_uvm_fgp_lock *)
`endif
`endif
`endif

Declares FGP lock for a task/method

 `define SVT_UVM_NOCOMPARE

 `define SVT_UVM_NOCOPY

 `define SVT_UVM_NODEFPRINT

 `define SVT_UVM_NOPACK

 `define SVT_UVM_NOPRINT

 `define SVT_UVM_NORECORD

 `define svt_verbose ( id, msg )


`ifdef uvm_info_context
   do
     uvm_info_context(id, msg, UVM_FULL, reporter)
   while (0)
 `else
   do
     if (reporter.uvm_report_enabled(UVM_FULL,UVM_INFO,id))
       reporter.uvm_report_info(id, msg, UVM_FULL, uvm_file, uvm_line);
   while (0)
 `endif

 `define svt_verbose_context ( id, msg, clientfile, clientline )


`ifdef uvm_info_context
  do
    if ((clientfile != "") || (clientline != 0)) begin
`ifdef UVM_REPORT_DISABLE_FILE
      clientfile = "";
`endif
`ifdef UVM_REPORT_DISABLE_LINE
      clientline = 0;
`endif
      if (reporter.uvm_report_enabled(UVM_FULL,UVM_INFO,id))
        reporter.uvm_report_info(id, msg, UVM_FULL, clientfile, clientline);
    end else
      uvm_info_context(id, msg, UVM_FULL, reporter)
  while (0)
`else
  /* This can lose the clientfile/clientline information in non-context situations, */
  /* but since we believe the exposure is minimal we have chosen to live with this. */
  svt_verbose(id, msg)
`endif

 `define SVT_VERBOSE_EFFECT

1

 `define SVT_VERBOSE_FAIL_EFFECT

 `define SVT_VERBOSE_VERBOSITY

UVM_FULL

 `define SVT_VERSION

 `define SVT_VMM_NOCOMPARE

0

 `define SVT_VMM_NOCOPY

0

 `define SVT_VMM_NODEFPRINT

0

 `define SVT_VMM_NOPACK

0

 `define SVT_VMM_NOPRINT

0

 `define SVT_VMM_NORECORD

0

 `define SVT_VOTER_BASE_TYPE

svt_voter

 `define svt_wait_event_off ( evowner, evname )


evowner.evname.wait_off();

Macro used to wait for an 'off' notification event in the current methodology

 `define svt_wait_event_on ( evowner, evname )


evowner.evname.wait_on();

Macro used to wait for an 'on' notification event in the current methodology

 `define svt_wait_event_ptrigger ( evowner, evname )


evowner.evname.wait_ptrigger();

Macro used to wait for a 'persistent' notification event in the current methodology

 `define svt_wait_event_trigger ( evowner, evname )


evowner.evname.wait_trigger();

Macro used to wait for a notification event in the current methodology

 `define svt_wait_named_event_off ( evowner, evname )


svt_event_pool::wait_event_off(evowner.event_pool, SVT_DATA_UTIL_ARG_TO_STRING(evname));

Macro used to wait for an 'off' named notification event in the current methodology

 `define svt_wait_named_event_on ( evowner, evname )


svt_event_pool::wait_event_on(evowner.event_pool, SVT_DATA_UTIL_ARG_TO_STRING(evname));

Macro used to wait for an 'on' named notification event in the current methodology

 `define svt_wait_named_event_trigger ( evowner, evname )


svt_event_pool::wait_event_trigger(evowner.event_pool, SVT_DATA_UTIL_ARG_TO_STRING(evname));

Macro used to wait for a named notification event in the current methodology

 `define svt_warning ( id, msg )


`ifdef uvm_warning_context
   do
     uvm_warning_context(id, msg, reporter)
   while(0)
 `else
   do
     if (reporter.uvm_report_enabled(UVM_NONE,UVM_WARNING,id))
       reporter.uvm_report_warning(id, msg, UVM_NONE, uvm_file, uvm_line);
   while (0)
 `endif

 `define svt_warning_context ( id, msg, clientfile, clientline )


`ifdef uvm_warning_context
  do
    if ((clientfile != "") || (clientline != 0)) begin
`ifdef UVM_REPORT_DISABLE_FILE
      clientfile = "";
`endif
`ifdef UVM_REPORT_DISABLE_LINE
      clientline = 0;
`endif
      if (reporter.uvm_report_enabled(UVM_NONE,UVM_WARNING,id))
        reporter.uvm_report_warning(id, msg, UVM_NONE, clientfile, clientline);
    end else
      uvm_warning_context(id, msg, reporter)
  while (0)
`else
  /* This can lose the clientfile/clientline information in non-context situations, */
  /* but since we believe the exposure is minimal we have chosen to live with this. */
  svt_warning(id, msg)
`endif

 `define SVT_WARNING_EFFECT

4

 `define SVT_WARNING_FAIL_EFFECT

 `define SVT_WARNING_VERBOSITY

UVM_NONE

 `define SVT_WRITER_FORMAT_FSDB

0

Writer type constants used for controlling the writer format

 `define SVT_WRITER_FORMAT_FSDB_PERF_ANALYSIS

3

 `define SVT_WRITER_FORMAT_XML

1

 `define SVT_WRITER_FORMAT_XML_N_FSDB

2

 `define SVT_XVM ( obj )

uvm_``obj

 `define SVT_XVM_ALL_ON

UVM_ALL_ON

 `define svt_xvm_component_param_utils ( T )

 `define svt_xvm_component_param_utils_begin ( T )

 `define svt_xvm_component_utils ( T )

 `define svt_xvm_component_utils_begin ( T )

 `define svt_xvm_component_utils_end

 `define svt_xvm_create ( SEQ_OR_ITEM )


svt_xvm_create_on(SEQ_OR_ITEM, m_sequencer)

 `define svt_xvm_create_on ( SEQ_OR_ITEM, SEQR )


$cast(SEQ_OR_ITEM, create_item(SEQ_OR_ITEM.get_type(), SEQR, `"SEQ_OR_ITEM`"));

 `define svt_xvm_debug ( id, msg )


uvm_info(id, msg, UVM_HIGH)

 `define svt_xvm_declare_p_sequencer ( SEQUENCER )

 `define svt_xvm_do ( SEQ_OR_ITEM )


svt_xvm_do_on_pri(SEQ_OR_ITEM, m_sequencer, -1)

 `define svt_xvm_do_callbacks ( T, CB, METHOD )


uvm_do_callbacks(T,CB,METHOD)

 `define svt_xvm_do_obj_callbacks ( T, CB, OBJ, METHOD )


uvm_do_obj_callbacks(T,CB,OBJ,METHOD)

 `define svt_xvm_do_on ( SEQ_OR_ITEM, SEQR )


svt_xvm_do_on_pri(SEQ_OR_ITEM, SEQR, -1)

 `define svt_xvm_do_on_pri ( SEQ_OR_ITEM, SEQR, PRIORITY )


begin
        svt_xvm_create_on(SEQ_OR_ITEM, SEQR)
        SEQ_OR_ITEM.priority_start(this, PRIORITY);
        if (!SEQ_OR_ITEM.get_do_not_randomize() && !SEQ_OR_ITEM.randomize())
          svt_xvm_warning("RNDFLD", "Randomization failed in uvm_do_on action")
        SEQ_OR_ITEM.priority_finish(this, PRIORITY);
      end

 `define svt_xvm_do_on_pri_with ( SEQ_OR_ITEM, SEQR, PRIORITY, CONSTRAINTS )


begin
        svt_xvm_create_on(SEQ_OR_ITEM, SEQR)
        SEQ_OR_ITEM.priority_start(this, PRIORITY);
        if (!SEQ_OR_ITEM.get_do_not_randomize() && !SEQ_OR_ITEM.randomize() with CONSTRAINTS )
          svt_xvm_warning("RNDFLD", "Randomization failed in uvm_do_with action")
        SEQ_OR_ITEM.priority_finish(this, PRIORITY);
      end

 `define svt_xvm_do_on_with ( SEQ_OR_ITEM, SEQR, CONSTRAINTS )


svt_xvm_do_on_pri_with(SEQ_OR_ITEM, SEQR, -1, CONSTRAINTS)

 `define svt_xvm_do_pri ( SEQ_OR_ITEM, PRIORITY )


svt_xvm_do_on_pri(SEQ_OR_ITEM, m_sequencer, PRIORITY)

 `define svt_xvm_do_pri_with ( SEQ_OR_ITEM, PRIORITY, CONSTRAINTS )


svt_xvm_do_on_pri_with(SEQ_OR_ITEM, m_sequencer, PRIORITY, CONSTRAINTS)

 `define svt_xvm_do_with ( SEQ_OR_ITEM, CONSTRAINTS )


svt_xvm_do_on_pri_with(SEQ_OR_ITEM, m_sequencer, -1, CONSTRAINTS)

 `define svt_xvm_error ( id, msg )


uvm_error(id, msg)

 `define svt_xvm_fatal ( id, msg )


uvm_fatal(id, msg)

 `define svt_xvm_field_array_object ( ARG, FLAG )

 `define svt_xvm_field_int ( ARG, FLAG )

uvm_field_int(ARG,FLAG)

 `define svt_xvm_field_object ( ARG, FLAG )

uvm_field_object(ARG,FLAG)

 `define svt_xvm_field_queue_int ( ARG, FLAG )

 `define svt_xvm_ix_analysis_imp_decl ( SFX )


class uvm_analysis_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  int imp_ix = 0;
  UVM_IMP_COMMON(UVM_TLM_ANALYSIS_MASK,`"uvm_analysis_imp``SFX`",IMP)
  function void write( input T t);
    m_imp.write``SFX(imp_ix, t);
  endfunction
  
endclass

Macro used to declare an analysis imp that supports an 'index' argument to the 'write'. The implementation object must provide the 'write_' method, which must include the additional 'ix' parameter. The client constructing the '_imp' instance must set the 'imp_ix' value post construction and prior to any 'write' attempt. Modeled after 'uvm_analysis_imp_decl'.

 `define svt_xvm_ix_blocking_put_imp_decl ( SFX )


class uvm_blocking_put_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  int imp_ix = 0;
  UVM_IMP_COMMON(UVM_TLM_BLOCKING_PUT_MASK,`"uvm_blocking_put_imp``SFX`",IMP)
  task put(input T t);
    m_imp.put``SFX(imp_ix, t);
  endtask
  
endclass

Macro used to declare a blocking put imp that supports an 'index' argument to the 'write'. The implementation object must provide the 'put_' method, which must include the additional 'ix' parameter. The client constructing the '_imp' instance must set the 'imp_ix' value post construction and prior to any 'put' attempt. Modeled after 'uvm_blocking_put_imp_decl'.

 `define svt_xvm_note ( id, msg )


uvm_info(id, msg, UVM_LOW)

 `define svt_xvm_object_param_utils ( T )

 `define svt_xvm_object_param_utils_begin ( T )

 `define svt_xvm_object_utils ( T )


m_uvm_object_registry_internal(T,T)
   m_uvm_object_create_func(T)
 `ifndef SVT_UVM_1800_2_2017_OR_HIGHER
   m_uvm_get_type_name_func(T)
 `else
   `uvm_type_name_decl(`"T`")
 `endif

 `define svt_xvm_object_utils_begin ( T )

 `define svt_xvm_object_utils_end

 `define svt_xvm_rand_send ( SEQ_OR_ITEM )


svt_xvm_rand_send_pri(SEQ_OR_ITEM, -1)

 `define svt_xvm_rand_send_pri ( SEQ_OR_ITEM, PRIORITY )


begin
        SEQ_OR_ITEM.priority_start(this, PRIORITY);
        if (!SEQ_OR_ITEM.get_do_not_randomize() && !SEQ_OR_ITEM.randomize())
          svt_xvm_warning("RNDFLD", "Randomization failed in uvm_rand_send action")
        SEQ_OR_ITEM.priority_finish(this, PRIORITY);
      end

 `define svt_xvm_rand_send_pri_with ( SEQ_OR_ITEM, PRIORITY, CONSTRAINTS )


begin
        SEQ_OR_ITEM.priority_start(this, PRIORITY);
        if (!SEQ_OR_ITEM.get_do_not_randomize() && !SEQ_OR_ITEM.randomize() with CONSTRAINTS )
          svt_xvm_warning("RNDFLD", "Randomization failed in uvm_rand_send_with action")
        SEQ_OR_ITEM.priority_finish(this, PRIORITY);
      end

 `define svt_xvm_rand_send_with ( SEQ_OR_ITEM, CONSTRAINTS )


svt_xvm_rand_send_pri_with(SEQ_OR_ITEM, -1, CONSTRAINTS)

 `define SVT_XVM_REFERENCE

UVM_REFERENCE

 `define svt_xvm_register_cb ( T, CB )

 `define svt_xvm_send ( SEQ_OR_ITEM )


svt_xvm_send_pri(SEQ_OR_ITEM, -1)

 `define svt_xvm_send_pri ( SEQ_OR_ITEM, PRIORITY )


SEQ_OR_ITEM.priority_start(this, PRIORITY);
      SEQ_OR_ITEM.priority_finish(this, PRIORITY);

 `define svt_xvm_trace ( id, msg )


uvm_info(id, msg, UVM_MEDIUM)

 `define svt_xvm_typedef_cb ( T, CB, POOL )


typedef uvm_callbacks#(T,CB) POOL

 `define SVT_XVM_UC ( obj )

UVM_``obj

 `define svt_xvm_verbose ( id, msg )


uvm_info(id, msg, UVM_FULL)

 `define svt_xvm_warning ( id, msg )


uvm_warning(id, msg)

 `define SVTI_CHECKXZ ( portObj, portStrValue )


if `SVT_DATA_UTIL_X_OR_Z(portObj) begin
  $swrite(portStrValue, "%0b", portObj );
end
else begin
  $swrite(portStrValue, "%0h", portObj );
end

Used in the command model class body for each callback to make it available at the command layer. Implements the inherited OO callback method. The base transactor should have defined a virtual method with the basic prototype "callback_method_name( callback_datatype data )". callback_name is of the form EVENT_CB_...

 `define uvm_add_to_seq_lib ( TYPE, LIBTYPE )


static bit add_``TYPE``_to_seq_lib_``LIBTYPE =
      LIBTYPE::m_add_typewide_sequence(TYPE::get_type());

 `define uvm_analysis_imp_decl ( SFX )


class uvm_analysis_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_ANALYSIS_MASK,`"uvm_analysis_imp``SFX`",IMP)
  function void write( input T t);
    m_imp.write``SFX( t);
  endfunction
  
endclass

 `define UVM_BASE_SVH

 `define UVM_BLOCKING_GET_IMP ( imp, TYPE, arg )


task get (output TYPE arg);
    imp.get(arg);
  endtask

 `define uvm_blocking_get_imp_decl ( SFX )


class uvm_blocking_get_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_BLOCKING_GET_MASK,`"uvm_blocking_get_imp``SFX`",IMP)
  UVM_BLOCKING_GET_IMP_SFX(SFX, m_imp, T, t)
endclass

 `define UVM_BLOCKING_GET_IMP_SFX ( SFX, imp, TYPE, arg )


task get( output TYPE arg); imp.get``SFX( arg); endtask

 `define UVM_BLOCKING_GET_PEEK_IMP ( imp, TYPE, arg )


UVM_BLOCKING_GET_IMP(imp, TYPE, arg)
  UVM_BLOCKING_PEEK_IMP(imp, TYPE, arg)

 `define uvm_blocking_get_peek_imp_decl ( SFX )


class uvm_blocking_get_peek_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_BLOCKING_GET_PEEK_MASK,`"uvm_blocking_get_peek_imp``SFX`",IMP)
  UVM_BLOCKING_GET_IMP_SFX(SFX, m_imp, T, t)
  UVM_BLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t)
endclass

 `define uvm_blocking_master_imp_decl ( SFX )


class uvm_blocking_master_imp``SFX #(type REQ=int, type RSP=int, type IMP=int,
                                     type REQ_IMP=IMP, type RSP_IMP=IMP)
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
  typedef IMP this_imp_type;
  typedef REQ_IMP this_req_type;
  typedef RSP_IMP this_rsp_type;
  UVM_MS_IMP_COMMON(UVM_TLM_BLOCKING_MASTER_MASK,`"uvm_blocking_master_imp``SFX`")
  
  UVM_BLOCKING_PUT_IMP_SFX(SFX, m_req_imp, REQ, t)
  UVM_BLOCKING_GET_IMP_SFX(SFX, m_rsp_imp, RSP, t) UVM_BLOCKING_PEEK_IMP_SFX(SFX, m_rsp_imp, RSP, t)
endclass

 `define UVM_BLOCKING_PEEK_IMP ( imp, TYPE, arg )


task peek (output TYPE arg);
    imp.peek(arg);
  endtask

 `define uvm_blocking_peek_imp_decl ( SFX )


class uvm_blocking_peek_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_BLOCKING_PEEK_MASK,`"uvm_blocking_peek_imp``SFX`",IMP)
  UVM_BLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t)
endclass

 `define UVM_BLOCKING_PEEK_IMP_SFX ( SFX, imp, TYPE, arg )


task peek( output TYPE arg);imp.peek``SFX( arg); endtask

 `define UVM_BLOCKING_PUT_IMP ( imp, TYPE, arg )


task put (TYPE arg);
    imp.put(arg);
  endtask

 `define uvm_blocking_put_imp_decl ( SFX )


class uvm_blocking_put_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_BLOCKING_PUT_MASK,`"uvm_blocking_put_imp``SFX`",IMP)
  UVM_BLOCKING_PUT_IMP_SFX(SFX, m_imp, T, t)
endclass

 `define UVM_BLOCKING_PUT_IMP_SFX ( SFX, imp, TYPE, arg )


task put( input TYPE arg); imp.put``SFX( arg); endtask

 `define uvm_blocking_slave_imp_decl ( SFX )


class uvm_blocking_slave_imp``SFX #(type REQ=int, type RSP=int, type IMP=int,
                                    type REQ_IMP=IMP, type RSP_IMP=IMP)
  extends uvm_port_base #(uvm_tlm_if_base #(RSP, REQ));
  typedef IMP this_imp_type;
  typedef REQ_IMP this_req_type;
  typedef RSP_IMP this_rsp_type;
  UVM_MS_IMP_COMMON(UVM_TLM_BLOCKING_SLAVE_MASK,`"uvm_blocking_slave_imp``SFX`")
  
  UVM_BLOCKING_PUT_IMP_SFX(SFX, m_rsp_imp, RSP, t)
  UVM_BLOCKING_GET_IMP_SFX(SFX, m_req_imp, REQ, t) UVM_BLOCKING_PEEK_IMP_SFX(SFX, m_req_imp, REQ, t)
endclass

 `define UVM_BLOCKING_TRANSPORT_IMP ( imp, REQ, RSP, req_arg, rsp_arg )


task transport (REQ req_arg, output RSP rsp_arg);
    imp.transport(req_arg, rsp_arg);
  endtask

 `define uvm_blocking_transport_imp_decl ( SFX )


class uvm_blocking_transport_imp``SFX #(type REQ=int, type RSP=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
  UVM_IMP_COMMON(UVM_TLM_BLOCKING_TRANSPORT_MASK,`"uvm_blocking_transport_imp``SFX`",IMP)
  UVM_BLOCKING_TRANSPORT_IMP_SFX(SFX, m_imp, REQ, RSP, req, rsp)
endclass

 `define UVM_BLOCKING_TRANSPORT_IMP_SFX ( SFX, imp, REQ, RSP, req_arg, rsp_arg )


task transport( input REQ req_arg, output RSP rsp_arg);
    imp.transport``SFX(req_arg, rsp_arg);
  endtask

 `define uvm_builtin_bottomup_phase ( PHASE )


m_uvm_bottomup_phase(PHASE,uvm_component,uvm_)

 `define uvm_builtin_task_phase ( PHASE )


m_uvm_task_phase(PHASE,uvm_component,uvm_)

 `define uvm_builtin_topdown_phase ( PHASE )


m_uvm_topdown_phase(PHASE,uvm_component,uvm_)

 `define UVM_CALLBACK_SVH

 `define UVM_CB_MACROS_SVH

 `define uvm_cb_trace ( OBJ, CB, OPER )

/* null */

 `define uvm_cb_trace_noobj ( CB, OPER )

/* null */

 `define UVM_CMDLINE_PROCESSOR_SV

 `define uvm_component_param_utils ( T )

 `define uvm_component_param_utils_begin ( T )

 `define uvm_component_registry ( T, S )


typedef uvm_component_registry #(T,S) type_id;
   static function type_id get_type();
     return type_id::get();
   endfunction
   virtual function uvm_object_wrapper get_object_type();
     return type_id::get();
   endfunction

 `define uvm_component_utils ( T )

 `define uvm_component_utils_begin ( T )

 `define uvm_component_utils_end


end
   endfunction

 `define uvm_create ( SEQ_OR_ITEM )


uvm_create_on(SEQ_OR_ITEM, m_sequencer)

 `define uvm_create_on ( SEQ_OR_ITEM, SEQR )


begin
  uvm_object_wrapper w_;
  w_ = SEQ_OR_ITEM.get_type();
  $cast(SEQ_OR_ITEM , create_item(w_, SEQR, `"SEQ_OR_ITEM`"));
  end

 `define uvm_create_seq ( UVM_SEQ, SEQR_CONS_IF )


uvm_create_on(UVM_SEQ, SEQR_CONS_IF.consumer_seqr)
 

 `define uvm_declare_p_sequencer ( SEQUENCER )


SEQUENCER p_sequencer;
  virtual function void m_set_p_sequencer();
    super.m_set_p_sequencer();
    if( !$cast(p_sequencer, m_sequencer))
        uvm_fatal("DCLPSQ",
        $sformatf("%m %s Error casting p_sequencer, please verify that this sequence/sequence item is intended to execute on this type of sequencer", get_full_name()))
  endfunction

 `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
    return 1;
  endfunction
  
  function void uvm_update_sequence_lib();
    if(this.m_set_sequences_called) begin
      set_sequences_queue(m_static_sequences);
      this.m_set_sequences_called = 0;
    end
    for (int i = 0; i < m_static_remove_sequences.size(); i++) begin
      remove_sequence(m_static_remove_sequences[i]);
    end
  endfunction
 

 `define UVM_DEFAULT_TIMEOUT

9200s

 `define UVM_DEFAULT_TIMEOUT

9200s

 `define uvm_delay ( TIME )

#(TIME);

 `define uvm_do ( SEQ_OR_ITEM )


uvm_do_on_pri_with(SEQ_OR_ITEM, m_sequencer, -1, {})

 `define uvm_do_callbacks ( T, CB, METHOD )


uvm_do_obj_callbacks(T,CB,this,METHOD)

 `define uvm_do_callbacks_exit_on ( T, CB, METHOD, VAL )


uvm_do_obj_callbacks_exit_on(T,CB,this,METHOD,VAL)
 

 `define uvm_do_obj_callbacks ( T, CB, OBJ, METHOD )


begin
     uvm_callback_iter#(T,CB) iter = new(OBJ);
     CB cb = iter.first();
     while(cb != null) begin
       uvm_cb_trace_noobj(cb,$sformatf(`"Executing callback method 'METHOD' for callback %s (CB) from %s (T)`",cb.get_name(), OBJ.get_full_name()))
       cb.METHOD;
       cb = iter.next();
     end
   end

 `define uvm_do_obj_callbacks_exit_on ( T, CB, OBJ, METHOD, VAL )


begin
     uvm_callback_iter#(T,CB) iter = new(OBJ);
     CB cb = iter.first();
     while(cb != null) begin
       if (cb.METHOD == VAL) begin
         uvm_cb_trace_noobj(cb,$sformatf(`"Executed callback method 'METHOD' for callback %s (CB) from %s (T) : returned value VAL (other callbacks will be ignored)`",cb.get_name(), OBJ.get_full_name()))
         return VAL;
       end
       uvm_cb_trace_noobj(cb,$sformatf(`"Executed callback method 'METHOD' for callback %s (CB) from %s (T) : did not return value VAL`",cb.get_name(), OBJ.get_full_name()))
       cb = iter.next();
     end
     return 1-VAL;
   end

 `define uvm_do_on ( SEQ_OR_ITEM, SEQR )


uvm_do_on_pri_with(SEQ_OR_ITEM, SEQR, -1, {})

 `define uvm_do_on_pri ( SEQ_OR_ITEM, SEQR, PRIORITY )


uvm_do_on_pri_with(SEQ_OR_ITEM, SEQR, PRIORITY, {})

 `define uvm_do_on_pri_with ( SEQ_OR_ITEM, SEQR, PRIORITY, CONSTRAINTS )


begin
  uvm_sequence_base __seq;
  uvm_create_on(SEQ_OR_ITEM, SEQR)
  if (!$cast(__seq,SEQ_OR_ITEM)) start_item(SEQ_OR_ITEM, PRIORITY);
  if ((__seq == null || !__seq.do_not_randomize) && !SEQ_OR_ITEM.randomize() with CONSTRAINTS ) begin
    uvm_warning("RNDFLD", "Randomization failed in uvm_do_with action")
  end
  if (!$cast(__seq,SEQ_OR_ITEM)) finish_item(SEQ_OR_ITEM, PRIORITY);
  else __seq.start(SEQR, this, PRIORITY, 0);
  end

 `define uvm_do_on_with ( SEQ_OR_ITEM, SEQR, CONSTRAINTS )


uvm_do_on_pri_with(SEQ_OR_ITEM, SEQR, -1, CONSTRAINTS)

 `define uvm_do_pri ( SEQ_OR_ITEM, PRIORITY )


uvm_do_on_pri_with(SEQ_OR_ITEM, m_sequencer, PRIORITY, {})

 `define uvm_do_pri_with ( SEQ_OR_ITEM, PRIORITY, CONSTRAINTS )


uvm_do_on_pri_with(SEQ_OR_ITEM, m_sequencer, PRIORITY, CONSTRAINTS)

 `define uvm_do_seq ( UVM_SEQ, SEQR_CONS_IF )


uvm_do_on(UVM_SEQ, SEQR_CONS_IF.consumer_seqr)
 

 `define uvm_do_seq_with ( UVM_SEQ, SEQR_CONS_IF, CONSTRAINTS )


uvm_do_on_with(UVM_SEQ, SEQR_CONS_IF.consumer_seqr, CONSTRAINTS)
 

 `define uvm_do_with ( SEQ_OR_ITEM, CONSTRAINTS )


uvm_do_on_pri_with(SEQ_OR_ITEM, m_sequencer, -1, CONSTRAINTS)

 `define UVM_DPI_SVH

 `define uvm_end_package


endpackage

 `define uvm_error ( ID, MSG )


begin
     if (uvm_report_enabled(UVM_NONE,UVM_ERROR,ID))
       uvm_report_error (ID, MSG, UVM_NONE, uvm_file, uvm_line);
   end

 `define uvm_error_context ( ID, MSG, CNTXT )


begin
     if (CNTXT.uvm_report_enabled(UVM_NONE,UVM_ERROR,ID))
       CNTXT.uvm_report_error (ID, MSG, UVM_NONE, uvm_file, uvm_line);
   end

 `define UVM_EXPORT_COMMON ( MASK, TYPE_NAME )


function new (string name, uvm_component parent,
                int min_size=1, int max_size=1);
    super.new (name, parent, UVM_EXPORT, min_size, max_size);
    m_if_mask = MASK;
  endfunction
  UVM_TLM_GET_TYPE_NAME(TYPE_NAME)

 `define uvm_fatal ( ID, MSG )


begin
     if (uvm_report_enabled(UVM_NONE,UVM_FATAL,ID))
       uvm_report_fatal (ID, MSG, UVM_NONE, uvm_file, uvm_line);
   end

 `define uvm_fatal_context ( ID, MSG, CNTXT )


begin
     if (CNTXT.uvm_report_enabled(UVM_NONE,UVM_FATAL,ID))
       CNTXT.uvm_report_fatal (ID, MSG, UVM_NONE, uvm_file, uvm_line);
   end

 `define uvm_field_aa_int_byte ( ARG, FLAG )


uvm_field_aa_int_key(byte, ARG, FLAG)

 `define uvm_field_aa_int_byte_unsigned ( ARG, FLAG )


uvm_field_aa_int_key(byte unsigned, ARG, FLAG)

 `define uvm_field_aa_int_enumkey ( KEY, ARG, FLAG )


begin
  if(what__==UVM_CHECK_FIELDS) __m_uvm_status_container.do_field_check(`"ARG`", this);
  M_UVM_FIELD_DATA_AA_enum_key(KEY,ARG,FLAG)
  M_UVM_FIELD_SET_AA_INT_ENUMTYPE(KEY, INT, ARG, __m_uvm_status_container.bitstream, FLAG)
  end

 `define uvm_field_aa_int_int ( ARG, FLAG )


uvm_field_aa_int_key(int, ARG, FLAG)
 

 `define uvm_field_aa_int_int_unsigned ( ARG, FLAG )


uvm_field_aa_int_key(int unsigned, ARG, FLAG)

 `define uvm_field_aa_int_integer ( ARG, FLAG )


uvm_field_aa_int_key(integer, ARG, FLAG)

 `define uvm_field_aa_int_integer_unsigned ( ARG, FLAG )


uvm_field_aa_int_key(integer unsigned, ARG, FLAG)

 `define uvm_field_aa_int_key ( KEY, ARG, FLAG )


begin
  if(what__==UVM_CHECK_FIELDS) __m_uvm_status_container.do_field_check(`"ARG`", this);
  M_UVM_FIELD_DATA_AA_int_key(KEY,ARG,FLAG)
  M_UVM_FIELD_SET_AA_INT_TYPE(KEY, INT, ARG, __m_uvm_status_container.bitstream, FLAG)
  end

 `define uvm_field_aa_int_longint ( ARG, FLAG )


uvm_field_aa_int_key(longint, ARG, FLAG)

 `define uvm_field_aa_int_longint_unsigned ( ARG, FLAG )


uvm_field_aa_int_key(longint unsigned, ARG, FLAG)

 `define uvm_field_aa_int_shortint ( ARG, FLAG )


uvm_field_aa_int_key(shortint, ARG, FLAG)

 `define uvm_field_aa_int_shortint_unsigned ( ARG, FLAG )


uvm_field_aa_int_key(shortint unsigned, ARG, FLAG)

 `define uvm_field_aa_int_string ( ARG, FLAG )


begin
  if(what__==UVM_CHECK_FIELDS) __m_uvm_status_container.do_field_check(`"ARG`", this);
  M_UVM_FIELD_DATA_AA_int_string(ARG,FLAG)
  M_UVM_FIELD_SET_AA_TYPE(string, INT, ARG, __m_uvm_status_container.bitstream, FLAG)
  end

 `define uvm_field_aa_object_int ( ARG, FLAG )


begin
  if(what__==UVM_CHECK_FIELDS) __m_uvm_status_container.do_field_check(`"ARG`", this);
  M_UVM_FIELD_DATA_AA_object_int(ARG,FLAG)
  M_UVM_FIELD_SET_AA_OBJECT_TYPE(int, ARG, FLAG)
  end

 `define uvm_field_aa_object_string ( ARG, FLAG )


begin
  if(what__==UVM_CHECK_FIELDS) __m_uvm_status_container.do_field_check(`"ARG`", this);
  M_UVM_FIELD_DATA_AA_object_string(ARG,FLAG)
  M_UVM_FIELD_SET_AA_OBJECT_TYPE(string, ARG, FLAG)
  end

 `define uvm_field_aa_string_string ( ARG, FLAG )


begin
  if(what__==UVM_CHECK_FIELDS) __m_uvm_status_container.do_field_check(`"ARG`", this);
  M_UVM_FIELD_DATA_AA_string_string(ARG,FLAG)
  M_UVM_FIELD_SET_AA_TYPE(string, STR, ARG, __m_uvm_status_container.stringv, FLAG)
  end

 `define uvm_field_array_enum ( T, ARG, FLAG )


M_FIELD_QDA_ENUM(ARRAY,T,ARG,FLAG)

 `define uvm_field_array_int ( ARG, FLAG )


M_UVM_FIELD_QDA_INT(ARRAY,ARG,FLAG)

 `define uvm_field_array_object ( ARG, FLAG )


M_UVM_FIELD_QDA_OBJECT(ARRAY,ARG,FLAG)

 `define uvm_field_array_real ( ARG, FLAG )


M_UVM_FIELD_QDA_REAL(ARRAY,ARG,FLAG,da)

 `define uvm_field_array_string ( ARG, FLAG )


M_UVM_FIELD_QDA_STRING(ARRAY,ARG,FLAG)

 `define uvm_field_enum ( T, ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG !== local_data__.ARG) begin
               __m_uvm_status_container.scope.set_arg(`"ARG`");
               $swrite(__m_uvm_status_container.stringv, "lhs = %0s : rhs = %0s",
                 ARG.name(), local_data__.ARG.name());
               __m_uvm_status_container.comparer.print_msg(__m_uvm_status_container.stringv);
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          __m_uvm_status_container.packer.pack_field(ARG, $bits(ARG));
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          ARG = T'(__m_uvm_status_container.packer.unpack_field_int($bits(ARG)));
        end
      UVM_RECORD:
        m_uvm_record_string(ARG, ARG.name(), FLAG)
      UVM_PRINT:
        if(!((FLAG)&UVM_NOPRINT)) begin
          __m_uvm_status_container.printer.print_generic(`"ARG`", `"T`", $bits(ARG), ARG.name());
        end
      UVM_SETINT:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
              if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
              ARG = T'(uvm_object::__m_uvm_status_container.bitstream);
              __m_uvm_status_container.status = 1;
            end
          end
      end
    endcase
  end

 `define uvm_field_event ( ARG, FLAG )


begin
    case (what__)
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG != local_data__.ARG) begin
               __m_uvm_status_container.scope.down(`"ARG`");
               __m_uvm_status_container.comparer.print_msg("");
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
        end
      UVM_RECORD:
        begin
        end
      UVM_PRINT:
        if(!((FLAG)&UVM_NOPRINT)) begin
          __m_uvm_status_container.printer.print_generic(`"ARG`", "event", -1, "");
        end
      UVM_SETINT:
        begin
        end
    endcase
  end

 `define uvm_field_int ( ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        begin
          __m_uvm_status_container.do_field_check(`"ARG`", this);
        end
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG !== local_data__.ARG) begin
               void'(__m_uvm_status_container.comparer.compare_field(`"ARG`", ARG, local_data__.ARG, $bits(ARG)));
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          if($bits(ARG) <= 64) __m_uvm_status_container.packer.pack_field_int(ARG, $bits(ARG));
          else __m_uvm_status_container.packer.pack_field(ARG, $bits(ARG));
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          if($bits(ARG) <= 64) ARG = __m_uvm_status_container.packer.unpack_field_int($bits(ARG));
          else ARG = __m_uvm_status_container.packer.unpack_field($bits(ARG));
        end
      UVM_RECORD:
        m_uvm_record_int(ARG, FLAG)
      UVM_PRINT:
        if(!((FLAG)&UVM_NOPRINT)) begin
          __m_uvm_status_container.printer.print_int(`"ARG`", ARG, $bits(ARG), uvm_radix_enum'((FLAG)&UVM_RADIX));
        end
      UVM_SETINT:
        begin
          bit matched;
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          matched = uvm_is_match(str__, __m_uvm_status_container.scope.get());
          if(matched) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
              if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
              ARG = uvm_object::__m_uvm_status_container.bitstream;
              uvm_object::__m_uvm_status_container.status = 1;
            end
          end
          __m_uvm_status_container.scope.unset_arg(`"ARG`");
        end
    endcase
  end

 `define uvm_field_object ( ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) begin
            if((FLAG)&UVM_REFERENCE || local_data__.ARG == null) ARG = local_data__.ARG;
            else begin
              uvm_object l_obj;
              if(local_data__.ARG.get_name() == "") local_data__.ARG.set_name(`"ARG`");
              l_obj = local_data__.ARG.clone();
              if(l_obj == null) begin
                uvm_fatal("FAILCLN", $sformatf("Failure to clone %s.ARG, thus the variable will remain null.", local_data__.get_name()));
              end
              else begin
                $cast(ARG, l_obj);
                ARG.set_name(local_data__.ARG.get_name());
              end
            end
          end
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            void'(__m_uvm_status_container.comparer.compare_object(`"ARG`", ARG, local_data__.ARG));
            if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          if(((FLAG)&UVM_NOPACK) == 0 && ((FLAG)&UVM_REFERENCE) == 0)
            __m_uvm_status_container.packer.pack_object(ARG);
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          if(((FLAG)&UVM_NOPACK) == 0 && ((FLAG)&UVM_REFERENCE) == 0)
            __m_uvm_status_container.packer.unpack_object(ARG);
        end
      UVM_RECORD:
        m_uvm_record_object(ARG,FLAG)
      UVM_PRINT:
        begin
          if(!((FLAG)&UVM_NOPRINT)) begin
            if(((FLAG)&UVM_REFERENCE) != 0)
              __m_uvm_status_container.printer.print_object_header(`"ARG`", ARG);
            else
              __m_uvm_status_container.printer.print_object(`"ARG`", ARG);
          end
        end
      UVM_SETINT:
        begin
          if((ARG != null) && (((FLAG)&UVM_READONLY)==0) && (((FLAG)&UVM_REFERENCE)==0)) begin
            __m_uvm_status_container.scope.down(`"ARG`");
            ARG.__m_uvm_field_automation(null, UVM_SETINT, str__);
            __m_uvm_status_container.scope.up();
          end
        end
      UVM_SETSTR:
        begin
          if((ARG != null) && (((FLAG)&UVM_READONLY)==0) && (((FLAG)&UVM_REFERENCE)==0)) begin
            __m_uvm_status_container.scope.down(`"ARG`");
            ARG.__m_uvm_field_automation(null, UVM_SETSTR, str__);
            __m_uvm_status_container.scope.up();
          end
        end
      UVM_SETOBJ:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
              if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_object()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
              if($cast(ARG,uvm_object::__m_uvm_status_container.object))
                uvm_object::__m_uvm_status_container.status = 1;
            end
          end
          else if(ARG!=null && ((FLAG)&UVM_READONLY) == 0) begin
            int cnt;
            for(cnt=0; cnt               if(str__[cnt] == "." || str__[cnt] == "*") break;
            end
            if(cnt!=str__.len()) begin
              __m_uvm_status_container.scope.down(`"ARG`");
              ARG.__m_uvm_field_automation(null, UVM_SETOBJ, str__);
              __m_uvm_status_container.scope.up();
            end
          end
        end
    endcase
  end

 `define uvm_field_queue_enum ( T, ARG, FLAG )


M_FIELD_QDA_ENUM(QUEUE,T,ARG,FLAG)

 `define uvm_field_queue_int ( ARG, FLAG )


M_UVM_FIELD_QDA_INT(QUEUE,ARG,FLAG)

 `define uvm_field_queue_object ( ARG, FLAG )


M_UVM_FIELD_QDA_OBJECT(QUEUE,ARG,FLAG)

 `define uvm_field_queue_string ( ARG, FLAG )


M_UVM_FIELD_QDA_STRING(QUEUE,ARG,FLAG)

 `define uvm_field_real ( ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG != local_data__.ARG) begin
               void'(__m_uvm_status_container.comparer.compare_field_real(`"ARG`", ARG, local_data__.ARG));
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          __m_uvm_status_container.packer.pack_field_int($realtobits(ARG), 64);
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          ARG = $bitstoreal(__m_uvm_status_container.packer.unpack_field_int(64));
        end
      UVM_RECORD:
        if(!((FLAG)&UVM_NORECORD)) begin
          __m_uvm_status_container.recorder.record_field_real(`"ARG`", ARG);
        end
      UVM_PRINT:
        if(!((FLAG)&UVM_NOPRINT)) begin
          __m_uvm_status_container.printer.print_real(`"ARG`", ARG);
        end
      UVM_SETINT:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
              if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
              ARG = $bitstoreal(uvm_object::__m_uvm_status_container.bitstream);
              __m_uvm_status_container.status = 1;
            end
          end
      end
    endcase
  end

 `define uvm_field_sarray_enum ( T, ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG !== local_data__.ARG) begin
               if(__m_uvm_status_container.comparer.show_max == 1) begin
                 __m_uvm_status_container.scope.set_arg(`"ARG`");
                 __m_uvm_status_container.comparer.print_msg("");
               end
               else if(__m_uvm_status_container.comparer.show_max) begin
                 foreach(ARG[i]) begin
                   if(ARG[i] !== local_data__.ARG[i]) begin
                     __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
                     $swrite(__m_uvm_status_container.stringv, "lhs = %0s : rhs = %0s",
                       ARG[i].name(), local_data__.ARG[i].name());
                     __m_uvm_status_container.comparer.print_msg(__m_uvm_status_container.stringv);
                     if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
                   end
                 end
               end
               else if ((__m_uvm_status_container.comparer.physical&&((FLAG)&UVM_PHYSICAL)) ||
                        (__m_uvm_status_container.comparer.abstract&&((FLAG)&UVM_ABSTRACT)) ||
                        (!((FLAG)&UVM_PHYSICAL) && !((FLAG)&UVM_ABSTRACT)) )
                 __m_uvm_status_container.comparer.result++;
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          foreach(ARG[i])
            __m_uvm_status_container.packer.pack_field_int(int'(ARG[i]), $bits(ARG[i]));
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          foreach(ARG[i])
            ARG[i] = T'(__m_uvm_status_container.packer.unpack_field_int($bits(ARG[i])));
        end
      UVM_RECORD:
        m_uvm_record_qda_enum(ARG, FLAG, $size(ARG))
      UVM_PRINT:
        begin
          if(((FLAG)&UVM_NOPRINT) == 0) begin
             uvm_print_qda_enum(ARG, __m_uvm_status_container.printer, array, T)
          end
        end
      UVM_SETINT:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
              uvm_report_warning("RDONLY", $sformatf("%s: static arrays cannot be resized via configuraton.",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
          end
          else if(!((FLAG)&UVM_READONLY)) begin
            foreach(ARG[i]) begin
              __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
              if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                ARG[i] = T'(uvm_object::__m_uvm_status_container.bitstream);
                __m_uvm_status_container.status = 1;
              end
            end
          end
        end
    endcase
  end

 `define uvm_field_sarray_int ( ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG !== local_data__.ARG) begin
               if(__m_uvm_status_container.comparer.show_max == 1) begin
                 __m_uvm_status_container.scope.set_arg(`"ARG`");
                 __m_uvm_status_container.comparer.print_msg("");
               end
               else if(__m_uvm_status_container.comparer.show_max) begin
                 foreach(ARG[i]) begin
                   if(ARG[i] !== local_data__.ARG[i]) begin
                     __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
                     void'(__m_uvm_status_container.comparer.compare_field("", ARG[i], local_data__.ARG[i], $bits(ARG[i])));
                   end
                 end
               end
               else if ((__m_uvm_status_container.comparer.physical&&((FLAG)&UVM_PHYSICAL)) ||
                        (__m_uvm_status_container.comparer.abstract&&((FLAG)&UVM_ABSTRACT)) ||
                        (!((FLAG)&UVM_PHYSICAL) && !((FLAG)&UVM_ABSTRACT)) )
                 __m_uvm_status_container.comparer.result++;
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          foreach(ARG[i])
            if($bits(ARG[i]) <= 64) __m_uvm_status_container.packer.pack_field_int(ARG[i], $bits(ARG[i]));
            else __m_uvm_status_container.packer.pack_field(ARG[i], $bits(ARG[i]));
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          foreach(ARG[i])
            if($bits(ARG[i]) <= 64) ARG[i] = __m_uvm_status_container.packer.unpack_field_int($bits(ARG[i]));
            else ARG[i] = __m_uvm_status_container.packer.unpack_field($bits(ARG[i]));
        end
      UVM_RECORD:
        m_uvm_record_qda_int(ARG, FLAG, $size(ARG))
      UVM_PRINT:
        if(!((FLAG)&UVM_NOPRINT)) begin
          if(((FLAG)&UVM_NOPRINT) == 0) begin
             uvm_print_sarray_int3(ARG, uvm_radix_enum'((FLAG)&(UVM_RADIX)),
                                   __m_uvm_status_container.printer)
          end
        end
      UVM_SETINT:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
              uvm_report_warning("RDONLY", $sformatf("%s: static arrays cannot be resized via configuraton.",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
          end
          else if(!((FLAG)&UVM_READONLY)) begin
            foreach(ARG[i]) begin
              __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
              if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                ARG[i] = uvm_object::__m_uvm_status_container.bitstream;
                __m_uvm_status_container.status = 1;
              end
            end
          end
        end
    endcase
  end

 `define uvm_field_sarray_object ( ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) begin
            if(((FLAG)&UVM_REFERENCE))
              ARG = local_data__.ARG;
            else
              foreach(ARG[i]) begin
                if(ARG[i] != null && local_data__.ARG[i] != null)
                  ARG[i].copy(local_data__.ARG[i]);
                else if(ARG[i] == null && local_data__.ARG[i] != null)
                  $cast(ARG[i], local_data__.ARG[i].clone());
                else
                  ARG[i] = null;
              end
          end
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(((FLAG)&UVM_REFERENCE) && (__m_uvm_status_container.comparer.show_max <= 1) && (ARG !== local_data__.ARG) ) begin
               if(__m_uvm_status_container.comparer.show_max == 1) begin
                 __m_uvm_status_container.scope.set_arg(`"ARG`");
                 __m_uvm_status_container.comparer.print_msg("");
               end
               else if ((__m_uvm_status_container.comparer.physical&&((FLAG)&UVM_PHYSICAL)) ||
                        (__m_uvm_status_container.comparer.abstract&&((FLAG)&UVM_ABSTRACT)) ||
                        (!((FLAG)&UVM_PHYSICAL) && !((FLAG)&UVM_ABSTRACT)) )
                 __m_uvm_status_container.comparer.result++;
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
            else begin
              string s;
              foreach(ARG[i]) begin
                if(ARG[i] != null && local_data__.ARG[i] != null) begin
                  $swrite(s,`"ARG[%0d]`",i);
                  void'(__m_uvm_status_container.comparer.compare_object(s, ARG[i], local_data__.ARG[i]));
                end
                if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
              end
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          foreach(ARG[i])
            __m_uvm_status_container.packer.pack_object(ARG[i]);
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          foreach(ARG[i])
            __m_uvm_status_container.packer.unpack_object(ARG[i]);
        end
      UVM_RECORD:
        m_uvm_record_qda_object(ARG,FLAG,$size(ARG))
      UVM_PRINT:
        begin
          if(((FLAG)&UVM_NOPRINT) == 0) begin
             uvm_print_sarray_object3(ARG, __m_uvm_status_container.printer, FLAG)
          end
        end
      UVM_SETINT:
        begin
          string s;
          if(!((FLAG)&UVM_READONLY)) begin
            foreach(ARG[i]) begin
              $swrite(s,`"ARG[%0d]`",i);
              __m_uvm_status_container.scope.set_arg(s);
              if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_object()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                if($cast(ARG[i],uvm_object::__m_uvm_status_container.object))
                  uvm_object::__m_uvm_status_container.status = 1;
              end
              else if(ARG[i]!=null && !((FLAG)&UVM_REFERENCE)) begin
                int cnt;
                for(cnt=0; cnt                   if(str__[cnt] == "." || str__[cnt] == "*") break;
                end
                if(cnt!=str__.len()) begin
                  __m_uvm_status_container.scope.down(s);
                  ARG[i].__m_uvm_field_automation(null, UVM_SETINT, str__);
                  __m_uvm_status_container.scope.up();
                end
              end
            end
          end
        end
      UVM_SETSTR:
        begin
          string s;
          if(!((FLAG)&UVM_READONLY)) begin
            foreach(ARG[i]) begin
              $swrite(s,`"ARG[%0d]`",i);
              __m_uvm_status_container.scope.set_arg(s);
              if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_object()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                if($cast(ARG[i],uvm_object::__m_uvm_status_container.object))
                  uvm_object::__m_uvm_status_container.status = 1;
              end
              else if(ARG[i]!=null && !((FLAG)&UVM_REFERENCE)) begin
                int cnt;
                for(cnt=0; cnt                   if(str__[cnt] == "." || str__[cnt] == "*") break;
                end
                if(cnt!=str__.len()) begin
                  __m_uvm_status_container.scope.down(s);
                  ARG[i].__m_uvm_field_automation(null, UVM_SETSTR, str__);
                  __m_uvm_status_container.scope.up();
                end
              end
            end
          end
        end
      UVM_SETOBJ:
        begin
          string s;
          if(!((FLAG)&UVM_READONLY)) begin
            foreach(ARG[i]) begin
              $swrite(s,`"ARG[%0d]`",i);
              __m_uvm_status_container.scope.set_arg(s);
              if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_object()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                if($cast(ARG[i],uvm_object::__m_uvm_status_container.object))
                  uvm_object::__m_uvm_status_container.status = 1;
              end
              else if(ARG[i]!=null && !((FLAG)&UVM_REFERENCE)) begin
                int cnt;
                for(cnt=0; cnt                   if(str__[cnt] == "." || str__[cnt] == "*") break;
                end
                if(cnt!=str__.len()) begin
                  __m_uvm_status_container.scope.down(s);
                  ARG[i].__m_uvm_field_automation(null, UVM_SETOBJ, str__);
                  __m_uvm_status_container.scope.up();
                end
              end
            end
          end
        end
    endcase
  end

 `define uvm_field_sarray_real ( ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if (local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if (local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG != local_data__.ARG) begin
               if(__m_uvm_status_container.comparer.show_max == 1) begin
                 __m_uvm_status_container.scope.set_arg(`"ARG`");
                 __m_uvm_status_container.comparer.print_msg("");
               end
               else if(__m_uvm_status_container.comparer.show_max) begin
                   foreach(ARG[i]) begin
                     if(ARG[i] != local_data__.ARG[i]) begin
                       __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
                       void'(__m_uvm_status_container.comparer.compare_field_real(`"ARG`", ARG[i], local_data__.ARG[i]));
                     end
                   end
               end
               else if ((__m_uvm_status_container.comparer.physical&&((FLAG)&UVM_PHYSICAL)) ||
                        (__m_uvm_status_container.comparer.abstract&&((FLAG)&UVM_ABSTRACT)) ||
                        (!((FLAG)&UVM_PHYSICAL) && !((FLAG)&UVM_ABSTRACT)) )
                 __m_uvm_status_container.comparer.result++;
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
         end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          foreach(ARG[i]) begin
            __m_uvm_status_container.packer.pack_field_int($realtobits(ARG[i]), 64);
          end
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          foreach(ARG[i]) begin
            ARG[i] = $bitstoreal(__m_uvm_status_container.packer.unpack_field_int(64));
          end
        end
      UVM_RECORD:
        m_uvm_record_qda_real(ARG, FLAG, $size(ARG))
      UVM_PRINT:
        if(!((FLAG)&UVM_NOPRINT)) begin
          if(((FLAG)&UVM_NOPRINT) == 0) begin
            uvm_print_qda_real3(ARG, __m_uvm_status_container.printer, T)
          end
        end
      UVM_SETINT:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
              uvm_report_warning("RDONLY", $sformatf("%s: static arrays cannot be resized via configuraton.",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
          end
          else if(!((FLAG)&UVM_READONLY)) begin
            foreach(ARG[i]) begin
              __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
              if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                ARG[i] = uvm_object::__m_uvm_status_container.bitstream;
                __m_uvm_status_container.status = 1;
              end
            end
          end
        end
    endcase
  end

 `define uvm_field_sarray_string ( ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG != local_data__.ARG) begin
               if(__m_uvm_status_container.comparer.show_max == 1) begin
                 __m_uvm_status_container.scope.set_arg(`"ARG`");
                 __m_uvm_status_container.comparer.print_msg("");
               end
               else if(__m_uvm_status_container.comparer.show_max) begin
                 foreach(ARG[i]) begin
                   if(ARG[i] != local_data__.ARG[i]) begin
                     __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
                     void'(__m_uvm_status_container.comparer.compare_string("", ARG[i], local_data__.ARG[i]));
                   end
                 end
               end
               else if ((__m_uvm_status_container.comparer.physical&&((FLAG)&UVM_PHYSICAL)) ||
                        (__m_uvm_status_container.comparer.abstract&&((FLAG)&UVM_ABSTRACT)) ||
                        (!((FLAG)&UVM_PHYSICAL) && !((FLAG)&UVM_ABSTRACT)) )
                 __m_uvm_status_container.comparer.result++;
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          foreach(ARG[i])
            __m_uvm_status_container.packer.pack_string(ARG[i]);
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          foreach(ARG[i])
            ARG[i] = __m_uvm_status_container.packer.unpack_string();
        end
      UVM_RECORD:
        begin
          /* Issue with $size for sarray with strings */
          int sz; foreach(ARG[i]) sz=i;
          m_uvm_record_qda_string(ARG, FLAG, sz)
        end
      UVM_PRINT:
        begin
          if(((FLAG)&UVM_NOPRINT) == 0) begin
             uvm_print_sarray_string2(ARG, __m_uvm_status_container.printer)
          end
        end
      UVM_SETSTR:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
              uvm_report_warning("RDONLY", {__m_uvm_status_container.get_full_scope_arg(),
              ": static arrays cannot be resized via configuraton."}, UVM_NONE);
            end
          end
          else if(!((FLAG)&UVM_READONLY)) begin
            foreach(ARG[i]) begin
              __m_uvm_status_container.scope.set_arg_element(`"ARG`",i);
              if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
                if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_int()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
                ARG[i] = uvm_object::__m_uvm_status_container.stringv;
                __m_uvm_status_container.status = 1;
              end
            end
          end
        end
    endcase
  end

 `define uvm_field_string ( ARG, FLAG )


begin
    case (what__)
      UVM_CHECK_FIELDS:
        __m_uvm_status_container.do_field_check(`"ARG`", this);
      UVM_COPY:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOPY)) ARG = local_data__.ARG;
        end
      UVM_COMPARE:
        begin
          if(local_data__ == null) return;
          if(!((FLAG)&UVM_NOCOMPARE)) begin
            if(ARG != local_data__.ARG) begin
               void'(__m_uvm_status_container.comparer.compare_string(`"ARG`", ARG, local_data__.ARG));
               if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return;
            end
          end
        end
      UVM_PACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          __m_uvm_status_container.packer.pack_string(ARG);
        end
      UVM_UNPACK:
        if(!((FLAG)&UVM_NOPACK)) begin
          ARG = __m_uvm_status_container.packer.unpack_string();
        end
      UVM_RECORD:
        m_uvm_record_string(ARG, ARG, FLAG)
      UVM_PRINT:
        if(!((FLAG)&UVM_NOPRINT)) begin
          __m_uvm_status_container.printer.print_string(`"ARG`", ARG);
        end
      UVM_SETSTR:
        begin
          __m_uvm_status_container.scope.set_arg(`"ARG`");
          if(uvm_is_match(str__, __m_uvm_status_container.scope.get())) begin
            if((FLAG)&UVM_READONLY) begin
              uvm_report_warning("RDONLY", $sformatf("Readonly argument match %s is ignored",
                 __m_uvm_status_container.get_full_scope_arg()), UVM_NONE);
            end
            else begin
              if (__m_uvm_status_container.print_matches)
                  uvm_report_info("STRMTC", {"set_str()", ": Matched string ", str__, " to field ", __m_uvm_status_container.get_full_scope_arg()}, UVM_LOW);
              ARG = uvm_object::__m_uvm_status_container.stringv;
              __m_uvm_status_container.status = 1;
            end
          end
      end
    endcase
  end

 `define uvm_field_utils_begin ( T )


function void __m_uvm_field_automation (uvm_object tmp_data__,
                                     int what__,
                                     string str__);
   begin
     T local_data__; /* Used for copy and compare */
     typedef T ___local_type____;
     string string_aa_key; /* Used for associative array lookups */
     uvm_object __current_scopes[$];
     if(what__ inside {UVM_SETINT,UVM_SETSTR,UVM_SETOBJ}) begin
        if(__m_uvm_status_container.m_do_cycle_check(this)) begin
            return;
        end
        else
            __current_scopes=__m_uvm_status_container.m_uvm_cycle_scopes;
     end
     super.__m_uvm_field_automation(tmp_data__, what__, str__);
     /* Type is verified by uvm_object::compare() */
     if(tmp_data__ != null)
       /* Allow objects in same hierarchy to be copied/compared */
       if(!$cast(local_data__, tmp_data__)) return;

 `define uvm_field_utils_end


if(what__ inside {UVM_SETINT,UVM_SETSTR,UVM_SETOBJ}) begin
        void'(__current_scopes.pop_back());
        __m_uvm_status_container.m_uvm_cycle_scopes = __current_scopes;
     end
     end
endfunction
 

 `define uvm_file

`__FILE__

 `define UVM_FIX_REV

d

 `define UVM_FIX_REV_d

 `define UVM_FIX_VERSION_1_1_d

 `define UVM_FUNCTION_ERROR

"TLM interface function not implemented"

 `define UVM_GET_IMP ( imp, TYPE, arg )


UVM_BLOCKING_GET_IMP(imp, TYPE, arg)
  UVM_NONBLOCKING_GET_IMP(imp, TYPE, arg)

 `define uvm_get_imp_decl ( SFX )


class uvm_get_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_GET_MASK,`"uvm_get_imp``SFX`",IMP)
  UVM_BLOCKING_GET_IMP_SFX(SFX, m_imp, T, t)
  UVM_NONBLOCKING_GET_IMP_SFX(SFX, m_imp, T, t)
endclass

 `define UVM_GET_PEEK_IMP ( imp, TYPE, arg )


UVM_BLOCKING_GET_PEEK_IMP(imp, TYPE, arg)
  UVM_NONBLOCKING_GET_PEEK_IMP(imp, TYPE, arg)

 `define uvm_get_peek_imp_decl ( SFX )


class uvm_get_peek_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_GET_PEEK_MASK,`"uvm_get_peek_imp``SFX`",IMP)
  UVM_BLOCKING_GET_IMP_SFX(SFX, m_imp, T, t)
  UVM_NONBLOCKING_GET_IMP_SFX(SFX, m_imp, T, t)
  UVM_BLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t)
  UVM_NONBLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t)
endclass

 `define UVM_HDL__SVH

 `define UVM_HDL_MAX_WIDTH

1024

 `define UVM_HEARTBEAT_SVH

 `define UVM_IMP_COMMON ( MASK, TYPE_NAME, IMP )


local IMP m_imp;
  function new (string name, IMP imp);
    super.new (name, imp, UVM_IMPLEMENTATION, 1, 1);
    m_imp = imp;
    m_if_mask = MASK;
  endfunction
  UVM_TLM_GET_TYPE_NAME(TYPE_NAME)

 `define uvm_info ( ID, MSG, VERBOSITY )


begin
     if (uvm_report_enabled(VERBOSITY,UVM_INFO,ID))
       uvm_report_info (ID, MSG, VERBOSITY, uvm_file, uvm_line);
   end

 `define uvm_info_context ( ID, MSG, VERBOSITY, CNTXT )


begin
     if (CNTXT.uvm_report_enabled(VERBOSITY,UVM_INFO,ID))
       CNTXT.uvm_report_info (ID, MSG, VERBOSITY, uvm_file, uvm_line);
   end

 `define uvm_line

`__LINE__

 `define UVM_LINE_WIDTH

120

 `define UVM_MACROS_SVH

 `define UVM_MAJOR_REV

1

 `define UVM_MAJOR_REV_1

 `define UVM_MAJOR_VERSION_1_1

 `define uvm_master_imp_decl ( SFX )


class uvm_master_imp``SFX #(type REQ=int, type RSP=int, type IMP=int,
                            type REQ_IMP=IMP, type RSP_IMP=IMP)
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
  typedef IMP this_imp_type;
  typedef REQ_IMP this_req_type;
  typedef RSP_IMP this_rsp_type;
  UVM_MS_IMP_COMMON(UVM_TLM_MASTER_MASK,`"uvm_master_imp``SFX`")
  
  UVM_BLOCKING_PUT_IMP_SFX(SFX, m_req_imp, REQ, t) UVM_NONBLOCKING_PUT_IMP_SFX(SFX, m_req_imp, REQ, t)
  UVM_BLOCKING_GET_IMP_SFX(SFX, m_rsp_imp, RSP, t) UVM_BLOCKING_PEEK_IMP_SFX(SFX, m_rsp_imp, RSP, t) UVM_NONBLOCKING_GET_IMP_SFX(SFX, m_rsp_imp, RSP, t) UVM_NONBLOCKING_PEEK_IMP_SFX(SFX, m_rsp_imp, RSP, t)
endclass

 `define UVM_MAX_STREAMBITS

4096

 `define UVM_MEM_MAM__SV

 `define UVM_MESSAGE_DEFINES_SVH

 `define UVM_MINOR_REV

1

 `define UVM_MINOR_REV_1

 `define UVM_MS_IMP_COMMON ( MASK, TYPE_NAME )


local this_req_type m_req_imp;
  local this_rsp_type m_rsp_imp;
  function new (string name, this_imp_type imp,
                this_req_type req_imp = null, this_rsp_type rsp_imp = null);
    super.new (name, imp, UVM_IMPLEMENTATION, 1, 1);
    if(req_imp==null) $cast(req_imp, imp);
    if(rsp_imp==null) $cast(rsp_imp, imp);
    m_req_imp = req_imp;
    m_rsp_imp = rsp_imp;
    m_if_mask = MASK;
  endfunction
  UVM_TLM_GET_TYPE_NAME(TYPE_NAME)

 `define UVM_NAME

UVM

 `define uvm_new_func


function new (string name, uvm_component parent);
    super.new(name, parent);
  endfunction

 `define uvm_non_blocking_transport_imp_decl ( SFX )

 `define UVM_NONBLOCKING_GET_IMP ( imp, TYPE, arg )


function bit try_get (output TYPE arg);
    return imp.try_get(arg);
  endfunction
  function bit can_get();
    return imp.can_get();
  endfunction

 `define uvm_nonblocking_get_imp_decl ( SFX )


class uvm_nonblocking_get_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_NONBLOCKING_GET_MASK,`"uvm_nonblocking_get_imp``SFX`",IMP)
  UVM_NONBLOCKING_GET_IMP_SFX(SFX, m_imp, T, t)
endclass

 `define UVM_NONBLOCKING_GET_IMP_SFX ( SFX, imp, TYPE, arg )


function bit try_get( output TYPE arg);
    if( !imp.try_get``SFX( arg)) return 0;
    return 1;
  endfunction
  function bit can_get(); return imp.can_get``SFX(); endfunction

 `define UVM_NONBLOCKING_GET_PEEK_IMP ( imp, TYPE, arg )


UVM_NONBLOCKING_GET_IMP(imp, TYPE, arg)
  UVM_NONBLOCKING_PEEK_IMP(imp, TYPE, arg)

 `define uvm_nonblocking_get_peek_imp_decl ( SFX )


class uvm_nonblocking_get_peek_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_NONBLOCKING_GET_PEEK_MASK,`"uvm_nonblocking_get_peek_imp``SFX`",IMP)
  UVM_NONBLOCKING_GET_IMP_SFX(SFX, m_imp, T, t)
  UVM_NONBLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t)
endclass

 `define uvm_nonblocking_master_imp_decl ( SFX )


class uvm_nonblocking_master_imp``SFX #(type REQ=int, type RSP=int, type IMP=int,
                                   type REQ_IMP=IMP, type RSP_IMP=IMP)
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
  typedef IMP this_imp_type;
  typedef REQ_IMP this_req_type;
  typedef RSP_IMP this_rsp_type;
  UVM_MS_IMP_COMMON(UVM_TLM_NONBLOCKING_MASTER_MASK,`"uvm_nonblocking_master_imp``SFX`")
  
  UVM_NONBLOCKING_PUT_IMP_SFX(SFX, m_req_imp, REQ, t)
  UVM_NONBLOCKING_GET_IMP_SFX(SFX, m_rsp_imp, RSP, t) UVM_NONBLOCKING_PEEK_IMP_SFX(SFX, m_rsp_imp, RSP, t)
endclass

 `define UVM_NONBLOCKING_PEEK_IMP ( imp, TYPE, arg )


function bit try_peek (output TYPE arg);
    return imp.try_peek(arg);
  endfunction
  function bit can_peek();
    return imp.can_peek();
  endfunction

 `define uvm_nonblocking_peek_imp_decl ( SFX )


class uvm_nonblocking_peek_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_NONBLOCKING_PEEK_MASK,`"uvm_nonblocking_peek_imp``SFX`",IMP)
  UVM_NONBLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t)
endclass

 `define UVM_NONBLOCKING_PEEK_IMP_SFX ( SFX, imp, TYPE, arg )


function bit try_peek( output TYPE arg);
    if( !imp.try_peek``SFX( arg)) return 0;
    return 1;
  endfunction
  function bit can_peek(); return imp.can_peek``SFX(); endfunction

 `define UVM_NONBLOCKING_PUT_IMP ( imp, TYPE, arg )


function bit try_put (TYPE arg);
    return imp.try_put(arg);
  endfunction
  function bit can_put();
    return imp.can_put();
  endfunction

 `define uvm_nonblocking_put_imp_decl ( SFX )


class uvm_nonblocking_put_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_NONBLOCKING_PUT_MASK,`"uvm_nonblocking_put_imp``SFX`",IMP)
  UVM_NONBLOCKING_PUT_IMP_SFX( SFX, m_imp, T, t)
endclass

 `define UVM_NONBLOCKING_PUT_IMP_SFX ( SFX, imp, TYPE, arg )


function bit try_put( input TYPE arg);
    if( !imp.try_put``SFX( arg)) return 0;
    return 1;
  endfunction
  function bit can_put(); return imp.can_put``SFX(); endfunction

 `define uvm_nonblocking_slave_imp_decl ( SFX )


class uvm_nonblocking_slave_imp``SFX #(type REQ=int, type RSP=int, type IMP=int,
                                       type REQ_IMP=IMP, type RSP_IMP=IMP)
  extends uvm_port_base #(uvm_tlm_if_base #(RSP, REQ));
  typedef IMP this_imp_type;
  typedef REQ_IMP this_req_type;
  typedef RSP_IMP this_rsp_type;
  UVM_MS_IMP_COMMON(UVM_TLM_NONBLOCKING_SLAVE_MASK,`"uvm_nonblocking_slave_imp``SFX`")
  
  UVM_NONBLOCKING_PUT_IMP_SFX(SFX, m_rsp_imp, RSP, t)
  UVM_NONBLOCKING_GET_IMP_SFX(SFX, m_req_imp, REQ, t) UVM_NONBLOCKING_PEEK_IMP_SFX(SFX, m_req_imp, REQ, t)
endclass

 `define UVM_NONBLOCKING_TRANSPORT_IMP ( imp, REQ, RSP, req_arg, rsp_arg )


function bit nb_transport (REQ req_arg, output RSP rsp_arg);
    return imp.nb_transport(req_arg, rsp_arg);
  endfunction

 `define uvm_nonblocking_transport_imp_decl ( SFX )


class uvm_nonblocking_transport_imp``SFX #(type REQ=int, type RSP=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
  UVM_IMP_COMMON(UVM_TLM_NONBLOCKING_TRANSPORT_MASK,`"uvm_nonblocking_transport_imp``SFX`",IMP)
  UVM_NONBLOCKING_TRANSPORT_IMP_SFX(SFX, m_imp, REQ, RSP, req, rsp)
endclass

 `define UVM_NONBLOCKING_TRANSPORT_IMP_SFX ( SFX, imp, REQ, RSP, req_arg, rsp_arg )


function bit nb_transport( input REQ req_arg, output RSP rsp_arg);
    if(imp) return imp.nb_transport``SFX(req_arg, rsp_arg);
  endfunction

 `define UVM_NUM_LINES

120

 `define UVM_OBJECT_DEFINES_SVH

 `define uvm_object_param_utils ( T )

 `define uvm_object_param_utils_begin ( T )

 `define uvm_object_registry ( T, S )


typedef uvm_object_registry#(T,S) type_id;
   static function type_id get_type();
     return type_id::get();
   endfunction
   virtual function uvm_object_wrapper get_object_type();
     return type_id::get();
   endfunction

 `define uvm_object_utils ( T )

 `define uvm_object_utils_begin ( T )

 `define uvm_object_utils_end


end
   endfunction
 

 `define UVM_OBJECTION_SVH

 `define uvm_pack_array ( VAR )


uvm_pack_arrayN(VAR,$bits(VAR[0]))

 `define uvm_pack_arrayN ( VAR, SIZE )


begin
    if (packer.use_metadata)
      uvm_pack_intN(VAR.size(),32)
    uvm_pack_sarrayN(VAR,SIZE)
    end

 `define uvm_pack_enum ( VAR )


uvm_pack_enumN(VAR,$bits(VAR))

 `define uvm_pack_enumN ( VAR, SIZE )


uvm_pack_intN(VAR,SIZE)

 `define uvm_pack_int ( VAR )


uvm_pack_intN(VAR,$bits(VAR))

 `define uvm_pack_intN ( VAR, SIZE )


begin
   if (packer.big_endian) begin
     longint tmp__ = VAR;
     for (int i=0; i<SIZE; i++)
       packer.m_bits[packer.count + i] = tmp__[SIZE-1-i];
   end
   else begin
     packer.m_bits[packer.count +: SIZE] = VAR;
   end
   packer.count += SIZE;
   end

 `define uvm_pack_queue ( VAR )


uvm_pack_queueN(VAR,$bits(VAR[0]))

 `define uvm_pack_queueN ( VAR, SIZE )


uvm_pack_arrayN(VAR,SIZE)

 `define uvm_pack_real ( VAR )


uvm_pack_intN($realtobits(VAR),64)

 `define uvm_pack_sarray ( VAR )


uvm_pack_sarrayN(VAR,$bits(VAR[0]))

 `define uvm_pack_sarrayN ( VAR, SIZE )


begin
    foreach (VAR `` [index])
      uvm_pack_intN(VAR[index],SIZE)
    end

 `define uvm_pack_string ( VAR )


begin
    uvm_pack_sarrayN(VAR,8)
    if (packer.use_metadata)
      uvm_pack_intN(0,8)
    end

 `define uvm_package ( PKG )


package PKG;
  class uvm_bogus_class extends uvm::uvm_sequence;
  endclass

 `define UVM_PACKER_MAX_BYTES

UVM_STREAMBITS

 `define UVM_PEEK_IMP ( imp, TYPE, arg )


UVM_BLOCKING_PEEK_IMP(imp, TYPE, arg)
  UVM_NONBLOCKING_PEEK_IMP(imp, TYPE, arg)

 `define uvm_peek_imp_decl ( SFX )


class uvm_peek_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_PEEK_MASK,`"uvm_peek_imp``SFX`",IMP)
  UVM_BLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t)
  UVM_NONBLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t)
endclass

 `define UVM_PH_TRACE ( ID, MSG, PH, VERB )


uvm_info(ID, {$sformatf("Phase '%0s' (id=%0d) ",
       PH.get_full_name(), PH.get_inst_id()),MSG}, VERB);

 `define UVM_PHASE_DEFINES_SVH

 `define UVM_PKG_SV

 `define UVM_PORT_COMMON ( MASK, TYPE_NAME )


function new (string name, uvm_component parent,
                int min_size=1, int max_size=1);
    super.new (name, parent, UVM_PORT, min_size, max_size);
    m_if_mask = MASK;
  endfunction
  UVM_TLM_GET_TYPE_NAME(TYPE_NAME)

 `define uvm_print_aa_int_key4 ( KEY, F, R, P )


begin
    uvm_printer p__;
    uvm_printer_knobs k__;
    if(P!=null) p__ = P;
    else p__ = uvm_default_printer;
    __m_uvm_status_container.stringv = "aa(int,int)";
    for(int i=0; i<__m_uvm_status_container.stringv.len(); ++i)
      if(__m_uvm_status_container.stringv[i] == " ")
        __m_uvm_status_container.stringv[i] = "_";
    p__.print_array_header (`"F`", F.num(), __m_uvm_status_container.stringv);
    k__ = p__.knobs;
    if((p__.knobs.depth == -1) || (p__.m_scope.depth() < p__.knobs.depth+1))
    begin
      foreach(F[aa_key]) begin
          uvm_print_int4(F[aa_key], R,
                                {"[", $sformatf("%0d",aa_key), "]"}, p__)
      end
    end
    p__.print_array_footer(F.num());
  end

 `define uvm_print_aa_int_object ( F, FLAG )


`uvm_print_aa_int_object_3(F, uvm_default_printer,FLAG)

 `define uvm_print_aa_int_object3 ( F, P, FLAG )


begin
    uvm_printer p__;
    uvm_printer_knobs k__;
    uvm_object u__;
    int key;
    if(P!=null) p__ = P;
    else p__ = uvm_default_printer;
    p__.print_array_header (`"F`", F.num(), "aa(object,int)");
    k__ = p__.knobs;
    if((p__.knobs.depth == -1) || (p__.m_scope.depth() < p__.knobs.depth+1))
    begin
      foreach(F[key]) begin
          $swrite(__m_uvm_status_container.stringv, "[%0d]", key);
          if(((FLAG)&UVM_REFERENCE)==0)
            p__.print_object(__m_uvm_status_container.stringv, F[key], "[");
          else
            p__.print_object_header(__m_uvm_status_container.stringv, F[key], "[");
      end
    end
    p__.print_array_footer(F.num());
  end

 `define uvm_print_aa_string_int ( F )


uvm_print_aa_string_int3(F, R, uvm_default_printer)

 `define uvm_print_aa_string_int3 ( F, R, P )


begin
    uvm_printer p__;
    uvm_printer_knobs k__;
    if(P!=null) p__ = P;
    else p__ = uvm_default_printer;
    p__.print_array_header (`"F`", F.num(), "aa(int,string)");
    k__ = p__.knobs;
    if((p__.knobs.depth == -1) || (p__.m_scope.depth() < p__.knobs.depth+1))
    begin
      foreach(F[string_aa_key])
          uvm_print_int4(F[string_aa_key], R,
                                {"[", string_aa_key, "]"}, p__)
    end
    p__.print_array_footer(F.num());
  end

 `define uvm_print_aa_string_object ( F, FLAG )


`uvm_print_aa_string_object_3(F, uvm_default_printer,FLAG)

 `define uvm_print_aa_string_object3 ( F, P, FLAG )


begin
    uvm_printer p__;
    uvm_printer_knobs k__;
    uvm_object u__;
    if(P!=null) p__ = P;
    else p__ = uvm_default_printer;
    p__.print_array_header (`"F`", F.num(), "aa(object,string)");
    k__ = p__.knobs;
    if((p__.knobs.depth == -1) || (p__.m_scope.depth() < p__.knobs.depth+1))
    begin
      foreach(F[string_aa_key]) begin
          if(((FLAG)&UVM_REFERENCE)==0)
            p__.print_object({"[", string_aa_key, "]"}, F[string_aa_key], "[");
          else
            p__.print_object_header({"[", string_aa_key, "]"}, F[string_aa_key], "[");
      end
    end
    p__.print_array_footer(F.num());
  end

 `define uvm_print_aa_string_string ( F )


`uvm_print_aa_string_string_2(F, uvm_default_printer)

 `define uvm_print_aa_string_string2 ( F, P )


begin
    uvm_printer p__;
    uvm_printer_knobs k__;
    if(P!=null) p__ = P;
    else p__ = uvm_default_printer;
    p__.print_array_header (`"F`", F.num(), "aa(string,string)");
    k__ = p__.knobs;
    if((p__.knobs.depth == -1) || (p__.m_scope.depth() < p__.knobs.depth+1))
    begin
      foreach(F[string_aa_key])
          p__.print_string({"[", string_aa_key, "]"}, F[string_aa_key], "[");
    end
    p__.print_array_footer(F.num());
  end

 `define uvm_print_array_int ( F, R )


uvm_print_array_int3(F, R, uvm_default_printer)

 `define uvm_print_array_int3 ( F, R, P )


uvm_print_qda_int4(F, R, P, da)

 `define uvm_print_array_object ( F, FLAG )


uvm_print_array_object3(F, uvm_default_printer,FLAG)

 `define uvm_print_array_object3 ( F, P, FLAG )


uvm_print_object_qda4(F, P, da,FLAG)

 `define uvm_print_array_real ( F )


uvm_print_array_real2(F, uvm_default_printer)

 `define uvm_print_array_real2 ( F, P )

 `define uvm_print_array_string ( F )


uvm_print_array_string2(F, uvm_default_printer)

 `define uvm_print_array_string2 ( F, P )

 `define uvm_print_enum ( T, F, NM, P )


P.print_generic(NM, `"T`", $bits(F), F.name(), "[");

 `define uvm_print_int ( F, R )


uvm_print_int3(F, R, uvm_default_printer)

 `define uvm_print_int3 ( F, R, P )


do begin
     uvm_printer p__;
     if(P!=null) p__ = P;
     else p__ = uvm_default_printer;
     uvm_print_int4(F, R, `"F`", p__)
   end while(0);

 `define uvm_print_int4 ( F, R, NM, P )


P.print_int(NM, F, $bits(F), R, "[");

 `define uvm_print_object ( F )


uvm_print_object2(F, uvm_default_printer)

 `define uvm_print_object2 ( F, P )


do begin
     uvm_printer p__;
     if(P!=null) p__ = P;
     else p__ = uvm_default_printer;
     p__.print_object(`"F`", F, "[");
   end while(0);

 `define uvm_print_object_qda4 ( F, P, T, FLAG )


do begin
    int curr, max__;
    uvm_printer p__;
    max__=0; curr=0;
    if(P!=null) p__ = P;
    else p__ = uvm_default_printer;
    foreach(F[i]) max__ = i+1;


    p__.m_scope.set_arg(`"F`");
    p__.print_array_header(`"F`", max__, `"T``(object)`");
    if((p__.knobs.depth == -1) || (p__.knobs.depth+1 > p__.m_scope.depth()))
    begin
      for(curr=0; curr          p__.knobs.end_elements == -1 || curr         if(((FLAG)&UVM_REFERENCE) == 0)
          p__.print_object(p__.index_string(curr), F[curr], "[");
        else
          p__.print_object_header(p__.index_string(curr), F[curr], "[");
      end
      if(curr         curr = max__-p__.knobs.end_elements;
        if(curr         else begin
          p__.print_array_range(p__.knobs.begin_elements, curr-1);
        end
        for(curr=curr; curr           if(((FLAG)&UVM_REFERENCE) == 0)
            p__.print_object(p__.index_string(curr), F[curr], "[");
          else
            p__.print_object_header(p__.index_string(curr), F[curr], "[");
        end
      end
    end

    p__.print_array_footer(max__);
  end while(0);

 `define uvm_print_object_queue ( F, FLAG )


uvm_print_object_queue3(F, uvm_default_printer,FLAG)

 `define uvm_print_object_queue3 ( F, P, FLAG )


do begin
    uvm_print_object_qda4(F,P, queue,FLAG);
  end while(0);

 `define uvm_print_qda_enum ( F, P, T, ET )


begin
    uvm_printer p__;
    uvm_printer_knobs k__;
    int curr, max__; max__=0; curr=0;
    if(P!=null) p__ = P;
    else p__ = uvm_default_printer;
    foreach(F[i]) max__ = i+1;
    p__.print_array_header (`"F`", max__,`"T``(``ET``)`");
    k__ = p__.knobs;
    if((p__.knobs.depth == -1) || (p__.m_scope.depth() < p__.knobs.depth+1))
    begin
      foreach(F[i__]) begin
        if(k__.begin_elements == -1 || k__.end_elements == -1 || curr < k__.begin_elements ) begin
          uvm_print_enum(ET, F[curr], p__.index_string(curr), p__)
        end
        else break;
        curr++;
      end
      if(curr         if((max__-k__.end_elements) > curr) curr = max__-k__.end_elements;
        if(curr         else begin
          p__.print_array_range(k__.begin_elements, curr-1);
        end
        for(curr=curr; curr           uvm_print_enum(ET, F[curr], p__.index_string(curr), p__)
        end
      end
    end
    p__.print_array_footer(max__);
  end

 `define uvm_print_qda_int4 ( F, R, P, T )


begin
    uvm_printer p__;
    uvm_printer_knobs k__;
    int curr, max__; max__=0; curr=0;
    if(P!=null) p__ = P;
    else p__ = uvm_default_printer;
    foreach(F[i]) max__ = i+1;
    p__.print_array_header (`"F`", max__,`"T``(integral)`");
    k__ = p__.knobs;
    if((p__.knobs.depth == -1) || (p__.m_scope.depth() < p__.knobs.depth+1))
    begin
      foreach(F[i__]) begin
        if(k__.begin_elements == -1 || k__.end_elements == -1 || curr < k__.begin_elements ) begin
          uvm_print_int4(F[curr], R, p__.index_string(curr), p__)
        end
        else break;
        curr++;
      end
      if(curr         if((max__-k__.end_elements) > curr) curr = max__-k__.end_elements;
        if(curr         else begin
          p__.print_array_range(k__.begin_elements, curr-1);
        end
        for(curr=curr; curr           uvm_print_int4(F[curr], R, p__.index_string(curr), p__)
        end
      end
    end
    p__.print_array_footer(max__);
  end

 `define uvm_print_qda_real3 ( F, P, T )


begin
    uvm_printer p__;
    uvm_printer_knobs k__;
    int curr, max__; max__=0; curr=0;
    if(P!=null) p__ = P;
    else p__ = uvm_default_printer;
    foreach(F[i__]) max__++;
    p__.print_array_header (`"F`", max__,`"T``(real)`");
    k__ = p__.knobs;
    if((p__.knobs.depth == -1) || (p__.m_scope.depth() < p__.knobs.depth+1))
    begin
      foreach(F[i__]) begin
        if(k__.begin_elements == -1 || k__.end_elements == -1 || curr < k__.begin_elements ) begin
          p__.print_real(p__.index_string(curr), F[curr], "[");
        end
        else break;
        curr++;
      end
      if(curr         if((max__-k__.end_elements) > curr) curr = max__-k__.end_elements;
        if(curr         else begin
          p__.print_array_range(k__.begin_elements, curr-1);
        end
        for(curr=curr; curr           p__.print_real(p__.index_string(curr), F[curr], "[");
        end
      end
    end
    p__.print_array_footer(max__);
  end

 `define uvm_print_queue_int ( F, R )


uvm_print_queue_int3(F, R, uvm_default_printer)

 `define uvm_print_queue_int3 ( F, R, P )


`uvm_print_qda_int3(F, R, P, queue)

 `define uvm_print_sarray_int3 ( F, R, P )


uvm_print_qda_int4(F, R, P, sa)

 `define uvm_print_sarray_object ( F, FLAG )


uvm_print_sarray_object3(F, uvm_default_printer,FLAG)

 `define uvm_print_sarray_object3 ( F, P, FLAG )


uvm_print_object_qda4(F, P, sa,FLAG)

 `define uvm_print_sarray_string2 ( F, P )

 `define uvm_print_string ( F )


uvm_print_string2(F, uvm_default_printer)

 `define uvm_print_string2 ( F, P )


do begin
     uvm_printer p__;
     if(P!=null) p__ = P;
     else p__ = uvm_default_printer;
     p__.print_string(`"F`", F, "[");
   end while(0);

 `define uvm_print_string_qda3 ( F, P, T )


do begin
    int curr, max__;
    uvm_printer p__;
    max__=0; curr=0;
    foreach(F[i]) max__ = i+1;
    if(P!=null) p__ = P;
    else p__ = uvm_default_printer;


    p__.m_scope.set_arg(`"F`");
    p__.print_array_header(`"F`", max__, `"T``(string)`");
    if((p__.knobs.depth == -1) || (p__.knobs.depth+1 > p__.m_scope.depth()))
    begin
      for(curr=0; curr         p__.print_string(p__.index_string(curr), F[curr], "[");
      end
      if(curr         curr = max__-p__.knobs.end_elements;
        if(curr         else begin
          p__.print_array_range(p__.knobs.begin_elements, curr-1);
        end
        for(curr=curr; curr           p__.print_string(p__.index_string(curr), F[curr], "[");
        end
      end
    end

    p__.print_array_footer(max__);
  end while(0);

 `define uvm_print_string_queue ( F )


uvm_print_string_queue2(F, uvm_default_printer)

 `define uvm_print_string_queue2 ( F, P )


do begin
    uvm_print_string_qda3(F,P, queue);
  end while(0);

 `define UVM_PRINTER_DEFINES_SVH

 `define UVM_PUT_IMP ( imp, TYPE, arg )


UVM_BLOCKING_PUT_IMP(imp, TYPE, arg)
  UVM_NONBLOCKING_PUT_IMP(imp, TYPE, arg)

 `define uvm_put_imp_decl ( SFX )


class uvm_put_imp``SFX #(type T=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
  UVM_IMP_COMMON(UVM_TLM_PUT_MASK,`"uvm_put_imp``SFX`",IMP)
  UVM_BLOCKING_PUT_IMP_SFX(SFX, m_imp, T, t)
  UVM_NONBLOCKING_PUT_IMP_SFX(SFX, m_imp, T, t)
endclass

 `define UVM_QUEUE_SVH

 `define uvm_rand_send ( SEQ_OR_ITEM )


uvm_rand_send_pri_with(SEQ_OR_ITEM, -1, {})

 `define uvm_rand_send_pri ( SEQ_OR_ITEM, PRIORITY )


uvm_rand_send_pri_with(SEQ_OR_ITEM, PRIORITY, {})

 `define uvm_rand_send_pri_with ( SEQ_OR_ITEM, PRIORITY, CONSTRAINTS )


begin
  uvm_sequence_base __seq;
  if (!$cast(__seq,SEQ_OR_ITEM)) start_item(SEQ_OR_ITEM, PRIORITY);
  else __seq.set_item_context(this,SEQ_OR_ITEM.get_sequencer());
  if ((__seq == null || !__seq.do_not_randomize) && !SEQ_OR_ITEM.randomize() with CONSTRAINTS ) begin
    uvm_warning("RNDFLD", "Randomization failed in uvm_rand_send_with action")
  end
  if (!$cast(__seq,SEQ_OR_ITEM)) finish_item(SEQ_OR_ITEM, PRIORITY);
  else __seq.start(__seq.get_sequencer(), this, PRIORITY, 0);
  end

 `define uvm_rand_send_with ( SEQ_OR_ITEM, CONSTRAINTS )


uvm_rand_send_pri_with(SEQ_OR_ITEM, -1, CONSTRAINTS)

 `define uvm_record_attribute ( TR_HANDLE, NAME, VALUE )


 

 `define uvm_record_field ( NAME, VALUE )


if (recorder != null && recorder.tr_handle != 0) begin
     if (recorder.get_type_name() != "uvm_recorder") begin
       uvm_record_attribute(recorder.tr_handle,NAME,VALUE)
     end
     else
       recorder.m_set_attribute(recorder.tr_handle,NAME,$sformatf("%p",VALUE));
   end

 `define uvm_record_int ( NAME, VALUE, SIZE, RADIX )


recorder.m_set_attribute(recorder.tr_handle,NAME,
     $sformatf({"%0",uvm_radix_to_string(RADIX)},VALUE));
 

 `define uvm_record_real ( NAME, VALUE )


begin
  bit[63:0] ival = $realtobits(VALUE);
  recorder.m_set_attribute(recorder.tr_handle,NAME,ival);
  end

 `define uvm_record_string ( NAME, VALUE )


recorder.m_set_attribute(recorder.tr_handle,NAME,VALUE);

 `define uvm_record_time ( NAME, VALUE )


recorder.m_set_attribute(recorder.tr_handle,NAME,
     $sformatf("%0u",VALUE&((1<<64)-1)));
 

 `define UVM_REG_ADDR_WIDTH

64

 `define UVM_REG_BYTENABLE_WIDTH

((UVM_REG_DATA_WIDTH-1)/8+1)

 `define UVM_REG_CVR_WIDTH

32

 `define UVM_REG_DATA_WIDTH

64

 `define UVM_REG_MODEL__SV

 `define uvm_register_cb ( T, CB )


static local bit m_register_cb_``CB = uvm_callbacks#(T,CB)::m_register_pair(`"T`",`"CB`");

 `define UVM_REGISTRY_SVH

 `define UVM_REPORT_CATCHER_SVH

 `define UVM_REPORT_CLIENT_SVH

 `define UVM_REPORT_HANDLER_SVH

 `define UVM_REPORT_SERVER_SVH

 `define UVM_RESOURCE_GET_FCNS ( base_type )


static function this_subtype get_by_name(string scope, string name, bit rpterr = 1);
    this_subtype t;
    uvm_resource_base b = uvm_resource#(base_type)::get_by_name(scope, name, rpterr);
    if(!$cast(t, b))
      uvm_fatal("BADCAST", "cannot cast resource to resource subtype");
    return t;
  endfunction
                                                                                       
  static function this_subtype get_by_type(string scope = "",
                                           uvm_resource_base type_handle);
    this_subtype t;
    uvm_resource_base b = uvm_resource#(base_type)::get_by_type(scope, type_handle);
    if(!$cast(t, b))
      uvm_fatal("BADCAST", "cannot cast resource to resource subtype");
    return t;
  endfunction

 `define uvm_send ( SEQ_OR_ITEM )


uvm_send_pri(SEQ_OR_ITEM, -1)

 `define uvm_send_pri ( SEQ_OR_ITEM, PRIORITY )


begin
  uvm_sequence_base __seq;
  if (!$cast(__seq,SEQ_OR_ITEM)) begin
     start_item(SEQ_OR_ITEM, PRIORITY);
     finish_item(SEQ_OR_ITEM, PRIORITY);
  end
  else __seq.start(__seq.get_sequencer(), this, PRIORITY, 0);
  end

 `define UVM_SEQ_ITEM_FUNCTION_ERROR

"Sequencer interface function not implemented"

 `define UVM_SEQ_ITEM_GET_MASK

(1<<7)

 `define UVM_SEQ_ITEM_GET_NEXT_ITEM_MASK

(1<<0)

 `define UVM_SEQ_ITEM_HAS_DO_AVAILABLE_MASK

(1<<3)

 `define UVM_SEQ_ITEM_ITEM_DONE_MASK

(1<<2)

 `define UVM_SEQ_ITEM_PEEK_MASK

(1<<8)

 `define UVM_SEQ_ITEM_PULL_IMP ( imp, REQ, RSP, req_arg, rsp_arg )


task get_next_item(output REQ req_arg); imp.get_next_item(req_arg); endtask
  task try_next_item(output REQ req_arg); imp.try_next_item(req_arg); endtask
  function void item_done(input RSP rsp_arg = null); imp.item_done(rsp_arg); endfunction
  task wait_for_sequences(); imp.wait_for_sequences(); endtask
  function bit has_do_available(); return imp.has_do_available(); endfunction
  function void put_response(input RSP rsp_arg); imp.put_response(rsp_arg); endfunction
  task get(output REQ req_arg); imp.get(req_arg); endtask
  task peek(output REQ req_arg); imp.peek(req_arg); endtask
  task put(input RSP rsp_arg); imp.put(rsp_arg); endtask

 `define UVM_SEQ_ITEM_PULL_MASK

(UVM_SEQ_ITEM_GET_NEXT_ITEM_MASK | UVM_SEQ_ITEM_TRY_NEXT_ITEM_MASK |
                        UVM_SEQ_ITEM_ITEM_DONE_MASK | UVM_SEQ_ITEM_HAS_DO_AVAILABLE_MASK |
                        UVM_SEQ_ITEM_WAIT_FOR_SEQUENCES_MASK | UVM_SEQ_ITEM_PUT_RESPONSE_MASK |
                        UVM_SEQ_ITEM_PUT_MASK | UVM_SEQ_ITEM_GET_MASK | UVM_SEQ_ITEM_PEEK_MASK)

 `define UVM_SEQ_ITEM_PUSH_MASK

 `define UVM_SEQ_ITEM_PUT_MASK

(1<<6)

 `define UVM_SEQ_ITEM_PUT_RESPONSE_MASK

(1<<5)

 `define UVM_SEQ_ITEM_TASK_ERROR

"Sequencer interface task not implemented"

 `define UVM_SEQ_ITEM_TRY_NEXT_ITEM_MASK

(1<<1)

 `define UVM_SEQ_ITEM_UNI_PULL_MASK

(UVM_SEQ_ITEM_GET_NEXT_ITEM_MASK | UVM_SEQ_ITEM_TRY_NEXT_ITEM_MASK |
                           UVM_SEQ_ITEM_ITEM_DONE_MASK | UVM_SEQ_ITEM_HAS_DO_AVAILABLE_MASK |
                           UVM_SEQ_ITEM_WAIT_FOR_SEQUENCES_MASK | UVM_SEQ_ITEM_GET_MASK |
                           UVM_SEQ_ITEM_PEEK_MASK)

 `define UVM_SEQ_ITEM_WAIT_FOR_SEQUENCES_MASK

(1<<4)

 `define UVM_SEQ_PORT ( MASK, TYPE_NAME )


function new (string name, uvm_component parent,
                int min_size=0, int max_size=1);
    super.new (name, parent, UVM_PORT, min_size, max_size);
    m_if_mask = MASK;
  endfunction
  UVM_TLM_GET_TYPE_NAME(TYPE_NAME)

 `define uvm_sequence_library_package ( PKG_NAME )


import PKG_NAME``::*;
  PKG_NAME``::uvm_bogus_class M_``PKG_NAME``uvm_bogus_class

 `define uvm_sequence_library_utils ( TYPE )



static protected uvm_object_wrapper m_typewide_sequences[$];
   
   function void init_sequence_library();
     foreach (TYPE::m_typewide_sequences[i])
       sequences.push_back(TYPE::m_typewide_sequences[i]);
   endfunction
   
   static function void add_typewide_sequence(uvm_object_wrapper seq_type);
     if (m_static_check(seq_type))
       TYPE::m_typewide_sequences.push_back(seq_type);
   endfunction
   
   static function void add_typewide_sequences(uvm_object_wrapper seq_types[$]);
     foreach (seq_types[i])
       TYPE::add_typewide_sequence(seq_types[i]);
   endfunction
   
   static function bit m_add_typewide_sequence(uvm_object_wrapper seq_type);
     TYPE::add_typewide_sequence(seq_type);
     return 1;
   endfunction

 `define uvm_sequence_utils ( TYPE_NAME, SEQUENCER )

 `define uvm_sequence_utils_begin ( TYPE_NAME, SEQUENCER )


m_uvm_register_sequence(TYPE_NAME, SEQUENCER)
  uvm_declare_p_sequencer(SEQUENCER)
  uvm_object_utils_begin(TYPE_NAME)

 `define uvm_sequence_utils_end

 `define uvm_sequencer_param_utils ( TYPE_NAME )

 `define uvm_sequencer_param_utils_begin ( TYPE_NAME )

 `define uvm_sequencer_utils ( TYPE_NAME )

 `define uvm_sequencer_utils_begin ( TYPE_NAME )

 `define uvm_sequencer_utils_end

 `define uvm_set_super_type ( T, ST )


static local bit m_register_``T``ST = uvm_derived_callbacks#(T,ST)::register_super_type(`"T`",`"ST`");

 `define uvm_slave_imp_decl ( SFX )


class uvm_slave_imp``SFX #(type REQ=int, type RSP=int, type IMP=int,
                           type REQ_IMP=IMP, type RSP_IMP=IMP)
  extends uvm_port_base #(uvm_tlm_if_base #(RSP, REQ));
  typedef IMP this_imp_type;
  typedef REQ_IMP this_req_type;
  typedef RSP_IMP this_rsp_type;
  UVM_MS_IMP_COMMON(UVM_TLM_SLAVE_MASK,`"uvm_slave_imp``SFX`")
  
  UVM_BLOCKING_PUT_IMP_SFX(SFX, m_rsp_imp, RSP, t) UVM_NONBLOCKING_PUT_IMP_SFX(SFX, m_rsp_imp, RSP, t)
  UVM_BLOCKING_GET_IMP_SFX(SFX, m_req_imp, REQ, t) UVM_BLOCKING_PEEK_IMP_SFX(SFX, m_req_imp, REQ, t) UVM_NONBLOCKING_GET_IMP_SFX(SFX, m_req_imp, REQ, t) UVM_NONBLOCKING_PEEK_IMP_SFX(SFX, m_req_imp, REQ, t)
endclass

 `define UVM_TASK_ERROR

"TLM interface task not implemented"

 `define UVM_TLM_ANALYSIS_MASK

(1<<8)

 `define UVM_TLM_B_MASK

(1<<2)

 `define UVM_TLM_B_TRANSPORT_IMP ( imp, T, t, delay )


task b_transport(T t, uvm_tlm_time delay);
    if (delay == null) begin
       uvm_error("UVM/TLM/NULLDELAY",
                  {get_full_name(),
                   ".b_transport() called with 'null' delay"})
       return;
    end
    imp.b_transport(t, delay);
  endtask

 `define UVM_TLM_BLOCKING_GET_MASK

(1<<1)

 `define UVM_TLM_BLOCKING_GET_PEEK_MASK

 `define UVM_TLM_BLOCKING_MASTER_MASK

 `define UVM_TLM_BLOCKING_PEEK_MASK

(1<<2)

 `define UVM_TLM_BLOCKING_PUT_MASK

(1<<0)

 `define UVM_TLM_BLOCKING_SLAVE_MASK

 `define UVM_TLM_BLOCKING_TRANSPORT_MASK

(1<<3)

 `define UVM_TLM_FIFO_FUNCTION_ERROR

"fifo channel function not implemented"

 `define UVM_TLM_FIFO_TASK_ERROR

"fifo channel task not implemented"

 `define UVM_TLM_FUNCTION_ERROR

"TLM-2 interface function not implemented"

 `define UVM_TLM_GET_MASK

 `define UVM_TLM_GET_PEEK_MASK

 `define UVM_TLM_GET_TYPE_NAME ( NAME )


virtual function string get_type_name();
    return NAME;
  endfunction

 `define UVM_TLM_IMPS_SVH

 `define UVM_TLM_MASTER_BIT_MASK

(1<<9)

 `define UVM_TLM_MASTER_MASK

 `define UVM_TLM_NB_BW_MASK

(1<<1)

 `define UVM_TLM_NB_FW_MASK

(1<<0)

 `define UVM_TLM_NB_TRANSPORT_BW_IMP ( imp, T, P, t, p, delay )


function uvm_tlm_sync_e nb_transport_bw(T t, ref P p, input uvm_tlm_time delay);
    if (delay == null) begin
       uvm_error("UVM/TLM/NULLDELAY",
                  {get_full_name(),
                   ".nb_transport_bw() called with 'null' delay"})
       return UVM_TLM_COMPLETED;
    end
    return imp.nb_transport_bw(t, p, delay);
  endfunction

 `define UVM_TLM_NB_TRANSPORT_FW_IMP ( imp, T, P, t, p, delay )


function uvm_tlm_sync_e nb_transport_fw(T t, ref P p, input uvm_tlm_time delay);
    if (delay == null) begin
       uvm_error("UVM/TLM/NULLDELAY",
                  {get_full_name(),
                   ".nb_transport_fw() called with 'null' delay"})
       return UVM_TLM_COMPLETED;
    end
    return imp.nb_transport_fw(t, p, delay);
  endfunction

 `define UVM_TLM_NONBLOCKING_GET_MASK

(1<<5)

 `define UVM_TLM_NONBLOCKING_GET_PEEK_MASK

 `define UVM_TLM_NONBLOCKING_MASTER_MASK

 `define UVM_TLM_NONBLOCKING_PEEK_MASK

(1<<6)

 `define UVM_TLM_NONBLOCKING_PUT_MASK

(1<<4)

 `define UVM_TLM_NONBLOCKING_SLAVE_MASK

 `define UVM_TLM_NONBLOCKING_TRANSPORT_MASK

(1<<7)

 `define UVM_TLM_PEEK_MASK

 `define UVM_TLM_PUT_MASK

 `define UVM_TLM_SLAVE_BIT_MASK

(1<<10)

 `define UVM_TLM_SLAVE_MASK

 `define UVM_TLM_TASK_ERROR

"TLM-2 interface task not implemented"

 `define UVM_TLM_TRANSPORT_MASK

 `define UVM_TRANSPORT_IMP ( imp, REQ, RSP, req_arg, rsp_arg )


UVM_BLOCKING_TRANSPORT_IMP(imp, REQ, RSP, req_arg, rsp_arg)
  UVM_NONBLOCKING_TRANSPORT_IMP(imp, REQ, RSP, req_arg, rsp_arg)

 `define uvm_transport_imp_decl ( SFX )


class uvm_transport_imp``SFX #(type REQ=int, type RSP=int, type IMP=int)
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
  UVM_IMP_COMMON(UVM_TLM_TRANSPORT_MASK,`"uvm_transport_imp``SFX`",IMP)
  UVM_BLOCKING_TRANSPORT_IMP_SFX(SFX, m_imp, REQ, RSP, req, rsp)
  UVM_NONBLOCKING_TRANSPORT_IMP_SFX(SFX, m_imp, REQ, RSP, req, rsp)
endclass

 `define uvm_typename ( X )

$typename(X)

 `define uvm_unpack_array ( VAR )


uvm_unpack_arrayN(VAR,$bits(VAR[0]))

 `define uvm_unpack_arrayN ( VAR, SIZE )


begin
    int sz__;
    if (packer.use_metadata)
      uvm_unpack_intN(sz__,32)
    VAR = new[sz__];
    uvm_unpack_sarrayN(VAR,SIZE)
    end

 `define uvm_unpack_enum ( VAR, TYPE )


uvm_unpack_enumN(VAR,$bits(VAR),TYPE)

 `define uvm_unpack_enumN ( VAR, SIZE, TYPE )


begin
   longint e__;
   uvm_unpack_intN(e__,SIZE)
   VAR = TYPE'(e__);
   end

 `define uvm_unpack_int ( VAR )


uvm_unpack_intN(VAR,$bits(VAR))

 `define uvm_unpack_intN ( VAR, SIZE )


begin
   if (packer.big_endian) begin
     int cnt__ = packer.count + SIZE;
     uvm_bitstream_t tmp__ = VAR;
     for (int i=0; i<SIZE; i++)
       tmp__[i] = packer.m_bits[cnt__ - i - 1];
     VAR = tmp__;
   end
   else begin
     VAR = packer.m_bits[packer.count +: SIZE];
   end
   packer.count += SIZE;
   end

 `define uvm_unpack_queue ( VAR )


uvm_unpack_queueN(VAR,$bits(VAR[0]))

 `define uvm_unpack_queueN ( VAR, SIZE )


begin
    int sz__;
    if (packer.use_metadata)
      uvm_unpack_intN(sz__,32)
    while (VAR.size() > sz__)
      void'(VAR.pop_back());
    for (int i=0; i       uvm_unpack_intN(VAR[i],SIZE)
    end

 `define uvm_unpack_real ( VAR )


begin
   longint unsigned real_bits64__;
   uvm_unpack_intN(real_bits64__,64)
   VAR = $bitstoreal(real_bits64__);
   end

 `define uvm_unpack_sarray ( VAR )


uvm_unpack_sarrayN(VAR,$bits(VAR[0]))

 `define uvm_unpack_sarrayN ( VAR, SIZE )


begin
    foreach (VAR `` [i])
      uvm_unpack_intN(VAR``[i], SIZE)
    end

 `define uvm_unpack_string ( VAR )


begin
    bit [7:0] chr__;
    VAR = "";
    do begin
      chr__ = packer.m_bits[packer.count+:8];
      packer.count += 8;
      if (chr__ != 0)
        VAR = {VAR, string'(chr__)};
    end while (chr__ != 0);
    end

 `define uvm_update_sequence_lib


m_add_builtin_seqs(0);
  uvm_update_sequence_lib();

 `define uvm_update_sequence_lib_and_item ( USER_ITEM )


factory.set_inst_override_by_type(
    uvm_sequence_item::get_type(), USER_ITEM::get_type(),
    {get_full_name(), "*.item"});
  m_add_builtin_seqs(1);
  uvm_update_sequence_lib();

 `define uvm_user_bottomup_phase ( PHASE, COMP, PREFIX )


m_uvm_bottomup_phase(PHASE,COMP,PREFIX)

 `define uvm_user_task_phase ( PHASE, COMP, PREFIX )


m_uvm_task_phase(PHASE,COMP,PREFIX)

 `define uvm_user_topdown_phase ( PHASE, COMP, PREFIX )


m_uvm_topdown_phase(PHASE,COMP,PREFIX)

 `define UVM_VERSION_1_1

 `define UVM_VERSION_DEFINES_SVH

 `define UVM_VERSION_STRING

 `define UVM_VERSION_SVH

 `define uvm_warning ( ID, MSG )


begin
     if (uvm_report_enabled(UVM_NONE,UVM_WARNING,ID))
       uvm_report_warning (ID, MSG, UVM_NONE, uvm_file, uvm_line);
   end

 `define uvm_warning_context ( ID, MSG, CNTXT )


begin
     if (CNTXT.uvm_report_enabled(UVM_NONE,UVM_WARNING,ID))
       CNTXT.uvm_report_warning (ID, MSG, UVM_NONE, uvm_file, uvm_line);
   end