svt_traffic_arbiter Class Reference

Inheritance diagram for class svt_traffic_arbiter:

List of all members.


Detailed Description

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_phase ( uvm_phase phase )
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 uvm_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", uvm_component parent = null )
task   run_phase ( uvm_phase phase )
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 
uvm_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 


Member Function Documentation

  task
 svt_traffic_arbiter::add_synchronization_data

 (  svt_traffic_profile_transaction xact , string group_name , int group_seq_number  ) 


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

  function void
 svt_traffic_arbiter::build_phase

 (  uvm_phase phase  ) 


UVM build phase

 Superseded functions 
 uvm_component :: build_phase 
 svt_component :: build_phase 

  function svt_traffic_profile_transaction
 svt_traffic_arbiter::create_traffic_profile_transaction

 (  string protocol  ) 


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

  function int
 svt_traffic_arbiter::get_group

 (  output string group_name  ) 


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

  task
 svt_traffic_arbiter::get_group_synchronisation_spec

 (  int group_seq_number , string group_name  ) 


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

  function void
 svt_traffic_arbiter::get_input_xacts_for_output_event

 (  string ev_str , output svt_traffic_profile_transaction input_xact_for_output_event_q [$]  ) 


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

 virtual function uvm_object_wrapper
 svt_traffic_arbiter::get_object_type

 (   ) 


 Superseded functions 
 uvm_object :: get_object_type 

  function bit
 svt_traffic_arbiter::get_read_fifo_rate_control_configs

 (  int group_seq_number , output svt_fifo_rate_control_configuration rate_control_configs [$]  ) 


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

  task
 svt_traffic_arbiter::get_resource_profiles_of_sequencer

 (  int group_seq_number , string group_name , string sequencer_full_name , string sequencer_name  ) 


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

  function int
 svt_traffic_arbiter::get_sequencer

 (  output string inst_path , output string sequencer_name  ) 


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

  function int
 svt_traffic_arbiter::get_sequencer_resource_profile

 (  output string path  ) 


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

  function int
 svt_traffic_arbiter::get_sequencer_resource_profile_attr

 (  svt_fifo_rate_control_configuration rate_cfg , output string name , output bit [1023:0] value  ) 


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.

  function int
 svt_traffic_arbiter::get_sequencer_resource_profile_attr_count

 (   ) 


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

  function int
 svt_traffic_arbiter::get_synchronization_spec

 (   ) 


Gets the next synchronization spec @output Returns 0 if there are no more synchronization specs to be retreived, else returns 1.

  function int
 svt_traffic_arbiter::get_synchronization_spec_input_event

 (  output string event_name , output string sequencer_name , output string traffic_profile_name  ) 


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

  function int
 svt_traffic_arbiter::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  ) 


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.

  function int
 svt_traffic_arbiter::get_traffic_profile

 (  output string path , output string profile_name , output string component , output string protocol  ) 


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

  function int
 svt_traffic_arbiter::get_traffic_profile_attr

 (  svt_traffic_profile_transaction xact , output string name , output bit [1023:0] value  ) 


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.

  function int
 svt_traffic_arbiter::get_traffic_profile_attr_count

 (   ) 


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

  task
 svt_traffic_arbiter::get_traffic_profiles_of_sequencer

 (  int group_seq_number , string group_name , string sequencer_full_name , string sequencer_name  ) 


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

  function int
 svt_traffic_arbiter::get_traffic_resource_profile

 (  output string path  ) 


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.

  function int
 svt_traffic_arbiter::get_traffic_resource_profile_attr

 (  svt_traffic_profile_transaction xact , output string name , output bit [1023:0] value  ) 


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.

  function int
 svt_traffic_arbiter::get_traffic_resource_profile_attr_count

 (   ) 


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

  task
 svt_traffic_arbiter::get_traffic_transactions

 (   ) 


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

 static function type_id
 svt_traffic_arbiter::get_type

 (   ) 


 Superseded functions 
 uvm_object :: get_type 

 virtual function string
 svt_traffic_arbiter::get_type_name

 (   ) 


 Superseded functions 
 uvm_object :: get_type_name 
 uvm_component :: get_type_name 

  function svt_vcap
 svt_traffic_arbiter::get_vcap_dpi_wrapper

 (   ) 


Gets the handle to the VCAP DPI wrapper

  function bit
 svt_traffic_arbiter::get_write_fifo_rate_control_configs

 (  int group_seq_number , output svt_fifo_rate_control_configuration rate_control_configs [$]  ) 


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

  function void
 svt_traffic_arbiter::new

 (  string name = "svt_traffic_arbiter", uvm_component parent = null  ) 


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

name - Instance name

parent - Handle to the hierarchical parent


 Superseded functions 
 uvm_component :: new 

  task
 svt_traffic_arbiter::run_phase

 (  uvm_phase phase  ) 


UVM run phase

 Superseded tasks 
 uvm_component :: run_phase 
 svt_component :: run_phase 

  task
 svt_traffic_arbiter::send_traffic_transaction

 (  svt_traffic_profile_transaction xact , ref bit item_done  ) 


Sends traffic transaction

xact - Handle to the transaction that must be sent

item_done - Indicates that the transaction is put into the output FIFO

  task
 svt_traffic_arbiter::svt_start_traffic

 (   ) 


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

  task
 svt_traffic_arbiter::track_output_event

 (  string ev_str , svt_traffic_profile_transaction xact  ) 


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

  task
 svt_traffic_arbiter::wait_for_input_event

 (  svt_traffic_profile_transaction xact  ) 


Waits for any of the input events in the transaction to be triggered

Member Attribute Documentation

 protected svt_traffic_profile_transaction  attribute
 svt_traffic_arbiter::curr_group_xact_q[$]


Queue with profiles of current group

 svt_event_pool  attribute
 svt_traffic_arbiter::input_event_pool


Event pool for all the input events across all traffic profiles

 svt_event_pool  attribute
 svt_traffic_arbiter::output_event_pool


Event pool for all the output events across all traffic profiles

 protected svt_fifo_rate_control_configuration  attribute
 svt_traffic_arbiter::read_fifo_rate_control_configs[$]


Queue of read fifo rate control configs

 uvm_tlm_fifo  attribute
 svt_traffic_arbiter::traffic_profile_fifo


Fifo into which traffic profile transactions are put

 protected svt_traffic_profile_transaction  attribute
 svt_traffic_arbiter::traffic_q[$]


Queue of traffic profile transactions from all components

 static const string  attribute
 svt_traffic_arbiter::type_name = "svt_traffic_arbiter"


 Superseded attributes 
 uvm_component :: type_name 

 protected svt_fifo_rate_control_configuration  attribute
 svt_traffic_arbiter::write_fifo_rate_control_configs[$]


Queue of write fifo rate control configs

Member Typedef Documentation

 typedef class  svt_traffic_arbiter::type_id
 Typedefe'd string ==>   uvm_component_registry#(svt_traffic_arbiter,)