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.Macros defined for AMBA CHI-C SVT UVM Documentation:
|
|
system_monitor_enable
|
|
|
system_monitor_enable
|
|
|
`ifdef SVT_UVM_TECHNOLOGY status = uvm_config_db#(typ)::get(null, get_full_name(), "``str", ``str ); `elsif SVT_OVM_TECHNOLOGY status = m_sequencer.get_config_int({get_type_name(), ".``str"}, ``str); `endif |
|
|
_SVT_CHI_SYSTEM_SEQUENCE_GET_OVERRIDE(typ,str) if(status) svt_debug("pre_body",$sformatf("set by config override ``str = %0d",``str)); |
|
|
0
|
|
|
if(xact != null)begin if(xact.cfg.chi_spec_revision >= svt_chi_node_configuration::ISSUE_E ) begin if((xact.xact_type ==svt_chi_transaction::WRITEUNIQUEFULL) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEZERO) || (xact.xact_type == svt_chi_transaction::WRITENOSNPZERO) || `ifdef SVT_CHI_ISSUE_F_ENABLE (xact.xact_type == svt_chi_transaction::WRITENOSNPDEF) || `endif (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULLSTASH) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTLSTASH) || (xact.is_combined_ncbwrite_cmo_xact()) || (xact.is_atomicop_xact()) )begin svt_chi_system_transaction outstanding_xacts_to_same_cache_line_from_other_src_id[$]; svt_chi_snoop_transaction active_snoop_xacts_to_other_rn_with_complementary_ns_bit[$]; fork begin fork begin wait(xact.is_dbid_received == 1); end begin wait(xact.is_dbidrespord_received == 1); end begin wait(xact.req_status == svt_chi_transaction::CANCELLED || xact.req_status == svt_chi_transaction::ABORTED || xact.req_status == svt_chi_transaction::RETRY ); end join_any if(xact.is_dbidrespord_received ==1) begin outstanding_xacts_to_same_cache_line_from_other_src_id = active_sys_xact_queue.find() with(item.rn_xact != xact && item.rn_xact.src_id != xact.src_id && item.rn_xact.get_aligned_addr_to_cache_line_size(1) == xact.get_aligned_addr_to_cache_line_size(1) && item.rn_xact.req_status != svt_chi_transaction::INITIAL && item.rn_xact.req_status != svt_chi_transaction::RETRY && item.rn_xact.req_status != svt_chi_transaction::CANCELLED && item.rn_xact.req_status != svt_chi_transaction::ABORTED ); sys_xact.num_active_xacts_to_same_cacheline_from_other_src_when_curr_xact_received_dbidrespord = outstanding_xacts_to_same_cache_line_from_other_src_id.size(); active_snoop_xacts_to_other_rn_with_complementary_ns_bit = active_snoop_xact_queue.find() with(item.get_aligned_addr_to_cache_line_size(0) == xact.get_aligned_addr_to_cache_line_size(0) && item.tgt_id != xact.src_id && item.is_non_secure_access != xact.is_non_secure_access && `ifdef SVT_CHI_ISSUE_F_ENABLE item.non_secure_ext != xact.non_secure_ext && `endif item.req_status != svt_chi_transaction::ABORTED && item.req_status != svt_chi_transaction::CANCELLED ); sys_xact.snoop_txn_exists_to_other_rns_when_dbidrespord_resp_is_received_for_txn_to_one_rn = (active_snoop_xacts_to_other_rn_with_complementary_ns_bit.size()) ? 1 : 0; end disable fork; end join_none end end end |
|
|
0
| |
Defines for enabling protocol checks coverage at protocol layer, link layer and system level checks.
|
|
|
1
|
|
|
`ifdef SVT_VMM_TECHNOLOGY class_type::create_instance(component_type,component_name_str,`__FILE__,`__LINE__) `else class_type::type_id::create(component_name_str,component_type) `endif |
|
|
`SVT_DATA_UTIL_SIZE_FIELDNAME(arrname) : begin prop_val = arrsize; end SVT_DATA_UTIL_ARG_TO_STRING(arrname) : begin if ((array_ix >= 0) && (array_ix < arrsize)) destvar = arrname[array_ix]; else get_prop_val = 0; end | |
Custom get_prop_val macro for packed arrays with actual size represented by different variable
|
|
|
`SVT_DATA_UTIL_SIZE_FIELDNAME(arrname) : begin end SVT_DATA_UTIL_ARG_TO_STRING(arrname) : begin if ((array_ix >= 0) && (array_ix < arrsize)) arrname[array_ix] = srcvar; else set_prop_val = 0; end | |
Custom set_prop_val macro for packed arrays with actual size represented by different variable
|
|
|
`ifdef SVT_AMBA_DATA_UTIL_ENABLE_INTERNAL_MESSAGING svt_debug(id, msg) `else do begin end while(0) `endif |
|
|
svt_err_check_stats
|
|
|
|
2
|
|
|
6
|
|
|
slave_0,slave_1,slave_2,slave_3,slave_4,slave_5
|
|
|
svt_chi_system_monitor
|
|
|
`ifdef SVT_AMBA_DATA_UTIL_ENABLE_INTERNAL_MESSAGING svt_verbose(id, msg) `else do begin end while(0) `endif |
|
|
|
|
`ifdef SVT_UVM_TECHNOLOGY `elsif SVT_OVM_TECHNOLOGY `else if (do_what == DO_COMPARE) begin if (!svt_axi_cache_compare_hook(this.__vmm_rhs, this.__vmm_image)) begin this.__vmm_status = 0; end end `endif | |
Add some customized logic to compare the actual memory elements
|
|
|
`ifdef SVT_UVM_TECHNOLOGY `elsif SVT_OVM_TECHNOLOGY `else if (do_what == DO_COPY) begin svt_axi_cache_copy_hook(this.__vmm_rhs); end `endif | |
Add some customized logic to copy the actual memory elements
|
|
|
28
|
|
|
29
|
|
|
0
|
|
|
|
|
|
|
|
|
|
|
32
|
|
|
0
|
|
|
0
|
|
|
EXCLUDE_UNSTARTED_XACT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43
| |
Top address bit max valid value for 3 SN-F striping
|
|
|
28
| |
Top address bit min valid value for 3 SN-F striping
|
|
|
33
| |
Top address bit max valid value for 6 SN-F striping
|
|
|
28
| |
Top address bit min valid value for 6 SN-F striping
|
|
|
37
|
|
|
31
|
|
|
39
|
|
|
33
|
|
|
(xact.cfg.coherent_exclusive_access_from_rni_rnd_ports_enable ==1 && xact.xact_type == svt_chi_common_transaction::READONCE) |
|
|
(xact.cfg.coherent_exclusive_access_from_rni_rnd_ports_enable ==1 && (xact.xact_type == svt_chi_common_transaction::WRITEUNIQUEFULL || xact.xact_type == svt_chi_common_transaction::WRITEUNIQUEPTL)) |
|
|
6
| |
Width of address index field: 44 bit address width => 6 bits are needed to represent a given index
|
|
|
1
|
|
|
((xact.xact_type == svt_chi_transaction::CLEANSHARED) && ((axi_slave_xact.xact_type == svt_axi_transaction::COHERENT) && (axi_slave_xact.coherent_xact_type == svt_axi_transaction::CLEANSHARED))) || ((xact.xact_type == svt_chi_transaction::CLEANINVALID) && ((axi_slave_xact.xact_type == svt_axi_transaction::COHERENT) && (axi_slave_xact.coherent_xact_type == svt_axi_transaction::CLEANINVALID))) `ifdef SVT_CHI_ISSUE_B_ENABLE || ((xact.xact_type == svt_chi_transaction::CLEANSHAREDPERSIST) && ((axi_slave_xact.xact_type == svt_axi_transaction::COHERENT) && (axi_slave_xact.coherent_xact_type == svt_axi_transaction::CLEANSHAREDPERSIST))) `endif || ((xact.xact_type == svt_chi_transaction::MAKEINVALID) && ((axi_slave_xact.xact_type == svt_axi_transaction::COHERENT) && (axi_slave_xact.coherent_xact_type == svt_axi_transaction::MAKEINVALID))) |
|
|
((xact.is_valid_for_invisible_cache_mode() == 1) && ( ( (xact.xact_type == svt_chi_transaction::READNOSNP) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPONCE) `ifdef SVT_CHI_ISSUE_B_ENABLE || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPONCEFWD) `endif ) ) || ( (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL) && ( (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) `ifdef SVT_CHI_ISSUE_E_ENABLE || (snoop.cfg.mem_tagging_enable && xact.req_tag_op != svt_chi_transaction::TAG_UPDATE && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) `endif ) ) `ifdef SVT_CHI_ISSUE_E_ENABLE || ( (xact.xact_type == svt_chi_transaction::WRITENOSNPZERO) && ( (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) || (snoop.cfg.mem_tagging_enable && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) ) ) || ( (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANINVALID || xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHAREDPERSISTSEP) && ( (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) || (snoop.cfg.mem_tagging_enable && xact.req_tag_op != svt_chi_transaction::TAG_UPDATE && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) ) ) || ( (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANINVALID || xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANSHAREDPERSISTSEP) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE) ) ) `endif `ifdef SVT_CHI_ISSUE_F_ENABLE || ( (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANINVALIDPOPA) && ( (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) || (snoop.cfg.mem_tagging_enable && xact.req_tag_op != svt_chi_transaction::TAG_UPDATE && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) ) ) || ( (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANINVALIDPOPA) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE) ) ) `endif || ( (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE) ) ) ) ) || ((xact.xact_type == svt_chi_transaction::READONCE) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPONCE) `ifdef SVT_CHI_ISSUE_B_ENABLE || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPONCEFWD) `endif ) ) || ((xact.xact_type == svt_chi_transaction::READCLEAN) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEAN) `ifdef SVT_CHI_ISSUE_B_ENABLE || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANFWD) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPNOTSHAREDDIRTYFWD) `endif ) ) || ((xact.xact_type == svt_chi_transaction::READSHARED) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPSHARED) `ifdef SVT_CHI_ISSUE_B_ENABLE || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPNOTSHAREDDIRTYFWD) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPSHAREDFWD) `endif ) ) || ((xact.xact_type == svt_chi_transaction::READUNIQUE) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE) `ifdef SVT_CHI_ISSUE_B_ENABLE || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUEFWD) `endif ) ) || ((xact.xact_type == svt_chi_transaction::CLEANUNIQUE) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID)) || `ifdef SVT_CHI_ISSUE_E_ENABLE ((xact.xact_type == svt_chi_transaction::MAKEREADUNIQUE) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUEFWD) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPPREFERUNIQUEFWD && xact.is_exclusive == 1) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPPREFERUNIQUE && xact.is_exclusive == 1) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPNOTSHAREDDIRTYFWD && xact.is_exclusive == 1) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPNOTSHAREDDIRTY && xact.is_exclusive == 1) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANFWD && xact.is_exclusive == 1) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEAN && xact.is_exclusive == 1) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPSHARED && xact.is_exclusive == 1) ) ) || ((xact.xact_type == svt_chi_transaction::READPREFERUNIQUE) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPPREFERUNIQUE) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPPREFERUNIQUEFWD) ) ) || `endif ((xact.xact_type == svt_chi_transaction::MAKEUNIQUE) && ( (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) `ifdef SVT_CHI_ISSUE_E_ENABLE || (snoop.cfg.mem_tagging_enable && xact.req_tag_op != svt_chi_transaction::TAG_UPDATE && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) `endif ) ) || ((xact.xact_type == svt_chi_transaction::CLEANSHARED) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANSHARED)) || ((xact.xact_type == svt_chi_transaction::CLEANINVALID) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID)) || `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact.xact_type == svt_chi_transaction::CLEANINVALIDPOPA) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID)) || `endif ((xact.xact_type == svt_chi_transaction::MAKEINVALID) && ( (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) `ifdef SVT_CHI_ISSUE_E_ENABLE || (snoop.cfg.mem_tagging_enable && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) `endif ) ) || ((xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL) && ( (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) `ifdef SVT_CHI_ISSUE_E_ENABLE || (snoop.cfg.mem_tagging_enable && xact.req_tag_op != svt_chi_transaction::TAG_UPDATE && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) `endif ) ) || `ifdef SVT_CHI_ISSUE_E_ENABLE ((xact.xact_type == svt_chi_transaction::WRITEUNIQUEZERO) && ( (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) || (snoop.cfg.mem_tagging_enable && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) ) ) || ((xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP) && ( (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) || (snoop.cfg.mem_tagging_enable && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) ) ) || ((xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE))) || ((xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANSHAREDPERSISTSEP) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANSHARED)) || ((xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANINVALID) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID)) || `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANINVALIDPOPA) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID)) || `endif ((xact.xact_type == svt_chi_transaction::WRITECLEANFULL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITECLEANFULL_CLEANSHAREDPERSISTSEP) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANSHARED)) || ((xact.xact_type == svt_chi_transaction::STASHONCESEPUNIQUE) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPSTASHUNIQUE) || (sys_cfg.expect_snpuniquestash_for_stashonceunique_xact && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUESTASH) || (sys_cfg.expect_snpunique_for_stashonceunique_xact && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE) || (sys_cfg.expect_snponce_for_stashonceunique_xact && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPONCE) )) || ((xact.xact_type == svt_chi_transaction::STASHONCESEPSHARED) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPSTASHSHARED) || (sys_cfg.expect_snpshared_for_stashonceshared_xact && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPSHARED) || (sys_cfg.expect_snpnotshareddirty_for_stashonceshared_xact && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPNOTSHAREDDIRTY) )) || `endif ((xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE))) || `ifdef SVT_CHI_ISSUE_B_ENABLE ((xact.xact_type == svt_chi_transaction::READSPEC) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEAN)) || ((xact.xact_type == svt_chi_transaction::READONCECLEANINVALID) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPONCE) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPONCEFWD) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE))) || ((xact.xact_type == svt_chi_transaction::READONCEMAKEINVALID) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPONCE) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPONCEFWD) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) || (snoop.cfg.chi_spec_revision >= svt_chi_node_configuration::ISSUE_F && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUEFWD)) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE))) || ((xact.xact_type == svt_chi_transaction::READNOTSHAREDDIRTY) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPNOTSHAREDDIRTY) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEAN) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPNOTSHAREDDIRTYFWD) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPSHARED))) || ((xact.xact_type == svt_chi_transaction::CLEANSHAREDPERSIST) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANSHARED)) || `ifdef SVT_CHI_ISSUE_D_ENABLE ((xact.xact_type == svt_chi_transaction::CLEANSHAREDPERSISTSEP) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANSHARED)) || `endif ((xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULLSTASH) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALIDSTASH) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPMAKEINVALID) `ifdef SVT_CHI_ISSUE_E_ENABLE || (snoop.cfg.mem_tagging_enable && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID) || (snoop.cfg.mem_tagging_enable && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUESTASH) || (snoop.cfg.mem_tagging_enable && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE) `endif )) || ((xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTLSTASH) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUESTASH) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE))) || ((xact.xact_type == svt_chi_transaction::STASHONCEUNIQUE) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPSTASHUNIQUE) || (sys_cfg.expect_snpuniquestash_for_stashonceunique_xact && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUESTASH) || (sys_cfg.expect_snpunique_for_stashonceunique_xact && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE) || (sys_cfg.expect_snponce_for_stashonceunique_xact && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPONCE) )) || ((xact.xact_type == svt_chi_transaction::STASHONCESHARED) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPSTASHSHARED) || (sys_cfg.expect_snpshared_for_stashonceshared_xact && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPSHARED) || (sys_cfg.expect_snpnotshareddirty_for_stashonceshared_xact && snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPNOTSHAREDDIRTY) )) || (((xact.xact_type == svt_chi_transaction::ATOMICSTORE_ADD) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_CLR) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_EOR) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_SET) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_SMAX) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_SMIN) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_UMAX) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_UMIN) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_ADD) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_CLR) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_EOR) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_SET) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_SMAX) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_SMIN) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_UMAX) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_UMIN) || (xact.xact_type == svt_chi_transaction::ATOMICSWAP) || (xact.xact_type == svt_chi_transaction::ATOMICCOMPARE)) && ((snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPUNIQUE) || (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPCLEANINVALID))) || `endif ((xact.xact_type == svt_chi_transaction::DVMOP) && (snoop.snp_req_msg_type == svt_chi_snoop_transaction::SNPDVMOP)) |
|
|
1
|
|
|
16
|
|
|
1
|
|
|
3
|
|
|
5_1_4_2
|
|
|
5_1_4
|
|
|
5_1_4_1
|
|
|
5_1_8_2
|
|
|
5_1_8
|
|
|
5_1_8_1
|
|
|
2_5_2_1
|
|
|
2_5_2_1_1
|
|
|
2_5_2_1_2
|
|
|
2_5_2
|
|
|
2_5_0_3
|
|
|
2_5_0_4
|
|
|
|
|
5_1_0
|
|
|
2_5_0_0
|
|
|
2_5_0_5
|
|
|
2_5
|
|
|
2_5_1
|
|
|
2_5_0_2
|
|
|
2_5_0_1
|
|
|
1
| |
This value is used by the svt_chi_base_transaction_exception_list constructor to define the initial value for svt_exception_list :: max_num_exceptions. This field is used by the exception list to define the maximum number of exceptions which can be generated for a single transaction. The user testbench can override this constant value to define a different maximum value for use by all svt_chi_base_transaction_exception_list instances or can change the value of the svt_exception_list :: max_num_exceptions field directly to define a different maximum value for use by that svt_chi_base_transaction_exception_list instance.
|
|
|
64
| |
Generic defines
|
|
|
64
|
|
|
8
|
|
|
0
|
|
|
0
| |
Defines for Cache state types, also used by cache_state_enum
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
5
|
|
|
4
|
|
|
6
|
|
|
9_1
|
|
|
9_0
|
|
|
Defines for CCID values, also used by ccid_enum
|
|
|
|
|
|
|
|
|
2
| |
Width of CCID field
|
|
|
xact.current_state == svt_chi_snoop_transaction::UC || xact.current_state == svt_chi_snoop_transaction::SC || xact.current_state == svt_chi_snoop_transaction::UCE |
|
|
( xact.final_state == svt_chi_snoop_transaction::UC && xact.snp_req_msg_type != svt_chi_snoop_transaction::SNPONCE ) || xact.final_state == svt_chi_snoop_transaction::SC || xact.final_state == svt_chi_snoop_transaction::UCE |
|
|
1
|
|
|
0
| |
Used to indicate the status of the sysco interface state machine.
|
|
|
3
|
|
|
2
|
|
|
2
|
|
|
0
| |
Defines CHI exclusive access status *
|
|
|
1
|
|
|
1
| |
This value is used by the svt_chi_common_transaction_exception_list constructor to define the initial value for svt_exception_list :: max_num_exceptions. This field is used by the exception list to define the maximum number of exceptions which can be generated for a single transaction. The user testbench can override this constant value to define a different maximum value for use by all svt_chi_common_transaction_exception_list instances or can change the value of the svt_exception_list :: max_num_exceptions field directly to define a different maximum value for use by that svt_chi_common_transaction_exception_list instance.
|
|
|
20
| |
Macro to control the max value of clk delay for COMPACK to COMPACK assertion related link cg
|
|
|
3
| |
Macro to control the number of bins for COMPACK to COMPACK assertion related link cg
|
|
|
1
| |
Macro to control the min value of clk delay for COMPACK to COMPACK assertion related link cg
|
|
|
2_5_0_8
|
|
|
2_5_0_9
|
|
|
2_5_0_6
|
|
|
2_5_0_7
|
|
|
5
| |
To define bins in related coverage, Maximum number of back2back cycles protocol flitv is asserted in virtual channels
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
1
|
|
|
|
|
0
| |
Defines for nderr_resp_policy_enum
|
|
|
3
|
|
|
Width of DAT FLIT MECID/DBID field
|
|
|
0
| |
DAT Flit format defines
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This defines the width of the BYTE ENABLE field width of the TXDATFLIT and RXDATFLIT signals. It is also used by svt_chi_flit :: byte_enable attribute.
|
|
|
128
| |
This defines the width of the DATA field width of the TXDATFLIT and RXDATFLIT and also affects the BE field. It is also used by svt_chi_flit :: data attribute.
|
|
|
|
|
|
|
4
| |
This defines the width of RSVDC field width of the TXDATFLIT and RXDATFLIT
|
|
|
Width of DAT RSVDC field
|
|
|
0
|
|
|
|
|
|
|
|
|
Opcodes used for Data VC FLIT
|
|
|
|
|
|
|
|
|
|
|
|
|
4
|
|
|
|
|
2
| |
Width of Data ID field
|
|
|
3
|
|
|
SVT_CHI_SIZE_WIDTH'b100
|
|
|
SVT_CHI_SIZE_WIDTH'b000
| |
Defines for different data sizes in bytes, also used by data_size_enum
|
|
|
SVT_CHI_SIZE_WIDTH'b001
|
|
|
SVT_CHI_SIZE_WIDTH'b101
|
|
|
SVT_CHI_SIZE_WIDTH'b010
|
|
|
SVT_CHI_SIZE_WIDTH'b110
|
|
|
SVT_CHI_SIZE_WIDTH'b011
|
|
|
3
|
|
|
0
| |
Width of Datacheck field-- applicable for CHI Issue B
|
|
|
Width of DBID field
|
|
|
32
|
|
|
1
| |
Default num channels configuration macro set to 1. Applicable for all channels.
|
|
|
1
| |
Default value for max num channels macro.
|
|
|
-1
| |
defines maximum number of outstanding non-dvm snoop transactions
|
|
|
-1
| |
defines maximum number of outstanding non-dvm snoop transactions
|
|
|
4
| |
Default maximum number of outstanding transactions
|
|
|
4
| |
Default maximum number of outstanding transactions
|
|
|
((((SVT_CHI_MAX_FLIT_BUFFER_SIZE)*2)/3)+1)
| |
Start value of high range for l-credit value
|
|
|
((SVT_CHI_MAX_FLIT_BUFFER_SIZE/3)+1)
| |
Start value of medium range for l-credit value
|
|
|
1
|
|
|
0
| |
Defines used by system_domain_type_enum
|
|
|
2
|
|
|
3
|
|
|
1
|
|
|
1
|
|
|
13:11
|
|
|
|
|
3
| |
DVM Message type related defines
|
|
|
3
|
|
|
4
|
|
|
10_7
|
|
|
10_8
|
|
|
10_10
|
|
|
10_5
|
|
|
10_1
|
|
|
10_9
|
|
|
10_2
|
|
|
10_3
|
|
|
10_13
|
|
|
10_15
|
|
|
10_14
|
|
|
10_16
|
|
|
10_18
|
|
|
10_17
|
|
|
3'b001
|
|
|
3'b010
|
|
|
3'b100
|
|
|
3'b000
| |
DVM Operation type related defines
|
|
|
3'b011
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
0
| |
Define for controlling default value for enabling DCT
|
|
|
0
| |
Define for controlling default value for enabling DMT
|
|
|
0
| |
Define for controlling default value for enabling DWT
|
|
|
0
| |
Define for controlling default value for enabling Memory Tagging
|
|
|
0
| |
Define for controlling default value for enabling Ordered Stash Data Pull
|
|
|
0
| |
Define for controlling default value for enabling Seperate Read Data and Home Response
|
|
|
0
| |
Define for controlling default value for enabling Stash
|
|
|
0
| |
Define for controlling default value for enabling Stash Data Pull
|
|
|
3_3
|
|
|
3_3_2
|
|
|
3_3_1
|
|
|
4_3
|
|
|
4_3_2
|
|
|
4_3_1
|
|
|
3_4
|
|
|
3_4_2
|
|
|
3_4_1
|
|
|
4_4
|
|
|
4_4_2
|
|
|
4_4_1
|
|
|
1_3
|
|
|
1_3_2
|
|
|
1_3_1
|
|
|
2_3
|
|
|
2_3_2
|
|
|
2_3_1
|
|
|
1_4
|
|
|
1_4_2
|
|
|
1_4_1
|
|
|
2_4
|
|
|
2_4_2
|
|
|
2_4_1
|
|
|
1
| |
Define the width of enum bits *
|
|
|
0
| |
Defines CHI exclusive transaction drop condition*
|
|
|
0
| |
Defines CHI exclusive monitor status*
|
|
|
6
|
|
|
2
|
|
|
1
|
|
|
4
|
|
|
5
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
0
| |
Defines CHI exclusive monitor status, used by subsequent excluisve store to determine on whether to bypass excluisve_store_response_check
|
|
|
1
|
|
|
3
|
|
|
2
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
11_1_2
|
|
|
11_1_1
|
|
|
11_0_1
|
|
|
11_0_2
|
|
|
11_0_4
|
|
|
11_0_3
|
|
|
1
|
|
|
`ifdef SVT_CHI_ISSUE_F_ENABLE $sformatf("%0s = %0d", SVT_DATA_UTIL_ARG_TO_STRING(field),xact.field) `else " " `endif |
|
|
`ifdef SVT_CHI_ISSUE_F_ENABLE $sformatf(" NSE('b%0b)", xact.non_secure_ext) `else " " `endif |
|
|
((flit == null) ? "CAUSAL XACT {SYS_ID(-1) OBJ_NUM(-1) NODE_ID(-1) TYPE(null) TXN_ID(0) ADDR(0) END_TIME(0)}":flit.causal_xact_psdisplay_concise()) |
|
|
128
| |
Different Flit data widths
|
|
|
256
|
|
|
512
|
|
|
1
| |
This value is used by the svt_chi_flit_exception_list constructor to define the initial value for svt_exception_list :: max_num_exceptions. This field is used by the exception list to define the maximum number of exceptions which can be generated for a single transaction. The user testbench can override this constant value to define a different maximum value for use by all svt_chi_flit_exception_list instances or can change the value of the svt_exception_list :: max_num_exceptions field directly to define a different maximum value for use by that svt_chi_flit_exception_list instance.
|
|
|
((flit == null) ? "FLIT {SYS_ID(-1) OBJ_NUM(-1) NODE_ID(-1) TYPE(null) TXN_ID(0) ADDR(0) END_TIME(0)}":flit.psdisplay_concise()) |
|
|
0
| |
Different rsvdc widths
|
|
|
12
|
|
|
16
|
|
|
24
|
|
|
32
|
|
|
4
|
|
|
8
|
|
|
Width of Forward NID or {(NID_WIDTH-4)'b0,PBHA[3:0]} field. Used for packing the data flit.
|
|
|
Width of Forward NID field. Used for attributes declaration in data classes.
|
|
|
Width of Forward Transaction ID field
|
|
|
3
|
|
|
`ifdef SVT_VMM_TECHNOLOGY xact.notify.timestamp(vmm_data::ENDED) `else xact.get_end_realtime() `endif |
|
|
`ifdef SVT_VMM_TECHNOLOGY xact.notify.timestamp(vmm_data::STARTED) `else xact.get_begin_realtime() `endif |
|
|
2
|
|
|
0
| |
Atomic xact propagation to slave policy
|
|
|
1
|
|
|
2
|
|
|
6
|
|
|
CLEANINVALID_ABF
| |
Define for controlling the default value of svt_chi_hn_status :: address_based_flush_policy
|
|
|
Width of Home NID or {(NID_WIDTH-4)'b0,PBHA[3:0]} field. Used for packing the data flit.
|
|
|
Width of Home NID field. Used for attributes declaration in data classes.
|
|
|
1
|
|
|
ISSUE_A
|
|
|
post_tx_dat_seq_item_get
|
|
|
post_tx_rsp_seq_item_get
|
|
|
|
|
1
|
|
|
0
| |
Inactive value defines
|
|
|
2
|
|
|
5
|
|
|
3
|
|
|
4
|
|
|
32
| |
Width of an integer type variable in bits
|
|
|
5
|
|
|
6
|
|
|
7
|
|
|
8
|
|
|
2
|
|
|
0
| |
Interface types
|
|
|
1
|
|
|
3
|
|
|
4
|
|
|
|
( (xact.xact_type == svt_chi_transaction::EOBARRIER) || (xact.xact_type == svt_chi_transaction::ECBARRIER) ) |
|
|
( (xact.xact_type == svt_chi_transaction::CLEANSHARED) || `ifdef SVT_CHI_ISSUE_B_ENABLE (xact.xact_type == svt_chi_transaction::CLEANSHAREDPERSIST) || `endif `ifdef SVT_CHI_ISSUE_D_ENABLE (xact.xact_type == svt_chi_transaction::CLEANSHAREDPERSISTSEP) || `endif `ifdef SVT_CHI_ISSUE_F_ENABLE (xact.xact_type == svt_chi_transaction::CLEANINVALIDPOPA) || `endif (xact.xact_type == svt_chi_transaction::CLEANINVALID) || (xact.xact_type == svt_chi_transaction::MAKEINVALID) ) |
|
|
( (xact.xact_type == svt_chi_transaction::WRITEBACKFULL) || (xact.xact_type == svt_chi_transaction::WRITEBACKPTL) || (xact.xact_type == svt_chi_transaction::WRITECLEANFULL) || (xact.xact_type == svt_chi_transaction::WRITECLEANPTL) || (xact.xact_type == svt_chi_transaction::WRITEEVICTFULL) || `ifdef SVT_CHI_ISSUE_E_ENABLE (xact.xact_type == svt_chi_transaction::WRITEEVICTOREVICT) || (xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANINVALID) || (xact.xact_type == svt_chi_transaction::WRITECLEANFULL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITECLEANFULL_CLEANSHAREDPERSISTSEP) || `endif `ifdef SVT_CHI_ISSUE_F_ENABLE (xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANINVALIDPOPA) || `endif (xact.xact_type == svt_chi_transaction::EVICT) ) |
|
|
( (xact.xact_type == svt_chi_transaction::DVMOP) ) |
|
|
( (xact.xact_type == svt_chi_transaction::PCRDRETURN) ) |
|
|
( (xact.xact_type == svt_chi_transaction::PREFETCHTGT) ) |
|
|
( (xact.xact_type == svt_chi_transaction::READNOSNP) || (xact.xact_type == svt_chi_transaction::READONCE) || (xact.xact_type == svt_chi_transaction::READSHARED) || (xact.xact_type == svt_chi_transaction::READCLEAN) || `ifdef SVT_CHI_ISSUE_C_ENABLE (xact.xact_type == svt_chi_transaction::READNOSNPSEP) || `endif `ifdef SVT_CHI_ISSUE_E_ENABLE (xact.xact_type == svt_chi_transaction::READPREFERUNIQUE) || (xact.xact_type == svt_chi_transaction::MAKEREADUNIQUE) || (xact.xact_type == svt_chi_transaction::STASHONCESEPSHARED) || (xact.xact_type == svt_chi_transaction::STASHONCESEPUNIQUE) || `endif `ifdef SVT_CHI_ISSUE_B_ENABLE (xact.xact_type == svt_chi_transaction::READNOTSHAREDDIRTY) || (xact.xact_type == svt_chi_transaction::READONCECLEANINVALID) || (xact.xact_type == svt_chi_transaction::READONCEMAKEINVALID) || (xact.xact_type == svt_chi_transaction::STASHONCESHARED) || (xact.xact_type == svt_chi_transaction::STASHONCEUNIQUE) || `endif (xact.xact_type == svt_chi_transaction::READUNIQUE) || (xact.xact_type == svt_chi_transaction::CLEANUNIQUE) || (xact.xact_type == svt_chi_transaction::MAKEUNIQUE) ) |
|
|
( (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL) || `ifdef SVT_CHI_ISSUE_B_ENABLE (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULLSTASH) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTLSTASH) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_ADD) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_CLR) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_EOR) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_SET) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_SMAX) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_SMIN) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_UMAX) || (xact.xact_type == svt_chi_transaction::ATOMICSTORE_UMIN) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_ADD) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_CLR) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_EOR) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_SET) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_SMAX) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_SMIN) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_UMAX) || (xact.xact_type == svt_chi_transaction::ATOMICLOAD_UMIN) || (xact.xact_type == svt_chi_transaction::ATOMICSWAP) || (xact.xact_type == svt_chi_transaction::ATOMICCOMPARE) || `endif `ifdef SVT_CHI_ISSUE_E_ENABLE (xact.xact_type == svt_chi_transaction::WRITEUNIQUEZERO) || (xact.xact_type == svt_chi_transaction::WRITENOSNPZERO) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANINVALID) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANINVALID) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANSHAREDPERSISTSEP) || `endif `ifdef SVT_CHI_ISSUE_F_ENABLE (xact.xact_type == svt_chi_transaction::WRITENOSNPDEF) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANINVALIDPOPA) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANINVALIDPOPA) || `endif (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL) ) |
|
|
|
|
|
|
|
0
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
Related covergroups are early adopter (EA) features. Coverage closure for these covergroups is not yet achieved within Synopsys internal setup. Users need to exclude any bins that are not valid/not applicable/not possible to hit at their end.
| |
Used for documentation and messaging, for limited validated covergroups
|
|
|
15
| |
Genaralized maximum delay count applicable for link activity
|
|
|
1
|
|
|
11_1_0
|
|
|
11_0_0
|
|
|
6
| |
log_base_2 of cache line size (64) in CHI
|
|
|
6
|
|
|
5
| |
Width of LPID field of a Message Request
|
|
|
44
| |
Width of Addr field of a Message Request For CHI Issue-B: this is redefinable For CHI Issue-A: this is fixed to 44
|
|
|
16
| |
Width of atomic operation byte enable field
|
|
|
128
| |
Width of atomic operation data field
|
|
|
16
|
|
|
8
|
|
|
64
|
|
|
8
|
|
|
1
|
|
|
2
|
|
|
64
| |
Width of transaction byte enable field
|
|
|
5
| |
Maximum value for read_xacts_compdata_to_compack_delay_count
|
|
|
16
| |
Maximum value for comp_to_dbid_flit_delay
|
|
|
256
| |
Maximum value for DAT flit reordering depth
|
|
|
4
| |
Max value of received DAT flit to LCRD delay
|
|
|
(33+(SVT_CHI_DAT_VC_FLIT_OP_WIDTH)+(3*SVT_CHI_MAX_NODE_ID_WIDTH)+SVT_CHI_DAT_FLIT_MAX_RSVDC_WIDTH+SVT_CHI_DAT_FLIT_MAX_BE_WIDTH+SVT_CHI_DAT_FLIT_MAX_DATA_WIDTH +(SVT_CHI_DATACHECK_INTERNAL_WIDTH_ENABLE * SVT_CHI_DAT_FLIT_MAX_DATACHECK_WIDTH)+(SVT_CHI_POISON_INTERNAL_WIDTH_ENABLE * SVT_CHI_DAT_FLIT_MAX_POISON_WIDTH)+SVT_CHI_DAT_USER_EXTN_MAX_WIDTH)
|
|
|
512
| |
Width of transaction data field
|
|
|
Width of transaction DataCheck field
|
|
|
16
| |
Maximum value for dbid_to_comp_flit_delay
|
|
|
5
| |
Maximum value for write_xacts_dbid_to_writedata_delay_count
|
|
|
15
| |
Max flit buffer size for RX*** VC
|
|
|
20
|
|
|
Define Max LPID width used for monitoring exclusive accesses by exclusive monitor *
|
|
|
100
| |
Max value for the min_cycles_in_deactive property in the Link Service descriptor
|
|
|
7
|
|
|
1024
| |
Maximum number of cache lines
|
|
|
0
| |
MAX_NUM_CLOCK_CYCLES_SPECULATIVE_SACTIVE_SIGNAL_ASSERTED
|
|
|
0
| |
MAX_NUM_END_OF_XACT_TXSACTIVE_EXTENDED_ASSERTION_CYCLES
|
|
|
4
| |
Maximum number of active exclusive accesses at a given node*
|
|
|
40
| |
Maximum number of HNs
|
|
|
1
|
|
|
0
| |
Maximum number of L-Credits to be transmitted in Deactivate state.
|
|
|
256
| |
Maximum number of outstanding snoop transactions
|
|
|
256
| |
Maximum number of outstanding transactions
|
|
|
4
| |
Max value for the Number of Request Order Streams. This corresponds to CHI node configuration attribute num_req_order_streams.
|
|
|
16
|
|
|
16
|
|
|
0
| |
MAX_NUM_SPECULATIVE_TXSACTIVE_ASSERTION_CYCLES
|
|
|
0
| |
MAX_NUM_SPECULATIVE_TXSACTIVE_DEASSERTION_CYCLES
|
|
|
32
|
|
|
|
|
16
| |
Maximum value for pcreditgrant_to_retryack_flit_delay
|
|
|
|
|
Macros defining width of Poison field at transaction level
|
|
|
(1<<SVT_CHI_QOS_WIDTH)
| |
Maximum value of QoS field
|
|
|
256
|
|
|
2
| |
Defines used for read data interleaving in CHI ICN full slave
|
|
|
64
|
|
|
8192
|
|
|
Maximum of RN & SN max REQ channel macros
|
|
|
4
| |
Max value of received REQ flit to LCRD delay
|
|
|
|
|
16
| |
Maximum value for req_to_comp_flit_delay
|
|
|
16
| |
Maximum value for req_to_compdata_flit_delay
|
|
|
16
| |
Maximum value for req_to_compdbid_flit_delay
|
|
|
16
| |
Maximum value for req_to_dbid_flit_delay
|
|
|
16
| |
Maximum value for req_to_pcrdgrant_flit_delay
|
|
|
16
| |
Maximum value for req_to_retryack_flit_delay
|
|
|
16
| |
Maximum value for retryack_to_pcreditgrant_flit_delay
|
|
|
256
| |
Maximum value for RSP flit reordering depth
|
|
|
4
| |
Max value of received RSP flit to LCRD delay
|
|
|
|
|
Maximum of RN & SN max RXDAT channel macros
|
|
|
16
| |
Maximum value for RXDATLCRDV_DELAY
|
|
|
Maximum of RN RXRSP channel macros
|
|
|
16
| |
Maximum value for RXRSPLCRDV_DELAY
|
|
|
Maximum of RN RXSNP channel macros
|
|
|
16
| |
Maximum value for RXSNPLCRDV_DELAY
|
|
|
4
| |
Max value of received SNP flit to LCRD delay
|
|
|
|
|
5
| |
Maximum value for snpstashunique_xact_to_snpresp_delay
|
|
|
5
| |
Maximum value for snpunique_snpcleaninvalid_snpmakeinvalid_xact_to_snpresp_delay
|
|
|
5
| |
Maximum value for snpunique_snpcleaninvalid_xact_to_snprespdata_delay
|
|
|
|
|
16
| |
Maximum value for TX_DATAPULL_COMPACK_FLITPEND_DELAY
|
|
|
16
| |
Maximum value for TX_DATAPULL_COMPACK_FLITV_DELAY
|
|
|
16
| |
Max value for the flit delay. Must not conflict with `SVT_CHI_MAX_TX***FLITPEND_DELAY
|
|
|
16
| |
Max value for the flitpend->flitv delay. Must not conflict with `SVT_CHI_MAX_TX***FLITV_DELAY
|
|
|
Maximum of RN & SN max TXDAT channel macros
|
|
|
16
| |
Maximum value for TXDATFLITPEND_DELAY
|
|
|
16
| |
Maximum value for TXDATFLITV_DELAY
|
|
|
8
|
|
|
16
| |
Maximum value for TXREQFLITPEND_DELAY
|
|
|
16
| |
Maximum value for TXREQFLITV_DELAY
|
|
|
Maximum of RN & SN max TXRSP channel macros
|
|
|
16
| |
Maximum value for TXRSPFLITPEND_DELAY
|
|
|
16
| |
Maximum value for TXRSPFLITV_DELAY
|
|
|
16
| |
Maximum value for TXSNPFLITV_DELAY
|
|
|
((SVT_CHI_MAX_ADDR_WIDTH == 44)?49:((SVT_CHI_MAX_ADDR_WIDTH == 45)?51:53))
|
|
|
200
| |
Max value for the TX Link Activation Timeout
|
|
|
200
| |
Max value for the counter for Link Deactivation
|
|
|
200
| |
Max value for the TX Link Deactivation Timeout
|
|
|
300
| |
Max value for the RX VC credit transmission timeeout
|
|
|
256
|
|
|
2
| |
Defines used for Write data interleaving in CHI RN-F Node
|
|
|
64
|
|
|
8192
|
|
|
100
| |
Maximum value for XACT DAT VC access fail count. This should be >= 20 and >= 1.
|
|
|
100
| |
Maximum value for XACT RSP VC access fail count. This should be >= 20 and >= 1.
|
|
|
4
| |
Width of Mem Attr field
|
|
|
if (chi_mem_reporter == null) svt_debug(id, msg); else `ifdef uvm_info_context do uvm_info_context(id, msg, UVM_HIGH, chi_mem_reporter) while (0) `else do if (chi_mem_reporter.uvm_report_enabled(UVM_HIGH,UVM_INFO,id)) chi_mem_reporter.uvm_report_info(id, msg, UVM_HIGH); while (0) `endif |
|
|
if (chi_mem_reporter == null) svt_error(id, msg); else `ifdef uvm_error_context do uvm_error_context(id, msg, chi_mem_reporter) while (0) `else do if (chi_mem_reporter.uvm_report_enabled(UVM_NONE,UVM_ERROR,id)) chi_mem_reporter.uvm_report_error(id, msg); while (0) `endif | |
This is an SVT memory class customized for CHI.
|
|
|
if (chi_mem_reporter == null) svt_note(id, msg); else `ifdef uvm_info_context do uvm_info_context(id, msg, UVM_LOW, chi_mem_reporter) while (0) `else do if (chi_mem_reporter.uvm_report_enabled(UVM_LOW,UVM_INFO,id)) chi_mem_reporter.uvm_report_info(id, msg, UVM_LOW); while (0) `endif |
|
|
1
|
|
|
0
| |
Defines for Memory types, also used by mem_attr_mem_type_enum
|
|
|
if (chi_mem_reporter == null) svt_verbose(id, msg); else `ifdef uvm_info_context do uvm_info_context(id, msg, UVM_FULL, chi_mem_reporter) while (0) `else do if (chi_mem_reporter.uvm_report_enabled(UVM_FULL,UVM_INFO,id)) chi_mem_reporter.uvm_report_info(id, msg, UVM_FULL); while (0) `endif |
|
|
if (chi_mem_reporter == null) svt_warning(id, msg); else `ifdef uvm_warning_context do uvm_warning_context(id, msg, chi_mem_reporter) while(0) `else do if (chi_mem_reporter.uvm_report_enabled(UVM_NONE,UVM_WARNING,id)) chi_mem_reporter.uvm_report_warning(id, msg); while (0) `endif |
|
|
5
|
|
|
3
| |
Macro to control number of bins for read_xacts_compdata_to_compack_delay_count
|
|
|
3
| |
Macro to control number of bins for write_xacts_dbid_to_writedata_delay_count
|
|
|
3
| |
Macro to control number of bins for snpstashunique_xact_to_snpresp_delay
|
|
|
3
| |
Macro to control number of bins for snpunique_snpcleaninvalid_snpmakeinvalid_xact_to_snpresp_delay
|
|
|
3
| |
Macro to control number of bins for snpunique_snpcleaninvalid_xact_to_snprespdata_delay
|
|
|
1
| |
Minimum value for read_xacts_compdata_to_compack_delay_count
|
|
|
0
| |
Minimum value for comp_to_dbid_flit_delay
|
|
|
0
| |
Min value of received DAT flit to LCRD delay
|
|
|
0
| |
Minimum value for dbid_to_comp_flit_delay
|
|
|
1
| |
Minimum value for write_xacts_dbid_to_writedata_delay_count
|
|
|
5
|
|
|
0
| |
MIN_NUM_END_OF_XACT_TXSACTIVE_EXTENDED_ASSERTION_CYCLES
|
|
|
0
| |
MIN_NUM_SPECULATIVE_TXSACTIVE_ASSERTION_CYCLES
|
|
|
0
| |
MIN_NUM_SPECULATIVE_TXSACTIVE_DEASSERTION_CYCLES
|
|
|
0
| |
Minimum value for pcreditgrant_to_retryack_flit_delay
|
|
|
0
| |
Min value of received REQ flit to LCRD delay
|
|
|
0
| |
Minimum value for req_to_comp_flit_delay
|
|
|
0
| |
Minimum value for req_to_compdata_flit_delay
|
|
|
0
| |
Minimum value for req_to_compdbid_flit_delay
|
|
|
0
| |
Minimum value for req_to_dbid_flit_delay
|
|
|
0
| |
Minimum value for req_to_pcrdgrant_flit_delay
|
|
|
0
| |
Minimum value for req_to_retryack_flit_delay
|
|
|
0
| |
Minimum value for retryack_to_pcreditgrant_flit_delay
|
|
|
0
| |
Min value of received RSP flit to LCRD delay
|
|
|
0
| |
Mininum value for RXDATLCRDV_DELAY
|
|
|
1
| |
Mininum value for RXRSPLCRDV_DELAY
|
|
|
1
| |
Mininum value for RXSNPLCRDV_DELAY
|
|
|
0
| |
Min value of received SNP flit to LCRD delay
|
|
|
1
| |
Minimum value for snpstashunique_xact_to_snpresp_delay
|
|
|
1
| |
Minimum value for snpunique_snpcleaninvalid_snpmakeinvalid_xact_to_snpresp_delay
|
|
|
1
| |
Minimum value for snpunique_snpcleaninvalid_xact_to_snprespdata_delay
|
|
|
0
| |
Mininum value for TX_DATAPULL_COMPACK_FLITPEND_DELAY
|
|
|
1
| |
Mininum value for TX_DATAPULL_COMPACK_FLITV_DELAY
|
|
|
0
| |
Mininum value for TXDATFLITPEND_DELAY
|
|
|
1
| |
Mininum value for TXDATFLITV_DELAY
|
|
|
0
| |
Mininum value for TXREQFLITPEND_DELAY
|
|
|
1
| |
Mininum value for TXREQFLITV_DELAY
|
|
|
0
| |
Mininum value for TXRSPFLITPEND_DELAY
|
|
|
1
| |
Mininum value for TXRSPFLITV_DELAY
|
|
|
1
| |
Mininum value for TXSNPFLITV_DELAY
|
|
|
0.1
|
|
|
0.1
|
|
|
3
|
|
|
stats_name = new("",SVT_DATA_UTIL_ARG_TO_STRING(stats_name), group_name,sub_group_name, {stats_description}, {reference},svt_err_check_stats::ERROR,0,1 `ifdef SVT_AMBA_ERR_CHECK_STATS_USED ,generic_prefix_str, `SVT_AMBA_ERR_CHECK_STATS_SUFFIX_STR(stats_name) `endif ); register_check(stats_name); `ifndef SVT_VMM_TECHNOLOGY `ifndef SVT_AMBA_EXCLUDE_CHI_NODE_LL_CHECK_COVERAGE SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_OVERRIDE(svt_chi_link,stats_name) `endif `endif stats_name.set_default_pass_effect(svt_err_check_stats::EXPECTED); `ifndef SVT_AMBA_EXCLUDE_CHI_NODE_LL_CHECK_COVERAGE if ((node_cfg.ll_protocol_checks_coverage_enable == 1) && (enable_pc_cov ==1)) stats_name.add_cov(.enable_pass_cov(1),.enable_fail_cov(0)); `endif |
|
|
stats_name = new("",SVT_DATA_UTIL_ARG_TO_STRING(stats_name), group_name,sub_group_name, {stats_description}, {reference},svt_err_check_stats::WARNING,0,1 `ifdef SVT_AMBA_ERR_CHECK_STATS_USED ,generic_prefix_str, `SVT_AMBA_ERR_CHECK_STATS_SUFFIX_STR(stats_name) `endif ); register_check(stats_name); `ifndef SVT_VMM_TECHNOLOGY `ifndef SVT_AMBA_EXCLUDE_CHI_NODE_LL_CHECK_COVERAGE SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_OVERRIDE(svt_chi_link,stats_name) `endif `endif stats_name.set_default_pass_effect(svt_err_check_stats::EXPECTED); `ifndef SVT_AMBA_EXCLUDE_CHI_NODE_LL_CHECK_COVERAGE if ((node_cfg.ll_protocol_checks_coverage_enable == 1) && (enable_pc_cov ==1)) stats_name.add_cov(.enable_pass_cov(1),.enable_fail_cov(0)); `endif |
|
|
stats_name = new("",SVT_DATA_UTIL_ARG_TO_STRING(stats_name), group_name,sub_group_name, {stats_description}, {reference},svt_err_check_stats::ERROR,0,1 `ifdef SVT_AMBA_ERR_CHECK_STATS_USED ,generic_prefix_str, `SVT_AMBA_ERR_CHECK_STATS_SUFFIX_STR(stats_name) `endif ); register_check(stats_name); `ifndef SVT_VMM_TECHNOLOGY `ifndef SVT_AMBA_EXCLUDE_CHI_NODE_PL_CHECK_COVERAGE SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_OVERRIDE(svt_chi_prot,stats_name) `endif `endif stats_name.set_default_pass_effect(svt_err_check_stats::EXPECTED); `ifndef SVT_AMBA_EXCLUDE_CHI_NODE_PL_CHECK_COVERAGE if ((node_cfg.pl_protocol_checks_coverage_enable == 1) && (enable_pc_cov ==1)) stats_name.add_cov(.enable_pass_cov(1),.enable_fail_cov(0)); `endif |
|
|
stats_name = new("",SVT_DATA_UTIL_ARG_TO_STRING(stats_name), group_name,sub_group_name, {stats_description}, {reference},svt_err_check_stats::WARNING,0,1 `ifdef SVT_AMBA_ERR_CHECK_STATS_USED ,generic_prefix_str, `SVT_AMBA_ERR_CHECK_STATS_SUFFIX_STR(stats_name) `endif ); register_check(stats_name); `ifndef SVT_VMM_TECHNOLOGY `ifndef SVT_AMBA_EXCLUDE_CHI_NODE_PL_CHECK_COVERAGE SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_OVERRIDE(svt_chi_prot,stats_name) `endif `endif stats_name.set_default_pass_effect(svt_err_check_stats::EXPECTED); `ifndef SVT_AMBA_EXCLUDE_CHI_NODE_PL_CHECK_COVERAGE if ((node_cfg.pl_protocol_checks_coverage_enable == 1) && (enable_pc_cov ==1)) stats_name.add_cov(.enable_pass_cov(1),.enable_fail_cov(0)); `endif |
|
|
6_2_16
|
|
|
6_1_16
|
|
|
6_2_14
|
|
|
6_1_14
|
|
|
6_2_15
|
|
|
6_1_15
|
|
|
6_2_13
|
|
|
6_1_13
|
|
|
6_2_12
|
|
|
6_1_12
|
|
|
6_2_10
|
|
|
6_1_10
|
|
|
6_2_11
|
|
|
6_1_11
|
|
|
6_2_9
|
|
|
6_1_9
|
|
|
6_2_8
|
|
|
6_1_8
|
|
|
6_2_6
|
|
|
6_1_6
|
|
|
6_2_7
|
|
|
6_1_7
|
|
|
6_2_5
|
|
|
6_1_5
|
|
|
6_2_4
|
|
|
6_1_4
|
|
|
6_2_2
|
|
|
6_1_2
|
|
|
6_2_3
|
|
|
6_1_3
|
|
|
6_2_1
|
|
|
6_1_1
|
|
|
6_0
|
|
|
6_2
|
|
|
6_1
|
|
|
Defines for different order types, also used by order_type_enum
|
|
|
0
|
|
|
0
| |
Default value of CHI Node Configuration attribute async_input_banned_output_race_link_active_states_timeout
|
|
|
ISSUE_A
| |
Default value of CHI Extensions enable attribute
|
|
|
0
| |
Default value of node configuration attribute enable_mpam
|
|
|
UNSUPPORTED
| |
Default value of node configuration attribute interface_parity_check_type
|
|
|
1
| |
Default value of CHI Node Configuration attribute is_link_active_state_machine_in_async_input_race_state_expected
|
|
|
1
| |
Default value of CHI Node Configuration attribute is_link_active_state_machine_in_banned_output_race_state_expected
|
|
|
CHI_MPAM_9_1
| |
Default value of node configuration attribute mpam_partid_pmg_type
|
|
|
CHI_E_SPEC_BEHAVIOR
| |
Default_value of node configuration attribute nderr_resp_policy.
|
|
|
EXCLUDE_UNSTARTED_XACT
| |
Default value of node configuration attribute reset_type.
|
|
|
0
| |
Default value of CHI Node Configuration attribute stop_snp_lcrd_xmission_when_txla_not_in_run_state
|
|
|
0
| |
Default value of node configuration attribute partial_cache_line_states_enable.
|
|
|
16
| |
Used to define the number of bins for byte_enable values in node level covergroup trans_cross_chi_rn_writeuniqueptl_byte_enable.
|
|
|
Width of Node ID fields
|
|
|
$sformatf("{SYS_ID(%0d) NODE_ID(%0d)} ", (((cfg !=null) && (cfg.sys_cfg != null))?cfg.sys_cfg.system_id:-1), ((cfg != null)?cfg.node_id:-1)) |
|
|
((xact.xact_type == svt_chi_transaction::WRITENOSNPPTL || xact.xact_type == svt_chi_transaction::WRITENOSNPFULL || xact.xact_type == svt_chi_transaction::READNOSNP ) ) |
|
|
5_2_4_2
|
|
|
5_2_4
|
|
|
5_2_4_1
|
|
|
5_2_8_2
|
|
|
5_2_8
|
|
|
5_2_8_1
|
|
|
( (xact.xact_type == svt_chi_transaction::CLEANINVALID) || (xact.xact_type == svt_chi_transaction::MAKEINVALID) || (xact.xact_type == svt_chi_transaction::CLEANSHARED) ) |
|
|
1
|
|
|
16
|
|
|
2
| |
Width of order field
|
|
|
10_12
|
|
|
10_11
|
|
|
Defines for different P Credit types, also used by p_crd_type_enum
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4
| |
Width of P Credit type field
|
|
|
2
|
|
|
( `ifdef SVT_CHI_ISSUE_B_ENABLE (xact.xact_type == svt_chi_transaction::CLEANSHAREDPERSIST) `endif `ifdef SVT_CHI_ISSUE_D_ENABLE || (xact.xact_type == svt_chi_transaction::CLEANSHAREDPERSISTSEP ) `endif ) |
|
|
1
| |
Width of Posion field-- applicable for CHI Issue B
|
|
|
4
|
|
|
5
|
|
|
3
|
|
|
0
| |
Defines used by delay reference events
|
|
|
$sformatf("{%0s%0sSYS_ID('d%0d) %0sOBJ_NUM('d%0d) NODE_ID('d%0d) %0sTYPE(%0s)%0s TXN_ID('h%0h) QOS('h%0h) ADDR('h%0x)%0s%0s SIZE(%0s)%0s %0sNS(%0b) RETRY_ALLOWED(%0b)%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s ALLOCATE(%0b) SNPATTR('b%0b%0b)%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s} ", (((xact != null) && (xact.object_context != ""))?$sformatf("%0s: ", xact.object_context):""), (((xact != null) && (xact.object_info != ""))?$sformatf("OBJ_INFO(%0s) ", xact.object_info):""), ((xact != null && xact.cfg!= null && xact.cfg.sys_cfg != null)?xact.cfg.sys_cfg.system_id:-1), ((xact != null && xact.cfg!= null)?((xact.cfg.port_interleaving_enable==0)?"":($sformatf("INTRVED_GRP_OBJ_NUM('d%0d) ",xact.interleaved_group_object_num))):""), ((xact != null)?xact.object_num:-1), ((xact != null && xact.cfg!= null)?xact.cfg.node_id:-1), ((xact != null)?xact.source_target_info:""), ((xact != null)?xact.xact_type.name:"null"), ((xact != null)?((xact.xact_type==svt_chi_transaction::DVMOP)?(xact.is_dvm_msg_type_sync()?" DVM_TYPE(SYNC)":" DVM_TYPE(NON-SYNC)"):""):""), ((xact != null)?xact.txn_id:0), ((xact != null)?xact.qos:0), ((xact != null)?xact.addr:0), `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact != null)?((xact.cfg != null && xact.cfg.pbha_support == svt_chi_node_configuration::CHI_PBHA_SUPPORT_TRUE)?($sformatf(" PBHA('h%0h) PBHA_POLICY(%0s)", xact.pbha, xact.pbha_policy.name())):""):""), `else "", `endif `ifdef SVT_CHI_ISSUE_G_ENABLE ((xact != null)?((xact.cfg != null && xact.cfg.mec_support == svt_chi_node_configuration::CHI_MEC_TRUE)?($sformatf(" MECID('h%0h) MECID_POLICY(%0s)", xact.mecid, xact.mecid_policy.name())):""):""), `else "", `endif ((xact != null)?xact.data_size.name:"null"), `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact != null)?((xact.cfg != null && xact.cfg.cah_support == svt_chi_node_configuration::CHI_CAH_SUPPORT_TRUE && (xact.is_cah_applicable_xact() == 1 || xact.get_semantic()==SVT_CHI_READ_TYPE_SEMANTIC))?($sformatf(" CAH('b%0b)", xact.cah)):""):""), `else "", `endif `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact != null)?($sformatf("NSE(%0b) ", xact.non_secure_ext)):""), `else "", `endif ((xact != null)?xact.is_non_secure_access:0), ((xact != null)?xact.is_dyn_p_crd:0), `ifdef SVT_CHI_ISSUE_B_ENABLE ((xact != null)?(xact.get_poison_str()):""), ((xact != null)?({" DATACHECK(",$sformatf("'h%0h", xact.datacheck),")"}):""), ((xact != null)?( (( xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULLSTASH || xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTLSTASH || xact.xact_type == svt_chi_transaction::STASHONCESHARED || xact.xact_type == svt_chi_transaction::STASHONCEUNIQUE `ifdef SVT_CHI_ISSUE_E_ENABLE || xact.xact_type == svt_chi_transaction::STASHONCESEPSHARED || xact.xact_type == svt_chi_transaction::STASHONCESEPUNIQUE `endif ) )? {$sformatf(" STASH_NID_VALID(%0b) STASH_NID('h%0h) STASH_LPID_VALID(%0b) STASH_LPID('h%0h)", xact.stash_nid_valid, xact.stash_nid, xact.stash_lpid_valid, xact.stash_lpid)}:"") :""), `else "", "", "", `endif ((xact != null)?{" COMPACK(",$sformatf("%0b", xact.exp_comp_ack),")"}:""), ((xact != null && xact.cfg!= null)?(((xact.xact_type==svt_chi_transaction::READCLEAN)||(xact.xact_type==svt_chi_transaction::READNOSNP)|| (xact.xact_type==svt_chi_transaction::READSHARED)||(xact.xact_type==svt_chi_transaction::CLEANUNIQUE)|| (xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL) `ifdef SVT_CHI_ISSUE_B_ENABLE || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_B)?(xact.xact_type==svt_chi_transaction::READNOTSHAREDDIRTY):"") `endif `ifdef SVT_CHI_ISSUE_E_ENABLE || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_E)?(xact.xact_type==svt_chi_transaction::READPREFERUNIQUE):"") || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_E)?(xact.xact_type==svt_chi_transaction::MAKEREADUNIQUE):"") `endif )?{" IS_EXCLUSIVE(",$sformatf("%0b", xact.is_exclusive),")"}:""):""), ((xact != null && xact.cfg!= null)?(((((xact.xact_type==svt_chi_transaction::READCLEAN)||(xact.xact_type==svt_chi_transaction::READNOSNP)|| (xact.xact_type==svt_chi_transaction::READSHARED)||(xact.xact_type==svt_chi_transaction::CLEANUNIQUE)|| (xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL) `ifdef SVT_CHI_ISSUE_B_ENABLE || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_B)?(xact.xact_type==svt_chi_transaction::READNOTSHAREDDIRTY):"") `endif `ifdef SVT_CHI_ISSUE_E_ENABLE || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_E)?(xact.xact_type==svt_chi_transaction::READPREFERUNIQUE):"") || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_E)?(xact.xact_type==svt_chi_transaction::MAKEREADUNIQUE):"") `endif ) && (xact.is_exclusive==1)) || xact.xact_type == svt_chi_transaction::DVMOP)?{" LPID(",$sformatf("'h%0h", xact.lpid),")"}:""):""), ((xact != null && xact.cfg!= null)?((((xact.xact_type==svt_chi_transaction::READCLEAN)||(xact.xact_type==svt_chi_transaction::READNOSNP)|| (xact.xact_type==svt_chi_transaction::READSHARED)||(xact.xact_type==svt_chi_transaction::CLEANUNIQUE)|| (xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL) `ifdef SVT_CHI_ISSUE_B_ENABLE || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_B)?(xact.xact_type==svt_chi_transaction::READNOTSHAREDDIRTY):"") `endif `ifdef SVT_CHI_ISSUE_E_ENABLE || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_E)?(xact.xact_type==svt_chi_transaction::READPREFERUNIQUE):"") || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_E)?(xact.xact_type==svt_chi_transaction::MAKEREADUNIQUE):"") `endif ) && (xact.is_exclusive==1))?{" EXCL_ACCESS_STATUS(",$sformatf("%0s", xact.excl_access_status.name()),")"}:""):""), ((xact != null && xact.cfg!= null)?((((xact.xact_type==svt_chi_transaction::READCLEAN)||(xact.xact_type==svt_chi_transaction::READNOSNP)|| (xact.xact_type==svt_chi_transaction::READSHARED)||(xact.xact_type==svt_chi_transaction::CLEANUNIQUE)|| (xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL) `ifdef SVT_CHI_ISSUE_B_ENABLE || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_B)?(xact.xact_type==svt_chi_transaction::READNOTSHAREDDIRTY):"") `endif `ifdef SVT_CHI_ISSUE_E_ENABLE || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_E)?(xact.xact_type==svt_chi_transaction::READPREFERUNIQUE):"") || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_E)?(xact.xact_type==svt_chi_transaction::MAKEREADUNIQUE):"") `endif ) && (xact.is_exclusive==1))?{" EXCL_MON_STATUS(",$sformatf("%0s", xact.excl_mon_status.name()),")"}:""):""), ((xact != null && xact.cfg!= null)?((((xact.xact_type==svt_chi_transaction::READCLEAN)||(xact.xact_type==svt_chi_transaction::READNOSNP)|| (xact.xact_type==svt_chi_transaction::READSHARED)||(xact.xact_type==svt_chi_transaction::CLEANUNIQUE)|| (xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL) `ifdef SVT_CHI_ISSUE_B_ENABLE || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_B)?(xact.xact_type==svt_chi_transaction::READNOTSHAREDDIRTY):"") `endif `ifdef SVT_CHI_ISSUE_E_ENABLE || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_E)?(xact.xact_type==svt_chi_transaction::READPREFERUNIQUE):"") || ((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_E)?(xact.xact_type==svt_chi_transaction::MAKEREADUNIQUE):"") `endif ) && (xact.is_exclusive==1) && (xact.excl_access_status != svt_chi_transaction::EXCL_ACCESS_INITIAL))?{" EXCL_XACT_DROP_COND(",$sformatf("%0s", xact.excl_xact_drop_cond.name()),")"}:""):""), `ifdef SVT_CHI_ISSUE_C_ENABLE ((xact != null)?(((xact.xact_type==svt_chi_transaction::READONCE)||(xact.xact_type==svt_chi_transaction::READONCECLEANINVALID)||(xact.xact_type==svt_chi_transaction::READONCEMAKEINVALID)||(xact.xact_type==svt_chi_transaction::READNOSNPSEP)||(xact.xact_type==svt_chi_transaction::READNOSNP)||(xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL)||(xact.xact_type==svt_chi_transaction::WRITEUNIQUEFULL)||(xact.xact_type==svt_chi_transaction::WRITEUNIQUEPTL)||(xact.is_atomicop_xact() == 1))?{" ORDER(",xact.order_type.name(),")"}:""):""), `elsif SVT_CHI_ISSUE_B_ENABLE ((xact != null)?(((xact.xact_type==svt_chi_transaction::READONCE)||(xact.xact_type==svt_chi_transaction::READONCECLEANINVALID)||(xact.xact_type==svt_chi_transaction::READONCEMAKEINVALID)||(xact.xact_type==svt_chi_transaction::READNOSNP)||(xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL)||(xact.xact_type==svt_chi_transaction::WRITEUNIQUEFULL)||(xact.xact_type==svt_chi_transaction::WRITEUNIQUEPTL)||(xact.is_atomicop_xact() == 1))?{" ORDER(",xact.order_type.name(),")"}:""):""), `else ((xact != null)?(((xact.xact_type==svt_chi_transaction::READONCE)||(xact.xact_type==svt_chi_transaction::READNOSNP)||(xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL)||(xact.xact_type==svt_chi_transaction::WRITEUNIQUEFULL)||(xact.xact_type==svt_chi_transaction::WRITEUNIQUEPTL))?{" ORDER(",xact.order_type.name(),")"}:""):""), `endif `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact != null)?(((xact.xact_type==svt_chi_transaction::WRITENOSNPFULL_CLEANINVALIDPOPA) || (xact.xact_type==svt_chi_transaction::WRITENOSNPPTL_CLEANINVALIDPOPA) || (xact.xact_type==svt_chi_transaction::WRITEUNIQUEZERO) || (xact.xact_type==svt_chi_transaction::WRITENOSNPZERO) || (xact.xact_type==svt_chi_transaction::WRITENOSNPFULL_CLEANSHARED) || (xact.xact_type==svt_chi_transaction::WRITENOSNPFULL_CLEANINVALID) || (xact.xact_type==svt_chi_transaction::WRITENOSNPPTL_CLEANINVALID) || (xact.xact_type==svt_chi_transaction::WRITENOSNPPTL_CLEANINVALID) || (xact.xact_type==svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHARED) || (xact.xact_type==svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHARED))?{" ORDER(",xact.order_type.name(),")"}:""):""), `elsif SVT_CHI_ISSUE_E_ENABLE ((xact != null)?(((xact.xact_type==svt_chi_transaction::WRITEUNIQUEZERO) || (xact.xact_type==svt_chi_transaction::WRITENOSNPZERO) || (xact.xact_type==svt_chi_transaction::WRITENOSNPFULL_CLEANSHARED) || (xact.xact_type==svt_chi_transaction::WRITENOSNPFULL_CLEANINVALID) || (xact.xact_type==svt_chi_transaction::WRITENOSNPPTL_CLEANSHARED) || (xact.xact_type==svt_chi_transaction::WRITENOSNPPTL_CLEANINVALID) || (xact.xact_type==svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHARED) || (xact.xact_type==svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHARED))?{" ORDER(",xact.order_type.name(),")"}:""):""), `else "", `endif ((xact != null)?xact.mem_attr_allocate_hint:0), ((xact != null && xact.cfg.chi_spec_revision < svt_chi_node_configuration::ISSUE_B)?xact.snp_attr_snp_domain_type:0), ((xact != null)?xact.snp_attr_is_snoopable:0), `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact != null)?(((xact.xact_type==svt_chi_transaction::READNOSNP)||(xact.xact_type==svt_chi_transaction::CLEANSHARED)||(xact.xact_type==svt_chi_transaction::CLEANINVALIDPOPA)||(xact.xact_type==svt_chi_transaction::CLEANINVALID)||(xact.xact_type==svt_chi_transaction::MAKEINVALID)||(xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL))?{" CACHEABLE(",$sformatf("%0b", xact.mem_attr_is_cacheable),")"}:""):""), `else ((xact != null)?(((xact.xact_type==svt_chi_transaction::READNOSNP)||(xact.xact_type==svt_chi_transaction::CLEANSHARED)||(xact.xact_type==svt_chi_transaction::CLEANINVALID)||(xact.xact_type==svt_chi_transaction::MAKEINVALID)||(xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL))?{" CACHEABLE(",$sformatf("%0b", xact.mem_attr_is_cacheable),")"}:""):""), `endif ((xact != null)?(((xact.xact_type==svt_chi_transaction::READNOSNP)||(xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL))?{" MEM_TYPE(",xact.mem_attr_mem_type.name,")"}:""):""), ((xact != null)?(((xact.xact_type==svt_chi_transaction::READNOSNP)||(xact.xact_type==svt_chi_transaction::WRITENOSNPFULL)||(xact.xact_type==svt_chi_transaction::WRITENOSNPPTL))?{" EWA(",$sformatf("%0b", xact.mem_attr_is_early_wr_ack_allowed),")"}:""):""), `ifdef SVT_CHI_ISSUE_E_ENABLE ((xact != null)?((xact.is_combined_writenosnpfull_cmo_xact() || xact.is_combined_writenosnpptl_cmo_xact())?($sformatf(" CACHEABLE\(%0b\) MEM_TYPE\(%0s\) EWA\(%0b\)", xact.mem_attr_is_cacheable, xact.mem_attr_mem_type, xact.mem_attr_is_early_wr_ack_allowed)):""):""), `else "", `endif `ifdef SVT_CHI_ISSUE_E_ENABLE ((xact != null)?(((xact.xact_type==svt_chi_transaction::WRITENOSNPFULL_CLEANSHAREDPERSISTSEP) || (xact.xact_type==svt_chi_transaction::WRITENOSNPPTL_CLEANSHAREDPERSISTSEP) || (xact.xact_type==svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP) || (xact.xact_type==svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP) || (xact.xact_type==svt_chi_transaction::WRITEBACKFULL_CLEANSHAREDPERSISTSEP) || (xact.xact_type==svt_chi_transaction::WRITECLEANFULL_CLEANSHAREDPERSISTSEP))?($sformatf(" PGROUP_ID\('h%0h\) DEEP\(%0b\)", xact.pgroup_id, xact.deep)):""):""), `else "", `endif `ifdef SVT_CHI_ISSUE_B_ENABLE `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact != null)?((xact.is_atomicop_xact()==0)?(((xact.xact_type == svt_chi_transaction::CLEANSHARED)||(xact.xact_type == svt_chi_transaction::CLEANSHAREDPERSIST)||(xact.xact_type == svt_chi_transaction::CLEANINVALIDPOPA)||(xact.xact_type == svt_chi_transaction::CLEANINVALID)||(xact.xact_type == svt_chi_transaction::MAKEINVALID))?$sformatf(" MEM_TYPE\(%0s\)", xact.mem_attr_mem_type.name()):""):($sformatf(" CACHEABLE\(%0b\) MEM_TYPE\(%0s\) EWA \(%0b\) ENDIAN\(%0b\) SNOOPME\(%0b\)",xact.mem_attr_is_cacheable, xact.mem_attr_mem_type.name(), xact.mem_attr_is_early_wr_ack_allowed, xact.endian,xact.snoopme))):""), `else ((xact != null)?((xact.is_atomicop_xact()==0)?(((xact.xact_type == svt_chi_transaction::CLEANSHARED)||(xact.xact_type == svt_chi_transaction::CLEANSHAREDPERSIST)||(xact.xact_type == svt_chi_transaction::CLEANINVALID)||(xact.xact_type == svt_chi_transaction::MAKEINVALID))?$sformatf(" MEM_TYPE\(%0s\)", xact.mem_attr_mem_type.name()):""):($sformatf(" CACHEABLE\(%0b\) MEM_TYPE\(%0s\) EWA \(%0b\) ENDIAN\(%0b\) SNOOPME\(%0b\)",xact.mem_attr_is_cacheable, xact.mem_attr_mem_type.name(), xact.mem_attr_is_early_wr_ack_allowed, xact.endian,xact.snoopme))):""), `endif `ifdef SVT_CHI_ISSUE_D_ENABLE ((xact != null)?(xact.xact_type == svt_chi_transaction::CLEANSHAREDPERSISTSEP) ? ($sformatf(" PGROUP_ID\('h%0h\) MEM_TYPE\(%0s\) is_comp_received\(%0b\) is_persist_received\(%0b\) is_comppersist_received\(%0b\)",xact.pgroup_id, xact.mem_attr_mem_type.name(),xact.is_comp_received, xact.is_persist_received, xact.is_comppersist_received)):(""):""), `else "", `endif `else "", "", `endif `ifdef SVT_CHI_ISSUE_E_ENABLE ((xact != null)?((xact.cfg.dvm_version_support >= svt_chi_node_configuration::DVM_v8_4 && xact.xact_type==svt_chi_transaction::DVMOP && xact.addr[13:11] == 3'b000)?($sformatf(" IS_TLBI_INVALIDATE_BY_VA_OR_IPA(%0b)", xact.addr[4])):""):""), `else "", `endif `ifdef SVT_CHI_ISSUE_E_ENABLE ((xact != null)?(((xact.cfg.chi_node_type == svt_chi_node_configuration::SN || xact.cfg.allow_dmt_from_rn_when_hn_is_absent || xact.cfg.allow_dwt_from_rn_when_hn_is_absent) && (xact.get_semantic()==SVT_CHI_READ_TYPE_SEMANTIC || xact.get_semantic()==SVT_CHI_WRITE_TYPE_SEMANTIC))?($sformatf(" RETURN_NID('h%0h)", xact.return_nid)):""):""), `elsif SVT_CHI_ISSUE_B_ENABLE ((xact != null)?(((xact.cfg.chi_node_type == svt_chi_node_configuration::SN || xact.cfg.allow_dmt_from_rn_when_hn_is_absent) && (xact.get_semantic()==SVT_CHI_READ_TYPE_SEMANTIC))?($sformatf(" RETURN_NID('h%0h)", xact.return_nid)):""):""), `else "", `endif `ifdef SVT_CHI_ISSUE_E_ENABLE ((xact != null)?(((xact.cfg.chi_node_type == svt_chi_node_configuration::SN || xact.cfg.allow_dmt_from_rn_when_hn_is_absent || xact.cfg.allow_dwt_from_rn_when_hn_is_absent) && (xact.get_semantic()==SVT_CHI_READ_TYPE_SEMANTIC || xact.get_semantic()==SVT_CHI_WRITE_TYPE_SEMANTIC))?($sformatf(" RETURN_TXNID('d%0h)", xact.return_txn_id)):""):""), `elsif SVT_CHI_ISSUE_B_ENABLE ((xact != null)?(((xact.cfg.chi_node_type == svt_chi_node_configuration::SN || xact.cfg.allow_dmt_from_rn_when_hn_is_absent) && (xact.get_semantic()==SVT_CHI_READ_TYPE_SEMANTIC))?($sformatf(" RETURN_TXNID('d%0h)", xact.return_txn_id)):""):""), `else "", `endif `ifdef SVT_CHI_ISSUE_E_ENABLE ((xact != null)?((xact.cfg.dvm_version_support >= svt_chi_node_configuration::DVM_v8_4 && xact.xact_type==svt_chi_transaction::DVMOP && xact.addr[13:11] == 3'b000 && xact.addr[4] == 1)?($sformatf(" IS_RANGE_BASED_TLBI(%0b)", xact.dvm_range)):""):""), `else "", `endif `ifdef SVT_CHI_ISSUE_E_ENABLE ((xact != null)?((xact.xact_type == svt_chi_transaction::WRITEEVICTOREVICT)?($sformatf(" IS_LIKELY_SHARED\(%0b\) IS_COMP_RECEIVED\(%0b\) IS_DBID_RECEIVED\(%0b\) ",xact.is_likely_shared, xact.is_comp_received, xact.is_dbid_received)):""):""), ((xact != null)?($sformatf(" REQUEST_TAGOP\(%0s\)", xact.req_tag_op.name())):""), `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact != null)?(((xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANINVALIDPOPA) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANINVALIDPOPA) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANINVALID) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANINVALID) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULLSTASH) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTLSTASH))?($sformatf(" DO_DWT\(%0b\)", xact.do_dwt)):""):""), `else ((xact != null)?(((xact.xact_type == svt_chi_transaction::WRITENOSNPFULL) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANINVALID) || (xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANINVALID) || (xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHARED) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULLSTASH) || (xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTLSTASH))?($sformatf(" DO_DWT\(%0b\)", xact.do_dwt)):""):""), `endif ((xact != null && (xact.is_atomicop_xact() == 0) && xact.data_status != svt_chi_transaction::INITIAL)?($sformatf(" DATA_TAGOP\(%0s\)", xact.data_tag_op.name())):""), ((xact != null && (xact.xact_type == svt_chi_transaction::MAKEREADUNIQUE) && xact.is_comp_received && xact.data_status == svt_chi_transaction::INITIAL)?($sformatf(" RSP_TAGOP\(%0s\)", xact.rsp_tag_op.name())):""), ((xact != null && (xact.is_atomicop_xact() == 1) && xact.atomic_write_data_status != svt_chi_transaction::INITIAL)?($sformatf(" ATOMIC_WRITE_DATA_TAGOP\(%0s\)", xact.atomic_write_data_tag_op.name())):""), ((xact != null && (xact.is_atomicop_xact() == 1) && xact.atomic_returned_initial_data_status != svt_chi_transaction::INITIAL)?($sformatf(" ATOMIC_READ_DATA_TAGOP\(%0s\)", xact.atomic_read_data_tag_op.name())):""), `else "", "", "", "", "", "", "", `endif `ifdef SVT_CHI_ISSUE_F_ENABLE (((xact!=null) && xact.xact_type == svt_chi_transaction::WRITENOSNPDEF && xact.req_status == svt_chi_transaction::ACCEPT)? $sformatf(" RESPONSE(%0s)", xact.deferreable_write_resp.name()): ""), `else "", `endif `ifdef SVT_CHI_ISSUE_D_ENABLE (((xact!=null) && (xact.cfg!=null) && (xact.cfg.enable_mpam))? $sformatf(" MPAM_PERFMONGROUP('h%0h) MPAM_PARTID('h%0h) MPAM_NS('h%0h)", xact.mpam_perfmongroup, xact.mpam_partid, xact.mpam_ns): ""), `else "", `endif ((xact != null)?((xact.get_begin_time()==-1)?"":($sformatf(" START_TIME(%0t)",xact.get_begin_realtime()))):""), ((xact != null)?((xact.get_end_time()==-1)?"":($sformatf(" END_TIME(%0t)",xact.get_end_realtime()))):""), ((xact != null)?((xact.get_req_accept_realtime()==-1)?"":($sformatf(" REQ_ACCEPT_TIME(%0t)",xact.get_req_accept_realtime()))):"")) |
|
|
SVT_CHI_PRINT_PREFIX(xact)
|
|
|
xact.psdisplay_concise()
|
|
|
0
| |
Used to define the layer
|
|
|
4
| |
Width of QoS field
|
|
|
3_0
|
|
|
4_0
|
|
|
0
| |
Used to define the kind of semantics used for a transation type
|
|
|
15
| |
Default flit buffer size for RX*** VC
|
|
|
20
| |
Reasonable value for XACT DAT VC access fail count. This should be >=1 and <= 100
|
|
|
20
| |
Reasonable value for XACT RSP VC access fail count. This should be >=1 and <= 100
|
|
|
2
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
|
|
|
|
0
| |
Defines FLIT types, also used by flit_type_enum
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4
| |
This defines the width of RSVDC field width of the TXREQFLIT and RXREQFLIT
|
|
|
3_2
|
|
|
3_2_2
|
|
|
3_2_1
|
|
|
4_2
|
|
|
4_2_2
|
|
|
4_2_1
|
|
|
3_1
|
|
|
3_1_2
|
|
|
3_1_1
|
|
|
4_1
|
|
|
4_1_2
|
|
|
4_1_1
|
|
|
1_2
|
|
|
1_2_2
|
|
|
1_2_1
|
|
|
2_2
|
|
|
2_2_2
|
|
|
2_2_1
|
|
|
1_1
|
|
|
1_1_2
|
|
|
1_1_1
|
|
|
2_1
|
|
|
2_1_2
|
|
|
2_1_1
|
|
|
|
|
|
|
Width of Reserved bits in STASHLPID fields of REQ flit-- applicable for CHI Issue B or later
|
|
|
Width of REQ RSVDC field
|
|
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Width macros of Opcode fields for different FLIT types are defined in svt_chi_port_defines.svi file. Opcodes used for Request VC FLIT, Request message types.
|
|
|
|
|
|
|
6
| |
Widths of Opcode fields for different FLIT types -- Defined in svt_chi_port_defines.svi file
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14
|
|
|
13
|
|
|
|
|
1
|
|
|
|
|
|
|
|
|
Defines for response error types, also used by resp_err_type_enum
|
|
|
2
| |
Width of ResErr field
|
|
|
3
| |
Width of Response field
|
|
|
8_2_0
|
|
|
8_1_0
|
|
|
8_2_2
|
|
|
8_1_2
|
|
|
8_2_1
|
|
|
8_1_1
|
|
|
1
|
|
|
Width of Return NID field
|
|
|
Width of Return Transaction ID field
|
|
|
0
| |
Node types
|
|
|
clk
|
|
|
0.1
|
|
|
0.1
|
|
|
Maximum number of RXDAT channels allowed at RN
|
|
|
Maximum number of RXRSP channels allowed at RN
|
|
|
Maximum number of RXSNP channels allowed at RN
|
|
|
Maximum number of TXDAT channels allowed at RN
|
|
|
Maximum number of TXREQ channels allowed at RN
|
|
|
Maximum number of TXRSP channels allowed at RN
|
|
|
resetn
|
|
|
1
| |
This value is used by the svt_chi_rn_transaction_exception_list constructor to define the initial value for svt_exception_list :: max_num_exceptions. This field is used by the exception list to define the maximum number of exceptions which can be generated for a single transaction. The user testbench can override this constant value to define a different maximum value for use by all svt_chi_rn_transaction_exception_list instances or can change the value of the svt_exception_list :: max_num_exceptions field directly to define a different maximum value for use by that svt_chi_rn_transaction_exception_list instance.
|
|
|
1
|
|
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Opcodes used for Response VC FLIT
|
|
|
|
|
|
|
4
|
|
|
16
|
|
|
15
|
|
|
250
| |
Max delay value for the assertion of RXLINKACTIVEACk
|
|
|
0
| |
Min delay value for the assertion of RXLINKACTIVEACk
|
|
|
250
| |
Max delay value for the deassertion of RXLINKACTIVEACk
|
|
|
0
| |
Min delay value for the deassertion of RXLINKACTIVEACk
|
|
|
1
|
|
|
3
|
|
|
2
|
|
|
0
| |
Used to indicate the status of the RX LINKACTIVE Interface state machine.
|
|
|
2
|
|
|
7
|
|
|
2
|
|
|
4
|
|
|
3
| |
Width of Size field
|
|
|
1
|
|
|
clk
|
|
|
0.1
|
|
|
0.1
|
|
|
Maximum number of RXDAT channels allowed at SN
|
|
|
Maximum number of RXREQ channels allowed at SN
|
|
|
Maximum number of TXDAT channels allowed at SN
|
|
|
Maximum number of TXRSP channels allowed at SN
|
|
|
resetn
|
|
|
1
| |
This value is used by the svt_chi_sn_transaction_exception_list constructor to define the initial value for svt_exception_list :: max_num_exceptions. This field is used by the exception list to define the maximum number of exceptions which can be generated for a single transaction. The user testbench can override this constant value to define a different maximum value for use by all svt_chi_sn_transaction_exception_list instances or can change the value of the svt_exception_list :: max_num_exceptions field directly to define a different maximum value for use by that svt_chi_sn_transaction_exception_list instance.
|
|
|
xact.current_state == svt_chi_snoop_transaction::UC || xact.current_state == svt_chi_snoop_transaction::UD || xact.current_state == svt_chi_snoop_transaction::UDP || xact.current_state == svt_chi_snoop_transaction::UCE |
|
|
SVT_CHI_SNP_PRINT_PREFIX(xact)
|
|
|
xact.final_state == svt_chi_snoop_transaction::SC || xact.final_state == svt_chi_snoop_transaction::SD |
|
|
xact.final_state == svt_chi_snoop_transaction::UC || xact.final_state == svt_chi_snoop_transaction::UD |
|
|
1
| |
This value is used by the svt_chi_snoop_transaction_exception_list constructor to define the initial value for svt_exception_list :: max_num_exceptions. This field is used by the exception list to define the maximum number of exceptions which can be generated for a single transaction. The user testbench can override this constant value to define a different maximum value for use by all svt_chi_snoop_transaction_exception_list instances or can change the value of the svt_exception_list :: max_num_exceptions field directly to define a different maximum value for use by that svt_chi_snoop_transaction_exception_list instance.
|
|
|
3_5_3
|
|
|
4_5_3
|
|
|
1_5_3
|
|
|
2_6_3
|
|
|
4_5_4
|
|
|
1_5_4
|
|
|
2_6_4
|
|
|
3_5_1
|
|
|
4_5_1
|
|
|
1_5_1
|
|
|
2_6_1
|
|
|
3_5_2
|
|
|
4_5_2
|
|
|
1_5_2
|
|
|
2_6_2
|
|
|
3_5
|
|
|
4_5
|
|
|
1_5
|
|
|
2_6
|
|
|
((SVT_CHI_REQ_ADDR_WIDTH)-3)
| |
Width of Addr field of a Snoop Message Request
|
|
|
1
| |
Width of Snp Attr field
|
|
|
0
| |
Defines for Snoop domain, also used by snoop_domain_type_enum
|
|
|
1
|
|
|
|
|
2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$sformatf("{%0s%0sSYS_ID('d%0d) OBJ_NUM('d%0d) NODE_ID('d%0d) %0sTYPE(%0s)%0s TXN_ID('h%0h) QOS('h%0h)%0s ADDR('h%0x)%0s%0s %0sNS(%0b)POISON('h%0h) DATACHECK(%0h)%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s%0s} ", (((xact != null) && (xact.object_context != ""))?$sformatf("%0s: ", xact.object_context):""), (((xact != null) && (xact.object_info != ""))?$sformatf("OBJ_INFO(%0s) ", xact.object_info):""), ((xact != null && xact.cfg!= null && xact.cfg.sys_cfg != null)?xact.cfg.sys_cfg.system_id:-1), ((xact != null)?xact.object_num:-1), ((xact != null && xact.cfg!= null)?xact.cfg.node_id:-1), ((xact != null)?xact.source_target_info:""), ((xact != null)?xact.snp_req_msg_type.name:"null"), ((xact != null)?((xact.snp_req_msg_type==svt_chi_snoop_transaction::SNPDVMOP)?(xact.is_dvm_msg_type_sync()?" DVM_TYPE(SYNC)":" DVM_TYPE(NON-SYNC)"):""):""), ((xact != null)?xact.txn_id:0), ((xact != null)?xact.qos:0), `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact != null)?((xact.cfg != null && xact.cfg.cah_support == svt_chi_node_configuration::CHI_CAH_SUPPORT_TRUE)?($sformatf(" CAH('b%0b)", xact.cah)):""):""), `else "", `endif ((xact != null)?xact.addr:0), `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact != null)?((xact.cfg != null && xact.cfg.pbha_support == svt_chi_node_configuration::CHI_PBHA_SUPPORT_TRUE)?($sformatf(" PBHA('h%0h)", xact.pbha)):""):""), `else "", `endif `ifdef SVT_CHI_ISSUE_G_ENABLE ((xact != null)?((xact.cfg != null && xact.cfg.mec_support == svt_chi_node_configuration::CHI_MEC_TRUE)?($sformatf(" MECID('h%0h)", xact.mecid)):""):""), `else "", `endif `ifdef SVT_CHI_ISSUE_F_ENABLE ((xact != null)?$sformatf("NSE(%0b) ", xact.non_secure_ext):""), `else "", `endif ((xact != null)?xact.is_non_secure_access:0), ((xact != null)?xact.poison:0), ((xact != null)?xact.datacheck:0), ((xact != null && xact.cfg!= null)?((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_B)?($sformatf(" DONOTGOTOSD('b%0b) RET_TO_SRC('b%0b)",xact.do_not_go_to_sd, xact.ret_to_src)):""):""), ((xact != null && xact.cfg!= null)?((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_B && xact.is_forward_type_snoop())?($sformatf(" FWD_NID('h%0h) FWD_TXN_ID('d%0h)",xact.fwd_nid, xact.fwd_txn_id)):""):""), ((xact != null && xact.cfg!= null)?((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_B && xact.is_cache_stash_snoop())?($sformatf(" DO_NOT_DATA_PULL('b%0b) DATA_PULL('b%0b) STASH_LPID_VALID(%0b) STASH_LPID('h%0h)",xact.do_not_data_pull, xact.data_pull, xact.stash_lpid_valid, xact.stash_lpid)):""):""), ((xact != null && xact.cfg!= null)?((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_B && xact.is_cache_stash_snoop() && (xact.data_pull == 1 && (xact.get_end_time()!=-1)))?($sformatf(" DATA_PULL_TXN_ID('h%0h) DATA_PULL_DBID('h%0h) DATA_PULL_FINAL_STATE(%0s)",xact.data_pull_txn_id, xact.data_pull_dbid, xact.data_pull_resp_final_state.name())):""):""), ((xact != null && xact.cfg!= null)?((xact.cfg.chi_spec_revision>=svt_chi_node_configuration::ISSUE_B && xact.get_end_time()!=-1)?($sformatf(" DATASOURCE('h%0h)",xact.data_source)):""):""), `ifdef SVT_CHI_ISSUE_E_ENABLE ((xact != null)?((xact.cfg.dvm_version_support >= svt_chi_node_configuration::DVM_v8_4 && xact.snp_req_msg_type==svt_chi_transaction::SNPDVMOP && xact.snp_dvm_op_p1_payload[13:11] == 3'b000)?($sformatf(" IS_TLBI_INVALIDATE_BY_VA_OR_IPA(%0b)", xact.snp_dvm_op_p1_payload[4])):""):""), `else "", `endif `ifdef SVT_CHI_ISSUE_E_ENABLE ((xact != null)?((xact.cfg.dvm_version_support >= svt_chi_node_configuration::DVM_v8_4 && xact.snp_req_msg_type==svt_chi_snoop_transaction::SNPDVMOP && xact.snp_dvm_op_p1_payload[13:11] == 3'b000 && xact.snp_dvm_op_p1_payload[4] == 1)?($sformatf(" IS_RANGE_BASED_TLBI(%0b)", xact.dvm_range)):""):""), ((xact != null && xact.data_status != svt_chi_snoop_transaction::INITIAL)?($sformatf(" DATA_TAGOP\(%0s\)", xact.data_tag_op)):""), ((xact != null && xact.is_forward_type_snoop() && xact.fwded_read_data_status != svt_chi_snoop_transaction::INITIAL)?($sformatf(" FWDED_TAGOP\(%0s\)", xact.fwded_tag_op)):""), `else "", "", "", `endif `ifdef SVT_CHI_ISSUE_D_ENABLE (((xact!=null) && (xact.cfg!=null) && (xact.cfg.enable_mpam) && xact.is_cache_stash_snoop())? $sformatf(" MPAM_PERFMONGROUP('h%0h) MPAM_PARTID('h%0h) MPAM_NS('h%0h)", xact.mpam_perfmongroup, xact.mpam_partid, xact.mpam_ns): ""), `else "", `endif ((xact != null)?((xact.get_begin_time()==-1)?"":($sformatf(" START_TIME(%0t)",xact.get_begin_realtime()))):""), ((xact != null)?((xact.get_end_time()==-1)?"":($sformatf(" END_TIME(%0t)",xact.get_end_realtime()))):""), (((xact != null) && (xact.cfg != null) && (xact.cfg.is_user_extension_enabled(svt_chi_node_configuration::USER_EXTN_SNP_USER)))?$sformatf(" USER_EXTN_SNP_USER('h%0h)",xact.user_extn_snp_user):"")) |
|
|
|
|
|
|
|
|
|
|
|
|
AMBA CHI SNOOP REQ_MSG TYPE: Used to define type for snoop request messages: Aliased to Snoop VC FLIT Opcodes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Width of Reserved bits in STASHLPID fields of SNP flit-- applicable for CHI Issue B or later
|
|
|
(`SVT_CHI_USER_EXTN_MAX_SNP_USER_WIDTH*SVT_CHI_USER_EXTN_SNP_USER_WIDTH_INTERNAL_ENABLE)
|
|
|
|
|
|
|
|
|
|
|
|
|
Opcodes used for Snoop VC FLIT, Snoop Request message types
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5
|
|
|
20
| |
Macro to control the max value of clk delay for SNPRESP to SNPRESP assertion related link cg
|
|
|
3
| |
Macro to control the number of bins for SNPRESP to SNPRESP assertion related link cg
|
|
|
1
| |
Macro to control the min value of clk delay for SNPRESP to SNPRESP assertion related link cg
|
|
|
1023
| |
Spec permitted maximum DBID value for ISSUE_D
|
|
|
4095
| |
Spec permitted maximum DBID value for ISSUE_E
|
|
|
255
| |
Spec permitted maximum DBID value upto ISSUE_C
|
|
|
1024
| |
Spec permitted maximum number of outstanding snoop transactions for ISSUE_D
|
|
|
256
| |
Spec permitted maximum number of outstanding snoop transactions upto ISSUE_C
|
|
|
1024
| |
Spec permitted maximum number of outstanding transactions for ISSUE_D
|
|
|
256
| |
Spec permitted maximum number of outstanding transactions upto ISSUE_C
|
|
|
1023
| |
Spec permitted maximum TxnID value for ISSUE_D
|
|
|
4095
| |
Spec permitted maximum TxnID value for ISSUE_E
|
|
|
255
| |
Spec permitted maximum TxnID value upto ISSUE_C
|
|
|
0
| |
Spec revisions
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
4
|
|
|
5
|
|
|
6
|
|
|
Width of Source ID field
|
|
|
0
| |
Data formats
|
|
|
5
| |
Width of Stash related fields
|
|
|
Width of Stash NID field
|
|
|
1
|
|
|
1
|
|
|
2_7_1
|
|
|
2_7_0
|
|
|
|
|
0
| |
Define for controlling the default value of svt_chi_system_configuration :: abf_enable
|
|
|
16
| |
Used to define the number of bins for byte_enable values in system level covergroup trans_cross_chi_writeuniqueptl_byte_enable_snoop_filter_access.
|
|
|
100
| |
Max delay value of SYSCOACK signal to get asserted
|
|
|
100
| |
Max delay value of SYSCOACK signal to get deasserted
|
|
|
100
| |
Max delay value of SYSCOREQ signal to get asserted
|
|
|
100
| |
Max delay value of SYSCOREQ signal to get deasserted
|
|
|
associated_nonstash_snoop_xact_type : coverpoint sys_xact.associated_nonstash_snoop_xact_type { bins no_snoop_xact_present = {svt_chi_snoop_transaction::SNPSHARED}; bins snpunique = {svt_chi_snoop_transaction::SNPUNIQUE}; bins snpmakeinvalid = {svt_chi_snoop_transaction::SNPMAKEINVALID}; option.weight = weight_val; type_option.weight = weight_val; } | |
associated_nonstash_snoop_xact_type : Captures associated non-stash type snoop transaction types
|
|
|
bins atomicstore_add_xact = {svt_chi_transaction::ATOMICSTORE_ADD}; bins atomicstore_clr_xact = {svt_chi_transaction::ATOMICSTORE_CLR}; bins atomicstore_eor_xact = {svt_chi_transaction::ATOMICSTORE_EOR}; bins atomicstore_set_xact = {svt_chi_transaction::ATOMICSTORE_SET}; bins atomicstore_smax_xact = {svt_chi_transaction::ATOMICSTORE_SMAX}; bins atomicstore_smin_xact = {svt_chi_transaction::ATOMICSTORE_SMIN}; bins atomicstore_umax_xact = {svt_chi_transaction::ATOMICSTORE_UMAX}; bins atomicstore_umin_xact = {svt_chi_transaction::ATOMICSTORE_UMIN}; bins atomicload_add_xact = {svt_chi_transaction::ATOMICLOAD_ADD}; bins atomicload_clr_xact = {svt_chi_transaction::ATOMICLOAD_CLR}; bins atomicload_eor_xact = {svt_chi_transaction::ATOMICLOAD_EOR}; bins atomicload_set_xact = {svt_chi_transaction::ATOMICLOAD_SET}; bins atomicload_smax_xact = {svt_chi_transaction::ATOMICLOAD_SMAX}; bins atomicload_smin_xact = {svt_chi_transaction::ATOMICLOAD_SMIN}; bins atomicload_umax_xact = {svt_chi_transaction::ATOMICLOAD_UMAX}; bins atomicload_umin_xact = {svt_chi_transaction::ATOMICLOAD_UMIN}; bins atomicswap_xact = {svt_chi_transaction::ATOMICSWAP}; bins atomiccompare_xact = {svt_chi_transaction::ATOMICCOMPARE}; | |
Bins for coherent atomic xact type on RN-F/RN-I/RN-D ports
|
|
|
coherent_atomic_xact_on_rn_f_port1: coverpoint coherent_atomic_xact_on_rn_f_port1 { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_COHERENT_ATOMIC_XACT_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_atomic_xact_on_rn_f_port1 : Captures opcodes for coherent atomic transaction type from RN-F port1
|
|
|
coherent_atomic_xact_on_rn_f_port2: coverpoint coherent_atomic_xact_on_rn_f_port2 { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_COHERENT_ATOMIC_XACT_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_atomic_xact_on_rn_f_port2 : Captures opcodes for coherent atomic transaction type from RN-F port2
|
|
|
coherent_atomic_xact_on_rn_f_ports: coverpoint coherent_atomic_xact_on_rn_f_ports { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_COHERENT_ATOMIC_XACT_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_atomic_xact_on_rn_f_ports : Captures opcodes for coherent atomic transaction type from RN-F ports
|
|
|
coherent_atomic_xact_on_rn_i_ports: coverpoint coherent_atomic_xact_on_rn_i_ports { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_COHERENT_ATOMIC_XACT_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_atomic_xact_on_rn_i_ports : Captures opcodes for coherent atomic transaction type from RN-I ports
|
|
|
coherent_non_atomic_xact_on_rn_f_port1: coverpoint coherent_non_atomic_xact_on_rn_f_port1 { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_COHERENT_NON_ATOMIC_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_non_atomic_xact_on_rn_f_port1 : Captures opcodes for coherent non-atomic transaction type from RN-F port1
|
|
|
coherent_non_atomic_xact_on_rn_f_port2: coverpoint coherent_non_atomic_xact_on_rn_f_port2 { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_COHERENT_NON_ATOMIC_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_non_atomic_xact_on_rn_f_port2 : Captures opcodes for coherent non-atomic transaction type from RN-F port2
|
|
|
coherent_non_atomic_xact_on_rn_f_ports: coverpoint coherent_non_atomic_xact_on_rn_f_ports { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_COHERENT_NON_ATOMIC_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_non_atomic_xact_on_rn_f_ports : Captures opcodes for coherent non-atomic transaction type from RN-F ports
|
|
|
bins readonce_xact = {svt_chi_transaction::READONCE} ; bins readclean_xact = {svt_chi_transaction::READCLEAN}; bins readshared_xact = {svt_chi_transaction::READSHARED}; bins readunique_xact = {svt_chi_transaction::READUNIQUE}; bins cleanunique_xact = {svt_chi_transaction::CLEANUNIQUE}; bins makeunique_xact = {svt_chi_transaction::MAKEUNIQUE}; bins evict_xact = {svt_chi_transaction::EVICT}; bins cleanshared_xact = {svt_chi_transaction::CLEANSHARED}; bins cleaninvalid_xact = {svt_chi_transaction::CLEANINVALID}; bins makeinvalid_xact = {svt_chi_transaction::MAKEINVALID}; bins writeuniquefull_xact = {svt_chi_transaction::WRITEUNIQUEFULL}; bins writeuniqueptl_xact = {svt_chi_transaction::WRITEUNIQUEPTL}; bins writebackfull_xact = {svt_chi_transaction::WRITEBACKFULL}; bins writebackptl_xact = {svt_chi_transaction::WRITEBACKPTL}; bins writeevictfull_xact = {svt_chi_transaction::WRITEEVICTFULL}; bins writecleanfull_xact = {svt_chi_transaction::WRITECLEANFULL}; `ifdef SVT_CHI_ISSUE_B_ENABLE bins readoncecleaninvalid_xact = {svt_chi_transaction::READONCECLEANINVALID}; bins readoncemakeinvalid_xact = {svt_chi_transaction::READONCEMAKEINVALID}; bins readnotshareddirty_xact = {svt_chi_transaction::READNOTSHAREDDIRTY}; bins cleansharedpersist_xact = {svt_chi_transaction::CLEANSHAREDPERSIST}; bins prefetchtgt_xact = {svt_chi_transaction::PREFETCHTGT}; `endif | |
Bins for coherent non-atomic xact type on RN-F ports
|
|
|
coherent_xact_on_rn_f_port1: coverpoint coherent_xact_on_rn_f_port1 { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_COHERENT_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_xact_on_rn_f_port1 : Captures opcodes for coherent transaction type from RN-F port1
|
|
|
coherent_xact_on_rn_f_port2: coverpoint coherent_xact_on_rn_f_port2 { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_COHERENT_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_xact_on_rn_f_port2 : Captures opcodes for coherent transaction type from RN-F port2
|
|
|
coherent_xact_on_rn_f_ports: coverpoint coherent_xact_on_rn_f_ports { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_COHERENT_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_xact_on_rn_f_ports : Captures opcodes for coherent transaction type from RN-F ports
|
|
|
bins readonce_xact = {svt_chi_transaction::READONCE} ; bins readclean_xact = {svt_chi_transaction::READCLEAN}; bins readshared_xact = {svt_chi_transaction::READSHARED}; bins readunique_xact = {svt_chi_transaction::READUNIQUE}; bins cleanunique_xact = {svt_chi_transaction::CLEANUNIQUE}; bins makeunique_xact = {svt_chi_transaction::MAKEUNIQUE}; bins evict_xact = {svt_chi_transaction::EVICT}; bins cleanshared_xact = {svt_chi_transaction::CLEANSHARED}; bins cleaninvalid_xact = {svt_chi_transaction::CLEANINVALID}; bins makeinvalid_xact = {svt_chi_transaction::MAKEINVALID}; bins writeuniquefull_xact = {svt_chi_transaction::WRITEUNIQUEFULL}; bins writeuniqueptl_xact = {svt_chi_transaction::WRITEUNIQUEPTL}; bins writebackfull_xact = {svt_chi_transaction::WRITEBACKFULL}; bins writebackptl_xact = {svt_chi_transaction::WRITEBACKPTL}; bins writeevictfull_xact = {svt_chi_transaction::WRITEEVICTFULL}; bins writecleanfull_xact = {svt_chi_transaction::WRITECLEANFULL}; `ifdef SVT_CHI_ISSUE_B_ENABLE bins readoncecleaninvalid_xact = {svt_chi_transaction::READONCECLEANINVALID}; bins readoncemakeinvalid_xact = {svt_chi_transaction::READONCEMAKEINVALID}; bins readnotshareddirty_xact = {svt_chi_transaction::READNOTSHAREDDIRTY}; bins cleansharedpersist_xact = {svt_chi_transaction::CLEANSHAREDPERSIST}; bins atomicstore_add_xact = {svt_chi_transaction::ATOMICSTORE_ADD}; bins atomicstore_clr_xact = {svt_chi_transaction::ATOMICSTORE_CLR}; bins atomicstore_eor_xact = {svt_chi_transaction::ATOMICSTORE_EOR}; bins atomicstore_set_xact = {svt_chi_transaction::ATOMICSTORE_SET}; bins atomicstore_smax_xact = {svt_chi_transaction::ATOMICSTORE_SMAX}; bins atomicstore_smin_xact = {svt_chi_transaction::ATOMICSTORE_SMIN}; bins atomicstore_umax_xact = {svt_chi_transaction::ATOMICSTORE_UMAX}; bins atomicstore_umin_xact = {svt_chi_transaction::ATOMICSTORE_UMIN}; bins atomicload_add_xact = {svt_chi_transaction::ATOMICLOAD_ADD}; bins atomicload_clr_xact = {svt_chi_transaction::ATOMICLOAD_CLR}; bins atomicload_eor_xact = {svt_chi_transaction::ATOMICLOAD_EOR}; bins atomicload_set_xact = {svt_chi_transaction::ATOMICLOAD_SET}; bins atomicload_smax_xact = {svt_chi_transaction::ATOMICLOAD_SMAX}; bins atomicload_smin_xact = {svt_chi_transaction::ATOMICLOAD_SMIN}; bins atomicload_umax_xact = {svt_chi_transaction::ATOMICLOAD_UMAX}; bins atomicload_umin_xact = {svt_chi_transaction::ATOMICLOAD_UMIN}; bins atomicswap_xact = {svt_chi_transaction::ATOMICSWAP}; bins atomiccompare_xact = {svt_chi_transaction::ATOMICCOMPARE}; bins prefetchtgt_xact = {svt_chi_transaction::PREFETCHTGT}; `endif | |
Bins for coherent xact type on RN-F ports
|
|
|
coherent_xact_on_rn_i_ports : coverpoint coherent_xact_on_rn_i_ports { bins readonce_xact = {svt_chi_transaction::READONCE} ; bins cleanshared_xact = {svt_chi_transaction::CLEANSHARED}; bins cleaninvalid_xact = {svt_chi_transaction::CLEANINVALID}; bins makeinvalid_xact = {svt_chi_transaction::MAKEINVALID}; bins writeuniquefull_xact = {svt_chi_transaction::WRITEUNIQUEFULL}; bins writeuniqueptl_xact = {svt_chi_transaction::WRITEUNIQUEPTL}; option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_xact_on_rn_i_ports : Captures coherent transaction types from RN-I/RN-D ports
|
|
|
coherent_xact_type: coverpoint sys_xact.rn_xact.xact_type { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_COHERENT_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_xact_type : Captures opcodes for coherent transaction type
|
|
|
final_cache_line_state : coverpoint sys_xact.rn_xact.final_cacheline_state { bins final_state_invalid = {svt_chi_snoop_transaction::I}; bins final_state_sharedclean = {svt_chi_snoop_transaction::SC}; bins final_state_shareddirty = {svt_chi_snoop_transaction::SD}; bins final_state_uniqueclean = {svt_chi_snoop_transaction::UC}; bins final_state_uniquedirty = {svt_chi_snoop_transaction::UD}; option.weight = weight_val ; type_option.weight = weight_val; } | |
final_cache_line_state : Captures final cache line state of RN transaction
|
|
|
home_node_idx : coverpoint hn_node_idx iff(target_id_flag){ bins hn_idx[] = {[0:(const_sys_cfg_num_hn-1)]}; option.weight = weight_val; type_option.weight = weight_val; } | |
home_node_idx : Captures values of HN indices
|
|
|
non_coherent_xact_on_rn_f_port1: coverpoint non_coherent_xact_on_rn_f_port1 { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_NON_COHERENT_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
non_coherent_xact_on_rn_f_port1 : Captures non-coherent transaction types from RN-F port1
|
|
|
non_coherent_xact_on_rn_f_port2: coverpoint non_coherent_xact_on_rn_f_port2 { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_NON_COHERENT_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
non_coherent_xact_on_rn_f_port2 : Captures non-coherent transaction types from RN-F port2
|
|
|
non_coherent_xact_on_rn_f_ports: coverpoint non_coherent_xact_on_rn_f_ports { SVT_CHI_SYSTEM_MONITOR_DEF_COV_UTIL_NON_COHERENT_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
non_coherent_xact_on_rn_f_ports : Captures non-coherent transaction types from RN-F ports
|
|
|
bins readnosnp_xact = {svt_chi_transaction::READNOSNP}; bins writenosnpfull_xact = {svt_chi_transaction::WRITENOSNPFULL}; bins writenosnpptl_xact = {svt_chi_transaction::WRITENOSNPPTL}; | |
Bins for non-coherent xact type on RN-F ports
|
|
|
non_coherent_xact_on_rn_i_ports : coverpoint non_coherent_xact_on_rn_i_ports{ bins readnosnp_xact = {svt_chi_transaction::READNOSNP}; bins writenosnp_xact = {svt_chi_transaction::WRITENOSNPPTL, svt_chi_transaction::WRITENOSNPFULL}; option.weight = weight_val; type_option.weight = weight_val; } | |
non_coherent_xact_on_rn_i_ports : Captures non-coherent transaction types from RN-I/RN-D ports
|
|
|
nonstash_snoop_resp_has_data_xfer: coverpoint sys_xact.nonstash_snoop_resp_has_data_xfer { bins nonstash_snoop_resp_has_no_data_xfer = {0}; bins nonstash_snoop_resp_has_data_xfer = {1}; option.weight = weight_val ; type_option.weight = weight_val; } | |
nonstash_snoop_resp_has_data_xfer : Captures whether non-stash snoop response has data transfer or not
|
|
|
nonstash_snp_resp_pd: coverpoint sys_xact.nonstash_snoop_resp_PD { bins nonstash_snoop_resp_has_no_PD = {0}; bins nonstash_snoop_resp_has_PD = {1}; option.weight = weight_val ; type_option.weight = weight_val; } | |
nonstash_snp_resp_pd : Captures whether non-stash snoop response has PassDirty asserted or not
|
|
|
nonstashtype_associated_snp_present: coverpoint sys_xact.nonstashtype_associated_snp_present { bins nonstashtype_associated_snp_is_not_present = {0}; bins nonstashtype_associated_snp_present = {1}; option.weight = weight_val ; type_option.weight = weight_val; } | |
nonstashtype_associated_snp_present : Captures whether non-stash type associated snoop present or not
|
|
|
rn_coherent_exclusive_read_xact_response : coverpoint sys_xact_read_resp_err { bins normal_okay_resp_err = {svt_chi_transaction::NORMAL_OKAY}; bins excl_okay_resp_err = {svt_chi_transaction::EXCLUSIVE_OKAY}; bins data_error_resp_err = {svt_chi_transaction::DATA_ERROR}; bins non_data_error_resp_err = {svt_chi_transaction::NON_DATA_ERROR}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_coherent_exclusive_read_xact_response : This coverpoint captures RN coherent exclusive transactions response type
|
|
|
rn_coherent_exclusive_write_xact_response : coverpoint sys_xact.rn_xact.response_resp_err_status { bins normal_okay_resp_err = {svt_chi_transaction::NORMAL_OKAY}; bins excl_okay_resp_err = {svt_chi_transaction::EXCLUSIVE_OKAY}; bins data_error_resp_err = {svt_chi_transaction::DATA_ERROR}; bins non_data_error_resp_err = {svt_chi_transaction::NON_DATA_ERROR}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_coherent_exclusive_write_xact_response : This coverpoint captures RN coherent exclusive transactions response type
|
|
|
rn_coherent_exclusive_write_xact_type : coverpoint sys_xact.rn_xact.xact_type { bins cleanunique = {svt_chi_transaction::CLEANUNIQUE}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_coherent_exclusive_write_xact_type : This coverpoint captures RN coherent exclusive transactions
|
|
|
rn_excl_read_xact_assoc_snp_xact_type : coverpoint sys_xact_snp_xact_type { bins snpshared = {svt_chi_snoop_transaction::SNPSHARED}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_excl_read_xact_assoc_snp_xact_type : This coverpoint captures snoop transaction associated for an RN coherent exclusive read transaction
|
|
|
rn_excl_write_xact_assoc_snp_xact_type : coverpoint sys_xact_snp_xact_type { bins snpcleaninvalid = {svt_chi_snoop_transaction::SNPCLEANINVALID}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_excl_write_xact_assoc_snp_xact_type : This coverpoint captures snoop transaction associated for an RN coherent exclusive write transaction
|
|
|
rn_f_coherent_exclusive_read_xact_type : coverpoint sys_xact.rn_xact.xact_type { bins readclean = {svt_chi_transaction::READCLEAN}; bins readshared = {svt_chi_transaction::READSHARED}; bins readnotshareddirty = {svt_chi_transaction::READNOTSHAREDDIRTY}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_f_coherent_exclusive_read_xact_type : This coverpoint captures RN-F coherent exclusive read transactions
|
|
|
rn_f_port1_coherent_exclusive_read_xact_response : coverpoint sys_xact_rn_f_port1_read_resp_err { bins rn_f_port1_resp_err_normal_okay = {svt_chi_transaction::NORMAL_OKAY}; bins rn_f_port1_resp_err_excl_okay = {svt_chi_transaction::EXCLUSIVE_OKAY}; bins rn_f_port1_resp_err_data_error = {svt_chi_transaction::DATA_ERROR}; bins rn_f_port1_resp_err_non_data_error = {svt_chi_transaction::NON_DATA_ERROR}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_f_port1_coherent_exclusive_read_xact_response : This coverpoint captures RN-F coherent exclusive read transactions response type
|
|
|
rn_f_port1_coherent_exclusive_read_xact_type : coverpoint cov_rn_f_port1_coherent_exclusive_read_xact_type { bins rn_f_port1_readclean = {svt_chi_transaction::READCLEAN}; bins rn_f_port1_readshared = {svt_chi_transaction::READSHARED}; bins rn_f_port1_readnotshareddirty = {svt_chi_transaction::READNOTSHAREDDIRTY}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_f_port1_coherent_exclusive_read_xact_type : This coverpoint captures RN-F coherent exclusive read transactions
|
|
|
rn_f_port1_coherent_exclusive_write_xact_response : coverpoint sys_xact_rn_f_port1_write_resp_err { bins rn_f_port1_resp_err_normal_okay = {svt_chi_transaction::NORMAL_OKAY}; bins rn_f_port1_resp_err_excl_okay = {svt_chi_transaction::EXCLUSIVE_OKAY}; bins rn_f_port1_resp_err_data_error = {svt_chi_transaction::DATA_ERROR}; bins rn_f_port1_resp_err_non_data_error = {svt_chi_transaction::NON_DATA_ERROR}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_f_port1_coherent_exclusive_write_xact_response : This coverpoint captures RN-F coherent exclusive write transactions response type
|
|
|
rn_f_port1_coherent_exclusive_write_xact_type : coverpoint cov_rn_f_port1_coherent_exclusive_write_xact_type { bins rn_f_port1_cleanunique = {svt_chi_transaction::CLEANUNIQUE}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_f_port1_coherent_exclusive_write_xact_type : This coverpoint captures RN-F coherent exclusive write transactions
|
|
|
rn_f_port2_coherent_exclusive_read_xact_response : coverpoint sys_xact_rn_f_port2_read_resp_err { bins rn_f_port2_resp_err_normal_okay = {svt_chi_transaction::NORMAL_OKAY}; bins rn_f_port2_resp_err_excl_okay = {svt_chi_transaction::EXCLUSIVE_OKAY}; bins rn_f_port2_resp_err_data_error = {svt_chi_transaction::DATA_ERROR}; bins rn_f_port2_resp_err_non_data_error = {svt_chi_transaction::NON_DATA_ERROR}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_f_port2_coherent_exclusive_read_xact_response : This coverpoint captures RN-F coherent exclusive read transactions response type
|
|
|
rn_f_port2_coherent_exclusive_read_xact_type : coverpoint cov_rn_f_port2_coherent_exclusive_read_xact_type { bins rn_f_port2_readclean = {svt_chi_transaction::READCLEAN}; bins rn_f_port2_readshared = {svt_chi_transaction::READSHARED}; bins rn_f_port2_readnotshareddirty = {svt_chi_transaction::READNOTSHAREDDIRTY}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_f_port2_coherent_exclusive_read_xact_type : This coverpoint captures RN-F coherent exclusive read transactions
|
|
|
rn_f_port2_coherent_exclusive_write_xact_response : coverpoint sys_xact_rn_f_port2_write_resp_err { bins rn_f_port2_resp_err_normal_okay = {svt_chi_transaction::NORMAL_OKAY}; bins rn_f_port2_resp_err_excl_okay = {svt_chi_transaction::EXCLUSIVE_OKAY}; bins rn_f_port2_resp_err_data_error = {svt_chi_transaction::DATA_ERROR}; bins rn_f_port2_resp_err_non_data_error = {svt_chi_transaction::NON_DATA_ERROR}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_f_port2_coherent_exclusive_write_xact_response : This coverpoint captures RN-F coherent exclusive write transactions response type
|
|
|
rn_f_port2_coherent_exclusive_write_xact_type : coverpoint cov_rn_f_port2_coherent_exclusive_write_xact_type { bins rn_f_port2_cleanunique = {svt_chi_transaction::CLEANUNIQUE}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_f_port2_coherent_exclusive_write_xact_type : This coverpoint captures RN-F coherent exclusive write transactions
|
|
|
rn_i_coherent_exclusive_read_xact_type : coverpoint sys_xact.rn_xact.xact_type { bins readonce = {svt_chi_transaction::READONCE}; bins readoncecleaninvalid = {svt_chi_transaction::READONCECLEANINVALID}; bins readoncemakeinvalid = {svt_chi_transaction::READONCEMAKEINVALID}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_i_coherent_exclusive_read_xact_type : This coverpoint captures RN-I coherent exclusive read transactions
|
|
|
rn_i_port1_coherent_exclusive_read_xact_response : coverpoint sys_xact_rn_i_port1_read_resp_err { bins rn_i_port1_resp_err_normal_okay = {svt_chi_transaction::NORMAL_OKAY}; bins rn_i_port1_resp_err_excl_okay = {svt_chi_transaction::EXCLUSIVE_OKAY}; bins rn_i_port1_resp_err_data_error = {svt_chi_transaction::DATA_ERROR}; bins rn_i_port1_resp_err_non_data_error = {svt_chi_transaction::NON_DATA_ERROR}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_i_port1_coherent_exclusive_read_xact_response : This coverpoint captures RN-I/RN-D coherent exclusive read transactions response type
|
|
|
rn_i_port1_coherent_exclusive_read_xact_type : coverpoint cov_rn_i_port1_coherent_exclusive_read_xact_type { bins rn_i_port1_readonce = {svt_chi_transaction::READONCE}; bins rn_i_port1_readoncecleaninvalid = {svt_chi_transaction::READONCECLEANINVALID}; bins rn_i_port1_readoncemakeinvalid = {svt_chi_transaction::READONCEMAKEINVALID}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_i_port1_coherent_exclusive_read_xact_type : This coverpoint captures RN-I/RN-D coherent exclusive read transactions
|
|
|
rn_i_port1_coherent_exclusive_write_xact_response : coverpoint sys_xact_rn_i_port1_write_resp_err { bins rn_i_port1_resp_err_normal_okay = {svt_chi_transaction::NORMAL_OKAY}; bins rn_i_port1_resp_err_excl_okay = {svt_chi_transaction::EXCLUSIVE_OKAY}; bins rn_i_port1_resp_err_data_error = {svt_chi_transaction::DATA_ERROR}; bins rn_i_port1_resp_err_non_data_error = {svt_chi_transaction::NON_DATA_ERROR}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_i_port1_coherent_exclusive_write_xact_response : This coverpoint captures RN-I/RN-D coherent exclusive write transactions response type
|
|
|
rn_i_port1_coherent_exclusive_write_xact_type : coverpoint cov_rn_i_port1_coherent_exclusive_write_xact_type { bins rn_i_port1_cleanunique = {svt_chi_transaction::CLEANUNIQUE}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_i_port1_coherent_exclusive_write_xact_type : This coverpoint captures RN-I/RN-D coherent exclusive write transactions
|
|
|
rn_xact_byte_enable_val : coverpoint sys_xact.rn_xact.byte_enable { bins byte_enable_val[SVT_CHI_SYS_COV_NUM_BYTE_ENABLE_BINS] = {[SVT_CHI_MAX_BE_WIDTH'h0:SVT_CHI_MAX_BE_WIDTH'hFFFF_FFFF_FFFF_FFFF]}; type_option.weight = weight_val; option.weight = weight_val; } | |
rn_xact_byte_enable_val : This coverpoint captures byte_enable value of RN transaction
|
|
|
snoop_filter_access_status : coverpoint sys_xact.snoop_filter_access_status { bins snoop_filter_hit = {svt_chi_system_transaction::SF_HIT}; bins snoop_filter_miss = {svt_chi_system_transaction::SF_MISS}; type_option.weight = weight_val; option.weight = weight_val; } | |
snoop_filter_access_status : This coverpoint captures snoop filter HIT/MISS condition
|
|
|
snp_associate: coverpoint sys_xact.are_associate_snoops_present{ bins associated_snoop[] = {[0:1]}; option.weight = weight_val ; type_option.weight = weight_val; } | |
snp_associate : Captures whether there is any associated snoop present or not
|
|
|
snp_data_xfer: coverpoint sys_xact.snoop_resp_has_data_xfer { bins snoop_data_transfer[] = {[0:1]}; option.weight = weight_val ; type_option.weight = weight_val; } | |
snp_data_xfer : Captures whether snoop response has data transfer or not
|
|
|
snp_ptl_data_xfer: coverpoint sys_xact.snoop_resp_has_partial_data { bins snoop_ptl_data_transfer[] = {[0:1]}; option.weight = weight_val ; type_option.weight = weight_val; } | |
snp_ptl_data_xfer : Captures whether snoop response has partial data transfer or not
|
|
|
snp_resp_pd: coverpoint sys_xact.snoop_resp_PD { bins snoop_rsp_pd[] = {[0:1]}; option.weight = weight_val ; type_option.weight = weight_val; } | |
snp_resp_pd : Captures whether snoop response has PassDirty asserted or not
|
|
|
snp_rsp_final_cache_line_state : coverpoint sys_xact.snoop_resp_final_state { bins final_state_invalid = {svt_chi_snoop_transaction::I}; bins final_state_sharedclean = {svt_chi_snoop_transaction::SC}; bins final_state_shareddirty = {svt_chi_snoop_transaction::SD}; bins final_state_uniqueclean = {svt_chi_snoop_transaction::UC}; bins final_state_uniquedirty = {svt_chi_snoop_transaction::UD}; option.weight = weight_val ; type_option.weight = weight_val; } | |
snp_rsp_final_cache_line_state : Captures final cache line state of snoop response
|
|
|
snp_xact_type : coverpoint sys_xact.associated_snoop_xacts_type { bins snponce = {svt_chi_snoop_transaction::SNPONCE}; bins snpclean = {svt_chi_snoop_transaction::SNPCLEAN}; bins snpshared = {svt_chi_snoop_transaction::SNPSHARED}; bins snpunique = {svt_chi_snoop_transaction::SNPUNIQUE}; bins snpcleanshared = {svt_chi_snoop_transaction::SNPCLEANSHARED}; bins snpcleaninvalid = {svt_chi_snoop_transaction::SNPCLEANINVALID}; bins snpmakeinvalid = {svt_chi_snoop_transaction::SNPMAKEINVALID}; `ifdef SVT_CHI_ISSUE_B_ENABLE bins snpnotshareddirty = {svt_chi_snoop_transaction::SNPNOTSHAREDDIRTY}; `endif option.weight = weight_val; type_option.weight = weight_val; } | |
snp_xact_type : Captures Snoop transaction type, upto CHI Issue D
|
|
|
stash_lpid_valid: coverpoint sys_xact.rn_xact.stash_lpid_valid { bins stash_lpid_defined = {1}; bins stash_lpid_notdefined = {0}; option.weight = weight_val ; type_option.weight = weight_val; } | |
stash_lpid_valid : Captures StashLPID value
|
|
|
stash_nid_valid: coverpoint sys_xact.rn_xact.stash_nid_valid { bins stash_nid_defined = {1}; bins stash_nid_notdefined = {0}; option.weight = weight_val ; type_option.weight = weight_val; } | |
stash_nid_valid : Captures StashNID Value
|
|
|
stash_opcode : coverpoint sys_xact.rn_xact.xact_type { bins stashonceunique = {svt_chi_transaction::STASHONCEUNIQUE}; bins stashonceshared = {svt_chi_transaction::STASHONCESHARED}; type_option.weight = weight_val; option.weight = weight_val; } | |
stash_opcode : Captures StashOnce* opcodes
|
|
|
stash_snoop_resp_has_data_xfer: coverpoint sys_xact.stash_snoop_resp_has_data_xfer { bins stash_snoop_resp_has_no_data_xfer = {0}; bins stash_snoop_resp_has_data_xfer = {1}; option.weight = weight_val ; type_option.weight = weight_val; } | |
stash_snoop_resp_has_data_xfer : Captures whether stash snoop response has data transfer or not
|
|
|
stash_snp_resp_pd: coverpoint sys_xact.stash_snoop_resp_PD { bins stash_snoop_resp_has_no_PD = {0}; bins stash_snoop_resp_has_PD = {1}; option.weight = weight_val ; type_option.weight = weight_val; } | |
stash_snp_resp_pd : Captures whether stash snoop response has PassDirty asserted or not
|
|
|
stash_snp_xact_donotdatapull : coverpoint sys_xact.stash_snpreq_donotdatapull { bins donotdatapull_zero = {1'b0}; bins donotdatapull_is_asserted = {1'b1}; option.weight = weight_val; type_option.weight = weight_val; } | |
stash_snp_xact_donotdatapull : Captures whether stash snoop transaction has donotdatapull asserted or not
|
|
|
stash_snp_xact_type : coverpoint sys_xact.associated_stashsnoop_xacts_type { bins no_stash_snoop_xact_present = {svt_chi_snoop_transaction::SNPSHARED}; bins snpmakeinvalidstash = {svt_chi_snoop_transaction::SNPMAKEINVALIDSTASH}; bins snpuniquestash = {svt_chi_snoop_transaction::SNPUNIQUESTASH}; bins snpstashunique = {svt_chi_snoop_transaction::SNPSTASHUNIQUE}; bins snpstashshared = {svt_chi_snoop_transaction::SNPSTASHSHARED}; option.weight = weight_val; type_option.weight = weight_val; } | |
stash_snp_xact_type : Captures stash snoop transaction types
|
|
|
stash_snpresp_datapull : coverpoint sys_xact.stash_snpresp_datapull_read_resp { bins datapull_is_zero = {3'b0}; bins datapull_is_asserted = {3'b001}; option.weight = weight_val; type_option.weight = weight_val; } | |
stash_snpresp_datapull : Captures whether stasth snoop response has datapull asserted or not
|
|
|
stash_snpresp_datapull_read_dataresp_final_state : coverpoint sys_xact.stash_snpresp_datapull_read_dataresp_final_state { bins stash_datapull_respdata_invalid = {svt_chi_snoop_transaction::I}; bins stash_datapull_respdata_sharedclean = {svt_chi_snoop_transaction::SC}; bins stash_datapull_respdata_shareddirty = {svt_chi_snoop_transaction::SD}; bins stash_datapull_respdata_uniqueclean = {svt_chi_snoop_transaction::UC}; bins stash_datapull_respdata_uniquedirty = {svt_chi_snoop_transaction::UD}; option.weight = weight_val ; type_option.weight = weight_val; } | |
stash_snpresp_datapull_read_dataresp_final_state : Captures final state of Read Data response, corresponding to Stash Snoop resposne with DataPull asserted
|
|
|
stash_snpresp_datapull_read_dataresp_is_dmt_used : coverpoint sys_xact.stash_snpresp_datapull_read_dataresp_is_dmt_used { bins datapull_resp_either_is_dmt_not_used_or_not_applicable = {0}; bins datapull_resp_is_dmt_used_asserted = {1}; option.weight = weight_val; type_option.weight = weight_val; } | |
stash_snpresp_datapull_read_dataresp_is_dmt_used : Captures whether DMT is used for read data response, when stash snoop response has datapull asserted
|
|
|
stash_snpresp_datapull_read_dataresp_is_respsepdata_datasepresp_flow_used : coverpoint sys_xact.stash_snpresp_datapull_read_dataresp_is_respsepdata_datasepresp_flow_used { bins datapull_resp_is_respsepdata_datasepresp_flow_is_either_not_used_or_not_applicable = {0}; bins datapull_resp_is_respsepdata_datasepresp_flow_used = {1}; option.weight = weight_val; type_option.weight = weight_val; } | |
stash_snpresp_datapull_read_dataresp_is_respsepdata_datasepresp_flow_used : Captures whether seperate response and data flow is used or not for read data, when stash snoop resposne has datapull asserted
|
|
|
stash_snpresp_datapull_read_dataresp_passdirty : coverpoint sys_xact.stash_snpresp_datapull_read_dataresp_passdirty { bins datapull_resp_passdirty_is_either_zero_or_not_applicable = {0}; bins datapull_resp_passdirty_asserted = {1}; option.weight = weight_val; type_option.weight = weight_val; } | |
stash_snpresp_datapull_read_dataresp_passdirty : Captures whether PassDirty is asserted or not for read data response, when stash snoop response has datapull asserted
|
|
|
stashonceshared_opcode : coverpoint sys_xact.rn_xact.xact_type { bins stashonceshared = {svt_chi_transaction::STASHONCESHARED}; type_option.weight = weight_val; option.weight = weight_val; } | |
stashonceshared_opcode : Captures StashOnceShared opcode
|
|
|
stashonceunique_opcode : coverpoint sys_xact.rn_xact.xact_type { bins stashonceunique = {svt_chi_transaction::STASHONCEUNIQUE}; type_option.weight = weight_val; option.weight = weight_val; } | |
stashonceunique_opcode : Captures StashOnceUnique opcode
|
|
|
stashtype_associated_snp_present: coverpoint sys_xact.are_associate_stashsnoops_present { bins stashtype_associated_snp_is_not_present = {0}; bins stashtype_associated_snp_present = {1}; option.weight = weight_val ; type_option.weight = weight_val; } | |
stashtype_associated_snp_present : Captures whether stash type associated snoop is present or not
|
|
|
sys_xact_snp_donotgotosd : coverpoint sys_xact_snp_donotgotosd { bins snp_donotgotosd_1 = {1}; bins snp_donotgotosd_0 = {0}; type_option.weight = weight_val; option.weight = weight_val; } | |
sys_xact_snp_donotgotosd : This coverpoint captures the DoNotGoToSD attribute of the snoop transaction
|
|
|
sys_xact_snp_rettosrc : coverpoint sys_xact_snp_rettosrc { bins snp_rettosrc_1 = {1}; bins snp_rettosrc_0 = {0}; type_option.weight = weight_val; option.weight = weight_val; } | |
sys_xact_snp_rettosrc : This coverpoint captures the rettosrc attribute of the snoop transaction
|
|
|
sys_xact_snp_rsp_datatransfer : coverpoint sys_xact_snp_rsp_datatransfer { bins snp_rsp_datatransfer = {1}; bins snp_rsp = {0}; type_option.weight = weight_val; option.weight = weight_val; } | |
sys_xact_snp_rsp_datatransfer : This coverpoint captures the snp_rsp_datatransfer attribute of the snoop transaction
|
|
|
writedatacancel_opcode : coverpoint sys_xact.rn_xact.is_writedatacancel_used_for_write_xact { bins write_datacancel_used = {1}; bins ncbwrdata_used = {0}; type_option.weight = weight_val; option.weight = weight_val; } | |
writedatacancel_opcode : Captures
|
|
|
writeuniqueptl_opcode : coverpoint sys_xact.rn_xact.xact_type { bins writeuniqueptl = {svt_chi_transaction::WRITEUNIQUEPTL}; type_option.weight = weight_val; option.weight = weight_val; } | |
writeuniqueptl_opcode : Captures WriteUniquePtl opcode
|
|
|
writeuniqueptlstash_opcode : coverpoint sys_xact.rn_xact.xact_type { bins writeuniqueptlstash = {svt_chi_transaction::WRITEUNIQUEPTLSTASH}; type_option.weight = weight_val; option.weight = weight_val; } | |
writeuniqueptlstash_opcode : Captures WriteUniquePtlStash opcode
|
|
|
writeuniquestash_opcode : coverpoint sys_xact.rn_xact.xact_type { bins writeuniqueptlstash = {svt_chi_transaction::WRITEUNIQUEPTLSTASH}; bins writeuniquefullstash = {svt_chi_transaction::WRITEUNIQUEFULLSTASH}; type_option.weight = weight_val; option.weight = weight_val; } | |
writeuniquestash_opcode : Captures WriteUnique*Stash opcodes
|
|
|
|
0
|
|
|
Width of Target ID field
|
|
|
7_0_2
|
|
|
7_0
|
|
|
7_0_1
|
|
|
10_6
|
|
|
10_4
|
|
|
1
|
|
|
1
| |
This value is used by the svt_chi_transaction_exception_list constructor to define the initial value for svt_exception_list :: max_num_exceptions. This field is used by the exception list to define the maximum number of exceptions which can be generated for a single transaction. The user testbench can override this constant value to define a different maximum value for use by all svt_chi_transaction_exception_list instances or can change the value of the svt_exception_list :: max_num_exceptions field directly to define a different maximum value for use by that svt_chi_transaction_exception_list instance.
|
|
|
1
|
|
|
( ( (xact.get_semantic() == SVT_CHI_WRITE_TYPE_SEMANTIC) && (xact.req_status == svt_chi_transaction::ACCEPT ) && (((xact.cfg.exclusive_access_enable == 1) && (xact.is_exclusive) && (xact.get_resperr_status(svt_chi_transaction::EXCLUSIVE_OKAY,0))) || (((!xact.cfg.exclusive_access_enable) || !(xact.is_exclusive)) && xact.get_resperr_status(svt_chi_transaction::NORMAL_OKAY,0))) ) || ( (xact.get_semantic() == SVT_CHI_READ_TYPE_SEMANTIC) && (xact.req_status == svt_chi_transaction::ACCEPT ) && (( (xact.cfg.exclusive_access_enable == 1) && (xact.is_exclusive) && ( (xact.get_resperr_status(svt_chi_transaction::EXCLUSIVE_OKAY,0)) `ifdef SVT_CHI_ISSUE_E_ENABLE ||((xact.xact_type == svt_chi_transaction::READPREFERUNIQUE || xact.xact_type == svt_chi_transaction::MAKEREADUNIQUE) && (xact.get_resperr_status(svt_chi_transaction::NORMAL_OKAY,0))) `endif ) ) || (((!xact.cfg.exclusive_access_enable) || !(xact.is_exclusive)) && xact.get_resperr_status(svt_chi_transaction::NORMAL_OKAY,0))) ) ) |
|
|
4
|
|
|
1
|
|
|
3
|
|
|
250
| |
Max delay value for the assertion of TXLINKACTIVEREQ
|
|
|
0
| |
Min delay value for the assertion of TXLINKACTIVEREQ
|
|
|
250
| |
Max delay value for the deassertion of TXLINKACTIVEREQ
|
|
|
0
| |
Min delay value for the deassertion of TXLINKACTIVEREQ
|
|
|
2
|
|
|
0
| |
Used to indicate the status of the TX LINKACTIVE Interface state machine.
|
|
|
Width of Transaction ID field
|
|
|
1
|
|
|
10
|
|
|
12
|
|
|
11
|
|
|
17
|
|
|
23
|
|
|
9
|
|
|
19
|
|
|
18
|
|
|
22
|
|
|
6
|
|
|
12
|
|
|
20
|
|
|
24
|
|
|
21
|
|
|
12
|
|
|
25
|
|
|
8
|
|
|
0
|
|
|
13
| |
Width of the txn_id SVT_CHI_MAX_TXN_ID_WIDTH is user redefinable field.
|
|
|
0
|
|
|
7
|
|
|
1
|
|
|
|
|
`define SVT_CHI_VALID_RN_IDX_0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`define SVT_CHI_VALID_SN_IDX_0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5
| |
CHI Versions
|
|
|
8
| |
Width of VMID EXT field
|
|
|
16
| |
Width of SLCRepHint fields-- applicable for CHI Issue D
|
|
|
`ifdef SVT_UVM_TECHNOLOGY begin uvm_event_pool xact_event_pool; uvm_event ended_event; xact_event_pool = this_xact.get_event_pool(); ended_event = xact_event_pool.get("end"); ended_event.wait_trigger(); end `elsif SVT_OVM_TECHNOLOGY begin ovm_event_pool xact_event_pool; ovm_event ended_event; xact_event_pool = this_xact.get_event_pool(); ended_event = xact_event_pool.get("end"); ended_event.wait_trigger(); end `else this_xact.notify.wait_for(vmm_data::ENDED); `endif |
|
|
1
|
|
|
2_0
|
|
|
1
|
|
|
`SVT_CHI_CBUSY_WIDTH
|
|
|
2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2
|
|
|
|
|
|
|
|
|
|
|
`SVT_CHI_MAX_MPAM_PARTID_WIDTH
|
|
|
`SVT_CHI_MAX_MPAM_PERFMONGROUP_WIDTH
|
|
|
|
|
`SVT_CHI_MAX_TAG_UPDATE_WIDTH
|
|
|
`SVT_CHI_MAX_TAG_WIDTH
|
|
|
`SVT_CHI_MPAM_NS_WIDTH
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(xact.status == svt_chi_transaction::ACCEPT || xact.status == svt_chi_transaction::DISABLED || xact.status == svt_chi_transaction::CANCELLED || xact.status == svt_chi_transaction::ABORTED) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AMBA CHI Transaction TYPE: Used to define type for request messages: Aliased to Request VC FLIT Opcodes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3
|
|
|
|
fork begin for(int i =0; i<queue_name.size(); i++)begin automatic int j =i; fork begin svt_chi_ic_snoop_transaction _xact = queue_name[j] ; int _idx[$]; _xact.wait_end(); queue_name``_sema.get(1); _idx = queue_name.find_first_index with (item == _xact); queue_name.delete(_idx[0]); queue_name``_sema.put(1); end join_none end wait(queue_name.size() < outstanding_xact_cfg); if(queue_name.size() >= outstanding_xact_cfg ) svt_fatal("add_to_ic_sn_snp_active", $sformatf("[Internal error] %0s queue.size(%0d) >= outstanding_xact_cfg(%0d)",addl_info, queue_name.size(),outstanding_xact_cfg)); disable fork; end join_none |