Designware Apb Ictl
Designware Apb Ictl
2.09a
July 2018
DesignWare DW_apb_ictl Databook
Synopsys, Inc.
690 E. Middlefield Road
Mountain View, CA 94043
www.synopsys.com
Contents
Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Related Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Web Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Customer Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Product Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Chapter 1
Product Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1 DesignWare System Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2 General Product Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.1 DW_apb_ictl Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4 Standards Compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.5 Verification Environment Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6 Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.7 Where to Go From Here . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Chapter 2
Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 IRQ Interrupt Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1 IRQ Interrupt Polarity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.2 IRQ Software-Programmable Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.3 IRQ Enable and Masking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.4 IRQ Software-Programmable Priority Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.5 IRQ Priority Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.6 IRQ Interrupt Status Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.7 IRQ Interrupt Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Vector Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.1 Handshaking Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.2 Priority-Level Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.3 Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.4 Interrupt Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 FIQ Interrupt Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.1 FIQ Interrupt Polarity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4.2 FIQ Software-Programmable Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4.3 FIQ Enable and Masking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Chapter 4
Signal Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.1 APB Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2 Miscellaneous Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3 Interrupt Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.4 Vector Interrupt and Handshake Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5 Interrupt Source Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Chapter 5
Register Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1 DW_apb_ictl_mem_map/DW_apb_ictl_addr_block1 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.1 IRQ_INTEN_L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.1.2 IRQ_INTEN_H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.1.3 IRQ_INTMASK_L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.1.4 IRQ_INTMASK_H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.1.5 IRQ_INTFORCE_L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.1.6 IRQ_INTFORCE_H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.1.7 IRQ_RAWSTATUS_L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.1.8 IRQ_RAWSTATUS_H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.1.9 IRQ_STATUS_L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1.10 IRQ_STATUS_H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1.11 IRQ_MASKSTATUS_L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.1.12 IRQ_MASKSTATUS_H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.1.13 IRQ_FINALSTATUS_L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.1.14 IRQ_FINALSTATUS_H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.1.15 IRQ_VECTOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.1.16 IRQ_VECTOR_n (for n = 0; n <= ICT_IRQ_PLEVEL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
5.1.17 FIQ_INTEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.1.18 FIQ_INTMASK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.1.19 FIQ_INTFORCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.1.20 FIQ_RAWSTATUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.1.21 FIQ_STATUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.1.22 FIQ_FINALSTATUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.1.23 IRQ_PLEVEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.1.24 IRQ_INTERNAL_PLEVEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.1.25 ICTL_VERSION_ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.1.26 IRQ_PR_n (for n = 0; n <= ICT_IRQ_NUM-1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.1.27 IRQ_VECTOR_DEFAULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Chapter 6
Programming the DW_apb_ictl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.1 Programming Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 Reading/Writing Registers Wider than APB_DATA_WIDTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.3 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.4 Interrupt Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Chapter 7
Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.1 Overview of Vera Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.1.1 Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.1.2 Slave Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.1.3 FIQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.1.4 IRQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.1.5 Priority Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.1.6 Dynamic Reconfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.2 Overview of DW_apb_ictl Testbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.3 Running Simulations from the Command Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.4 Command Line Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Chapter 8
Integration Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.1 Bus Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.2 Reading and Writing from an APB Slave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.2.1 Reading From Unused Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
8.2.2 32-bit Bus System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
8.2.3 16-bit Bus System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.2.4 8-bit Bus System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.3 Write Timing Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
8.4 Read Timing Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.5 Accessing Top-level Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.6 Coherency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.6.1 Writing Coherently . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.6.2 Reading Coherently . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
8.7 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
8.7.1 Power Consumption, Frequency, and Area Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Appendix A
Synchronizer Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
A.1 Synchronizers Used in DW_apb_ictl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
A.2 Synchronizer 1: Simple Double Register Synchronizer (DW_apb_ictl) . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Chapter B
Internal Parameter Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Appendix C
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Revision History
This table shows the revision history for the databook from release to release. This is being tracked from
version 2.03b onward.
2.07a June 2015 ■ Added “Running SpyGlass® Lint and SpyGlass® CDC”
■ Added “Running SpyGlass on Generated Code with coreAssembler”
■ Chapter 4, “Signal Descriptions” auto-extracted from the RTL
■ Added Chapter B, “Internal Parameter Descriptions”
(Continued)
2.05e Oct 2012 Added the product code on the cover and in Table 1-1
2.05a Sep 2010 Corrected names of include files and vcs command used for simulation
2.04a Dec 2009 Updated databook to new template for consistency with other IIP/VIP/PHY
databooks
2.04a May 2009 Removed references to QuickStarts, as they are no longer supported
2.03c Aug 2008 Added note about irq_intpfilt signal and changed names of signals in Figures 6
and 10
2.03b Dec 2007 ■ Updated for revised installation guide and consolidated release notes titles
■ Changed references of “Designware AMBA” to simply “DesignWare”
Preface
This databook provides information that you need to interface the DesignWare APB Interrupt Controller
(DW_apb_ictl) component to the Advanced Peripheral Bus (APB). This component conforms to the AMBA
Specification, Revision 2.0 from Arm®.
The information in this databook includes a functional description, pin and parameter descriptions, and a
memory map. Also provided are an overview of the component testbench, a description of the tests that are
run to verify the coreKit, and synthesis information for the coreKit.
Organization
The chapters of this databook are organized as follows:
■ Chapter 1, “Product Overview” provides a system overview, a component block diagram, basic
features, and an overview of the verification environment.
■ Chapter 2, “Functional Description” describes the functional operation of the DW_apb_ictl.
■ Chapter 3, “Parameter Descriptions” identifies the configurable parameters supported by the
DW_apb_ictl.
■ Chapter 4, “Signal Descriptions” provides a list and description of the DW_apb_ictl signals.
■ Chapter 5, “Register Descriptions” describes the programmable registers of the DW_apb_ictl.
■ Chapter 6, “Programming the DW_apb_ictl” provides information needed to program the
configured DW_apb_ictl.
■ Chapter 7, “Verification” provides information on verifying the configured DW_apb_ictl.
■ Chapter 8, “Integration Considerations” includes information you need to integrate the configured
DW_apb_ictl into your design.
■ Appendix B, “Internal Parameter Descriptions” describes the programmable registers of the
DW_apb_ictl.
■ Appendix C, “Glossary” provides a glossary of general terms.
Related Documentation
■ Using DesignWare Library IP in coreAssembler – Contains information on getting started with using
DesignWare SIP components for AMBA 2 and AMBA 3 AXI components within coreTools
■ coreAssembler User Guide – Contains information on using coreAssembler
■ coreConsultant User Guide – Contains information on using coreConsultant
To see a complete listing of documentation within the DesignWare Synthesizable Components for AMBA 2,
see the to the Guide to Documentation for DesignWare Synthesizable Components for AMBA 2 and AMBA
3 AXI.
Web Resources
■ DesignWare IP product information: http://www.designware.com
■ Your custom DesignWare IP page: http://www.mydesignware.com
■ Documentation through SolvNet: http://solvnet.synopsys.com (Synopsys password required)
■ Synopsys Common Licensing (SCL): http://www.synopsys.com/keys
Customer Support
To obtain support for your product:
■ First, prepare the following debug information, if applicable:
❑ For environment setup problems or failures with configuration, simulation, or synthesis that
occur within coreConsultant or coreAssembler, use the following menu entry:
File > Build Debug Tar-file
Check all the boxes in the dialog box that apply to your issue. This menu entry gathers all the
Synopsys product data needed to begin debugging an issue and writes it to the file
<core tool startup directory>/debug.tar.gz.
❑ For simulation issues outside of coreConsultant or coreAssembler:
■ Create a waveforms file (such as VPD or VCD)
■ Identify the hierarchy path to the DesignWare instance
■ Identify the timestamp of any signals or locations in the waveforms that are not understood
■ Then, contact Support Center, with a description of your question and supplying the requested
information, using one of the following methods:
❑ For fastest response, use the SolvNet website. If you fill in your information as explained, your
issue is automatically routed to a support engineer who is experienced with your product. The
Sub Product entry is critical for correct routing.
Go to http://solvnet.synopsys.com/EnterACall and click Open A Support Case to enter a call.
Provide the requested information, including:
■ Product: DesignWare Library IP
■ Sub Product: AMBA
■ Tool Version: <product version number>
■ Problem Type:
■ Priority:
■ Title: DW_apb_ictl
■ Description: For simulation issues, include the timestamp of any signals or locations in
waveforms that are not understood
After creating the case, attach any debug files you created in the previous step.
❑ Or, send an e-mail message to [email protected] (your email will be queued and
then, on a first-come, first-served basis, manually routed to the correct support engineer):
■ Include the Product name, Sub Product name, and Tool Version number in your e-mail (as
identified earlier) so it can be routed correctly.
■ For simulation issues, include the timestamp of any signals or locations in waveforms that are
not understood
■ Attach any debug files you created in the previous step.
❑ Or, telephone your local support center:
■ North America:
Call 1-800-245-8005 from 7 AM to 5:30 PM Pacific time, Monday through Friday.
■ All other countries:
https://www.synopsys.com/support/global-support-centers.html
Product Code
Table 1-1 lists all the components associated with the product code for DesignWare AMBA Fabric.
Table 1-1 DesignWare AMBA Fabric – Product Code: 3768-0
DW_ahb High performance, low latency interconnect fabric for AMBA 2 AHB
DW_apb High performance, low latency interconnect fabric & bridge for AMBA 2 APB for direct
connect to AMBA 2 AHB fabric
DW_axi High performance, low latency interconnect fabric for AMBA 3 AXI
DW_axi_a2x Configurable bridge between AXI and AHB components or AXI and AXI components.
DW_axi_gm Simplify the connection of third party/custom master controllers to any AMBA 3 AXI fabric
DW_axi_gs Simplify the connection of third party/custom slave controllers to any AMBA 3 AXI fabric
DW_axi_hmx Configurable high performance interface from and AHB master to an AXI slave
DW_axi_x2h Bridge from AMBA 3 AXI to AMBA 2.0 AHB, enabling easy integration of legacy AHB
designs with newer AXI systems
DW_axi_x2p High performance, low latency interconnect fabric and bridge for AMBA 2 & 3 APB for direct
connect to AMBA 3 AXI fabric
1
Product Overview
This chapter describes the DesignWare APB Interrupt Controller, referred to as DW_apb_ictl.
DW_axi_x2x DW_axi_x2x
Arbitration,
DW_axi [2]
Decode, & Mux
DW_apb_uart … DW_apb_i2c
Non-DW
AHB Master
Non-DW
Master
Non-DW
Slave
Arbitration,
DW_axi
Decode, & Mux
VIP
RAM DW_axi_rs
Master/Slave DW_axi_x2h Memory Models
AXI
axi_monitor_vmt
ahb_monitor_vmt
AHB Non-DW AXI
Master/Slave DW_ahb_ictl DW_memctl DW_ahb_dmac
Master/Slave
VIP
Arbitration,
DW_ahbDW_ahb
Decode, & Mux
Application-
DW_ahb_h2h,
DW_ahb_dmac DW_ahb_icm Specific
High-speed
DW_ahb_eh2h Peripherals
Logic
USB, Ethernet,
PCI-X, and so on
DW_ahb [2] Non-DW
Peripherals
apb_monitor_vmt Application-
APB Slave Specific Non-DW
VIP Logic Peripherals
DW_ahb
DW_apb AHB/APB Bridge
You can connect, configure, synthesize, and verify the DW_apb_ictl within a DesignWare subsystem using
coreAssembler, documentation for which is available on the web in the coreAssembler User Guide.
If you want to configure, synthesize, and verify a single component such as the DW_apb_ictl component,
you might prefer to use coreConsultant, documentation for which is available in the coreConsultant User
Guide.
DW_apb_ictl
IRQ
Generation
Interrupt FIQ
Registers Generation
Vector
Generation
&
Masking
1.3 Features
The DW_apb_ictl supports the following features:
■ 2 to 64 IRQ normal interrupt sources
■ 1 to 8 FIQ fast interrupt sources (optional)
■ Vectored interrupts (optional)
■ Vector Port
■ Software interrupts
■ Priority filtering (optional)
■ Masking
1.6 Licenses
Before you begin using the DW_apb_ictl, you must have a valid license. For more information, see
“Licenses” section in the DesignWare Synthesizable Components for AMBA 2, AMBA 3 AXI, and AMBA 4 AXI
Installation Guide
2
Functional Description
This chapter describes the functional operation of the DesignWare APB Interrupt Controller, referred to as
DW_apb_ictl. Following topics are covered in this chapter:
■ “Overview” on page 17
■ “IRQ Interrupt Processing” on page 18
■ “Vector Port” on page 22
■ “FIQ Interrupt Processing” on page 25
■ “Scan Mode” on page 27
2.1 Overview
The DW_apb_ictl component is a configurable, vectored interrupt controller for DesignWare systems. It
supports from 2 to 64 normal interrupt (IRQ) sources that are processed to produce a single IRQ interrupt to
the processor. It supports from 1 to 8 fast interrupt (FIQ) sources that are processed to produce a single FIQ
interrupt to the processor. All interrupt processing is combinational so that interrupts are propagated if the
bus interface of the DW_apb_ictl is powered down. This means that reading any of the interrupt status
registers (raw, status, or final_status) is simply returning the status of the combinational logic, since there
are no flip-flops associated with these registers. It is the your responsibility to make sure that the interrupts
stay asserted until they are serviced.
IRQ interrupts support software interrupts, priority filtering, and vector generation. They have configurable
input and output polarity. FIQ interrupts are similar to IRQ interrupts, with the exception that priority
filtering and vector generation are not included.
DW_apb_ictl
IRQ
Generation
Interrupt FIQ
Registers Generation
Vector
Generation
&
Masking
The irq_intpfilt signal is an internally-generated priority mask signal. Its purpose is to mask
Note any IRQ sources with a priority level below the irq_plevel register.
The processing of the interrupt sources is shown in Figure 2-2 and described in the following sections.
irq_rawstatus_<l/h>[x]
irq_status_<l/h>[x]
irq_maskstatus_<l/h>[x]
irq_finalstatus_<l/h>[x]
irq_intsrc[x]
irq_intforce_<l/h>[x]
irq_n
ICT_IRQSRC_POL_x
irq
irq_inten_<l/h>[x]
irq_intmask_<l/h>[x]
irq_intpfilt[x]
Regardless of the polarity you configure, the reset state of each bit in the irq_intforce registers is always
inactive.
■ The highest priority level from among the remaining active interrupts is used to select one of the
sixteen interrupt vectors that have been programmed or configured into the irq_vector registers.
■ The user retrieves the vector associated with the highest priority level that has an active interrupt
source by reading the irq_vector register
The irq_vector register is “read coherent” – that is, you need to be guaranteed that you are reading a valid
value for the entire vector. In a system where the APB data width is less than the width of the irq_vector
register, the contents of irq_vector is stored in a shadow location when the user starts to read the irq_vector
register so that the irq_vector register can be read without being corrupted by it being changed by
subsequent interrupts occurring. For more information on coherency, see “Integration Considerations” on
page 93.
pclk
irq_n
irq_ack
irq_addr_v
priority level less than or equal to the priority of the interrupt source just sampled by the processor; this
prevents the processor from re-sampling the same interrupt and also prevents lower-priority interrupt
sources from causing an assertion of irq_n during the interrupt service routine (ISR) of the sampled
interrupt. If the interrupt source currently being processed has the highest possible priority level (4'hF), then
all IRQs are masked until software resets the priority filter.
The processor can reset the level of the priority filter to its previous setting by writing a new priority level to
the irq_internal_plevel register. Ideally this should be one of the last steps in the ISR code.
If a higher-priority interrupt occurs during the handshaking process, irq_n stays asserted when irq_addr_v
de-asserts, and the DW_apb_ictl waits for the processor to assert irq_ack in order to start the handshaking
process for the new interrupt.
Figure 2-3 shows the vector port handshaking when the bus clock and processor clock are identical
(synchronous). In this case, there is a one-cycle delay from the assertion of irq_ack by the processor to the
assertion of irq_addr_v by the DW_apb_ictl. Also there is a one-cycle delay from the de-assertion of irq_ack
by the processor to the de-assertion of irq_addr_v by the DW_apb_ictl.
For writes to the irq_internal_plevel register, the write data on the bus is ignored. The only
Note effect of a write to the irq_internal_plevel register is to reset its value to that of the irq_plevel
register.
Splitting up the system priority level into two separate locations enables you to have read/write access to
the current system priority level independent of the temporary priority level used during the ISR. If a higher
priority IRQ occurs while a stacked priority is being used, irq_internal_plevel is reset to the value of
irq_plevel from the next hclk cycle. This new IRQ is stacked after the handshaking procedure, described in
“Handshaking Operation” on page 22.
If the ICT_ADD_VECTOR_PORT parameter is set to false, the irq_internal_plevel register does not exist,
and only the irq_plevel register is used to set the current priority level of the DW_apb_ictl.
Figure 2-4 shows how the priority filter value is changed by the DW_apb_ictl for the duration of the ISR.
CLK
psel
pwrite
pwdata 0xX
irq_intsrc[0]
irq_intsrc[1]
irq_plevel 0x1
irq_n
irq_ack
irq_addr_v
In this example, a lower-priority interrupt occurs after the handshaking but before the irq_internal_plevel
register is reset by the processor. Sometime later the processor writes to the irq_internal_plevel register in
order to reset the priority filter level, and the lower-priority interrupt is allowed to propagate to the
processor; the bus data is ignored in the write to the irq_internal_plevel register.
2.3.3 Synchronization
You can configure the DW_apb_ictl using the ICT_ADD_VECTOR_PORT_SYNC parameter to add
synchronization to vector port signals in order to support processors running at a different asynchronous
frequency to the bus clock. If this parameter is enabled, the DW_apb_ictl adds N-stages of pclk register
synchronization to all signals coming from the processor. Where N=
ICT_ADD_VECTOR_PORT_SYNC_DEPTH. By default, DW_apb_ictl adds 2-stages of pclk register
synchronization to all signals coming from the processor.
Figure 2-5 shows vector port handshaking with synchronization enabled. Processor signals coming into the
DW_apb_ictl go through two levels of metastability registers that give protection from one hclk cycle of
metastability. In this situation, signals from the DW_apb_ictl to the processor should be synchronized
external to the DW_apb_ictl.
proc_clk
pclk
irq_n
irq_ack
irq_addr_v
N cycles of synchronization time are additional to the one cycle latency described for the
Note synchronous processor and AHB bus clocks, which yields a total of three cycles of latency
between irq_ack and irq_addr_v.
Synchronization is not required for integer multiple or quasi-synchronous processor and bus clocks. This is
achieved when the parameter ICT_ADD_VECTOR_PORT_SYNC = 0.
Figure 2-6 shows the processing of the interrupt sources, which is described in the following sections.
fiq_rawstatus_<l/h>[x]
fiq_status_<l/h>[x]
fiq_finalstatus_<l/h>[x]
fiq_intsrc[x]
fiq_intforce_<l/h>[x] fiq_n
ICT_FIQSRC_x fiq
fiq_inten_<l/h>[x]
fiq_intmask_<l/h>[x]
64
32 4 4
Combinational 4
Logic 1
Combinational
0 Logic
32 0
4
scan_mode
3
Parameter Descriptions
This chapter details all the configuration parameters. You can use the coreConsultant GUI configuration
reports to determine the actual configured state of the controller. Some expressions might refer to TCL
functions or procedures (sometimes identified as <functionof>) that coreConsultant uses to make
calculations. The exact formula used by these TCL functions is not provided in this chapter. However, when
you configure the controller in coreConsultant, all TCL functions and parameters are evaluated completely;
and the resulting values are displayed where appropriate in the coreConsultant GUI reports.
The parameter descriptions in this chapter include the Enabled: attribute which indicates the values
required to be set on other parameters before you can change the value of this parameter.
These tables define all of the user configuration options for this component.
■ Top Level Parameters on page 30
■ Vector Port Interface on page 34
■ Priority Controller Configuration on page 35
■ Configuration of Vector Generation Module on page 36
■ Individual IRQ Polarity Configuration on page 37
■ Individual FIQ Polarity Configuration on page 38
Label Description
Use DesignWare Foundation Specifies whether the DesignWare Foundation Synthesis Library must be used. The
Synthesis Library component code utilizes DesignWare Foundation parts for optimal Synthesis QoR.
Customers with only a DesignWare license must use Foundation parts. Customers
with only a Source license cannot use Foundation parts. Customers with both
Source and DesignWare licenses have the option of using Foundation parts.
Values:
■ false (0)
■ true (1)
Default Value: True if DesignWare License is available; False if no DesignWare
License is available
Enabled: Parameter is enabled if customer has both Source and DesignWare
licenses.
Parameter Name: USE_FOUNDATION
System Configuration
APB Data bus width Specifies the APB system data bus width.
Values: 8, 16, 32
Default Value: 32
Enabled: Always
Parameter Name: APB_DATA_WIDTH
Make irq_intforce and When this parameter is set to 1, the irq_intforce and fiq_intforce register become
fiq_intforce active high? active-high. Writing a 1 to the corresponding interrupt source bit forces an interrupt
for that source, regardless of the interrupt sources' configured polarity.
Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: Always
Parameter Name: ICT_FORCEREG_ACTIVE_HIGH
Active-high Level for IRQ/FIQ When this parameter is set to 1, the polarity of the FIQ and IRQ interrupt output
outputs? signals is active-high. Both fast and normal interrupts are of the same polarity.
Values:
■ false (0)
■ true (1)
Default Value: true
Enabled: Always
Parameter Name: ICT_INT_POL
Label Description
IRQ Configuration
Install Priority Controller? When this parameter is set to 1, it allows interrupts that are assigned a priority level
to be compared against a system-level priority level. If the interrupt source has a
priority level that is greater than or equal to the system level, then it is not masked.
Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: Always
Parameter Name: ICT_HAS_PFLT
Be able to read back priorities? When this parameter is set to 1, the priority levels can be read. If set to 0, the priority
levels cannot be read.
Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: ICT_HAS_PFLT==1
Parameter Name: ICT_READ_PRIORITY
Hard-Coded Priorities? When this parameter is set to 1, the priority levels cannot be programmed. If set to
0, the priority levels can be programmed.
Values:
■ false (0)
■ true (1)
Default Value: true
Enabled: ICT_READ_PRIORITY==1 && ICT_HAS_PFLT==1
Parameter Name: ICT_HC_PRIORITIES
Install Vector Generation? Instantiates the interrupt vector generation circuitry and registers in the
DW_apb_ictl.
Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: ICT_HAS_PFLT==1
Parameter Name: ICT_HAS_VECTOR_USER
Label Description
Include Default Vector Logic? Instantiates the irq_vector_default register and circuitry. When activated, the value
read from the irq_vector register, when no interrupts are pending, is the value in the
irq_vecter_default register.
Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: ICT_HAS_PFLT==1 && ICT_HAS_VECTOR_USER==1
Parameter Name: ICT_HAS_DEFAULT_VECTOR
IRQ Source Polarity Type Specifies the IRQ Source Polarity Type. You can use either the individual interrupt
polarities or override these to be all active high or all active low.
Values:
■ Individual (0)
■ All-Active-Low (1)
■ All-Active-High (2)
Default Value: Individual
Enabled: Always
Parameter Name: ICT_IRQSRC_POL_TYPE
Individual irq enables on reset Specifies the reset value of the IRQ interrupt source enable register (irq_inten). A
logic '1' in any bit position indicates that the interrupt source corresponding to that
bit is enabled on reset; a logic '0' indicates that it is not enabled on reset.
Values: 0x0 to 0xffffffffffffffff
Default Value: {multi} {ICT_IRQ_NUM} {0b0}
Enabled: Always
Parameter Name: ICT_IRQ_DFLT_EN
FIQ Configuration
Install Fast Interrupt Instantiates the generation logic for fast interrupts.
Generation? Values:
■ false (0)
■ true (1)
Default Value: true
Enabled: Always
Parameter Name: ICT_HAS_FIQ
Label Description
Number of fiq sources Defines the number of fast interrupt sources to generate. This parameter can be set
only if ICT_HAS_FIQ is set to True (1).
Values: 1, 2, 3, 4, 5, 6, 7, 8
Default Value: 4
Enabled: ICT_HAS_FIQ==1
Parameter Name: ICT_FIQ_NUM
FIQ Source Polarities Specifies the FIQ Source Polarity Type. You can use either the individual interrupt
polarities or override these to be all active high or all active low.
Values:
■ Individual (0)
■ All-Active-Low (1)
■ All-Active-High (2)
Default Value: Individual
Enabled: ICT_HAS_FIQ==1
Parameter Name: ICT_FIQSRC_POL_TYPE
Individual fiq enables on reset Specifies the reset state of the FIQ interrupt source enable register. A logic '1' in any
bit position indicates that the fast interrupt source corresponding to that bit is
enabled on reset; a logic '0' indicates that it is not enabled on reset.
Values: 0x0 to 0xff
Default Value: {multi} {ICT_FIQ_NUM} {0b0}
Enabled: ICT_HAS_FIQ==1
Parameter Name: ICT_FIQ_DFLT_EN
Label Description
Add Vector Port Interface ? Selects whether or not to include vector port signals and functionality in the interrupt
controller. The vector port allows a processor with similar functionality to sample the
IRQ vector address directly without performing an APB bus access, thereby
potentially improving interrupt service latency.
Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: ((ICT_HAS_PFLT==1)?ICT_HAS_VECTOR_USER:0)==1
Parameter Name: ICT_ADD_VECTOR_PORT
Number of synchronization Selects the number of pclk synchronization stages on vector port signal.
stages on vector port signal Values: 2, 3, 4
coming from processor? Default Value: 2
Enabled: ICT_ADD_VECTOR_PORT_SYNC==1
Parameter Name: ICT_ADD_VECTOR_PORT_SYNC_DEPTH
Label Description
System priority controller filter Defines the default system priority controller filter level. This is the reset value of the
level interrupt priority level filter register. Interrupts must have a priority greater than or
equal to this value to be propagated to the CPU. This value may always be
overwritten by the software and is required only when the priority filter is installed.
Values: 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe,
0xf
Default Value: 0x0
Enabled: ICT_HAS_PFLT==1
Parameter Name: ICT_IRQ_PLEVEL
Priority level of IRQ Source n This parameter sets the default priority level for each normal interrupt source. 0 is
(for n = 0; n <= ICT_IRQ_NUM- the lowest priority.
1) Values: 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe,
0xf
Default Value: 0x0
Enabled: ICT_HAS_PFLT==1
Parameter Name: ICT_ISRC_PLEVEL_n
Label Description
Configuration of Vector n
Priority n vector Specifies the vector for interrupts with a priority setting of n. The value must be less
(for n = 0; n <= than HADDR_WIDTH.
ICT_IRQ_PLEVEL) Values: 0x0, ..., 0xffffffff
Default Value: 0x0
Enabled: ICT_HAS_VECTOR_USER==1 && ICT_HAS_PFLT==1
Parameter Name: ICT_VECTOR_n
Hardcode Vector n Specifies that the corresponding priority vector is hardcoded and the irq_vector_n
(for n = 0; n <= register is read only. If this parameter is set to False (0), the corresponding priority
ICT_IRQ_PLEVEL) vector is programmable and the corresponding irq_vector_n register is read/write.
Values: 0, 1
Default Value: 0
Enabled: ICT_HAS_VECTOR_USER==1 && ICT_HAS_PFLT==1
Parameter Name: ICT_HC_VECTOR_n
Default Priority vector Specifies the reset value for the irq_vector_default register.
Values: 0x0, ..., 0xffffffff
Default Value: 0x0
Enabled: ICT_HAS_DEFAULT_VECTOR==1 && ICT_HAS_PFLT==1
Parameter Name: ICT_VECTOR_DEFAULT
Hardcode Default Vector Specifies that the default priority vector (returned on a read from the irq_vector
register when no source IRQs are active) is hardcoded and the irq_vector_default
register is read only. If this parameter is set to False (0), the corresponding vector is
programmable and the corresponding irq_vector_default register is read/write.
Values: 0, 1
Default Value: 0
Enabled: ICT_HAS_DEFAULT_VECTOR==1 && ICT_HAS_PFLT==1
Parameter Name: ICT_HC_VECTOR_DEFAULT
Label Description
Interrupt irq n Active High ? Sets the interrupt level of interrupt n to either active high (1) or active low (0).
(for n = 0; n <= ICT_IRQ_NUM- Values: 0x0, 0x1
1) Default Value: True (1) if ICT_IRQSRC_POL_TYPE is not 1; that is, if it is not All-
active-low.
Enabled: ICT_IRQSRC_POL_TYPE == 0 && ICT_IRQ_NUM > 0
Parameter Name: ICT_IRQSRC_POL_n
Label Description
Interrupt n Active High ? Sets the interrupt level of interrupt n to either active high (1) or active low (0).
(for n = 0; n <= ICT_FIQ_NUM- Values: 0x0, 0x1
1) Default Value: True (1) if ICT_FIQSRC_POL_TYPE is not 1; that is, if it is not All-
active-low.
Enabled: ICT_HAS_FIQ==1 && ICT_FIQSRC_POL_TYPE == 0 &&
ICT_FIQ_NUM > 0
Parameter Name: ICT_FIQSRC_POL_n
4
Signal Descriptions
This chapter details all possible I/O signals in the controller. For configurable IP titles, your actual
configuration might not contain all of these signals.
Inputs are on the left of the signal diagrams; outputs are on the right.
Attention: For configurable IP titles, do not use this document to determine the exact I/O footprint of the
controller. It is for reference purposes only.
When you configure the controller in coreConsultant, you must access the I/O signals for your actual
configuration at workspace/report/IO.html or workspace/report/IO.xml after you have completed the
report creation activity. That report comes from the exact same source as this chapter but removes all the
I/O signals that are not in your actual configuration. This does not apply to non-configurable IP titles. In
addition, all parameter expressions are evaluated to actual values. Therefore, the widths might change
depending on your actual configuration.
Some expressions might refer to TCL functions or procedures (sometimes identified as <functionof>) that
coreConsultant uses to make calculations. The exact formula used by these TCL functions is not provided in
this chapter. However, when you configure the controller in coreConsultant, all TCL functions and
parameters are evaluated completely; and the resulting values are displayed where appropriate in the
coreConsultant GUI reports.
In addition to describing the function of each signal, the signal descriptions in this chapter include the
following information:
Active State: Indicates whether the signal is active high or active low. When a signal is not intended to be
used in a particular application, then this signal needs to be tied or driven to the inactive state (opposite of
the active state).
Registered: Indicates whether or not the signal is registered directly inside the IP boundary without
intervening logic (excluding simple buffers). A value of No does not imply that the signal is not
synchronous, only that there is some combinatorial logic between the signal's origin or destination register
and the boundary of the controller. A value of N/A indicates that this information is not provided for this IP
title.
Synchronous to: Indicates which clock(s) in the IP sample this input (drive for an output) when considering
all possible configurations. A particular configuration might not have all of the clocks listed. This clock
might not be the same as the clock that your application logic should use to clock (sample/drive) this pin.
For more details, consult the clock section in the databook.
Exists: Name of configuration parameter(s) that populates this signal in your configuration.
Validated by: Assertion or de-assertion of signal(s) that validates the signal being described.
pclk - - prdata
presetn -
psel -
paddr -
pwrite -
penable -
pwdata -
penable I APB enable control that indicates the second cycle of the APB frame.
Exists: Always
Synchronous To: pclk
Registered: No
Power Domain: SINGLE_DOMAIN
Active State: High
scan_mode -
irq_ack -
scan_mode I Optional. Scan mode. This signal helps increase fault coverage in the
design. During scan testing, scan_mode must be asserted that is,
tied to logic 1. At all other times, this signal must be deasserted tied
to logic 0.
Exists: (ICT_HAS_PFLT==1)
Synchronous To: Asynchronous
Registered: No
Power Domain: SINGLE_DOMAIN
Active State: High
- irq
- fiq
- irq_n
- fiq_n
- irq_addr
- irq_addr_v
fiq_intsrc -
irq_intsrc -
5
Register Descriptions
This chapter details all possible registers in the controller. They are arranged hierarchically into maps and
blocks (banks). For configurable IP titles, your actual configuration might not contain all of these registers.
Attention: For configurable IP titles, do not use this document to determine the exact attributes of your
register map. It is for reference purposes only.
When you configure the controller in coreConsultant, you must access the register attributes for your actual
configuration at workspace/report/ComponentRegisters.html or
workspace/report/ComponentRegisters.xml after you have completed the report creation activity. That
report comes from the exact same source as this chapter but removes all the registers that are not in your
actual configuration. This does not apply to non-configurable IP titles. In addition, all parameter
expressions are evaluated to actual values. Therefore, the Offset and Memory Access values might change
depending on your actual configuration.
Some expressions might refer to TCL functions or procedures (sometimes identified as <functionof>) that
coreConsultant uses to make calculations. The exact formula used by these TCL functions is not provided in
this chapter. However, when you configure the controller in coreConsultant, all TCL functions and
parameters are evaluated completely; and the resulting values are displayed where appropriate in the
coreConsultant GUI reports.
Exists Expressions
These expressions indicate the combination of configuration parameters required for a register, field, or
block to exist in the memory map. The expression is only valid in the local context and does not indicate the
conditions for existence of the parent. For example, the expression for a bit field in a register assumes that
the register exists and does not include the conditions for existence of the register.
Offset
The term Offset is synonymous with Address.
Memory Access Attributes
The Memory Access attribute is defined as <ReadBehavior>/<WriteBehavior> which are defined in the
following table.
R/W1C You can read this register field. Writing 1 clears it.
RC/W1C Reading this register field clears it. Writing 1 clears it.
R/Wo You can read this register field. You can only write to it once.
Attribute Description
Reset Mask As defined by the IP-XACT specification. Indicates that this register
field has an unknown reset value. For example, the reset value is set
by another register or an input pin; or the register is implemented
using RAM.
* Varies Indicates that the memory access (or reset) attribute (read, write
behavior) is not fixed. For example, the read-write access of the
register is controlled by a pin or another register. Or when the
access depends on some configuration parameter; in this case the
post-configuration report in coreConsultant gives the actual access
value.
Component Banks/Blocks
The following table shows the address blocks for each memory map. Follow the link for an address block to
see a table of its registers.
IRQ_INTEN_L on page 52 0x0 This register specifies the interrupt enable bits for lower 32
interrupt sources.
IRQ_INTEN_H on page 53 0x4 This register enables the upper 32 interrupt sources.
IRQ_INTMASK_L on page 54 0x8 This register masks the lower 32 interrupt sources.
IRQ_INTMASK_H on page 55 0xc This register masks the upper 32 interrupt sources.
IRQ_INTFORCE_L on page 56 0x10 This register specifies the interrupt force bits for the lower 32
interrupt sources.
IRQ_INTFORCE_H on page 58 0x14 This register specifies the interrupt force bits for the upper 32
interrupt sources.
IRQ_RAWSTATUS_L on page 60 0x18 This register specifies the raw status of lower 32 interrupt
sources.
IRQ_RAWSTATUS_H on page 62 0x1c This register specifies the raw status of the upper 32
interrupt sources.
IRQ_STATUS_L on page 63 0x20 This register specifies the interrupt Status of the lower 32
interrupt sources.
IRQ_STATUS_H on page 64 0x24 This register specifies the interrupt status of the upper 32
interrupt sources.
IRQ_MASKSTATUS_L on page 65 0x28 This register specifies the interrupt mask status of the lower
32 interrupt sources.
IRQ_MASKSTATUS_H on page 67 0x2c This register specifies the interrupt mask status of the upper
32 interrupt sources.
IRQ_FINALSTATUS_L on page 68 0x30 This register specifies the interrupt final status of the lower
32 interrupt sources.
IRQ_FINALSTATUS_H on page 70 0x34 This register specifies the interrupt final status of the upper
32 interrupt sources.
IRQ_VECTOR on page 72 0x38 This register specifies the interrupt vector of the highest
pending interrupt.
IRQ_VECTOR_n 0x40 + This register specifies the Interrupt Vector (Priority Level n).
(for n = 0; n <= ICT_IRQ_PLEVEL) on 8*n
page 73
FIQ_INTEN on page 74 0xc0 This register specifies the bits to enable the fast interrupt.
FIQ_INTMASK on page 75 0xc4 This register specifies the bit to mask an interrupt.
FIQ_INTFORCE on page 76 0xc8 This register specifies the fast interrupt force bits.
FIQ_RAWSTATUS on page 77 0xcc This register specifies the fast interrupt source raw status.
FIQ_STATUS on page 78 0xd0 This register specifies the fast interrupt status.
FIQ_FINALSTATUS on page 79 0xd4 This register specifies the fast interrupt final status.
IRQ_PLEVEL on page 80 0xd8 This register specifies the IRQ system priority level.
IRQ_INTERNAL_PLEVEL on page 81 0xdc This register specifies the internal IRQ system priority level.
IRQ_PR_n 0xe8 + This register specifies the IRQ Individual Interrupt n Priority
(for n = 0; n <= ICT_IRQ_NUM-1) on 4*n Level.
page 84
IRQ_VECTOR_DEFAULT on page 85 0x1e8 This register specifies the default interrupt vector register.
5.1.1 IRQ_INTEN_L
■ Name: Interrupt Source Enable (Low) Register
■ Description: This register specifies the interrupt enable bits for lower 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x0
■ Exists: Always
RSVD_IRQ_INTEN_L 31:y
x:0
IRQ_INTEN_L
Memory
Bits Name Access Description
x:0 IRQ_INTEN_L R/W These bits specify the interrupt enable bits for lower 32
interrupt sources. A 1 in any bit position enables the
corresponding interrupt.
Values:
■ 0x0 (DISABLED): Interrupt disabled
■ 0x1 (ENABLED): Interrupt enabled
Value After Reset: The corresponding bits of the
ICT_IRQ_DFLT_EN configuration parameter.
Exists: Always
Range Variable[x]: "(ICT_IRQ_NUM > 32) ? 32 :
ICT_IRQ_NUM" - 1
5.1.2 IRQ_INTEN_H
■ Name: Interrupt Source Enable (High) Register
■ Description: This register enables the upper 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x4
■ Exists: ICT_IRQ_NUM > 32
x:0
RSVD_IRQ_INTEN_H x:y
IRQ_INTEN_H
Memory
Bits Name Access Description
x:0 IRQ_INTEN_H R/W These bits specify the interrupt enable bit for upper 32
interrupt sources. A 1 in any bit position enables the
corresponding interrupt. If there are less than 32 interrupt
sources, this address location and register do not exist for a
write or a read. By default, all bits enabled.
Value After Reset: The corresponding bits of the
ICT_IRQ_DFLT_EN configuration parameter.
Exists: (ICT_IRQ_NUM>32) ? 1 : 0
Range Variable[x]: (ICT_IRQ_NUM-32) - 1
5.1.3 IRQ_INTMASK_L
■ Name: Interrupt Source Mask (Low) Register
■ Description: This register masks the lower 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x8
■ Exists: Always
RSVD_IRQ_INTMASK_L 31:y
x:0
IRQ_INTMASK_L
Memory
Bits Name Access Description
x:0 IRQ_INTMASK_L R/W These bits specify the interrupt mask bits for the lower 32
interrupt sources. A 1 in any bit position masks (disables) the
corresponding interrupt. By default, all bits are unmasked.
Values:
■ 0x0 (UNMASK): Unmasks the interrupts
■ 0x1 (MASK): Masks the interrupt
Value After Reset: 0x0
Exists: Always
Range Variable[x]: "(ICT_IRQ_NUM > 32) ? 32 :
ICT_IRQ_NUM" - 1
5.1.4 IRQ_INTMASK_H
■ Name: Interrupt Source Mask (High) Register
■ Description: This register masks the upper 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0xc
■ Exists: ICT_IRQ_NUM > 32
x:0
RSVD_IRQ_INTMASK_H x:y
IRQ_INTMASK_H
Memory
Bits Name Access Description
x:0 IRQ_INTMASK_H R/W These bits specify the interrupt mask bits for the upper 32
interrupt sources. If there are less than 32 interrupt sources,
this address location does not exist for a write or a read. By
default, all bits are unmasked.
Value After Reset: 0x0
Exists: (ICT_IRQ_NUM>32) ? 1 : 0
Range Variable[x]: (ICT_IRQ_NUM-32) - 1
5.1.5 IRQ_INTFORCE_L
■ Name: Interrupt Force (Low) Register
■ Description: This register specifies the interrupt force bits for the lower 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x10
■ Exists: Always
RSVD_IRQ_INTFORCE_L 31:y
x:0
IRQ_INTFORCE_L
Memory
Bits Name Access Description
Memory
Bits Name Access Description
x:0 IRQ_INTFORCE_L R/W These bits specify the interrupt force bits for the lower 32
interrupt sources. Each bit corresponds to one bit of the
irq_intsrc input. The polarity of the bits in the register
correspond to the polarity of the associated irq_intsrc input.
If the interrupt input is configured to be active-high, the
corresponding bit in the register is also active-high.
Values:
■ 0x0 (ACTIVE_LOW): Active low polarity
■ 0x1 (ACTIVE_HIGH): Active high polarity
Value After Reset: The reset state of the force bits is always
inactive. It is derived by the configuration parameter
ICT_IRQSRC_POL or ICT_FORCEREG_ACTIVE_HIGH.
Exists: Always
Range Variable[x]: "(ICT_IRQ_NUM > 32) ? 32 :
ICT_IRQ_NUM" - 1
5.1.6 IRQ_INTFORCE_H
■ Name: Interrupt Force (High) Register
■ Description: This register specifies the interrupt force bits for the upper 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x14
■ Exists: ICT_IRQ_NUM > 32
x:0
RSVD_IRQ_INTFORCE_H x:y
IRQ_INTFORCE_H
Memory
Bits Name Access Description
Memory
Bits Name Access Description
x:0 IRQ_INTFORCE_H R/W These bits specify the interrupt force bits for the upper 32
interrupt sources. Each bit in this register corresponds to one
bit of the irq_intsrc input. The polarity of the bits in the
register correspond to the polarity of the associated
irq_intsrc input. If the interrupt input is configured to be
active-high, the corresponding bit in the register is also
active-high. The reset state of the force bits is always
inactive.
Value After Reset: The reset state of the force bits is always
inactive. It is derived by the configuration parameter
ICT_IRQSRC_POL or ICT_FORCEREG_ACTIVE_HIGH.
Exists: (ICT_IRQ_NUM>32) ? 1 : 0
Range Variable[x]: "(ICT_IRQ_NUM-32)" - 1
5.1.7 IRQ_RAWSTATUS_L
■ Name: Interrupt Raw Status (Low) Register
■ Description: This register specifies the raw status of lower 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x18
■ Exists: Always
RSVD_IRQ_RAWSTATUS_L 31:y
x:0
IRQ_RAWSTATUS_L
Memory
Bits Name Access Description
Memory
Bits Name Access Description
x:0 IRQ_RAWSTATUS_L R These bits specify the actual interrupt source. These are the
lower 32 interrupt sources.
Values:
■ 0x0 (INACTIVE): Inactive Raw Interrupt Status
■ 0x1 (ACTIVE): Active Raw Interrupt Status
Value After Reset: IRQ_RAWSTATUS_L - Dependent on
setting of corresponding interrupt source bit.
Exists: Always
Volatile: true
Range Variable[x]: "(ICT_IRQ_NUM > 32) ? 32 :
ICT_IRQ_NUM" - 1
5.1.8 IRQ_RAWSTATUS_H
■ Name: Interrupt Raw Status (High) Register
■ Description: This register specifies the raw status of the upper 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x1c
■ Exists: ICT_IRQ_NUM > 32
x:0
RSVD_IRQ_RAWSTATUS_H x:y
IRQ_RAWSTATUS_H
Memory
Bits Name Access Description
x:0 IRQ_RAWSTATUS_H R These bits specify the actual interrupt source. These are the
upper 32 interrupt sources. If there are less than 32 interrupt
sources, this address location does not exist for a read.
Value After Reset: IRQ_RAWSTATUS_H - Dependent on
setting of corresponding interrupt source bit.
Exists: (ICT_IRQ_NUM>32) ? 1 : 0
Volatile: true
Range Variable[x]: "(ICT_IRQ_NUM-32)" - 1
5.1.9 IRQ_STATUS_L
■ Name: Interrupt Status (Low) Register
■ Description: This register specifies the interrupt Status of the lower 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x20
■ Exists: Always
RSVD_IRQ_STATUS_L 31:y
x:0
IRQ_STATUS_L
Memory
Bits Name Access Description
x:0 IRQ_STATUS_L R These bits specify the interrupt status after the forcing and
interrupt enabling stage. These are the interrupt status
signals for the lower 32 interrupt sources.
Values:
■ 0x0 (INACTIVE): Inactive interrupt status
■ 0x1 (ACTIVE): Active interrupt status
Value After Reset: IRQ_STATUS_L - Dependent on setting
of corresponding interrupt source bit.
Exists: Always
Volatile: true
Range Variable[x]: "(ICT_IRQ_NUM > 32) ? 32 :
ICT_IRQ_NUM" - 1
5.1.10 IRQ_STATUS_H
■ Name: Interrupt Status (High) Register
■ Description: This register specifies the interrupt status of the upper 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x24
■ Exists: ICT_IRQ_NUM > 32
x:0
RSVD_IRQ_STATUS_H x:y
IRQ_STATUS_H
Memory
Bits Name Access Description
x:0 IRQ_STATUS_H R These bits specify the interrupt status after the forcing and
interrupt enabling stage. These are the interrupt status
signals for the upper 32 interrupt sources. If there are less
than 32 interrupt sources, this address location does not
exist for a write or a read.
Value After Reset: IRQ_STATUS_H - Dependent on setting
of corresponding interrupt source bit.
Exists: (ICT_IRQ_NUM>32) ? 1 : 0
Volatile: true
Range Variable[x]: "(ICT_IRQ_NUM-32)" - 1
5.1.11 IRQ_MASKSTATUS_L
■ Name: Interrupt Mask Status (Low) Register
■ Description: This register specifies the interrupt mask status of the lower 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x28
■ Exists: Always
RSVD_IRQ_MASKSTATUS_L 31:y
x:0
IRQ_MASKSTATUS_L
Memory
Bits Name Access Description
Memory
Bits Name Access Description
x:0 IRQ_MASKSTATUS_L R These bits specify the interrupt status after the masking
stage. These are the interrupt status signals for the lower 32
interrupt sources.
Values:
■ 0x0 (INACTIVE): Inactive interrupt mask status
■ 0x1 (ACTIVE): Active interrupt mask status
Value After Reset: IRQ_MASKSTATUS_L - Dependent on
setting of corresponding interrupt source bit.
Exists: Always
Volatile: true
Range Variable[x]: "(ICT_IRQ_NUM > 32) ? 32 :
ICT_IRQ_NUM" - 1
5.1.12 IRQ_MASKSTATUS_H
■ Name: Interrupt Mask Status (High) Register
■ Description: This register specifies the interrupt mask status of the upper 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x2c
■ Exists: ICT_IRQ_NUM > 32
x:0
RSVD_IRQ_MASKSTATUS_H x:y
IRQ_MASKSTATUS_H
Memory
Bits Name Access Description
x:0 IRQ_MASKSTATUS_H R These bits specify the interrupt status after the masking
stage. These are the interrupt status signals for the upper 32
interrupt sources. If there are less than 32 interrupt sources,
this address location does not exist for a write or a read.
Value After Reset: IRQ_MASKSTATUS_H - Dependent on
setting of corresponding interrupt source bit.
Exists: (ICT_IRQ_NUM>32) ? 1 : 0
Volatile: true
Range Variable[x]: "(ICT_IRQ_NUM-32)" - 1
5.1.13 IRQ_FINALSTATUS_L
■ Name: Interrupt Final Status (Low) Register
■ Description: This register specifies the interrupt final status of the lower 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x30
■ Exists: Always
RSVD_IRQ_FINALSTATUS_L 31:y
x:0
IRQ_FINALSTATUS_L
Memory
Bits Name Access Description
Memory
Bits Name Access Description
x:0 IRQ_FINALSTATUS_L R These bits specify the interrupt status after the priority level
filtering stage. These are the interrupt status signals for the
lower 32 interrupt sources. If there is no priority interrupt
scheme configured, then this location contains the same
value as irq_maskstatus_l.
Values:
■ 0x0 (INACTIVE): Inactive interrupt final status
■ 0x1 (ACTIVE): Active interrupt final status
Value After Reset: IRQ_FINALSTATUS_L - Dependent on
setting of corresponding interrupt source bit.
Exists: Always
Volatile: true
Range Variable[x]: "(ICT_IRQ_NUM > 32) ? 32 :
ICT_IRQ_NUM" - 1
5.1.14 IRQ_FINALSTATUS_H
■ Name: Interrupt Final Status (High) Register
■ Description: This register specifies the interrupt final status of the upper 32 interrupt sources.
■ Size: 32 bits
■ Offset: 0x34
■ Exists: ICT_IRQ_NUM > 32
x:0
RSVD_IRQ_FINALSTATUS_H x:y
IRQ_FINALSTATUS_H
Memory
Bits Name Access Description
Memory
Bits Name Access Description
x:0 IRQ_FINALSTATUS_H R These bits specify the interrupt status after the priority level
filtering stage. These are the interrupt status signals for the
upper 32 interrupt sources. If there are less than 32 interrupt
sources, this location does not exist. If there is no priority
interrupt scheme, this location contains the same value as
irq_maskstatus_h.
Value After Reset: IRQ_FINALSTATUS_H - Dependent on
setting of corresponding interrupt source bit.
Exists: (ICT_IRQ_NUM>32) ? 1 : 0
Volatile: true
Range Variable[x]: "(ICT_IRQ_NUM-32)" - 1
5.1.15 IRQ_VECTOR
■ Name: IRQ Vector Register
■ Description: This register specifies the interrupt vector of the highest pending interrupt.
■ Size: 32 bits
■ Offset: 0x38
■ Exists: Always
IRQ_VECTOR 31:0
Memory
Bits Name Access Description
31:0 IRQ_VECTOR R This location can be read when an interrupt occurs, and the
provided vectored interrupts are supported. This register
field returns one of the 16 vectors. The returned vector
corresponds to the highest priority level interrupt.
When no final status interrupts are active, the read value
depends on the ICT_HAS_DEFAULT_VECTOR
configuration parameter:
■ ICT_HAS_DEFAULT_VECTOR = 1: Contains the vector
value in the irq_vector_default register location.
■ ICT_HAS_DEFAULT_VECTOR = 0: Contains the vector
value corresponding to the priority programmed into the
irq_plevel register.
This register returns 0 when ICT_HAS_VECTOR = 0. This
register is read coherent, allowing the register to be read,
regardless of the data bus width.
Value After Reset: If ICT_HAS_VECTOR = 0, resets to 0
else, if ICT_HAS_DEFAULT_VECTOR = 1, resets to
ICT_VECTOR_DEFAULT or resets to ICT_VECTOR_n;
where n = ICT_IRQ_PLEVEL.
Exists: Always
Volatile: true
IRQ_VECTOR_n 31:0
Memory
Bits Name Access Description
31:0 IRQ_VECTOR_n (ICT_HC These bits specify the interrupt vector for priority level 0. This
_VECTO register does not exist when ICT_HAS_VECTOR = 0.
R_n==0) Value After Reset: If ICT_HC_VECTOR_n is set to 1, this is
? read- a read-only register and the interrupt vector is set by
write : ICT_VECTOR_n. If ICT_HC_VECTOR_n is set to 0, this is a
read-only read/write register used to program the interrupt vector; the
reset value is determined by ICT_VECTOR_n.
Exists: Always
5.1.17 FIQ_INTEN
■ Name: Fast Interrupt Enable Register
■ Description: This register specifies the bits to enable the fast interrupt.
■ Size: 32 bits
■ Offset: 0xc0
■ Exists: ICT_HAS_FIQ==1
RSVD_FIQ_INTEN 31:y
x:0
FIQ_INTEN
Memory
Bits Name Access Description
x:0 FIQ_INTEN R/W These bits specify the fast interrupt enable bits. A 1 in any bit
position enables the corresponding interrupt.
Values:
■ 0x0 (DISABLED): Fast interrupt disabled
■ 0x1 (ENABLED): Fast interrupt enabled
Value After Reset: ICT_FIQ_DFLT_EN
Exists: (ICT_HAS_FIQ==1) ? 1 : 0
Range Variable[x]: ICT_FIQ_NUM - 1
5.1.18 FIQ_INTMASK
■ Name: Fast Interrupt Mask Register
■ Description: This register specifies the bit to mask an interrupt.
■ Size: 32 bits
■ Offset: 0xc4
■ Exists: ICT_HAS_FIQ==1
RSVD_FIQ_INTMASK 31:y
x:0
FIQ_INTMASK
Memory
Bits Name Access Description
x:0 FIQ_INTMASK R/W These bits specify the fast interrupt mask bits. A 1 in any bit
position masks the corresponding interrupt.
Values:
■ 0x0 (UNMASK): Unmasks the interrupts
■ 0x1 (MASK): Masks the interrupts
Value After Reset: 0x0
Exists: (ICT_HAS_FIQ==1) ? 1 : 0
Range Variable[x]: ICT_FIQ_NUM - 1
5.1.19 FIQ_INTFORCE
■ Name: Fast Interrupt Force Register
■ Description: This register specifies the fast interrupt force bits.
■ Size: 32 bits
■ Offset: 0xc8
■ Exists: ICT_HAS_FIQ==1
RSVD_FIQ_INTFORCE 31:y
x:0
FIQ_INTFORCE
Memory
Bits Name Access Description
x:0 FIQ_INTFORCE R/W These bits specify the fast interrupt force bits. Each bit in this
register corresponds to one bit of the irq_intsrc input. The
polarity of the bits in the register corresponds to the polarity
of the associated fiq_intsrc input. If the interrupt input is
configured to be active-high, the corresponding bit in the
register is also active-high.
Values:
■ 0x0 (ACTIVE_LOW): Active low interrupts
■ 0x1 (ACTIVE_HIGH): Active high interrupts
Value After Reset: The reset state of the force bits is always
inactive. It is derived by the configuration parameter
ICT_FORCEREG_ACTIVE_HIGH.
Exists: (ICT_HAS_FIQ==1) ? 1 : 0
Range Variable[x]: ICT_FIQ_NUM - 1
5.1.20 FIQ_RAWSTATUS
■ Name: Fast Interrupt Source Raw Status Register
■ Description: This register specifies the fast interrupt source raw status.
■ Size: 32 bits
■ Offset: 0xcc
■ Exists: ICT_HAS_FIQ==1
RSVD_FIQ_RAWSTATUS 31:y
x:0
FIQ_RAWSTATUS
Memory
Bits Name Access Description
x:0 FIQ_RAWSTATUS R These bits specify the fast interrupt source raw input status.
Values:
■ 0x0 (INACTIVE): Inactive raw interrupt status
■ 0x1 (ACTIVE): Active raw interrupt status
Value After Reset: FIQ_RAWSTATUS - Dependent on
setting of corresponding interrupt source bit.
Exists: (ICT_HAS_FIQ==1) ? 1 : 0
Range Variable[x]: ICT_FIQ_NUM - 1
5.1.21 FIQ_STATUS
■ Name: Fast Interrupt Status Register
■ Description: This register specifies the fast interrupt status.
■ Size: 32 bits
■ Offset: 0xd0
■ Exists: ICT_HAS_FIQ==1
RSVD_FIQ_STATUS 31:y
x:0
FIQ_STATUS
Memory
Bits Name Access Description
x:0 FIQ_STATUS R These bits specify the fast interrupt status after the forcing
and interrupt enabling stage.
Values:
■ 0x0 (INACTIVE): Fast interrupt status is inactive
■ 0x1 (ACTIVE): Fast interrupt status is active
Value After Reset: FIQ_STATUS - Dependent on setting of
corresponding interrupt source bit.
Exists: (ICT_HAS_FIQ==1) ? 1 : 0
Volatile: true
Range Variable[x]: ICT_FIQ_NUM - 1
5.1.22 FIQ_FINALSTATUS
■ Name: Fast Interrupt Final Status Register
■ Description: This register specifies the fast interrupt final status.
■ Size: 32 bits
■ Offset: 0xd4
■ Exists: ICT_HAS_FIQ==1
RSVD_FIQ_FINALSTATUS 31:y
x:0
FIQ_FINALSTATUS
Memory
Bits Name Access Description
x:0 FIQ_FINALSTATUS R These bits specify the fast interrupt status after the masking
stage.
Values:
■ 0x0 (INACTIVE): Fast interrupt final status is inactive
■ 0x1 (ACTIVE): Fast interrupt final status is active
Value After Reset: FIQ_FINALSTATUS - Dependent on
setting of corresponding interrupt source bit.
Exists: (ICT_HAS_FIQ==1) ? 1 : 0
Volatile: true
Range Variable[x]: ICT_FIQ_NUM - 1
5.1.23 IRQ_PLEVEL
■ Name: IRQ System Priority Level Register
■ Description: This register specifies the IRQ system priority level.
■ Size: 32 bits
■ Offset: 0xd8
■ Exists: Always
RSVD_IRQ_PLEVEL 31:4
3:0
IRQ_PLEVEL
Memory
Bits Name Access Description
3:0 IRQ_PLEVEL R/W These bits specify the interrupt controller system priority
level for normal interrupt sources. The default state can be
configured so that after reset, the interrupt controller accepts
only interrupts that are enabled and have a priority the same
or greater than the system level priority setting.
Value After Reset: ICT_IRQ_PLEVEL
Exists: Always
5.1.24 IRQ_INTERNAL_PLEVEL
■ Name: Internal IRQ System Priority Level Register
■ Description: This register specifies the internal IRQ system priority level.
■ Size: 32 bits
■ Offset: 0xdc
■ Exists: ICT_ADD_VECTOR_PORT==1
RSVD_IRQ_INTERNAL_PLEVEL 31:5
4:0
IRQ_INTERNAL_PLEVEL
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.25 ICTL_VERSION_ID
■ Name: Component Version Register
■ Description: This register specifies the component version.
■ Size: 32 bits
■ Offset: 0xe0
■ Exists: Always
ICTL_VERSION_ID 31:0
Memory
Bits Name Access Description
RSVD_IRQ_PR_n 31:4
3:0
IRQ_PR_n
Memory
Bits Name Access Description
3:0 IRQ_PR_n (ICT_HC These bits specify the individual interrupt priority level. The
_PRIORI number of Individual Interrupt Priority Level registers is from
TIES==0) 0 to ICT_IRQ_NUM-1. The value of the register must be an
? read- integer from 0x0 to 0xf.
write : Following are the Read/Write Values:
read-only ■ DNE: If ICT_READ_PRIORITY=0, then all irq_pN_priority
registers do not exist.
■ R: If ICT_READ_PRIORITY=1 and
ICT_HC_PRIORITIES=1, then interrupt 0 priority register
is read-only R/W: If ICT_READ_PRIORITY=1 and
ICT_HC_PRIORITIES=0, then interrupt 0 priority register
is read/write
Value After Reset: ICT_ISRC_PLEVEL_n
Exists: Always
5.1.27 IRQ_VECTOR_DEFAULT
■ Name: Default Interrupt Vector Register
■ Description: This register specifies the default interrupt vector register.
■ Size: 32 bits
■ Offset: 0x1e8
■ Exists: ICT_HAS_DEFAULT_VECTOR==1
IRQ_VECTOR_DEFAULT 31:0
Memory
Bits Name Access Description
31:0 IRQ_VECTOR_DEFAULT (ICT_HC These bits specify the default interrupt vector. The value in
_VECTO this register is returned on a read to the irq_vector register
R_DEFA when no interrupts are active. Final status is used to decode
ULT==0) an active interrupt. This register can be read and, if not
? read- hardcoded, can be reconfigured by a master. This register
write : does not exist when ICT_HAS_DEFAULT_VECTOR = 0.
read-only ■ If ICT_HC_VECTOR_DEFAULT is set to 1, this is a read-
only register and the interrupt vector is set by
ICT_VECTOR_DEFAULT.
■ If ICT_HC_VECTOR_DEFAULT is set to 0, this is a
read/write register used to program the default interrupt
vector; the reset value is determined by
ICT_VECTOR_DEFAULT.
Value After Reset: If ICT_HC_VECTOR_DEFAULT is set to
1, this is a read-only register and the interrupt vector is set by
ICT_VECTOR_DEFAULT. If ICT_HC_VECTOR_DEFAULT is
set to 0, this is a read/write register used to program the
default interrupt vector; the reset value is determined by
ICT_VECTOR_DEFAULT.
Exists: ICT_HAS_DEFAULT_VECTOR==1
6
Programming the DW_apb_ictl
This section describes the some of the programmable features of the DW_apb_ictl.
Because interrupt processing is combinational, care must be taken when reading and
Attention
writing registers that are wider than APB_DATA_WIDTH.
Values of status registers can change if new interrupts arrive between reading slices of the register.
Configuration registers should not be programmed while interrupts are enabled. Therefore, all IRQ
interrupts should be disabled using the irq_inten register prior to programming the vector registers.
6.3 Initialization
A normal initialization sequence is as follows:
1. Disable all interrupts by writing to the irq_inten and fiq_inten. You can also configure the
DW_apb_ictl so that this is the reset state using the ICT_IRQ_DFLT_EN and ICT_FIQ_DFLT_EN
parameters.
2. Initialize peripheral devices that could generate interrupts.
3. Program the irq_vector, irq_plevel, irq_intmask, and fiq_intmask registers as appropriate.
4. Enable interrupts.
7
Verification
This chapter provides an overview of the testbench available for DW_apb_ictl verification. Once you have
configured the DW_apb_ictl in coreConsultant and have set up the verification environment, you can
automatically run simulations.
The DW_apb_ictl verification testbench is built with DesignWare Verification IP (VIP). Make
Note sure you have the supported version of the VIP components for this release, otherwise, you
may experience some tool compatibility problems. For more information about supported tools
in this release, see the DesignWare Synthesizable Components for AMBA 2, AMBA 3 AXI,
and AMBA 4 AXI Installation Guide
Note All tests use the APB Interface to program memory mapped registers dynamically during
tests.
7.1.1 Reset
The objective of this test is to ensure that all configurable registers are reset to the correct values defined for
the DW_apb_ictl under test.
7.1.3 FIQ
This sequence of tests verifies the operation of the FIQ generation circuitry and is repeated for active-low
and active-high input FIQ source levels (fiq_intrsrc). These tests are independent of the active level of the
fast interrupt source inputs and are executed on each fiq_intrsrc bit to verify all paths in the FIQ generation
circuitry. The active level of fiq_intsrcN and fiq_forceN is determined by the ICT_FIQ_INTSRC_POL_n
configuration parameter.
7.1.4 IRQ
This sequence of tests verifies the operation of the IRQ generation circuitry and is repeated for active-low
and active-high input IRQ source levels (irq_intrsrc). These tests are independent of the active level of the
interrupt source inputs and are executed on each irq_intrsrc bit to verify all paths in the IRQ generation
circuitry. The active level of irq_intsrcN and irq_forceN is determined by the ICT_IRQ_INTSRC_POL_n
configuration parameter.
test_DW_apb_ictlv
AHB Master
BFM
AHB
AHB Bus Model
Monitor
APB
Monitor
= Vera Shell
The Vera shell consists of an AHB Master bus functional model (BFM), one AHB Slave BFM, an AHB
Monitor, APB Slave BFMs, an APB Monitor, test stimuli, BFM configuration, and test results. The AHB
Monitor monitors activity from the AHB Master and Slave BFMs; the APB Monitor oversees activity from
the APB Slave BFMs.
The testbench tests for all possible user configurations chosen in the Specify Configuration task of
coreConsultant. The testbench also tests that the component is AMBA-compliant and includes a
self-checking mechanism.
8
Integration Considerations
After you have configured, tested, and synthesized your component with the coreTools flow, you can
integrate the component into your own design environment. The following sections discuss general
integration considerations.
■ The APB slave subsystem is little endian; the DW_apb performs the conversion from a big-endian
AHB to the little-endian APB.
■ All APB slave programming registers are aligned on 32-bit boundaries, irrespective of the APB bus
size.
■ The maximum APB_DATA_WIDTH is 32 bits. Registers larger than this occupies more than one
location in the memory map.
■ The DW_apb does not return any ERROR, SPLIT, or RETRY responses; it always returns an OKAY
response to the AHB.
■ For all bus widths:
❑ In the case of a read transaction, registers less than the full bus width returns zeros in the unused
upper bits.
❑ Writing to bit locations larger than the register width does not have any effect. Only the pertinent
bits are written to the register.
■ The APB slaves do not need the full 32-bit address bus, paddr. The slaves include the lower bits even
though they are not actually used in a 32- or 16-bit system.
The following sections show the relationship between the register map and the read/write operations for
the three possible APB_DATA_WIDTH values: 8-, 16-, and 32-bit APB buses.
Figure 8-2 Read/Write Locations for Different APB Bus Data Widths
31 15 7 0 APB Address
Register 1 [7:0] nn00
32-bit APB
31 15 7 0 APB Address
Register 1 [7:0] nn00
31 15 7 0 APB Address
Register 1 [7:0] nn00
Register 2 [7:0] nn04
Register 2 [15:8] nn05
Register 3 [7:0] nn08
Register 3 [15:8] nn09
Register 3 [23:16] nn0A
Register 3 [31:24] nn0B
8-bit APB
Note If you write to an address location not on a 32-bit boundary, the bottom bits are ignored/not
used.
pclk
psel
penable
pwrite
paddr[7:2] IrqIntEnL
pwdata[31:0] 0x00001234
wen_inten[4:0] 0x0f
A write can occur after the first phase with penable low, or after the second phase when penable is high. The
second phase is preferred and is used in all APB slave components. The timing diagram is shown with the
write occurring after the second phase. Whenever the address on paddr matches a corresponding address
from the memory map and provided psel, pwrite, and penable are high, then the corresponding register
write enable is generated.
A write from the AHB to the APB does not require the AHB system bus to stall until the transfer on the APB
has completed. A write to the APB can be followed by a read transaction from another AHB peripheral (not
the DW_apb).
The timing example is a 33-bit register and a 32-bit APB data bus. To write this, 5 byte enables would be
generated internally. The example shows writing to the first 32 bits with one write transaction.
pclk
psel
penable
pwrite
paddr[7:2] IrqIntEnL
prdata[31:0] 0x1234
ren_irq_inten[4:0]
hrdata[31:0] 0x1234
hready
Whenever the address on paddr matches the corresponding address from the memory map—psel is high,
pwrite and penable are low—then the corresponding read enable is generated. The read data is registered
within the peripheral before passing back to the master through the DW_apb and DW_ahb.
The qualification of the read-back data with hready from the bridge is shown in the timing diagram, but this
does not form part of the APB interface. The read happens in the first APB cycle and is passed straight back
to the AHB master in the same cycles as it passes through the bridge. By returning the data immediately to
the AHB bus, the bridge can release control of the AHB data bus faster. This is important for systems where
the APB clock is slower than the AHB clock.
Once a read transaction is started, it is completed and the AHB bus is held until the data is returned from
the slave
Note If a read enable is not active, then the previously read data is maintained on the read-back
data bus.
8.6 Coherency
Coherency is where bits within a register are logically connected. For instance, part of a register is read at
time 1 and another part is read at time 2. Being coherent means that the part read at time 2 is at the same
value it was when the register was read at time 1. The unread part is stored into a shadow register and this
is read at time 2. When there is no coherency, no shadow registers are involved.
A bus master may need to be able to read the contents of a register, regardless of the data bus width, and be
guaranteed of the coherency of the value read. A bus master may need to be able to write a register
coherently regardless of the data bus width and use that register only when it has been fully programmed.
This may need to be the case regardless of the relationship between the clocks.
Coherency enables a value to be read that is an accurate reflection of the state of the counter, independent of
the data bus width, the counter width, and even the relationship between the clocks. Additionally, a value
written in one domain is transferred to another domain in a seamless and coherent fashion.
Throughout this appendix the following terms are used:
■ Writing. A bus master programs a configuration register. An example is programming the load value
of a counter into a register.
■ Transferring. The programmed register is in a different clock domain to where it is used, therefore, it
needs to be transferred to the other clock domain.
■ Loading. Once the programmed register is transferred into the correct clock domain, it needs to be
loaded or used to perform its function. For example, once the load value is transferred into the
counter domain, it gets loaded into the counter.
Coherency circuitry enables the value to be loaded into the counter only when fully programmed and
crossed over clock domains if the peripheral clock is not synchronous to the processor clock. While the load
register is being programmed, the counter has access to the previous load value in case it needs to reload the
counter.
Coherency circuitry is only added in cores where it is needed. The coherency circuitry incorporates an
upper byte method that requires users to program the load register in LSB to MSB order when the
peripheral width is smaller than the register width. When the upper byte is programmed, the value can be
transferred and loaded into the load register. When the lower bytes are being programmed, they need to be
stored in shadow registers so that the previous load register is available to the counter if it needs to reload.
When the upper byte is programmed, the contents of the shadow registers and the upper byte are loaded
into the load register.
The upper byte is the top byte of a register. A register can be transferred and loaded into the counter only
when it has been fully programmed. A new value is available to the counter once this upper byte is written
into the register. The following table shows the relationship between the register width and the peripheral
bus width for the generation of the correct upper byte. The numbers in the table represent bytes, Byte 0 is
the LSB and Byte 3 is the MSB. NCR means that no coherency circuitry is required, as the entire register is
written with one access.
Upper Byte
Bus Width
9 - 16 1 NCR NCR
17 - 24 2 2 NCR
25 - 32 3 2 (or 3) NCR
There are three relationship cases to be considered for the processor and peripheral clocks:
■ Identical
■ Synchronous (phase coherent but of an integer fraction)
■ Asynchronous
Shadow
pwdata[7:0] 8 32 32
Shadow [7:0]
ByteWen[0] EN
pwdata[23:16] 8
Shadow [23:16]
ByteWen[2] EN
UpperByteWen EN LD
LoadCnt
The following figure shows a 32-bit register that is written over an 8-bit data bus, as well as the shadow
registers being loaded and then loaded into the counter when fully programmed. The LoadCnt signal lasts
for one cycle and is used to load the counter with CntLoadValue.
pclk
paddr A0 A1 A2 A3
penable
pwdata[7:0] 0A 0B 0C 0D
Shadow[7:0] 0A
Shadow[15:8] 0B
Shadow[23:16] 0C
LoadValue[31:0] 0D0C0B0A
UpperByteWen
LoadCnt
Counter[31:0] 0D0C0B0A
Each of the bytes that make up the load register are stored into shadow registers until the final byte is
written. The shadow register is up to three bytes wide. The contents of the shadow registers and the final
byte are transferred into the CntLoadValue register when the final byte is written. The counter uses this
register to load/initialize itself. If the counter is operating in a periodic mode, it reloads from this register
each time the count expires.
By using the shadow registers, the CntLoadValue is kept stable until it can be changed in one cycle. This
allows the counter to be loaded in one access and the state of the counter is not affected by the latency in
programming it. When there is a new value to be loaded into the counter initially, this is signaled by
LoadCnt = 1. After the upper byte is written, the LoadCnt goes to zero.
Shadow
pwdata[7:0] 8 32 32
Shadow [7:0]
ByteWen[0] EN
pwdata[23:16] 8
Shadow [23:16]
ByteWen[2] EN
UpperByteWen EN LD
1
LoadCnt
OR
The following figure shows a 32-bit register being written over an 8-bit data bus, as well as the shadow
registers being loaded and then loaded into the counter when fully programmed. The LoadCnt signal is
extended until a change in the toggle is detected and is used to load the counter.
pclk
counter_clk
paddr A0 A1 A2 A3
penable
pwdata[7:0] 0A 0B 0C 0D
Shadow[7:0] 0A
Shadow[15:8] 0B
Shadow[23:16] 0C
CntLoadValue[31:0] 0D0C0B0A
LoadCnt
toggle
toggle_edge_detect
Counter[31:0] 0D0C0B0A
Shadow
pwdata[7:0] 8 32 32 32
Shadow [7:0]
ByteWen[0] EN
ByteWen[1] EN
pwdata[23:16] 8
Shadow [23:16]
NewValue
ByteWen[2] EN &
red_counter_clk
UpperByteWen EN EN LD
(or ByteWen[3])
1 SafeNewValue
ClrNewValue
Reset
ClrNewValue
Reset red_counter_clk EN
Rising
counter_clk Edge red_counter_clk Toggle
1
Detect
ClrNewValue Edge
Detect
pclk
pclk
Shaded and edge detect registers are all
connected to the Bus clock. Others are
connected to the Peripheral clock.
When the clocks are asynchronous, you need to transfer the contents of the register from one clock domain
to another. It is not desirable to transfer the entire register through meta-stability registers, as coherency is
not guaranteed with this method. The circuitry needed requires the processor clock to be used to re-time the
peripheral clock. Upon a rising edge of the re-timed clock, the new value signal, NewValue, is transferred
into a safe new value signal, SafeNewValue, which happens after the edge of the peripheral clock has
occurred.
Every time there is a rising edge of the peripheral clock detected, the CntLoadValue is transferred into a
SafeCntLoadValue. This value is used to transfer the load value across the clock domains. The
SafeCntLoadValue only changes a number of bus clock cycles after the peripheral clock edge changes. A
counter running on the peripheral clock is able to use this value safely. It could be up to two peripheral
clock periods before the value is loaded into the counter. Along with this loaded value, there also is a single
bit transferred that is used to qualify the loading of the value into the counter.
The timing diagram depicted in the following figure does not show the shadow registers being loaded. This
is identical to the loading for the other clock modes.
pclk
counter_clk
UpperByteWen
paddr A3
penable
pwdata[7:0] 0D
NewValue
ntLoadValue[31:0] 0D0C0B0A
red_counter_clk
ntLoadValue[31:0] 0D0C0B0A
SafeNewValue
toggle
ClrNewValue
Counter[31:0] 0D0C0B0A
The NewValue signal is extended until a change in the toggle is detected and is used to update the safe
value. The SafeNewValue is used to load the counter at the rising edge of the peripheral clock. Each time a
new value is written the toggle bit is flipped and the edge detection of the toggle is used to remove both the
NewValue and the SafeNewValue.
Lower Byte
Bus Width
9 - 16 0 NCR NCR
Lower Byte
Bus Width
17 - 24 0 0 NCR
25 - 32 0 0 NCR
Depending on the bus width and the register width, there may be no need to save the upper bits because the
entire register is read in one access, in which case there is no problem with coherency. When the lower byte
is read, the remaining upper bytes within the counter register are transferred into a holding register. The
holding register is the source for the remaining upper bytes. Users must read LSB to MSB for this solution to
operate correctly. NCR means that no coherency circuitry is required, as the entire register is read with one
access.
There are two cases regarding the relationship between the processor and peripheral clocks to be considered
as follows:
■ Identical and/or synchronous
■ Asynchronous
SafeCntVal
CntVal[31:8]
EN
LowerByteRen ReadCntVal[31:0]
CntVal[31:8]
ByteRen[3:0]
Counter
Block
Shaded registers are clocked
with the processor clock.
pclk
clk1
penable
prdata[7:0] 03 02 01 00 0H 0G
LowerByteRen
Note You must read LSB to MSB when the bus width is narrower than the counter width.
Once a read transaction has started, the value of the upper register bits need to be stored into a shadow
register so that they can be read with subsequent read accesses. Storing these upper bits preserves the
coherency of the value that is being read. When the processor reads the current value it actually reads the
contents of the shadow register instead of the actual counter value. The holding register is read when the
bus width is narrower than the counter width. When the LSB is read, the value comes from the shadow
register; when the remaining bytes are read they come from the holding register. If the data bus width is
wide enough to read the counter in one access, then the holding registers do not exist.
The counter clock is registered and successively pipelined to sense a rising edge on the counter clock.
Having detected the rising edge, the value from the counter is known to be stable and can be transferred
into the shadow register. The coherency of the counter value is maintained before it is transferred, because
the value is stable.
The following figure illustrates the synchronization of the counter clock and the update of the shadow
register.
CntVal ShdwCntVal
SafeCntVal
EN
LowerByteRen ReadCntVal
EN
Safe To Update
Sync & Rising
Edge Detect Sync and shaded registers are
clocked with the processor clock.
Performance
8.7 Performance
This section discusses performance and the hardware configuration parameters that affect the performance
of the DW_apb_ictl.
A
Synchronizer Methods
This appendix describes the synchronizer methods (blocks of synchronizer functionality) that are used in
the DW_apb_ictl to cross clock boundaries.
This appendix contains the following sections:
■ “Synchronizers Used in DW_apb_ictl” on page 112
■ “Synchronizer 1: Simple Double Register Synchronizer (DW_apb_ictl)” on page 113
The DesignWare Building Blocks (DWBB) contains several synchronizer components with
Note functionality similar to methods documented in this appendix. For more information about the
DWBB synchronizer components go to:
https://www.synopsys.com/dw/buildingblock.php
Note The BCM21 is a basic multiple register based synchronizer module used in the design. It can be
replaced with equivalent technology specific synchronizer cell.
Figure A-1 Block Diagram of Synchronizer 1 With Two Stage Synchronization (Both Positive Edge)
test
D Q width
Missampling Disabled
test
Missampling width width width
data_s Delay Block D Q D Q data_d
(per-bit basis)
D Q width
Missampling Enabled
B
Internal Parameter Descriptions
Provides a description of the internal parameters that might be indirectly referenced in expressions in the
Signals, Parameters, or Registers chapters. These parameters are not visible in the coreConsultant GUI and
most of them are derived automatically from visible parameters. You must not set any of these parameters
directly.
Some expressions might refer to TCL functions or procedures (sometimes identified as function_of) that
coreConsultant uses to make calculations. The exact formula used by these TCL functions is not provided in
this chapter. However, when you configure the core in coreConsultant, all TCL functions and parameters
are evaluated completely; and the resulting values are displayed where appropriate in the coreConsultant
GUI reports.
HADDR_REGFILE_SLICE_LHS 9
HADDR_WIDTH 32
ICTL_VERSION_ID 32'h3230392a
C
Glossary
active command queue Command queue from which a model is currently taking commands; see also
command queue.
APB Advanced Peripheral Bus — optimized for minimal power consumption and
reduced interface complexity to support peripheral functions (Arm® Limited
specification).
APB bridge DW_apb submodule that converts protocol between the AHB bus and APB bus.
application design Overall chip-level design into which a subsystem or subsystems are integrated.
arbiter AMBA bus submodule that arbitrates bus activity between masters and slaves.
BFM Bus-Functional Model — A simulation model used for early hardware debug. A
BFM simulates the bus cycles of a device and models device pins, as well as
certain on-chip functions. See also Full-Functional Model.
big-endian Data format in which most significant byte comes first; normal order of bytes in a
word.
blocked command stream A command stream that is blocked due to a blocking command issued to that
stream; see also command stream, blocking command, and non-blocking
command.
blocking command A command that prevents a testbench from advancing to next testbench
statement until this command executes in model. Blocking commands typically
return data to the testbench from the model.
bus bridge Logic that handles the interface and transactions between two bus standards,
such as AHB and APB. See APB bridge.
command channel Manages command streams. Models with multiple command channels execute
command streams independently of each other to provide full-duplex mode
function.
command stream The communication channel between the testbench and the model.
component A generic term that can refer to any synthesizable IP or verification IP in the
DesignWare Library. In the context of synthesizable IP, this is a configurable block
that can be instantiated as a single entity (VHDL) or module (Verilog) in a design.
configuration The act of specifying parameters for a core prior to synthesis; can also be used in
the context of VIP.
configuration intent Range of values allowed for each parameter associated with a reusable core.
core developer Person or company who creates or packages a reusable core. All the cores in the
DesignWare Library are developed by Synopsys.
core integrator Person who uses coreConsultant or coreAssembler to incorporate reusable cores
into a system-level design.
coreAssembler Synopsys product that enables automatic connection of a group of cores into a
subsystem. Generates RTL and gate-level views of the entire subsystem.
coreConsultant A Synopsys product that lets you configure a core and generate the design views
and synthesis views you need to integrate the core into your design. Can also
synthesize the core and run the unit-level testbench supplied with the core.
coreKit An unconfigured core and associated files, including the core itself, a specified
synthesis methodology, interfaces definitions, and optional items such as
verification environment files and core-specific documentation.
cycle command A command that executes and causes HDL simulation time to advance.
decoder Software or hardware subsystem that translates from and “encoded” format back
to standard format.
design context Aspects of a component or subsystem target environment that affect the
synthesis of the component or subsystem.
DesignWare Synthesizable The Synopsys name for the collection of AMBA-compliant coreKits and
Components verification models delivered with DesignWare and used with coreConsultant or
coreAssembler to quickly build DesignWare Synthesizable Component designs.
DesignWare cores A specific collection of synthesizable cores that are licensed individually. For
more information, refer to www.synopsys.com/designware.
dual role device Device having the capabilities of function and host (limited).
endian Ordering of bytes in a multi-byte word; see also little-endian and big-endian.
Full-Functional Mode A simulation model that describes the complete range of device behavior,
including code execution. See also BFM.
GTECH A generic technology view used for RTL simulation of encrypted source code by
non-Synopsys simulators.
implementation view The RTL for a core. You can simulate, synthesize, and implement this view of a
core in a real chip.
interface Set of ports and parameters that defines a connection point to a component.
MacroCell Bigger IP blocks (6811, 8051, memory controller) available in the DesignWare
Library and delivered with coreConsultant.
master Device or model that initiates and controls another device or peripheral.
non-blocking command A testbench command that advances to the next testbench statement without
waiting for the command to complete.
peripheral Generally refers to a small core that has a bus connection, specifically an APB
interface.
RTL Register Transfer Level. A higher level of abstraction that implies a certain gate-
level structure. Synthesis of RTL code yields a gate-level design.
static controller Memory controller with specific connections for Static memories such as
asynchronous SRAMs, Flash memory, and ROMs.
synthesis intent Attributes that a core developer applies to a top-level design, ports, and core.
technology-independent Design that allows the technology (that is, the library that implements the gate
and via widths for gates) to be specified later during synthesis.
Testsuite Regression A collection of files for stand-alone verification of the configured component. The
Environment (TRE) files, tests, and functionality vary from component to component.
VIP Verification Intellectual Property — A generic term for a simulation model in any
form, including a Design View.
wrap, wrapper Code, usually VHDL or Verilog, that surrounds a design or model, allowing easier
interfacing. Usually requires an extra, sometimes automated, step to create the
wrapper.
zero-cycle command A command that executes without HDL simulation time advancing.
Index
A command stream
active command queue definition 118
definition 117 component
activity definition 118
definition 117 configuration
AHB definition 118
definition 117 configuration intent
AMBA definition 118
definition 117 core
APB definition 118
definition 117 core developer
APB bridge definition 118
definition 117 core integrator
APB interface, reading to/writing from 93 definition 118
application design coreAssembler
definition 117 definition 118
arbiter coreConsultant
definition 117 definition 118
coreKit
B
definition 118
BFM
Customer Support 10
definition 117
cycle command
big-endian
definition 118
definition 117
blocked command stream D
definition 117 decoder
blocking command definition 118
definition 117 design context
bus bridge definition 118
definition 118 design creation
definition 118
C
Design View
Coherency
definition 118
about 99
read 105 DesignWare cores
write 99 definition 119
command channel DesignWare Library
definition 118 definition 119
SolvNet 2.09a
122 Synopsys, Inc.
DesignWare.com July 2018
DesignWare DW_apb_ictl Databook Index
Z
zero-cycle command
definition 120
SolvNet 2.09a
124 Synopsys, Inc.
DesignWare.com July 2018