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 AHB SVT UVM Documentation:
AMBA User Modifiable Macros
AMBA User Non-Modifiable Macros
|
|
|
|
|
|
|
|
|
|
|
|
6
|
|
|
4
|
|
|
1
|
|
|
1024
|
|
|
16
|
|
|
|
|
|
|
|
|
|
|
4
|
|
|
0.01
|
|
|
0.01
|
|
|
0.01
|
|
|
0.01
|
|
|
32
|
|
|
|
|
64
|
|
|
1
|
|
|
16
|
|
|
16
|
|
|
16
|
|
|
16
|
|
|
16
|
|
|
16
|
|
|
16
|
|
|
128
|
|
|
0.01
|
|
|
0.01
|
|
|
0.01
|
|
|
0.01
|
|
|
1
|
|
|
interconnect_env
|
|
|
16
|
|
|
256
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
|
|
2
|
|
|
2
|
|
|
4
|
|
|
|
|
4
|
|
|
|
|
|
|
3
|
|
|
5
|
|
|
4
|
|
|
3
|
|
|
2
|
|
|
|
|
|
|
2
|
|
|
2
|
|
|
4
|
|
|
8
|
|
|
16
|
|
|
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) ) |
|
|
2
| |
if define SVT_AXI_LOCK_WIDTH=1, also define SVT_AXI_LOCK_WIDTH_AS_ONE due to compilation warnings
|
|
|
0.01
|
|
|
0.01
|
|
|
16
|
|
|
10
|
|
|
|
|
6
|
|
|
6
|
|
|
8
|
|
|
4
|
|
|
|
|
4
|
|
|
|
|
64
|
|
|
128
|
|
|
64
|
|
|
6
|
|
|
6
|
|
|
8
|
|
|
4
|
|
|
16
|
|
|
4
|
|
|
10
|
|
|
32
|
|
|
64
|
|
|
10
|
|
|
16
|
|
|
|
|
10
|
|
|
16
|
|
|
8
|
|
|
1024
|
|
|
250
|
|
|
8
|
|
|
|
|
16
|
|
|
|
|
16
|
|
|
|
|
16
|
|
|
|
|
16
|
|
|
8
|
|
|
8
|
|
|
16
|
|
|
1
|
|
|
32
|
|
|
20
|
|
|
9
|
|
|
4
|
|
|
1024
|
|
|
4
|
|
|
128
|
|
|
10
|
|
|
128
|
|
|
|
|
|
|
|
|
|
|
16
|
|
|
4
|
|
|
8
|
|
|
1000
|
|
|
8192
|
|
|
|
|
|
|
64
|
|
|
64
|
|
|
256
|
|
|
1
|
|
|
2
|
|
|
(4*CEIL(SVT_AXI_MAX_DATA_WIDTH,128))
|
|
|
16
|
|
|
|
|
|
|
4
|
|
|
128
|
|
|
4
|
|
|
8
|
|
|
16
|
|
|
16
|
|
|
8
|
|
|
16
|
|
|
4
|
|
|
16
|
|
|
1
|
|
|
|
|
1000
|
|
|
8192
|
|
|
|
|
8
|
|
|
|
|
16
|
|
|
0
|
|
|
0
|
|
|
3
|
|
|
0
|
|
|
0
|
|
|
0
|
|
|
3
|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
0.01
|
|
|
0.01
|
|
|
256
|
|
|
((SVT_AXI_MAX_DATA_WIDTH/8)> 8)?(8):(SVT_AXI_MAX_DATA_WIDTH/8)
|
|
|
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.
|
|
|
AXI3
|
|
|
3
|
|
|
4
|
|
|
10
|
|
|
10
|
|
|
10
|
|
|
4
|
|
|
4
|
|
|
3
|
|
|
0.01
|
|
|
0.01
|
|
|
5
|
|
|
11
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
1
|
|
|
3
|
|
|
2
|
|
|
|
|
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
|
|
|
|
|
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
|
|
|
7
|
|
|
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
|
|
|
2
|
|
|
2
|
|
|
1
|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
2
|
|
|
128
|
|
|
|
|
|
|
|
|
|
|
1
|
|
|
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
|
|
|
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
|
|
|
|
|
17
|
|
|
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::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
|
|
|
|
|
0
|
|
|
1
|
|
|
16
|
|
|
16
|
|
|
1
|
|
|
5
|
|
|
$sformatf("{OBJECT_NUM('d%0d) PORT_ID('d%0d) PORT_NAME(%0s) TYPE(%0s) COHERENT_XACT_TYPE(%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.coherent_xact_type.name:"null"), ((xact != null)?xact.id:0), ((xact != null)?!xact.prot_type[1]:0), ((xact != null)?xact.addr:0)) |
|
|
1'b1
|
|
|
0
|
|
|
2
|
|
|
0
|
|
|
7
|
|
|
6
|
|
|
5
|
|
|
4
|
|
|
3
|
|
|
2
|
|
|
1
|
|
|
64
|
|
|
'b00
|
|
|
1
|
|
|
$sformatf("{%0sOBJECT_NUM('d%0d) PORT_ID('d%0d) %0s PORT_NAME(%0s) TYPE(%0s)%0s%0s%0s%0s%0s%0s%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.xact_type.name!="DATA_STREAM")?($sformatf("AUTO_GENERATED_XACT('b%0b)",xact.is_auto_generated)):""):""), (((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.name == "DATA_STREAM")?($sformatf(" TID('h%0x)",xact.tid)):""), ((xact != null && xact.xact_type.name == "DATA_STREAM")?($sformatf(" TDEST('h%0x)",xact.tdest)):""), ((xact != null && xact.xact_type.name != "DATA_STREAM")?($sformatf(" ID('h%0x)",xact.id)):""), ((xact != null && xact.xact_type.name != "DATA_STREAM")?($sformatf(" PROT_TYPE(%0s)",xact.prot_type.name)):""), ((xact != null && xact.xact_type.name != "DATA_STREAM")?($sformatf(" ADDR('h%0x)",xact.addr)):""), ((xact != null && xact.xact_type.name != "DATA_STREAM")?($sformatf(" BURST(%0s)",xact.burst_type.name)):""), ((xact != null && xact.xact_type.name != "DATA_STREAM")?($sformatf(" SIZE(%0s)",xact.burst_size.name)):""), ((xact != null)?((xact.xact_type.name!="DATA_STREAM")?($sformatf(" LENGTH('d%0d)",xact.burst_length)):($sformatf(" LENGTH('d%0d)",xact.stream_burst_length))):""), ((xact != null && xact.xact_type.name != "DATA_STREAM")?($sformatf(" CACHE_TYPE('d%0d)",xact.cache_type)):"")) |
|
|
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) %0s PORT_NAME(%0s) TYPE(%0s)%0s%0s LENGTH('h%0h)%0s%0s%0s%0s%0s%0s%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.xact_type.name!="DATA_STREAM")?($sformatf("AUTO_GENERATED_XACT('b%0b)",xact.is_auto_generated)):""):""), (((xact != null)&&(xact.port_cfg!=null))?xact.port_cfg.get_port_name():""), ((xact != null)?xact.xact_type.name:"null"), ((xact != null)?((xact.xact_type.name!="DATA_STREAM")?($sformatf(" BURST(%0s)",xact.burst_type.name)):""):""), ((xact != null)?((xact.xact_type.name!="DATA_STREAM")?($sformatf(" SIZE(%0s)",xact.burst_size.name)):""):""), ((xact != null)?((xact.xact_type.name!="DATA_STREAM")?xact.burst_length:xact.stream_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() == 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.name!="DATA_STREAM")?($sformatf(" ID('h%0x)",xact.id)):""), ((xact != null && xact.xact_type.name!="DATA_STREAM")?($sformatf(" SECURE('h%0h)",!xact.prot_type[1])):""), ((xact != null && xact.xact_type.name!="DATA_STREAM")?($sformatf(" ADDR('h%0x)",xact.addr)):""), ((xact != null && xact.xact_type.name!="DATA_STREAM")?($sformatf(" CACHE_TYPE('h%0h)",xact.cache_type)):""), ((xact != null && xact.xact_type.name == "DATA_STREAM")?($sformatf(" TID('h%0x)",xact.tid)):""), ((xact != null && xact.xact_type.name == "DATA_STREAM")?($sformatf(" TDEST('h%0x)",xact.tdest)):""), ((xact != null)?(xact.atomic_type==svt_axi_transaction::EXCLUSIVE)?" EXCL":"":""), ((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
|
|
|
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
|
|
|
|
|
128
|
|
|
16
|
|
|
512
|
|
|
$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
|
|
|
|
|
`define SVT_AXI_VALID_MASTER_IDX_0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`define SVT_AXI_VALID_SLAVE_IDX_0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10
|
|
|
12
|
|
|
14
|
|
|
15
|
|
|
2,4,8,16
|
|
|
|
|
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
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
1
|
|
|
`ifdef SVT_UVM_TECHNOLOGY uvm_object_utils(obj) `elsif SVT_OVM_TECHNOLOGY `ovm_object_utils(obj) `endif |
|
|
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 |
|
|
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_AMBA_DATA_UTIL_ENABLE_INTERNAL_MESSAGING svt_debug(id, msg) `else do begin end while(0) `endif |
|
|
svt_err_check_stats
|
|
|
|
2
|
|
|
6
|
|
|
slave_0,slave_1,slave_2,slave_3,slave_4,slave_5
|
|
|
`ifdef SVT_AMBA_DATA_UTIL_ENABLE_INTERNAL_MESSAGING svt_verbose(id, msg) `else do begin end while(0) `endif |
|
|
|
|
2
|
|
|
28
|
|
|
29
|
|
|
0
|
|
|
|
|
8
| |
@groupname
|
|
|
|
|
8
| |
@groupname
|
|
|
|
|
|
|
1
|
|
|
32
|
|
|
4
|
|
|
16
|
|
|
0
|
|
|
0
|
|
|
EXCLUDE_UNSTARTED_XACT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32
|
|
|
1
|
|
|
0
|