How to download VIP smartsearch?
DESIGNWARE_HOMEto required designware home location where VIP Smartsearch should be downloaded.
vip_smartsearch_<version>.runfile.
$DESIGNWARE_HOME/vip/svt/vip_smartsearch/<version>
How to install VIP Smartsearch?
Please refer to the fileVIP_Smartsearch_installation_and_usage_guide.pdfin
$DESIGNWARE_HOME/vip/svt/vip_smartsearch/<version>for installation steps.
Customer Support
For more details about VIP smartsearch tool, contact support_center@synopsys.com.Inheritance diagram for class svt_ahb_transaction:
This is the transaction class which contains all the physical attributes of the transaction like address, burst type, burst size, data etc. At the end of each transaction, the master and slave VIP component provides extended object of type svt_ahb_transaction from its analysis ports in active and passive mode.
Class Member Groupings | |
| Miscellaneous attributes | This group contains miscellaneous attributes which do not fall under any of the categories above. |
| AHB transaction status attributes | This group contains attributes which report the status of AHB transaction. |
| AHB protocol attributes | This group contains attributes which are relevant to AHB protocol. |
Public Member Functions | |
| function svt_pattern | allocate_xml_pattern ( ) |
| function void | check_addr_location_wrt_wrap_boundary ( input int beat_num, output bit [SVT_AHB_MAX_ADDR_WIDTH-1:0] wrap_boundary, output svt_ahb_transaction :: beat_addr_wrt_wrap_boundary_enum addr_wrt_wrap_boundary, output int num_beats_till_wrap ) |
| 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 bit | do_is_valid ( bit silent = 1, int kind = -1 ) |
| function bit | enable_trace ( ) |
| 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 void | generate_hbstrb ( input logic [SVT_AHB_MAX_ADDR_WIDTH-1:0] beat_addr, input int beat_num, input int data_width, output bit [SVT_AHB_HBSTRB_PORT_WIDTH-1:0] beat_hbstrb ) |
| function logic [SVT_AHB_MAX_ADDR_WIDTH-1:0] | get_beat_addr ( input int beat_num, input int data_width ) |
| function void | get_beat_lane ( input int beat_num, input logic [SVT_AHB_MAX_ADDR_WIDTH-1:0] beat_addr, input int data_width_in_bytes, output int lower_byte_lane, output int upper_byte_lane ) |
| function int | get_burst_length ( ) |
| function int | get_byte_count ( ) |
| function string | get_class_name ( ) |
| function bit [SVT_AHB_MAX_ADDR_WIDTH-1:0] | get_max_byte_address ( bit convert_to_global_addr = 0, bit convert_to_slave_addr = 0, string requester_name = "", svt_ahb_configuration cfg = null ) |
| function bit [SVT_AHB_MAX_ADDR_WIDTH-1:0] | get_min_byte_address ( bit convert_to_global_addr = 0, bit convert_to_slave_addr = 0, string requester_name = "", svt_ahb_configuration cfg = null ) |
| function svt_pa_object_data | get_pa_obj_data ( string uid = "", string typ = "", string parent_uid = "", string channel = "" ) |
| 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 | get_retry_response_info ( output int num_retry_responses, output int beats_with_retry_response[] ) |
| function svt_sequence_item | get_trace_xact_factory ( ) |
| function int | get_wrap_boundary_idx ( input int data_width ) |
| function bit | is_sparse_transfer ( input int data_width_in_bytes, input int beat_num ) |
| function bit | is_unaligned_address ( input int beat_num ) |
| function void | new ( string name = "svt_ahb_transaction" ) |
| function void | pack_data_to_byte_stream ( input int data_width, input bit [SVT_AHB_MAX_DATA_WIDTH-1:0] data_to_pack[], output bit [7:0] packed_data[] ) |
| function string | psdisplay_short ( string prefix = "", bit hdr_only = 0 ) |
| function int | reasonable_constraint_mode ( bit on_off ) |
| function void | rebuild_transaction ( bit [SVT_AHB_MAX_ADDR_WIDTH-1:0] start_addr, int beat_num, bit ebt_due_to_loss_of_grant = 'b0, bit rebuild_using_wrap_boundary_as_start_addr = 'b0, output bit [SVT_AHB_MAX_ADDR_WIDTH-1:0] wrap_boundary, output svt_ahb_transaction :: beat_addr_wrt_wrap_boundary_enum addr_wrt_wrap_boundary, input svt_ahb_transaction rebuild_xact ) |
| function bit | set_prop_val ( string prop_name, bit [1023:0] prop_val, int array_ix ) |
| function bit | transfer_crosses_byte_boundary ( input int data_width_in_bytes, svt_ahb_transaction :: burst_size_enum transfer_burst_size = burst_size ) |
Public Attributes | |
| svt_ahb_transaction :: aborted_xact_status_enum | aborted_xact_status |
| rand bit [SVT_AHB_MAX_ADDR_WIDTH-1:0] | addr = 0; |
| svt_ahb_transaction :: response_type_enum | all_beat_response[] |
| svt_sequence_item :: status_enum | beat_status |
| rand svt_ahb_transaction :: burst_size_enum | burst_size |
| rand svt_ahb_transaction :: burst_type_enum | burst_type |
| svt_ahb_configuration | cfg |
| rand bit [SVT_AHB_MAX_USER_WIDTH-1:0] | control_huser = 0; |
| int | current_data_beat_num |
| rand bit [SVT_AHB_MAX_DATA_WIDTH-1:0] | data [] |
| rand bit [SVT_AHB_MAX_DATA_USER_WIDTH-1:0] | data_huser [] |
| rand bit | idle_xact_hwrite = 1; |
| rand bit | lock = 1'b0; |
| bit | multilayer_interconnect_termination = 0; |
| rand svt_ahb_transaction :: nonsec_trans_enum | nonsec_trans |
| rand int | num_busy_cycles [] |
| rand int | num_incr_beats = 1; |
| int | num_wait_cycles_per_beat [$] |
| int | object_num = -1; |
| string | object_typ |
| int | port_id |
| rand svt_ahb_transaction :: prot0_type_enum | prot0_type |
| rand svt_ahb_transaction :: prot1_type_enum | prot1_type |
| rand svt_ahb_transaction :: prot2_type_enum | prot2_type |
| rand svt_ahb_transaction :: prot3_ex_type_enum | prot3_ex_type |
| rand svt_ahb_transaction :: prot3_type_enum | prot3_type |
| rand svt_ahb_transaction :: prot4_ex_type_enum | prot4_ex_type |
| rand svt_ahb_transaction :: prot4_type_enum | prot4_type |
| rand svt_ahb_transaction :: prot5_ex_type_enum | prot5_ex_type |
| rand svt_ahb_transaction :: prot5_type_enum | prot5_type |
| rand svt_ahb_transaction :: prot6_ex_type_enum | prot6_ex_type |
| rand svt_ahb_transaction :: response_type_enum | response_type |
| svt_sequence_item :: status_enum | status |
| svt_ahb_transaction :: trans_type_enum | trans_type |
| rand bit | unalign = 0; |
| rand svt_ahb_transaction :: xact_type_enum | xact_type |
Member Typedefs | |
| typedef enum | aborted_xact_status_enum |
| typedef enum | beat_addr_wrt_wrap_boundary_enum |
| typedef enum | burst_size_enum |
| typedef enum | burst_type_enum |
| typedef enum | nonsec_trans_enum |
| typedef enum | prot0_type_enum |
| typedef enum | prot1_type_enum |
| typedef enum | prot2_type_enum |
| typedef enum | prot3_ex_type_enum |
| typedef enum | prot3_type_enum |
| typedef enum | prot4_ex_type_enum |
| typedef enum | prot4_type_enum |
| typedef enum | prot5_ex_type_enum |
| typedef enum | prot5_type_enum |
| typedef enum | prot6_ex_type_enum |
| typedef enum | response_type_enum |
| typedef enum | trans_type_enum |
| typedef enum | xact_type_enum |
Class Member Groupings | |
Group: Miscellaneous attributes | |
| This group contains miscellaneous attributes which do not fall under any of the categories above. | |
| int | object_num = -1; |
| string | object_typ |
| int | port_id |
Group: AHB transaction status attributes | |
| This group contains attributes which report the status of AHB transaction. | |
| svt_ahb_transaction :: aborted_xact_status_enum | aborted_xact_status |
| svt_sequence_item :: status_enum | beat_status |
| int | current_data_beat_num |
| svt_sequence_item :: status_enum | status |
Group: AHB protocol attributes | |
| This group contains attributes which are relevant to AHB protocol. | |
| rand bit [SVT_AHB_MAX_ADDR_WIDTH-1:0] | addr = 0; |
| svt_ahb_transaction :: response_type_enum | all_beat_response[] |
| rand svt_ahb_transaction :: burst_size_enum | burst_size |
| rand svt_ahb_transaction :: burst_type_enum | burst_type |
| rand bit [SVT_AHB_MAX_USER_WIDTH-1:0] | control_huser = 0; |
| rand bit [SVT_AHB_MAX_DATA_WIDTH-1:0] | data [] |
| rand bit [SVT_AHB_MAX_DATA_USER_WIDTH-1:0] | data_huser [] |
| rand bit | idle_xact_hwrite = 1; |
| rand bit | lock = 1'b0; |
| bit | multilayer_interconnect_termination = 0; |
| rand svt_ahb_transaction :: nonsec_trans_enum | nonsec_trans |
| rand int | num_busy_cycles [] |
| rand int | num_incr_beats = 1; |
| int | num_wait_cycles_per_beat [$] |
| rand svt_ahb_transaction :: prot0_type_enum | prot0_type |
| rand svt_ahb_transaction :: prot1_type_enum | prot1_type |
| rand svt_ahb_transaction :: prot2_type_enum | prot2_type |
| rand svt_ahb_transaction :: prot3_ex_type_enum | prot3_ex_type |
| rand svt_ahb_transaction :: prot3_type_enum | prot3_type |
| rand svt_ahb_transaction :: prot4_ex_type_enum | prot4_ex_type |
| rand svt_ahb_transaction :: prot4_type_enum | prot4_type |
| rand svt_ahb_transaction :: prot5_ex_type_enum | prot5_ex_type |
| rand svt_ahb_transaction :: prot5_type_enum | prot5_type |
| rand svt_ahb_transaction :: prot6_ex_type_enum | prot6_ex_type |
| rand svt_ahb_transaction :: response_type_enum | response_type |
| svt_ahb_transaction :: trans_type_enum | trans_type |
| rand bit | unalign = 0; |
| rand svt_ahb_transaction :: xact_type_enum | xact_type |
|
||||||||||
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 displayed in PA | ||||||||||
|
|
||
Returns the beat address location with respect to WRAP boundary
|
|
||||||
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. | ||||||
|
|
||||||||||||
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. | ||||||||||||
|
|
||||||||||||||
|
|
||||||||||||
Checks to see that the data field values are valid, focusing mainly on checking/enforcing valid_ranges constraint.
silent - If 1, no messages are issued by this method. If 0, error messages are issued by this method. kind - Supported kind values are svt_sequence_item_base :: RELEVANT and svt_sequence_item_base :: COMPLETE. If kind is set to svt_sequence_item_base :: RELEVANT, this method performs validity checks only on relevant fields. Typically, these fields represent the physical attributes of the protocol. If kind is set to svt_sequence_item_base :: COMPLETE, this method performs validity checks on all fields of the class. | ||||||||||||
|
|
||||
This virtual method is used to enable/disable the trace capability. The base class implementation always returns 0, indicating that this feature is disabled. Extended classes wishing to support this feature must consider whether this feature should always be enabled, be enabled for all instances of the extended class, or enabled on a per instance basis. This method, and any supporting data fields, etc., in the extended class should be implemented in accordance with these decisions.
| ||||
|
|
||||||
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. | ||||||
|
|
||
Returns hbstrb generated for the address provided
|
|
||
Returns the address and lanes corresponding to the beat number
|
|
||
Returns the active data byte lanes corresponding to the beat number, beat address
|
|
||
Returns the burst length based on burst_type
|
|
||
Returns the total number of bytes transferred in this transaction Return values - The total number of bytes transferred in this transaction |
|
||||||||||
Returns the class name for the object.
| ||||||||||
|
|
||||
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 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 | ||||
|
|
||||
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 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 | ||||
|
|
||||||||||||
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. | ||||||||||||
|
|
||||||||||||
HDL Support: For read access to public data members of this class.
| ||||||||||||
|
|
||
This method returns the number of times this transaction has an associated RETRY response. num_retry_responses - Number of RETRY responses that the transaction has beats_with_retry_response - Array of beat numbers with the RETRY response |
|
||||
|
|
||
Returns the index (of data or wstrb fields) corresponding to the wrap boundary
|
|
||
Returns 1 if the transfer is sparse based on the byte stobe values and returns 0 if address is not sparse Eg: For a SINGLE burst with beat_bstrb[0] = 0111_1000 with 64-BIT burst size, since all the byte lanes are not active, this can be considered as a sparse transfer.
|
|
||
Returns 1 if address is unaligned and returns 0 if address is aligned
|
|
||||||||||
CONSTRUCTOR: Create a new transaction instance, passing the appropriate argument values to the parent class.
name - Instance name of the transaction | ||||||||||
|
|
||
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 |
|
||||
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). | ||||
|
|
||||||||||
Method to turn reasonable constraints on/off as a block.
| ||||||||||
|
|
||||
Called when rebuilding of a transaction is required start_addr - Starting address for the rebuild transaction | ||||
|
|
||||||||||||
HDL Support: For write access to public data members of this class.
| ||||||||||||
|
|
||
Returns 1 if the transfer crosses the byte boundary and returns 0 if transfer does not cross byte boundary This function determines if the transfer is unaligned, whether splitting the transfer is required based on the data width and remaining byte lanes available to access. Eg: If a 32-BIT SINGLE burst transfer with address 0x1003 is driven on 64-BIT data width, even the transfer is unaligned, the transfer can be proceeded in one transfer without splitting transfer based on the unaligned address.
|
|
|
Represents whether transaction got aborted due to reset or not.
|
|
|
The maximum width of this signal is controlled through macro SVT_AHB_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_ahb_user_defines.svi, and then specify this file to be compiled by the simulator. Also, specify +define+SVT_AHB_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_AHB_MAX_ADDR_WIDTH macro is only used to control the maximum width of the signal. |
|
|
This array variable stores the responses for all the completed beats of transaction. Following are the possible response types
|
|
|
Represents the current status of the transaction. Following are the possible status types.
|
|
|
Represents the burst size of a transaction
|
|
|
Represents the burst type of a transaction
|
|
|
Reference to ahb configuration
|
|
|
AHB control sideband signal. The maximum width of this signal is controlled through macro SVT_AHB_MAX_USER_WIDTH. Default value of this macro is 32. 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_ahb_user_defines.svi, and then specify this file to be compiled by the simulator. Also, specify +define+SVT_AHB_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_AHB_MAX_USER_WIDTH macro is only used to control the maximum width of the signal. |
|
|
Indicates the beat number of the current transfer. For the first beat (transfer type NSEQ) of the transaction, the value of current_data_beat_num would be 0. For subsequent beats (transfer type SEQ), the value would be incremented. This member is populated by the VIP.
|
|
|
MASTER in active mode:
For write transactions this variable specifies write data to be driven on the HWDATA bus. SLAVE in active mode: For read transactions this variable specifies read data to be driven on the HRDATA bus. PASSIVE MODE: This variable stores the write or read data as seen on HWDATA or HRDATA bus.
APPLICABLE IN ALL MODES: The maximum width of this signal is controlled through macro SVT_AHB_MAX_DATA_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_ahb_user_defines.svi, and then specify this file to be compiled by the simulator. Also, specify +define+SVT_AHB_INCLUDE_USER_DEFINES on the simulator compilation command line. Please consult User Guide for additional information, and consult VIP example for usage demonstration. |
|
|
Currently, this feature AHB Data sideband signal is supported only in Master and Slave active mode MASTER in active mode: For write transactions this variable specifies write data to be driven on the hwdata_huser bus corresponding to all the beats. SLAVE in active mode: For read transactions this variable holds the read data to be driven on the hrdata_huser bus corresponding to all the beats the user has to program beat_data_huser for current data beat For example: In ahb_slave_random_response_sequence, program the beat_data_huser for current data beat as below `svt_xvm_rand_send_with(req, { beat_data_huser == 64'h0000_0000_DEAD_BEAF; }) PASSIVE MODE: Not yet supported APPLICABLE IN ALL MODES: The maximum width of this signal is controlled through macro SVT_AHB_MAX_DATA_USER_WIDTH. Default value of this macro is 64. To change the maximum width of this variable, user can change the value of this macro. 1) Define the new value for the macro in file svt_ahb_user_defines.svi, and then specify this file to be compiled by the simulator. 2)Specify +define+SVT_AHB_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_AHB_MAX_DATA_USER_WIDTH macro is only used to control the maximum width of the signals hwdata_huser and hrdata_huser. |
|
|
Represents the hwrite signal value when svt_ahb_transaction :: xact_type is svt_ahb_transaction :: IDLE_XACT. This is applicable only for active master. |
|
|
Lock control
|
|
|
When a multi-layer interconnect component is used in a multi-master system, it can terminate a burst so that another master can gain access to the slave The slave must terminate the burst from the original master and then respond appropriately to the new master if this occurs. This variable indicates burst terminated at Slave VIP when svt_ahb_system_configuration :: ahb_lite_multilayer is '1' This is set to '1', when termination of burst occurs. Slave VIP also updates the svt_ahb_transaction :: status as ABORTED. If svt_ahb_slave_configuration :: rebuild_after_multilayer_interconnect_termination is set to '1', the slave VIP waits for the rebuilding of the aborted transaction. The variable or the Multilayer Interconnect Termination feature is supported only at slave end.
|
|
|
hnonsec is used for secure transfer indication
|
|
|
Number of busy cycles to be inserted after every beat except for last beat. In case of INCR burst, number of busy cycles can be inserted after the last beat. This can be achieved by setting svt_ahb_configuration :: end_incr_with_busy is '1' along with svt_ahb_system_configuration :: ahb3 is 1 and svt_ahb_system_configuration :: ahb_lite is 1
|
|
|
Number of beats in a INCR burst.
|
|
|
Number of wait states inserted by slave for given transfer. This member is used to report the number of wait cycles observed for each beat. This member is populated by VIP in the object provided by master & slave models at the end of the transaction, in active & passive mode.
|
|
|
Variable that holds the object_num of this transaction. VIP assigns a unique number to each transaction it generates from analysis port. This number is also used by the debug port of the VIP, so that transaction number can be displayed in waveform. This helps in ease of debug as it helps to correlate the transaction displayed in log file and in the waveform.
|
|
|
|
Represents port ID.
|
|
|
prot[0] is used for Data Access control
|
|
|
prot[1] is used for Privileged Access control
|
|
|
prot[2] is used for Bufferable access control
|
|
|
prot[3] is used for Modifiable Access control when hprot is extended
|
|
|
prot[3] is used for Cacheable access control
|
|
|
prot[4] is used for Cache Lookup control when hprot is extended
|
|
|
prot[4] is used for Cache allocate control for AHB_v6 only.
|
|
|
prot[5] is used for Cache allocate control when hprot is extended
|
|
|
prot[5] is used for exclusive access support for AHB-V6 only. Exclusive access functionality is not supported yet.
|
|
|
prot[6] is used for Shareable Memory access when hprot is extended
|
|
|
Response from the slave. This attribute indicates the response corresponding to most recently completed beat
|
|
|
Represents the current status of the transaction. Following are the possible status types.
|
|
|
Indicates the type of the current transfer, which can be NONSEQUENTIAL, SEQUENTIAL, IDLE, or BUSY. This member is populated by the VIP.
|
|
|
This is parameter that is used to define the hunalign value for a particular burst_type.
|
|
|
Represents the transaction type of a transaction
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|