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_chi_flit Class Reference

Inheritance diagram for class svt_chi_flit:

List of all members.



Class Member Groupings

Delays related flit data class parameters  This group contains attributes which are used to control various delays related to a flit.

Public Member Functions

virtual function vmm_data  allocate ( )
virtual function unsigned int  byte_pack ( ref logic [7:0] bytes[], input int unsigned offset, input int kind )
virtual function unsigned int  byte_unpack ( const ref logic [7:0] bytes[], input int unsigned offset, input int len, input int kind )
virtual function bit  compare ( vmm_data to, output string diff, input int kind )
virtual function vmm_data  copy ( vmm_data to = null )
static function svt_chi_flit  create_instance ( vmm_object parent, string name, string fname = "", int lineno = 0 )
virtual function string  get_typename ( )
function bit  is_critical_chunk_data_flit ( )
function bit  is_link_flit ( )
virtual function bit  is_valid ( bit silent = 1, int kind = -1 )
static function void  override_with_copy ( string name, svt_chi_flit factory, vmm_log log, string fname = "", int lineno = 0 )
static function void  override_with_new ( string name, svt_chi_flit factory, vmm_log log, string fname = "", int lineno = 0 )
virtual function string  psdisplay ( string prefix = "" )
static function svt_chi_flit  this_type ( )
function void  do_all ( vmm_data :: do_what_e do_what, ref logic [7:0] pack[], const ref logic [7:0] unpack[] )
function void  new ( vmm_log log = null )
static function void  Xadd_patternX ( vmm_factory_pattern_info fact )

Public Attributes

rand bit [(SVT_CHI_XACT_DAT_FLIT_MAX_BE_WIDTH-1):0]  byte_enable = 0; 
int  channel_id = 0; 
int  curr_cycle = 0; 
int  curr_tx_flitpend_flitv_delay = -1; 
int  curr_tx_flit_delay = -1; 
rand svt_chi_common_transaction :: dat_msg_type_enum  dat_vc_flit_opcode 
rand bit [(SVT_CHI_XACT_DAT_FLIT_MAX_DATA_WIDTH-1):0]  data = 0; 
rand bit [(SVT_CHI_XACT_DAT_RSVDC_WIDTH-1):0]  dat_rsvdc = 0; 
bit [(SVT_CHI_DATA_ID_WIDTH-1):0]  flit_data_id = 0; 
rand svt_chi_common_transaction :: flit_type_enum  flit_type 
rand svt_chi_common_transaction :: xact_type_enum  req_vc_flit_opcode 
svt_chi_common_transaction :: resp_err_status_enum  resp_err_status 
rand svt_chi_common_transaction :: rsp_msg_type_enum  rsp_vc_flit_opcode 
rand svt_chi_common_transaction :: snp_req_msg_type_enum  snp_vc_flit_opcode 
rand int  tx_flitpend_flitv_delay = 1; 
rand int  tx_flit_delay = 0; 

Protected Attributes

static protected svt_chi_flit  __vmm_rhs 

Member Typedefs

 typedef class  _factory_base 

Constraints

constraint  chi_flit_valid_ranges  ( )
constraint  chi_reasonable_tx_flitpend_flitv_delay  ( )
constraint  chi_reasonable_tx_flit_delay  ( )

Class Member Groupings



Group: Delays related flit data class parameters

This group contains attributes which are used to control various delays related to a flit.

rand int  tx_flitpend_flitv_delay = 1; 
rand int  tx_flit_delay = 0; 


Member Function Documentation

 virtual function vmm_data
 svt_chi_flit::allocate

 (   ) 


 Superseded functions 
 vmm_data :: allocate 
 svt_data :: allocate 
 svt_transaction :: allocate 
 svt_chi_common_transaction :: allocate 
 svt_chi_base_transaction :: allocate 

 virtual function unsigned int
 svt_chi_flit::byte_pack

 (  ref logic [7:0] bytes [], input int unsigned offset , input int kind  ) 


 Superseded functions 
 vmm_data :: byte_pack 
 svt_data :: byte_pack 
 svt_transaction :: byte_pack 
 svt_chi_common_transaction :: byte_pack 
 svt_chi_base_transaction :: byte_pack 

 virtual function unsigned int
 svt_chi_flit::byte_unpack

 (  const ref logic [7:0] bytes [], input int unsigned offset , input int len , input int kind  ) 


 Superseded functions 
 vmm_data :: byte_unpack 
 svt_data :: byte_unpack 
 svt_transaction :: byte_unpack 
 svt_chi_common_transaction :: byte_unpack 
 svt_chi_base_transaction :: byte_unpack 

 virtual function bit
 svt_chi_flit::compare

 (  vmm_data to , output string diff , input int kind  ) 


 Superseded functions 
 vmm_data :: compare 
 svt_data :: compare 
 svt_transaction :: compare 
 svt_chi_common_transaction :: compare 
 svt_chi_base_transaction :: compare 

 virtual function vmm_data
 svt_chi_flit::copy

 (  vmm_data to = null  ) 


 Superseded functions 
 vmm_data :: copy 
 svt_data :: copy 
 svt_transaction :: copy 
 svt_chi_common_transaction :: copy 
 svt_chi_base_transaction :: copy 

 static function svt_chi_flit
 svt_chi_flit::create_instance

 (  vmm_object parent , string name , string fname = "", int lineno = 0  ) 


 Superseded functions 
 svt_chi_common_transaction :: create_instance 
 svt_chi_base_transaction :: create_instance 

 virtual function string
 svt_chi_flit::get_typename

 (   ) 


 Superseded functions 
 svt_chi_common_transaction :: get_typename 
 svt_chi_base_transaction :: get_typename 

  function bit
 svt_chi_flit::is_critical_chunk_data_flit

 (   ) 


This function checks the ccid and dataid field and returns "1" if:
  • flit_data_width is 128 and if ccid matches flit_data_id
  • flit_data_width is 256 and if ccid[1] matches flit_data_id[1]
  • flit_data_width is 512.

  function bit
 svt_chi_flit::is_link_flit

 (   ) 


Indicates whether this is a link flit or not

 virtual function bit
 svt_chi_flit::is_valid

 (  bit silent = 1, int kind = -1  ) 


 Superseded functions 
 vmm_data :: is_valid 
 svt_data :: is_valid 
 svt_transaction :: is_valid 
 svt_chi_common_transaction :: is_valid 
 svt_chi_base_transaction :: is_valid 

 static function void
 svt_chi_flit::override_with_copy

 (  string name , svt_chi_flit factory , vmm_log log , string fname = "", int lineno = 0  ) 

 static function void
 svt_chi_flit::override_with_new

 (  string name , svt_chi_flit factory , vmm_log log , string fname = "", int lineno = 0  ) 

 virtual function string
 svt_chi_flit::psdisplay

 (  string prefix = ""  ) 


 Superseded functions 
 vmm_object :: psdisplay 
 vmm_data :: psdisplay 
 svt_data :: psdisplay 
 svt_transaction :: psdisplay 
 svt_chi_common_transaction :: psdisplay 
 svt_chi_base_transaction :: psdisplay 

 static function svt_chi_flit
 svt_chi_flit::this_type

 (   ) 


 Superseded functions 
 svt_chi_common_transaction :: this_type 
 svt_chi_base_transaction :: this_type 

  function void
 svt_chi_flit::do_all

 (  vmm_data :: do_what_e do_what , ref logic [7:0] pack [], const ref logic [7:0] unpack []  ) 


 Superseded functions 
 vmm_data :: do_all 
 svt_data :: do_all 
 svt_transaction :: do_all 
 svt_chi_common_transaction :: do_all 
 svt_chi_base_transaction :: do_all 

  function void
 svt_chi_flit::new

 (  vmm_log log = null  ) 


CONSTRUCTOR: Create a new transaction instance.

log - VMM Log instance used for reporting.


 Superseded functions 
 svt_chi_common_transaction :: new 
 svt_chi_base_transaction :: new 

 static function void
 svt_chi_flit::Xadd_patternX

 (  vmm_factory_pattern_info fact  ) 


 Superseded functions 
 svt_chi_common_transaction :: Xadd_patternX 
 svt_chi_base_transaction :: Xadd_patternX 


Member Attribute Documentation

 rand bit [(SVT_CHI_XACT_DAT_FLIT_MAX_BE_WIDTH-1):0]  attribute
 svt_chi_flit::byte_enable = 0


This field defines the byte enable for a Flit.
This field is applicable for write data, DVM payload and snoop response data Flit transfers. It consists of a bit for each data byte in the DAT flit, which when set indicates that the corresponding data byte is valid.

 int  attribute
 svt_chi_flit::channel_id = 0


- Indicates the replicated channel ID on which the flit is sent or received.
  • This attribute is applicable only when the CHI-E replicated channels feature is enabled.
  • This attribute is set for both TX and RX flits internally in the VIP driver and must not be set by users.

 int  attribute
 svt_chi_flit::curr_cycle = 0


- Indicates the current clock cycle count.
  • This attribute is incremented by 1 for each clock cycle at the posedge

 int  attribute
 svt_chi_flit::curr_tx_flitpend_flitv_delay = -1


- Current value of tx_flitpend_flitv_delay

 int  attribute
 svt_chi_flit::curr_tx_flit_delay = -1


- Current value of tx_flit_delay

 rand svt_chi_common_transaction :: dat_msg_type_enum  attribute
 svt_chi_flit::dat_vc_flit_opcode = COMPDATA


This field defines the Opcode for Data VC Flit.

 rand bit [(SVT_CHI_XACT_DAT_FLIT_MAX_DATA_WIDTH-1):0]  attribute
 svt_chi_flit::data = 0


This field defines the data for a DAT flit.
This field is applicable for write data, read data, DVM payload and snoop response data Flit transfers.

 rand bit [(SVT_CHI_XACT_DAT_RSVDC_WIDTH-1):0]  attribute
 svt_chi_flit::dat_rsvdc = 0


This field defines the Reserved Value defined by the user for Protocol Data VC Flit.
Any value can be driven on this field.
Note that this field is not applicable when svt_chi_node_configuration :: dat_flit_rsvdc_width is set to zero.

 bit [(SVT_CHI_DATA_ID_WIDTH-1):0]  attribute
 svt_chi_flit::flit_data_id = 0


This field indicates the relative position of the data chunk being transferred within the 512b cache line.
Refer to section '19.3.5.23 DataID' of AMBA CHI specification.
Below is an example explining this field usage.
Consider that the width of the data VC is 128b(16B). The data size of a transaction is 512b(64B). This transaction requires 4 data VC Flits.
|------------------------------------------------|
| Data VC Flit No | 128b slice of data | data ID |
|------------------------------------------------|
| 1 | data[127:0] | 2'b00 |
|------------------------------------------------|
| 2 | data[255:128] | 2'b01 |
|------------------------------------------------|
| 3 | data[383:256] | 2'b10 |
|------------------------------------------------|
| 4 | data[511:384] | 2'b11 |
|------------------------------------------------|

 rand svt_chi_common_transaction :: flit_type_enum  attribute
 svt_chi_flit::flit_type = REQ


This field defines the type of the Flit.

 rand svt_chi_common_transaction :: xact_type_enum  attribute
 svt_chi_flit::req_vc_flit_opcode = READNOSNP


This field defines the Opcode used for Request VC Flit.

 svt_chi_common_transaction :: resp_err_status_enum  attribute
 svt_chi_flit::resp_err_status = NORMAL_OKAY


This field indicates the error status of the response. It is applicable for RSP, DAT flits.

 rand svt_chi_common_transaction :: rsp_msg_type_enum  attribute
 svt_chi_flit::rsp_vc_flit_opcode = COMP


This field defines the Opcode for Response VC Flit.

 rand svt_chi_common_transaction :: snp_req_msg_type_enum  attribute
 svt_chi_flit::snp_vc_flit_opcode = SNPONCE


This field defines the Opcode for Snoop VC Flit.

 rand int  attribute
 svt_chi_flit::tx_flitpend_flitv_delay = 1


 rand int  attribute
 svt_chi_flit::tx_flit_delay = 0


 static protected svt_chi_flit  attribute
 svt_chi_flit::__vmm_rhs


Member Typedef Documentation

 typedef class  svt_chi_flit::_factory_base
 Typedefe'd string ==>   vmm_class_factory_base#(svt_chi_flit)


Member Constraint Documentation

  constraint
 svt_chi_flit::chi_flit_valid_ranges


Valid ranges constraints insure that the transaction settings are supported by the chi components.

constraint chi_flit_valid_ranges {
    solve flit_type before req_vc_flit_opcode, snp_vc_flit_opcode, rsp_vc_flit_opcode, dat_vc_flit_opcode;
          solve req_vc_flit_opcode before txn_id;
    solve rsp_vc_flit_opcode before txn_id;
    solve snp_vc_flit_opcode before txn_id;
    solve dat_vc_flit_opcode before txn_id;
     if ((flit_type == REQ) && (req_vc_flit_opcode == REQLINKFLIT)) {txn_id == 0;}
    if ((flit_type == RSP) && (rsp_vc_flit_opcode == RSPLINKFLIT)) {txn_id == 0;}
    if ((flit_type == SNP) && (snp_vc_flit_opcode == SNPLINKFLIT)) {txn_id == 0;}
    if ((flit_type == DAT) && (dat_vc_flit_opcode == DATLINKFLIT)) {txn_id == 0;}
     req_vc_flit_opcode == REQLINKFLIT;
    rsp_vc_flit_opcode == RSPLINKFLIT;
    snp_vc_flit_opcode == SNPLINKFLIT;
    dat_vc_flit_opcode == DATLINKFLIT;
  }

  constraint
 svt_chi_flit::chi_reasonable_tx_flitpend_flitv_delay


Reasonable constraints are designed to limit the traffic to "protocol legal" traffic, and in some situations maximize the traffic flow. They must never be written such that they exclude legal traffic.

Reasonable constraints may be disabled during error injection. To simplify enabling and disabling the constraints relating to a single field, the reasonable constraints for an individual field must be grouped in a single reasonable constraint.


constraint chi_reasonable_tx_flitpend_flitv_delay {
    if (cfg.delays_enable == 0)
      {tx_flitpend_flitv_delay == 1};
    tx_flitpend_flitv_delay inside {[1: 16]};
  }

  constraint
 svt_chi_flit::chi_reasonable_tx_flit_delay


constraint chi_reasonable_tx_flit_delay {
    if (cfg.delays_enable == 0)
      {tx_flit_delay == 0};
    tx_flit_delay inside {[0: 16]};
  }