svt_traffic_profile_transaction Class Reference

Inheritance diagram for class svt_traffic_profile_transaction:

List of all members.


Detailed Description

Generic class that models a traffic profile. Only parameters which are generic across all protocols are encapsulated here. Protocol specific parameters must be specified in an extended class.



Public Member Functions

function svt_pattern  allocate_xml_pattern ( )
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 string  get_mcd_class_name ( )
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 void  new ( string name = "svt_traffic_profile_transaction", string suite_name = "" )
function int  reasonable_constraint_mode ( bit on_off )
function bit  set_prop_val ( string prop_name, bit [1023:0] prop_val, int array_ix )

Public Attributes

rand svt_traffic_profile_transaction :: addr_val_type_enum  addr_gen_type 
rand bit [63:0]   addr_twodim_stride 
rand bit [63:0]   addr_twodim_yrange 
rand bit [63:0]   addr_xrange = 1 << 64 - 1; 
rand bit [63:0]   base_addr = 0; 
rand svt_traffic_profile_transaction :: attr_val_type_enum  data_gen_type 
rand bit [1023:0]   data_max 
rand bit [1023:0]   data_min 
rand int  frame_size = SVT_TRAFFIC_MAX_FRAME_SIZE
rand int  frame_time = SVT_TRAFFIC_MAX_FRAME_TIME
string  group_name 
int  group_seq_number 
string  input_events [] 
svt_event_pool  input_event_pool 
string  output_events [] 
svt_event_pool  output_event_pool 
svt_traffic_profile_transaction :: output_event_type_enum  output_event_type[] 
string  profile_name 
svt_fifo_rate_control_configuration  read_fifo_cfg 
svt_fifo_rate_control  read_fifo_rate_control 
string  seqr_full_name 
string  seqr_name 
rand int unsigned  total_num_bytes = SVT_TRAFFIC_MAX_TOTAL_NUM_BYTES
svt_fifo_rate_control_configuration  write_fifo_cfg 
svt_fifo_rate_control  write_fifo_rate_control 
rand svt_traffic_profile_transaction :: xact_size_enum  xact_size 

Member Typedefs

 typedef enum  addr_val_type_enum 
 typedef enum  attr_val_type_enum 
 typedef enum  output_event_type_enum 
 typedef enum  xact_size_enum 

Constraints

constraint  reasonable_data_val  ( )
constraint  valid_ranges  ( )


Member Function Documentation

  function svt_pattern
 svt_traffic_profile_transaction::allocate_xml_pattern

 (   ) 


allocate_xml_pattern method collects all the fields which are primitive data fields of the transaction and filters the fields to get only the fields to be displayed in the PA.

Return values - An svt_pattern instance containing entries for required fields to be dispalyed in PA


 Superseded functions 
 svt_sequence_item_base :: allocate_xml_pattern 

  function bit
 svt_traffic_profile_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_traffic_profile_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 svt_pattern_data :: name is set to the corresponding field name, the svt_pattern_data :: 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 

  function bit
 svt_traffic_profile_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 

  function void
 svt_traffic_profile_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 

  function bit
 svt_traffic_profile_transaction::do_is_valid

 (  bit silent = 1, int kind = RELEVANT  ) 


Checks to see that the data field values are valid, focusing mainly on checking/enforcing valid_ranges constraint. Only supported kind values are -1 and svt_sequence_item_base :: COMPLETE. Both values result in the same check of the fields.

 Superseded functions 
 svt_sequence_item_base :: do_is_valid 
 svt_sequence_item :: do_is_valid 

  function bit
 svt_traffic_profile_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 string
 svt_traffic_profile_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 

  function bit
 svt_traffic_profile_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 

  function void
 svt_traffic_profile_transaction::new

 (  string name = "svt_traffic_profile_transaction", string suite_name = ""  ) 


CONSTRUCTOR: Create a new traffic profile instance, passing the appropriate argument values to the parent class.

name - Instance name of the configuration

suite_name - A String that identifies the product suite to which the configuration object belongs.


 Superseded functions 
 svt_sequence_item_base :: new 
 svt_sequence_item :: new 

  function int
 svt_traffic_profile_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 

  function bit
 svt_traffic_profile_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 


Member Attribute Documentation

 rand svt_traffic_profile_transaction :: addr_val_type_enum  attribute
 svt_traffic_profile_transaction::addr_gen_type = SEQUENTIAL


Indicates the type of address generation If set to sequential, a sequential range of address value starting from base_addr will be used. If set to twomin, a two dimensional address pattern is used. Check description of properties below for details. If set to random, random values between base_addr and base_addr+addr_xrange-1 is used. Values will be chosen such that all the valid paths to slaves from this master are covered.

 rand bit [63:0]   attribute
 svt_traffic_profile_transaction::addr_twodim_stride


Valid if addr is twodim. This determines the offset of each new row

 rand bit [63:0]   attribute
 svt_traffic_profile_transaction::addr_twodim_yrange


Valid if addr is twodim. After a transaction uses address specified by (base_addr + addr_twodim_yrange - addr_twodim_stride + addr_twodim_xrange 1), the next transaction uses address specified by base_addr.

 rand bit [63:0]   attribute
 svt_traffic_profile_transaction::addr_xrange = 1 << 64 - 1


Address range to be used for various address patterns. If addr is sequential, sequential addressing is used from base_addr until it reaches base_addr + addr_xrange - 1, upon which the next transaction will use base_addr as the address. If addr is twodim, after a transaction uses address specified by (base_addr + addr_xrange - 1), the next transaction uses address specified by (base_addr + addr_twodim_stride). This pattern continues until addr_twodim_yrange is reached. If addr is random, base_addr + addr_xrange 1 indicates the maximum address that can be generated

 rand bit [63:0]   attribute
 svt_traffic_profile_transaction::base_addr = 0


The base address to be used for address generation

 rand svt_traffic_profile_transaction :: attr_val_type_enum  attribute
 svt_traffic_profile_transaction::data_gen_type = RANDOM


Indicates whether fixed, cycle or random data is to be used for transactions. If set to fixed, a fixed data value as indicated in data_min is used. If set to cycle, a range of data values is cycled through from data_min to data_max. If set to random, a random data value is used between data_min and data_max.

 rand bit [1023:0]   attribute
 svt_traffic_profile_transaction::data_max


The upper bound of data value to be used. Valid if data is set to cycle

 rand bit [1023:0]   attribute
 svt_traffic_profile_transaction::data_min


The lower bound of data value to be used. Valid if data is set to cycle

 rand int  attribute
 svt_traffic_profile_transaction::frame_size = SVT_TRAFFIC_MAX_FRAME_SIZE


Applicable if any of the output_event_type is FRAME_SIZE. Indicates the number of bytes after which the corresponding output_event must be triggered. The event is triggered after every frame_size number of bytes are transmitted.

 rand int  attribute
 svt_traffic_profile_transaction::frame_time = SVT_TRAFFIC_MAX_FRAME_TIME


Applicable if any of the output_event_type is FRAME_TIME. Indicates the number of cycles after which the corresponding output_event must be triggered. The event is triggered after every frame_time number of cycles

 string  attribute
 svt_traffic_profile_transaction::group_name


The name of the group in the traffic profile corresponding to this configuration

 int  attribute
 svt_traffic_profile_transaction::group_seq_number


The sequence number of the group in the traffic profile corresponding to this configuration

 string  attribute
 svt_traffic_profile_transaction::input_events[]


Name of input events based on which this traffic profile will will start. The traffic profile will start if any of the input events are triggered. The names given in this variable should be associated with the output event of some other profile, so that this traffic profile will start based on when the output event is triggered.

 svt_event_pool  attribute
 svt_traffic_profile_transaction::input_event_pool


Event pool for input events

 string  attribute
 svt_traffic_profile_transaction::output_events[]


Name of output events triggered from this traffic profile at pre-defined points which are specified in output_event_type. The names given in this variable should be associated with the input event of some other profile, which will will start based on when the output event is triggered.

 svt_event_pool  attribute
 svt_traffic_profile_transaction::output_event_pool


Event pool for output events

 svt_traffic_profile_transaction :: output_event_type_enum  attribute
 svt_traffic_profile_transaction::output_event_type[]


Indicates the pre-defined points at which the output events given in output_event must be triggered If set to END_OF_PROFILE, the output event is triggered when the last transaction from the profile is complete If set to END_OF_FRAME_TIME, the output event is triggered every frame_time number of cycles If set to END_OF_FRAME_SIZE, the output event is triggered after every frame_size number of bytes are transmitted

 string  attribute
 svt_traffic_profile_transaction::profile_name


Name of the profile

 svt_fifo_rate_control_configuration  attribute
 svt_traffic_profile_transaction::read_fifo_cfg


Configuration for rate control in READ FIFO.

 svt_fifo_rate_control  attribute
 svt_traffic_profile_transaction::read_fifo_rate_control


Utility class for performing FIFO based rate control for READ transactions

 string  attribute
 svt_traffic_profile_transaction::seqr_full_name


Full Name of the sequencer instance on which this profile is to run This name must match the full hierarchical name of the sequencer

 string  attribute
 svt_traffic_profile_transaction::seqr_name


Name of the sequencer on which this profile is to run This can be a proxy name and need not match the actual name of the sequencer

 rand int unsigned  attribute
 svt_traffic_profile_transaction::total_num_bytes = SVT_TRAFFIC_MAX_TOTAL_NUM_BYTES


Number of Transactions in a sequence.

 svt_fifo_rate_control_configuration  attribute
 svt_traffic_profile_transaction::write_fifo_cfg


Configuration for rate control in WRITE FIFO.

 svt_fifo_rate_control  attribute
 svt_traffic_profile_transaction::write_fifo_rate_control


Utility class for performing FIFO based rate control for WRITE transactions

 rand svt_traffic_profile_transaction :: xact_size_enum  attribute
 svt_traffic_profile_transaction::xact_size = XACT_SIZE_64BIT


The total number of bytes transferred in each transaction Applicable only for non-cache line size transactions. For cache-line size transactions, it is defined by the protocol and corresponding VIP constraints

Member Typedef Documentation

 typedef enum  svt_traffic_profile_transaction::addr_val_type_enum
SEQUENTIAL(SVT_TRAFFIC_PROFILE_SEQUENTIAL)
TWODIM(SVT_TRAFFIC_PROFILE_TWODIM)
RANDOM_ADDR(SVT_TRAFFIC_PROFILE_RANDOM_ADDR)

 typedef enum  svt_traffic_profile_transaction::attr_val_type_enum
FIXED(SVT_TRAFFIC_PROFILE_FIXED)
RANDOM()
CYCLE(SVT_TRAFFIC_PROFILE_CYCLE)
UNIQUE(SVT_TRAFFIC_PROFILE_UNIQUE)

 typedef enum  svt_traffic_profile_transaction::output_event_type_enum
END_OF_PROFILE(SVT_TRAFFIC_PROFILE_END_OF_PROFILE)
FRAME_TIME(SVT_TRAFFIC_PROFILE_END_OF_FRAME_TIME)
FRAME_SIZE(SVT_TRAFFIC_PROFILE_END_OF_FRAME_SIZE)

 typedef enum  svt_traffic_profile_transaction::xact_size_enum
XACT_SIZE_8BIT(8)
XACT_SIZE_16BIT(16)
XACT_SIZE_32BIT(32)
XACT_SIZE_64BIT(64)
XACT_SIZE_128BIT(128)
XACT_SIZE_256BIT(256)
XACT_SIZE_512BIT(512)
XACT_SIZE_1024BIT(1024)


Member Constraint Documentation

  constraint
 svt_traffic_profile_transaction::reasonable_data_val


constraint reasonable_data_val {
    data_max >= data_min;
  }

  constraint
 svt_traffic_profile_transaction::valid_ranges


constraint valid_ranges {
     frame_time > 0;
    frame_time < 4096;
    frame_size >= xact_size; // Transaction size for one transaction
    frame_size <= 4096;
    total_num_bytes > 0;
    total_num_bytes <= 4096;
  }