VIP Smartsearch

X
  • VIP Smartsearch is a framework that supports search within VIP reference documents using query in natural language. It facilitates reordering of search results and keeps record of user’s decision for the ordering of result display and applies that in search of same query on subsequent usage.
  • How to download VIP smartsearch?

    1. Get VIP Smartsearch (Available as a seperate run file).
    2. Set environment variable
      DESIGNWARE_HOME
      to required designware home location where VIP Smartsearch should be downloaded.
    3. Run
      vip_smartsearch_<version>.run
      file.
      VIP Smartsearch will be downloaded to the location
      $DESIGNWARE_HOME/vip/svt/vip_smartsearch/<version>
  • How to install VIP Smartsearch?

    Please refer to the file
    VIP_Smartsearch_installation_and_usage_guide.pdf
    in
    $DESIGNWARE_HOME/vip/svt/vip_smartsearch/<version>
    for installation steps.
  • Customer Support

    For more details about VIP smartsearch tool, contact support_center@synopsys.com.
    Mention your queries along with below details and send email to above email id.
    Product: Verification IP
    Sub Product: <vip_title>
    Tool: VIP Smartsearch

svt_axi_transaction Class Reference

Inheritance diagram for class svt_axi_transaction:

List of all members.


Detailed Description

This is the base transaction type which contains all the physical attributes of the transaction like address, data, burst type, burst length, etc. It also provides the timing information of the transaction to the master & slave transactors, that is, delays for valid and ready signals with respect to some reference events.

The svt_axi_transaction also contains a handle to configuration object of type svt_axi_port_configuration , which provides the configuration of the port on which this transaction would be applied. The port configuration is used during randomizing the transaction.



Class Member Groupings

Miscellaneous attributes  This group contains miscellaneous attributes which do not fall under any of the categories above.
Attributes related to the n-way associative cache.  This group contains attributes specific to the n-way associative cache feature.
AXI5 Stream twakeup attributes  This group contains attributes which can be used for twakeup signal feature support in AXI5 Stream.
AXI5 Stream parity attributes  This group contains attributes which can be used for parity feature support in AXI5 Stream.
AXI4 Stream delay attributes  This group contains attributes which can be used to control delays in AXI4 Stream signals.
AXI4 Stream protocol attributes  This group contains attributes which represent AXI4 Stream protocol transaction fields.
ACE5LITE+DVM protocol attributes  This group contains attributes which are relevant to ACE5LITE+DVM protocol.
ACE5LITE protocol attributes  This group contains attributes which are relevant to ACE5LITE protocol.
AXI5 protocol attributes  This group contains attributes which are relevant to AXI5 protocol.
ACE5 protocol attributes  This group contains attributes which are relevant to ACE5 protocol.
ACE L3 Cache related attributes  This group contains attributes which are relevant to L3 Cache usage under ACE protocol. This is applicable only when l3_cache_enable is set to '1' in system_configuration.
ACE transaction status attributes  This group contains attributes which report the status of ACE transaction. Please also refer to group
ACE delay attributes  This group contains members which can be used to control delays in ACE signals. Please also refer to group
ACE protocol attributes  This group contains attributes which are relevant to ACE protocol. Please also refer to group
Interleaved transaction attributes  This group contains attributes used to generate interleaved transactions. These attributes are relevant to AXI3, AXI4, ACE and ACE5_LITE protocols.
Out Of Order transaction attributes  This group contains attributes used to generate out of order transactions. These attributes are relevant to AXI3, AXI4 and ACE protocols.
Timing and cycle information  This group contains attributes which report the Timing and cycle information for Valid and Ready signals. These attributes are relevant to AXI3, AXI4 and ACE protocols.
AXI3 and AXI4 transaction status attributes  This group contains attributes which report the status of AXI3 and AXI4 transaction.
AXI3 and AXI4 delay attributes  This group contains attributes which can be used to control delays in AXI3 and AXI4 signals.
AXI4 protocol attributes  This group contains attributes specific to AXI4 protocol. Please also refer to group
AXI3 protocol attributes  This group contains attributes which are relevant to AXI3 protocol.

Public Member Functions

function svt_pattern  allocate_xml_pattern ( )
function void  clear_pa_data ( )
function bit  decode_prop_val ( string prop_name, bit [1023:0] prop_val, ref string prop_val_string, input svt_pattern_data :: type_enum typ )
function svt_pattern  do_allocate_pattern ( )
function bit  do_compare ( ovm_object rhs, ovm_comparer comparer )
function void  do_copy ( ovm_object rhs )
function bit  do_is_valid ( bit silent = 1, int kind = RELEVANT )
function bit  encode_prop_val ( string prop_name, string prop_val_string, ref bit [1023:0] prop_val, input svt_pattern_data :: type_enum typ )
function int  get_associative_cache_set_index ( )
function bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  get_associative_cache_tag ( )
function void  get_beat_addr_and_lane ( input int beat_num, output [SVT_AXI_MAX_ADDR_WIDTH-1:0] beat_addr, output int lower_byte_lane, output int upper_byte_lane, input bit use_tagged_addr )
function void  get_beat_addr_and_lane_for_data_user ( input int beat_num, output [SVT_AXI_MAX_ADDR_WIDTH-1:0] beat_addr, output int lower_byte_lane, output int upper_byte_lane, input bit use_tagged_addr )
function int  get_beat_num_of_addr ( bit [SVT_AXI_MAX_ADDR_WIDTH-1:0] beat_addr, bit use_tagged_addr = 0 )
function bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  get_burst_boundary ( )
function int  get_burst_length ( int ignore_exceptions = 0 )
function burst_size_enum  get_burst_size ( int ignore_exceptions = 0 )
function burst_type_enum  get_burst_type ( int ignore_exceptions = 0 )
function int  get_byte_count ( int beat_num = -1 )
function void  get_byte_lanes_for_data_width ( bit [SVT_AXI_MAX_ADDR_WIDTH-1:0] beat_addr, int beat_num, int data_width_in_bytes, output int lower_byte_lane, output int upper_byte_lane )
function int  get_curr_byte_lane ( int log_base_2_data_width_in_bytes = -1, int beat_num = -1 )
function coherent_xact_type_enum  get_decoded_read_snoop_val ( bit [SVT_AXI_ACE_RSNOOP_WIDTH-1:0] snoop_val )
function coherent_xact_type_enum  get_decoded_write_snoop_val ( bit [SVT_AXI_ACE_WSNOOP_WIDTH-1:0] snoop_val )
function bit [SVT_AXI_ACE_RSNOOP_WIDTH-1:0]  get_encoded_arsnoop_val ( )
function bit [SVT_AXI_ACE_WSNOOP_WIDTH-1:0]  get_encoded_awsnoop_val ( )
function bit [SVT_AXI_ACE_ADDR_CHAN_MAX_SNOOP_WIDTH-1:0]  get_encoded_snoop_val ( )
function bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  get_max_byte_address ( bit convert_to_global_addr = 0, bit use_tagged_addr = 0, bit convert_to_slave_addr = 0, string requester_name = "" )
function string  get_mcd_class_name ( )
function bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  get_min_byte_address ( bit convert_to_global_addr = 0, bit use_tagged_addr = 0, bit convert_to_slave_addr = 0, string requester_name = "" )
function svt_pa_object_data  get_pa_obj_data ( string uid = "", string typ = "", string parent_uid = "", string channel = "" )
function void  get_poison_for_wysiwyg_format ( ref bit [SVT_AXI_MAX_DATA_WIDTH/64-1:0] poison[] )
function bit  get_prop_val ( string prop_name, ref bit [1023:0] prop_val, input int array_ix, ref svt_sequence_item_base data_obj )
function xact_type_enum  get_transmitted_channel ( )
function string  get_uid ( )
function bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  get_wrap_boundary ( )
function int  get_wrap_boundary_idx ( )
function void  get_wstrb_for_wysiwyg_format ( ref bit [SVT_AXI_MAX_DATA_WIDTH/8-1:0] wstrb[] )
function bit  has_axi_exception ( int error_kind )
function bit  is_aborted ( int mode = 0 )
function bit  is_addr_4kb_boundary_cross ( )
function bit  is_address_overlap ( bit [SVT_AXI_MAX_ADDR_WIDTH-1:0] min_addr, bit [SVT_AXI_MAX_ADDR_WIDTH-1:0] max_addr, bit convert_to_global_addr = 0, bit use_tagged_addr = 0, bit convert_to_slave_addr = 0, string requester_name = "" )
function bit  is_allocate_xact ( )
function bit  is_appplicable_for_fifo_rate_control ( )
function bit  is_cacheable_xact ( )
function bit  is_cmo_read_xact ( )
function bit  is_cmo_xact ( )
function bit  is_coherent_dvm_sync ( )
function bit  is_device_type ( )
function bit  is_dvm_xact ( )
function bit  is_full_cacheline ( int cacheline_size )
function bit  is_pcmo_on_write_xact ( )
function bit  is_secure ( bit allow_secure = 1 )
function bit  is_slave_xact_supported_in_chi_sys_mon ( )
function bit  is_transaction_aborted_or_dropped ( )
function bit  is_transaction_ended ( )
function void  mask_data_for_unaligned_addr ( bit data_only = 0, int beat_num = -1 )
function logic [SVT_AXI_MAX_DATA_WIDTH-1:0]  mask_data_for_x_z_values ( logic [SVT_AXI_MAX_DATA_WIDTH-1:0] data, bit [SVT_AXI_MAX_DATA_WIDTH-1:0] data_mask )
function void  new ( string name = "svt_axi_transaction", svt_axi_port_configuration port_cfg_handle = null )
function void  pack_data_to_byte_stream ( input bit [SVT_AXI_MAX_DATA_WIDTH-1:0] data_to_pack[], output bit [7:0] packed_data[], input ovm_report_object reporter )
function void  pack_data_user_to_byte_stream ( input bit [SVT_AXI_MAX_DATA_USER_WIDTH-1:0] data_to_pack[], output bit [7:0] packed_data[] )
function void  pack_poison_to_byte_stream ( input bit [SVT_AXI_MAX_DATA_WIDTH/64-1:0] poison_to_pack[], output bit packed_poison[] )
function void  pack_wstrb_to_byte_stream ( input bit [SVT_AXI_MAX_DATA_WIDTH/8-1:0] wstrb_to_pack[], output bit packed_wstrb[] )
function svt_pattern  populate_filtered_xml_pattern ( )
function svt_pattern  populate_full_xml_pattern ( )
function void  populate_partial_data_and_byteen ( input bit [7:0] data[], input bit byteen[], output bit [7:0] cache_data[], output bit cache_byteen[] )
function svt_pattern  populate_perf_analysis_xml_pattern ( )
function svt_pattern  populate_stream_xml_pattern ( )
function void  post_randomize ( )
function void  pre_randomize ( )
function string  psdisplay_short ( string prefix = "", bit hdr_only = 0 )
function int  reasonable_constraint_mode ( bit on_off )
function void  resume_xact ( )
function void  set_cfg ( svt_axi_port_configuration cfg )
function void  set_end_of_transaction ( bit aborted = 0 )
function void  set_pa_data ( string typ = "", string channel = "" )
function bit  set_prop_val ( string prop_name, bit [1023:0] prop_val, int array_ix )
function void  suspend_xact ( )
function void  svt_post_do_all_do_copy ( ovm_sequence_item to )
function void  unpack_byte_stream_to_data ( input bit [7:0] data_to_unpack[], output bit [SVT_AXI_MAX_DATA_WIDTH-1:0] unpacked_data[] )
function void  unpack_byte_stream_to_data_user ( input bit [7:0] data_to_unpack[], output bit [SVT_AXI_MAX_DATA_USER_WIDTH-1:0] unpacked_data[] )
function void  unpack_byte_stream_to_poison ( input bit poison_to_unpack[], output bit [SVT_AXI_MAX_DATA_WIDTH/64-1:0] unpacked_poison[] )
function void  unpack_byte_stream_to_wstrb ( input bit wstrb_to_unpack[], output bit [SVT_AXI_MAX_DATA_WIDTH/8-1:0] unpacked_wstrb[] )
task   wait_for_addr_phase_ended ( )
task   wait_for_data_phase_ended ( )
task   wait_for_transaction_end ( )
task   wait_for_write_resp_phase_ended ( )
task   wait_for_write_transaction_to_update_memory ( )

Public Attributes

svt_sequence_item :: status_enum  ack_status 
rand bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  addr = 0; 
int  addr_ready_assertion_cycle 
realtime  addr_ready_assertion_time 
rand int  addr_ready_delay = 0; 
svt_sequence_item :: status_enum  addr_status 
rand bit [SVT_AXI_MAX_ADDR_USER_WIDTH-1:0]  addr_user = 0; 
int  addr_valid_assertion_cycle 
realtime  addr_valid_assertion_time 
rand int  addr_valid_delay = 0; 
int  addr_wakeup_assertion_cycle 
real  addr_wakeup_assertion_time 
rand bit  allocate_in_cache 
rand bit [SVT_AXI_MAX_VMIDEXT_WIDTH-1:0]  arvmid = 0; 
rand bit  assert_awakeup_after_valid = 0; 
svt_axi_barrier_pair_transaction  associated_barrier_xact 
rand bit  associate_barrier = 0; 
int  associative_cache_set_index = -1; 
bit [(SVT_AXI_MAX_ADDR_WIDTH-1):0]  associative_cache_tag = 0; 
int  associative_cache_way_number = -1; 
rand svt_axi_transaction :: atomic_type_enum  atomic_type 
rand int  awakeup_assert_delay = 0; 
rand int  awakeup_deassert_delay = 0; 
rand svt_axi_transaction :: barrier_type_enum  barrier_type 
rand int  bready_delay = 0; 
rand svt_axi_transaction :: resp_type_enum  bresp 
rand bit [SVT_AXI_MAX_BURST_LENGTH_WIDTH:0]  burst_length = 1; 
rand svt_axi_transaction :: burst_size_enum  burst_size 
rand svt_axi_transaction :: burst_type_enum  burst_type 
string  bus_activity_type_name 
string  bus_parent_uid = ""; 
rand int  bvalid_delay = 0; 
rand bit  bypass_cache_lookup = 1'b0; 
bit  bypass_cache_update = 0; 
rand bit [SVT_AXI_CACHE_WIDTH-1:0]  cache_type = 0; 
rand bit [SVT_AXI_MAX_DATA_WIDTH-1:0]  cache_write_data [] 
rand bit  check_addr_overlap = 1'b0; 
rand svt_axi_transaction :: coherent_xact_type_enum  coherent_xact_type 
rand svt_axi_transaction :: coherent_resp_type_enum  coh_rresp[] 
int  current_data_beat_num = 0; 
rand bit [31:0]   cust_xact_flow = 0; 
rand bit [SVT_AXI_MAX_DATA_WIDTH-1:0]  data [] 
rand bit  data_before_addr = 0; 
svt_sequence_item :: status_enum  data_status 
rand bit [SVT_AXI_MAX_DATA_USER_WIDTH-1:0]  data_user [] 
rand bit [(SVT_AXI_MAX_DATA_WIDTH/8)-1:0]  datachk_parity_value [] 
real  data_chan_blocking_ratio 
int  data_ready_assertion_cycle [] 
realtime  data_ready_assertion_time [] 
rand bit  data_trace_tag = 0; 
int  data_valid_assertion_cycle [] 
realtime  data_valid_assertion_time [] 
rand svt_axi_transaction :: xact_shareability_domain_enum  domain_type 
rand int  dvm_complete_delay = 0; 
bit [SVT_AXI_DYNAMIC_SOURCE_MASTER_ID_XMIT_TO_SLAVES_WIDTH-1:0]  dynamic_source_master_id_xmit_to_slaves = 0; 
rand bit  enable_interleave = 0; 
svt_axi_transaction :: excl_access_status_enum  excl_access_status 
svt_axi_transaction :: excl_mon_status_enum  excl_mon_status 
bit [7:0]   final_cache_line_data [] 
svt_axi_transaction :: cache_line_state_enum  final_cache_line_state 
rand bit  force_to_invalid_state = 0; 
rand bit  force_to_shared_state = 0; 
rand bit  force_xact_to_cache_line_size = 0; 
rand bit [SVT_AXI_MAX_ID_WIDTH-1:0]  id = 0; 
rand int  idle_addr_ready_delay [] 
rand int  idle_bready_delay [] 
real  idle_chan_wakeup_toggle_assertion_time 
real  idle_chan_wakeup_toggle_deassertion_time 
rand int  idle_rready_delay [] 
rand bit [SVT_AXI_MAX_TVALID_DELAY-1:0]  idle_tlast_value [] 
rand int  idle_wready_delay [] 
bit [7:0]   initial_cache_line_data [] 
svt_axi_transaction :: cache_line_state_enum  initial_cache_line_state 
rand svt_axi_transaction :: interleave_pattern_enum  interleave_pattern 
bit  is_auto_generated = 0; 
bit  is_cached_data = 0; 
bit  is_coherent_xact_dropped = 0; 
rand bit  is_datachk_parity_error = 0; 
rand bit [(SVT_AXI_MAX_DATA_WIDTH/8)-1:0]  is_datachk_passed [] 
bit  is_delayed_response_xact = 0; 
bit  is_last_read_data_beat = 0; 
bit  is_last_write_data_beat = 0; 
bit  is_speculative_read = 0; 
rand bit  is_unique = 0; 
bit  is_xact_for_snoop_data_transfer = 0; 
int  LONG_BURST_wt = 400; 
int  LONG_DELAY_wt = 1; 
rand bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  max_byte_addr = 0; 
bit  memory_update_complete_for_write = 0; 
rand bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  min_byte_addr = 0; 
int  object_id = -1; 
string  pa_channel_name = ""; 
string  pa_object_type = ""; 
bit  partial_master_write_split_into_read_modified_write_slave_xact = 0; 
svt_axi_transaction :: phase_type_enum  phase_type 
bit [SVT_AXI_MAX_DATA_WIDTH-1:0]  physical_data [] 
bit [SVT_AXI_MAX_DATA_USER_WIDTH-1:0]  physical_data_user [] 
bit [SVT_AXI_WSTRB_WIDTH-1:0]  physical_wstrb [] 
rand bit [SVT_AXI_MAX_DATA_WIDTH/64-1:0]  poison [] 
svt_axi_port_configuration  port_cfg 
int  port_id 
svt_axi_transaction :: cache_line_state_enum  prefinal_cache_line_state 
rand svt_axi_transaction :: prot_type_enum  prot_type 
rand bit [SVT_AXI_QOS_WIDTH-1:0]  qos = 0; 
rand int  rack_delay = 0; 
rand int  random_interleave_array [] 
rand svt_axi_transaction :: reference_event_for_addr_ready_delay_enum  reference_event_for_addr_ready_delay 
rand svt_axi_transaction :: reference_event_for_addr_valid_delay_enum  reference_event_for_addr_valid_delay 
rand svt_axi_transaction :: reference_event_for_bready_delay_enum  reference_event_for_bready_delay 
rand svt_axi_transaction :: reference_event_for_bvalid_delay_enum  reference_event_for_bvalid_delay 
rand svt_axi_transaction :: reference_event_for_first_rvalid_delay_enum  reference_event_for_first_rvalid_delay 
rand svt_axi_transaction :: reference_event_for_first_wvalid_delay_enum  reference_event_for_first_wvalid_delay 
rand svt_axi_transaction :: reference_event_for_next_rvalid_delay_enum  reference_event_for_next_rvalid_delay 
rand svt_axi_transaction :: reference_event_for_next_wvalid_delay_enum  reference_event_for_next_wvalid_delay 
rand svt_axi_transaction :: reference_event_for_rack_delay_enum  reference_event_for_rack_delay 
rand svt_axi_transaction :: reference_event_for_rready_delay_enum  reference_event_for_rready_delay 
rand svt_axi_transaction :: reference_event_for_tvalid_delay_enum  reference_event_for_tvalid_delay 
rand svt_axi_transaction :: reference_event_for_wack_delay_enum  reference_event_for_wack_delay 
rand svt_axi_transaction :: reference_event_for_wready_delay_enum  reference_event_for_wready_delay 
rand bit [SVT_AXI_REGION_WIDTH-1:0]  region = 0; 
rand int  reordering_priority = 1; 
rand bit  resp_trace_tag = 0; 
rand bit [SVT_AXI_MAX_BRESP_USER_WIDTH-1:0]  resp_user = 0; 
rand int  rready_delay [] 
rand svt_axi_transaction :: resp_type_enum  rresp[] 
rand int  rvalid_delay [] 
int  SHORT_BURST_wt = 500; 
int  SHORT_DELAY_wt = 500; 
rand int  stream_burst_length = 1; 
bit  suspend_arready = 0; 
bit  suspend_awready = 0; 
bit  suspend_awvalid_to_data_before_addr = 0; 
bit  suspend_data_per_write_beat [] 
bit  suspend_response = 0; 
bit  suspend_response_per_read_beat [] 
bit  suspend_wready = 0; 
bit  suspend_write_addr 
rand bit [SVT_AXI_MAX_TDATA_WIDTH-1:0]  tdata [] 
rand bit [SVT_AXI_MAX_TDEST_WIDTH-1:0]  tdest 
bit [3:0]   tdestchk_parity 
rand bit [SVT_AXI_MAX_TID_WIDTH-1:0]  tid = 0; 
bit [0:0]   tidchk_parity 
rand bit [SVT_AXI_TKEEP_WIDTH-1:0]  tkeep [] 
bit [1:0]   tkeepchk_parity 
rand int  total_byte_count = 0; 
rand bit  trace_tag = 0; 
rand int  tready_delay [] 
rand bit [SVT_AXI_TSTRB_WIDTH-1:0]  tstrb [] 
bit [1:0]   tstrbchk_parity 
rand bit [SVT_AXI_MAX_TUSER_WIDTH-1:0]  tuser [] 
bit [0:0]   tuserchk_parity 
rand int  tvalid_delay [] 
rand int  wack_delay = 0; 
rand int  wready_delay [] 
int  write_resp_ready_assertion_cycle 
realtime  write_resp_ready_assertion_time 
svt_sequence_item :: status_enum  write_resp_status 
int  write_resp_valid_assertion_cycle 
realtime  write_resp_valid_assertion_time 
rand bit [SVT_AXI_WSTRB_WIDTH-1:0]  wstrb [] 
rand int  wvalid_delay [] 
realtime  xact_consumed_by_driver_time 
real  xact_consumed_time_to_begin_time_delay 
rand svt_axi_transaction :: xact_type_enum  xact_type 
int  ZERO_BURST_wt = 100; 
int  ZERO_DELAY_wt = 100; 

Member Typedefs

 typedef enum  atomic_type_enum 
 typedef enum  barrier_type_enum 
 typedef enum  burst_size_enum 
 typedef enum  burst_type_enum 
 typedef enum  cache_line_state_enum 
 typedef enum  coherent_resp_type_enum 
 typedef enum  coherent_xact_type_enum 
 typedef enum  dvm_message_enum 
 typedef enum  dvm_os_enum 
 typedef enum  dvm_security_enum 
 typedef enum  excl_access_status_enum 
 typedef enum  excl_mon_status_enum 
 typedef enum  interleave_pattern_enum 
 typedef enum  phase_type_enum 
 typedef enum  prot_type_enum 
 typedef enum  reference_event_for_addr_ready_delay_enum 
 typedef enum  reference_event_for_addr_valid_delay_enum 
 typedef enum  reference_event_for_bready_delay_enum 
 typedef enum  reference_event_for_bvalid_delay_enum 
 typedef enum  reference_event_for_first_rvalid_delay_enum 
 typedef enum  reference_event_for_first_wvalid_delay_enum 
 typedef enum  reference_event_for_next_rvalid_delay_enum 
 typedef enum  reference_event_for_next_wvalid_delay_enum 
 typedef enum  reference_event_for_rack_delay_enum 
 typedef enum  reference_event_for_rready_delay_enum 
 typedef enum  reference_event_for_tvalid_delay_enum 
 typedef enum  reference_event_for_wack_delay_enum 
 typedef enum  reference_event_for_wready_delay_enum 
 typedef enum  resp_type_enum 
 typedef enum  stream_xact_type_enum 
 typedef enum  xact_shareability_domain_enum 
 typedef enum  xact_type_enum 

Constraints

constraint  ace_valid_ranges  ( )
constraint  axi3_4_valid_ranges  ( )
constraint  axi4_stream_valid_ranges  ( )
constraint  disable_constraint_first_wvalid_reference_event  ( )
constraint  reasonable_cust_xact_flow  ( )
constraint  reasonable_no_interleaving  ( )
constraint  reasonable_reference_event_for_addr_delay  ( )
constraint  reasonable_reference_event_for_addr_ready_delay  ( )
constraint  wdata_optimistic_flow_valid_ranges  ( )

Class Member Groupings



Group: Miscellaneous attributes

This group contains miscellaneous attributes which do not fall under any of the categories above.

rand bit [31:0]   cust_xact_flow = 0; 
bit [SVT_AXI_DYNAMIC_SOURCE_MASTER_ID_XMIT_TO_SLAVES_WIDTH-1:0]  dynamic_source_master_id_xmit_to_slaves = 0; 
int  object_id = -1; 
string  pa_object_type = ""; 
bit  partial_master_write_split_into_read_modified_write_slave_xact = 0; 
svt_axi_port_configuration  port_cfg 


Group: Attributes related to the n-way associative cache.

This group contains attributes specific to the n-way associative cache feature.

int  associative_cache_set_index = -1; 
bit [(SVT_AXI_MAX_ADDR_WIDTH-1):0]  associative_cache_tag = 0; 
int  associative_cache_way_number = -1; 


Group: AXI5 Stream twakeup attributes

This group contains attributes which can be used for twakeup signal feature support in AXI5 Stream.



Group: AXI5 Stream parity attributes

This group contains attributes which can be used for parity feature support in AXI5 Stream.



Group: AXI4 Stream delay attributes

This group contains attributes which can be used to control delays in AXI4 Stream signals.

rand svt_axi_transaction :: reference_event_for_tvalid_delay_enum  reference_event_for_tvalid_delay 
rand int  tready_delay [] 
rand int  tvalid_delay [] 


Group: AXI4 Stream protocol attributes

This group contains attributes which represent AXI4 Stream protocol transaction fields.

rand bit [SVT_AXI_MAX_TVALID_DELAY-1:0]  idle_tlast_value [] 
rand int  stream_burst_length = 1; 
rand bit [SVT_AXI_MAX_TDATA_WIDTH-1:0]  tdata [] 
rand bit [SVT_AXI_MAX_TDEST_WIDTH-1:0]  tdest 
rand bit [SVT_AXI_MAX_TID_WIDTH-1:0]  tid = 0; 
rand bit [SVT_AXI_TKEEP_WIDTH-1:0]  tkeep [] 
rand bit [SVT_AXI_TSTRB_WIDTH-1:0]  tstrb [] 
rand bit [SVT_AXI_MAX_TUSER_WIDTH-1:0]  tuser [] 


Group: ACE5LITE+DVM protocol attributes

This group contains attributes which are relevant to ACE5LITE+DVM protocol.



Group: ACE5LITE protocol attributes

This group contains attributes which are relevant to ACE5LITE protocol.



Group: AXI5 protocol attributes

This group contains attributes which are relevant to AXI5 protocol.



Group: ACE5 protocol attributes

This group contains attributes which are relevant to ACE5 protocol.

rand bit [(SVT_AXI_MAX_DATA_WIDTH/8)-1:0]  datachk_parity_value [] 
rand bit  data_trace_tag = 0; 
rand bit  is_datachk_parity_error = 0; 
rand bit [(SVT_AXI_MAX_DATA_WIDTH/8)-1:0]  is_datachk_passed [] 
rand bit [SVT_AXI_MAX_DATA_WIDTH/64-1:0]  poison [] 
rand bit  resp_trace_tag = 0; 
rand bit  trace_tag = 0; 


Group: ACE L3 Cache related attributes

This group contains attributes which are relevant to L3 Cache usage under ACE protocol. This is applicable only when l3_cache_enable is set to '1' in system_configuration.



Group: ACE transaction status attributes

This group contains attributes which report the status of ACE transaction. Please also refer to group AXI3 and AXI4 transaction status attributes for AXI3 and AXI4 transaction status attributes.

svt_sequence_item :: status_enum  ack_status 
svt_axi_transaction :: excl_access_status_enum  excl_access_status 
svt_axi_transaction :: excl_mon_status_enum  excl_mon_status 
bit [7:0]   final_cache_line_data [] 
svt_axi_transaction :: cache_line_state_enum  final_cache_line_state 
svt_axi_transaction :: cache_line_state_enum  initial_cache_line_state 
svt_axi_transaction :: cache_line_state_enum  prefinal_cache_line_state 


Group: ACE delay attributes

This group contains members which can be used to control delays in ACE signals. Please also refer to group AXI3 and AXI4 delay attributes for AXI3 and AXI4 delay attributes.

rand int  dvm_complete_delay = 0; 
rand int  rack_delay = 0; 
rand svt_axi_transaction :: reference_event_for_rack_delay_enum  reference_event_for_rack_delay 
rand svt_axi_transaction :: reference_event_for_wack_delay_enum  reference_event_for_wack_delay 
rand int  wack_delay = 0; 


Group: ACE protocol attributes

This group contains attributes which are relevant to ACE protocol. Please also refer to group AXI3 protocol attributes for AXI3 protocol attributes.

rand bit  allocate_in_cache 
rand bit [SVT_AXI_MAX_VMIDEXT_WIDTH-1:0]  arvmid = 0; 
svt_axi_barrier_pair_transaction  associated_barrier_xact 
rand bit  associate_barrier = 0; 
rand svt_axi_transaction :: barrier_type_enum  barrier_type 
rand bit  bypass_cache_lookup = 1'b0; 
bit  bypass_cache_update = 0; 
rand bit [SVT_AXI_MAX_DATA_WIDTH-1:0]  cache_write_data [] 
rand svt_axi_transaction :: coherent_xact_type_enum  coherent_xact_type 
rand svt_axi_transaction :: coherent_resp_type_enum  coh_rresp[] 
rand svt_axi_transaction :: xact_shareability_domain_enum  domain_type 
rand bit  force_to_invalid_state = 0; 
rand bit  force_to_shared_state = 0; 
rand bit  force_xact_to_cache_line_size = 0; 
bit  is_auto_generated = 0; 
bit  is_cached_data = 0; 
bit  is_coherent_xact_dropped = 0; 
bit  is_speculative_read = 0; 
rand bit  is_unique = 0; 
bit  is_xact_for_snoop_data_transfer = 0; 


Group: Interleaved transaction attributes

This group contains attributes used to generate interleaved transactions. These attributes are relevant to AXI3, AXI4, ACE and ACE5_LITE protocols.

rand bit  enable_interleave = 0; 
rand svt_axi_transaction :: interleave_pattern_enum  interleave_pattern 
rand int  random_interleave_array [] 


Group: Out Of Order transaction attributes

This group contains attributes used to generate out of order transactions. These attributes are relevant to AXI3, AXI4 and ACE protocols.

rand bit  enable_interleave = 0; 
rand int  reordering_priority = 1; 


Group: Timing and cycle information

This group contains attributes which report the Timing and cycle information for Valid and Ready signals. These attributes are relevant to AXI3, AXI4 and ACE protocols.

int  addr_ready_assertion_cycle 
realtime  addr_ready_assertion_time 
int  addr_valid_assertion_cycle 
realtime  addr_valid_assertion_time 
int  addr_wakeup_assertion_cycle 
real  addr_wakeup_assertion_time 
real  data_chan_blocking_ratio 
int  data_ready_assertion_cycle [] 
realtime  data_ready_assertion_time [] 
int  data_valid_assertion_cycle [] 
realtime  data_valid_assertion_time [] 
real  idle_chan_wakeup_toggle_assertion_time 
real  idle_chan_wakeup_toggle_deassertion_time 
int  write_resp_ready_assertion_cycle 
realtime  write_resp_ready_assertion_time 
int  write_resp_valid_assertion_cycle 
realtime  write_resp_valid_assertion_time 
realtime  xact_consumed_by_driver_time 
real  xact_consumed_time_to_begin_time_delay 


Group: AXI3 and AXI4 transaction status attributes

This group contains attributes which report the status of AXI3 and AXI4 transaction.

svt_sequence_item :: status_enum  addr_status 
int  current_data_beat_num = 0; 
svt_sequence_item :: status_enum  data_status 
svt_sequence_item :: status_enum  write_resp_status 


Group: AXI3 and AXI4 delay attributes

This group contains attributes which can be used to control delays in AXI3 and AXI4 signals.

rand int  addr_ready_delay = 0; 
rand int  addr_valid_delay = 0; 
rand int  awakeup_assert_delay = 0; 
rand int  awakeup_deassert_delay = 0; 
rand int  bready_delay = 0; 
rand int  bvalid_delay = 0; 
rand int  idle_addr_ready_delay [] 
rand int  idle_bready_delay [] 
rand int  idle_rready_delay [] 
rand int  idle_wready_delay [] 
int  LONG_DELAY_wt = 1; 
rand svt_axi_transaction :: reference_event_for_addr_ready_delay_enum  reference_event_for_addr_ready_delay 
rand svt_axi_transaction :: reference_event_for_addr_valid_delay_enum  reference_event_for_addr_valid_delay 
rand svt_axi_transaction :: reference_event_for_bready_delay_enum  reference_event_for_bready_delay 
rand svt_axi_transaction :: reference_event_for_bvalid_delay_enum  reference_event_for_bvalid_delay 
rand svt_axi_transaction :: reference_event_for_first_rvalid_delay_enum  reference_event_for_first_rvalid_delay 
rand svt_axi_transaction :: reference_event_for_first_wvalid_delay_enum  reference_event_for_first_wvalid_delay 
rand svt_axi_transaction :: reference_event_for_next_rvalid_delay_enum  reference_event_for_next_rvalid_delay 
rand svt_axi_transaction :: reference_event_for_next_wvalid_delay_enum  reference_event_for_next_wvalid_delay 
rand svt_axi_transaction :: reference_event_for_rready_delay_enum  reference_event_for_rready_delay 
rand svt_axi_transaction :: reference_event_for_wready_delay_enum  reference_event_for_wready_delay 
rand int  rready_delay [] 
rand int  rvalid_delay [] 
int  SHORT_DELAY_wt = 500; 
rand int  wready_delay [] 
rand int  wvalid_delay [] 
int  ZERO_DELAY_wt = 100; 


Group: AXI4 protocol attributes

This group contains attributes specific to AXI4 protocol. Please also refer to group AXI3 protocol attributes for AXI3 protocol attributes.

rand bit [SVT_AXI_QOS_WIDTH-1:0]  qos = 0; 
rand bit [SVT_AXI_REGION_WIDTH-1:0]  region = 0; 


Group: AXI3 protocol attributes

This group contains attributes which are relevant to AXI3 protocol.

rand bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  addr = 0; 
rand bit [SVT_AXI_MAX_ADDR_USER_WIDTH-1:0]  addr_user = 0; 
rand svt_axi_transaction :: atomic_type_enum  atomic_type 
rand svt_axi_transaction :: resp_type_enum  bresp 
rand bit [SVT_AXI_MAX_BURST_LENGTH_WIDTH:0]  burst_length = 1; 
rand svt_axi_transaction :: burst_size_enum  burst_size 
rand svt_axi_transaction :: burst_type_enum  burst_type 
rand bit [SVT_AXI_CACHE_WIDTH-1:0]  cache_type = 0; 
rand bit  check_addr_overlap = 1'b0; 
rand bit [SVT_AXI_MAX_DATA_WIDTH-1:0]  data [] 
rand bit  data_before_addr = 0; 
rand bit [SVT_AXI_MAX_DATA_USER_WIDTH-1:0]  data_user [] 
rand bit [SVT_AXI_MAX_ID_WIDTH-1:0]  id = 0; 
bit  is_delayed_response_xact = 0; 
bit  is_last_read_data_beat = 0; 
bit  is_last_write_data_beat = 0; 
int  LONG_BURST_wt = 400; 
rand bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  max_byte_addr = 0; 
bit  memory_update_complete_for_write = 0; 
rand bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  min_byte_addr = 0; 
svt_axi_transaction :: phase_type_enum  phase_type 
bit [SVT_AXI_MAX_DATA_WIDTH-1:0]  physical_data [] 
bit [SVT_AXI_MAX_DATA_USER_WIDTH-1:0]  physical_data_user [] 
bit [SVT_AXI_WSTRB_WIDTH-1:0]  physical_wstrb [] 
rand svt_axi_transaction :: prot_type_enum  prot_type 
rand bit [SVT_AXI_MAX_BRESP_USER_WIDTH-1:0]  resp_user = 0; 
rand svt_axi_transaction :: resp_type_enum  rresp[] 
int  SHORT_BURST_wt = 500; 
bit  suspend_arready = 0; 
bit  suspend_awready = 0; 
bit  suspend_awvalid_to_data_before_addr = 0; 
bit  suspend_data_per_write_beat [] 
bit  suspend_response = 0; 
bit  suspend_response_per_read_beat [] 
bit  suspend_wready = 0; 
bit  suspend_write_addr 
rand int  total_byte_count = 0; 
rand bit [SVT_AXI_WSTRB_WIDTH-1:0]  wstrb [] 
rand svt_axi_transaction :: xact_type_enum  xact_type 
int  ZERO_BURST_wt = 100; 


Member Function Documentation

  function svt_pattern
 svt_axi_transaction::allocate_xml_pattern

 (   ) 


Generates an SVT pattern object to represent the properties which are to be written to FSDB. The pattern is customized to contain only the fields necessary for the application and tranaction type.

Note: As a performance enhancement, property values in the pattern are pre-populated when the pattern is created. This allows the FSDB writer infrastructure to skip the get_prop_val_via_pattern step.

Return values - An svt_pattern instance containing entries to be written to FSDB


 Superseded functions 
 svt_sequence_item_base :: allocate_xml_pattern 
 Superseding functions 
 svt_axi_master_transaction :: allocate_xml_pattern 
 svt_axi_slave_transaction :: allocate_xml_pattern 

  function void
 svt_axi_transaction::clear_pa_data

 (   ) 


This method is used to delate object_type for bus_activity when bus _activity ends on the bus . This methid is used by pa writer class in generating XML/FSDB

  function bit
 svt_axi_transaction::decode_prop_val

 (  string prop_name , bit [1023:0] prop_val , ref string prop_val_string , input svt_pattern_data :: type_enum typ  ) 


Simple utility used to convert 'bit [1023:0]' property value representation into its equivalent string property value representation. Extended to support decoding of enum values.

prop_name - The name of the property being encoded.

prop_val_string - The string describing the value to be encoded.

prop_val - The bit vector encoding of prop_val_string.

typ - Optional field type used to help in the encode effort.

Return values - The enum value corresponding to the desc.


 Superseded functions 
 svt_sequence_item_base :: decode_prop_val 
 svt_sequence_item :: decode_prop_val 

  function svt_pattern
 svt_axi_transaction::do_allocate_pattern

 (   ) 


This method allocates a pattern containing svt_pattern_data instances for all of the primitive data fields in the object. The name is set to the corresponding field name, the value is set to 0.

Return values - An svt_pattern instance containing entries for all of the data fields.


 Superseded functions 
 svt_sequence_item_base :: do_allocate_pattern 
 svt_sequence_item :: do_allocate_pattern 
 Superseding functions 
 svt_axi_master_transaction :: do_allocate_pattern 

  function bit
 svt_axi_transaction::do_compare

 (  ovm_object rhs , ovm_comparer comparer  ) 


Compares the object with rhs..

rhs - Object to be compared against.

comparer - TBD


 Superseded functions 
 ovm_object :: do_compare 
 svt_sequence_item_base :: do_compare 
 svt_sequence_item :: do_compare 
 Superseding functions 
 svt_axi_master_transaction :: do_compare 
 svt_axi_slave_transaction :: do_compare 

  function void
 svt_axi_transaction::do_copy

 (  ovm_object rhs  ) 


Extend the copy method to take care of the transaction fields and cleanup the exception xact pointers.

rhs - Source object to be copied.


 Superseded functions 
 ovm_object :: do_copy 
 ovm_transaction :: do_copy 
 svt_sequence_item_base :: do_copy 
 svt_sequence_item :: do_copy 
 Superseding functions 
 svt_axi_master_transaction :: do_copy 

  function bit
 svt_axi_transaction::do_is_valid

 (  bit silent = 1, int kind = RELEVANT  ) 


Does a basic validation of this transaction object

 Superseded functions 
 svt_sequence_item_base :: do_is_valid 
 svt_sequence_item :: do_is_valid 
 Superseding functions 
 svt_axi_master_transaction :: do_is_valid 
 svt_axi_slave_transaction :: do_is_valid 

  function bit
 svt_axi_transaction::encode_prop_val

 (  string prop_name , string prop_val_string , ref bit [1023:0] prop_val , input svt_pattern_data :: type_enum typ  ) 


Simple utility used to convert string property value representation into its equivalent 'bit [1023:0]' property value representation. Extended to support encoding of enum values.

prop_name - The name of the property being encoded.

prop_val_string - The string describing the value to be encoded.

prop_val - The bit vector encoding of prop_val_string.

typ - Optional field type used to help in the encode effort.

Return values - The enum value corresponding to the desc.


 Superseded functions 
 svt_sequence_item_base :: encode_prop_val 
 svt_sequence_item :: encode_prop_val 

  function int
 svt_axi_transaction::get_associative_cache_set_index

 (   ) 


Method that returns the associative cache set index for the current transaction.
Applicable only in case of coherent transactions, when svt_axi_port_configuration :: num_associative_cache_ways is set to 2.
By default, it returns addr[("Num cache set index bits"-1):"Num byte offset bits"].
If the associative cache set index must be computed differently, this method must be overriden in an extended transaction class by the users.

  function bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]
 svt_axi_transaction::get_associative_cache_tag

 (   ) 


Method to obtain the associative cache tag for the current transaction. Applicable only in case of coherent transactions, when svt_axi_port_configuration :: num_associative_cache_ways is set to 2.
By default, it returns the tagged address itself as the associative cache tag.
If the associative cache tag must be computed differently, this method must be overriden in an extended transaction class by the users.

  function void
 svt_axi_transaction::get_beat_addr_and_lane

 (  input int beat_num , output [SVT_AXI_MAX_ADDR_WIDTH-1:0] beat_addr , output int lower_byte_lane , output int upper_byte_lane , input bit use_tagged_addr  ) 


Returns the address and lanes corresponding to the beat number

  function void
 svt_axi_transaction::get_beat_addr_and_lane_for_data_user

 (  input int beat_num , output [SVT_AXI_MAX_ADDR_WIDTH-1:0] beat_addr , output int lower_byte_lane , output int upper_byte_lane , input bit use_tagged_addr  ) 


Returns the address and lanes corresponding to the beat number

  function int
 svt_axi_transaction::get_beat_num_of_addr

 (  bit [SVT_AXI_MAX_ADDR_WIDTH-1:0] beat_addr , bit use_tagged_addr = 0  ) 


Gets the beat number corresponding to an address

  function bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]
 svt_axi_transaction::get_burst_boundary

 (   ) 


returns burst size aligned address

  function int
 svt_axi_transaction::get_burst_length

 (  int ignore_exceptions = 0  ) 


Gets the number of beats of data/resp to be sent.

  function burst_size_enum
 svt_axi_transaction::get_burst_size

 (  int ignore_exceptions = 0  ) 


Gets the burst_size of a transaction.

  function burst_type_enum
 svt_axi_transaction::get_burst_type

 (  int ignore_exceptions = 0  ) 


Gets the burst_type of a transaction.

  function int
 svt_axi_transaction::get_byte_count

 (  int beat_num = -1  ) 


Returns the total number of bytes transferred in this transaction or beat number svt_axi_port_configuration :: get_byte_count_from_wstrb_enable set to 0, the byte count is calculated using burst_length and burst_size based on

beat_num - Indicates the beat number for which the byte count is to be calculated. If set to -1, the total number of bytes for the entire transaction is calculated. If svt_axi_port_configuration :: get_byte_count_from_wstrb_enable is set to 1, the byte count is calculated using wstrb based on

beat_num - Indicates the beat number for which the byte count is to be calculated. If set to -1, the total number of bytes for the entire transaction is calculated.

Return values - The total number of bytes transferred in this transaction or beat number

  function void
 svt_axi_transaction::get_byte_lanes_for_data_width

 (  bit [SVT_AXI_MAX_ADDR_WIDTH-1:0] beat_addr , int beat_num , int data_width_in_bytes , output int lower_byte_lane , output int upper_byte_lane  ) 


Returns the byte lanes on which data is driven for a given data width

  function int
 svt_axi_transaction::get_curr_byte_lane

 (  int log_base_2_data_width_in_bytes = -1, int beat_num = -1  ) 


Gets the current byte lane based on the current data beat, address and burst size

  function coherent_xact_type_enum
 svt_axi_transaction::get_decoded_read_snoop_val

 (  bit [SVT_AXI_ACE_RSNOOP_WIDTH-1:0] snoop_val  ) 


Decodes the given snoop value(ARSNOOP/ACSNOOP) and returns the transaction type. This function can be used for the read address channel and the snoop address channel.

snoop_val - The value on ARSNOOP/ACSNOOP

  function coherent_xact_type_enum
 svt_axi_transaction::get_decoded_write_snoop_val

 (  bit [SVT_AXI_ACE_WSNOOP_WIDTH-1:0] snoop_val  ) 


Decodes the given snoop value(AWSNOOP) and returns the transaction type. This function can be used for the write address channel.

snoop_val - The value on AWSNOOP

  function bit [SVT_AXI_ACE_RSNOOP_WIDTH-1:0]
 svt_axi_transaction::get_encoded_arsnoop_val

 (   ) 


Returns the encoding for ARSNOOP based on the transaction type

Return values - The encoded value of ARSNOOP

  function bit [SVT_AXI_ACE_WSNOOP_WIDTH-1:0]
 svt_axi_transaction::get_encoded_awsnoop_val

 (   ) 


Returns the encoding for AWSNOOP based on the transaction type

Return values - The encoded value of AWSNOOP

  function bit [SVT_AXI_ACE_ADDR_CHAN_MAX_SNOOP_WIDTH-1:0]
 svt_axi_transaction::get_encoded_snoop_val

 (   ) 


Returns the encoding for AWSNOOP/ARSNOOP/ACSNOOP based on the transaction type

Return values - The encoded value of AWSNOOP/ARSNOOP/ACSNOOP

  function bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]
 svt_axi_transaction::get_max_byte_address

 (  bit convert_to_global_addr = 0, bit use_tagged_addr = 0, bit convert_to_slave_addr = 0, string requester_name = ""  ) 


Gets the maximum byte address which is addressed by this transaction

convert_to_global_addr - Indicates if the min and max address of this transaction must be translated to a global address before checking for overlap

use_tagged_addr - Indicates whether a tagged address is provided

convert_to_slave_addr - Indicates whether the address should be converted to a slave address

requester_name - Name of the master component from which the transaction originated

Return values - Maximum byte address addressed by this transaction

  function string
 svt_axi_transaction::get_mcd_class_name

 (   ) 


Returns the class name for the object used for logging.

 Superseded functions 
 svt_sequence_item_base :: get_mcd_class_name 
 Superseding functions 
 svt_axi_master_transaction :: get_mcd_class_name 
 svt_axi_slave_transaction :: get_mcd_class_name 
 svt_axi_ic_slave_transaction :: get_mcd_class_name 

  function bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]
 svt_axi_transaction::get_min_byte_address

 (  bit convert_to_global_addr = 0, bit use_tagged_addr = 0, bit convert_to_slave_addr = 0, string requester_name = ""  ) 


Gets the minimum byte address which is addressed by this transaction

convert_to_global_addr - Indicates if the min and max address of this transaction must be translated to a global address before checking for overlap

use_tagged_addr - Indicates whether a tagged address is provided

convert_to_slave_addr - Indicates whether the address should be converted to a slave address

requester_name - Name of the master component from which the transaction originated

Return values - Minimum byte address addressed by this transaction

  function svt_pa_object_data
 svt_axi_transaction::get_pa_obj_data

 (  string uid = "", string typ = "", string parent_uid = "", string channel = ""  ) 


This method returns PA object which contains the PA header information for XML or FSDB.

uid - Optional string indicating the unique identification value for object. If not provided uses the 'get_uid' method to retrieve the value.

typ - Optional string indicating the 'type' of the object. If not provided uses the type name for the class.

parent_uid - Optional string indicating the UID of the object's parent. If not provided the method assumes there is no parent.

channel - Optional string indicating an object channel. If not provided the method assumes there is no channel.

Return values - The requested object block description.


 Superseded functions 
 svt_sequence_item_base :: get_pa_obj_data 
 svt_sequence_item :: get_pa_obj_data 
 Superseding functions 
 svt_axi_master_transaction :: get_pa_obj_data 
 svt_axi_slave_transaction :: get_pa_obj_data 

  function void
 svt_axi_transaction::get_poison_for_wysiwyg_format

 (  ref bit [SVT_AXI_MAX_DATA_WIDTH/64-1:0] poison []  ) 


Ensures that only valid lanes have poison asserted. In wysisyg format the constraints leave data[] and poison[] open. This function is called in post_randomize to make sure that poison[] is asserted only for valid lanes

  function bit
 svt_axi_transaction::get_prop_val

 (  string prop_name , ref bit [1023:0] prop_val , input int array_ix , ref svt_sequence_item_base data_obj  ) 


HDL Support: For read access to public data members of this class.

 Superseded functions 
 svt_sequence_item_base :: get_prop_val 
 svt_sequence_item :: get_prop_val 
 Superseding functions 
 svt_axi_master_transaction :: get_prop_val 
 svt_axi_slave_transaction :: get_prop_val 

  function xact_type_enum
 svt_axi_transaction::get_transmitted_channel

 (   ) 


Returns the channel on which a transaction will be transmitted

Return values - The channel (READ/WRITE) on which this transaction will be transmitted.

  function string
 svt_axi_transaction::get_uid

 (   ) 


This method is used in setting the unique identification id for the objects of bus activity This method returns a string which holds uid of bus activity object This is used by pa writer class in generating XML/FSDB

 Superseded functions 
 svt_sequence_item_base :: get_uid 

  function bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]
 svt_axi_transaction::get_wrap_boundary

 (   ) 


returns lowest address of the transaction. For WRAP type of transaction it indicates starting address after transaction statisfies WRAP condition and wraps over to include lower addresses

  function int
 svt_axi_transaction::get_wrap_boundary_idx

 (   ) 


Returns the index (of data or wstrb fields) corresponding to the wrap boundary

  function void
 svt_axi_transaction::get_wstrb_for_wysiwyg_format

 (  ref bit [SVT_AXI_MAX_DATA_WIDTH/8-1:0] wstrb []  ) 


Ensures that only valid lanes have wstrb asserted. In wysisyg format the constraints leave data[] and wstrb[] open. This function is called in post_randomize to make sure that wstrb is asserted only for valid lanes

  function bit
 svt_axi_transaction::has_axi_exception

 (  int error_kind  ) 


Returns 1 if the specified error_kind is there in transaction, else returns 0

  function bit
 svt_axi_transaction::is_aborted

 (  int mode = 0  ) 


returns 1 if status of all relevant phases of current transaction are assigned as ABORTED

  function bit
 svt_axi_transaction::is_addr_4kb_boundary_cross

 (   ) 


Checks if the transaction crosses the 4kb boundary

  function bit
 svt_axi_transaction::is_address_overlap

 (  bit [SVT_AXI_MAX_ADDR_WIDTH-1:0] min_addr , bit [SVT_AXI_MAX_ADDR_WIDTH-1:0] max_addr , bit convert_to_global_addr = 0, bit use_tagged_addr = 0, bit convert_to_slave_addr = 0, string requester_name = ""  ) 


Checks if the given address range overlaps with the address range of this transaction

min_addr - The minimum address of the address range be checked

max_addr - The maximum address of the address range be checked

convert_to_global_addr - Indicates if the min and max address of this transaction must be translated to a global address before checking for overlap

use_tagged_addr - Indicates whether a tagged address is provided

convert_to_slave_addr - Indicates whether the address should be converted to a slave address

requester_name - Name of the master component from which the transaction originated

Return values - Returns 1 if there is an address overlap, else returns 0.

  function bit
 svt_axi_transaction::is_allocate_xact

 (   ) 


Returns 1 if current transaction is allocate transaction

  function bit
 svt_axi_transaction::is_appplicable_for_fifo_rate_control

 (   ) 


Indicates if this transaction is applicable for updates in the FIFO rate control model

Return values - Returns 1 if applicable, else returns 0

  function bit
 svt_axi_transaction::is_cacheable_xact

 (   ) 


Returns 1 if current transaction is cacheable transaction

  function bit
 svt_axi_transaction::is_cmo_read_xact

 (   ) 


Determines if this transaction is a CMO transaction on Read channel

  function bit
 svt_axi_transaction::is_cmo_xact

 (   ) 


Determines if this transaction is a CMO transaction

  function bit
 svt_axi_transaction::is_coherent_dvm_sync

 (   ) 


Checks if the coherent transaction is DVM Sync

  function bit
 svt_axi_transaction::is_device_type

 (   ) 


Returns 1 if current transaction is of device_type

  function bit
 svt_axi_transaction::is_dvm_xact

 (   ) 


Returns 1 if current transaction is DVM transaction

  function bit
 svt_axi_transaction::is_full_cacheline

 (  int cacheline_size  ) 


Calculates whether the transaction is partial or full cacheline access. returns 1, if transaction is full cacheline access. returns 0, if it is a partial cacheline access.

cacheline_size - indicates the value of the master cache line size

  function bit
 svt_axi_transaction::is_pcmo_on_write_xact

 (   ) 


Determines if this transaction is a PCMO transaction on write channel

  function bit
 svt_axi_transaction::is_secure

 (  bit allow_secure = 1  ) 


returns 1 if current transaction is configured as secure access physical addr range

  function bit
 svt_axi_transaction::is_slave_xact_supported_in_chi_sys_mon

 (   ) 


Indicates whether the current transaction is supported in CHI System monitor

  function bit
 svt_axi_transaction::is_transaction_aborted_or_dropped

 (   ) 


returns 1 if transaction status fields are ABORTED, or it is dropped; otherwise returns 0

  function bit
 svt_axi_transaction::is_transaction_ended

 (   ) 


returns 1 if transaction status shows ended otherwise 0

  function void
 svt_axi_transaction::mask_data_for_unaligned_addr

 (  bit data_only = 0, int beat_num = -1  ) 


Limits the data to what can be transmitted if the address is unaligned. If the address is unaligned, we need to take care that data[0] and wstrb[0] are consistent with what can actually be driven on the bus. For example, for a 64 bit bus, if the address is 0x7, data can be sent only on 1 byte for the first beat. For a FIXED burst the address is same for all beats, so this operation needs to be done for all beats. For other bursts, only the first address can be unaligned, other beats are aligned addresses

data_only - (Optional: default = 0) If this bit is set the operation is done only for data.

beat_num - (Optional: default = -1) Applicable for a FIXED burst. When set to -1, masking is done for all beats, otherwise it is done only for the selected beat.

  function logic [SVT_AXI_MAX_DATA_WIDTH-1:0]
 svt_axi_transaction::mask_data_for_x_z_values

 (  logic [SVT_AXI_MAX_DATA_WIDTH-1:0] data , bit [SVT_AXI_MAX_DATA_WIDTH-1:0] data_mask  ) 


Ensures that valid x,z,0,1 all four state datas are calculated with respect to data_mask values. This function is called under SVT_MEM_LOGIC_DATA macro define only, to make sure while masking valid x and z state data also considered towards masked data.

  function void
 svt_axi_transaction::new

 (  string name = "svt_axi_transaction", svt_axi_port_configuration port_cfg_handle = null  ) 


CONSTUCTOR: Create a new transaction instance, passing the appropriate argument values to the parent class.

name - Instance name of the transaction


 Superseding functions 
 svt_axi_master_transaction :: new 
 svt_axi_slave_transaction :: new 
 svt_axi_ic_slave_transaction :: new 

  function void
 svt_axi_transaction::pack_data_to_byte_stream

 (  input bit [SVT_AXI_MAX_DATA_WIDTH-1:0] data_to_pack [], output bit [7:0] packed_data [], input ovm_report_object reporter  ) 


Returns the data in the data_to_pack[] field as a byte stream based on the burst_type. The assumption is that either data[] or cache_write_data[] fields of this class have been passed as arguments to data_to_pack[] field. In the case of WRAP bursts the data is returned such that packed_data[0] corresponds to the data for the wrap boundary. In the case of INCR bursts, the data as passed in data_to_pack[] is directly packed to packed_data[].

data_to_pack - Data to be packed

packed_data - [] Output byte stream with packed data

  function void
 svt_axi_transaction::pack_data_user_to_byte_stream

 (  input bit [SVT_AXI_MAX_DATA_USER_WIDTH-1:0] data_to_pack [], output bit [7:0] packed_data []  ) 


Returns the data_user in the data_to_pack[] field as a byte stream based on the burst_type. The assumption is that data_user[] has been passed as arguments to data_to_pack[] field. In the case of WRAP bursts the data_user is returned such that packed_data[0] corresponds to the data for the wrap boundary. In the case of INCR bursts, the data_user as passed in data_to_pack[] is directly packed to packed_data[].

data_to_pack - Data to be packed

packed_data - [] Output byte stream with packed data

  function void
 svt_axi_transaction::pack_poison_to_byte_stream

 (  input bit [SVT_AXI_MAX_DATA_WIDTH/64-1:0] poison_to_pack [], output bit packed_poison []  ) 


Returns the poison in the poison_to_pack[] field as a byte stream based on the burst_type. The assumption is that either poison[] or cache_write_poison[] fields of this class have been passed as arguments to data_to_pack5[] field. In the case of WRAP bursts the data is returned such that packed_poison[0] corresponds to the poison for the wrap boundary. In the case of INCR bursts, the poison as passed in poison_to_pack[] is directly packed to packed_poison[].

poison_to_pack - poison to be packed

packed_poison - [] Output byte stream with packed poison

  function void
 svt_axi_transaction::pack_wstrb_to_byte_stream

 (  input bit [SVT_AXI_MAX_DATA_WIDTH/8-1:0] wstrb_to_pack [], output bit packed_wstrb []  ) 


Returns the wstrb in the wstrb_to_pack[] field as a byte stream based on the burst_type. In the case of WRAP bursts the wstrb is returned such that packed_wstrb[0] corresponds to the wstrb for the wrap boundary. In the case of INCR bursts, the wstrb as passed in wstrb_to_pack[] is directly packed to packed_wstrb[].

wstrb_to_pack - wstrb to be packed

packed_wstrb - [] Output byte stream with packed wstrb

  function svt_pattern
 svt_axi_transaction::populate_filtered_xml_pattern

 (   ) 


Generates an SVT pattern object to represent the properties which are to be written to FSDB when the PA channel is RADDR, RDATA, WADDR, WDATA, or WRESP.

Return values - An svt_pattern instance containing entries to be written to FSDB

  function svt_pattern
 svt_axi_transaction::populate_full_xml_pattern

 (   ) 


Generates an SVT pattern object to represent the properties which are to be written to FSDB when a full tranaction is to be recorded. Note that not all properties are written. Instead, only properties needed for debug are added.

Return values - An svt_pattern instance containing entries to be written to FSDB

  function void
 svt_axi_transaction::populate_partial_data_and_byteen

 (  input bit [7:0] data [], input bit byteen [], output bit [7:0] cache_data [], output bit cache_byteen []  ) 


Populates the partial data and byteen provided into data and byteen that is used to write into a full cacheline

  function svt_pattern
 svt_axi_transaction::populate_perf_analysis_xml_pattern

 (   ) 


Generates an SVT pattern object to represent the properties which are to be written to FSDB when the pa_format_type is set to FSDB_PERF_ANALYSIS.

Return values - An svt_pattern instance containing entries to be written to FSDB

  function svt_pattern
 svt_axi_transaction::populate_stream_xml_pattern

 (   ) 


Generates an SVT pattern object to represent the properties which are to be written to FSDB when the PA channel is "STREAM DATA".

Return values - An svt_pattern instance containing entries to be written to FSDB

  function void
 svt_axi_transaction::post_randomize

 (   ) 


post_randomize does the following 1) Aligns the address to no of Bytes for Exclusive Accesses

 Superseded functions 
 svt_sequence_item :: post_randomize 
 Superseding functions 
 svt_axi_master_transaction :: post_randomize 
 svt_axi_slave_transaction :: post_randomize 

  function void
 svt_axi_transaction::pre_randomize

 (   ) 


pre_randomize does the following 1) Tests the validity of the configuration 2) calculate the log_2 of master configs data_width

 Superseded functions 
 svt_sequence_item :: pre_randomize 
 Superseding functions 
 svt_axi_master_transaction :: pre_randomize 
 svt_axi_slave_transaction :: pre_randomize 

  function string
 svt_axi_transaction::psdisplay_short

 (  string prefix = "", bit hdr_only = 0  ) 


Returns a string (with no line feeds) that reports the essential contents of the packet generally necessary to uniquely identify that packet.

prefix - (Optional: default = "") The string given in this argument becomes the first item listed in the value returned. It is intended to be used to identify the transactor (or other source) that requested this string. This argument should be limited to 8 characters or less (to accommodate the fixed column widths in the returned string). If more than 8 characters are supplied, only the first 8 characters are used.

hdr_only - (Optional: default = 0) If this argument is supplied, and is '1', the function returns a 3-line table header string, which indicates which packet data appears in the subsequent columns. If this argument is '1', the prefix argument becomes the column label for the first header column (still subject to the 8 character limit).


 Superseded functions 
 svt_sequence_item :: psdisplay_short 

  function int
 svt_axi_transaction::reasonable_constraint_mode

 (  bit on_off  ) 


Method to turn reasonable constraints on/off as a block.

 Superseded functions 
 svt_sequence_item_base :: reasonable_constraint_mode 
 Superseding functions 
 svt_axi_master_transaction :: reasonable_constraint_mode 
 svt_axi_slave_transaction :: reasonable_constraint_mode 

  function void
 svt_axi_transaction::resume_xact

 (   ) 


Unsets the suspend_master_xact property

  function void
 svt_axi_transaction::set_cfg

 (  svt_axi_port_configuration cfg  ) 


Sets the configuration property

  function void
 svt_axi_transaction::set_end_of_transaction

 (  bit aborted = 0  ) 


mark end of transaction

  function void
 svt_axi_transaction::set_pa_data

 (  string typ = "", string channel = ""  ) 


This method is used to set object_type for bus_activity when bus_activity is getting started on the bus . This method is used by pa writer class in generating XML/FSDB

  function bit
 svt_axi_transaction::set_prop_val

 (  string prop_name , bit [1023:0] prop_val , int array_ix  ) 


HDL Support: For write access to public data members of this class.

 Superseded functions 
 svt_sequence_item_base :: set_prop_val 
 svt_sequence_item :: set_prop_val 
 Superseding functions 
 svt_axi_master_transaction :: set_prop_val 
 svt_axi_slave_transaction :: set_prop_val 

  function void
 svt_axi_transaction::suspend_xact

 (   ) 


Sets the suspend_master_xact property

  function void
 svt_axi_transaction::svt_post_do_all_do_copy

 (  ovm_sequence_item to  ) 


Extend the svt_post_do_all_do_copy method to cleanup the exception xact pointers.

to - Destination class for the copy operation


 Superseding functions 
 svt_axi_master_transaction :: svt_post_do_all_do_copy 

  function void
 svt_axi_transaction::unpack_byte_stream_to_data

 (  input bit [7:0] data_to_unpack [], output bit [SVT_AXI_MAX_DATA_WIDTH-1:0] unpacked_data []  ) 


Unpacks the data in data_to_unpack[] into utemp_datanpacked_data. For an INCR burst, the data is directly unpacked into unpacked_data For a WRAP burst, the data is unpacked such that unpacked_data[0] corresponds to the starting address. The assumption here is that data_to_unpack[] has a byte stream whose data starts from the address corresponding to the wrap boundary

data_to_unpack - The data to unpack.

unpacked_data - The unpacked data.

  function void
 svt_axi_transaction::unpack_byte_stream_to_data_user

 (  input bit [7:0] data_to_unpack [], output bit [SVT_AXI_MAX_DATA_USER_WIDTH-1:0] unpacked_data []  ) 


Unpacks the data_user in data_to_unpack[] into utemp_datanpacked_data. For an INCR burst, the data_user is directly unpacked into unpacked_data For a WRAP burst, the data_user is unpacked such that unpacked_data[0] corresponds to the starting address. The assumption here is that data_to_unpack[] has a byte stream whose data_user starts from the address corresponding to the wrap boundary

data_to_unpack - The data to unpack.

unpacked_data - The unpacked data.

  function void
 svt_axi_transaction::unpack_byte_stream_to_poison

 (  input bit poison_to_unpack [], output bit [SVT_AXI_MAX_DATA_WIDTH/64-1:0] unpacked_poison []  ) 


Unpacks the poison in poison_to_unpack[] into unpacked_poison. For an INCR burst, the poison is directly unpacked into unpacked_poison For a WRAP burst, the poison is unpacked such that unpacked_poison[0] corresponds to the starting address. The assumption here is that poison_to_unpack[] has a byte stream whose poison starts from the address corresponding to the wrap boundary

poison_to_unpack - The poison to unpack.

unpacked_poison - The unpacked poison.

  function void
 svt_axi_transaction::unpack_byte_stream_to_wstrb

 (  input bit wstrb_to_unpack [], output bit [SVT_AXI_MAX_DATA_WIDTH/8-1:0] unpacked_wstrb []  ) 


Unpacks the wstrb in wstrb_to_unpack[] into unpacked_wstrb. For an INCR burst, the wstrb is directly unpacked into unpacked_wstrb For a WRAP burst, the wstrb is unpacked such that unpacked_wstrb[0] corresponds to the starting address. The assumption here is that wstrb_to_unpack[] has a byte stream whose wstrb starts from the address corresponding to the wrap boundary

wstrb_to_unpack - The wstrb to unpack.

unpacked_wstrb - The unpacked wstrb.

  task
 svt_axi_transaction::wait_for_addr_phase_ended

 (   ) 


waits for addr phase to end

  task
 svt_axi_transaction::wait_for_data_phase_ended

 (   ) 


waits for data phase to end

  task
 svt_axi_transaction::wait_for_transaction_end

 (   ) 


waits for transaction to end

  task
 svt_axi_transaction::wait_for_write_resp_phase_ended

 (   ) 


waits for write resp phase to end

  task
 svt_axi_transaction::wait_for_write_transaction_to_update_memory

 (   ) 


waits for slave transaction to update the memory

Member Attribute Documentation

 svt_sequence_item :: status_enum  attribute
 svt_axi_transaction::ack_status = INITIAL


Represents the status of the read/write acknowledge sent via RACK/WACK for ACE interface. RACK/WACK is asserted for a single cycle. Following are the possible status types:
  • INITIAL : RACK/WACK has not be asserted
  • ACTIVE : RACK/WACK is asserted
  • ACCEPT : RACK/WACK assertion is completed
  • ABORTED : Current transaction is aborted
Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

 rand bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  attribute
 svt_axi_transaction::addr = 0


The variable represents AWADDR when xact_type is WRITE and ARADDR when xact_type is READ.
The maximum width of this signal is controlled through macro SVT_AXI_MAX_ADDR_WIDTH. Default value of this macro is 64. To change the maximum width of this variable, user can change the value of this macro. Define the new value for the macro in file svt_axi_user_defines.svi, and then specify this file to be compiled by the simulator. Also, specify +define+SVT_AXI_INCLUDE_USER_DEFINES on the simulator compilation command line. Please consult User Guide for additional information, and consult VIP example for usage demonstration.
The SVT_AXI_MAX_ADDR_WIDTH macro is only used to control the maximum width of the signal. The actual width used by VIP is controlled by configuration parameter svt_axi_port_configuration :: addr_width.

 int  attribute
 svt_axi_transaction::addr_ready_assertion_cycle


This variable stores the timing information for address ready on read and write transactions. The simulation clock cycle number when the address valid and ready both are asserted i.e. handshake happens, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 realtime  attribute
 svt_axi_transaction::addr_ready_assertion_time


This variable stores the timing information for address ready on read and write transactions. The simulation time number when the address valid and ready both are asserted i.e. handshake happens, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 rand int  attribute
 svt_axi_transaction::addr_ready_delay = 0


This members applies to AWREADY signal delay for write transactions, and ARREADY signal delay for read transactions.

If configuration parameter svt_axi_port_configuration :: default_awready or svt_axi_port_configuration :: default_arready is FALSE, this member defines the AWREADY or ARREADY signal delay in number of clock cycles. The reference event used for this delay is reference_event_for_addr_ready_delay.

If configuration parameter svt_axi_port_configuration :: default_awready or svt_axi_port_configuration :: default_arready is TRUE, this member defines the number of clock cycles for which AWREADY or ARREADY signal should be deasserted after each handshake, before pulling it up again to its default value.

Applicable for ACTIVE SLAVE only.

 svt_sequence_item :: status_enum  attribute
 svt_axi_transaction::addr_status = INITIAL


Represents the current status of the read or write address. Following are the possible status types.

  • INITIAL : Address phase has not yet started on the channel
  • ACTIVE : Address valid is asserted but ready is not
  • ACCEPT : Address phase is complete
  • ABORTED : Current transaction is aborted

 rand bit [SVT_AXI_MAX_ADDR_USER_WIDTH-1:0]  attribute
 svt_axi_transaction::addr_user = 0


The variable holds the value for signals AWUSER/ARUSER. Applicable for all interface types. Enabled through port configuration parameters svt_axi_port_configuration :: aruser_enable and svt_axi_port_configuration :: awuser_enable.

 int  attribute
 svt_axi_transaction::addr_valid_assertion_cycle


This variable stores the cycle information for address valid on read and write transactions. The simulation clock cycle number when the address valid is asserted, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 realtime  attribute
 svt_axi_transaction::addr_valid_assertion_time


This variable stores the timing information for address valid on read and write transactions. The simulation time when the address valid is asserted, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 rand int  attribute
 svt_axi_transaction::addr_valid_delay = 0


This variable defines the number of cycles the AWVALID or ARVALID signal is delayed. The reference event for this delay is reference_event_for_addr_valid_delay. Applicable for ACTIVE MASTER only.

 int  attribute
 svt_axi_transaction::addr_wakeup_assertion_cycle


This variable stores the cycle information for address wakeup of read or write transaction. The simulation clock cycle number when the address wakeup is asserted, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 real  attribute
 svt_axi_transaction::addr_wakeup_assertion_time


This variable stores the timing information for address wakeup of read or write transaction. The simulation time when the address wakeup is asserted, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 rand bit  attribute
 svt_axi_transaction::allocate_in_cache


Indicates that the data as given in cache_write_data [] in this transaction needs to be allocated in the cache. Applicable only when transaction type is READUNIQUE or CLEANUNIQUE. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

Applicable for ACTIVE MASTER only.

 rand bit [SVT_AXI_MAX_VMIDEXT_WIDTH-1:0]  attribute
 svt_axi_transaction::arvmid = 0


The variable represents ARVMIDEXT when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE with svt_axi_system_configuration :: DVMV8_1 or above. The maximum width of this signal is controlled through macro SVT_AXI_MAX_VMIDEXT_WIDTH. Default value of this macro is 4 based on DVMv8.1 architecture recomendation.

 rand bit  attribute
 svt_axi_transaction::assert_awakeup_after_valid = 0


if this bit is set to '0' then AWAKEUP signal will be asserted before ARVALID or AWVALID with respect to awakeup_assert_delay. if this bit is set to '1' then AWAKEUP signal will be asserted after ARVALID or AWVALID with respect to awakeup_assert_delay. Applicable for ACTIVE MASTER only.

 svt_axi_barrier_pair_transaction  attribute
 svt_axi_transaction::associated_barrier_xact


This member points to a barrier pair transaction associated to this current transaction. When associated_barrier_xact is null, it indicates that this current transaction is not a post-barrier transaction. When associated_barrier_xact is non-null, this current transaction will wait for responses from the barrier transactions in associated_barrier_xact, before it can be transmitted.

associated_barrier_xact can be set in the callback svt_axi_master_callback :: associate_xact_to_barrier_pair. In this callback, user can associate this transaction with a barrier transaction pair.

Please refer to User Guide for more details on usage of this member.

 rand bit  attribute
 svt_axi_transaction::associate_barrier = 0


When this bit is set by user, it indicates that this transaction is a post-barrier transaction and that it needs to wait for responses from the barrier transaction pair indicated in associated_barrier_xact. associated_barrier_xact can be set in the callback svt_axi_master_callback :: associate_xact_to_barrier_pair. In this callback, user can associate this transaction with a barrier transaction pair.

Please refer to User Guide for more description.

 int  attribute
 svt_axi_transaction::associative_cache_set_index = -1


Represents the set index in the associative cache that contains the cacheline corresponding to the transaction address.
Applicable only in case of coherent, cacheable transactions initiated from active ACE master VIP with an n-way associative cache (svt_axi_port_configuration :: num_associative_cache_ways > 0).
Will be automatically populated by the active ACE master driver before the request is driven out on the interface and is a read-only field for users.
In case of coherent transactions that allocate the cache, the value of this field is determined by the API "get_associative_cache_set_index".
For all other coherent non-allocating transactions, the value of this field is determined by the properties of the corresponding cacheline.
Default value: -1.

 bit [(SVT_AXI_MAX_ADDR_WIDTH-1):0]  attribute
 svt_axi_transaction::associative_cache_tag = 0


Represents the Tag value of the associative cache entry that contains the cacheline corresponding to the transaction address.
Applicable only in case of coherent, cacheable transactions initiated from active ACE master VIP with an n-way associative cache (svt_axi_port_configuration :: num_associative_cache_ways > 0).
Will be automatically populated by the active ACE master driver before the request is driven out on the interface and is a read-only field for users.
In case of coherent transactions that allocate the cache, the value of this field is determined by the API "get_associative_tag".
For all other coherent non-allocating transactions, the value of this field is determined by the properties of the corresponding cacheline.
Default value: 0.

 int  attribute
 svt_axi_transaction::associative_cache_way_number = -1


Represents the way number within the associative cache set that contains the cacheline corresponding to the transaction address.
Applicable only in case of coherent, cacheable transactions initiated from active ACE master VIP with an n-way associative cache (svt_axi_port_configuration :: num_associative_cache_ways > 0).
Will be automatically populated by the active ACE master driver before the request is driven out on the interface and is a read-only field for users.
Default value: -1.

 rand svt_axi_transaction :: atomic_type_enum  attribute
 svt_axi_transaction::atomic_type = NORMAL


Represents the atomic access of a transaction. The variable holds the value for AWLOCK/ARLOCK. Following are the possible atomic types:
  • NORMAL
  • EXCLUSIVE
  • LOCKED
Please note that atomic type LOCKED is not yet supported.

 rand int  attribute
 svt_axi_transaction::awakeup_assert_delay = 0


Defines the delay in number of cycles for AWAKEUP signal assertion before or after ARVALID or AWVALID signal. Applicable for ACTIVE MASTER only

 rand int  attribute
 svt_axi_transaction::awakeup_deassert_delay = 0


Defines the delay in number of cycles for AWAKEUP signal deassertion after ARVALID-ARREADY or AWVALID-AWREADY signal handshake. Applicable for ACTIVE MASTER only.

 rand svt_axi_transaction :: barrier_type_enum  attribute
 svt_axi_transaction::barrier_type = NORMAL_ACCESS_RESPECT_BARRIER


This variable represents barrier transaction type. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE.

 rand int  attribute
 svt_axi_transaction::bready_delay = 0


If configuration parameter svt_axi_port_configuration :: default_bready is FALSE, this member defines the BREADY signal delay in number of clock cycles. The reference event for this delay is reference_event_for_bready_delay.

If configuration parameter svt_axi_port_configuration :: default_bready is TRUE, this member defines the number of clock cycles for which BREADY signal should be deasserted after each handshake, before pulling it up again to its default value.

Applicable for ACTIVE MASTER only.

 rand svt_axi_transaction :: resp_type_enum  attribute
 svt_axi_transaction::bresp = OKAY


This variable specifies the response for write transaction. The variable holds the value for BRESP. Following are the possible response types:
  • OKAY
  • EXOKAY
  • SLVERR
  • DECERR
  • PREFETCHED_DEFER, this will indicate DEFER type response for writedeferrable transaction when applicable.
  • TRANSFAULT

MASTER ACTIVE MODE:

Will Store the write response received from the slave.

SLAVE ACTIVE MODE:

The write response programmed by the user.

PASSIVE MODE - MASTER/SLAVE:

Stores the write response seen on the bus.

 rand bit [SVT_AXI_MAX_BURST_LENGTH_WIDTH:0]  attribute
 svt_axi_transaction::burst_length = 1


The variable represents the actual length of the burst. For eg. burst_length = 1 means a burst of length 1.

If svt_axi_port_configuration :: axi_interface_type is AXI3, burst length of 1 to 16 is supported.

If svt_axi_port_configuration :: axi_interface_type is AXI4, burst length of 1 to 256 is supported.

 rand svt_axi_transaction :: burst_size_enum  attribute
 svt_axi_transaction::burst_size = BURST_SIZE_8BIT


Represents the burst size of a transaction . The variable holds the value for AWSIZE/ARSIZE.

 rand svt_axi_transaction :: burst_type_enum  attribute
 svt_axi_transaction::burst_type = INCR


Represents the burst type of a transaction. The burst type holds the value for AWBURST/ARBURST. Following are the possible burst types:
  • FIXED
  • INCR
  • WRAP

 string  attribute
 svt_axi_transaction::bus_activity_type_name

 string  attribute
 svt_axi_transaction::bus_parent_uid = ""

 rand int  attribute
 svt_axi_transaction::bvalid_delay = 0


Defines the BVALID delay in terms of number of clock cycles. The reference event for this delay is reference_event_for_bvalid_delay.

Applicable for ACTIVE SLAVE only.

 rand bit  attribute
 svt_axi_transaction::bypass_cache_lookup = 1'b0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE. Users who need to bypass lookup of cache to determine valid initial cache line states can set this property to 1. In order to randomize this property to 1, the user must switch off svt_axi_master_transaction :: reasonable_bypass_cache_lookup constraint. Setting this property will enable transactions to be sent out even if the initial cache state does not meet requirements set by ACE protocol. Please note that coherency is not guaranteed when this property is set

Applicable for ACTIVE MASTER only.

 bit  attribute
 svt_axi_transaction::bypass_cache_update = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

Indicates if update of cache must be bypassed for this transaction. A typical use model is to set this bit in pre_cache_update callback of the driver based on response received in the transaction. For example, if the response received is SLVERR, user may not want the driver to update the cache. When using this property, it is the user's responsibility that system coherency is not lost, since cache will not be updated.

Applicable for ACTIVE MASTER only.

 rand bit [SVT_AXI_CACHE_WIDTH-1:0]  attribute
 svt_axi_transaction::cache_type = 0


Represents the cache support of a transaction. The variable holds the value for AWCACHE/ARCACHE.

Following values are supported in AXI3 mode:

  • SVT_AXI_3_NON_CACHEABLE_NON_BUFFERABLE
  • SVT_AXI_3_BUFFERABLE_OR_MODIFIABLE_ONLY
  • SVT_AXI_3_CACHEABLE_BUT_NO_ALLOC
  • SVT_AXI_3_CACHEABLE_BUFFERABLE_BUT_NO_ALLOC
  • SVT_AXI_3_CACHEABLE_WR_THRU_ALLOC_ON_RD_ONLY
  • SVT_AXI_3_CACHEABLE_WR_BACK_ALLOC_ON_RD_ONLY
  • SVT_AXI_3_CACHEABLE_WR_THRU_ALLOC_ON_WR_ONLY
  • SVT_AXI_3_CACHEABLE_WR_BACK_ALLOC_ON_WR_ONLY
  • SVT_AXI_3_CACHEABLE_WR_THRU_ALLOC_ON_BOTH_RD_WR
  • SVT_AXI_3_CACHEABLE_WR_BACK_ALLOC_ON_BOTH_RD_WR

Following values for ARCACHE are supported in AXI4 mode:

  • SVT_AXI_4_ARCACHE_DEVICE_NON_BUFFERABLE
  • SVT_AXI_4_ARCACHE_DEVICE_BUFFERABLE
  • SVT_AXI_4_ARCACHE_NORMAL_NON_CACHABLE_NON_BUFFERABLE
  • SVT_AXI_4_ARCACHE_NORMAL_NON_CACHABLE_BUFFERABLE
  • SVT_AXI_4_ARCACHE_WRITE_THROUGH_NO_ALLOCATE
  • SVT_AXI_4_ARCACHE_WRITE_THROUGH_READ_ALLOCATE
  • SVT_AXI_4_ARCACHE_WRITE_THROUGH_WRITE_ALLOCATE
  • SVT_AXI_4_ARCACHE_WRITE_THROUGH_READ_AND_WRITE_ALLOCATE
  • SVT_AXI_4_ARCACHE_WRITE_BACK_NO_ALLOCATE
  • SVT_AXI_4_ARCACHE_WRITE_BACK_READ_ALLOCATE
  • SVT_AXI_4_ARCACHE_WRITE_BACK_WRITE_ALLOCATE
  • SVT_AXI_4_ARCACHE_WRITE_BACK_READ_AND_WRITE_ALLOCATE

Following values for AWCACHE are supported in AXI4 mode:

  • SVT_AXI_4_AWCACHE_DEVICE_NON_BUFFERABLE
  • SVT_AXI_4_AWCACHE_DEVICE_BUFFERABLE
  • SVT_AXI_4_AWCACHE_NORMAL_NON_CACHABLE_NON_BUFFERABLE
  • SVT_AXI_4_AWCACHE_NORMAL_NON_CACHABLE_BUFFERABLE
  • SVT_AXI_4_AWCACHE_WRITE_THROUGH_NO_ALLOCATE
  • SVT_AXI_4_AWCACHE_WRITE_THROUGH_READ_ALLOCATE
  • SVT_AXI_4_AWCACHE_WRITE_THROUGH_WRITE_ALLOCATE
  • SVT_AXI_4_AWCACHE_WRITE_THROUGH_READ_AND_WRITE_ALLOCATE
  • SVT_AXI_4_AWCACHE_WRITE_BACK_NO_ALLOCATE
  • SVT_AXI_4_AWCACHE_WRITE_BACK_READ_ALLOCATE
  • SVT_AXI_4_AWCACHE_WRITE_BACK_WRITE_ALLOCATE
  • SVT_AXI_4_AWCACHE_WRITE_BACK_READ_AND_WRITE_ALLOCATE

 rand bit [SVT_AXI_MAX_DATA_WIDTH-1:0]  attribute
 svt_axi_transaction::cache_write_data[]


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

Represents data that needs to be stored to the cache if the allocate_in_cache bit is set for a READUNIQUE/CLEANUNIQUE transaction or if the transaction is MAKEUNIQUE. Applicable to masters in active mode. Refer section 3.6 of ACE specification. Writes in ACE are performed by removing all other copies of the cache line so that the master that is performing the write has a unique copy at the time of writing. Depending on whether a paritial or full update of a cache line is required a transaction such as READUNIQUE,MAKEUNIQUE or CLEANUNIQUE is sent. Some of these transactions such as READUNIQUE will return data (either from memory or the cache of some other master) and this will be available in the data[] field of this class. Other transactions such as MAKEUNIQUE and CLEANUNIQUE will not return any data. For a READUNIQUE transaction, if the allocate_in_cache bit is not set, the data available in data[] is written in cache. If the allocate_in_cache bit is set the data available in this variable is written to cache. Note however, that this variable is overwritten by the data that is received in data[] prior to writing in the cache. This is done because READUNIQUE is used for partial update of a cacheline when a master does not have a copy of the cacheline. So a user can actually populate this variable after a copy of this cacheline is received and not at the time of randomization. For a CLEANUNIQUE transaction, if the allocate_in_cache bit is set, the data in this variable is written to cache. For a MAKEUNIQUE transaction, the data in this variable is always written into the cache. Updating this variable is normally done in the pre_cache_update callback issued by the master driver after all the responses are received but prior to the RACK signal being driven. An important aspect of this variable is that this data is not driven on the physical bus.

Applicable for ACTIVE MASTER only.

 rand bit  attribute
 svt_axi_transaction::check_addr_overlap = 1'b0


If set, the driver checks if this transaction accesses a location addressed by a previous transaction from this port or from some other master. If there are any such previous transactions, this transaction is blocked until all those transactions complete. Also, the driver does not pull any more transactions until this transaction is unblocked. If not set, this transaction is not checked for access to a location which was previously accessed by another transaction. When svt_axi_port_configuration :: axi_interface_type is set to AXI4_STREAM then setting of this attribute to 1 is not applicable, VIP will override it to 0. Applicable only when svt_axi_system_configuration :: overlap_addr_access_control_enable is set

Applicable for ACTIVE MASTER only

 rand svt_axi_transaction :: coherent_xact_type_enum  attribute
 svt_axi_transaction::coherent_xact_type = READNOSNOOP


This variable represents the shareable coherent transaction types. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE.

 rand svt_axi_transaction :: coherent_resp_type_enum  attribute
 svt_axi_transaction::coh_rresp[]


Array for the coherent read responses. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

 int  attribute
 svt_axi_transaction::current_data_beat_num = 0


This is a counter which is incremented for every beat. Useful when user would try to access the transaction class to know its current state. This represents the beat number for which the status is reflected in member data_status.

 rand bit [31:0]   attribute
 svt_axi_transaction::cust_xact_flow = 0


Multibit array for different usages.

If cust_xact_flow[0] is set to '1', indicate that transaction should be drived immediately on the interface. This is aplicable only for AXI4 STREAM transactions.

cust_xact_flow[31:1] bits are for future use.

 rand bit [SVT_AXI_MAX_DATA_WIDTH-1:0]  attribute
 svt_axi_transaction::data[]


MASTER in active mode:

For write transactions this variable specifies write data to be driven on the WDATA bus.

SLAVE in active mode:

For read transactions this variable specifies read data to be driven on the RDATA bus.

PASSIVE MODE: This variable stores the write or read data as seen on WDATA or RDATA bus.

APPLICABLE IN ALL MODES: If svt_axi_port_configuration :: wysiwyg_enable is set to 0 (default), the data must be stored right-justified by the user. The model will drive the data on the correct lanes. If svt_axi_port_configuration :: wysiwyg_enable is set to 1, the data is transmitted as programmed by user and is reported as seen on bus. No right-justification is used in this case.
The maximum width of this signal is controlled through macro SVT_AXI_MAX_DATA_WIDTH. Default value of this macro is 1024. To change the maximum width of this variable, user can change the value of this macro. Define the new value for the macro in file svt_axi_user_defines.svi, and then specify this file to be compiled by the simulator. Also, specify +define+SVT_AXI_INCLUDE_USER_DEFINES on the simulator compilation command line. Please consult User Guide for additional information, and consult VIP example for usage demonstration.
The SVT_AXI_MAX_DATA_WIDTH macro is only used to control the maximum width of the signal. The actual width used by VIP is controlled by configuration parameter svt_axi_port_configuration :: data_width.

 rand bit  attribute
 svt_axi_transaction::data_before_addr = 0


Indicates that data will start before address for write transactions. In data_before_addr scenario (i.e., when data_before_addr = '1'), addr and data channel related delay considerations are: 1) For programming address_channel related delay: awvalid_delay and reference_event_for_addr_valid_delay are used. (for more information, look for the description of these variables). reference_event_for_addr_valid_delay should be set FIRST_WVALID_DATA_BEFORE_ADDR. In data_before_addr scenarios reference_event_for_addr_delay should be set very carefully to FIRST_DATA_HANDSHAKE_DATA_BEFORE_ADDR as this may cause potential deadlock scenarios in SLAVE DUT where slave DUT waits for awvalid signal before driving wready signal. 2) For programming data_channel related delay: wvalid_delay[] and reference_event_for_first_wvalid_delay & reference_event_for_next_wvalid_delay are used. (for more information, look for the description of these variables). For wvalid_delay[0] - reference_event_for_first_wvalid_delay For remaining indices of wvalid_delay - reference_event_for_next_wvalid_delay In data_before_addr scenario, reference_event_for_first_wvalid_delay must be PREV_WRITE_DATA_HANDSHAKE, otherwise it will cause failure. .

 svt_sequence_item :: status_enum  attribute
 svt_axi_transaction::data_status = INITIAL


Represents the status of the read or write data transfer. Following are the possible status types.

  • INITIAL : Data has not yet started on the channel
  • ACTIVE : Data valid is asserted but ready is not asserted for the current data beat. The current beat is indicated by current_data_beat_num variable
  • PARTIAL_ACCEPT : The current data beat is completed but the next data-beat is not started. The next data beat is indicated by current_data_beat_num
  • ACCEPT : Data phase is complete
  • ABORTED : Current transaction is aborted

 rand bit [SVT_AXI_MAX_DATA_USER_WIDTH-1:0]  attribute
 svt_axi_transaction::data_user[]


The variable holds the value for signals WUSER/RUSER. Applicable for all interface types. Enabled through port configuration parameters svt_axi_port_configuration :: wuser_enable and svt_axi_port_configuration :: ruser_enable.

 rand bit [(SVT_AXI_MAX_DATA_WIDTH/8)-1:0]  attribute
 svt_axi_transaction::datachk_parity_value[]


This variable represents the data check parity bit's with respect to valid data. It consists of a bit for each 8 data byte in the transaction data. Each bit of parity check data is calculated from every 8bit of data. Applicable when svt_axi_port_configuration :: check_type is set to ODD_PARITY_BYTE_DATA or ODD_PARITY_BYTE_ALL.

Active Master.

  • In case of Read type transactions, the parity value seen in the Read data channel is stored in this attribute.

Active Slave.

  • In case of Write type transactions,the parity value received in the write data channel is stored in this attribute.

Passive components.

  • parity value observed in the read or write data will be stored in this attribute.

 real  attribute
 svt_axi_transaction::data_chan_blocking_ratio


This variable stores the timing information for the data channnel blocking ratio. The blocking cycle for a beat is defined as the number of cycles that valid was asserted, but corresponding ready was not asserted. This ratio is derived from data_valid_assertion_cycle and data_ready_assertion_cycle, calculated as sum of data ready blocking cycles divided by sum of data valid assertion cycles. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 int  attribute
 svt_axi_transaction::data_ready_assertion_cycle[]


This variable stores the timing information for data ready on read and write transactions. The simulation clock cycle number when the data valid and ready both are asserted, is captured in this member. This variable is also applicable for AXI4_STREAM protocol and it will hold tready assertion cycle. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 realtime  attribute
 svt_axi_transaction::data_ready_assertion_time[]


This variable stores the timing information for data ready on read and write transactions. The simulation time when the data valid and ready both are asserted, is captured in this member. This variable is also applicable for AXI4_STREAM protocol and it will hold tready assertion time. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 rand bit  attribute
 svt_axi_transaction::data_trace_tag = 0


  • This field indicates the value of trace tag on write data channel and read data channel.
  • This is read only variable and will not be programmed by the user.
  • This is populated by the Active/Passive Slave and Active/Passive Master VIP.
  • when svt_axi_port_configuration :: loopback_trace_tag_enable is set to 1: The data_trace_tag value will be directly mapped to the associated trace_tag value in the address channel.
  • This is programmed reliably by the VIP component only after the data phase ended.
  • Therefore, these members are expected to be read/used only in write_data_phase_ended/read_data_phase_ended callback.
  • Applicable when svt_axi_port_configuration :: trace_tag_enable is set to 1.

 int  attribute
 svt_axi_transaction::data_valid_assertion_cycle[]


This variable stores the cycle information for data valid on read and write transactions. The simulation clock cycle number when the data valid is asserted, is captured in this member. This variable is also applicable for AXI4_STREAM protocol and it will hold tvalid assertion cycle. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 realtime  attribute
 svt_axi_transaction::data_valid_assertion_time[]


This variable stores the timing information for data valid on read and write transactions. The simulation time when the data valid is asserted, is captured in this member. This variable is also applicable for AXI4_STREAM protocol and it will hold tvalid assertion time. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 rand svt_axi_transaction :: xact_shareability_domain_enum  attribute
 svt_axi_transaction::domain_type = NONSHAREABLE


This variable represents the shareability domain of coherent transactions. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE.

 rand int  attribute
 svt_axi_transaction::dvm_complete_delay = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE. Defines the delay between reception of DVM Sync and transmission of DVM Complete. Delay for master component in terms of number of clock cycles for generating DVM Complete transaction after receiving a DVM Sync transaction.

Applicable for ACTIVE MASTER only.

 bit [SVT_AXI_DYNAMIC_SOURCE_MASTER_ID_XMIT_TO_SLAVES_WIDTH-1:0]  attribute
 svt_axi_transaction::dynamic_source_master_id_xmit_to_slaves = 0


Indicates the value of the source master which will be propogated in the ID field of the master and the corresponding slave transaction. Applicable for users who want to correlate master transactions to slave transactions in the system monitor. This parameter is applicable when svt_axi_port_configuration :: source_master_id_xmit_to_slaves_type is set to DYNAMIC_SOURCE_MASTER_ID_XMIT_TO_SLAVES. This property must be set by the user in a system monitor callback issued at the start of a transaction

 rand bit  attribute
 svt_axi_transaction::enable_interleave = 0


This variable controls enabling of interleaving for the current transaction.
In case of AXI4_STREAM interface type for active master, setting this variable to 1 is applicable only when svt_axi_port_configuration :: stream_interleave_depth is greater than 1.
Example: svt_axi_port_configuration :: read_data_reordering_depth = 2

Requirement: Unless all beats of transaction 1 are sent out, the beats of 2nd transactions should not be sent.

Solution: Program the enable_interleave = 0 for both the transaction 1.

 svt_axi_transaction :: excl_access_status_enum  attribute
 svt_axi_transaction::excl_access_status = EXCL_ACCESS_INITIAL


Represents the status of coherent exclusive access. Following are the possible status types:
  • EXCL_ACCESS_INITIAL : Initial state of the transaction before it is processed by master
  • EXCL_ACCESS_PASS : ACE exclusive access is successful
  • EXCL_ACCESS_FAIL : ACE exclusive access is failed

A combination of excl_access_status and excl_mon_status can be used to determine the reason for failure of exclusive store. Please refer to the User Guide for more description.

 svt_axi_transaction :: excl_mon_status_enum  attribute
 svt_axi_transaction::excl_mon_status = EXCL_MON_INVALID


Represents the status of master exclusive monitor, which indicates the cause of failure for a coherent exclusive store. It is valid only for exclusive store transaction, that is, CleanUnique. For all other transactions it is set to EXCL_MON_INVALID by default. Following are the possible status types:
  • EXCL_MON_INVALID : Master exclusive monitor does not monitor the exclusive access on the cache line associated with the transaction
  • EXCL_MON_SET : Master exclusive monitor is set for exclusive access on the cache line associated with the transaction
  • EXCL_MON_RESET : Master exclusive monitor is reset for exclusive access on the cache line associated with the transaction

A combination of excl_access_status and excl_mon_status can be used to determine the reason for failure of exclusive store. Please refer to the User Guide for more description.

 bit [7:0]   attribute
 svt_axi_transaction::final_cache_line_data[]


This variable represents the final cache line data. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE. The final cache line data of a transaction is the data of the the line just before the transaction ended.

Applicable for ACTIVE MASTER only.

 svt_axi_transaction :: cache_line_state_enum  attribute
 svt_axi_transaction::final_cache_line_state = INVALID


This variable represents the final cache line state. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE. The final cache line state of a transaction is the state of the the line just before the transaction ended. This variable is updated by the VIP, and is a read-only variable. User is not expected or supposed to modify this variable.

Applicable for ACTIVE MASTER only.

 rand bit  attribute
 svt_axi_transaction::force_to_invalid_state = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE. Indicates if the cache line state needs to be forced to an invalid state even if that is not the recommended state, since it is permissible for a cache line which is in a clean state to be held in the invalid state. Valid only when: svt_axi_port_configuration :: cache_line_state_change_type is set to LEGAL_WITHOUT_SNOOP_FILTER_CACHE_LINE_STATE_CHANGE.

Applicable for ACTIVE MASTER only.

 rand bit  attribute
 svt_axi_transaction::force_to_shared_state = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE. Indicates if the cache line state needs to be forced to a shared state even if the actual state of the line is unique, since it is permissible for a cache line which is in the unique state to be held in the shared state. Valid only when: svt_axi_port_configuration :: cache_line_state_change_type is set to LEGAL_WITH_SNOOP_FILTER_CACHE_LINE_STATE_CHANGE or LEGAL_WITHOUT_SNOOP_FILTER_CACHE_LINE_STATE_CHANGE.

Applicable for ACTIVE MASTER only.

 rand bit  attribute
 svt_axi_transaction::force_xact_to_cache_line_size = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE. Forces transactions which are not constrained to be of cacheline size by protocol to be of cacheline size. Currently applicable only to READONCE, WRITEUNIQUE, WRITENOSNOOP and READNOSNOOP transactions. Applicable to WRITENOSNOOP and READNOSNOOP only when svt_axi_port_configuration :: update_cache_for_non_coherent_xacts is set and svt_axi_port_configuration :: axi_interface_type is AXI_ACE. If this bit is set, READONCE and WRITEUNIQUE transactions will be forced to cache line size transactions. This has a dependency on svt_axi_port_configuration :: force_xact_to_cache_line_size_interface_type.

Applicable for ACTIVE MASTER only.

 rand bit [SVT_AXI_MAX_ID_WIDTH-1:0]  attribute
 svt_axi_transaction::id = 0


The variable holds the value of AWID/WID/BID/ARID/RID signals.
The maximum width of this signal is controlled through macro SVT_AXI_MAX_ID_WIDTH. Default value of this macro is 8. To change the maximum width of this variable, user can change the value of this macro. Define the new value for the macro in file svt_axi_user_defines.svi, and then specify this file to be compiled by the simulator. Also, specify +define+SVT_AXI_INCLUDE_USER_DEFINES on the simulator compilation command line. Please consult User Guide for additional information, and consult VIP example for usage demonstration.
The SVT_AXI_MAX_ID_WIDTH macro is only used to control the maximum width of the signal. The actual width used by VIP is controlled by configuration parameter svt_axi_port_configuration :: id_width.

 rand int  attribute
 svt_axi_transaction::idle_addr_ready_delay[]


Applicable when svt_axi_port_configuration :: toggle_ready_signals_during_idle_period is set. Applicable for slave VIP.

Indicates the number of cycles for which awready and arready should be high and low when the corresponding address channel is idle, that is, when AWVALID/ARVALID is low. This property helps to toggle the AWREADY/ARREADY signal during the idle period between the assertion of AWVALID/ARVALID signal of this transaction and the next transaction. This value may be assigned during randomization of the transaction object in the slave sequence. Values provided in even numbered indices indicate the number of clocks for which the ready signal must be driven low and the values in odd numbered indices indicate the number of clocks for which it must driven high. Values in this variable are applicable only until the corresponding valid is asserted. When AWVALID/ARVALID is observed on the interface, this delay is no longer applicable and the delay specified in addr_ready_delay is applied before asserting AWREADY/ARREADY. Note that toggling AWREADY/ARREADY during the idle period may lead to situations where the AWREADY/ARREADY signal is already asserted when the corresponding valid is sampled, even though the value of svt_axi_port_configuration :: default_awready or svt_axi_port_configuration :: default_arready is low. Similarly, AWREADY/ARREADY may be low when the corresponding valid is sampled, even though the value of svt_axi_port_configuration :: default_awready or svt_axi_port_configuration :: default_arready is high. In both these cases, addr_ready_delay is not applicable. The size of this array can be set to any value greater than 0, based on the number of times the user would like the signal to toggle during idle period.

 rand int  attribute
 svt_axi_transaction::idle_bready_delay[]


Applicable when svt_axi_port_configuration :: toggle_ready_signals_during_idle_period is set. Applicable for master VIP.

Indicates the number of cycles for which BREADY should be high and low when the write response channel is idle, that is, when BVALID is low. This property helps to toggle the BREADY signal during the idle period between the assertion of BVALID signal. The value for this property may be set when the transaction is randomized at the master or in a callback such as svt_axi_port_monitor_callback :: write_resp_phase_started. Values provided in even numbered indices indicate the number of clocks for which the ready signal must be driven low and the values in odd numbered indices indicate the number of clocks for which it must driven high. Values in this variable are applicable only until BVALID is asserted. When BVALID is observed on the interface, this delay is no longer applicable. The delay specified in bready_delay is applied before this attribute is applied. Note that toggling BREADY during the idle period may lead to situations where the BREADY signal is already asserted when BVALID is sampled, even though the value of svt_axi_port_configuration :: default_bready is low. Similarly, BREADY may be low when the corresponding valid is sampled, even though the value of svt_axi_port_configuration :: default_bready is high. In both these cases, bready_delay is not applicable. The size of this array can be set to any value greater than 0, based on the number of times the user would like the signal to toggle during idle period.

 real  attribute
 svt_axi_transaction::idle_chan_wakeup_toggle_assertion_time


This variable stores the timing information for wakeup of idle read or write channel. The simulation time when the wakeup is asserted, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 real  attribute
 svt_axi_transaction::idle_chan_wakeup_toggle_deassertion_time


This variable stores the timing information for wakeup of idle read or write channel. The simulation time when the wakeup is deasserted, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 rand int  attribute
 svt_axi_transaction::idle_rready_delay[]


Applicable when svt_axi_port_configuration :: toggle_ready_signals_during_idle_period is set. Applicable for master VIP.

Indicates the number of cycles for which RREADY should be high and low when the read data channel is idle, that is, when RVALID is low. This property helps to toggle the RREADY signal during the idle period between the assertion of RVALID signal. Values provided in even numbered indices indicate the number of clocks for which the ready signal must be driven low and the values in odd numbered indices indicate the number of clocks for which it must driven high. Note that the values provided in this variable are applied for all read data beats. If the user requires a different set of delays during the idle period for each beat, the user must use the read_data_phase_started callback to change the values of this property for the corresponding beat. Once changed, the values will be applicable for all subsequent beats of the transaction unless it is is changed for a subsequent beat. Values in this variable are applicable only until RVALID is asserted. When RVALID is observed on the interface, this delay is no longer applicable. The delay specified in rready_delay [] is applied before this property is used. Note that toggling RREADY during the idle period may lead to situations where the RREADY signal is already asserted when the RVALID is sampled, even though the value of svt_axi_port_configuration :: default_rready is low. Similarly, RREADY may be low when the corresponding valid is sampled, even though the value of svt_axi_port_configuration :: default_rready is high. In both these cases, rready_delay [] is not applicable. The size of this array can be set to any value greater than 0, based on the number of times the user would like the signal to toggle during idle period.

 rand bit [SVT_AXI_MAX_TVALID_DELAY-1:0]  attribute
 svt_axi_transaction::idle_tlast_value[]


Applicable when svt_axi_port_configuration :: toggle_last_signals_during_idle_period is set. Applicable for AXI4 stream master VIP.

This is a bit vector array attribute with one element size equal to 16 and array size equal to the packet size i.e stream_burst_length. The value of an individual element of the array contains all the TLAST values to be driven during the idle period before the corresponding transfer. Value of 0 indicates the TLAST signal must be driven low and the value of 1 indicates the signal must be driven high. idle_tlast_value is valid only during TVALID is low. When TVALID is high, idle_tlast_value is not applicable. Consider the following example.

idle_tlast_value[0] = 16’b0000 0000 1010 1010

Here, 16 = 16. idle_tlast_value[0] represents all the TLAST values to be driven before the first transfer of the packet.

If tvalid_delay[0] = 5, there will be 5 clock cycles before the TVALID is asserted. Here, the valid values of idle_tlast_value[0] will be idle_tlast_value[0][4:0] = 5’b01010 and TLAST will be driven to LOW -> HIGH -> LOW -> HIGH-> LOW before TVALID assertion for the first transfer.

 rand int  attribute
 svt_axi_transaction::idle_wready_delay[]


Applicable when svt_axi_port_configuration :: toggle_ready_signals_during_idle_period is set. Applicable for slave VIP.

Indicates the number of cycles for which wready should be high and low when the write data channel is idle, that is, when WVALID is low. This property helps to toggle the WREADY signal during the idle period between the assertion of WVALID signal. Values provided in even numbered indices indicate the number of clocks for which the ready signal must be driven low and the values in odd numbered indices indicate the number of clocks for which it must driven high. Note that the values provided in this variable are applied for all write data beats. If the user requires a different set of delays during the idle period for each beat, the user must use the write_data_phase_started callback to change the values of this property for the corresponding beat. Once changed, the values will be applicable for all subsequent beats of the transactions unless it is is changed for a subsequent beat. Values in this variable are applicable only until WVALID is asserted. When WVALID is observed on the interface, this delay is no longer applicable and the delay specified in wready_delay [] is applied before asserting WREADY. Note that toggling WREADY during the idle period may lead to situations where the WREADY signal is already asserted when the WVALID is sampled, even though the value of svt_axi_port_configuration :: default_wready is low. Similarly, WREADY may be low when the corresponding valid is sampled, even though the value of svt_axi_port_configuration :: default_wready is high. In both these cases, wready_delay [] is not applicable. The size of this array can be set to any value greater than 0, based on the number of times the user would like the signal to toggle during idle period.

 bit [7:0]   attribute
 svt_axi_transaction::initial_cache_line_data[]

 svt_axi_transaction :: cache_line_state_enum  attribute
 svt_axi_transaction::initial_cache_line_state = INVALID


This variable represents the initial cache line state. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE. The initial cache line state of a transaction that is driven on the READ channel is populated just after the reception of the first beat of the response of a transaction. The initial cache line state of a transaction that is driven on the WRITE channel is populated just before the transaction is started. This variable is updated by the VIP, and is a read-only variable. User is not expected or supposed to modify this variable.

Applicable for ACTIVE MASTER only.

 rand svt_axi_transaction :: interleave_pattern_enum  attribute
 svt_axi_transaction::interleave_pattern = RANDOM_BLOCK


Represents the various interleave pattern for a read and write transaction. The interleave_pattern gives flexibility to program interleave blocks with different patterns as mentioned below.

A Block is group of beats within a transaction.

EQUAL_BLOCK : Drives equal distribution of blocks provided by equal_block_length variable.

RANDOM_BLOCK : Drives the blocks programmed in random_interleave_array

Please note that currently interleaving based on EQUAL_BLOCK is not supported.

 bit  attribute
 svt_axi_transaction::is_auto_generated = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE.

Indicates if the transaction is auto generated by the VIP. Transactions are auto-generated when: 1. The cache is full and an entry needs to be evicted from the cache. 2. User supplies a cache maintenance transaction and the protocol requires that the cache line is first written into memory before sending the cache maintenance transaction.

This is a read-only member, which VIP uses to indicate whether the transaction is auto generated. It should not be modified by the user.

Applicable for ACTIVE MASTER only.

 bit  attribute
 svt_axi_transaction::is_cached_data = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE.

Indicates if the transaction ended because the requested data was already available in the cache. This bit is set by the master, no action is taken if the user sets this bit. A transaction with this bit set was not sent out on the bus and therefore other components in the testbench will not detect this transaction.

Applicable for ACTIVE MASTER only.

 bit  attribute
 svt_axi_transaction::is_coherent_xact_dropped = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

Indicates if a coherent transaction was dropped because the start state of the corresponding cache line is not as expected before transmitting the transaction. The expected start states for each of the transaction types are given in section 5 of the ACE specification.

Applicable for ACTIVE MASTER only.

 rand bit  attribute
 svt_axi_transaction::is_datachk_parity_error = 0


This variable indicate whether the data check parity error is detected in the transaction. This bit is set to 1, if parity error is deducted in a transaction. By default this is set to 0. Applicable when svt_axi_port_configuration :: check_type is set to ODD_PARITY_BYTE_DATA or ODD_PARITY_BYTE_ALL.

Active Master.

  • In case of Read type transactions, this bit is set to 1 if parity error is detected.

Active Slave.

  • In case of Write type transactions,this bit is set to 1 if parity error is detected.

Passive components.

  • This bit is set to 1 if parity error is detected in the read or write transactions.

 rand bit [(SVT_AXI_MAX_DATA_WIDTH/8)-1:0]  attribute
 svt_axi_transaction::is_datachk_passed[]


This variable represents the data check parity error bit's with respect to valid data, Each bit of parity check data is calculated from every 8bit of data with 1bit if datachk. By default all bits are set to 'b1, if any parity error is detected then that particular bit is set to 0. Applicable when svt_axi_port_configuration :: check_type is set to ODD_PARITY_BYTE_DATA or ODD_PARITY_BYTE_ALL. Active Master.
  • In case of Read type transactions, the parity error bit's for the Read data channel is stored in this attribute.

Active Slave.

  • In case of Write type transactions,the parity error bit's for the write data channel is stored in this attribute.

Passive components.

  • The parity error bit's for the read or write data will be stored in this attribute.

 bit  attribute
 svt_axi_transaction::is_delayed_response_xact = 0


A bit that must be set by the user to indicate that this transaction will be sent to the slave driver from the slave sequencer through the delayed_response_request_port of the slave driver. If the transaction is randomized before putting it into the delayed_response_request_port of the slave driver, then this bit must be set by the user. This bit must not be set for a transaction that is sent on the seq_item_port.

 bit  attribute
 svt_axi_transaction::is_last_read_data_beat = 0


Indicates if the current data beat of a read transaction has rlast asserted.This is a sticky bit in that it remains set to 1 after the last data beat.

 bit  attribute
 svt_axi_transaction::is_last_write_data_beat = 0


Indicates if the current data beat of a write transaction has wlast asserted. This is useful when data is received before addr and it is required to determine the last beat. This is a sticky bit in that it remains set to 1 after the last data beat.

 bit  attribute
 svt_axi_transaction::is_speculative_read = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE.

Indicates if the transaction is a result of a speculative read operation. A speculative read is defined as a read of a cache line that a master already holds in its cache.

This is a read-only member, which VIP uses to indicate whether the transaction is a speculative read. Modifying the value of this member will not have any effect.

Applicable for ACTIVE MASTER only.

 rand bit  attribute
 svt_axi_transaction::is_unique = 0


Represents the value of AWUNIQUE signal driven/sampled on the interface. Applicable when svt_axi_port_configuration :: awunique_enable is set. AWUNIQUE is asserted as per table C3-9 of section C3.1.4 on AWUNIQUE signal. The value in the randomized transaction may be overridden by the driver as per protocol requirements. For transactions where AWUNIQUE may be asserted or deasserted, the randomized value is driven.

 bit  attribute
 svt_axi_transaction::is_xact_for_snoop_data_transfer = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE and svt_axi_port_configuration :: snoop_response_data_transfer_mode is set to SNOOP_RESP_DATA_TRANSFER_USING_WB_WC.

Indicates if this transaction is a WRITEBACK/WRITECLEAN auto-generated transaction which was generated to transfer snoop data. When svt_axi_port_configuration :: snoop_response_data_transfer_mode is set to SNOOP_RESP_DATA_TRANSFER_USING_WB_WC, snoop data from a dirty line is transferred using a WRITEBACK/WRITECLEAN transaction instead of the snoop data channel. All transactions which have this variable set will also have is_auto_generated set.

 int  attribute
 svt_axi_transaction::LONG_BURST_wt = 400


Weight used to control distribution of longer bursts within transaction generation.

This controls the distribution of the length of the bursts using burst_length field

 int  attribute
 svt_axi_transaction::LONG_DELAY_wt = 1


Weight used to control distribution of long delays within transaction generation.

This controls the distribution of delays for the 'delay' fields (e.g., delays for asserting the ready signals).

 rand bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  attribute
 svt_axi_transaction::max_byte_addr = 0


Represents the maximum byte address of this transaction. If tagging is enabled, this will be the maximum tagged address .

 bit  attribute
 svt_axi_transaction::memory_update_complete_for_write = 0


When this bit is set , it indicates that this transaction has updated the AXI Slave memory with write data and other properties.

 rand bit [SVT_AXI_MAX_ADDR_WIDTH-1:0]  attribute
 svt_axi_transaction::min_byte_addr = 0


Represents the minimum byte address of this transaction. If tagging is enabled, this will be the minimum tagged address .

 int  attribute
 svt_axi_transaction::object_id = -1


Variable that holds the object_id of this transaction

 string  attribute
 svt_axi_transaction::pa_channel_name = ""

 string  attribute
 svt_axi_transaction::pa_object_type = ""


Variables used in generating XML/FSDB for pa writer

 bit  attribute
 svt_axi_transaction::partial_master_write_split_into_read_modified_write_slave_xact = 0


Indicates that this master transaction is a partial write transaction and this transaction will be split by the interconnect into a full Read transaction followed by partial Write transaction to the corresponding slave. Applicable for users who want to correlate master transactions to slave transactions in the system monitor. This parameter is applicable when svt_axi_port_configuration :: partial_write_to_slave_read_and_write_association_enable is set to This property must be set by the user in a system monitor callback issued at the start of a transaction

 svt_axi_transaction :: phase_type_enum  attribute
 svt_axi_transaction::phase_type = WR_ADDR


Represents the phase type. Following are the possible transaction types:
  • WRITE : Represent a WRITE transaction.
  • READ : Represents a READ transaction.

Please note that WRITE and READ transaction type is valid for svt_axi_port_configuration :: axi_interface_type is AXI3/AXI4/AXI4_LITE

 bit [SVT_AXI_MAX_DATA_WIDTH-1:0]  attribute
 svt_axi_transaction::physical_data[]


MASTER in active mode:

For write transactions this variable specifies write data to be driven on the WDATA bus.

SLAVE in active mode:

For read transactions this variable specifies read data to be driven on the RDATA bus.

PASSIVE MODE: This variable stores the write or read data as seen on WDATA or RDATA bus.

 bit [SVT_AXI_MAX_DATA_USER_WIDTH-1:0]  attribute
 svt_axi_transaction::physical_data_user[]


The variable holds the value for signals WUSER/RUSER as they are driven on the bus Applicable for all interface types. Enabled through port configuration parameters svt_axi_port_configuration :: wuser_enable and svt_axi_port_configuration :: ruser_enable.

 bit [SVT_AXI_WSTRB_WIDTH-1:0]  attribute
 svt_axi_transaction::physical_wstrb[]


MASTER in active mode:

For write transactions this variable specifies wstrb to be driven on the WSTRB bus.

SLAVE in active mode: This variable stores the WSTRB as seen on WSTRB bus.

PASSIVE MODE: This variable stores the WSTRB as seen on WSTRB bus.

 rand bit [SVT_AXI_MAX_DATA_WIDTH/64-1:0]  attribute
 svt_axi_transaction::poison[]


This field defines the Poison.
This field is applicable for write data, read data.
It consists of a bit for each 8 data byte in the transaction data, which when set indicates that set of corresponding 8 data bytes have been previously been corrupted.
Applicable when svt_axi_port_configuration :: poison_enable is set to 1.

If svt_axi_port_configuration :: wysiwyg_enable is set to 0 (default).
  • The poison must be stored right-justified by the user.
  • The model will drive poison bits on the correct lanes.
If svt_axi_port_configuration :: wysiwyg_enable is set to 1.
  • The poison bits are transmitted as programmed by user and is reported as seen on bus.
  • No right-justification is used in this case.
Active Master.
  • In case of Write type transactions, the poison value programmed in this attribute is transmitted in the Write data channel.
  • In case of Read type transactions, the poison value seen in the Read data channel is stored in this attribute. Also, in case of coherent Reads, the received poison is updated in the Master cache.

Active Slave.

  • In case of Write type transactions,the poison value received in the write data channel is stored in this attribute.
  • In case of Read type transactions,if the address holds poisoned data, the poison value is transmitted in the Read data channel.

Passive components.

  • Poison value observed in the read or write data will be stored in this attribute.
  • Passive Slave:
    • Will store the poison value observed in the Write or Read data in the memory.

 svt_axi_port_configuration  attribute
 svt_axi_transaction::port_cfg


The port configuration corresponding to this transaction

 int  attribute
 svt_axi_transaction::port_id


Represents port ID. Not currently supported.

 svt_axi_transaction :: cache_line_state_enum  attribute
 svt_axi_transaction::prefinal_cache_line_state = INVALID


This variable represents the prefinal cache line state. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE or ACE_LITE. The prefinal cache line state of a transaction is the state of the cache just before cache is updated . This variable is updated by the VIP, and is a read-only variable. User is not expected or supposed to modify this variable.

Applicable for ACTIVE MASTER only.

 rand svt_axi_transaction :: prot_type_enum  attribute
 svt_axi_transaction::prot_type = DATA_SECURE_NORMAL


Represents the protection support of a transaction. The variable holds the value for AWPROT/ARPROT. The conventions of the enumeration are:

  • NORMAL/PRIVILEGED : Normal/Priveleged access represented by AWPROT[0]/ARPROT[0]
  • SECURE / NON_SECURE : Secure/Non-Secure access represented by AWPROT[1]/ARPROT[1]
  • DATA / INSTRUCTION : Data/Instruction access represented by AWPROT[2]/ARPROT[2]

For the above conventions, following are the possible protection types:

  • DATA_SECURE_NORMAL
  • DATA_SECURE_PRIVILEGED
  • DATA_NON_SECURE_NORMAL
  • DATA_NON_SECURE_PRIVILEGED
  • INSTRUCTION_SECURE_NORMAL
  • INSTRUCTION_SECURE_PRIVILEGED
  • INSTRUCTION_NON_SECURE_NORMAL
  • INSTRUCTION_NON_SECURE_PRIVILEGED

 rand bit [SVT_AXI_QOS_WIDTH-1:0]  attribute
 svt_axi_transaction::qos = 0


The variable holds the value for AWQOS/ARQOS

 rand int  attribute
 svt_axi_transaction::rack_delay = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE. Defines the RACK delay in terms of number of clock cycles. The reference event for this delay is reference_event_for_rack_delay.

Applicable for ACTIVE MASTER only.

 rand int  attribute
 svt_axi_transaction::random_interleave_array[]


When the interleave_pattern is set to RANDOM_BLOCK, the user would program this array with blocks. There are default constraints, which the user can override and set their own block patterns.
In case of AXI4_STREAM interface type for active master, programming this array is applicable only when svt_axi_port_configuration :: stream_interleave_depth is greater than 1.

 rand svt_axi_transaction :: reference_event_for_addr_ready_delay_enum  attribute
 svt_axi_transaction::reference_event_for_addr_ready_delay = ADDR_VALID


Defines reference event for AWREADY or ARREADY delay.

  • ADDR_VALID:
    • Reference event is assertion of AWVALID or ARVALID signal.
    • This event is not applicable when default value of AWREADY = 1 or default value of ARREADY = 1.
  • FIRST_WVALID:
    • Reference event is assertion of WVALID signal.
    • This event is not applicable when default value of AWREADY = 1.
    • This event is only applicable for write address channel.

  • Reasonable constraint on reference_event_for_addr_ready_delay added in svt_axi_transaction class to constraint the value of reference_event_for_addr_ready_delay not to take FIRST_WVALID. User may switch off the constraint reasonable_reference_event_for_addr_ready_delay by setting rand_mode to 0 incase they want reference_event_for_addr_ready_delay to take FIRST_WVALID. That should be set very carefully to FIRST_WVALID as this may cause potential deadlock scenarios in AXI MASTER DUT where MASTER DUT waits for addr hand shake before driving wready signal. Also the value of the svt_axi_system_configuration :: first_walid_watchdog_timeout need to be taken care.
Applicable for ACTIVE SLAVE only.

 rand svt_axi_transaction :: reference_event_for_addr_valid_delay_enum  attribute
 svt_axi_transaction::reference_event_for_addr_valid_delay = PREV_ADDR_HANDSHAKE


Defines a reference event from which the AWVALID or ARVALID delay should start. Following are the different reference events:

PREV_ADDR_VALID: Reference event is the previous AWVALID or ARVALID signal

PREV_ADDR_HANDSHAKE: Reference event is previous read or write Address handshake

FIRST_WVALID_DATA_BEFORE_ADDR: This is used when data_before_addr bit is set. The reference event for address valid to occur is the first wvalid of the current transaction.

FIRST_DATA_HANDSHAKE_DATA_BEFORE_ADDR: This is used when data_before_addr bit is set. The reference event for address valid to occur is the first data handshake of the current transaction.

PREV_LAST_DATA_HANDSHAKE: Reference event is previous read or write last data handshake to Address valid assertion.

Reasonable constraint on reference_event_for_addr_delay in data_before_addr scenarios is added in svt_axi_transaction class to constraint the value of reference_event_for_addr_delay not to take FIRST_DATA_HANDSHAKE_DATA_BEFORE_ADDR. User may swicth off the constraint reasonable_reference_event_for_addr_delay by setting rand_mode to 0 incase they want reasonable_reference_event_for_addr_delay to take FIRST_DATA_HANDSHAKE_DATA_BEFORE_ADDR. In data_before_addr scenarios reference_event_for_addr_delay should be set very carefully to FIRST_DATA_HANDSHAKE_DATA_BEFORE_ADDR as this may cause potential deadlock scenarios in ACE SLAVE DUT where slave DUT waits for awvalid signal before driving wready signal.

 rand svt_axi_transaction :: reference_event_for_bready_delay_enum  attribute
 svt_axi_transaction::reference_event_for_bready_delay = BVALID


Defines a reference event for BREADY delay.

BVALID: Reference event is assertion of BVALID signal

 rand svt_axi_transaction :: reference_event_for_bvalid_delay_enum  attribute
 svt_axi_transaction::reference_event_for_bvalid_delay = LAST_DATA_HANDSHAKE


Defines a reference event for BVALID delay.

LAST_DATA_HANDSHAKE: Reference event for BVALID delay is completion of handshake for last write data.

ADDR_HANDSHAKE: Reference event for BVALID delay is completion of handshake for address phase.

 rand svt_axi_transaction :: reference_event_for_first_rvalid_delay_enum  attribute
 svt_axi_transaction::reference_event_for_first_rvalid_delay = READ_ADDR_HANDSHAKE


Defines the reference events to delay the first rvalid signal. The delay must be programmed in rvalid_delay[0]. Following are the different events under this category:

READ_ADDR_VALID: Reference event for first RVALID is assertion of ARVALID signal

READ_ADDR_HANDSHAKE: Reference event for first RVALID is completion of read address handshake

 rand svt_axi_transaction :: reference_event_for_first_wvalid_delay_enum  attribute
 svt_axi_transaction::reference_event_for_first_wvalid_delay = WRITE_ADDR_VALID


Defines the reference events to delay the first wvalid signal. The delay must be programmed in wvalid_delay[0]. Following are the different events under this category:

WRITE_ADDR_VALID: Reference event for first WVALID is assertion of AWVALID signal

WRITE_ADDR_HANDSHAKE: This event is applicable when write data is transmitted after write address, that is, when data_before_addr is set to 0. This reference event specifies the write address handshake.

PREV_WRITE_DATA_HANDSHAKE: This event is applicable when write data is transmitted before write address, that is, when data_before_addr is set to 1. This reference event specifies the previous write data handshake.

 rand svt_axi_transaction :: reference_event_for_next_rvalid_delay_enum  attribute
 svt_axi_transaction::reference_event_for_next_rvalid_delay = PREV_READ_HANDSHAKE


Defines the reference events to delay the RVALID signals from second beat onwards. Following are the different events under this category:

PREV_RVALID : Reference event to delay RVALID is assertion of previous rvalid. The delay timer starts as soon as previous valid signal is asserted. If previous data handshake does not complete before timer expires, the current transfer waits for the previous handshake to complete, and then immediately asserts rvalid.

PREV_READ_HANDSHAKE : Reference event to delay RVALID is completion of previous read data handshake.

 rand svt_axi_transaction :: reference_event_for_next_wvalid_delay_enum  attribute
 svt_axi_transaction::reference_event_for_next_wvalid_delay = PREV_WRITE_HANDSHAKE


Defines the reference events for WVALID delay from second beat onwards. Following are the different events under this category:

PREV_WVALID: Reference event for WVALID delay is assertion of previous wvalid. The delay timer starts as soon as previous valid signal is asserted. If previous data handshake does not complete before timer expires, the current transfer waits for the previous handshake to complete, and then immediately asserts wvalid.

PREV_WRITE_HANDSHAKE: Reference event for WVALID delay is completion of previous data handshake.

 rand svt_axi_transaction :: reference_event_for_rack_delay_enum  attribute
 svt_axi_transaction::reference_event_for_rack_delay = LAST_READ_DATA_HANDSHAKE


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

Defines the reference event from which the RACK delay should start.

  • LAST_READ_DATA_HANDSHAKE: Reference event is last data handshake

 rand svt_axi_transaction :: reference_event_for_rready_delay_enum  attribute
 svt_axi_transaction::reference_event_for_rready_delay = RVALID


Defines the reference event for RREADY delay.

RVALID: Reference event for RREADY is assertion of RVALID signal

MANUAL_RREADY: (Not supported currently)

This event allows the user to generate RREADY patterns, in cycles, as follows: 1. The reference event for this delay is the beginning of the Address handshake. 2. The rready_delay[0] represents the following a. A value > 0 is the no. of cycles default rready signal is driven b. A value < 0 is the no. of cycles default rready signal is driven after toggling 3. The remaining rready_delay element represents no. of cycles to drive rready

Example 1: For eg. RREADY pattern (cycles) = 1110011 and default_rready = 1 data_delay[0] = 3 Three cycles high (driving default_rready value) data_delay[1] = 2 Two cycles low (toggled previous RREADY value) data_delay[2] = 2 Two cycles high (toggled previous RREADY value)

For eg. cycle pattern RREADY = 0001100 and default_rready = 1 data_delay[0] = -3 Three cycles low (toggled default_rready value) data_delay[1] = 2 Two cycles high (toggled previous RREADY value) data_delay[2] = 2 Two cycles low (toggled previous RREADY value)

 rand svt_axi_transaction :: reference_event_for_tvalid_delay_enum  attribute
 svt_axi_transaction::reference_event_for_tvalid_delay = PREV_TVALID_TREADY_HANDSHAKE


Defines the reference events for TVALID delay from second beat onwards. Following are the different events under this category:

PREV_TVALID: In this case, assertion of previous tvalid signal is considered as the reference event for TVALID delay. The delay timer starts as soon as previous tvalid signal is asserted. If previous tvalid-tready handshake does not complete before timer expires, the current transfer waits for the previous handshake to complete, and then immediately asserts tvalid.

PREV_TVALID_TREADY_HANDSHAKE: Reference event for TVALID delay is completion of previous tvalid-tready handshake.

 rand svt_axi_transaction :: reference_event_for_wack_delay_enum  attribute
 svt_axi_transaction::reference_event_for_wack_delay = WRITE_RESP_HANDSHAKE


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

Defines the reference event from which the WACK delay should start.

  • WRITE_RESP_HANDSHAKE: Reference event is last data handshake

 rand svt_axi_transaction :: reference_event_for_wready_delay_enum  attribute
 svt_axi_transaction::reference_event_for_wready_delay = WVALID


Defines the reference events for WREADY delay.

WVALID: Reference event for WREADY is assertion of WVALID signal.

MANUAL_WREADY: (Not supported currently) This event allows the user to generate WREADY patterns, in cycles, as follows : 1. The reference event for this delay is the beginning of the Address handshake. 2. The wready_delay[0] represents the following a. A value > 0 is the no. of cycles default wready signal is driven b. A value < 0 is the no. of cycles default wready signal is driven after toggling 3. The remaining wready_delay element represents no. of cycles to drive wready

Example 1: For eg. WREADY pattern (cycles) = 1110011 and default_wready = 1 data_delay[0] = 3 Three cycles high (driving default_wready value) data_delay[1] = 2 Two cycles low (toggled previous WREADY value) data_delay[2] = 2 Two cycles high (toggled previous WREADY value)

For eg. cycle pattern WREADY = 0001100 and default_wready = 1 data_delay[0] = -3 Three cycles low (toggled default_wready value) data_delay[1] = 2 Two cycles high (toggled previous WREADY value) data_delay[2] = 2 Two cycles low (toggled previous WREADY value)

 rand bit [SVT_AXI_REGION_WIDTH-1:0]  attribute
 svt_axi_transaction::region = 0


The variable holds the value for AWREGION/ARREGION

 rand int  attribute
 svt_axi_transaction::reordering_priority = 1


Sets the reordering priority of the current transaction within the set of transactions that are allowed access to read data channel based on svt_axi_port_configuration :: read_data_reordering_depth.

This member is applicable only when svt_axi_port_configuration :: reordering_algorithm is svt_axi_port_configuration :: PRIORITIZED.

This value indicates the priority of sending the response to current transaction compared to remaining transactions within the depth indicated by svt_axi_port_configuration :: read_data_reordering_depth for read transactions or by svt_axi_port_configuration :: write_resp_reordering_depth for write transactions.

Note that the value of this attribute should be within the following range: [1:svt_axi_port_configuration :: read_data_reordering_depth] for read transactions and [1:svt_axi_port_configuration :: write_resp_reordering_depth] for write transactions.

If svt_axi_port_configuration :: reordering_priority_high_value is set to ‘1’ then, the transactions with highest value for this attribute will get higher priority.

If svt_axi_port_configuration :: reordering_priority_high_value is set to ‘0’ then, the transactions with least value for this attribute will get higher priority.

If there are more than one transactions with same priority, those transaction will be processed in the same order as they are received.

Applicable for ACTIVE SLAVE only.

 rand bit  attribute
 svt_axi_transaction::resp_trace_tag = 0


  • This field indicates the value of trace tag on write response channel.
  • This is read only variable and will not be programmed by the user.
  • This is populated by the Active/Passive Slave and Active/Passive Master VIP.
  • when svt_axi_port_configuration :: loopback_trace_tag_enable is set to 1: The resp_trace_tag value will be directly mapped to the associated trace_tag value in the address channel.
  • This is programmed reliably by the VIP component only after the write response phase ended.
  • Therefore, these members are expected to be read/used only in write_resp_phase_ended callback.
  • Applicable when svt_axi_port_configuration :: trace_tag_enable is set to 1.

 rand bit [SVT_AXI_MAX_BRESP_USER_WIDTH-1:0]  attribute
 svt_axi_transaction::resp_user = 0


The variable holds the value for signal BUSER. Applicable for all interface types. Enabled through port configuration parameter svt_axi_port_configuration :: buser_enable.

 rand int  attribute
 svt_axi_transaction::rready_delay[]


If configuration parameter svt_axi_port_configuration :: default_rready is FALSE, this member defines the RREADY signal delay in number of clock cycles. The reference event for this delay is reference_event_for_rready_delay

If configuration parameter svt_axi_port_configuration :: default_rready is TRUE, this member defines the number of clock cycles for which RREADY signal should be deasserted after each handshake, before pulling it up again to its default value.

Applicable for ACTIVE MASTER only.

 rand svt_axi_transaction :: resp_type_enum  attribute
 svt_axi_transaction::rresp[]


This array variable specifies the response for read transaction. The array holds the value for RRESP. Following are the possible response types:
  • OKAY
  • EXOKAY
  • SLVERR
  • DECERR
  • PREFETCHED_DEFER, this will indicate PREFETCHED response indicating that the read data is valid and has been sourced from a prefetched value.
  • TRANSFAULT

MASTER ACTIVE MODE:

Will Store the read responses received from the slave.

SLAVE ACTIVE MODE:

The read responses programmed by the user.

PASSIVE MODE - MASTER/SLAVE:

Stores the read responses seen on the bus.

 rand int  attribute
 svt_axi_transaction::rvalid_delay[]


Defines RVALID delay, in terms of number of clock cycles. The reference event for this delay is:

Applicable for ACTIVE SLAVE only.

 int  attribute
 svt_axi_transaction::SHORT_BURST_wt = 500


Weight used to control distribution of short bursts within transaction generation.

This controls the distribution of the length of the bursts using burst_length field

 int  attribute
 svt_axi_transaction::SHORT_DELAY_wt = 500


Weight used to control distribution of short delays within transaction generation.

This controls the distribution of delays for the 'delay' fields (e.g., delays for asserting the ready signals).

 rand int  attribute
 svt_axi_transaction::stream_burst_length = 1


Defines the burst length of a AXI4 Stream Packet. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI4_STREAM.

 bit  attribute
 svt_axi_transaction::suspend_arready = 0


A bit that indicates that the testbench would like to suspend arready signal for a READ transaction until this bit is reset. This is applicable only when svt_axi_port_configuration :: default_arready is set to 0 svt_axi_transaction :: addr_ready_delay won't be applicable when this bit is set to 1

Applicable for ACTIVE SLAVE only.

 bit  attribute
 svt_axi_transaction::suspend_awready = 0


A bit that indicates that the testbench would like to suspend awready signal for a WRITE transaction until this bit is reset. This is applicable only when svt_axi_port_configuration :: default_awready is set to 0 svt_axi_transaction :: addr_ready_delay won't be applicable when this bit is set to 1

Applicable for ACTIVE SLAVE only.

 bit  attribute
 svt_axi_transaction::suspend_awvalid_to_data_before_addr = 0


Indicates that data will start before address for write transactions, even though data_before_addr is set to 0. This is useful when awvalid is suspended for write transaction and respective transaction data is driven before resuming the suspended awvalid signal.

 bit  attribute
 svt_axi_transaction::suspend_data_per_write_beat[]


A bit array that indicates that the testbench would like to suspend write data beats and keep all beats suspended for a WRITE transaction until this bit is reset.

Applicable with svt_axi_port_configuration :: explicit_write_suspension_enable and for ACTIVE AXI4 MASTER only.

 bit  attribute
 svt_axi_transaction::suspend_response = 0


A bit that indicates that the testbench would like to suspend response/data for a READ/WRITE/COHERENT transaction until this bit is reset. This bit is usually set by the testbench when it needs to provide response information to the driver (the slave driver expects the response information in 0 time), but the data to respond with is not yet known. The testbench can set this bit and put this transaction back into the input channel of the slave. The transaction's response/data will not be sent until this bit is reset. Once the data is available, the testbench can populate response fields and reset this bit, upon which the slave driver will send the response/data of this transaction.

Applicable for ACTIVE SLAVE only.

 bit  attribute
 svt_axi_transaction::suspend_response_per_read_beat[]


A bit array that indicates that the testbench would like to suspend read data beats and keep all beats suspended for a READ transaction until this bit is reset. This bit array is usually set by the testbench when it needs to provide response information to the driver (the slave driver expects the response information in 0 time), but the data to respond with is not yet known. With this bit array, read interleaving and out of order responses can be specified. Note that suspend_response is prioritized to this bit array.

Applicable with svt_axi_port_configuration :: suspend_response_per_read_beat_enable and for ACTIVE SLAVE only.

 bit  attribute
 svt_axi_transaction::suspend_wready = 0


A bit that indicates that the testbench would like to suspend wready signal for a WRITE transaction until this bit is reset. This is applicable only when svt_axi_port_configuration :: default_wready is set to 0 svt_axi_transaction :: wready_delay won't be applicable when this bit is set to 1

Applicable for ACTIVE SLAVE only.

 bit  attribute
 svt_axi_transaction::suspend_write_addr


A bit that indicates that the testbench would like to suspend the write addr phase until this bit is reset.

Applicable with svt_axi_port_configuration :: explicit_write_suspension_enable and for ACTIVE AXI4 MASTER only.

 rand bit [SVT_AXI_MAX_TDATA_WIDTH-1:0]  attribute
 svt_axi_transaction::tdata[]


Used to drive TDATA signals. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI4_STREAM.

 rand bit [SVT_AXI_MAX_TDEST_WIDTH-1:0]  attribute
 svt_axi_transaction::tdest


TDEST provides routing information for the data stream. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI4_STREAM.

 bit [3:0]   attribute
 svt_axi_transaction::tdestchk_parity

 rand bit [SVT_AXI_MAX_TID_WIDTH-1:0]  attribute
 svt_axi_transaction::tid = 0


The variable holds the value of TID signal. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI4_STREAM.

 bit [0:0]   attribute
 svt_axi_transaction::tidchk_parity

 rand bit [SVT_AXI_TKEEP_WIDTH-1:0]  attribute
 svt_axi_transaction::tkeep[]


TKEEP is the byte qualifier that indicates whether the content of the associated byte of TDATA is processed as part of the data stream. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI4_STREAM.

 bit [1:0]   attribute
 svt_axi_transaction::tkeepchk_parity

 rand int  attribute
 svt_axi_transaction::total_byte_count = 0


Represents the total byte count of this transaction. .

 rand bit  attribute
 svt_axi_transaction::trace_tag = 0


 rand int  attribute
 svt_axi_transaction::tready_delay[]


If configuration parameter svt_axi_port_configuration :: default_tready is FALSE, this member defines the TREADY signal delay in number of clock cycles. The reference event for this delay is reference_event_for_tready_delay.

Please note that reference_event_for_tready_delay is not supported currently. Absolute value of tready_delay is considered for delay calculation with respect to tvalid signal.

If configuration parameter svt_axi_port_configuration :: default_tready is TRUE, this member defines the number of clock cycles for which TREADY signal should be deasserted after each handshake, before pulling it up again to its default value.

When the configuration parameter svt_axi_port_configuration :: toggle_ready_signals_during_idle_period is set to 1 then this attribute is inapplicable and the configuration attributes tready_assert_min_delay, tready_assert_max_delay, tready_deassert_min_delay and tready_deassert_max_delay are used to toggle the tready signal during the idle period. Applicable for ACTIVE SLAVE only.

 rand bit [SVT_AXI_TSTRB_WIDTH-1:0]  attribute
 svt_axi_transaction::tstrb[]


Used to drive TSTRB signal. The strobes are right aligned and the model will drive strobes on appropriate lanes. The model also takes care of the endianness while driving tstrb. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI4_STREAM.

 bit [1:0]   attribute
 svt_axi_transaction::tstrbchk_parity

 rand bit [SVT_AXI_MAX_TUSER_WIDTH-1:0]  attribute
 svt_axi_transaction::tuser[]


TUSER is user defined sideband information that can be transmitted alongside the data stream. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI4_STREAM.

 bit [0:0]   attribute
 svt_axi_transaction::tuserchk_parity

 rand int  attribute
 svt_axi_transaction::tvalid_delay[]


Defines the delay in number of clock cycles for TVALID signal. The reference event for this delay is: reference_event_for_tvalid_delay
  • PREV_TVALID_TREADY_HANDSHAKE : Previous tvalid-tready handshake as the reference event
  • PREV_TVALID : Previous tvalid assertion as the reference event
Applicable for ACTIVE MASTER only.

 rand int  attribute
 svt_axi_transaction::wack_delay = 0


Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE. Defines the WACK delay in terms of number of clock cycles. The reference event for this delay is reference_event_for_wack_delay.

Applicable for ACTIVE MASTER only.

 rand int  attribute
 svt_axi_transaction::wready_delay[]


If configuration parameter svt_axi_port_configuration :: default_wready is FALSE, this member defines the WREADY signal delay in number of clock cycles. The reference event for this delay is reference_event_for_wready_delay.

If configuration parameter svt_axi_port_configuration :: default_wready is TRUE, this member defines the number of clock cycles for which WREADY signal should be deasserted after each handshake, before pulling it up again to its default value.

Applicable for ACTIVE SLAVE only.

 int  attribute
 svt_axi_transaction::write_resp_ready_assertion_cycle


This variable stores the cycle information for response ready on a write transaction. The simulation clock cycle number when the write response valid and ready both are asserted, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 realtime  attribute
 svt_axi_transaction::write_resp_ready_assertion_time


This variable stores the timing information for response ready on write transactions. The simulation time when the response valid and ready both are asserted, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 svt_sequence_item :: status_enum  attribute
 svt_axi_transaction::write_resp_status = INITIAL


Represents the status of the write response transfer. Following are the possible status types.
  • INITIAL : Response has not yet started on the channel
  • ACTIVE : BVALID is asserted, but not BREADY
  • ACCEPT : Write response is complete
  • ABORTED : Current transaction is aborted

 int  attribute
 svt_axi_transaction::write_resp_valid_assertion_cycle


This variable stores the cycle information for response valid on a write transaction. The simulation clock cycle number when the write response valid is asserted, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 realtime  attribute
 svt_axi_transaction::write_resp_valid_assertion_time


This variable stores the timing information for response valid on write transactions. The simulation time when the response valid is asserted, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 rand bit [SVT_AXI_WSTRB_WIDTH-1:0]  attribute
 svt_axi_transaction::wstrb[]


Array of Write strobes. If svt_axi_port_configuration :: wysiwyg_enable is set to 0 (default), the wstrb must be stored right-justified by the user. The model will drive these strobes on the correct lanes. If svt_axi_port_configuration :: wysiwyg_enable is set to 1, the wstrb is transmitted as programmed by user and is reported as seen on bus. No right-justification is used in this case.

 rand int  attribute
 svt_axi_transaction::wvalid_delay[]


Defines the delay in number of cycles for WVALID signal. The reference event for this delay is: Applicable for ACTIVE MASTER only.

 realtime  attribute
 svt_axi_transaction::xact_consumed_by_driver_time


The simulation time when the master or slave driver receives the transaction from the sequencer, is captured in this member. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 real  attribute
 svt_axi_transaction::xact_consumed_time_to_begin_time_delay


This variable stores the transaction consumed at driver timing information. The transaction consumed at driver time to begin time delay is calculated as the difference between begin_time and xact_consumed_by_driver_time. This information can be used for doing performance analysis. VIP updates the value of this member variable, user does not need to program this variable.

 rand svt_axi_transaction :: xact_type_enum  attribute
 svt_axi_transaction::xact_type = WRITE


Represents the transaction type. Following are the possible transaction types:
  • WRITE : Represent a WRITE transaction.
  • READ : Represents a READ transaction.
  • COHERENT : Represents a COHERENT transaction.

Please note that WRITE and READ transaction type is valid for svt_axi_port_configuration :: axi_interface_type is AXI3/AXI4/AXI4_LITE and COHERENT transaction type is valid for svt_axi_port_configuration :: axi_interface_type is AXI_ACE.

 int  attribute
 svt_axi_transaction::ZERO_BURST_wt = 100


Weight used to control distribution of burst length to 1 within transaction generation.

This controls the distribution of the length of the bursts using burst_length field

 int  attribute
 svt_axi_transaction::ZERO_DELAY_wt = 100


Weight used to control distribution of zero delay within transaction generation.

This controls the distribution of delays for the 'delay' fields (e.g., delays for asserting the ready signals).


Member Typedef Documentation

 typedef enum  svt_axi_transaction::atomic_type_enum

Enum to represent locked type in a transaction

NORMAL(SVT_AXI_TRANSACTION_NORMAL)
EXCLUSIVE(SVT_AXI_TRANSACTION_EXCLUSIVE)
LOCKED(SVT_AXI_TRANSACTION_LOCKED)

 typedef enum  svt_axi_transaction::barrier_type_enum

Enum to represent barrier transaction type. Enum to represent four levels of shareability domain for snoop transactions. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

NORMAL_ACCESS_RESPECT_BARRIER(SVT_AXI_NORMAL_ACCESS_RESPECT_BARRIER)
MEMORY_BARRIER(SVT_AXI_MEMORY_BARRIER)
NORMAL_ACCESS_IGNORE_BARRIER(SVT_AXI_NORMAL_ACCESS_IGNORE_BARRIER)
SYNC_BARRIER(SVT_AXI_SYNC_BARRIER)

 typedef enum  svt_axi_transaction::burst_size_enum

Enum to represent transfer sizes

BURST_SIZE_8BIT(SVT_AXI_TRANSACTION_BURST_SIZE_8)
BURST_SIZE_16BIT(SVT_AXI_TRANSACTION_BURST_SIZE_16)
BURST_SIZE_32BIT(SVT_AXI_TRANSACTION_BURST_SIZE_32)
BURST_SIZE_64BIT(SVT_AXI_TRANSACTION_BURST_SIZE_64)
BURST_SIZE_128BIT(SVT_AXI_TRANSACTION_BURST_SIZE_128)
BURST_SIZE_256BIT(SVT_AXI_TRANSACTION_BURST_SIZE_256)
BURST_SIZE_512BIT(SVT_AXI_TRANSACTION_BURST_SIZE_512)
BURST_SIZE_1024BIT(SVT_AXI_TRANSACTION_BURST_SIZE_1024)
BURST_SIZE_2048BIT(SVT_AXI_TRANSACTION_BURST_SIZE_2048)
BURST_SIZE_4096BIT(SVT_AXI_TRANSACTION_BURST_SIZE_4096)

 typedef enum  svt_axi_transaction::burst_type_enum

Enum to represent burst type in a transaction

FIXED(SVT_AXI_TRANSACTION_BURST_FIXED)
INCR(SVT_AXI_TRANSACTION_BURST_INCR)
WRAP(SVT_AXI_TRANSACTION_BURST_WRAP)

 typedef enum  svt_axi_transaction::cache_line_state_enum
INVALID(SVT_AXI_CACHE_LINE_STATE_INVALID)
UNIQUECLEAN(SVT_AXI_CACHE_LINE_STATE_UNIQUECLEAN)
SHAREDCLEAN(SVT_AXI_CACHE_LINE_STATE_SHAREDCLEAN)
UNIQUEDIRTY(SVT_AXI_CACHE_LINE_STATE_UNIQUEDIRTY)
SHAREDDIRTY(SVT_AXI_CACHE_LINE_STATE_SHAREDDIRTY)

 typedef enum  svt_axi_transaction::coherent_resp_type_enum

Enum to represent responses for a coherent transaction Additional read response bits that provide information on the completion of a shareable read transaction. Enum to represent barrier transaction type. Enum to represent four levels of shareability domain for snoop transactions. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

UNIQUE_CLEAN(SVT_AXI_COHERENT_RESP_TYPE_UNIQUE_CLEAN)
UNIQUE_DIRTY(SVT_AXI_COHERENT_RESP_TYPE_UNIQUE_DIRTY)
SHARED_CLEAN(SVT_AXI_COHERENT_RESP_TYPE_SHARED_CLEAN)
SHARED_DIRTY(SVT_AXI_COHERENT_RESP_TYPE_SHARED_DIRTY)

 typedef enum  svt_axi_transaction::coherent_xact_type_enum

Enum to represent the coherent transaction type. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE/ACE_LITE.

READNOSNOOP(SVT_AXI_COHERENT_TRANSACTION_TYPE_READNOSNOOP)
READONCE(SVT_AXI_COHERENT_TRANSACTION_TYPE_READONCE)
READSHARED(SVT_AXI_COHERENT_TRANSACTION_TYPE_READSHARED)
READCLEAN(SVT_AXI_COHERENT_TRANSACTION_TYPE_READCLEAN)
READNOTSHAREDDIRTY(SVT_AXI_COHERENT_TRANSACTION_TYPE_READNOTSHAREDDIRTY)
READUNIQUE(SVT_AXI_COHERENT_TRANSACTION_TYPE_READUNIQUE)
CLEANUNIQUE(SVT_AXI_COHERENT_TRANSACTION_TYPE_CLEANUNIQUE)
MAKEUNIQUE(SVT_AXI_COHERENT_TRANSACTION_TYPE_MAKEUNIQUE)
CLEANSHARED(SVT_AXI_COHERENT_TRANSACTION_TYPE_CLEANSHARED)
CLEANINVALID(SVT_AXI_COHERENT_TRANSACTION_TYPE_CLEANINVALID)
MAKEINVALID(SVT_AXI_COHERENT_TRANSACTION_TYPE_MAKEINVALID)
DVMCOMPLETE(SVT_AXI_COHERENT_TRANSACTION_TYPE_DVMCOMPLETE)
DVMMESSAGE(SVT_AXI_COHERENT_TRANSACTION_TYPE_DVMMESSAGE)
READBARRIER(SVT_AXI_COHERENT_TRANSACTION_TYPE_READBARRIER)
WRITENOSNOOP(SVT_AXI_COHERENT_TRANSACTION_TYPE_WRITENOSNOOP)
WRITEUNIQUE(SVT_AXI_COHERENT_TRANSACTION_TYPE_WRITEUNIQUE)
WRITELINEUNIQUE(SVT_AXI_COHERENT_TRANSACTION_TYPE_WRITELINEUNIQUE)
WRITECLEAN(SVT_AXI_COHERENT_TRANSACTION_TYPE_WRITECLEAN)
WRITEBACK(SVT_AXI_COHERENT_TRANSACTION_TYPE_WRITEBACK)
EVICT(SVT_AXI_COHERENT_TRANSACTION_TYPE_EVICT)
WRITEBARRIER(SVT_AXI_COHERENT_TRANSACTION_TYPE_WRITEBARRIER)
WRITEEVICT(SVT_AXI_COHERENT_TRANSACTION_TYPE_WRITEEVICT)
CLEANSHAREDPERSIST(SVT_AXI_COHERENT_TRANSACTION_TYPE_CLEANSHAREDPERSIST)
READONCECLEANINVALID(SVT_AXI_COHERENT_TRANSACTION_TYPE_READONCECLEANINVALID)
READONCEMAKEINVALID(SVT_AXI_COHERENT_TRANSACTION_TYPE_READONCEMAKEINVALID)

 typedef enum  svt_axi_transaction::dvm_message_enum

Enum to represent DVM Message type.

The bit representation of this type matches the encoding of the DVM message type field in the AxADDR AMBA4 signal.

Used in the svt_amba_pv_extension class.


TLB_INVALIDATE('h0)
TLB invalidate
BRANCH_PREDICTOR_INVALIDATE('h1)
Branch predictor invalidate
PHYSICAL_INSTRUCTION_CACHE_INVALIDATE('h2)
Physical instruction cache invalidate
VIRTUAL_INSTRUCTION_CACHE_INVALIDATE('h3)
Virtual instruction cache invalidate
SYNC('h4)
Synchronisation message
HINT('h6)
Reserved message type for future Hint messages

 typedef enum  svt_axi_transaction::dvm_os_enum

Enum to represent DVM message Guest OS or hypervisor type.

The bit representation of this type matches the encoding of the DVM guest OS or hypervisor field in the AxADDR AMBA4 signal.


HYPERVISOR_OR_GUEST('h0)
Transaction applies to hypervisor and all Guest OS
GUEST('h2)
Transaction applies to Guest OS
HYPERVISOR('h3)
Transaction applies to hypervisor

 typedef enum  svt_axi_transaction::dvm_security_enum

Enum to represent DVM message security type.

The bit representation of this type matches the encoding of the DVM security field in the AxADDR AMBA4 signal.


AMBA_PV_SECURE_AND_NON_SECURE('h0)
Transaction applies to Secure and Non-secure
AMBA_PV_SECURE_ONLY('h2)
Transaction applies to Secure only
AMBA_PV_NON_SECURE_ONLY('h3)
Transaction applies to Non-secure only

 typedef enum  svt_axi_transaction::excl_access_status_enum

Enum to represent the status of coherent exclusive access

EXCL_ACCESS_INITIAL(SVT_AXI_COHERENT_EXCL_ACCESS_INITIAL)
EXCL_ACCESS_PASS(SVT_AXI_COHERENT_EXCL_ACCESS_PASS)
EXCL_ACCESS_FAIL(SVT_AXI_COHERENT_EXCL_ACCESS_FAIL)

 typedef enum  svt_axi_transaction::excl_mon_status_enum

Enum to represent the status of master exclusive monitor, which indicates the cause of failure for a coherent exclusive store

EXCL_MON_INVALID(SVT_AXI_EXCL_MON_INVALID)
EXCL_MON_SET(SVT_AXI_EXCL_MON_SET)
EXCL_MON_RESET(SVT_AXI_EXCL_MON_RESET)

 typedef enum  svt_axi_transaction::interleave_pattern_enum

Enum for interleave block pattern

EQUAL_BLOCK(SVT_AXI_TRANSACTION_INTERLEAVE_EQUAL_BLOCK)
RANDOM_BLOCK(SVT_AXI_TRANASCTION_INTERLEAVE_RANDOM_BLOCK)

 typedef enum  svt_axi_transaction::phase_type_enum

Enum to represent phase type in a transaction

WR_ADDR(SVT_AXI_PHASE_TYPE_WR_ADDR)
WR_DATA(SVT_AXI_PHASE_TYPE_WR_DATA)
WR_RESP(SVT_AXI_PHASE_TYPE_WR_RESP)
RD_ADDR(SVT_AXI_PHASE_TYPE_RD_ADDR)
RD_DATA(SVT_AXI_PHASE_TYPE_RD_DATA)

 typedef enum  svt_axi_transaction::prot_type_enum

Enum to represent locked type in a transaction

DATA_SECURE_NORMAL(SVT_AXI_DATA_SECURE_NORMAL)
DATA_SECURE_PRIVILEGED(SVT_AXI_DATA_SECURE_PRIVILEGED)
DATA_NON_SECURE_NORMAL(SVT_AXI_DATA_NON_SECURE_NORMAL)
DATA_NON_SECURE_PRIVILEGED(SVT_AXI_DATA_NON_SECURE_PRIVILEGED)
INSTRUCTION_SECURE_NORMAL(SVT_AXI_INSTRUCTION_SECURE_NORMAL)
INSTRUCTION_SECURE_PRIVILEGED(SVT_AXI_INSTRUCTION_SECURE_PRIVILEGED)
INSTRUCTION_NON_SECURE_NORMAL(SVT_AXI_INSTRUCTION_NON_SECURE_NORMAL)
INSTRUCTION_NON_SECURE_PRIVILEGED(SVT_AXI_INSTRUCTION_NON_SECURE_PRIVILEGED)

 typedef enum  svt_axi_transaction::reference_event_for_addr_ready_delay_enum

Enum to represent address delay reference event

ADDR_VALID(SVT_AXI_SLAVE_TRANSACTION_ADDR_VALID_REF)
FIRST_WVALID(SVT_AXI_SLAVE_TRANSACTION_FIRST_WVALID_REF)

 typedef enum  svt_axi_transaction::reference_event_for_addr_valid_delay_enum

Enum to represent address delay reference event

PREV_ADDR_VALID(SVT_AXI_MASTER_TRANSACTION_PREV_ADDR_VALID_REF)
PREV_ADDR_HANDSHAKE(SVT_AXI_MASTER_TRANSACTION_PREV_ADDR_HANDSHAKE_REF)
FIRST_WVALID_DATA_BEFORE_ADDR(SVT_AXI_MASTER_TRANSACTION_FIRST_WVALID_DATA_BEFORE_ADDR)
FIRST_DATA_HANDSHAKE_DATA_BEFORE_ADDR(SVT_AXI_MASTER_TRANSACTION_FIRST_DATA_HANDSHAKE_DATA_BEFORE_ADDR)
PREV_LAST_DATA_HANDSHAKE(SVT_AXI_MASTER_TRANSACTION_PREV_LAST_DATA_HANDSHAKE)

 typedef enum  svt_axi_transaction::reference_event_for_bready_delay_enum

Enum to represent response delay reference event

BVALID(SVT_AXI_MASTER_TRANSACTION_BVALID_REF)

 typedef enum  svt_axi_transaction::reference_event_for_bvalid_delay_enum

Enum to represent write response delay reference event

LAST_DATA_HANDSHAKE(SVT_AXI_SLAVE_TRANSACTION_LAST_DATA_HANDSHAKE_REF)
ADDR_HANDSHAKE(SVT_AXI_SLAVE_TRANSACTION_ADDR_HANDSHAKE_REF)

 typedef enum  svt_axi_transaction::reference_event_for_first_rvalid_delay_enum

Enum to represent reference event for delay for first rvalid

READ_ADDR_VALID(SVT_AXI_SLAVE_TRANSACTION_READ_ADDR_VALID_REF)
READ_ADDR_HANDSHAKE(SVT_AXI_SLAVE_TRANSACTION_READ_ADDR_HANDSHAKE_REF)

 typedef enum  svt_axi_transaction::reference_event_for_first_wvalid_delay_enum

Enum to represent data delay reference event

WRITE_ADDR_VALID(SVT_AXI_MASTER_TRANSACTION_WRITE_ADDR_VALID_REF)
WRITE_ADDR_HANDSHAKE(SVT_AXI_MASTER_TRANSACTION_WRITE_ADDR_HANDSHAKE_REF)
PREV_WRITE_DATA_HANDSHAKE(SVT_AXI_MASTER_TRANSACTION_PREV_WRITE_DATA_HANDSHAKE_REF)

 typedef enum  svt_axi_transaction::reference_event_for_next_rvalid_delay_enum

Enum to represent reference event for delay for second rvalid onwards

PREV_RVALID(SVT_AXI_SLAVE_TRANSACTION_PREV_RVALID_REF)
PREV_READ_HANDSHAKE(SVT_AXI_SLAVE_TRANSACTION_PREV_READ_HANDSHAKE_REF)
READ_ADDR_HANDSHAKE_OF_SAME_XACT(SVT_AXI_SLAVE_TRANSACTION_READ_ADDR_HANDSHAKE_OF_SAME_XACT_REF)

 typedef enum  svt_axi_transaction::reference_event_for_next_wvalid_delay_enum
PREV_WVALID(SVT_AXI_MASTER_TRANSACTION_PREV_WVALID_REF)
PREV_WRITE_HANDSHAKE(SVT_AXI_MASTER_TRANSACTION_PREV_WRITE_HANDSHAKE_REF)

 typedef enum  svt_axi_transaction::reference_event_for_rack_delay_enum

Enum to represent read acknowledgment delay reference event. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

LAST_READ_DATA_HANDSHAKE(SVT_AXI_MASTER_TRANSACTION_LAST_READ_DATA_HANDSHAKE_REF)

 typedef enum  svt_axi_transaction::reference_event_for_rready_delay_enum
RVALID(SVT_AXI_MASTER_TRANSACTION_RVALID_REF)
MANUAL_RREADY(SVT_AXI_MASTER_TRANSACTION_MANUAL_RREADY_REF)

 typedef enum  svt_axi_transaction::reference_event_for_tvalid_delay_enum

Enum to represent tvalid delay reference event

PREV_TVALID_TREADY_HANDSHAKE(SVT_AXI_MASTER_TRANSACTION_PREV_TVALID_TREADY_HANDSHAKE_REF)
PREV_TVALID(SVT_AXI_MASTER_TRANSACTION_PREV_TVALID_REF)

 typedef enum  svt_axi_transaction::reference_event_for_wack_delay_enum

Enum to represent write acknowledgment delay reference event. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

WRITE_RESP_HANDSHAKE(SVT_AXI_MASTER_TRANSACTION_WRITE_RESP_HANDSHAKE_REF)

 typedef enum  svt_axi_transaction::reference_event_for_wready_delay_enum

Enum to represent reference event for delay for wready signal

WVALID(SVT_AXI_SLAVE_TRANSACTION_WVALID_REF)
MANUAL_WREADY(SVT_AXI_SLAVE_TRANSACTION_MANUAL_WREADY_REF)

 typedef enum  svt_axi_transaction::resp_type_enum

Enum to represent responses in a transaction

OKAY(SVT_AXI_OKAY_RESPONSE)
EXOKAY(SVT_AXI_EXOKAY_RESPONSE)
SLVERR(SVT_AXI_SLVERR_RESPONSE)
DECERR(SVT_AXI_DECERR_RESPONSE)

 typedef enum  svt_axi_transaction::stream_xact_type_enum
BYTE_STREAM(SVT_AXI_STREAM_TYPE_BYTE_STREAM)
CONTINUOUS_ALIGNED_STREAM(SVT_AXI_STREAM_TYPE_CONTINUOUS_ALIGNED_STREAM)
CONTINUOUS_UNALIGNED_STREAM(SVT_AXI_STREAM_TYPE_CONTINUOUS_UNALIGNED_STREAM)
SPARSE_STREAM(SVT_AXI_STREAM_TYPE_SPARSE_STREAM)
USER_STREAM(SVT_AXI_STREAM_TYPE_USER_STREAM)

 typedef enum  svt_axi_transaction::xact_shareability_domain_enum

Enum to represent four levels of shareability domain for snoop transactions. Applicable when svt_axi_port_configuration :: axi_interface_type is set to AXI_ACE.

NONSHAREABLE(SVT_AXI_DOMAIN_TYPE_NONSHAREABLE)
INNERSHAREABLE(SVT_AXI_DOMAIN_TYPE_INNERSHAREABLE)
OUTERSHAREABLE(SVT_AXI_DOMAIN_TYPE_OUTERSHAREABLE)
SYSTEMSHAREABLE(SVT_AXI_DOMAIN_TYPE_SYSTEMSHAREABLE)

 typedef enum  svt_axi_transaction::xact_type_enum

Enum to represent transaction type Note: IDLE value is currently reserved. Currently not used. Note: COHERENT value is applicable from transaction perspective and not from channel perspective. Note: ATOMIC value is used for atomic transactions. Note: READ_WRITE value is used to represent transmitted_channel for ATOMICLOAD, ATOMICSWAP and ATOMICCOMPARE transactions.

READ(SVT_AXI_TRANSACTION_TYPE_READ)
WRITE(SVT_AXI_TRANSACTION_TYPE_WRITE)
IDLE(SVT_AXI_TRANSACTION_TYPE_IDLE)
COHERENT(SVT_AXI_TRANSACTION_TYPE_COHERENT)
DATA_STREAM(SVT_AXI_TRANSACTION_DATA_STREAM)


Member Constraint Documentation

  constraint
 svt_axi_transaction::ace_valid_ranges


constraint ace_valid_ranges {
                  } // ace_valid_ranges

  constraint
 svt_axi_transaction::axi3_4_valid_ranges


constraint axi3_4_valid_ranges {
     if (port_cfg.axi_interface_type == svt_axi_port_configuration::AXI3)
      burst_length <= 16;
    else
      burst_length <= 256;
      if(port_cfg.ace_version == svt_axi_port_configuration::ACE_VERSION_1_0 && xact_type == COHERENT) {
        !(coherent_xact_type inside{CLEANSHAREDPERSIST,READONCECLEANINVALID,READONCEMAKEINVALID});}
                                                 } // axi3_4_valid_ranges

  constraint
 svt_axi_transaction::axi4_stream_valid_ranges


constraint axi4_stream_valid_ranges {
    if (port_cfg.axi_port_kind == svt_axi_port_configuration::AXI_MASTER) {
     if (port_cfg.axi_interface_type == svt_axi_port_configuration::AXI4_STREAM) {
        if (!port_cfg.tid_enable) {
         tid == 0;
       }
       else {
         tid inside {[0 : ((1 << port_cfg.tid_width) -1)]};
       }
        if (!port_cfg.tdest_enable) {
         tdest == 0;
       }
       else {
         tdest inside {[0 : ((1 << port_cfg.tdest_width) -1)]};
       }
        if (!port_cfg.tlast_enable) {
         stream_burst_length == 1;
       }
       if(tdata_size_from_parent > 0) {
         stream_burst_length == tdata_size_from_parent;
       }
     } //AXI4_STREAM
   } //AXI_MASTER
  } // axi4_stream_valid_ranges

  constraint
 svt_axi_transaction::disable_constraint_first_wvalid_reference_event


constraint disable_constraint_first_wvalid_reference_event {
    reference_event_for_first_wvalid_delay dist { WRITE_ADDR_VALID:=50000, WRITE_ADDR_HANDSHAKE:=1, PREV_WRITE_DATA_HANDSHAKE:=50000 };
  }

  constraint
 svt_axi_transaction::reasonable_cust_xact_flow


constraint reasonable_cust_xact_flow {
  soft cust_xact_flow == 0;
}

  constraint
 svt_axi_transaction::reasonable_no_interleaving


constraint reasonable_no_interleaving {
   if (port_cfg.axi_port_kind == svt_axi_port_configuration::AXI_SLAVE &&
       port_cfg.prioritized_reordering_type == svt_axi_port_configuration::XACT_ADDR_HANDSHAKE_TO_RSP_DAT_VALID_DELAY) {
     enable_interleave == 0;
     start_new_interleave == 0;
     equal_block_length == 0;
   }
 }

  constraint
 svt_axi_transaction::reasonable_reference_event_for_addr_delay


constraint reasonable_reference_event_for_addr_delay {
   if(data_before_addr){
   reference_event_for_addr_valid_delay inside {FIRST_WVALID_DATA_BEFORE_ADDR};}
 }

  constraint
 svt_axi_transaction::reasonable_reference_event_for_addr_ready_delay


constraint reasonable_reference_event_for_addr_ready_delay {
   reference_event_for_addr_ready_delay inside {ADDR_VALID};
 }

  constraint
 svt_axi_transaction::wdata_optimistic_flow_valid_ranges


Re-organised constraint blocks based on interface type. This will make it easy to turn-off the constraints based on interface type. It can result in significant run-time improvement.

constraint wdata_optimistic_flow_valid_ranges {
    if(port_cfg.wdata_optimistic_flow_control_enable && port_cfg.axi_port_kind == svt_axi_port_configuration::AXI_MASTER && xact_type == WRITE) {
       data_before_addr == 0;
     }
  }