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 SVT UVM Documentation:
AMBA User Modifiable Macros
AMBA User Non-Modifiable Macros
|
|
|
|
|
|
|
|
|
|
|
|
4
|
|
|
1024
|
|
|
16
|
|
|
|
|
|
|
|
|
|
|
0.01
|
|
|
0.01
|
|
|
0.01
|
|
|
0.01
|
|
|
32
|
|
|
64
|
|
|
64
|
|
|
1
|
|
|
16
|
|
|
16
|
|
|
16
|
|
|
16
|
|
|
16
|
|
|
16
|
|
|
32
|
|
|
0.01
|
|
|
0.01
|
|
|
0.01
|
|
|
0.01
|
|
|
1
|
|
|
interconnect_env
|
|
|
|
|
0.01
|
|
|
0.01
|
|
|
5
|
|
|
1
| |
define SVT_APB_MEM_REGION_TYPE as 0 will disable memory region define SVT_APB_MEM_REGION_TYPE as 1 will enable Secure/Non-secure regions define SVT_APB_MEM_REGION_TYPE as 2 will enable Secure/Non-secure/Root/Realm regions
|
|
|
32
|
|
|
8
|
|
|
0.01
|
|
|
0.01
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
2
|
|
|
4
|
|
|
(xact.get_xact_type() == svt_axi_transaction::COHERENT && (xact.coherent_xact_type == svt_axi_transaction::WRITEEVICT || xact.coherent_xact_type == svt_axi_transaction::WRITEBACK || xact.coherent_xact_type == svt_axi_transaction::READONCE ) ) |
|
|
(xact.get_xact_type() == svt_axi_transaction::COHERENT && (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUE || `ifdef SVT_ACE5_ENABLE xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEPTLSTASH || xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEFULLSTASH || `endif xact.coherent_xact_type == svt_axi_transaction::CLEANUNIQUE || xact.coherent_xact_type == svt_axi_transaction::MAKEUNIQUE || xact.coherent_xact_type == svt_axi_transaction::READUNIQUE || xact.coherent_xact_type == svt_axi_transaction::READCLEAN || xact.coherent_xact_type == svt_axi_transaction::READNOTSHAREDDIRTY || xact.coherent_xact_type == svt_axi_transaction::CLEANSHARED || xact.coherent_xact_type == svt_axi_transaction::CLEANINVALID|| xact.coherent_xact_type == svt_axi_transaction::READONCE ) ) |
|
|
((xact.coherent_xact_type == svt_axi_master_transaction::READUNIQUE)|| (xact.coherent_xact_type == svt_axi_master_transaction::CLEANUNIQUE)|| (xact.coherent_xact_type == svt_axi_master_transaction::CLEANINVALID)|| (xact.coherent_xact_type == svt_axi_master_transaction::WRITEUNIQUE) ) && ((snoop.snoop_xact_type == svt_axi_snoop_transaction::READUNIQUE)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANINVALID) ) || ( ((xact.coherent_xact_type == svt_axi_master_transaction::MAKEINVALID)|| (xact.coherent_xact_type == svt_axi_master_transaction::MAKEUNIQUE)|| (xact.coherent_xact_type == svt_axi_master_transaction::WRITELINEUNIQUE) ) && ((snoop.snoop_xact_type == svt_axi_snoop_transaction::READUNIQUE)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANINVALID)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::MAKEINVALID) ) ) || ( ((xact.coherent_xact_type == svt_axi_master_transaction::CLEANSHARED) ) && ((snoop.snoop_xact_type == svt_axi_snoop_transaction::READUNIQUE)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANINVALID)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANSHARED) ) ) || ( ((xact.coherent_xact_type == svt_axi_master_transaction::CLEANSHAREDPERSIST) ) && ((snoop.snoop_xact_type == svt_axi_snoop_transaction::READUNIQUE)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANINVALID)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANSHARED) ) ) || ( ((xact.coherent_xact_type == svt_axi_master_transaction::READONCECLEANINVALID) ) && ((snoop.snoop_xact_type == svt_axi_snoop_transaction::READUNIQUE)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::READONCE) ) ) || ( ((xact.coherent_xact_type == svt_axi_master_transaction::READONCEMAKEINVALID) ) && ((snoop.snoop_xact_type == svt_axi_snoop_transaction::READUNIQUE)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::READONCE) ) ) || ( ((xact.coherent_xact_type == svt_axi_master_transaction::READCLEAN)|| (xact.coherent_xact_type == svt_axi_master_transaction::READSHARED)|| (xact.coherent_xact_type == svt_axi_master_transaction::READNOTSHAREDDIRTY) ) && ((snoop.snoop_xact_type == svt_axi_snoop_transaction::READUNIQUE)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANINVALID)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::READCLEAN)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::READSHARED)|| (snoop.snoop_xact_type == svt_axi_snoop_transaction::READNOTSHAREDDIRTY) ) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::READONCE) && (snoop.snoop_xact_type != svt_axi_snoop_transaction::MAKEINVALID) ) |
|
|
16
|
|
|
10
|
|
|
|
|
|
|
|
|
16
|
|
|
32
|
|
|
64
|
|
|
10
|
|
|
16
|
|
|
10
|
|
|
16
|
|
|
250
|
|
|
|
|
16
|
|
|
|
|
16
|
|
|
|
|
16
|
|
|
|
|
16
|
|
|
1024
|
|
|
4
|
|
|
128
|
|
|
10
|
|
|
128
|
|
|
|
|
|
|
|
|
16
|
|
|
4
|
|
|
8
|
|
|
1000
|
|
|
8192
|
|
|
|
|
|
|
64
|
|
|
64
|
|
|
256
|
|
|
1
|
|
|
(`SVT_AXI_MAX_ADDR_WIDTH + SVT_AXI_ADDR_TAG_ATTRIBUTES_WIDTH)
|
|
|
16
|
|
|
16
|
|
|
16
|
|
|
4
|
|
|
16
|
|
|
1
|
|
|
|
|
1000
|
|
|
8192
|
|
|
|
|
8
|
|
|
|
|
16
|
|
|
1
|
|
|
0
|
|
|
4
|
|
|
ACE_VERSION_1_0
| |
Default value of port configuration attribute ace_version. User can change this value to ACE_VERSION_2_0 to use ACE5 features, along with defining compile time macro SVT_ACE5_ENABLE.
|
|
|
MPAM_FALSE
| |
Default value of port configuration attribute enable_mpam. User can change this value to MPAM_9_1 or MPAM_12_1 to enable the feature.
|
|
|
AXI3
|
|
|
10
|
|
|
10
|
|
|
10
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
3
|
|
|
3
|
|
|
3
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
3
|
|
|
3
|
|
|
1
|
|
|
1
|
|
|
3
|
|
|
3
|
|
|
1
|
|
|
1
|
|
|
3
|
|
|
3
|
|
|
3
|
|
|
3
|
|
|
3
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
3
|
|
|
3
|
|
|
1
|
|
|
1
|
|
|
3
|
|
|
3
|
|
|
3
|
|
|
3
|
|
|
3
|
|
|
1
|
|
|
1
|
|
|
|
|
12
|
|
|
100000
|
|
|
16
|
|
|
256
|
|
|
2
|
|
|
2
|
|
|
4
|
|
|
`SVT_AXI_MAX_ADDR_WIDTH
|
|
|
4
|
|
|
`SVT_AXI_MAX_DATA_WIDTH
|
|
|
`SVT_AXI_ACE_SNOOP_DATA_WIDTH/64
|
|
|
3
|
|
|
5
|
|
|
4
|
|
|
3
|
|
|
2
|
|
|
4
|
|
|
8
|
|
|
16
|
|
|
2
|
|
|
0.01
|
|
|
0.01
|
|
|
4
|
|
|
4
|
|
|
10
|
|
|
4
|
|
|
16
|
|
|
`SVT_AXI_MAX_DATA_WIDTH/64
|
|
|
128
|
|
|
4
|
|
|
8
|
|
|
8
|
|
|
0.01
|
|
|
0.01
|
|
|
256
|
|
|
3
|
|
|
4
|
|
|
4
|
|
|
4
|
|
|
3
|
|
|
0.01
|
|
|
0.01
|
|
|
`SVT_AXI_MAX_TDATA_WIDTH/8
|
|
|
`SVT_AXI_MAX_TDATA_WIDTH/8
|
|
|
0
|
|
|
`SVT_AXI_MAX_DATA_WIDTH/8
|
|
|
svt_axi_slave_agent
|
|
|
((dividend / divisor) + ((dividend % divisor) != 0)) |
|
|
|
|
`define var``_``val |
|
|
0
|
|
|
1
|
|
|
`ifdef SVT_UVM_TECHNOLOGY reporter `elsif SVT_OVM_TECHNOLOGY reporter `else log `endif |
|
|
8
|
|
|
4
|
|
|
1
|
|
|
|
|
2
|
|
|
3
|
|
|
1
|
|
|
17
|
|
|
27
|
|
|
14
|
|
|
24
|
|
|
30
|
|
|
10
|
|
|
20
|
|
|
18
|
|
|
28
|
|
|
31
|
|
|
11
|
|
|
21
|
|
|
15
|
|
|
25
|
|
|
32
|
|
|
12
|
|
|
22
|
|
|
19
|
|
|
29
|
|
|
16
|
|
|
26
|
|
|
13
|
|
|
23
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
4
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
2
|
|
|
3
|
|
|
5
|
|
|
2
|
|
|
32
|
|
|
0
|
|
|
0
|
|
|
4
|
|
|
2
|
|
|
1
|
|
|
3
|
|
|
1
|
|
|
2
|
|
|
`ifdef SVT_VMM_TECHNOLOGY xact.notify.timestamp(vmm_data::ENDED) `else xact.get_end_time() `endif |
|
|
`ifdef SVT_VMM_TECHNOLOGY xact.notify.timestamp(vmm_data::STARTED) `else xact.get_begin_time() `endif |
|
|
8
|
|
|
3
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
4
|
|
|
1
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
2
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
5
|
|
|
4
|
|
|
2
|
|
|
3
|
|
|
0
|
|
|
2
|
|
|
3
|
|
|
1
|
|
|
4
|
|
|
2
|
|
|
0
|
|
|
1
|
|
|
16
|
|
|
16
|
|
|
16
|
|
|
32
|
|
|
0
|
|
|
-1495
|
|
|
0
|
|
|
$sformatf(" AHB transaction {PORT_ID('d%0d) PORT_NAME(%0s) OBJECT_NUM('d%0d) LOCK('b%0b) XACT_TYPE(%0s) ADDR('h%0x) BURST_TYPE(%0s) BURST_LENGTH('d%0d) BURST_SIZE(%0s) STATUS(%0s) CURR_DATA_BEAT_NUM('d%0d) %s %0s } ", transaction_obj.port_id, ((transaction_obj.cfg !=null)?transaction_obj.cfg.get_port_name():""),transaction_obj.object_num,transaction_obj.lock,transaction_obj.xact_type.name,transaction_obj.addr,transaction_obj.burst_type.name, transaction_obj.get_burst_length(),transaction_obj.burst_size.name,transaction_obj.status.name,transaction_obj.current_data_beat_num, ((transaction_obj.cfg !=null)?((transaction_obj.cfg.secure_enable ==1)?{"NONSEC_TRANS(",transaction_obj.nonsec_trans.name,")"}:""):""), ((transaction_obj.status == svt_ahb_transaction::ABORTED)?{ "ABORTED_XACT_STATUS(",transaction_obj.aborted_xact_status.name,")"} : "") ) |
|
|
1
|
|
|
2
|
|
|
1
|
|
|
0
|
|
|
4
|
|
|
1
|
|
|
3
|
|
|
4
|
|
|
1
|
|
|
5
|
|
|
2
|
|
|
6
|
|
|
0
|
|
|
7
|
|
|
4
|
|
|
1
|
|
|
5
|
|
|
2
|
|
|
6
|
|
|
3
|
|
|
0
|
|
|
1
|
|
|
7
|
|
|
3
|
|
|
5
|
|
|
0
|
|
|
6
|
|
|
2
|
|
|
4
|
|
|
0
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
2
|
|
|
3
|
|
|
4
|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
2
|
|
|
3
|
|
|
2
|
|
|
1
|
|
|
3
|
|
|
2
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
|
|
`define SVT_AHB_VALID_MASTER_IDX_0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`define SVT_AHB_VALID_SLAVE_IDX_0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`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
|
|
|
3
|
|
|
2
|
|
|
3
|
|
|
((`SVT_AXI_MAX_ADDR_WIDTH>=SVT_AHB_MAX_ADDR_WIDTH)?(`SVT_AXI_MAX_ADDR_WIDTH):(SVT_AHB_MAX_ADDR_WIDTH))
|
|
|
((`SVT_AXI_MAX_DATA_WIDTH>=SVT_AHB_MAX_DATA_WIDTH)?(`SVT_AXI_MAX_DATA_WIDTH):(SVT_AHB_MAX_DATA_WIDTH))
|
|
|
2
|
|
|
2
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
2
|
|
|
1
|
|
|
1
|
|
|
10
|
|
|
11
|
|
|
12
|
|
|
13
|
|
|
14
|
|
|
15
|
|
|
16
|
|
|
17
|
|
|
18
|
|
|
19
|
|
|
2
|
|
|
20
|
|
|
21
|
|
|
22
|
|
|
23
|
|
|
24
|
|
|
25
|
|
|
26
|
|
|
27
|
|
|
28
|
|
|
29
|
|
|
3
|
|
|
30
|
|
|
31
|
|
|
32
|
|
|
4
|
|
|
5
|
|
|
6
|
|
|
64
|
|
|
7
|
|
|
8
|
|
|
9
|
|
|
16
|
|
|
32
|
|
|
64
|
|
|
8
|
|
|
15
|
|
|
14
|
|
|
13
|
|
|
12
|
|
|
11
|
|
|
10
|
|
|
9
|
|
|
8
|
|
|
svt_decl_event(EVENT_``ev_name)
|
|
|
1
|
|
|
0
|
|
|
4
|
|
|
2
|
|
|
3
|
|
|
16
|
|
|
128
|
|
|
|
|
4
|
|
|
0
|
|
|
7
|
|
|
6
|
|
|
5
|
|
|
4
|
|
|
3
|
|
|
2
|
|
|
1
|
|
|
$sformatf("{XACT_TYPE(%0s) ADDRESS('h%0x) DATA('h%0x) } ", ((xact != null)?xact.xact_type.name:"null"), ((xact != null)?xact.address:0), ((xact != null)?xact.data:0)) |
|
|
3
|
|
|
3
|
|
|
3
|
|
|
2
|
|
|
2
|
|
|
2
|
|
|
0
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
4
|
|
|
5
|
|
|
6
|
|
|
7
|
|
|
2
|
|
|
3
|
|
|
0
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
4
|
|
|
2
|
|
|
0
|
|
|
1
|
|
|
3
|
|
|
2
|
|
|
0
|
|
|
1
|
|
|
5
|
|
|
|
|
`define SVT_APB_VALID_SLAVE_IDX_0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
0
|
|
|
8
|
|
|
9
|
|
|
10
|
|
|
11
|
|
|
12
|
|
|
13
|
|
|
14
|
|
|
15
|
|
|
1
|
|
|
4
| |
Chunk size in AXI5 read data chunking is 128 bits
|
|
|
|
1
|
|
|
3
|
|
|
2
|
|
|
15
|
|
|
7
|
|
|
11
|
|
|
14
|
|
|
6
|
|
|
10
|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
3
|
|
|
2
|
|
|
11
|
|
|
15
|
|
|
15
|
|
|
11
|
|
|
10
|
|
|
14
|
|
|
14
|
|
|
10
|
|
|
1
|
|
|
0
|
|
|
3
|
|
|
2
|
|
|
7
|
|
|
7
|
|
|
15
|
|
|
15
|
|
|
6
|
|
|
6
|
|
|
14
|
|
|
14
|
|
|
$sformatf("{%0sOBJECT_NUM('d%0d) PORT_ID('d%0d) PORT_NAME(%0s) TYPE(%0s) ADDR('h%0x) SECURE('h%0h) RESP('h%0x)} ", (((xact != null) && (xact.object_info != ""))?$sformatf("OBJ_INFO(%0s) ", xact.object_info):""), ((xact != null)?xact.object_id:-1), (((xact != null)&&(xact.port_cfg!=null))?xact.port_cfg.port_id:-1), (((xact != null)&&(xact.port_cfg!=null))?xact.port_cfg.get_port_name():""), ((xact != null)?xact.snoop_xact_type.name:"null"), ((xact != null)?xact.snoop_addr:0), ((xact != null)?!xact.snoop_prot[1]:0), ((xact != null)?{xact.get_crresp_value()}:0)) |
|
|
0
|
|
|
( ( (sys_cfg.use_recommended_coherent_to_snoop_map == 1) && (SVT_AXI_RECOMMENDED_SNOOP_XACT(xact,snoop)) ) || ( (sys_cfg.use_recommended_coherent_to_snoop_map == 0) && (xact.get_xact_type() == svt_axi_master_transaction::COHERENT) && ( (SVT_AXI_LEGAL_SNOOP_MAPPING(xact,snoop)) ) ) ) |
|
|
1
|
|
|
4
|
|
|
2
|
|
|
0
|
|
|
1
|
|
|
3
|
|
|
17
|
|
|
8
|
|
|
9
|
|
|
10
|
|
|
11
|
|
|
12
|
|
|
13
|
|
|
14
|
|
|
15
|
|
|
0
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
4
|
|
|
5
|
|
|
6
|
|
|
7
|
|
|
16
|
|
|
0
|
|
|
4
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
13
|
|
|
3'b000
|
|
|
3'b101
|
|
|
3'b100
|
|
|
3'b111
|
|
|
3'b110
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
4
|
|
|
1
|
|
|
3
|
|
|
2
|
|
|
2
|
|
|
0
|
|
|
1
|
|
|
(xact_type == COHERENT) && ( (coherent_xact_type == READNOSNOOP) || (coherent_xact_type == READONCE) || (coherent_xact_type == READONCECLEANINVALID) || (coherent_xact_type == READONCEMAKEINVALID) || (coherent_xact_type == READSHARED) || (coherent_xact_type == READCLEAN) || (coherent_xact_type == READNOTSHAREDDIRTY) || (coherent_xact_type == READUNIQUE) || (coherent_xact_type == CLEANUNIQUE) || (coherent_xact_type == MAKEUNIQUE) || (coherent_xact_type == CLEANSHARED) || (coherent_xact_type == CLEANINVALID) || (coherent_xact_type == MAKEINVALID) || (coherent_xact_type == DVMCOMPLETE) || (coherent_xact_type == DVMMESSAGE) || (coherent_xact_type == READBARRIER) || (coherent_xact_type == CLEANSHAREDPERSIST) ) |
|
|
(xact.get_xact_type() == svt_axi_transaction::COHERENT) && ( (xact.coherent_xact_type == svt_axi_transaction::READONCE) || (xact.coherent_xact_type == svt_axi_transaction::READSHARED) || (xact.coherent_xact_type == svt_axi_transaction::READCLEAN) || (xact.coherent_xact_type == svt_axi_transaction::READNOTSHAREDDIRTY) || (xact.coherent_xact_type == svt_axi_transaction::READUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::CLEANUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::MAKEUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::CLEANSHARED) || (xact.coherent_xact_type == svt_axi_transaction::CLEANSHAREDPERSIST) || (xact.coherent_xact_type == svt_axi_transaction::READONCECLEANINVALID) || (xact.coherent_xact_type == svt_axi_transaction::READONCEMAKEINVALID) || (xact.coherent_xact_type == svt_axi_transaction::CLEANINVALID) || (xact.coherent_xact_type == svt_axi_transaction::MAKEINVALID) || (xact.coherent_xact_type == svt_axi_transaction::DVMCOMPLETE) || (xact.coherent_xact_type == svt_axi_transaction::DVMMESSAGE) || (xact.coherent_xact_type == svt_axi_transaction::READBARRIER) ) |
|
|
2
|
|
|
3
|
|
|
0
|
|
|
1
|
|
|
9
|
|
|
8
|
|
|
30
|
|
|
6
|
|
|
31
|
|
|
11
|
|
|
12
|
|
|
19
|
|
|
10
|
|
|
7
|
|
|
35
|
|
|
13
|
|
|
3
|
|
|
0
|
|
|
4
|
|
|
1
|
|
|
2
|
|
|
5
|
|
|
25
|
|
|
26
|
|
|
27
|
|
|
18
|
|
|
20
|
|
|
17
|
|
|
34
|
|
|
21
|
|
|
33
|
|
|
16
|
|
|
14
|
|
|
37
|
|
|
32
|
|
|
15
|
|
|
24
|
|
|
23
|
|
|
36
|
|
|
(xact_type == COHERENT) && ( (coherent_xact_type == WRITENOSNOOP) || (coherent_xact_type == WRITEUNIQUE) || `ifdef SVT_ACE5_ENABLE (coherent_xact_type == WRITEUNIQUEPTLSTASH) || (coherent_xact_type == WRITEUNIQUEFULLSTASH) || (coherent_xact_type == STASHONCEUNIQUE) || (coherent_xact_type == STASHONCESHARED) || (coherent_xact_type == STASHTRANSLATION) || (coherent_xact_type == CMO) || (coherent_xact_type == WRITEPTLCMO) || (coherent_xact_type == WRITEFULLCMO) || `ifdef SVT_AXI_WRITE_DEFERRABLE_INTERNAL_ENABLE (coherent_xact_type == WRITEDEFERRABLE) || `endif `ifdef SVT_AXI_PREFETCH_INTERNAL_ENABLE (coherent_xact_type == PREFETCH) || `endif `ifdef SVT_AXI_WRITE_ZERO_INTERNAL_ENABLE (coherent_xact_type == WRITEZERO) || `endif `ifdef SVT_AXI_WRITENOSNPFULL_XACT_INTERNAL_ENABLE (coherent_xact_type == WRITENOSNPFULL) || `endif `endif (coherent_xact_type == WRITELINEUNIQUE) || (coherent_xact_type == WRITEBACK) || (coherent_xact_type == WRITECLEAN) || (coherent_xact_type == WRITEBARRIER) || (coherent_xact_type == WRITEEVICT) || (coherent_xact_type == EVICT) ) |
|
|
(xact.get_xact_type() == svt_axi_transaction::COHERENT) && ( (xact.coherent_xact_type == svt_axi_transaction::WRITENOSNOOP) || (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUE) || `ifdef SVT_ACE5_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEPTLSTASH) || (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEFULLSTASH) || (xact.coherent_xact_type == svt_axi_transaction::STASHONCESHARED) || (xact.coherent_xact_type == svt_axi_transaction::STASHONCEUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::STASHTRANSLATION) || `endif (xact.coherent_xact_type == svt_axi_transaction::WRITELINEUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::WRITEBACK) || (xact.coherent_xact_type == svt_axi_transaction::WRITECLEAN) || (xact.coherent_xact_type == svt_axi_transaction::WRITEBARRIER) || (xact.coherent_xact_type == svt_axi_transaction::WRITEEVICT) || (xact.coherent_xact_type == svt_axi_transaction::EVICT) ) |
|
|
0
|
|
|
3'b010
|
|
|
3'b011
|
|
|
3'b000
|
|
|
3'b001
|
|
|
'b11
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
2
|
|
|
3
|
|
|
14
|
|
|
13
|
|
|
12
|
|
|
11
|
|
|
10
|
|
|
9
|
|
|
8
|
|
|
0
|
|
|
2
|
|
|
1
|
|
|
0
|
|
|
(((cfg.get_axi_interface_type() == svt_axi_port_configuration::AXI3 || cfg.get_axi_interface_type() == svt_axi_port_configuration::AXI4)&& (xact.get_xact_type() != svt_axi_transaction::IDLE)) || ((cfg.get_axi_interface_type() == svt_axi_port_configuration::ACE_LITE || cfg.get_axi_interface_type() == svt_axi_port_configuration::AXI_ACE) && `ifdef SVT_ACE5_ENABLE (xact.get_xact_type() == svt_axi_transaction::ATOMIC) || `endif (xact.get_xact_type() == svt_axi_transaction::COHERENT && (xact.coherent_xact_type == svt_axi_transaction::WRITENOSNOOP || `ifdef SVT_ACE5_ENABLE xact.coherent_xact_type == svt_axi_transaction::WRITEPTLCMO || xact.coherent_xact_type == svt_axi_transaction::WRITEFULLCMO || `ifdef SVT_AXI_WRITE_DEFERRABLE_INTERNAL_ENABLE xact.coherent_xact_type == svt_axi_transaction::WRITEDEFERRABLE || `endif `ifdef SVT_AXI_WRITE_ZERO_INTERNAL_ENABLE xact.coherent_xact_type == svt_axi_transaction::WRITEZERO || `endif `endif xact.coherent_xact_type == svt_axi_transaction::READNOSNOOP ) ) ) ) |
|
|
'b01
|
|
|
1
|
|
|
11
|
|
|
10
|
|
|
8
|
|
|
9
|
|
|
`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 |
|
|
svt_axi_ic_modport
|
|
|
svt_axi_ic_modport
|
|
|
1
|
|
|
0
|
|
|
2
|
|
|
5
|
|
|
3
|
|
|
4
|
|
|
1
|
|
|
0
|
|
|
4
|
|
|
5
|
|
|
2
|
|
|
3
|
|
|
3'b110
|
|
|
3'b111
|
|
|
3'b100
|
|
|
3'b101
|
|
|
4
|
|
|
5
|
|
|
0
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
2
|
|
|
1
|
|
|
12
|
|
|
(obj.get_xact_type() == svt_axi_transaction::DATA_STREAM) |
|
|
((obj.xact_type == svt_axi_transaction::READ) || ((obj.xact_type == svt_axi_transaction::COHERENT) && ((obj.coherent_xact_type == svt_axi_transaction::READNOSNOOP) || (obj.coherent_xact_type == svt_axi_transaction::READONCE) || (obj.coherent_xact_type == svt_axi_transaction::READSHARED) || (obj.coherent_xact_type == svt_axi_transaction::READCLEAN) || (obj.coherent_xact_type == svt_axi_transaction::READNOTSHAREDDIRTY) || (obj.coherent_xact_type == svt_axi_transaction::READUNIQUE) || (obj.coherent_xact_type == svt_axi_transaction::CLEANUNIQUE) || (obj.coherent_xact_type == svt_axi_transaction::MAKEUNIQUE) || (obj.coherent_xact_type == svt_axi_transaction::CLEANSHARED) || (obj.coherent_xact_type == svt_axi_transaction::CLEANSHAREDPERSIST) || (obj.coherent_xact_type == svt_axi_transaction::READONCECLEANINVALID) || (obj.coherent_xact_type == svt_axi_transaction::READONCEMAKEINVALID) || (obj.coherent_xact_type == svt_axi_transaction::CLEANINVALID) || (obj.coherent_xact_type == svt_axi_transaction::MAKEINVALID) || (obj.coherent_xact_type == svt_axi_transaction::DVMCOMPLETE) || (obj.coherent_xact_type == svt_axi_transaction::DVMMESSAGE) || (obj.coherent_xact_type == svt_axi_transaction::READBARRIER ) ) ) ) |
|
|
(((obj.xact_type == svt_axi_transaction::ATOMIC) && ((obj.atomic_xact_op_type == svt_axi_transaction::ATOMICLOAD_ADD) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICLOAD_CLR) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICLOAD_EOR) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICLOAD_SET) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICLOAD_SMAX) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICLOAD_SMIN) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICLOAD_UMAX) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICLOAD_UMIN) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICSWAP) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICCOMPARE) ) ) ) |
|
|
((obj.xact_type == svt_axi_transaction::WRITE) || ((obj.xact_type == svt_axi_transaction::COHERENT) && ((obj.coherent_xact_type == svt_axi_transaction::WRITENOSNOOP) || (obj.coherent_xact_type == svt_axi_transaction::WRITEUNIQUE) || `ifdef SVT_ACE5_ENABLE (obj.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEPTLSTASH) || (obj.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEFULLSTASH) || (obj.coherent_xact_type == svt_axi_transaction::STASHONCESHARED) || (obj.coherent_xact_type == svt_axi_transaction::STASHONCEUNIQUE) || (obj.coherent_xact_type == svt_axi_transaction::STASHTRANSLATION) || `endif (obj.coherent_xact_type == svt_axi_transaction::WRITELINEUNIQUE) || (obj.coherent_xact_type == svt_axi_transaction::WRITECLEAN) || (obj.coherent_xact_type == svt_axi_transaction::WRITEBACK) || (obj.coherent_xact_type == svt_axi_transaction::WRITEEVICT) || (obj.coherent_xact_type == svt_axi_transaction::EVICT) || (obj.coherent_xact_type == svt_axi_transaction::WRITEBARRIER) ) ) `ifdef SVT_ACE5_ENABLE || ((obj.xact_type == svt_axi_transaction::ATOMIC) && ((obj.atomic_xact_op_type == svt_axi_transaction::ATOMICSTORE_ADD) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICSTORE_CLR) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICSTORE_EOR) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICSTORE_SET) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICSTORE_SMAX) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICSTORE_SMIN) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICSTORE_UMAX) || (obj.atomic_xact_op_type == svt_axi_transaction::ATOMICSTORE_UMIN) ) ) `endif ) |
|
|
1
|
|
|
2
|
|
|
2
|
|
|
3
|
|
|
3
|
|
|
1'b0
|
|
|
0
|
|
|
svt_axi_master_if
|
|
|
0
|
|
|
0
|
|
|
3
|
|
|
2
|
|
|
0
|
|
|
6
|
|
|
1
|
|
|
0
|
|
|
4
|
|
|
1
|
|
|
0
|
|
|
2
|
|
|
4
|
|
|
3
|
|
|
5
|
|
|
svt_axi_master_transaction_scenario
|
|
|
svt_axi_master_transaction
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
`SVT_AXI_MAX_MPAM_PARTID_WIDTH_VAL
| |
Width of MPAM fields. User is not expected to change values of these macros.
|
|
|
1
|
|
|
5
|
|
|
$sformatf("{OBJECT_NUM('d%0d) PORT_ID('d%0d) PORT_NAME(%0s) TYPE(%0s) %0s%0s%0s%0s ID('h%0x) SECURE('d%0d) ADDR('h%0x) } ", ((xact != null)?xact.object_id:-1), ((xact != null)?xact.port_id:-1), (((xact != null)&&(xact.port_cfg!=null))?xact.port_cfg.get_port_name():""), ((xact != null)?xact.xact_type.name:"null"), ((xact != null)?((xact.xact_type == svt_axi_transaction::COHERENT)?{$sformatf("COHERENT_XACT_TYPE(%0s)",xact.coherent_xact_type.name)}:""):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::ATOMIC)?{$sformatf("ATOMIC_XACT_OP_TYPE(%0s)",xact.atomic_xact_op_type.name)}:""):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::COHERENT && (xact.coherent_xact_type == svt_axi_transaction::WRITEPTLCMO || xact.coherent_xact_type ==svt_axi_transaction:: WRITEFULLCMO))?{$sformatf("WRITE_WITH_CMO_XACT_TYPE(%0s)",xact.write_with_cmo_xact_type.name)}:""):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::COHERENT && (xact.coherent_xact_type == svt_axi_transaction::WRITEPTLCMO || xact.coherent_xact_type ==svt_axi_transaction:: WRITEFULLCMO || xact.coherent_xact_type == svt_axi_transaction::CMO))?{$sformatf("CMO_ON_WRITE_XACT_TYPE(%0s)",xact.cmo_on_write_xact_type.name)}:""):""), ((xact != null)?xact.id:0), ((xact != null)?!xact.prot_type[1]:0), ((xact != null)?xact.addr:0)) |
|
|
1'b1
|
|
|
0
|
|
|
2
|
|
|
0
|
|
|
0
|
|
|
7
|
|
|
6
|
|
|
5
|
|
|
4
|
|
|
3
|
|
|
2
|
|
|
1
|
|
|
64
|
|
|
'b00
|
|
|
1
|
|
|
$sformatf("{%0sOBJECT_NUM('d%0d) PORT_ID('d%0d) AUTO_GENERATED_XACT('b%0b) PORT_NAME(%0s) TYPE(%0s)%0s%0s%0s%0s%0s%0s%0s%0s%0s ID('h%0x) PROT_TYPE(%0s) ADDR('h%0x) BURST(%0s) SIZE(%0s) LENGTH('d%0d) CACHE_TYPE('d%0d)}", (((xact != null) && (xact.object_info != ""))?$sformatf("OBJ_INFO(%0s) ", xact.object_info):""), ((xact != null)?xact.object_id:-1), ((xact != null)?xact.port_id:-1), ((xact != null)?xact.is_auto_generated:0), (((xact != null)&&(xact.port_cfg!=null))?xact.port_cfg.get_port_name():""), ((xact != null)?xact.xact_type.name:"null"), ((xact != null) && (xact.xact_type == svt_axi_transaction::WRITE)?($sformatf(" WLAST('b%0b)",xact.is_last_write_data_beat)):""), ((xact != null) && (xact.xact_type == svt_axi_transaction::READ)?($sformatf(" RLAST('b%0b)",xact.is_last_read_data_beat)):""), ((xact != null && xact.get_transmitted_channel() == svt_axi_transaction::WRITE)?($sformatf(" DATA_BEFORE_ADDR('b%0b)",xact.data_before_addr)):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::COHERENT)?{$sformatf(" COHERENT_XACT_TYPE(%0s)",xact.coherent_xact_type.name)}:""):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::ATOMIC)?{$sformatf(" ATOMIC_XACT_OP_TYPE(%0s)",xact.atomic_xact_op_type.name)}:""):""), ((xact != null && xact.port_cfg!=null)?((xact.port_cfg.mte_support_type != svt_axi_port_configuration::MTE_FALSE)?{$sformatf(" TAG_OP(%0s)",xact.tag_op.name)}:""):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::WRITE)?{$sformatf(" WRITE_XACT_TYPE(%0s)",xact.write_xact_type.name)}:""):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::COHERENT && (xact.coherent_xact_type == svt_axi_transaction::WRITEPTLCMO || xact.coherent_xact_type ==svt_axi_transaction:: WRITEFULLCMO))?{$sformatf(" WRITE_WITH_CMO_XACT_TYPE(%0s)",xact.write_with_cmo_xact_type.name)}:""):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::COHERENT && (xact.coherent_xact_type == svt_axi_transaction::WRITEPTLCMO || xact.coherent_xact_type ==svt_axi_transaction:: WRITEFULLCMO || xact.coherent_xact_type == svt_axi_transaction::CMO))?{$sformatf(" CMO_ON_WRITE_XACT_TYPE(%0s)",xact.cmo_on_write_xact_type.name)}:""):""), ((xact != null)?xact.id:0), ((xact != null)?xact.prot_type.name:"null"), ((xact != null)?xact.addr:0), ((xact != null)?xact.burst_type.name:"null"), ((xact != null)?xact.burst_size.name:"null"), ((xact != null)?xact.burst_length:0), ((xact != null)?xact.cache_type:0)) |
|
|
3
|
|
|
4
|
|
|
0
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
0
|
|
|
'b100
|
|
|
|
|
$sformatf("%0s('d%0d) : {TYPE(%0s) ID('h%0x) ADDR('h%0x)}", SVT_DATA_UTIL_ARG_TO_STRING(function_name), ((xact != null)?xact.object_id:-1), ((xact != null)?xact.xact_type.name:"null"), ((xact != null)?xact.id:0), ((xact != null)?xact.addr:0)) |
|
|
$sformatf("{%0sOBJECT_NUM('d%0d) PORT_ID('d%0d) AUTO_GENERATED_XACT('b%0b) PORT_NAME(%0s) TYPE(%0s) BURST(%0s) SIZE(%0s) LENGTH('h%0h)%0s%0s%0s%0s%0s%0s%0s%0s ID('h%0x) SECURE('h%0h) ADDR('h%0x) CACHE_TYPE('h%0h)%0s%0s%0s%0s%0s%0s%0s} ", (((xact != null) && (xact.object_info != ""))?$sformatf("OBJ_INFO(%0s) ", xact.object_info):""), ((xact != null)?xact.object_id:-1), ((xact != null)?xact.port_id:-1), ((xact != null)?xact.is_auto_generated:0), (((xact != null)&&(xact.port_cfg!=null))?xact.port_cfg.get_port_name():""), ((xact != null)?xact.xact_type.name:"null"), ((xact != null)?xact.burst_type.name:"null"), ((xact != null)?xact.burst_size.name:"null"), ((xact != null)?xact.burst_length:0), ((xact != null) && (xact.xact_type == svt_axi_transaction::WRITE)?($sformatf(" WLAST('b%0b)",xact.is_last_write_data_beat)):""), ((xact != null) && (xact.xact_type == svt_axi_transaction::READ)?($sformatf(" RLAST('b%0b)",xact.is_last_read_data_beat)):""), ((xact != null && xact.get_transmitted_channel() inside {svt_axi_transaction::WRITE, svt_axi_transaction::READ_WRITE})?($sformatf(" DATA_BEFORE_ADDR('b%0b)",xact.data_before_addr)):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::COHERENT)?{$sformatf(" COHERENT_XACT_TYPE(%0s)",xact.coherent_xact_type.name)}:""):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::ATOMIC)?{$sformatf(" ATOMIC_XACT_OP_TYPE(%0s)",xact.atomic_xact_op_type.name)}:""):""), ((xact != null && xact.port_cfg!=null)?((xact.port_cfg.mte_support_type != svt_axi_port_configuration::MTE_FALSE)?{$sformatf(" TAG_OP(%0s)",xact.tag_op.name)}:""):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::COHERENT && (xact.coherent_xact_type == svt_axi_transaction::WRITEPTLCMO || xact.coherent_xact_type ==svt_axi_transaction:: WRITEFULLCMO))?{$sformatf(" WRITE_WITH_CMO_XACT_TYPE(%0s)",xact.write_with_cmo_xact_type.name)}:""):""), ((xact != null)?((xact.xact_type == svt_axi_transaction::COHERENT && (xact.coherent_xact_type == svt_axi_transaction::WRITEPTLCMO || xact.coherent_xact_type ==svt_axi_transaction:: WRITEFULLCMO || xact.coherent_xact_type == svt_axi_transaction::CMO))?{$sformatf(" CMO_ON_WRITE_XACT_TYPE(%0s)",xact.cmo_on_write_xact_type.name)}:""):""), ((xact != null)?xact.id:0), ((xact != null)?!xact.prot_type[1]:0), ((xact != null)?xact.addr:0), ((xact != null)?xact.cache_type:0), ((xact != null)?(xact.atomic_type==svt_axi_transaction::EXCLUSIVE)?" EXCL":"":""), (((xact != null) && (xact.port_cfg != null) && (xact.port_cfg.enable_mpam != svt_axi_port_configuration::MPAM_FALSE))?$sformatf(" MPAM_PERFMONGROUP('h%0h) MPAM_PARTID('h%0h) MPAM_NS('h%0h)", xact.mpam_perfmongroup, xact.mpam_partid, xact.mpam_ns):""), `ifdef SVT_AXI_MEC_INTERNAL_ENABLE ((xact != null)?((xact.port_cfg != null && xact.port_cfg.mec_support == svt_axi_port_configuration::MEC_TRUE)?($sformatf(" MECID('h%0h)", xact.mecid)):""):""), `else "", `endif `ifdef SVT_AXI_PBHA_INTERNAL_ENABLE ((xact != null)?((xact.port_cfg != null && xact.port_cfg.pbha_support == svt_axi_port_configuration::PBHA_TRUE)?($sformatf(" PBHA('h%0h)", xact.pbha)):""):""), `else "", `endif `ifdef SVT_AXI_SUBSYSID_INTERNAL_ENABLE ((xact != null)?((xact.port_cfg != null && xact.port_cfg.subsysid_width > 0)?($sformatf(" SUBSYSID('h%0h)", xact.subsysid)):""):""), `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()))):"")) |
|
|
0
|
|
|
1
|
|
|
2
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
3
|
|
|
5
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
( (xact.get_xact_type() == svt_axi_master_transaction::COHERENT) && ( ( (xact.coherent_xact_type == svt_axi_master_transaction::READONCE) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::READONCE) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::WRITEUNIQUE) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANINVALID) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::CLEANSHARED) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANSHARED) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::CLEANSHAREDPERSIST) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANSHARED) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::READONCECLEANINVALID) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::READUNIQUE) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::READONCEMAKEINVALID) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::READUNIQUE) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::CLEANINVALID) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANINVALID) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::MAKEINVALID) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::MAKEINVALID) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::READCLEAN) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::READCLEAN) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::READNOTSHAREDDIRTY) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::READNOTSHAREDDIRTY) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::READSHARED) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::READSHARED) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::READUNIQUE) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::READUNIQUE) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::CLEANUNIQUE) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::CLEANINVALID) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::MAKEUNIQUE) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::MAKEINVALID) ) || ( (xact.coherent_xact_type == svt_axi_master_transaction::WRITELINEUNIQUE) && (snoop.snoop_xact_type == svt_axi_snoop_transaction::MAKEINVALID) ) ) ) |
|
|
2
|
|
|
2
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
2
|
|
|
`define var``_``val |
|
|
0
|
|
|
3
|
|
|
1
|
|
|
svt_axi_slave_if
|
|
|
1
|
|
|
0
|
|
|
6
|
|
|
0
|
|
|
5
|
|
|
3
|
|
|
2
|
|
|
4
|
|
|
1
|
|
|
0
|
|
|
svt_axi_slave_transaction_scenario_gen_callbacks
|
|
|
svt_axi_slave_transaction_scenario_gen
|
|
|
svt_axi_slave_transaction_scenario
|
|
|
svt_axi_slave_transaction
|
|
|
4
|
|
|
'b10
|
|
|
16
|
|
|
1
|
|
|
2
|
|
|
4
|
|
|
8
|
|
|
0
|
|
|
1
|
|
|
5
|
|
|
0
|
|
|
2
|
|
|
1
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
2
|
|
|
1
|
|
|
9
|
|
|
8
|
|
|
14
|
|
|
15
|
|
|
13
|
|
|
2
|
|
|
3
|
|
|
0
|
|
|
1
|
|
|
7
|
|
|
$sformatf("{%0sOBJECT_NUM('d%0d) PORT_ID('d%0d) PORT_NAME(%0s) TYPE(%0s) BURST_LENGTH('d%0d) TID('h%0x) TDEST('h%0x)%0s%0s} ", (((xact != null) && (xact.object_info != ""))?$sformatf("OBJ_INFO(%0s) ", xact.object_info):""), ((xact != null)?xact.object_id:-1), ((xact != null)?xact.port_id:-1), (((xact != null) && (xact.port_cfg!=null))?xact.port_cfg.get_port_name():""), ((xact != null)?xact.xact_type.name:"null"), ((xact != null)?xact.stream_burst_length:0), ((xact != null)?xact.tid:0), ((xact != null)?xact.tdest:0), ((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()))):"")) |
|
|
0
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
4
|
|
|
3
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
7
|
|
|
4
|
|
|
1
|
|
|
8
|
|
|
5
|
|
|
2
|
|
|
9
|
|
|
6
|
|
|
3
|
|
|
0
|
|
|
2
|
|
|
4
|
|
|
7
|
|
|
6
|
|
|
1
|
|
|
0
|
|
|
2
|
|
|
0
|
|
|
0
|
|
|
4
|
|
|
3
|
|
|
2
|
|
|
1
|
|
|
5
|
|
|
3
|
|
|
2
|
|
|
0
|
|
|
6
|
|
|
1
|
|
|
'b101
|
|
|
3
|
|
|
4
|
|
|
2
|
|
|
0
|
|
|
5
|
|
|
1
|
|
|
'b111
|
|
|
1
|
|
|
1
|
|
|
7
|
|
|
1
|
|
|
10
|
|
|
12
|
|
|
14
|
|
|
15
|
|
|
0
|
|
|
1
|
|
|
2
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
16
|
|
|
0
|
|
|
3
|
|
|
2
|
|
|
5
|
|
|
17
|
|
|
4
|
|
|
7
|
|
|
6
|
|
|
9
|
|
|
18
|
|
|
11
|
|
|
10
|
|
|
13
|
|
|
19
|
|
|
12
|
|
|
15
|
|
|
14
|
|
|
8
|
|
|
2
|
|
|
0
|
|
|
1
|
|
|
1
|
|
|
( ( ( (this_xact.port_cfg.axi_interface_type == svt_axi_port_configuration::AXI_ACE) || (this_xact.port_cfg.axi_interface_type == svt_axi_port_configuration::ACE_LITE) ) && (this_xact.is_coherent_xact_dropped == 1) ) || ( (this_xact.port_cfg.axi_interface_type == svt_axi_port_configuration::AXI_ACE) && ( (this_xact.ack_status == svt_axi_transaction::ACCEPT) || (this_xact.ack_status == svt_axi_transaction::ABORTED) ) ) || ( (this_xact.port_cfg.axi_interface_type != svt_axi_port_configuration::AXI_ACE) && (SVT_AXI_IS_TRANSMITTED_CHANNEL_WRITE(this_xact)) && ( ( (this_xact.write_resp_status == svt_axi_transaction::ACCEPT) || (this_xact.write_resp_status == svt_axi_transaction::ABORTED) ) ) ) || `ifdef SVT_ACE5_ENABLE ( (this_xact.port_cfg.axi_interface_type != svt_axi_port_configuration::AXI_ACE) && (SVT_AXI_IS_TRANSMITTED_CHANNEL_READ_WRITE(this_xact)) && ( ( (this_xact.write_resp_status == svt_axi_transaction::ACCEPT) || (this_xact.write_resp_status == svt_axi_transaction::ABORTED) || (this_xact.atomic_read_data_status == svt_axi_transaction::ACCEPT) || (this_xact.atomic_read_data_status == svt_axi_transaction::ABORTED) ) ) ) || `endif ( (this_xact.port_cfg.axi_interface_type != svt_axi_port_configuration::AXI_ACE) && (SVT_AXI_IS_TRANSMITTED_CHANNEL_READ(this_xact)) && ( ( (this_xact.data_status == svt_axi_transaction::ACCEPT) || (this_xact.data_status == svt_axi_transaction::ABORTED) ) ) ) ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1
|
|
|
2
|
|
|
1
|
|
|
3
|
|
|
1_0
|
|
|
((1<<`SVT_AXI_MAX_BURST_LENGTH_WIDTH))
|
|
|
`SVT_AXI3_MAX_BURST_LENGTH+1
|
|
|
((1<<`SVT_AXI_MAX_BURST_LENGTH_WIDTH))
|
|
|
`SVT_AXI4_MAX_BURST_LENGTH+1
|
|
|
((1<<`SVT_AXI_MAX_BURST_LENGTH_WIDTH)-1)
|
|
|
17
|
|
|
((1<<`SVT_AXI_MAX_BURST_LENGTH_WIDTH))
|
|
|
17
|
|
|
`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 |
|
|
1
|
|
|
16
|
|
|
16
|
|
|
1
|
|
|
$sformatf("{%0s KIND(%0s) %0s CHAN(%0s) %0s %0s %0s %0s %0s %0s %0s %0s %0s %0s MSG(%0s) STS(%0s)}", ((xact != null)? ($sformatf("OBJECT_NUM('d%0d)",xact.object_id)):"OBJECT_NUM(-1)"), ((xact != null)?xact.port_cfg.dti_port_kind.name():""), ((xact != null)? ($sformatf("PORT_ID('d%0d)",xact.port_cfg.port_id)):""), ((xact != null)?xact.channel_type.name():""), ((xact != null)? ($sformatf("ID('h%0h)",xact.id)):""), ((xact != null && xact.message_type==0)?($sformatf("PROTOCOL_VERSION('h%0h)",xact.protocol_version)):""), ((xact != null)? ($sformatf("DTI_VERSION(%0s)",xact.port_cfg.dti_version)):""), ((xact != null && (xact.message_type==3 ||xact.message_type==16))? ($sformatf("BYPASS('h%0h)",xact.bypass)):""), ((xact != null && (xact.message_type==1 ||xact.message_type==14))? ($sformatf("OAS('h%0h)",xact.output_address_size)):""), ((xact != null && (xact.message_type==2))? ($sformatf("SEC_SID('h%0h)",xact.secure_stream_id)):""), ((xact != null && (xact.message_type==2 && xact.port_cfg.dti_version==2))? ($sformatf("MMUV('h%0h)",xact.mmuv)):""), ((xact != null && (xact.message_type==2 && xact.port_cfg.dti_version==1))? ($sformatf("FLOW('%0s)",xact.flow)):""), ((xact != null && (xact.message_type.name()=="DTI_TBU_REG_RDATA"))? ($sformatf("DATA(%0s)",xact.get_data_string())):""), ((xact != null && (xact.message_type.name()=="DTI_TBU_REG_READ"))? ($sformatf("DATA(%0s)",xact.get_data_string())):""), ((xact != null)?xact.message_type.name():""), ((xact != null)?xact.xact_status.name():"")) |
|
|
`define var``_``val |
|
|
( ( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation == 9'h00|| xact.operation == 9'h10|| xact.operation ==9'h18|| xact.operation == 9'h20|| xact.operation == 9'h30|| xact.operation ==9'h38 )) || ((xact.port_cfg.dti_version != svt_dti_port_configuration::DTI3_0 && xact.port_cfg.dti_version != svt_dti_port_configuration::DTI4_0) && ( xact.operation == 8'h00|| xact.operation == 8'h10|| xact.operation ==8'h18|| xact.operation == 8'h20|| xact.operation == 8'h30|| xact.operation ==8'h38 )) ) ) |
|
|
( xact.operation == 9'h100|| xact.operation == 9'h110|| xact.operation ==9'h118 ) |
|
|
( xact.operation == 9'h104|| xact.operation == 9'h105 ) |
|
|
( (((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI1_0) && ( xact.operation == 8'h80|| xact.operation == 8'h81|| xact.operation == 8'h88|| xact.operation == 8'h89|| xact.operation == 8'hA0|| xact.operation == 8'hB2|| xact.operation == 8'hB0|| xact.operation == 8'hB1|| xact.operation == 8'hB8|| xact.operation == 8'hB9|| xact.operation == 8'hB5|| xact.operation == 8'hE0|| xact.operation == 8'hE1|| xact.operation == 8'hE8|| xact.operation == 8'hE9|| xact.operation == 8'h40|| xact.operation == 8'h41 ) ) || ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI2_0 ) && ( xact.operation == 8'h80|| xact.operation == 8'h81|| xact.operation == 8'h88|| xact.operation == 8'h89|| xact.operation == 8'hA0|| xact.operation == 8'hB2|| xact.operation == 8'hB0|| xact.operation == 8'hB1|| xact.operation == 8'hB8|| xact.operation == 8'hB9|| xact.operation == 8'hB5|| xact.operation == 8'hE0|| xact.operation == 8'hE1|| xact.operation == 8'hE8|| xact.operation == 8'hE9|| xact.operation == 8'h40|| xact.operation == 8'h41|| xact.operation == 8'h82|| xact.operation == 8'h85|| xact.operation == 8'h90|| xact.operation == 8'h95|| xact.operation == 8'hC0|| xact.operation == 8'hC9|| xact.operation == 8'hC1|| xact.operation == 8'hC8 ) ) || ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation == 9'h80|| xact.operation == 9'h81|| xact.operation == 9'h88|| xact.operation == 9'h89|| xact.operation == 9'hA0|| xact.operation == 9'hB2|| xact.operation == 9'hB0|| xact.operation == 9'hB1|| xact.operation == 9'hB8|| xact.operation == 9'hB9|| xact.operation == 9'hB5|| xact.operation == 9'hE0|| xact.operation == 9'hE1|| xact.operation == 9'hE8|| xact.operation == 9'hE9|| xact.operation == 9'h40|| xact.operation == 9'h41|| xact.operation == 9'h82|| xact.operation == 9'h85|| xact.operation == 9'h90|| xact.operation == 9'h95|| xact.operation == 9'hC0|| xact.operation == 9'hC9|| xact.operation == 9'hC1|| xact.operation == 9'hC8 ) ) ) ) |
|
|
( (((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation == 9'h47|| xact.operation == 9'h180|| xact.operation == 9'h190|| xact.operation == 9'h191|| xact.operation == 9'h192|| xact.operation == 9'h195|| xact.operation == 9'h198|| xact.operation == 9'h199|| xact.operation == 9'h1C0|| xact.operation == 9'h1C1|| xact.operation == 9'h1C8|| xact.operation == 9'h1C9 ) ) ) ) |
|
|
$sformatf("{OBJECT_NUM('d%0d) PORT_ID('d%0d) TYPE(%0s) TID('h%0x) TDATA('h%0x) TDEST('h%0x) } ", ((xact != null)?xact.object_id:-1), ((xact != null)?xact.port_id:-1), ((xact != null)?xact.xact_type.name:"null"), ((xact != null)?xact.tid:0), ((xact != null)?xact.tdata[0]:0), ((xact != null)?xact.tdest:0)) |
|
|
( xact.operation == 8'h31 || xact.operation==8'h33 ||xact.operation==8'h39 ) |
|
|
( xact.operation == 8'h31 || xact.operation==8'h33 || xact.operation==8'h39 ) |
|
|
( xact.operation==8'h39 ) |
|
|
( xact.operation == 8'h31 || xact.operation==8'h33 || xact.operation==8'h39 ) |
|
|
|
|
`define SVT_DTI_VALID_MASTER_IDX_0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`define SVT_DTI_VALID_SLAVE_IDX_0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
( ( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI1_0) && ( xact.operation==8'h88||xact.operation==8'h89|| xact.operation==8'hB8||xact.operation==8'hB9|| xact.operation==8'hE8||xact.operation==8'hE9 ) ) || ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI2_0) && ( xact.operation==8'h88||xact.operation==8'h89|| xact.operation==8'hB8||xact.operation==8'hB9|| xact.operation==8'hE8||xact.operation==8'hE9|| xact.operation==8'h88||xact.operation==8'h89|| xact.operation==8'hC8||xact.operation==8'hC9 ) ) || ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation==9'h88||xact.operation==9'h89|| xact.operation==9'hB8||xact.operation==9'hB9|| xact.operation==9'hE8||xact.operation==9'hE9|| xact.operation==9'h88||xact.operation==9'h89|| xact.operation==9'hC8||xact.operation==9'hC9|| xact.operation==9'h198||xact.operation==9'h199|| xact.operation==9'h1C8||xact.operation==9'h1C9 ) ) ) ) |
|
|
( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation ==9'h100 ) ) ) |
|
|
( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation ==9'h104 ) ) ) |
|
|
( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation ==9'h105 ) ) ) |
|
|
( (((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI1_0) && ( xact.operation == 8'h80|| xact.operation == 8'h81|| xact.operation == 8'hA0|| xact.operation == 8'hB2|| xact.operation == 8'hB0|| xact.operation == 8'hB1|| xact.operation == 8'hB5|| xact.operation == 8'hE0|| xact.operation == 8'hE1|| xact.operation == 8'h40|| xact.operation == 8'h88|| xact.operation == 8'h89|| xact.operation == 8'hB8|| xact.operation == 8'hB9|| xact.operation == 8'hE8|| xact.operation == 8'hE9|| xact.operation == 8'h41 ) ) || (( xact.port_cfg.dti_version == svt_dti_port_configuration::DTI2_0)&& ( xact.operation == 8'h80|| xact.operation == 8'h81|| xact.operation == 8'hA0|| xact.operation == 8'hB2|| xact.operation == 8'hB0|| xact.operation == 8'hB1|| xact.operation == 8'hB5|| xact.operation == 8'hE0|| xact.operation == 8'hE1|| xact.operation == 8'h40|| xact.operation == 8'h82|| xact.operation == 8'h85|| xact.operation == 8'h90|| xact.operation == 8'h95|| xact.operation == 8'hC0|| xact.operation == 8'hC1|| xact.operation == 8'h88|| xact.operation == 8'h89|| xact.operation == 8'hB8|| xact.operation == 8'hB9|| xact.operation == 8'hE8|| xact.operation == 8'hE9|| xact.operation == 8'hB9|| xact.operation == 8'hE8|| xact.operation == 8'h41|| xact.operation == 8'hC8|| xact.operation == 8'hC9 ) ) || (( xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0)&& ( xact.operation == 9'h80|| xact.operation == 9'h81|| xact.operation == 9'hA0|| xact.operation == 9'hB2|| xact.operation == 9'hB0|| xact.operation == 9'hB1|| xact.operation == 9'hB5|| xact.operation == 9'hE0|| xact.operation == 9'hE1|| xact.operation == 9'h40|| xact.operation == 9'h82|| xact.operation == 9'h85|| xact.operation == 9'h90|| xact.operation == 9'h95|| xact.operation == 9'hC0|| xact.operation == 9'hC1|| xact.operation == 9'h88|| xact.operation == 9'h89|| xact.operation == 9'hB8|| xact.operation == 9'hB9|| xact.operation == 9'hE8|| xact.operation == 9'hE9|| xact.operation == 9'hB9|| xact.operation == 9'hE8|| xact.operation == 9'h41|| xact.operation == 9'hC8|| xact.operation == 9'hC9|| xact.operation == 9'h180|| xact.operation == 9'h190|| xact.operation == 9'h191|| xact.operation == 9'h192|| xact.operation == 9'h195|| xact.operation == 9'h198|| xact.operation == 9'h199|| xact.operation == 9'h1C0|| xact.operation == 9'h1C1|| xact.operation == 9'h1C8|| xact.operation == 9'h1C9 ) ) ) ) |
|
|
( ( (xact.port_cfg.dti_version == svt_dti_port_configuration::DTI1_0) && ( xact.operation == 8'h80 || xact.operation == 8'h81|| xact.operation == 8'hA0|| xact.operation == 8'hB2|| xact.operation == 8'hB0|| xact.operation == 8'hB1|| xact.operation == 8'hB5|| xact.operation == 8'hE0|| xact.operation == 8'hE1|| xact.operation == 8'h40 ) ) || ( (xact.port_cfg.dti_version == svt_dti_port_configuration::DTI2_0 ) && ( xact.operation == 8'h80|| xact.operation == 8'h81|| xact.operation == 8'hA0|| xact.operation == 8'hB2|| xact.operation == 8'hB0|| xact.operation == 8'hB1|| xact.operation == 8'hB5|| xact.operation == 8'hE0|| xact.operation == 8'hE1|| xact.operation == 8'h40|| xact.operation == 8'h82|| xact.operation == 8'h85|| xact.operation == 8'h90|| xact.operation == 8'h95|| xact.operation == 8'hC0|| xact.operation == 8'hC1 ) ) || ( ( xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 ||xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation == 9'h80|| xact.operation == 9'h81|| xact.operation == 9'hA0|| xact.operation == 9'hB2|| xact.operation == 9'hB0|| xact.operation == 9'hB1|| xact.operation == 9'hB5|| xact.operation == 9'hE0|| xact.operation == 9'hE1|| xact.operation == 9'h40|| xact.operation == 9'h82|| xact.operation == 9'h85|| xact.operation == 9'h90|| xact.operation == 9'h95|| xact.operation == 9'hC0|| xact.operation == 9'hC1|| xact.operation == 9'h180|| xact.operation == 9'h190|| xact.operation == 9'h191|| xact.operation == 9'h192|| xact.operation == 9'h195|| xact.operation == 9'h198|| xact.operation == 9'h199|| xact.operation == 9'h1C0|| xact.operation == 9'h1C1|| xact.operation == 9'h1C8|| xact.operation == 9'h1C9 ) ) ) |
|
|
( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI1_0) && (xact.operation ==8'hB2 ||xact.operation==8'hB0 ||xact.operation==8'hB1||xact.operation==8'hB8 ||xact.operation==8'hB9||xact.operation==8'hB5 ||xact.operation==8'h10||xact.operation==8'h30 )) || ( ( xact.port_cfg.dti_version == svt_dti_port_configuration::DTI2_0) && (xact.operation == 8'hB2||xact.operation==8'hB0 ||xact.operation==8'hB1||xact.operation==8'hB8 ||xact.operation==8'hB9||xact.operation==8'hB5 ||xact.operation==8'h10||xact.operation==8'h30 ||xact.operation==8'h81||xact.operation==8'h82 ||xact.operation==8'h85||xact.operation==8'h88 ||xact.operation==8'h89||xact.operation==8'h90 ||xact.operation==8'h95 )) || ( ( xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && (xact.operation == 9'hB2||xact.operation==9'hB0 ||xact.operation==9'hB1||xact.operation==9'hB8 ||xact.operation==9'hB9||xact.operation==9'hB5 ||xact.operation==9'h10||xact.operation==9'h30 ||xact.operation==9'h81||xact.operation==9'h82 ||xact.operation==9'h85||xact.operation==9'h88 ||xact.operation==9'h89||xact.operation==9'h90 ||xact.operation==9'h95 ||xact.operation==9'h190||xact.operation==9'h191 ||xact.operation==9'h192||xact.operation==9'h195 ||xact.operation==9'h198||xact.operation==9'h199 ||xact.operation==9'h110 )) ) |
|
|
( (((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI2_0 ) && ( xact.operation ==8'h81 || xact.operation==8'h85 || xact.operation ==8'h89 || xact.operation==8'h95 || xact.operation ==8'hB1 || xact.operation==8'hB9 || xact.operation ==8'hB5 || xact.operation==8'hC9 || xact.operation ==8'hC1 || xact.operation==8'hE1 || xact.operation ==8'hE9 || xact.operation==8'h41 ) ) || ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0 ) && ( xact.operation ==9'h81 || xact.operation==9'h85 || xact.operation ==9'h89 || xact.operation==9'h95 || xact.operation ==9'hB1 || xact.operation==9'hB9 || xact.operation ==9'hB5 || xact.operation==9'hC9 || xact.operation ==9'hC1 || xact.operation==9'hE1 || xact.operation ==9'hE9 || xact.operation==9'h41 || xact.operation ==9'h191 || xact.operation==9'h195 || xact.operation ==9'h199 || xact.operation==9'h1C1 || xact.operation==9'h1C9 ) ) ) ) |
|
|
( ( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation == 9'h38 || xact.operation==9'h30 || xact.operation == 9'h18 || xact.operation==9'h10 )) || ((xact.port_cfg.dti_version != svt_dti_port_configuration::DTI3_0 && xact.port_cfg.dti_version != svt_dti_port_configuration::DTI4_0) && ( xact.operation == 8'h38 || xact.operation==8'h30 || xact.operation == 8'h18 || xact.operation==8'h10 )) ) ) |
|
|
( ( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation ==9'h18|| xact.operation==9'h38 )) || ((xact.port_cfg.dti_version != svt_dti_port_configuration::DTI3_0 && xact.port_cfg.dti_version != svt_dti_port_configuration::DTI4_0) && ( xact.operation ==8'h18|| xact.operation==8'h38 )) ) ) |
|
|
( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation ==9'h198 || xact.operation==9'h199 || xact.operation ==9'h1C8 || xact.operation==9'h1C9 ) ) ) |
|
|
( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation ==9'h118 || xact.operation ==9'h110 ) ) ) |
|
|
( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation==9'h118 ) ) ) |
|
|
( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation ==9'h47 || xact.operation ==9'h191 || xact.operation ==9'h195 || xact.operation ==9'h199 || xact.operation ==9'h1C1 || xact.operation ==9'h1C9 || xact.operation ==9'h100 || xact.operation ==9'h105 ) ) ) |
|
|
( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation ==9'h190 || xact.operation==9'h191 || xact.operation ==9'h192 || xact.operation==9'h195 || xact.operation ==9'h198 || xact.operation==9'h199 ) ) ) |
|
|
( ( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI1_0) && ( xact.operation == 8'h81|| xact.operation == 8'h89|| xact.operation == 8'hB1|| xact.operation == 8'hB9|| xact.operation == 8'hE1|| xact.operation == 8'hE9|| xact.operation == 8'h41|| xact.operation == 8'hB5 ) ) || ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI2_0 ) && ( xact.operation == 8'h81|| xact.operation == 8'h89|| xact.operation == 8'hB1|| xact.operation == 8'hB9|| xact.operation == 8'hE1|| xact.operation == 8'hE9|| xact.operation == 8'h41|| xact.operation == 8'hB5|| xact.operation == 8'h85|| xact.operation == 8'h95|| xact.operation == 8'hC9|| xact.operation == 8'hC1 ) ) || ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0 ) && ( xact.operation == 9'h81|| xact.operation == 9'h89|| xact.operation == 9'hB1|| xact.operation == 9'hB9|| xact.operation == 9'hE1|| xact.operation == 9'hE9|| xact.operation == 9'h41|| xact.operation == 9'hB5|| xact.operation == 9'h85|| xact.operation == 9'h95|| xact.operation == 9'hC9|| xact.operation == 9'hC1|| xact.operation == 9'h47|| xact.operation == 9'h191||xact.operation == 9'h199|| xact.operation == 9'h1C1|| xact.operation == 9'h1C9|| xact.operation == 9'h195 ) ) ) ) |
|
|
( ( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI1_0) && ( xact.operation ==8'hB2 || xact.operation==8'hB0 || xact.operation ==8'hB1 || xact.operation==8'hB8 || xact.operation ==8'hB9 || xact.operation==8'hB5 ) ) || ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI2_0 ) && ( xact.operation ==8'hB2 || xact.operation==8'hB0 || xact.operation ==8'hB1 || xact.operation==8'hB8 || xact.operation ==8'hB9 || xact.operation==8'hB5 || xact.operation ==8'h81 || xact.operation==8'h82 || xact.operation ==8'h85 || xact.operation==8'h88 || xact.operation ==8'h89 || xact.operation==8'h90 || xact.operation ==8'h95 ) ) || (( xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation ==9'hB2 || xact.operation==9'hB0 || xact.operation ==9'hB1 || xact.operation==9'hB8 || xact.operation ==9'hB9 || xact.operation==9'hB5 || xact.operation ==9'h81 || xact.operation==9'h82 || xact.operation ==9'h85 || xact.operation==9'h88 || xact.operation ==9'h89 || xact.operation==9'h90 || xact.operation ==9'h95|| xact.operation ==9'h190 || xact.operation==9'h191 || xact.operation ==9'h192 || xact.operation==9'h195 || xact.operation ==9'h198 || xact.operation==9'h199 ) ) ) ) |
|
|
2,4,8,16
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
`ifdef SVT_UVM_TECHNOLOGY uvm_object_utils(obj) `elsif SVT_OVM_TECHNOLOGY `ovm_object_utils(obj) `endif |
|
|
(system_monitor_enable|multi_chip_system_monitor_enable)
|
|
|
"system_monitor_enable or multi_chip_system_monitor_enable"
|
|
|
"or multi_chip_system_monitor_enable=1"
|
|
|
`SVT_AXI_MAX_ADDR_WIDTH
| |
Handle of maximum address width supported by each master
|
|
|
128
| |
Handles of infinite snoop response sequeunces running on each master
|
|
|
128
|
|
|
2
|
|
|
`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
|
|
|
|
|
!($cast(chi_node_cfg,downstream_port_cfg[i])) && !($cast(ahb_slave_cfg,downstream_port_cfg[i])) && !($cast(apb_slave_cfg,downstream_port_cfg[i])) |
|
|
!($cast(chi_node_cfg,upstream_port_cfg[i])) && !($cast(axi_port_cfg,upstream_port_cfg[i])) && !($cast(ahb_master_cfg,upstream_port_cfg[i])) && !($cast(ahb_slave_cfg,upstream_port_cfg[i])) && !($cast(apb_master_cfg,upstream_port_cfg[i])) |
|
|
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.
|
|
|
`ifdef CONNECT_TOP_LEVEL_APB_IF_SIGNALS_BASED_ON_PSEL assign svt_apb_if.slave_if[port_num].pclk = pclk; assign svt_apb_if.slave_if[port_num].presetn = presetn; assign svt_apb_if.slave_if[port_num].psel = psel[port_num]; assign svt_apb_if.slave_if[port_num].penable = psel[port_num] ? penable : 1'b0; assign svt_apb_if.slave_if[port_num].pwrite = psel[port_num] ? pwrite : 1'b0; assign svt_apb_if.slave_if[port_num].paddr = psel[port_num] ? paddr : 'h0; assign svt_apb_if.slave_if[port_num].pwdata = psel[port_num] ? pwdata : 'h0; assign svt_apb_if.slave_if[port_num].pstrb = psel[port_num] ? pstrb : 1'b0; assign svt_apb_if.slave_if[port_num].pprot = psel[port_num] ? pprot : 3'h0; `ifdef SVT_APB5_RME_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pnse = psel[port_num] ? pnse : 'h0; `endif assign svt_apb_if.slave_if[port_num].control_puser = psel[port_num] ? control_puser : 'h0; `ifdef SVT_APB5_PAUSER_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pauser = psel[port_num] ? pauser : 'h0; `endif `ifdef SVT_APB5_PWUSER_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pwuser = psel[port_num] ? pwuser : 'h0; `endif `ifdef SVT_APB5_SUBSYS_ID_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].psubsysid = psel[port_num] ? psubsysid : 'h0; `endif `ifdef SVT_APB5_WAKEUP_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pwakeup = psel[port_num] ? pwakeup : 'h0; `endif `ifdef SVT_APB5_PARITY_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].paddrchk = psel[port_num] ? paddrchk : 'h0; assign svt_apb_if.slave_if[port_num].pctrlchk = psel[port_num] ? pctrlchk : 'h0; assign svt_apb_if.slave_if[port_num].pselchk = psel[port_num] ? pselchk : 'h0; assign svt_apb_if.slave_if[port_num].penablechk = psel[port_num] ? penablechk : 'h0; assign svt_apb_if.slave_if[port_num].pwdatachk = psel[port_num] ? pwdatachk : 'h0; assign svt_apb_if.slave_if[port_num].pstrbchk = psel[port_num] ? pstrbchk : 'h0; `ifdef SVT_APB5_PAUSER_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pauserchk = psel[port_num] ? pauserchk : 'h0; `endif `ifdef SVT_APB5_PWUSER_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pwuserchk = psel[port_num] ? pwuserchk : 'h0; `endif `ifdef SVT_APB5_SUBSYS_ID_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].psubsysidchk = psel[port_num] ? psubsysidchk : 'h0; `endif `ifdef SVT_APB5_WAKEUP_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pwakeupchk = psel[port_num] ? pwakeupchk : 'h0; `endif `endif assign prdata[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].prdata : 'h0; assign pready[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pready : 1'b0; assign pslverr[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pslverr : 'h0; `ifdef SVT_APB5_PRUSER_INTERNAL_ENABLE assign pruser[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pruser : 'h0; `endif `ifdef SVT_APB5_PBUSER_INTERNAL_ENABLE assign pbuser[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pbuser : 'h0; `endif `ifdef SVT_APB5_PARITY_INTERNAL_ENABLE assign preadychk[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].preadychk : 'h0; assign pslverrchk[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pslverrchk : 'h0; assign prdatachk[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].prdatachk : 'h0; `ifdef SVT_APB5_PRUSER_INTERNAL_ENABLE assign pruserchk[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pruserchk : 'h0; `endif `ifdef SVT_APB5_PBUSER_INTERNAL_ENABLE assign pbuserchk[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pbuserchk : 'h0; `endif `endif `elsif CONNECT_TOP_LEVEL_APB_IF_SIGNALS_BASED_ON_PSEL_FROM_PASSIVE_SLAVE assign svt_apb_if.slave_if[port_num].pclk = pclk; assign svt_apb_if.slave_if[port_num].presetn = presetn; assign svt_apb_if.slave_if[port_num].psel = psel[port_num]; assign penable = psel[port_num] ? svt_apb_if.slave_if[port_num].penable : 1'b0; assign pwrite = psel[port_num] ? svt_apb_if.slave_if[port_num].pwrite : 1'b0; assign paddr = psel[port_num] ? svt_apb_if.slave_if[port_num].paddr : 'h0; assign pwdata = psel[port_num] ? svt_apb_if.slave_if[port_num].pwdata : 'h0; assign pstrb = psel[port_num] ? svt_apb_if.slave_if[port_num].pstrb : 1'b0; assign pprot = psel[port_num] ? svt_apb_if.slave_if[port_num].pprot : 3'h0; `ifdef SVT_APB5_RME_INTERNAL_ENABLE assign pnse = psel[port_num] ? svt_apb_if.slave_if[port_num].pnse : h0; `endif assign control_puser = psel[port_num] ? svt_apb_if.slave_if[port_num].control_puser : 'h0; `ifdef SVT_APB5_PAUSER_INTERNAL_ENABLE assign pauser = psel[port_num] ? svt_apb_if.slave_if[port_num].pauser : 'h0; `endif `ifdef SVT_APB5_PWUSER_INTERNAL_ENABLE assign pwuser = psel[port_num] ? svt_apb_if.slave_if[port_num].pwuser : 'h0; `endif `ifdef SVT_APB5_SUBSYS_ID_INTERNAL_ENABLE assign psubsysid = psel[port_num] ? svt_apb_if.slave_if[port_num].psubsysid : 'h0; `endif `ifdef SVT_APB5_WAKEUP_INTERNAL_ENABLE assign pwakeup = psel[port_num] ? svt_apb_if.slave_if[port_num].pwakeup : 'h0; `endif `ifdef SVT_APB5_PARITY_INTERNAL_ENABLE assign paddrchk = psel[port_num] ? svt_apb_if.slave_if[port_num].paddrchk : 'h0; assign pctrlchk = psel[port_num] ? svt_apb_if.slave_if[port_num].pctrlchk : 'h0; assign pselchk = psel[port_num] ? svt_apb_if.slave_if[port_num].pselchk : 'h0; assign penablechk = psel[port_num] ? svt_apb_if.slave_if[port_num].penablechk : 'h0; assign pwdatachk = psel[port_num] ? svt_apb_if.slave_if[port_num].pwdatachk : 'h0; assign pstrbchk = psel[port_num] ? svt_apb_if.slave_if[port_num].pstrbchk : 'h0; `ifdef SVT_APB5_PAUSER_INTERNAL_ENABLE assign pauserchk = psel[port_num] ? svt_apb_if.slave_if[port_num].pauserchk : 'h0; `endif `ifdef SVT_APB5_PWUSER_INTERNAL_ENABLE assign pwuserchk = psel[port_num] ? svt_apb_if.slave_if[port_num].pwuserchk : 'h0; `endif `ifdef SVT_APB5_SUBSYS_ID_INTERNAL_ENABLE assign psubsysidchk = psel[port_num] ? svt_apb_if.slave_if[port_num].psubsysidchk : 'h0; `endif `ifdef SVT_APB5_WAKEUP_INTERNAL_ENABLE assign pwakeupchk = psel[port_num] ? svt_apb_if.slave_if[port_num].pwakeupchk : 'h0; `endif `endif assign prdata[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].prdata : 'h0; assign pready[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pready : 1'b0; assign pslverr[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pslverr : 'h0; `ifdef SVT_APB5_PRUSER_INTERNAL_ENABLE assign pruser[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pruser : 'h0; `endif `ifdef SVT_APB5_PBUSER_INTERNAL_ENABLE assign pbuser[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pbuser : 'h0; `endif `ifdef SVT_APB5_PARITY_INTERNAL_ENABLE assign preadychk[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].preadychk : 'h0; assign pslverrchk[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pslverrchk : 'h0; assign prdatachk[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].prdatachk : 'h0; `ifdef SVT_APB5_PRUSER_INTERNAL_ENABLE assign pruserchk[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pruserchk : 'h0; `endif `ifdef SVT_APB5_PBUSER_INTERNAL_ENABLE assign pbuserchk[port_num] = psel[port_num] ? svt_apb_if.slave_if[port_num].pbuserchk : 'h0; `endif `endif `else assign svt_apb_if.slave_if[port_num].pclk = pclk; assign svt_apb_if.slave_if[port_num].presetn = presetn; assign svt_apb_if.slave_if[port_num].psel = psel[port_num]; assign svt_apb_if.slave_if[port_num].penable = penable; assign svt_apb_if.slave_if[port_num].pwrite = pwrite; assign svt_apb_if.slave_if[port_num].paddr = paddr; assign svt_apb_if.slave_if[port_num].pwdata = pwdata; assign svt_apb_if.slave_if[port_num].pstrb = pstrb; assign svt_apb_if.slave_if[port_num].pprot = pprot; `ifdef SVT_APB5_RME_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pnse = pnse; `endif assign svt_apb_if.slave_if[port_num].control_puser = control_puser; `ifdef SVT_APB5_PAUSER_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pauser = pauser; `endif `ifdef SVT_APB5_PWUSER_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pwuser = pwuser; `endif `ifdef SVT_APB5_SUBSYS_ID_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].psubsysid = psubsysid; `endif `ifdef SVT_APB5_WAKEUP_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pwakeup = pwakeup; `endif `ifdef SVT_APB5_PARITY_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].paddrchk = paddrchk; assign svt_apb_if.slave_if[port_num].pctrlchk = pctrlchk; assign svt_apb_if.slave_if[port_num].pselchk = pselchk; assign svt_apb_if.slave_if[port_num].penablechk = penablechk; assign svt_apb_if.slave_if[port_num].pwdatachk = pwdatachk; assign svt_apb_if.slave_if[port_num].pstrbchk = pstrbchk; `ifdef SVT_APB5_PAUSER_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pauserchk = pauserchk; `endif `ifdef SVT_APB5_PWUSER_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pwuserchk = pwuserchk; `endif `ifdef SVT_APB5_SUBSYS_ID_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].psubsysidchk = psubsysidchk; `endif `ifdef SVT_APB5_WAKEUP_INTERNAL_ENABLE assign svt_apb_if.slave_if[port_num].pwakeupchk = pwakeupchk; `endif `endif assign prdata[port_num] = svt_apb_if.slave_if[port_num].prdata; assign pready[port_num] = svt_apb_if.slave_if[port_num].pready; assign pslverr[port_num] = svt_apb_if.slave_if[port_num].pslverr; `ifdef SVT_APB5_PRUSER_INTERNAL_ENABLE assign pruser[port_num] = svt_apb_if.slave_if[port_num].pruser; `endif `ifdef SVT_APB5_PBUSER_INTERNAL_ENABLE assign pbuser[port_num] = svt_apb_if.slave_if[port_num].pbuser; `endif `ifdef SVT_APB5_PARITY_INTERNAL_ENABLE assign preadychk[port_num] = svt_apb_if.slave_if[port_num].preadychk; assign pslverrchk[port_num] = svt_apb_if.slave_if[port_num].pslverrchk; assign prdatachk[port_num] = svt_apb_if.slave_if[port_num].prdatachk; `ifdef SVT_APB5_PRUSER_INTERNAL_ENABLE assign pruserchk[port_num] = svt_apb_if.slave_if[port_num].pruserchk; `endif `ifdef SVT_APB5_PBUSER_INTERNAL_ENABLE assign pbuserchk[port_num] = svt_apb_if.slave_if[port_num].pbuserchk; `endif `endif `endif | |
APB Interface provides implicit connection between single master and multiple slaves by default. Below macro SVT_APB_DISCONNECT_TOP_LEVEL_APB_IF_SIGNALS can be defined in order to disable this implicit connection. Following connectivity between master and slave is further divided into 3 different topology. 1) CONNECT_TOP_LEVEL_APB_IF_SIGNALS_BASED_ON_PSEL - master signals are driven only to the slave which is selected by psel. Other slaves will be driven 0 for all signals. 2) CONNECT_TOP_LEVEL_APB_IF_SIGNALS_BASED_ON_PSEL_FROM_PASSIVE_SLAVE - this connection is only applicable for passive mode. Here passive slave signals are connected to passive master ports. 3) if none of the above two macros are defined then each slave receives signals driven by the master directly.
|
|
|
rsvd_sbz[3:0]
|
|
|
rsvd_sbz[3:0]
|
|
|
|
`define var``_``val |
|
|
1
|
|
|
1
|
|
|
0
| |
Used to indicate the status of the sysco interface state machine.
|
|
|
3
|
|
|
2
|
|
|
0
| |
Max delay value of SYSCOACK signal to get asserted
|
|
|
0
| |
Max delay value of SYSCOACK signal to get deasserted
|
|
|
0
| |
Max delay value of SYSCOREQ signal to get asserted
|
|
|
0
| |
Max delay value of SYSCOREQ signal to get deasserted
|
|
|
if (settings_array.size() != num_bus_masters) begin if (!silent) begin svt_warning("is_valid", $sformatf("Invalid size('d%0d) for settings_array array, must be equal to num_bus_masters('d%0d).", settings_array.size(), num_bus_masters)); end is_valid = 0; end else begin foreach (settings_array[i]) begin if (settings_array[i] < min_value) begin svt_warning("is_valid", $sformatf("settings_array['d%0d] is set to 'd%0d. This cannot be lesser than the minimum valid value min_value.", i, settings_array[i])); is_valid = 0; end if (settings_array[i] > max_value) begin svt_warning("is_valid", $sformatf("settings_array['d%0d] is set to 'd%0d. This cannot be greater than the maximum valid value max_value(`max_value_string).", i, settings_array[i])); is_valid = 0; end end end |
|
|
0
|
|
|
`ifdef SVT_VMM_TECHNOLOGY xact.notify.timestamp(vmm_data::ENDED) `else xact.get_end_time() `endif |
|
|
`ifdef SVT_VMM_TECHNOLOGY xact.notify.timestamp(vmm_data::STARTED) `else xact.get_begin_time() `endif |
|
|
4
|
|
|
|
|
port_type``_if_bus_mp[port_num].ahb_bus_cb.signal_name |
|
|
begin int i = 0; for (i=0; i signal_name``_sampled_value[i] = SVT_AHB_SYSTEM_CB_SIGNAL(master,i,signal_name); end end end | |
This macro samples a given signal for all bus masters except dummy master.
|
|
|
begin int i = 0; for (i=0; i signal_name``_sampled_value[i] = SVT_AHB_SYSTEM_CB_SIGNAL(slave,i,signal_name); end end end | |
This macro samples a given signal for all bus slaves except default slave.
|
|
|
begin multi_hsel_sampled_value[signal_num] = SVT_AHB_SYSTEM_CB_SIGNAL(slave,port_num,signal_name[signal_num]); end | |
This macro samples each HSEL signal oof specific Slave supporting multiple HSEL except default slave.
|
|
|
port_type``_if_monitor_mp[port_num].ahb_monitor_cb.signal_name | |
This macro can be used to drive/sample a given master/slave signal.
|
|
|
port_type``_if_async_mp[port_num].signal_name |
|
|
ahb_if_bus_mon_mp.ahb_monitor_cb.signal_name``_bus |
|
|
ahb_if_bus_mon_mp.signal_name``_bus |
|
|
/** @cond PRIVATE **/ stats_name = new("AMBA3:library:SVT_LIC_VERSION_PROXY",SVT_DATA_UTIL_ARG_TO_STRING(stats_name), group_name,sub_group_name, {stats_description}, {reference},svt_err_check_stats::ERROR,0,1 ); /** @endcond */ register_check(stats_name); SVT_ERR_CHECK_STATS_COV_EXTENDED_CLASS_OVERRIDE(stats_name) stats_name.set_default_pass_effect(svt_err_check_stats::EXPECTED); |
|
|
/** @cond PRIVATE **/ stats_name = new("AMBA3:library:SVT_LIC_VERSION_PROXY",SVT_DATA_UTIL_ARG_TO_STRING(stats_name), group_name,sub_group_name, {stats_description}, "",svt_err_check_stats::WARNING,0,1 ); /** @endcond */ register_check(stats_name); SVT_ERR_CHECK_STATS_COV_EXTENDED_CLASS_OVERRIDE(stats_name) stats_name.set_default_pass_effect(svt_err_check_stats::EXPECTED); |
|
|
ahb_if_bus_mp.signal_name``_bus |
|
|
{SVT_AHB_PRINT_PREFIX1(xact),$sformatf("with SYSTEM ID: 'd%0d; @%0d; ",(((xact != null) && (xact.cfg != null) && (xact.cfg.sys_cfg != null) ? xact.cfg.sys_cfg.system_id :-1)),xact)} |
|
|
begin int i = 0; if (sys_cfg.ahb_lite) begin signal_name``_sampled_value[0] = SVT_AHB_SYSTEM_INPUT_SIGNAL(master,0,signal_name); end else begin for (i=0; i signal_name``_sampled_value[i] = SVT_AHB_SYSTEM_INPUT_SIGNAL(master,i,signal_name); end end end end |
|
|
begin int i = 0; for (i=0; i signal_name``_sampled_value[i] = SVT_AHB_SYSTEM_INPUT_SIGNAL(slave,i,signal_name); end end end |
|
|
if (enablefieldwdth > 0) begin `SVT_DATA_UTIL_COMPARE_BITVEC_SLICE(fieldname,fieldmaxwidth,enablefieldwdth-1,0) end else begin `SVT_DATA_UTIL_COMPARE_BITVEC(fieldname) end |
|
|
if (enablefieldwdth > 0) begin `SVT_DATA_UTIL_COMPARE_BITVEC_SLICE_ARRAY(fieldname,compareupto,fieldmaxwidth,enablefieldwdth-1,0) end else begin `SVT_DATA_UTIL_COMPARE_INT_SIZE_ARRAY(fieldname) end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`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 |
|
|
if ((new_inst == null) || (new_inst.sys_cfg_obj.size() == 0) || (new_inst.sys_cfg_obj[0] == null)) begin if ((this.sys_cfg_obj.size() == 0) || (this.sys_cfg_obj[0] == null)) begin sys_cfg_obj``_factory = null; end else begin sys_cfg_obj``_factory= this.sys_cfg_obj[0]; end end else begin sys_cfg_obj``_factory = new_inst.sys_cfg_obj[0]; end `SVT_DATA_UTIL_COPY_VMM_DATA_ARRAY(sys_cfg_obj,sys_cfg_obj.size(), sys_cfg_obj``_factory) |
|
|
`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_SAFE_SET_VMM_DATA_ARRAY_ELEM_NOP(arrname,arrsize) `SVT_DATA_UTIL_SAFE_SET_VMM_DATA_ARRAY_ELEM_SIZE_BASE(arrname,arrsize) SVT_AMBA_DATA_UTIL_SAFE_SET_VMM_DATA_ARRAY_ELEM_EXISTS_FACTORY_BASE(arrname,arrsize,objtype) |
|
|
`SVT_DATA_UTIL_EXISTS_FIELDNAME(arrname) : if (!((array_ix >= 0) && (array_ix < arrsize))) set_prop_val = 0; else if ((prop_val == 0) && (arrname[array_ix] != null)) /* 'exists == 0' indicates the caller wants this to be null */ arrname[array_ix] = null; else if ((prop_val == 1) && (arrname[array_ix] == null)) /* 'exists == 1' indicates the caller wants this to be non-null */ `ifdef SVT_VMM_TECHNOLOGY arrname[array_ix] = objtype::create_instance(this, $sformatf("arrname[%0d]",array_ix), `__FILE__, `__LINE__); `else arrname[array_ix] = objtype::type_id::create($sformatf("arrname[%0d]",array_ix)); `endif |
|
|
SVT_AMBA_DATA_UTIL_SAFE_SET_VMM_DATA_ARRAY_ELEM_BASE(arrname,arrsize,objtype) `SVT_DATA_UTIL_SAFE_SET_ARRAY_ELEM_RAND_MODE(arrname,prop_val,arrsize) |
|
|
`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 |
|
|
`ifdef SVT_VMM_TECHNOLOGY xact.notify.timestamp(vmm_data::ENDED) `else xact.get_end_time() `endif |
|
|
`ifdef SVT_VMM_TECHNOLOGY xact.notify.timestamp(vmm_data::STARTED) `else xact.get_begin_time() `endif |
|
|
2
|
|
|
|
6
|
|
|
slave_0,slave_1,slave_2,slave_3,slave_4,slave_5
|
|
|
|
|
|
svt_amba_multi_chip_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 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 |
|
|
option.per_instance = 1; apb_state : coverpoint {cov_xact_psel, cov_xact_penable} { bins IDLE_STATE = {2'b00}; bins SETUP_STATE = {2'b10}; bins ACCESS_STATE = {2'b11}; } |
|
|
{SVT_APB_PRINT_PREFIX(xact),$sformatf("with SYSTEM ID: 'd%0d; @%0d; ",(((xact != null) && (xact.cfg != null) ? xact.cfg.system_id :-1)),xact)} |
|
|
|
|
|
|
{SVT_APB_PRINT_PREFIX(xact),$sformatf("with SYSTEM ID: 'd%0d; @%0d; ",(((xact != null) && (xact.cfg != null) && (xact.cfg.sys_cfg != null) ? xact.cfg.sys_cfg.system_id :-1)),xact)} |
|
|
if (enablefieldwdth > 0) begin `SVT_DATA_UTIL_COMPARE_BITVEC_SLICE(fieldname,fieldmaxwidth,enablefieldwdth-1,0) end else begin `SVT_DATA_UTIL_COMPARE_BITVEC(fieldname) end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`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
|
|
|
(xact_type == COHERENT) && ( (coherent_xact_type == CLEANUNIQUE) || (coherent_xact_type == MAKEUNIQUE) || (coherent_xact_type == CLEANSHARED) || (coherent_xact_type == CLEANINVALID) || (coherent_xact_type == CLEANSHAREDPERSIST) || (coherent_xact_type == MAKEINVALID) ) |
|
|
28
|
|
|
29
|
|
|
( (xact_type == COHERENT) && (coherent_xact_type == CMO) ) |
|
|
SVT_AXI_MASTER_DRIVE_SIGNAL(tdata,{`SVT_AXI_MAX_TDATA_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_MAX_TDATA_WIDTH{1'b``disable_sig_val}},tdata_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(tstrb,{`SVT_AXI_TSTRB_WIDTH{1'b``enable_sig_val}} ,{`SVT_AXI_TSTRB_WIDTH{1'b``disable_sig_val}} ,tstrb_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(tkeep,{`SVT_AXI_TKEEP_WIDTH{1'b``enable_sig_val}} ,{`SVT_AXI_TKEEP_WIDTH{1'b``disable_sig_val}} ,tkeep_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(tid ,{`SVT_AXI_MAX_TID_WIDTH{1'b``enable_sig_val}} ,{`SVT_AXI_MAX_TID_WIDTH{1'b``disable_sig_val}} ,tid_enable ) SVT_AXI_MASTER_DRIVE_SIGNAL(tdest,{`SVT_AXI_MAX_TDEST_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_MAX_TDEST_WIDTH{1'b``disable_sig_val}},tdest_enable) `ifdef SVT_AXI5_STREAM_CHECK_TYPE_INTERNAL_ENABLE SVT_AXI_MASTER_DRIVE_SIGNAL(tdatachk,{CEIL(`SVT_AXI_MAX_TDATA_WIDTH,8){1'b``enable_sig_val}},{CEIL(`SVT_AXI_MAX_TDATA_WIDTH,8){1'b``disable_sig_val}},tdata_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(tstrbchk,{CEIL(`SVT_AXI_TSTRB_WIDTH,8){1'b``enable_sig_val}} ,{CEIL(`SVT_AXI_TSTRB_WIDTH,8){1'b``disable_sig_val}} ,tstrb_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(tkeepchk,{CEIL(`SVT_AXI_TKEEP_WIDTH,8){1'b``enable_sig_val}} ,{CEIL(`SVT_AXI_TKEEP_WIDTH,8){1'b``disable_sig_val}} ,tkeep_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(tidchk ,{CEIL(`SVT_AXI_MAX_TID_WIDTH,8){1'b``enable_sig_val}} ,{CEIL(`SVT_AXI_MAX_TID_WIDTH,8){1'b``disable_sig_val}} ,tid_enable ) SVT_AXI_MASTER_DRIVE_SIGNAL(tdestchk,{CEIL(`SVT_AXI_MAX_TDEST_WIDTH,8){1'b``enable_sig_val}},{CEIL(`SVT_AXI_MAX_TDEST_WIDTH,8){1'b``disable_sig_val}},tdest_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(tuserchk,{CEIL(`SVT_AXI_MAX_TUSER_WIDTH,8){1'b``enable_sig_val}},{CEIL(`SVT_AXI_MAX_TUSER_WIDTH,8){1'b``disable_sig_val}},tuser_enable) `endif SVT_AXI_MASTER_DRIVE_SIGNAL(tuser,{`SVT_AXI_MAX_TUSER_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_MAX_TUSER_WIDTH{1'b``disable_sig_val}},tuser_enable) |
|
|
`SVT_DATA_UTIL_IS_VALID_SUFFIX_INT_W_CONST(master_cfg[i].``param, ic_cfg.slave_cfg[i].``param, $psprintf(" based on master_cfg['d%0d].``param('d%0d) and ic_cfg.slave_cfg['d%0d].``param('d%0d) which should match", i,master_cfg[i].``param,i,ic_cfg.slave_cfg[i].``param)) |
|
|
`SVT_DATA_UTIL_IS_VALID_SUFFIX_INT_W_CONST(slave_cfg[i].``param, ic_cfg.master_cfg[i].``param, $psprintf(" based on slave_cfg['d%0d].``param('d%0d) and ic_cfg.master_cfg['d%0d].``param('d%0d) which should match", i,master_cfg[i].``param,i,ic_cfg.slave_cfg[i].``param)) |
|
|
0
|
|
|
`ifdef SVT_VMM_TECHNOLOGY if (do_what == DO_COMPARE) begin if (!svt_axi_fifo_mem_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_VMM_TECHNOLOGY if (do_what == DO_COPY) begin svt_axi_fifo_mem_copy_hook(this.__vmm_rhs); end `endif | |
Add some customized logic to copy the actual memory elements
|
|
|
`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 |
|
|
((cfg.axi_interface_type != svt_axi_port_configuration::AXI4) || ((cfg.axi_interface_category != svt_axi_port_configuration::``interface_category) && (cfg.axi_interface_type == svt_axi_port_configuration::AXI4))) |
|
|
((cfg.axi_interface_type != svt_axi_port_configuration::AXI4) || ((cfg.axi_interface_category != svt_axi_port_configuration::``interface_category) && (cfg.axi_interface_type == svt_axi_port_configuration::AXI4))) |
|
|
|
`ifdef SVT_UVM_TECHNOLOGY svt_axi_ic_snoop_input_port_type `elsif SVT_OVM_TECHNOLOGY svt_axi_ic_snoop_input_port_type `else svt_axi_ic_snoop_input_port_type `endif |
|
|
port_cfg.axi_interface_type
|
|
|
(xact.xact_type == svt_axi_transaction::COHERENT) && ( (xact.coherent_xact_type == svt_axi_transaction::READNOSNOOP) || (xact.coherent_xact_type == svt_axi_transaction::READONCE) || (xact.coherent_xact_type == svt_axi_transaction::READSHARED) || (xact.coherent_xact_type == svt_axi_transaction::READCLEAN) || (xact.coherent_xact_type == svt_axi_transaction::READNOTSHAREDDIRTY) || (xact.coherent_xact_type == svt_axi_transaction::READUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::CLEANUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::MAKEUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::CLEANSHARED) || `ifdef SVT_ACE5_ENABLE (xact.coherent_xact_type == svt_axi_transaction::CLEANSHAREDPERSIST) || (xact.coherent_xact_type == svt_axi_transaction::READONCEMAKEINVALID) || (xact.coherent_xact_type == svt_axi_transaction::READONCECLEANINVALID) || `endif (xact.coherent_xact_type == svt_axi_transaction::CLEANINVALID) || (xact.coherent_xact_type == svt_axi_transaction::MAKEINVALID) || (xact.coherent_xact_type == svt_axi_transaction::DVMCOMPLETE) || (xact.coherent_xact_type == svt_axi_transaction::DVMMESSAGE) || (xact.coherent_xact_type == svt_axi_transaction::READBARRIER) ) |
|
|
(xact.xact_type == svt_axi_transaction::COHERENT) && ( (xact.coherent_xact_type == svt_axi_transaction::WRITENOSNOOP) || `ifdef SVT_AXI_WRITENOSNPFULL_XACT_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITENOSNPFULL) || `endif (xact.coherent_xact_type == svt_axi_transaction::WRITELINEUNIQUE) || `ifdef SVT_ACE5_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEPTLSTASH) || (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEFULLSTASH) || (xact.coherent_xact_type == svt_axi_transaction::STASHONCEUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::STASHONCESHARED) || (xact.coherent_xact_type == svt_axi_transaction::STASHTRANSLATION) || (xact.coherent_xact_type == svt_axi_transaction::CMO) || (xact.coherent_xact_type == svt_axi_transaction::WRITEPTLCMO) || (xact.coherent_xact_type == svt_axi_transaction::WRITEFULLCMO) || `ifdef SVT_AXI_WRITE_DEFERRABLE_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITEDEFERRABLE) || `endif `ifdef SVT_AXI_PREFETCH_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::PREFETCH) || `endif `ifdef SVT_AXI_WRITE_ZERO_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITEZERO) || `endif `endif (xact.coherent_xact_type == svt_axi_transaction::WRITEBARRIER) || (xact.coherent_xact_type == svt_axi_transaction::WRITECLEAN) || (xact.coherent_xact_type == svt_axi_transaction::WRITEBACK) || (xact.coherent_xact_type == svt_axi_transaction::EVICT) || (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::WRITEEVICT) ) |
|
|
if (SVT_AXI_MASTER_IS_SIGNAL_ENABLED(axi_signal_enable)) prop_name = observed_val; else prop_name = default_val; |
|
|
((cfg.axi_interface_type != svt_axi_port_configuration::AXI4) || ((cfg.axi_interface_category != svt_axi_port_configuration::``interface_category) && (cfg.axi_interface_type == svt_axi_port_configuration::AXI4))) |
|
|
if (suspended_snoop_xacts.size())begin driver_mp.axi_master_cb.acready <= 1'b0; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_master_cb.acreadychk <= 1'b1; end else begin driver_mp.axi_master_cb.acready <= val; end |
|
|
if (SVT_AXI_MASTER_IS_SIGNAL_ENABLED(sig_enable)) driver_mp.axi_master_cb.sig_name <= enable_sig_val; else driver_mp.axi_master_cb.sig_name <= disable_sig_val; |
|
|
if (SVT_AXI_MASTER_IS_SIGNAL_ENABLED(axi_signal_enable)) begin if(!($cast(prop_name,observed_val))) svt_fatal("Failed when attempting to cast"); end else prop_name = default_val; |
|
|
`ifdef SVT_UVM_TECHNOLOGY svt_axi_master_input_port_type `elsif SVT_OVM_TECHNOLOGY svt_axi_master_input_port_type `else svt_axi_master_input_port_type `endif |
|
|
`ifdef SVT_UVM_TECHNOLOGY svt_axi_master_input_port_type `elsif SVT_OVM_TECHNOLOGY svt_axi_master_input_port_type `else svt_axi_master_input_port_type `endif |
|
|
(cfg.axi_interface_type != svt_axi_port_configuration::AXI4_LITE) && ( (cfg.axi_interface_type != svt_axi_port_configuration::AXI4) || (cfg.axi_signal == 1) ) |
|
|
((xact.xact_type == svt_axi_transaction::READ) || (( xact.xact_type == svt_axi_transaction::COHERENT) && ((xact.coherent_xact_type == svt_axi_transaction::READNOSNOOP) || (xact.coherent_xact_type == svt_axi_transaction::READONCE) || (xact.coherent_xact_type == svt_axi_transaction::READONCECLEANINVALID) || (xact.coherent_xact_type == svt_axi_transaction::READONCEMAKEINVALID) || (xact.coherent_xact_type == svt_axi_transaction::READSHARED) || (xact.coherent_xact_type == svt_axi_transaction::READCLEAN) || (xact.coherent_xact_type == svt_axi_transaction::READNOTSHAREDDIRTY) || (xact.coherent_xact_type == svt_axi_transaction::READUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::CLEANUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::MAKEUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::CLEANSHARED) || (xact.coherent_xact_type == svt_axi_transaction::CLEANSHAREDPERSIST) || (xact.coherent_xact_type == svt_axi_transaction::CLEANINVALID) || (xact.coherent_xact_type == svt_axi_transaction::MAKEINVALID) || (xact.coherent_xact_type == svt_axi_transaction::DVMCOMPLETE) || (xact.coherent_xact_type == svt_axi_transaction::DVMMESSAGE) || (xact.coherent_xact_type == svt_axi_transaction::READBARRIER)))) |
|
|
xact_event_pool = xact.get_event_pool(); xact_ev = xact_event_pool.get(event_name); xact_ev.wait_trigger(); |
|
|
uvm_event_pool xact_event_pool; uvm_event xact_ev; |
|
|
if ((cfg.axi_interface_type == svt_axi_port_configuration::AXI4) && (cfg.axi_interface_category == svt_axi_port_configuration::``interface_category_disable)) begin observed_``sg_name = 1'b0; end else begin observed_``sg_name = monitor_mp.axi_monitor_cb.``sg_name; end |
|
|
((xact.xact_type == svt_axi_transaction::WRITE) || ((( xact.xact_type == svt_axi_transaction::COHERENT) && ((xact.coherent_xact_type == svt_axi_transaction::WRITENOSNOOP)|| (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUE)|| (xact.coherent_xact_type == svt_axi_transaction::WRITELINEUNIQUE)|| `ifdef SVT_ACE5_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEPTLSTASH) || (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEFULLSTASH) || (xact.coherent_xact_type == svt_axi_transaction::STASHONCEUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::STASHONCESHARED) || (xact.coherent_xact_type == svt_axi_transaction::STASHTRANSLATION) || (xact.coherent_xact_type == svt_axi_transaction::CMO) || (xact.coherent_xact_type == svt_axi_transaction::WRITEPTLCMO) || (xact.coherent_xact_type == svt_axi_transaction::WRITEFULLCMO) || `ifdef SVT_AXI_WRITE_DEFERRABLE_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITEDEFERRABLE) || `endif `ifdef SVT_AXI_PREFETCH_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::PREFETCH) || `endif `ifdef SVT_AXI_WRITE_ZERO_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITEZERO) || `endif `ifdef SVT_AXI_WRITENOSNPFULL_XACT_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITENOSNPFULL) || `endif `endif (xact.coherent_xact_type == svt_axi_transaction::WRITECLEAN)|| (xact.coherent_xact_type == svt_axi_transaction::WRITEBACK)|| (xact.coherent_xact_type == svt_axi_transaction::EVICT)|| (xact.coherent_xact_type == svt_axi_transaction::WRITEEVICT)|| (xact.coherent_xact_type == svt_axi_transaction::WRITEBARRIER))))) |
|
|
|
|
|
|
|
|
|
|
1
|
|
|
32
|
|
|
2
|
|
|
|
|
`ifdef SVT_UVM_TECHNOLOGY `elsif SVT_OVM_TECHNOLOGY `else if (do_what == DO_COMPARE) begin if (!svt_axi_passive_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_passive_cache_copy_hook(this.__vmm_rhs); end `endif | |
Add some customized logic to copy the actual memory elements
|
|
|
0
|
|
|
0
|
|
|
if (SVT_AXI_PORT_MONITOR_IS_SIGNAL_ENABLED(axi_signal_enable)) prop_name = observed_val; else prop_name = default_val; |
|
|
if (SVT_AXI_PORT_MONITOR_IS_SIGNAL_ENABLED(axi_signal_enable)) begin if(!($cast(prop_name,observed_val))) svt_error("SVT_AXI_PORT_MONITOR_ENUM_ASSIGN_SIGNAL_VAL",{"Failed to cast in macro for signal observed_val to prop_name"}); end else prop_name = default_val; |
|
|
(cfg.axi_interface_type != svt_axi_port_configuration::AXI4_LITE) && ( (cfg.axi_interface_type != svt_axi_port_configuration::AXI4) || (cfg.axi_signal_enable == 1) ) |
|
|
(xact.transmitted_channel == svt_axi_transaction::READ) |
|
|
if ((cfg.axi_interface_type == svt_axi_port_configuration::AXI4) && (cfg.axi_interface_category == svt_axi_port_configuration::``interface_category_disable)) begin observed_``sg_name = 1'b0; end else begin observed_``sg_name = monitor_mp.axi_monitor_cb.``sg_name; end |
|
|
(xact.transmitted_channel == svt_axi_transaction::WRITE) |
|
|
1
|
|
|
driver_mp.axi_master_cb.araddr <= {`SVT_AXI_MAX_ADDR_WIDTH{1'b``enable_sig_val}}; driver_mp.axi_master_cb.arvmidext <= {SVT_AXI_MAX_VMIDEXT_WIDTH{1'b``enable_sig_val}}; SVT_AXI_MASTER_DRIVE_SIGNAL(arid,{`SVT_AXI_MAX_ID_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_MAX_ID_WIDTH{1'b``disable_sig_val}},arid_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(arlen,{`SVT_AXI_MAX_BURST_LENGTH_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_MAX_BURST_LENGTH_WIDTH{1'b``disable_sig_val}},arlen_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(arsize,{`SVT_AXI_SIZE_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_SIZE_WIDTH{1'b``disable_sig_val}},arsize_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(arburst,{`SVT_AXI_BURST_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_BURST_WIDTH{1'b``disable_sig_val}},arburst_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(arlock,{`SVT_AXI_LOCK_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_LOCK_WIDTH{1'b``disable_sig_val}},arlock_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(arcache,{`SVT_AXI_CACHE_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_CACHE_WIDTH{1'b``disable_sig_val}},arcache_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(arprot,{`SVT_AXI_PROT_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_PROT_WIDTH{1'b``disable_sig_val}},arprot_enable) `ifdef SVT_AXI_QVN_ENABLE SVT_AXI_MASTER_DRIVE_SIGNAL(arvnet,{`SVT_AXI_QVN_ARVNET_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_QVN_ARVNET_WIDTH{1'b``disable_sig_val}},qvn_enable) `endif `ifdef SVT_ACE5_ENABLE driver_mp.axi_master_cb.armpam <= {`SVT_AXI_MAX_MPAM_WIDTH{1'b``enable_sig_val}}; SVT_AXI_MASTER_DRIVE_SIGNAL(aridunq,1'b``enable_sig_val,1'b``disable_sig_val,unique_id_enable) driver_mp.axi_master_cb.arloop <= {`SVT_AXI_MAX_LOOP_R_WIDTH{1'b``enable_sig_val}}; driver_mp.axi_master_cb.arnsaid <= {`SVT_AXI_MAX_NSAID_WIDTH{1'b``enable_sig_val}}; if(cfg.rdata_chunking_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(archunken,1'b``enable_sig_val,1'b``disable_sig_val,rdata_chunking_enable) `endif if((cfg.axi_interface_type == svt_axi_port_configuration::AXI4) || (cfg.axi_interface_type == svt_axi_port_configuration::AXI_ACE) || (cfg.axi_interface_type == svt_axi_port_configuration::ACE_LITE)) begin if(cfg.arqos_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(arqos,{`SVT_AXI_QOS_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_QOS_WIDTH{1'b``disable_sig_val}},arqos_enable) if(cfg.arregion_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(arregion,{`SVT_AXI_REGION_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_REGION_WIDTH{1'b``disable_sig_val}},arregion_enable) end else begin driver_mp.axi_master_cb.arqos <= `SVT_AXI_QOS_WIDTH'bz; driver_mp.axi_master_cb.arregion <= `SVT_AXI_REGION_WIDTH'bz; end if (cfg.aruser_enable) begin driver_mp.axi_master_cb.aruser <= {`SVT_AXI_MAX_ADDR_USER_WIDTH{1'b``enable_sig_val}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_master_cb.aruserchk <= ~{CEIL(`SVT_AXI_MAX_ADDR_USER_WIDTH,8){1'b``enable_sig_val}}; end else begin driver_mp.axi_master_cb.aruser <= {`SVT_AXI_MAX_ADDR_USER_WIDTH{1'bz}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_master_cb.aruserchk <= {CEIL(`SVT_AXI_MAX_ADDR_USER_WIDTH,8){1'bz}}; end |
|
|
driver_mp.axi_slave_cb.rid <= {`SVT_AXI_MAX_ID_WIDTH{1'b``val}}; driver_mp.axi_slave_cb.rresp <= {`SVT_AXI_RESP_WIDTH{1'b``val}}; driver_mp.axi_slave_cb.rdata <= {`SVT_AXI_MAX_DATA_WIDTH{1'b``val}}; driver_mp.axi_slave_cb.rlast <= 1'b``val; `ifdef SVT_ACE5_ENABLE if(cfg.unique_id_enable) driver_mp.axi_slave_cb.ridunq <= {1'b``val}; if(cfg.rdata_chunking_enable)begin driver_mp.axi_slave_cb.rchunkstrb <= {`SVT_AXI_MAX_CHUNK_STROBE_WIDTH{1'b``val}}; driver_mp.axi_slave_cb.rchunknum <= {`SVT_AXI_MAX_CHUNK_NUM_WIDTH{1'b``val}}; end if(cfg.enable_loopback_signaling)begin driver_mp.axi_slave_cb.rloop <= {`SVT_AXI_MAX_LOOP_R_WIDTH{1'b``val}}; driver_mp.axi_slave_cb.bloop <= {`SVT_AXI_MAX_LOOP_W_WIDTH{1'b``val}}; end `endif if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL || cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_DATA) driver_mp.axi_slave_cb.rdatachk <= {CEIL(`SVT_AXI_MAX_DATA_WIDTH,8){1'b``val}}; if(cfg.ruser_enable) begin driver_mp.axi_slave_cb.ruser <= {`SVT_AXI_MAX_DATA_USER_WIDTH{1'b``val}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_slave_cb.ruserchk <= ~{CEIL(`SVT_AXI_MAX_DATA_USER_WIDTH,8){1'b``val}}; end else begin driver_mp.axi_slave_cb.ruser <= {`SVT_AXI_MAX_DATA_USER_WIDTH{1'bz}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_slave_cb.ruserchk <= {CEIL(`SVT_AXI_MAX_DATA_USER_WIDTH,8){1'bz}}; end |
|
|
EXCLUDE_UNSTARTED_XACT
|
|
|
1
|
|
|
3
|
|
|
((cfg.axi_interface_type != svt_axi_port_configuration::AXI4) || ((cfg.axi_interface_category != svt_axi_port_configuration::``interface_category) && (cfg.axi_interface_type == svt_axi_port_configuration::AXI4))) |
|
|
(((active_xact_queue.size() >= cfg.num_outstanding_xact) && (cfg.num_outstanding_xact != -1)) || ((active_read_xact_count >= cfg.num_read_outstanding_xact) && (cfg.num_outstanding_xact == -1))) |
|
|
(((active_xact_queue.size() >= cfg.num_outstanding_xact) && (cfg.num_outstanding_xact != -1)) || ((active_write_xact_count >= cfg.num_write_outstanding_xact) && (cfg.num_outstanding_xact == -1))) |
|
|
(((active_xact_queue.size() > cfg.num_outstanding_xact) && (cfg.num_outstanding_xact != -1)) || ((active_write_xact_count > cfg.num_write_outstanding_xact) && (cfg.num_outstanding_xact == -1))) |
|
|
(cfg.axi_interface_type != svt_axi_port_configuration::AXI4_LITE) && ( (cfg.axi_interface_type != svt_axi_port_configuration::AXI4) || (cfg.axi_signal == 1) ) |
|
|
((xact.xact_type == svt_axi_transaction::READ) || (( xact.xact_type == svt_axi_transaction::COHERENT) && ((xact.coherent_xact_type == svt_axi_transaction::READNOSNOOP) || (xact.coherent_xact_type == svt_axi_transaction::READONCE) || (xact.coherent_xact_type == svt_axi_transaction::READONCECLEANINVALID) || (xact.coherent_xact_type == svt_axi_transaction::READONCEMAKEINVALID) || (xact.coherent_xact_type == svt_axi_transaction::READSHARED) || (xact.coherent_xact_type == svt_axi_transaction::READCLEAN) || (xact.coherent_xact_type == svt_axi_transaction::READNOTSHAREDDIRTY) || (xact.coherent_xact_type == svt_axi_transaction::READUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::CLEANUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::MAKEUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::CLEANSHARED) || (xact.coherent_xact_type == svt_axi_transaction::CLEANSHAREDPERSIST) || (xact.coherent_xact_type == svt_axi_transaction::CLEANINVALID) || (xact.coherent_xact_type == svt_axi_transaction::MAKEINVALID) || (xact.coherent_xact_type == svt_axi_transaction::DVMCOMPLETE) || (xact.coherent_xact_type == svt_axi_transaction::DVMMESSAGE) || (xact.coherent_xact_type == svt_axi_transaction::READBARRIER)))) |
|
|
if ((cfg.axi_interface_type == svt_axi_port_configuration::AXI4) && ((cfg.axi_interface_category == svt_axi_port_configuration::``interface_category_disable) || (!(cfg_enable)))) begin driver_mp.axi_slave_cb.``sg_name <= width'bZ; end else if((cfg.axi_interface_type == svt_axi_port_configuration::AXI4_LITE) && lite_disable) begin driver_mp.axi_slave_cb.``sg_name <= width'bZ; end else if((cfg.axi_interface_type == svt_axi_port_configuration::AXI3) && axi3_disable) begin driver_mp.axi_slave_cb.``sg_name <= width'bZ; end else begin driver_mp.axi_slave_cb.``sg_name <= val; end |
|
|
if ((cfg.axi_interface_type == svt_axi_port_configuration::AXI4) && ((cfg.axi_interface_category == svt_axi_port_configuration::``interface_category_disable) || (!(cfg_enable)))) begin observed_``sg_name = val; end else if((cfg.axi_interface_type == svt_axi_port_configuration::AXI4_LITE) && lite_disable) begin observed_``sg_name = val; end else if((cfg.axi_interface_type == svt_axi_port_configuration::AXI3) && axi3_disable) begin observed_``sg_name = val; end else begin observed_``sg_name = monitor_mp.axi_monitor_cb.``sg_name; end |
|
|
0
| |
--------------- READ DATA CHUNKING FEATURE realted macros --------------
|
|
|
3
|
|
|
4
|
|
|
6
|
|
|
5
|
|
|
2
|
|
|
1
|
|
|
if ((cfg.axi_interface_type == svt_axi_port_configuration::AXI4) && (cfg.axi_interface_category == svt_axi_port_configuration::``interface_category_disable)) begin observed_``sg_name = 1'b0; end else begin observed_``sg_name = monitor_mp.axi_monitor_cb.``sg_name; end |
|
|
((xact.xact_type == svt_axi_transaction::WRITE) || ((( xact.xact_type == svt_axi_transaction::COHERENT) && ((xact.coherent_xact_type == svt_axi_transaction::WRITENOSNOOP)|| (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUE)|| `ifdef SVT_ACE5_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEPTLSTASH) || (xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUEFULLSTASH) || (xact.coherent_xact_type == svt_axi_transaction::STASHONCEUNIQUE) || (xact.coherent_xact_type == svt_axi_transaction::STASHONCESHARED) || (xact.coherent_xact_type == svt_axi_transaction::STASHTRANSLATION) || (xact.coherent_xact_type == svt_axi_transaction::CMO) || (xact.coherent_xact_type == svt_axi_transaction::WRITEPTLCMO) || (xact.coherent_xact_type == svt_axi_transaction::WRITEFULLCMO) || `ifdef SVT_AXI_WRITE_DEFERRABLE_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITEDEFERRABLE) || `endif `ifdef SVT_AXI_PREFETCH_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::PREFETCH) || `endif `ifdef SVT_AXI_WRITE_ZERO_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITEZERO) || `endif `ifdef SVT_AXI_WRITENOSNPFULL_XACT_INTERNAL_ENABLE (xact.coherent_xact_type == svt_axi_transaction::WRITENOSNPFULL) || `endif `endif (xact.coherent_xact_type == svt_axi_transaction::WRITELINEUNIQUE)|| (xact.coherent_xact_type == svt_axi_transaction::WRITECLEAN)|| (xact.coherent_xact_type == svt_axi_transaction::WRITEBACK)|| (xact.coherent_xact_type == svt_axi_transaction::EVICT)|| (xact.coherent_xact_type == svt_axi_transaction::WRITEBARRIER))))) |
|
|
`ifdef SVT_UVM_TECHNOLOGY svt_axi_snoop_input_port_type `elsif SVT_OVM_TECHNOLOGY svt_axi_snoop_input_port_type `else svt_axi_snoop_input_port_type `endif |
|
|
|
(master_xact.converted_xact_type == svt_axi_transaction::COHERENT) && ( (master_xact.coherent_xact_type == svt_axi_transaction::READSHARED) || (master_xact.coherent_xact_type == svt_axi_transaction::READCLEAN) || (master_xact.coherent_xact_type == svt_axi_transaction::READNOTSHAREDDIRTY) || (master_xact.coherent_xact_type == svt_axi_transaction::READONCE) || (master_xact.coherent_xact_type == svt_axi_transaction::READUNIQUE) ) |
|
|
(master_xact.converted_xact_type == svt_axi_transaction::COHERENT) && ( (master_xact.coherent_xact_type == svt_axi_transaction::READSHARED) || (master_xact.coherent_xact_type == svt_axi_transaction::READCLEAN) || (master_xact.coherent_xact_type == svt_axi_transaction::READNOTSHAREDDIRTY) || (master_xact.coherent_xact_type == svt_axi_transaction::READONCE) || (master_xact.coherent_xact_type == svt_axi_transaction::READUNIQUE) || (master_xact.coherent_xact_type == svt_axi_transaction::CLEANINVALID) || (master_xact.coherent_xact_type == svt_axi_transaction::CLEANSHARED) || (master_xact.coherent_xact_type == svt_axi_transaction::CLEANUNIQUE) || (master_xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUE) || (master_xact.coherent_xact_type == svt_axi_transaction::WRITELINEUNIQUE) ) |
|
|
( /** Either this item has not been associated yet to any slave transaction, or if */ /** it is associated, then the slave_port_id should match that of the slave transaction */ /** since a single master transaction will not get routed to two different slaves */ /**((item.slave_port_id.size() == 0) || (slave_xact.port_cfg.port_id inside {item.slave_port_id})) && */ /** The exp_slave_port_id is set in the sys_xact based on the memory map. Unless slaves with */ /** overlapping addr is set (in which case the xact could be routed to another slave port), */ /** item.exp_slave_port_id and slave_xact.port_cfg.port_id should match */ (axi_sys_common_cfg.allow_slaves_with_overlapping_addr || is_amba_system_monitor || (slave_xact.port_cfg.port_id inside {item.exp_slave_port_id})) && ( ( ( (slave_xact.transmitted_channel == svt_axi_transaction::WRITE) && !( (slave_xact.converted_xact_type == svt_axi_transaction::COHERENT) && (slave_xact.coherent_xact_type == svt_axi_transaction::WRITEBARRIER) ) && ( (item.master_xact.converted_xact_type == svt_axi_transaction::COHERENT) && ( (item.master_xact.coherent_xact_type == svt_axi_transaction::WRITEUNIQUE) || (item.master_xact.coherent_xact_type == svt_axi_transaction::WRITELINEUNIQUE) ) ) && !item.is_xact_fully_mapped && (axi_sys_common_cfg.id_based_xact_correlation_enable && (!((item.master_xact.port_cfg.id_based_xact_correlation_enable && slave_xact.port_cfg.id_based_xact_correlation_enable) || !is_find_first_check_done) || (source_master_id == axi_sys_common_cfg.source_master_id_wu_wlu_xmit_to_slaves && axi_sys_common_cfg.master_cfg[item.master_xact.port_cfg.port_id].source_master_id_xmit_to_slaves_type != svt_axi_port_configuration::CUSTOM_SOURCE_MASTER_ID_XMIT_TO_SLAVES) || ( (axi_sys_common_cfg.master_cfg[item.master_xact.port_cfg.port_id].source_master_id_xmit_to_slaves_type == svt_axi_port_configuration::CUSTOM_SOURCE_MASTER_ID_XMIT_TO_SLAVES) && (axi_sys_common_cfg.is_master_id_and_slave_id_correlated(item.master_xact,slave_xact)) ) ) ) ) || ( ( ( !( ( (item.master_xact.converted_xact_type == svt_axi_transaction::COHERENT) && ( (item.master_xact.coherent_xact_type == svt_axi_transaction::CLEANSHARED) || (item.master_xact.coherent_xact_type == svt_axi_transaction::CLEANINVALID) || (item.master_xact.coherent_xact_type == svt_axi_transaction::CLEANUNIQUE) || (item.master_xact.coherent_xact_type == svt_axi_transaction::MAKEINVALID) ) ) || ( (slave_xact.converted_xact_type == svt_axi_transaction::COHERENT) && ( (slave_xact.coherent_xact_type == svt_axi_transaction::CLEANSHARED) || (slave_xact.coherent_xact_type == svt_axi_transaction::CLEANINVALID) || (slave_xact.coherent_xact_type == svt_axi_transaction::MAKEINVALID) ) ) ) && (item.master_xact.transmitted_channel == slave_xact.transmitted_channel) ) || ( (item.master_xact.converted_xact_type == slave_xact.converted_xact_type) && /** coherent_xact_type will match only when xact_type is COHERENT */ ( (item.master_xact.converted_xact_type != svt_axi_transaction::COHERENT) || (item.master_xact.coherent_xact_type == slave_xact.coherent_xact_type ) ) ) ) && !item.is_xact_fully_mapped && ( !axi_sys_common_cfg.id_based_xact_correlation_enable || !((item.master_xact.port_cfg.id_based_xact_correlation_enable && slave_xact.port_cfg.id_based_xact_correlation_enable) || !is_find_first_check_done) || ( ( (axi_sys_common_cfg.master_cfg[item.master_xact.port_cfg.port_id].source_master_id_xmit_to_slaves_type == svt_axi_port_configuration::CUSTOM_SOURCE_MASTER_ID_XMIT_TO_SLAVES) && (axi_sys_common_cfg.is_master_id_and_slave_id_correlated(item.master_xact,slave_xact)) ) || ( ( (axi_sys_common_cfg.master_cfg[item.master_xact.port_cfg.port_id].source_master_id_xmit_to_slaves_type == svt_axi_port_configuration::STATIC_SOURCE_MASTER_ID_XMIT_TO_SLAVES) && (source_master_id == axi_sys_common_cfg.get_source_master_id_at_slave_from_master_id(item.master_xact.id,item.master_xact.port_cfg.port_id)) ) || ( (axi_sys_common_cfg.master_cfg[item.master_xact.port_cfg.port_id].source_master_id_xmit_to_slaves_type == svt_axi_port_configuration::DYNAMIC_SOURCE_MASTER_ID_XMIT_TO_SLAVES) && (source_master_id == item.master_xact.dynamic_source_master_id_xmit_to_slaves) ) && (source_master_xact_id == axi_sys_common_cfg.get_master_xact_id_at_slave_from_master_id(item.master_xact.id,item.master_xact.port_cfg.port_id)) ) || ((item.master_xact.port_cfg.is_source_master_id_and_dest_slave_id_same == 1) && (slave_xact.id == item.master_xact.id)) ) ) ) ) || /** Dirty data may be written after all the other data is written in which case is_xact_fully_mapped will be set */ /** so don't check for is_xact_fully_mapped for dirty data write */ ( SVT_AXI_SYSTEM_MONITOR_IS_DIRTY_DATA_XACT(item.master_xact) && (slave_xact.transmitted_channel == svt_axi_transaction::WRITE) && (axi_sys_common_cfg.id_based_xact_correlation_enable && (!((item.master_xact.port_cfg.id_based_xact_correlation_enable && slave_xact.port_cfg.id_based_xact_correlation_enable) || !is_find_first_check_done) || (source_master_id == axi_sys_common_cfg.source_interconnect_id_xmit_to_slaves && axi_sys_common_cfg.master_cfg[item.master_xact.port_cfg.port_id].source_master_id_xmit_to_slaves_type != svt_axi_port_configuration::CUSTOM_SOURCE_MASTER_ID_XMIT_TO_SLAVES ) || ( (axi_sys_common_cfg.master_cfg[item.master_xact.port_cfg.port_id].source_master_id_xmit_to_slaves_type == svt_axi_port_configuration::CUSTOM_SOURCE_MASTER_ID_XMIT_TO_SLAVES) && (axi_sys_common_cfg.is_master_id_and_slave_id_correlated(item.master_xact,slave_xact)) ) ) ) ) ) && (SVT_AXI_GET_XACT_START_TIME(item.master_xact) <= SVT_AXI_GET_XACT_START_TIME(slave_xact)) && (item.master_xact.addr_status != svt_axi_transaction::ABORTED) && (item.master_xact.data_status != svt_axi_transaction::ABORTED) && (item.master_xact.write_resp_status != svt_axi_transaction::ABORTED) && ( ( (is_exact_match && (item.master_xact.cache_type[1] == 1'b0)) && (get_amba_min_byte_address(.xact(item.master_xact), .convert_to_global_addr(1), /** If tagged master and untagged slave is supported, get tagged address from master only if slave also uses it */ .use_tagged_addr(~axi_sys_common_cfg.support_tagged_master_and_untagged_slave), .convert_to_slave_addr(1), .requester_name(get_master_xact_requester_name(item.master_xact))) == slave_xact_min_addr) && (get_amba_max_byte_address(.xact(item.master_xact),.convert_to_global_addr(1), /** If tagged master and untagged slave is supported, get tagged address from master only if slave also uses it */ .use_tagged_addr(~axi_sys_common_cfg.support_tagged_master_and_untagged_slave), .convert_to_slave_addr(1), .requester_name(get_master_xact_requester_name(item.master_xact))) == slave_xact_max_addr) ) || ( (!is_exact_match || ((item.master_xact.cache_type[1] == 1'b1) || (axi_sys_common_cfg.master_to_slave_association_mode == 2))) && (is_amba_address_overlap(.xact(item.master_xact),.min_addr(slave_xact_min_addr), .max_addr(slave_xact_max_addr), .convert_to_global_addr(1), .use_tagged_addr(~axi_sys_common_cfg.support_tagged_master_and_untagged_slave), .convert_to_slave_addr(1), .requester_name(get_master_xact_requester_name(item.master_xact)))) ) ) ) |
|
|
{SVT_AXI_PRINT_PREFIX1(xact),$sformatf("with SYSTEM ID: 'd%0d; @%0d; ",(((xact != null) && (xact.port_cfg != null) && (xact.port_cfg.sys_cfg != null) ? xact.port_cfg.sys_cfg.system_id :-1)),xact)} |
|
|
|
if ((port_cfg != null) && (port_cfg.``enablefieldwdth > 0)) begin `SVT_DATA_UTIL_COMPARE_BITVEC_SLICE(fieldname,fieldmaxwidth,port_cfg.``enablefieldwdth``-1,0) end else begin `SVT_DATA_UTIL_COMPARE_BITVEC(fieldname) end | |
Transaction Class Macros definition and utility methods definition
|
|
|
if ((port_cfg != null) && (port_cfg.``enablefieldwdth > 0)) begin `SVT_DATA_UTIL_COMPARE_BITVEC_SLICE_SIZE_ARRAY(fieldname,fieldmaxwidth,port_cfg.``enablefieldwdth``-1,0) end else begin `SVT_DATA_UTIL_COMPARE_INT_SIZE_ARRAY(fieldname) end |
|
|
( ( (xact.transmitted_channel == svt_axi_transaction::WRITE) && (xact.write_resp_status == svt_axi_transaction::ACCEPT ) && (xact.bresp == (xact.port_cfg.exclusive_access_enable == 1 && xact.atomic_type == svt_axi_transaction::EXCLUSIVE) ? svt_axi_transaction::EXOKAY : svt_axi_transaction::OKAY) ) || ( (xact.transmitted_channel == svt_axi_transaction::READ) && (xact.data_status == svt_axi_transaction::ACCEPT ) && (rresp == (xact.port_cfg.exclusive_access_enable == 1 && xact.atomic_type == svt_axi_transaction::EXCLUSIVE) ? svt_axi_transaction::EXOKAY : svt_axi_transaction::OKAY) ) ) |
|
|
if (obj.data.size()) begin foreach (obj.data[i]) begin bit[`SVT_AXI_MAX_DATA_WIDTH-1:0] _data_mask; _data_mask = ((1 << ((1 << obj.burst_size) << 3)) - 1); obj.data[i] = obj.data[i] & _data_mask; end end |
|
|
if (obj.poison.size()) begin foreach (obj.poison[i]) begin bit[`SVT_AXI_MAX_DATA_WIDTH/64-1:0] _poison_mask; if(obj.burst_size>3) _poison_mask = ((1 << ((1 << obj.burst_size) / 8)) - 1); else _poison_mask =1; obj.poison[i] = obj.poison[i] & _poison_mask; end end |
|
|
if (obj.tag.size()) begin foreach (obj.tag[i]) begin bit[`SVT_AXI_MAX_TAG_WIDTH-1:0] _tag_mask; _tag_mask =((1<<(((CEIL(((1 << obj.burst_size) << 3),128)))*4))-1); obj.tag[i] = obj.tag[i] & _tag_mask; end end |
|
|
if (obj.data.size() != obj.wstrb.size()) begin svt_error("svt_axi_transaction", $sformatf("Cannot compare data because size of data array ('d%0d) is not equal to size of wstrb array ('d%0d). xact_type(%0s). coherent_xact_type(%0s). transmitted_channel(%0s) xact = %0s", obj.data.size(), obj.wstrb.size(), obj.xact_type.name(), obj.coherent_xact_type.name(), obj.transmitted_channel.name(),SVT_AXI_PRINT_PREFIX1(obj))); end foreach (obj.data[i]) begin bit[`SVT_AXI_MAX_DATA_WIDTH-1:0] _data_mask; bit[(`SVT_AXI_MAX_DATA_WIDTH/8)-1:0] _wstrb = obj.wstrb[i]; _data_mask = 'h0; foreach (_wstrb[i]) begin if (_wstrb[i] === 1'b1) _data_mask[i*8+:8] = 'hff; else _data_mask[i*8+:8] = 'h0; end obj.data[i] = obj.data[i] & _data_mask; end |
|
|
if (obj.tag.size() != obj.tag_update.size()) begin svt_error("svt_axi_transaction", $sformatf("Cannot compare tag because size of tag array ('d%0d) is not equal to size of tag_update array ('d%0d). xact_type(%0s). coherent_xact_type(%0s). transmitted_channel(%0s) xact = %0s", obj.tag.size(), obj.tag_update.size(), obj.xact_type.name(), obj.coherent_xact_type.name(), obj.transmitted_channel.name(),SVT_AXI_PRINT_PREFIX1(obj))); end foreach (obj.tag[i]) begin bit[`SVT_AXI_MAX_TAG_WIDTH-1:0] _tag_mask; bit[(`SVT_AXI_MAX_TAGUPDATE_WIDTH)-1:0] _tag_update = obj.tag_update[i]; _tag_mask = 'h0; foreach (_tag_update[i]) begin if (_tag_update[i] === 1'b1) _tag_mask[i*4+:4] = 'hf; else _tag_mask[i*4+:4] = 'h0; end obj.tag[i] = obj.tag[i] & _tag_mask; end |
|
|
|
|
1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`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 |
|
|
`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 |
|
|
driver_mp.axi_master_cb.awaddr <= {`SVT_AXI_MAX_ADDR_WIDTH{1'b``enable_sig_val}}; driver_mp.axi_master_cb.awatop <= {`SVT_ACE5_ATOMIC_TYPE_WIDTH{1'b``enable_sig_val}}; driver_mp.axi_master_cb.awmpam <= {`SVT_AXI_MAX_MPAM_WIDTH{1'b``enable_sig_val}}; driver_mp.axi_master_cb.awloop <= {`SVT_AXI_MAX_LOOP_W_WIDTH{1'b``enable_sig_val}}; driver_mp.axi_master_cb.awnsaid <= {`SVT_AXI_MAX_NSAID_WIDTH{1'b``enable_sig_val}}; driver_mp.axi_master_cb.awcmo <= {`SVT_AXI_ACE_WCMO_WIDTH{1'b``enable_sig_val}}; SVT_AXI_MASTER_DRIVE_SIGNAL(awid,{`SVT_AXI_MAX_ID_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_MAX_ID_WIDTH{1'b``disable_sig_val}},awid_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(awlen,{`SVT_AXI_MAX_BURST_LENGTH_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_MAX_BURST_LENGTH_WIDTH{1'b``disable_sig_val}},awlen_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(awsize,{`SVT_AXI_SIZE_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_SIZE_WIDTH{1'b``disable_sig_val}},awsize_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(awburst,{`SVT_AXI_BURST_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_BURST_WIDTH{1'b``disable_sig_val}},awburst_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(awlock,{`SVT_AXI_LOCK_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_LOCK_WIDTH{1'b``disable_sig_val}},awlock_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(awcache,{`SVT_AXI_CACHE_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_CACHE_WIDTH{1'b``disable_sig_val}},awcache_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(awprot,{`SVT_AXI_PROT_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_PROT_WIDTH{1'b``disable_sig_val}},awprot_enable) `ifdef SVT_AXI_QVN_ENABLE SVT_AXI_MASTER_DRIVE_SIGNAL(awvnet,{`SVT_AXI_QVN_AWVNET_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_QVN_AWVNET_WIDTH{1'b``disable_sig_val}},qvn_enable) `endif `ifdef SVT_ACE5_ENABLE SVT_AXI_MASTER_DRIVE_SIGNAL(awidunq,1'b``enable_sig_val,1'b``disable_sig_val,unique_id_enable) `endif if((cfg.axi_interface_type == svt_axi_port_configuration::AXI4) || (cfg.axi_interface_type == svt_axi_port_configuration::AXI_ACE) || (cfg.axi_interface_type == svt_axi_port_configuration::ACE_LITE)) begin if(cfg.awqos_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(awqos,{`SVT_AXI_QOS_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_QOS_WIDTH{1'b``disable_sig_val}},awqos_enable) if(cfg.awregion_enable) SVT_AXI_MASTER_DRIVE_SIGNAL(awregion,{`SVT_AXI_REGION_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_REGION_WIDTH{1'b``disable_sig_val}},awregion_enable) end else begin driver_mp.axi_master_cb.awqos <= `SVT_AXI_QOS_WIDTH'bz; driver_mp.axi_master_cb.awregion <= `SVT_AXI_REGION_WIDTH'bz; end if (cfg.awuser_enable) begin driver_mp.axi_master_cb.awuser <= {`SVT_AXI_MAX_ADDR_USER_WIDTH{1'b``enable_sig_val}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_master_cb.awuserchk <= ~{CEIL(`SVT_AXI_MAX_ADDR_USER_WIDTH,8){1'b``enable_sig_val}}; end else begin driver_mp.axi_master_cb.awuser <= {`SVT_AXI_MAX_ADDR_USER_WIDTH{1'bz}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_master_cb.awuserchk <= {CEIL(`SVT_AXI_MAX_ADDR_USER_WIDTH,8){1'bz}}; end |
|
|
driver_mp.axi_master_cb.wdata <= {`SVT_AXI_MAX_DATA_WIDTH{1'b``enable_sig_val}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL || cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_DATA ) driver_mp.axi_master_cb.wdatachk <= ~{CEIL(`SVT_AXI_MAX_DATA_WIDTH,8){1'b``enable_sig_val}}; driver_mp.axi_master_cb.wstrb <= {`SVT_AXI_MAX_DATA_WIDTH/8{1'b``enable_sig_val}}; `ifdef SVT_AXI_QVN_ENABLE SVT_AXI_MASTER_DRIVE_SIGNAL(wvnet,{`SVT_AXI_QVN_WVNET_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_QVN_WVNET_WIDTH{1'b``disable_sig_val}},qvn_enable) `endif if ((cfg.axi_interface_type == svt_axi_port_configuration :: AXI3 ) || (cfg.wid_for_non_axi3_enable == 1 )) begin driver_mp.axi_master_cb.wid <= {`SVT_AXI_MAX_ID_WIDTH{1'b``enable_sig_val}}; end else begin driver_mp.axi_master_cb.wid <= {`SVT_AXI_MAX_ID_WIDTH{1'bz}}; end if (cfg.wuser_enable) begin driver_mp.axi_master_cb.wuser <= {`SVT_AXI_MAX_DATA_USER_WIDTH{1'b``enable_sig_val}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_master_cb.wuserchk <= ~{CEIL(`SVT_AXI_MAX_DATA_USER_WIDTH,8){1'b``enable_sig_val}}; end else begin driver_mp.axi_master_cb.wuser <= {`SVT_AXI_MAX_DATA_USER_WIDTH{1'bz}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_master_cb.wuserchk <= {CEIL(`SVT_AXI_MAX_DATA_USER_WIDTH,8){1'bz}}; end SVT_AXI_MASTER_DRIVE_SIGNAL(wlast,{`SVT_AXI_MAX_DATA_WIDTH{1'b``enable_sig_val}},{`SVT_AXI_MAX_DATA_WIDTH{1'b``disable_sig_val}},wlast_enable) |
|
|
1
|
|
|
driver_mp.axi_slave_cb.bid <= {`SVT_AXI_MAX_ID_WIDTH{1'b``val}}; driver_mp.axi_slave_cb.bresp <= {`SVT_AXI_RESP_WIDTH{1'b``val}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_slave_cb.brespchk <= ~{CEIL(`SVT_AXI_MAX_BRESP_USER_WIDTH,8){1'b``val}}; `ifdef SVT_ACE5_ENABLE if(cfg.unique_id_enable) driver_mp.axi_slave_cb.bidunq <= 1'b``val; `endif if(cfg.buser_enable) begin driver_mp.axi_slave_cb.buser <= {`SVT_AXI_MAX_BRESP_USER_WIDTH{1'b``val}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_slave_cb.buserchk <= ~{CEIL(`SVT_AXI_MAX_BRESP_USER_WIDTH,8){1'b``val}}; end else begin driver_mp.axi_slave_cb.buser <= {`SVT_AXI_MAX_BRESP_USER_WIDTH{1'bz}}; if(cfg.check_type == svt_axi_port_configuration::ODD_PARITY_BYTE_ALL) driver_mp.axi_slave_cb.buserchk <= {CEIL(`SVT_AXI_MAX_BRESP_USER_WIDTH,8){1'bz}}; end |
|
|
1
|
|
|
6
|
|
|
( ( (this_xact.port_cfg.axi_interface_type == svt_axi_port_configuration::AXI_ACE) && (this_xact.ack_status == svt_axi_transaction::ACCEPT) ) || ( (this_xact.port_cfg.axi_interface_type != svt_axi_port_configuration::AXI_ACE) && (this_xact.transmitted_channel == svt_axi_transaction::WRITE) && (this_xact.write_resp_status == svt_axi_transaction::ACCEPT) ) || ( (this_xact.port_cfg.axi_interface_type != svt_axi_port_configuration::AXI_ACE) && (this_xact.transmitted_channel == svt_axi_transaction::READ) && (this_xact.data_status == svt_axi_transaction::ACCEPT) ) ) |
|
|
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
|
|
|
3
| |
Width of CBUSY field-- applicable for CHI Issue D
|
|
|
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
|
|
|
3
| |
To define bins in mpam related coverage, Number of bins to be defined for mpam value and mpam_partid from CHI-D or later. The mpam values are equally grouped into this define number of bins.
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
1
|
|
|
|
|
5
| |
To define bins in dbid related coverage, Number of bins to be defined for DBID from CHI-D or later. The values of DBID are equally grouped into this define number of bins.
|
|
|
5
| |
To define bins in txn_id related coverage, Number of bins to be defined for TxnID from CHI-D or later. The values of TxnID are equally grouped into this define number of bins.
|
|
|
0
| |
Defines for nderr_resp_policy_enum
|
|
|
3
|
|
|
Width of DAT FLIT MECID/DBID field
|
|
|
0
| |
DAT Flit format defines
|
|
|
1
|
|
|
2
|
|
|
4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
3
|
|
|
1
| |
Width of Reserved bits in FWDSTATE/DATAPULL fields of DAT flit -- applicable for CHI Issue D or later
|
|
|
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
|
|
|
4
|
|
|
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
|
|
|
5
|
|
|
3
|
|
|
1
|
|
|
2
|
|
|
2
|
|
|
2
|
|
|
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
|
|
|
5
| |
To define bins in dbid related coverage, Number of bins to be defined for DBID from CHI-E or later. The values of DBID are equally grouped into this define number of bins.
|
|
|
5
| |
To define bins in txn_id related coverage, Number of bins to be defined for TxnID from CHI-E or later. The values of TxnID are equally grouped into this define number of bins.
|
|
|
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()) |
|
|
(req_vc_flit_opcode == WRITENOSNPFULL_CLEANSHAREDPERSISTSEP || req_vc_flit_opcode == WRITENOSNPPTL_CLEANSHAREDPERSISTSEP || req_vc_flit_opcode == WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP || req_vc_flit_opcode == WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP || req_vc_flit_opcode == WRITEBACKFULL_CLEANSHAREDPERSISTSEP || req_vc_flit_opcode == WRITECLEANFULL_CLEANSHAREDPERSISTSEP) |
|
|
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.
|
|
|
(xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITEBACKFULL_CLEANSHARED || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITEBACKFULL_CLEANINVALID || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITEBACKFULL_CLEANSHAREDPERSISTSEP || `ifdef SVT_CHI_ISSUE_F_ENABLE xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITEBACKFULL_CLEANINVALIDPOPA || `endif xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITECLEANFULL_CLEANSHARED || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITECLEANFULL_CLEANSHAREDPERSISTSEP) |
|
|
(xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITEUNIQUEFULL_CLEANSHARED || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITEUNIQUEPTL_CLEANSHARED || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP) |
|
|
(xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITENOSNPFULL_CLEANSHAREDPERSISTSEP || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITENOSNPPTL_CLEANSHAREDPERSISTSEP || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITEBACKFULL_CLEANSHAREDPERSISTSEP || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITECLEANFULL_CLEANSHAREDPERSISTSEP) |
|
|
(xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITENOSNPFULL_CLEANSHARED || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITENOSNPFULL_CLEANINVALID || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITENOSNPFULL_CLEANSHAREDPERSISTSEP || `ifdef SVT_CHI_ISSUE_F_ENABLE xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITENOSNPFULL_CLEANINVALIDPOPA || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITENOSNPPTL_CLEANINVALIDPOPA || `endif xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITENOSNPPTL_CLEANSHARED || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITENOSNPPTL_CLEANINVALID || xact_flit.req_vc_flit_opcode == svt_chi_flit::WRITENOSNPPTL_CLEANSHAREDPERSISTSEP) |
|
|
((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
|
|
|
case(axi_slave_xact.atomic_xact_op_type) svt_axi_transaction::ATOMICSTORE_ADD : atomic_opcode = svt_chi_common_transaction::ATOMICSTORE_ADD; svt_axi_transaction::ATOMICSTORE_CLR : atomic_opcode = svt_chi_common_transaction::ATOMICSTORE_CLR; svt_axi_transaction::ATOMICSTORE_EOR : atomic_opcode = svt_chi_common_transaction::ATOMICSTORE_EOR; svt_axi_transaction::ATOMICSTORE_SET : atomic_opcode = svt_chi_common_transaction::ATOMICSTORE_SET; svt_axi_transaction::ATOMICSTORE_SMAX : atomic_opcode = svt_chi_common_transaction::ATOMICSTORE_SMAX; svt_axi_transaction::ATOMICSTORE_SMIN : atomic_opcode = svt_chi_common_transaction::ATOMICSTORE_SMIN; svt_axi_transaction::ATOMICSTORE_UMAX : atomic_opcode = svt_chi_common_transaction::ATOMICSTORE_UMAX; svt_axi_transaction::ATOMICSTORE_UMIN : atomic_opcode = svt_chi_common_transaction::ATOMICSTORE_UMIN; svt_axi_transaction::ATOMICLOAD_ADD : atomic_opcode = svt_chi_common_transaction::ATOMICLOAD_ADD; svt_axi_transaction::ATOMICLOAD_CLR : atomic_opcode = svt_chi_common_transaction::ATOMICLOAD_CLR; svt_axi_transaction::ATOMICLOAD_EOR : atomic_opcode = svt_chi_common_transaction::ATOMICLOAD_EOR; svt_axi_transaction::ATOMICLOAD_SET : atomic_opcode = svt_chi_common_transaction::ATOMICLOAD_SET; svt_axi_transaction::ATOMICLOAD_SMAX : atomic_opcode = svt_chi_common_transaction::ATOMICLOAD_SMAX; svt_axi_transaction::ATOMICLOAD_SMIN : atomic_opcode = svt_chi_common_transaction::ATOMICLOAD_SMIN; svt_axi_transaction::ATOMICLOAD_UMAX : atomic_opcode = svt_chi_common_transaction::ATOMICLOAD_UMAX; svt_axi_transaction::ATOMICLOAD_UMIN : atomic_opcode = svt_chi_common_transaction::ATOMICLOAD_UMIN; svt_axi_transaction::ATOMICSWAP : atomic_opcode = svt_chi_common_transaction::ATOMICSWAP; svt_axi_transaction::ATOMICCOMPARE : atomic_opcode = svt_chi_common_transaction::ATOMICCOMPARE; default : atomic_opcode = svt_chi_common_transaction::EVICT; endcase case(axi_slave_xact.atomic_transaction_type) svt_axi_transaction::COMPARE : atomic_operation = svt_chi_transaction::COMPARE; svt_axi_transaction::LOAD : atomic_operation = svt_chi_transaction::LOAD; svt_axi_transaction::STORE : atomic_operation = svt_chi_transaction::STORE; svt_axi_transaction::SWAP : atomic_operation = svt_chi_transaction::SWAP; default: atomic_operation = svt_chi_transaction::NON_ATOMIC; endcase |
|
|
`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 |
|
|
3
| |
Width of GROUPIDEXT fields-- applicable for CHI Issue E
|
|
|
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
|
|
|
0
|
|
|
8
|
|
|
2
|
|
|
0
| |
Interface types
|
|
|
1
|
|
|
3
|
|
|
4
|
|
|
|
(xact_type == WRITEBACKFULL_CLEANSHARED || xact_type == WRITEBACKFULL_CLEANINVALID || xact_type == WRITEBACKFULL_CLEANSHAREDPERSISTSEP || `ifdef SVT_CHI_ISSUE_F_ENABLE xact_type == WRITEBACKFULL_CLEANINVALIDPOPA || `endif xact_type == WRITECLEANFULL_CLEANSHARED || xact_type == WRITECLEANFULL_CLEANSHAREDPERSISTSEP) |
|
|
(xact_type == WRITEUNIQUEFULL_CLEANSHARED || xact_type == WRITEUNIQUEPTL_CLEANSHARED || xact_type == WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP || xact_type == WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP) |
|
|
(xact_type == WRITENOSNPFULL_CLEANSHAREDPERSISTSEP || xact_type == WRITENOSNPPTL_CLEANSHAREDPERSISTSEP || xact_type == WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP || xact_type == WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP || xact_type == WRITEBACKFULL_CLEANSHAREDPERSISTSEP || xact_type == WRITECLEANFULL_CLEANSHAREDPERSISTSEP) |
|
|
(xact_type == WRITENOSNPFULL_CLEANSHARED || xact_type == WRITENOSNPFULL_CLEANINVALID || xact_type == WRITENOSNPFULL_CLEANSHAREDPERSISTSEP || `ifdef SVT_CHI_ISSUE_F_ENABLE xact_type == WRITENOSNPFULL_CLEANINVALIDPOPA || `endif xact_type == WRITEUNIQUEFULL_CLEANSHARED || xact_type == WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP) |
|
|
(xact_type == WRITENOSNPFULL_CLEANSHARED || xact_type == WRITENOSNPFULL_CLEANINVALID || xact_type == WRITENOSNPFULL_CLEANSHAREDPERSISTSEP || `ifdef SVT_CHI_ISSUE_F_ENABLE xact_type == WRITENOSNPFULL_CLEANINVALIDPOPA || xact_type == WRITENOSNPPTL_CLEANINVALIDPOPA || `endif xact_type == WRITENOSNPPTL_CLEANSHARED || xact_type == WRITENOSNPPTL_CLEANINVALID || xact_type == WRITENOSNPPTL_CLEANSHAREDPERSISTSEP) |
|
|
(xact_type == WRITENOSNPPTL_CLEANSHARED || xact_type == WRITENOSNPPTL_CLEANINVALID || xact_type == WRITENOSNPPTL_CLEANSHAREDPERSISTSEP || `ifdef SVT_CHI_ISSUE_F_ENABLE xact_type == WRITENOSNPPTL_CLEANINVALIDPOPA || `endif xact_type == WRITEUNIQUEPTL_CLEANSHARED || xact_type == WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP) |
|
|
( (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) ) |
|
|
|
|
|
|
1
|
|
|
|
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
|
|
|
4
|
|
|
64
| |
Width of transaction byte enable field
|
|
|
7
|
|
|
5
| |
Maximum value for read_xacts_compdata_to_compack_delay_count
|
|
|
16
| |
Maximum value for comp_to_dbid_flit_delay
|
|
|
16
|
|
|
16
|
|
|
256
| |
Maximum value for DAT flit reordering depth
|
|
|
4
| |
Max value of received DAT flit to LCRD delay
|
|
|
(23+(2*SVT_CHI_MAX_TXN_ID_WIDTH)+(SVT_CHI_DAT_VC_FLIT_OP_WIDTH)+(3*SVT_CHI_MAX_NODE_ID_WIDTH)+SVT_CHI_DAT_FLIT_MAX_TAG_WIDTH+SVT_CHI_DAT_FLIT_MAX_TAG_UPDATE_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
|
|
|
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
|
|
|
9
| |
Width of MPAM fields-- applicable for CHI Issue D. User is not expected to change values of these macros.
|
|
|
1
|
|
|
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 CXHA agents
|
|
|
40
| |
Maximum number of CXRA agents
|
|
|
40
| |
Maximum number of HNs
|
|
|
1
|
|
|
0
| |
Maximum number of L-Credits to be transmitted in Deactivate state.
|
|
|
1024
| |
Maximum number of outstanding snoop transactions
|
|
|
1024
| |
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 of req_to_comppersist_flit_delay
|
|
|
16
|
|
|
16
| |
Maximum value for req_to_dbid_flit_delay
|
|
|
16
| |
Maximum value for req_to_dbidrespord_flit_delay
|
|
|
16
| |
Maximum value for req_to_pcrdgrant_flit_delay
|
|
|
16
| |
Maximum value of req_to_persist_flit_delay
|
|
|
16
| |
Maximum value for req_to_retryack_flit_delay
|
|
|
16
|
|
|
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
|
|
|
7
|
|
|
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
|
|
|
(SVT_CHI_MAX_DATA_WIDTH/128)
|
|
|
|
|
|
|
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
|
|
|
12
|
|
|
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
|
|
|
0
|
|
|
0
| |
Min value of received DAT flit to LCRD delay
|
|
|
0
|
|
|
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 of req_to_comppersist_flit_delay
|
|
|
0
|
|
|
0
| |
Minimum value for req_to_dbid_flit_delay
|
|
|
0
| |
Minimum value for req_to_dbidrespord_flit_delay
|
|
|
0
| |
Minimum value for req_to_pcrdgrant_flit_delay
|
|
|
0
| |
Minimum value of req_to_persist_flit_delay
|
|
|
0
| |
Minimum value for req_to_retryack_flit_delay
|
|
|
0
|
|
|
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
|
|
|
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
|
|
|
1
|
|
|
1
|
|
|
12
|
|
|
9
| |
Different MPAM_PARTID widths
|
|
|
11
|
|
|
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
|
|
|
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
|
|
|
4
| |
Number of bits per Tag value-- applicable for CHI Issue E
|
|
|
4
|
|
|
16
| |
Number of data bytes per Tag value-- applicable for CHI Issue E
|
|
|
16
|
|
|
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 ) |
|
|
8
| |
Width of PGroupID field
|
|
|
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
|
|
|
12_0_2
|
|
|
12_0_3
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
7
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Width of Reserved bits in GROUPID fields of RSP flit -- applicable for CHI Issue D or later
|
|
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Opcodes used for Response VC FLIT
|
|
|
|
|
|
|
|
|
|
|
5
|
|
|
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
|
|
|
7
| |
Width of SLCRepHint fields-- applicable for CHI Issue D
|
|
|
3
|
|
|
3
|
|
|
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
|
|
|
Width of Reserved bits in VMIDEXT fields of SNP flit -- applicable for CHI Issue D 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
|
|
|
8
| |
Width of STASHGROUPID fields-- applicable for CHI Issue E
|
|
|
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.
|
|
|
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 ); register_check(stats_name); `ifndef SVT_VMM_TECHNOLOGY `ifndef SVT_AMBA_EXCLUDE_CHI_SYSTEM_CHECK_COVERAGE SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_OVERRIDE(svt_amba_multi_chip_sys,stats_name) `endif `endif stats_name.set_default_pass_effect(svt_err_check_stats::EXPECTED); `ifndef SVT_AMBA_EXCLUDE_CHI_SYSTEM_CHECK_COVERAGE if ((cfg.system_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 ); register_check(stats_name); `ifndef SVT_VMM_TECHNOLOGY `ifndef SVT_AMBA_EXCLUDE_CHI_SYSTEM_CHECK_COVERAGE SVT_ERR_CHECK_STATS_COV_PREFIX_EXTENDED_CLASS_OVERRIDE(svt_amba_multi_chip_sys,stats_name) `endif `endif stats_name.set_default_pass_effect(svt_err_check_stats::EXPECTED); `ifndef SVT_AMBA_EXCLUDE_CHI_SYSTEM_CHECK_COVERAGE if ((cfg.system_checks_coverage_enable == 1) && (enable_pc_cov ==1)) stats_name.add_cov(.enable_pass_cov(1),.enable_fail_cov(0)); `endif |
|
|
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
|
|
|
chi_e_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}; bins snpnotshareddirty = {svt_chi_snoop_transaction::SNPNOTSHAREDDIRTY}; bins snppreferunique = {svt_chi_snoop_transaction::SNPPREFERUNIQUE}; option.weight = weight_val; type_option.weight = weight_val; } | |
chi_e_snp_xact_type : Captures Snoop transaction type, upto CHI Issue E
|
|
|
coherent_chi_e_xact_on_rn_f_port1: coverpoint cov_coherent_chi_e_xact_on_rn_f_port1 { SVT_CHI_SYSTEM_MONITOR_ISSUE_E_DEF_COV_UTIL_COHERENT_CHI_E_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_chi_e_xact_on_rn_f_port1 : Captures Coherent CHI Issue E transaction type on RN-F port, CHI Issue E or later
|
|
|
coherent_chi_e_xact_on_rn_f_ports: coverpoint cov_coherent_chi_e_xact_on_rn_f_ports { SVT_CHI_SYSTEM_MONITOR_ISSUE_E_DEF_COV_UTIL_COHERENT_CHI_E_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_chi_e_xact_on_rn_f_ports : Captures Coherent CHI Issue E transaction type on RN-F port, CHI Issue E or later
|
|
|
bins writeunique_cleanshared_xacts = {svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHARED,svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHARED} ; bins writebackfull_cleanshared_xact = {svt_chi_transaction::WRITEBACKFULL_CLEANSHARED} ; bins writebackfull_cleaninvalid_xact = {svt_chi_transaction::WRITEBACKFULL_CLEANINVALID} ; bins writecleanfull_cleanshared_xact = {svt_chi_transaction::WRITECLEANFULL_CLEANSHARED} ; bins writeevictorevict_xact = {svt_chi_transaction::WRITEEVICTOREVICT}; bins writeuniquezero_xact = {svt_chi_transaction::WRITEUNIQUEZERO}; bins readpreferunique_xact = {svt_chi_transaction::READPREFERUNIQUE}; bins makereadunique_xact = {svt_chi_transaction::MAKEREADUNIQUE}; |
|
|
coherent_chi_e_xact_on_rn_i_ports: coverpoint cov_coherent_chi_e_xact_on_rn_i_ports { bins writenosnp_cleanshared_xacts = {svt_chi_transaction::WRITENOSNPFULL_CLEANSHARED,svt_chi_transaction::WRITENOSNPPTL_CLEANSHARED} ; bins writenosnp_cleaninvalid_xacts = {svt_chi_transaction::WRITENOSNPFULL_CLEANINVALID,svt_chi_transaction::WRITENOSNPPTL_CLEANINVALID} ; bins writeunique_cleanshared_xacts = {svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHARED,svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHARED} ; bins writenosnpzero_xact = {svt_chi_transaction::WRITENOSNPZERO}; bins writeuniquezero_xact = {svt_chi_transaction::WRITEUNIQUEZERO}; option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_chi_e_xact_on_rn_i_ports : Captures Coherent CHI Issue E transaction type on RN-I/RN-D ports, CHI Issue E or later
|
|
|
coherent_chi_e_xact_type: coverpoint cov_coherent_chi_e_xact_type { bins writeunique_cleanshared_xacts = {svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHARED,svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHARED} ; bins writeuniquezero_xact = {svt_chi_transaction::WRITEUNIQUEZERO}; bins readpreferunique_xact = {svt_chi_transaction::READPREFERUNIQUE}; bins makereadunique_xact = {svt_chi_transaction::MAKEREADUNIQUE}; option.weight = weight_val; type_option.weight = weight_val; } | |
coherent_chi_e_xact_type : Captures Coherent CHI Issue E transactions
|
|
|
non_coherent_chi_e_xact_on_rn_f_port1: coverpoint cov_non_coherent_chi_e_xact_on_rn_f_port1 { SVT_CHI_SYSTEM_MONITOR_ISSUE_E_DEF_COV_UTIL_NON_COHERENT_CHI_E_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
non_coherent_chi_e_xact_on_rn_f_port1 : Captures Non-Coherent CHI Issue E transaction type on RN-F port, CHI Issue E or later
|
|
|
non_coherent_chi_e_xact_on_rn_f_ports: coverpoint cov_non_coherent_chi_e_xact_on_rn_f_ports { SVT_CHI_SYSTEM_MONITOR_ISSUE_E_DEF_COV_UTIL_NON_COHERENT_CHI_E_XACT_ON_RN_F_PORTS_DETAILED_BINS option.weight = weight_val; type_option.weight = weight_val; } | |
non_coherent_chi_e_xact_on_rn_f_ports : Captures Non-Coherent CHI Issue E transaction type on RN-F port, CHI Issue E or later
|
|
|
bins writenosnp_cleanshared_xacts = {svt_chi_transaction::WRITENOSNPFULL_CLEANSHARED,svt_chi_transaction::WRITENOSNPPTL_CLEANSHARED} ; bins writenosnp_cleaninvalid_xacts = {svt_chi_transaction::WRITENOSNPFULL_CLEANINVALID,svt_chi_transaction::WRITENOSNPPTL_CLEANINVALID} ; bins writenosnpzero_xact = {svt_chi_transaction::WRITENOSNPZERO}; |
|
|
non_coherent_chi_e_xact_on_rn_i_ports: coverpoint cov_non_coherent_chi_e_xact_on_rn_i_ports { bins writenosnp_cleanshared_xacts = {svt_chi_transaction::WRITENOSNPFULL_CLEANSHARED,svt_chi_transaction::WRITENOSNPPTL_CLEANSHARED} ; bins writenosnp_cleaninvalid_xacts = {svt_chi_transaction::WRITENOSNPFULL_CLEANINVALID,svt_chi_transaction::WRITENOSNPPTL_CLEANINVALID} ; bins writenosnpzero_xact = {svt_chi_transaction::WRITENOSNPZERO}; option.weight = weight_val; type_option.weight = weight_val; } | |
non_coherent_chi_e_xact_on_rn_i_ports : Captures Non-Coherent CHI Issue E transaction type on RN-I/RN-D ports, CHI Issue E or later
|
|
|
outstanding_xacts_from_diff_src_wrt_current_txn_which_received_dbidrespord: coverpoint sys_xact.num_active_xacts_to_same_cacheline_from_other_src_when_curr_xact_received_dbidrespord { bins inprogress_xacts_0 = {0}; bins inprogress_xacts_1_10 = {[1:10]}; bins inprogress_xacts_11_20 = {[11:20]}; bins inprogress_xacts_21_50 = {[21:50]}; bins inprogress_xacts_51_100 = {[51:100]}; bins inprogress_xacts_more_than_100 = {[101:$]}; option.weight = weight_val; option.auto_bin_max = 6; type_option.weight = weight_val; } | |
outstanding_xacts_from_diff_src_wrt_current_txn_which_received_dbidrespord : Captures number of improgress transactions from different src/RN to same cacheline when current transaction from one of the RN has received dbidrespord response
|
|
|
snp_xacts_to_same_addr_with_diff_ns_bit_when_rn_xact_received_dbidrespord_resp: coverpoint sys_xact.snoop_txn_exists_to_other_rns_when_dbidrespord_resp_is_received_for_txn_to_one_rn { bins snp_xact_to_same_addr_but_with_diff_ns_exists = {1}; bins snp_xact_to_same_addr_but_with_diff_ns_doesnot_exists = {0}; option.weight = weight_val; type_option.weight = weight_val; } | |
snp_xacts_to_same_addr_with_diff_ns_bit_when_rn_xact_received_dbidrespord_resp : captures whether snoop transaction to same address with different ns bit to other RNs in system with respect to current transaction from one of the RN which received dbidrespord response
|
|
|
stashoncesep_opcode : coverpoint sys_xact.rn_xact.xact_type { bins stashoncesepunique = {svt_chi_transaction::STASHONCESEPUNIQUE}; bins stashoncesepshared = {svt_chi_transaction::STASHONCESEPSHARED}; type_option.weight = weight_val; option.weight = weight_val; } | |
stashoncesep_opcode : Captures StashOnceSep* opcodes
|
|
|
|
0
|
|
|
3
| |
Width of Resp field in the TagMatch response
|
|
|
8
| |
Width of TAGGROUPID fields-- applicable for CHI Issue E
|
|
|
2
| |
Width of TAGOP fields-- applicable for CHI Issue E
|
|
|
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
|
|
|
`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
|
|
|
12_0_1
|
|
|
12_0_0
|
|
|
|
|
2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2
|
|
|
|
|
(xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANINVALID || xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANSHAREDPERSISTSEP || `ifdef SVT_CHI_ISSUE_F_ENABLE xact.xact_type == svt_chi_transaction::WRITEBACKFULL_CLEANINVALIDPOPA || `endif xact.xact_type == svt_chi_transaction::WRITECLEANFULL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITECLEANFULL_CLEANSHAREDPERSISTSEP) |
|
|
(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 || 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) |
|
|
(xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANINVALID || xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHAREDPERSISTSEP || `ifdef SVT_CHI_ISSUE_F_ENABLE xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANINVALIDPOPA || `endif xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITEUNIQUEFULL_CLEANSHAREDPERSISTSEP) |
|
|
(xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANINVALID || xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANSHAREDPERSISTSEP || `ifdef SVT_CHI_ISSUE_F_ENABLE xact.xact_type == svt_chi_transaction::WRITENOSNPFULL_CLEANINVALIDPOPA || xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANINVALIDPOPA || `endif 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::WRITENOSNPPTL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANINVALID || xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANSHAREDPERSISTSEP || `ifdef SVT_CHI_ISSUE_F_ENABLE xact.xact_type == svt_chi_transaction::WRITENOSNPPTL_CLEANINVALIDPOPA || `endif xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHARED || xact.xact_type == svt_chi_transaction::WRITEUNIQUEPTL_CLEANSHAREDPERSISTSEP) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(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
|
|
|
6
|
|
|
2
|
|
|
256
| |
Number of automatic_bins to create for ADDR field of DTI_TBU_TRANS_REQ message
|
|
|
256
| |
Number of automatic_bins to create for ADDR field of DTI_TBU_TRANS_RESP message
|
|
|
8
|
|
|
2
|
|
|
0
|
|
|
svt_dti_master_transaction
|
|
|
64
|
|
|
|
|
256
|
|
|
|
|
8
|
|
|
32
|
|
|
256
| |
Maximum number of outstanding transactions
|
|
|
64
|
|
|
32
|
|
|
20
|
|
|
256
|
|
|
8
| |
Macros to support higher spec versions DTI Spec G,F,E,E_b
|
|
|
8
|
|
|
1
|
|
|
0
| |
PAGE RESPONSE field types of DTI_ATS_PAGE_RESP message
|
|
|
3
|
|
|
2
|
|
|
9
|
|
|
100
| |
Number of invalidation and sync request messages to be sent
|
|
|
3
| |
Number of translations done before sending invalidation -sync request messages
|
|
|
3
|
|
|
1
|
|
|
svt_dti_transaction
|
|
|
SVT_DTI_TBU_IMPTYPE1_MASTER_REQRESP_MSG
|
|
|
SVT_DTI_TBU_IMPTYPE2_MASTER_REQRESP_MSG
|
|
|
160
|
|
|
25
|
|
|
26
|
|
|
160
|
|
|
27
|
|
|
28
|
|
|
if (cfg.env_cfg.dti_tx_cfg[0].tid_enable && cfg.env_cfg.dti_tx_cfg[0].tdest_enable) { tid==val;tdest==tid; }else if(cfg.env_cfg.dti_tx_cfg[0].tid_enable ) { tid==val; } | |
@groupnameambausernonmodifiable
|
|
|
SVT_DTI_TBU_IMPTYPE1_SLAVE_REQRESP_MSG
|
|
|
SVT_DTI_TBU_IMPTYPE2_SLAVE_REQRESP_MSG
|
|
|
160
|
|
|
29
|
|
|
30
|
|
|
160
|
|
|
31
|
|
|
32
|
|
|
if (cfg.env_cfg.dti_tx_cfg[0].tid_enable && cfg.env_cfg.dti_tx_cfg[0].tdest_enable) { tid==val;tdest==tid; }else if(cfg.env_cfg.dti_tx_cfg[0].tdest_enable ) { tdest==val; } |
|
|
4
|
|
|
1
|
|
|
1
|
|
|
3
|
|
|
0
|
|
|
0
|
|
|
3
|
|
|
2
|
|
|
4
|
|
|
5
|
|
|
2
|
|
|
3
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
6
|
|
|
3
|
|
|
4
|
|
|
0
|
|
|
8
|
|
|
5
|
|
|
2
|
|
|
7
|
|
|
3
|
|
|
0
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
4
|
|
|
5
|
|
|
6
|
|
|
3
|
|
|
1
|
|
|
2
|
|
|
0
|
|
|
1
|
|
|
2
|
|
|
1
|
|
|
0
|
|
|
3
|
|
|
0
|
|
|
2
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
0
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
0
|
|
|
2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
( (((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 ) && (xact.operation ==9'h47)) || ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0 ) && (xact.operation ==9'h47 || xact.operation==9'h105)) ) ) | |
@groupnameambausernonmodifiable
|
|
|
( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation == 9'h180|| xact.operation == 9'h190|| xact.operation == 9'h191|| xact.operation == 9'h192|| xact.operation == 9'h195|| xact.operation == 9'h198|| xact.operation == 9'h199|| xact.operation == 9'h1C0|| xact.operation == 9'h1C1|| xact.operation == 9'h1C8|| xact.operation == 9'h1C9 ) ) ) |
|
|
( ((xact.port_cfg.dti_version == svt_dti_port_configuration::DTI3_0 || xact.port_cfg.dti_version == svt_dti_port_configuration::DTI4_0) && ( xact.operation == 9'h180|| xact.operation == 9'h190|| xact.operation == 9'h191|| xact.operation == 9'h192|| xact.operation == 9'h195|| xact.operation == 9'h198|| xact.operation == 9'h199|| xact.operation == 9'h1C0|| xact.operation == 9'h1C1|| xact.operation == 9'h1C8|| xact.operation == 9'h1C9 ) ) ) |
|
|
0
|
|
|
1
|
|
|
1
|
|
|
2
|
|
|
3
|
|
|
2
|
|
|
3
|
|
|
4
|
|
|
5
|
|
|
4
|
|
|
|
64
|
|
|
1
|
|
|
0
|
|
|
if(!axi_sys_common_cfg.debug_system_monitor) svt_amba_debug(id, msg); else if(axi_sys_common_cfg.debug_system_monitor < 4) svt_amba_debug(id, msg) |
|
|
`ifdef SVT_UVM_TECHNOLOGY ,reporter `elsif SVT_OVM_TECHNOLOGY ,reporter `else `endif |
|
|
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 |