Inheritance diagram for class svt_traffic_arbiter:
Traffic arbiter class that arbitrates between the traffic transactions that it retreives from the traffic profiles. This class calls the DPIs that process the traffic profile xml files. The values returned by the DPIs are used to populate svt_traffic_profile_transaction objects. When all traffic profiles are retreived, the arbiter arbitrates between the traffic transactions
Public Member Functions | |
| task | add_synchronization_data ( svt_traffic_profile_transaction xact, string group_name, int group_seq_number ) |
| function void | build ( ) |
| function svt_traffic_profile_transaction | create_traffic_profile_transaction ( string protocol ) |
| function int | get_group ( output string group_name ) |
| task | get_group_synchronisation_spec ( int group_seq_number, string group_name ) |
| function void | get_input_xacts_for_output_event ( string ev_str, output svt_traffic_profile_transaction input_xact_for_output_event_q[$] ) |
| virtual function ovm_object_wrapper | get_object_type ( ) |
| function bit | get_read_fifo_rate_control_configs ( int group_seq_number, output svt_fifo_rate_control_configuration rate_control_configs[$] ) |
| task | get_resource_profiles_of_sequencer ( int group_seq_number, string group_name, string sequencer_full_name, string sequencer_name ) |
| function int | get_sequencer ( output string inst_path, output string sequencer_name ) |
| function int | get_sequencer_resource_profile ( output string path ) |
| function int | get_sequencer_resource_profile_attr ( svt_fifo_rate_control_configuration rate_cfg, output string name, output bit [1023:0] value ) |
| function int | get_sequencer_resource_profile_attr_count ( ) |
| function int | get_synchronization_spec ( ) |
| function int | get_synchronization_spec_input_event ( output string event_name, output string sequencer_name, output string traffic_profile_name ) |
| function int | get_synchronization_spec_output_event ( output string event_name, output string sequencer_name, output string traffic_profile_name, output string output_event_type, output string frame_size, output string frame_time ) |
| function int | get_traffic_profile ( output string path, output string profile_name, output string component, output string protocol ) |
| function int | get_traffic_profile_attr ( svt_traffic_profile_transaction xact, output string name, output bit [1023:0] value ) |
| function int | get_traffic_profile_attr_count ( ) |
| task | get_traffic_profiles_of_sequencer ( int group_seq_number, string group_name, string sequencer_full_name, string sequencer_name ) |
| function int | get_traffic_resource_profile ( output string path ) |
| function int | get_traffic_resource_profile_attr ( svt_traffic_profile_transaction xact, output string name, output bit [1023:0] value ) |
| function int | get_traffic_resource_profile_attr_count ( ) |
| task | get_traffic_transactions ( ) |
| static function type_id | get_type ( ) |
| virtual function string | get_type_name ( ) |
| function svt_vcap | get_vcap_dpi_wrapper ( ) |
| function bit | get_write_fifo_rate_control_configs ( int group_seq_number, output svt_fifo_rate_control_configuration rate_control_configs[$] ) |
| function void | new ( string name = "svt_traffic_arbiter", ovm_component parent = null ) |
| task | run ( ) |
| task | send_traffic_transaction ( svt_traffic_profile_transaction xact, ref bit item_done ) |
| task | svt_start_traffic ( ) |
| task | track_output_event ( string ev_str, svt_traffic_profile_transaction xact ) |
| task | wait_for_input_event ( svt_traffic_profile_transaction xact ) |
Public Attributes | |
| svt_event_pool | input_event_pool |
| svt_event_pool | output_event_pool |
| tlm_fifo | traffic_profile_fifo |
| static const string | type_name = "svt_traffic_arbiter"; |
Protected Attributes | |
| protected svt_traffic_profile_transaction | curr_group_xact_q [$] |
| protected svt_fifo_rate_control_configuration | read_fifo_rate_control_configs [$] |
| protected svt_traffic_profile_transaction | traffic_q [$] |
| protected svt_fifo_rate_control_configuration | write_fifo_rate_control_configs [$] |
Member Typedefs | |
| typedef class | type_id |
|
||
Adds synchronization data to the traffic profile transaction xact - The traffic profile transaction to which synchronization data must be added group_name - The group to which this traffic profile transaction belongs group_seq_number - The group sequence number corresponding to the group to which this class belongs |
|
||||||
OVM build phase
| ||||||
|
|
||
Creates the correct type of protocol transaction based on the protocol field argument protocol - String indicating the protocol @output New transaction handle of type corresponding to protocol |
|
||
Gets the name of the current group group_name - Name of the current group @output Returns 0 if there are no more groups to retreive, else returns 1 |
|
||
Gets the synchronisation profile corresponding to a group group_seq_number - The sequence number corresponding to the group of this sequencer group_name - The name of the group corresponding to the sequencer |
|
||
Gets the xacts with the event corresponding to ev_str as an input event ev_str - The string corresponding to the input event input_xact_for_output_event_q - The list of transactions which have ev_str as an input event |
|
||||
|
|
||
Gets the READ FIFO rate control configuration with a given group_seq_number group_seq_number - The group sequence number for which the READ FIFO rate control configurations must be retreived rate_control_configs - The list of WRITE FIFO rate control configurations corresponding to the group sequence number |
|
||
Gets the resource profiles corresponding to a sequencer and adds it to the internal data structure group_seq_number - The sequence number corresponding to the group of this sequencer group_name - The name of the group corresponding to the sequencer sequencer_full_name - The full name of the sequencer sequencer_name - The name of the sequencer |
|
||
Gets the name of the current sequencer inst_path - Name of the instance to the current sequencer sequencer_name - Name of the current sequencer @output Returns 0 if there are no more sequencers to retreive, else returns 1 |
|
||
Gets the name of the current sequencer resource profile path - Name of the path to the current resource profile @output Returns 0 if there are no more sequencer profiles to retreive, else returns 1 |
|
||
Gets the next name-value pair from the sequencer resource profile rate_cfg - Handle to the resource profile configuration name - Name of the resource profile attribute value - The value retreived for the resource profile attribute @output Returns 0 if there are no more values to be retreived, else returns 1. |
|
||
Gets the total number of attributes to be retreived from the current sequencer profile. @output Returns the number of attributes in the current sequencer profile
|
|
||
Gets the next synchronization spec @output Returns 0 if there are no more synchronization specs to be retreived, else returns 1.
|
|
||
Gets the synchronization spec input events event_name - Name of the event sequencer_name - Name of the sequencer corresponding to the event traffic_profile_name - Name of the traffic profile corresponding to the event |
|
||
Gets the synchronization spec output events event_name - Name of the event sequencer_name - Name of the sequencer corresponding to the event traffic_profile_name - Name of the traffic profile corresponding to the event output_event_type - Indicates type of the output event. |
|
||
Gets the next traffic profile path - Path to the traffic profile profile_name - Name of the traffic profile component - The sequencer corresponding to the traffic profile protocol - The protocol corresponding to the profile |
|
||
Gets the next name-value pair from the traffic profile @output Returns 0 if there are no more values to be retreived, else returns 1.
|
|
||
Gets the total number of attributes to be retreived from the current traffic profile. @output Returns the number of attributes in the current traffic profile
|
|
||
Gets the traffic profiles corresponding to a sequencer and adds it to the interal data structure group_seq_number - The sequence number corresponding to the group of this sequencer group_name - The name of the group corresponding to the sequencer sequencer_full_name - The full name of the sequencer sequencer_name - The name of the sequencer |
|
||
Gets the next traffic resource profile path - Path to the traffic resource profile @output Returns 0 if there are no more profiles to be retreived, else returns 1. |
|
||
Gets the next name-value pair from the traffic resource profile @output Returns 0 if there are no more values to be retreived, else returns 1.
|
|
||
Gets the total number of attributes to be retreived from the current traffic resource profile. @output Returns the number of attributes in the current traffic resource profile
|
|
||
Gets traffic transactions through DPI The DPI gets the inputs as a byte stream from the traffic profile file The byte stream is unpacked into traffic profile, synchronization and fifo control information
|
|
||||
|
|
||||
|
|
||
Gets the handle to the VCAP DPI wrapper
|
|
||
Gets the WRITE FIFO rate control configuration with a given group_seq_number group_seq_number - The group sequence number for which the WRITE FIFO rate control configurations must be retreived rate_control_configs - The list of WRITE FIFO rate control configurations corresponding to the group sequence number |
|
||||
|
|
||||||
OVM run phase
| ||||||
|
|
||
|
||
Starts traffic based on the received traffic profile transactions Send traffic profile objects to the layering sequence Traffic transactions are sent in groups. One group is sent after all xacts of the previous group is complete. 1. Get traffic objects with the current group sequence number, basically get all the objects within a group 2. Send transactions and wait until all transactions of that group end 3. Repeat the process for the next group
|
|
||
Tracks the output event corresponding to ev_str Wait for an output event to be triggered on a transaction When it triggers, get a list of transactions which has the same event as an input event (ie, these transactions wait on the event before they get started) ev_str - The string corresponding to the output event on which this task must wait xact - The transaction on which tracking of output event must be done |
|
||
Waits for any of the input events in the transaction to be triggered
|
|
|
Queue with profiles of current group
|
|
|
Event pool for all the input events across all traffic profiles
|
|
|
Event pool for all the output events across all traffic profiles
|
|
|
Queue of read fifo rate control configs
|
|
|
|
Queue of traffic profile transactions from all components
|
|
|
|
Queue of write fifo rate control configs
|
|