DW Apb Uart Databook
DW Apb Uart Databook
DW Apb Uart Databook
Version 3.04a
Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
About This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Related Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Manual Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Typographical and Symbol Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Additional Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Comments? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Chapter 1
Product Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
DesignWare AMBA System Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
DesignWare AMBA System Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
General Product Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
DW_apb_uart Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Standards Compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Speed and Clock Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Verification Environment Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Where To Go From Here . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Chapter 2
Building and Verifying a Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Setting up Your Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Overview of the Configuration and Integration Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Start Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Check Your Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Add DW_apb_uart to the Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Configure DW_apb_uart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Complete Signal Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Generate Subsystem RTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Create Gate-Level Netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Checking Synthesis Status and Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Synthesis Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Running Synthesis from Command Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Create Component GTECH Simulation Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Verify Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Checking Simulation Status and Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Applying Default Verification Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Verify the Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Formal Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Simulate Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Checking Subsystem Verification Status and Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Create a Batch Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Export the Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Chapter 3
Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
UART (RS232) Serial Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
IrDA 1.0 SIR Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
FIFO Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Clock Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Auto Flow Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Programmable THRE Interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Clock Gate Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
DMA Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Chapter 4
Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Parameter Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Chapter 5
Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
DW_apb_uart Interface Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
DW_apb_uart Signal Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Chapter 6
Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Register Memory Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Register and Field Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
RBR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
THR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
DLH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
DLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
IER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
IIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
FCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
LCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
MCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
LSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
MSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
SCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
LPDLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
LPDLH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
SRBR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
STHR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
FAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
TFR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
RFW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
USR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
TFL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
RFL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
SRR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
SRTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
SBCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
SDMAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
SFE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
SRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
STET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
HTX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
DMASA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
CPR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
UCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
CTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Chapter 7
Programming the DW_apb_uart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Software Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Chapter 8
Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Overview of DW_apb_uart Testbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Chapter 9
Integration Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Reading and Writing from an APB Slave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Reading From Unused Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
32-bit Bus System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
16-bit Bus System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
8-bit Bus System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Write Timing Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Read Timing Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Accessing Top-level Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Coherency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Writing Coherently . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Reading Coherently . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Appendix A
Building and Verifying Your DW_apb_uart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Set up Your Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Start coreConsultant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Check Your Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Configure DW_apb_uart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Create Gate-Level Netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Checking Synthesis Status and Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Synthesis Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Preface
Related Documents
To see a complete listing of documentation within the DesignWare Synthesizable Components for
AMBA 2, refer to the Guide to DesignWare AMBA IP Component Documentation.
Note
Information on the DW_apb_uart component in this databook assumes that the reader is
fully familiar with the National Semiconductor 16550 (UART) component specification.
This specification can be obtained on the web at:
http://www.national.com/ds/PC/PC16550D.pdf
Information provided on IrDA SIR mode assumes that the reader is fully familiar with the
IrDa Serial Infrared Physical Layer Specification. This specification can be obtained from
the following website:
http://www.irda.org
Manual Overview
This manual contains the following chapters and appendixes:
Chapter 2 Provides getting started information that allows you to walk through
“Building and Verifying a the process of using the DW_apb_uart with Synopsys’ DesignWare
Subsystem” Connect tool.
Appendix A Provides getting started information that allows you to walk through
“Building and Verifying Your the process of using the DW_apb_uart with Synopsys’ coreConsultant
DW_apb_uart” tool.
Appendix C Provides getting started information that allows you to walk through
“DesignWare QuickStart Designs” the process of using the DW_apb_uart with Synopsys’ coreConsultant
tool.
Italic or Italic Variables for which you supply a specific value. As a command line example:
% setenv LMC_HOME prod_dir
In body text:
In the previous example, prod_dir is the directory where your product must be
installed.
Getting Help
If you have a question about using Synopsys products, please consult product documentation that is
installed on your network or located at the root level of your Synopsys product CD-ROM (if available).
You can also access documentation for DesignWare products on the Web:
● Product documentation for many DesignWare products:
http://www.synopsys.com/designware/docs
● Datasheets for individual DesignWare IP components, located using “Search for IP”:
http://www.synopsys.com/designware
You can also contact the Synopsys Support Center in the following ways:
● Open a call to your local support center using this page:
http://www.synopsys.com/support/support.html
● Send an e-mail message to [email protected].
● Telephone your local support center:
❍ United States:
Call 1-800-245-8005 from 7 AM to 5:30 PM Pacific Time, Mon—Fri.
❍ Canada:
Call 1-650-584-4200 from 7 AM to 5:30 PM Pacific Time, Mon—Fri.
❍ All other countries:
Find other local support center telephone numbers at the following URL:
http://www.synopsys.com/support/support_ctr
Additional Information
For additional Synopsys documentation, refer to the following page:
http://www.synopsys.com/designware/docs
For up-to-date information about the latest Synthesizable IP and verification models, visit the
DesignWare home page:
http://www.synopsys.com/designware
Comments?
To report errors or make suggestions, please send e-mail to:
[email protected].
To report an error that occurs on a specific page, select the entire page (including headers and footers),
and copy to the buffer. Then paste the buffer to the body of your e-mail message. This will provide us
with information to identify the source of the problem.
1
Product Overview
Attention
Links resolve only if you are viewing this databook from your $DESIGNWARE_HOME
tree, and to only those components that are installed in the tree.
RAM
Memory Models
Star IP ahb_monitor_vmt
AHB Master/Slave μPs DW_ahb_ictl DW_memctl DW_ahb_dmac
BIMs
Arbitration, DW_ahb
Decode, & Mux
DW_ahb
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) Third-party
Peripherals
apb_monitor_vmt Application-
APB Slave Specific Third-party
BIMs Logic Peripherals
DW_ahb
DW_apb AHB/APB Bridge
The following paragraphs describe various functionality that you can configure into the DW_apb_uart:
Transmit and receive data FIFOs:
To reduce the time demand placed on the master by the DW_apb_uart, optional FIFOs are available to
buffer transmit and receive data. This means that the master does not have to access the DW_apb_uart
each time a single byte of data is received. The optional FIFOs can be selected at configuration time.
The FIFOs can be selected to be either external customer-supplied FIFO RAMs or internal DesignWare
D-flip-flop based RAMs (DW_ram_r_w_s_dff). When external RAM support is chosen, both
synchronous or asynchronous read-port memories are supported. When FIFO support is selected, an
optional test/debug mode is available to allow the receive FIFO to be written by the master and the
transmit FIFO to be read by the master.
DMA controller interface:
The DW_apb_uart can interface with a DMA controller by way of external signals (dma_tx_req_n and
dma_rx_req_n) to indicate when data is ready to be read or when the transmit FIFO is empty.
Additional optional DMA signals are available for DesignWare DMA controller interface compatibility
(such as interface with DW_ahb_dmac).
Asynchronous clock support:
To solve problems surrounding CPU data synchronization in relation to the required serial baud clock
requirements, an optional separate serial data clock can be selected. When it selected, all data crossing
between the two clock domains is guaranteed by full handshaking and level-syncing synchronization.
Auto flow control:
System efficiency can be increased and software load decreased with a 16750-compatible Auto Flow
Control Mode. When FIFOs and the Auto Flow Control are selected and enabled, serial data flow is
automatically controlled by the request-to-send (rts_n) output and clear-to-send (cts_n) input.
Programmable Transmit Holding Register Empty (THRE) interrupt:
System performance can be increased by a Programmable Transmitter Holding Register Empty
(THRE) Interrupt Mode. When FIFOs and the THRE Mode are selected and enabled, THRE Interrupts
are active at and below a programmed TX FIFO threshold level. In addition, the Line Status THRE
switches from indicating TX FIFO empty, to TX FIFO full. This allows software to set a threshold that
keeps the transmitter FIFO from running empty whenever there is data to transmit.
Serial infrared support:
For integration in systems where Infrared SIR serial data format is required, the DW_apb_uart can be
configured to have a software-programmable IrDA SIR Mode. If this mode is not selected, only the
UART (RS232 standard) serial data format is available.
Increase the built-in diagnostic capabilities:
To increase the built-in diagnostic capabilities of the DW_apb_uart, the Modem Control Loopback
Mode has been extended. Modem Status bits actually reflect Modem Control Register deltas, as well as
the bits themselves. Also, when FIFOs and Auto Flow Control Mode are selected and enabled, the
Modem Control RTS is internally looped back to the CTS to control the transmitter. This allows local
testing of the Auto CTS mode. In addition, the controllability of rts_n, via the receiver FIFO threshold,
can be observed via the RTS Modem Status bit. This allows local verification of the Auto RTS mode.
Level 1 and 2 debug support:
To help with debug issues, optional debug signals are available on the DW_apb_uart. To comply with
level 1 and 2 debug support requirements, many internal points of interest to the debugger are available
as outputs.
tx_ram_in
DW_apb_uart tx_ram_wr_addr
tx_ram_out
tx_ram_rd_addr
rx_ram_out FIFO
tx_ram_we_n
Block
(Optional) tx_ram_re_n
pclk
tx_ram_rd_ce_n
rx_ram_in
pwrite
penable rx_ram_wr_addr
psel APB rx_ram_rd_addr
pwdata Interface
rx_ram_we_n
paddr
rx_ram_re_n
rx_ram_rd_ce_n
prdata
intr
a Register
dma_tx_ack
Block dma_tx_singlea
dma_rx_acka dma_rx_singlea
dma_tx_reqa
dma_rx_reqa
s_rst_n dtr_n
Reset
presetn rts_n
Block
out1_n
out2_n
cts_n
dsr_n Modem debug
dcd_n Sync Sync uart_lp_req_pclk
Block Block
ri_n Timeout uart_lp_req_sclk
(Optional)
Detector
(Optional)
sclk
Baud baudout_n
scan_mode Clock
Generator
sin sout
sir_in Serial Receiver Serial Transmitter sir_out_n
a
Optional signals denoted with dashed lines Can either be low-active or high-active
Features
● AMBA APB interface allows easy integration into AMBA SoC implementations
● Configurable parameters for the following:
❍ APB data bus widths of 8, 16 and 32
❍ Additional DMA interface signals for compatibility with DesignWare DMA interface
❍ DMA interface signal polarity
❍ Transmit and receive FIFO depths of none, 16, 32, 64,…,2048
❍ Internal or external FIFO (RAM) selection
❍ Use of two clocks (pclk and sclk) instead of one (pclk)
❍ IrDA 1.0 SIR mode support with up to 115.2 Kbaud data rate and a pulse duration (width) as
follows: width = 3/16 × bit period as specified in the IrDA physical layer specification
❍ IrDA 1.0 SIR low-power reception capabilities
❍ Baud clock reference output signal
❍ Clock gate enable output(s) used to indicate that the TX and RX pipeline is clear (no data) and
no activity has occurred for more than one character time, so clocks may be gated
❍ FIFO access mode (for FIFO testing) so that the receive FIFO can be written by the master
and the transmit FIFO can be read by the master
❍ Additional FIFO status registers
❍ Shadow registers to reduce software overhead and also include a software programmable reset
❍ Auto Flow Control mode as specified in the 16750 standard
❍ Loopback mode that enables greater testing of Modem Control and Auto Flow Control
features (Loopback support in IrDA SIR mode is available)
❍ Transmitter Holding Register Empty (THRE) interrupt mode
● Ability to set some configuration parameters in instantiation
● Configuration identification registers present
● Functionality based on the 16550 industry standard, as follows:
❍ Programmable character properties, such as number of data bits per character (5-8), optional
parity bit (with odd or even select) and number of stop bits (1, 1.5 or 2)
❍ Line break generation and detection
❍ DMA signaling with two programmable modes
❍ Prioritized interrupt identification
● Programmable FIFO enable/disable
● Programmable serial data baud rate as calculated by the following:
baud rate = (serial clock frequency)/(16×divisor)
● External read enable signal for RAM wake-up when using external RAMs
● Modem and status lines are independently controlled
● Complete RTL version
● Separate system resets for each clock domain to prevent metastability
Standards Compliance
The DW_apb_uart component conforms to the AMBA Specification, Revision 2.0 from ARM. Readers
are assumed to be familiar with this specification.
Note
Information on the DW_apb_uart component in this databook assumes that the reader is
fully familiar with the National Semiconductor 16550 (UART) component specification.
This specification can be obtained on the web at:
http://www.national.com/pf/PC/PC16550D.html#Datasheet
Information provided on IrDA SIR mode assumes that the reader is fully familiar with the
IrDa Serial Infrared Physical Layer Specification. This specification can be obtained from
the following website:
http://www.irda.org
Once the required set of randomized “system” and “parametric” variables are obtained, three separate
groups of testcode are kicked off concurrently – one for the generating of the stimulus for the
DW_apb_uart and supporting models; one for the overall environment support, such as scoreboarding,
messaging, signal transition detections, etc.; and lastly, one for the checkers.
To support the serial exchanges of characters, in both the IrDA and normal transfer modes, VERA
models in the SIO VIP are used. Two instances of both the SIOTxrx and the SIOMonitor models assist
in verifying that the DW_apb_uart’s hardware functionalities.
To support DMA-controlled transfers to and from the DW_apb_uart, an instance of a AHB DMA BFM
is also included. This acts as an independent AHB master issuing AHB transfer commands separately
from the AHB master model used to control the DW_apb_uart.
Licenses
Before you begin using the DW_apb_uart, you must have a valid license. For more information, refer
to “Licenses” in the DesignWare AMBA Synthesizable Components Installation Guide.
Single Component
Configuration coreConsultant
Synthesis coreConsultant
Verification coreConsultant
Multiple Components
For more information about implementing your DW_apb_uart component within a DesignWare
AMBA subsystem using DesignWare Connect, refer to Chapter 2, “Building and Verifying a
Subsystem” on page 21.
For more information about configuring, synthesizing, and verifying just your DW_apb_uart
component, refer to Appendix A, “Building and Verifying Your DW_apb_uart” on page 153.
2
Building and Verifying a Subsystem
This chapter documents the step-by-step process you use to connect, configure, synthesize, and verify a
DW_apb_uart component within a simple DesignWare AMBA subsystem using the DesignWare
Connect tool. You use Connect to create a workspace, which is your working version of a DesignWare
AMBA Synthesizable IP (SIP) subsystem. You can create several workspaces to experiment with
different design alternatives.
Connect uses coreAssembler as the base tool, but it adds subsystem simulation to the standard
coreAssembler functionalities. Complete information about the latest version of Connect is available
on the web in the DesignWare Connect User Guide. To view documentation specific to your version of
Connect, choose the Help pull-down menu in the Connect GUI.
For detailed information about coreAssembler, refer to the coreAssembler User Guide.
If you want to build and verify only one component, coreConsultant is most likely the best tool for you
to use. For specific information about using coreConsultant to configure, synthesize, and verify your
DW_apb_uart component, refer to Appendix A on page 153.
The topics in this chapter are as follows:
1. “Setting up Your Environment” on page 22
2. “Overview of the Configuration and Integration Process” on page 22
3. “Start Connect” on page 24
4. “Check Your Environment” on page 25
5. “Add DW_apb_uart to the Subsystem” on page 26
6. “Configure DW_apb_uart” on page 29
7. “Complete Signal Connections” on page 30
8. “Generate Subsystem RTL” on page 30
9. “Create Gate-Level Netlist” on page 32
10. “Create Component GTECH Simulation Model” on page 35
11. “Verify Component” on page 37
12. “Verify the Subsystem” on page 40
13. “Create a Batch Script” on page 42
14. “Export the Subsystem” on page 43
1 Run Connect
% cd <working directory>
% dw_connect
2 Create workspace Connect Workspace
mydesign
testbench synthesis
verification file list
i_apb reports
synthesis constraints
synthesis
…
Directory/Subdirectory Description
export Contains the files you will need once you exit Connect. These files will be
used to integrate the results from the completed source configuration and
synthesis activities into your larger system (outside Connect). An
index.html file in this directory describes all of the exported files. For
more details about the files in this directory, refer to “Export Directory” in
the DesignWare Connect User Guide.
components/instance_name Contains the data for each IP component instance. This is the instance
name of the component used in the design. Each instance_name directory
is equivalent to a coreConsultant component workspace. See the IP
component’s databook for details of this directory structure.
report Contains all of the reports created by Connect during build, configuration,
test and synthesis phases. An index.html file in this directory links to many
of these generated reports.
sim Includes simulation files for the subsystem. This directory is created when
you complete the Simulate Subsystem activity in uart.
syn Contains synthesis files for the subsystem. This directory is created when
you complete all of the activities in the Create Gate-Level Netlist
(synthesis) activity group in Connect.
Start Connect
To invoke Connect:
1. In a UNIX shell, navigate to a directory where you plan to locate your component workspace.
2. Invoke the Connect tool:
% dw_connect
The welcome page is displayed, similar to the one below.
Activity View
Activity List pane
pane
Console
pane
Command Line
pane
3. Click on “create a new AMBA subsystem now” link to create a new workspace. After you have
created a workspace, you can also continue working from the point you left off by using the “open
an existing AMBA subsystem” link to open it back up.
A “Create a New Workspace” message appears, which explains some of the terms used by
coreAssembler. Read this information and then click OK.
4. In the resulting dialog box, specify the workspace name, workspace root directory, and design
name, or leave the defaults. To find out more about the fields in this dialog box, you can right-click
over the specific item to get What’s This help.
The following describes these items in more detail:
❍ Workspace name - the name of the Unix directory where the database containing all of your
design files will be kept.
❍ Workspace root directory - the name of the Unix directory that is the “parent” to your
workspace directory (Workspace name).
❍ Design name - the top-level design name that is used in the top-level RTL file.
Connect displays an HTML file that explains general design rules and address map specification
rules for Connect subsystems. Familiarize yourself with the information in this file so that you will
be familiar with the automatically-generated testbench that will result from this session. If you
later want to access this information again, use the Help > Connect Design Rules menu. When
you have finished, click OK.
At this point, Connect creates in the workspace an export directory that will eventually contain the
files you need once you exit Connect. You can use these files for your own chip-level synthesis
and simulation. A README file and an index.html file in this directory both describe all of the
exported files in this directory.
In the Connect GUI, you will see that the DW_ahb component is already displayed in the
schematic window and that the Add Subsystem Components activity is highlighted under the
Create RTL category in the Activity List on the left.
For more information about Connect, refer to the DesignWare Connect User Guide. For more
in-depth Connect tutorials, refer to the “Connect Tutorials” chapter of the DesignWare Connect
User Guide. For tables that list the contents of the export directory at each step of the Connect
process, refer to “Export Directory” in the DesignWare Connect User Guide.
Note
You do not have to be concerned if this tool reports errors regarding simulators that are not
used. Only concern yourself if you receive an error regarding your simulator of choice.
For more information about setting the appropriate environment variables for your
simulator, refer to “Setting up Your Environment” in the DesignWare AMBA Synthesizable
Components Installation Guide.
You will also see an error if your $DESIGNWARE_HOME environment variable has not been set up
correctly. When you are finished, click OK.
User’s System/Chip
DesignWare Connect
non-DW AMBA IP
(custom AHB master) m
DW_ahb
Bridge
DW_apb_uart
(DW_apb) s
4. Notice that the DW_ahb instance is red in the schematic view. Toggle over to the tree view by
clicking the toggle icon on the toolbar and expand the i_ahb component instance. The AHB
Master line in the Interface Connections says that it is missing a connection, and the i_ahb/Remap-
Pause line shows it as disconnected.
To resolve this, you are going to export an AHB master interface from the DW_ahb.
5. To export an AHB master interface, select the AHB Master line in the tree view, right-click, and
then select Export Interface as illustrated in the following figure.
The “Export Interface Instance from Subsystem” dialog opens. For this exercise, keep the default
naming and click OK.
6. You now have a rudimentary subsystem that includes the DW_apb_uart component. Next try to
complete the Add Subsystem Components activity by clicking the Apply button in the lower right
corner below the schematic. Alternatively, you can just click on the next activity (Configure
Components), and answer “yes” to the pop-up window.
An error message appears telling you that there is a problem because the remap/pause interface in
the DW_ahb is not connected. Notice that the DW_ahb component is still red, indicating that there
is some kind of problem. The Console pane at the bottom of the GUI gives you additional
information about the error, as illustrated in the following figure.
Note
These error messages are generated from TCL code and may seem verbose. In most cases,
the first part of the error message contains useful information, whereas the remainder of
the message can be ignored. If you want to obtain more information about a particular
error, you can issue the following command in the Command Line below the Console
pane:
7. Because you do not need the remap/pause feature in this subsystem, you will set that interface as
“unused.” OK the error message and right-click on the i_ahb/Remap-Pause interface and choose
the Set Unused menu item. Notice that the DW_ahb is no longer red.
You can see in the following illustration the difference between how the tree view displays an
error and how it looks when the error is resolved.
Before After
8. Click the Apply button again to complete the Add System Components activity. When a message
box asks you if you want to initialize the subsystem address map, click Yes. Automatic address
map creation is discussed in more detail in the next section “Configure DW_apb_uart” on page 29.
Connect creates the files described below in the export directory for this activity.
batch.tcl Batch script for recreating completed activities associated with subsystem
assembly. This file gets updated after the following activities are completed:
● Add Subsystem Components
● Complete Connections
● Simulate Subsystem
index.html HTML file containing descriptions of files created in export directory after the
Add Subsystem Components step.
README Text file containing descriptions of files created in the export directory after the
Add Subsystem Components step.
9. Connect displays a report for the subsystem, which includes a number of hyperlinks to sections
further down in the page for unconnected interfaces, subsystem components, exported interface
connections, component interface connections, and subsystem ports to be created. You should
always familiarize yourself with the information in all reports before going to any new activity.
Configure DW_apb_uart
This section steps you through the tasks that configure the component-level parameters (configuration
parameters) for DW_apb_uart in Connect. For this exercise, you will not configure any of the other
components in this example subsystem, but instead leave them with their default parameter values.
If you need help with any field in the Activity List pane, right-click on the field name and then
left-click on the What’s This box to get specific information for that item. Additionally, you can click
on the Help tab (lower-left corner of the Activity View pane) for each activity to activate the
coreAssembler online help.
1. Configure Components – The Configure Components activity is where you specify the basic
configuration of the DW_apb_uart; click on that item in the Activity List.
2. Click the DW_apb_uart item (also called i_uart) to display the Top Level Parameters window;
look through the defaults.
3. Because you clicked “Yes” when the dialog asked if you wanted to initialize the subsystem address
map at the completion of the Add Subsystems Components activity, look at the results.
a. Click on the DW_apb (i_apb) item, and then click on the “Address Map” item.
b. Notice that the APB start address is 0x00010000 and that the end address is 0x000103ff,
which is the same as the start and end addresses of the DW_apb_uart, listed as Slave 0. If you
had connected one or more APB slaves to the DW_apb component, then the start and end
address of the DW_apb would have reflected the start address of Slave 0 and the end address
of the last slave. Similarly, you can view the automatically generated address map in the
DW_ahb component.
4. Click the Apply button to activate the configuration parameters. Connect creates no files in the
export directory for this activity.
When the configuration setup is complete, the Report tab is displayed, which gives you a list of
configuration reports for all the components in the subsystem. At minimum, click on the link to the
configuration report for DW_apb_uart. Look at any source files to which you have access (in
encrypted format if you have a DesignWare license, and unencrypted if you have a source license)
and look at all the parameters that have been set for this particular configuration.
batch.tcl Updated to include all activities completed to this point. You can use this script
to recreate the entire workspace up to this point in the Activity List.
2. If you are using a Verilog simulator (such as VCS), choose the default Verilog language and Apply
the activity.
3. If you are using a VHDL simulator, click the button for VHDL as the output language and then
choose between std_logic or std_ulogic.
Note
This dialog only selects the HDL language for the top-level RTL for the subsystem. All
RTL written for the instantiated components in the subsystem are controlled by the
individual IP provider. For all DesignWare Synthesizable Components for AMBA 2, the
component RTL is written in Verilog.
4. Click Apply. Regardless of whether you use a Verilog or VHDL simulator, Connect creates both
Verilog and VHDL files in workspace/src and workspace/export directories. If you choose a
Verilog simulator, the VHDL files will default to std_logic. Connect creates the following files in
the export directory for this activity.
batch.tcl No updates.
workspace.lst List of source files in proper analysis order for entire subsystem.
during a synthesis, you use the Advanced tab in order to provide path names to your auxiliary
scripts. Also, click on the Physical Synthesis tab to familiarize yourself with those options. Click
Apply and look at the report, which gives design information. For more information on adding
auxiliary scripts, refer to “Advanced Synthesis Methodology Attributes” in the coreAssembler
User Guide.
7. Specify Test Methodology – In the Specify Test Methodology activity, look at the scan test
attributes. Also click on the other tabs to familiarize yourself with auto-fix attributes, SoC test
wrapper attributes, test wrapper integration attributes, BIST attributes, and BIST testpoint insertion
attributes. Click Apply and look at the report, which gives design-for-test information.
8. Synthesize – Choose the Synthesize activity. Do the following:
a. Choose the Strategy tab.
b. Click the Options button beside DCTCL_opto_strategy and look through the strategy
parameters. For example, you can use the Gate Clocks During Elaboration check box in the
Clock Gating tab in order to add parameters that enable and control the use of clock gating.
Click OK when you are done. For more information on clock gating and other parameters for
synthesis strategies, refer to “DC(TCL)_opto_strategy” in the coreAssembler User Guide.
For FPGA synthesis, click the Options button and then select the FPGA Synthesis tab. It is
here where you specify the location of your FPGA device and speed grade, synthetic libraries
other than DesignWare Foundation libraries, implementation of DC-FPGA operators, and so
on. For more information about running synthesis for an FPGA device, refer to the
coreAssembler User Guide.
For Design for Test, click the Options button and then select the Design for Test tab. Here you
can specify whether to add the -scan option to the initial compile call (Test Read Compile)
and/or insert design for test circuitry (Insert Dft). For more information about include DFT in
your synthesis run, refer to the coreAssembler User Guide.
c. Choose the Options tab. Look at the values for the parameters listed below.
Execution Options
d. If it is not already set, choose the “local” Run Style option and keep the other default settings.
e. Look through the Licenses and Reports tabs, and ensure that you have all the licenses that are
required to run this synthesis session.
f. Click Apply in the Synthesize Activity pane to start synthesis from Connect. The current
status of the synthesis run is displayed in the main window. Click the Reload Page button if
you want to update the status in this screen.
9. Generate Test Vectors – This option allows you to generate ATPG test vectors with TetraMax.
For more information about this, refer to “Generating Test Vectors” in the coreAssembler User
Guide.
Note
The Synopsys VCS simulator reads the encrypted files directly and does not require a
GTECH conversion. All other supported simulators require a GTECH simulation model.
You need DesignWare and Design Compiler licenses to complete the GTECH generation
process. If you are a source license customer, then you do not have to generate a GTECH
simulation model, even if you are using a non-VCS simulator.
1. Create Component GTECH Simulation Model – To create a GTECH simulation model for the
DW_apb_uart component, click on the Generate GTECH Model (for i_uart) activity.
Note
For GTECH Simulations Only. Due to the configurable nature of the component, some
ports in the testbench may not be needed for your chosen configuration. Warnings about
undriven nets may appear. These warnings are to be expected, and you can ignore them.
The verification result files show if the verification ran successfully.
3. Click Apply. Connect invokes Design Compiler to perform a low-effort compile (quickmap) of
your custom configuration using the Synopsys technology-independent GTECH library. After this
activity has completed, an e-mail similar to the following is sent to the specified user name (if you
enabled that option):
Activity: GenerateGtechModel
Workspace: workspace_path
Design: design_name
Started: Wed Jul 24 16:19:48 BST 2002
Finished: Wed Jul 24 16:21:42 BST 2002
Status: Completed
Results: workspace_path/components/i_uart/gtech/gtech.log
Your simulation model is contained in the DW_apb_uart.v output file that is written to
workspace/components/i_uart/gtech/qmap/db.
Verify Component
The Verify Component activity in Connect allows you to perform verification for an individual
component. For this exercise, you are just going to perform verification for the DW_apb_uart;
however, you typically would also perform verification for other components in your subsystem.
To verify DW_apb_uart, use Connect to complete the following steps:
1. Verify Component – To run verification for the DW_apb_uart component, click Setup and Run
Simulations (for i_uart) in the Verify Component activity.
2. Specify the various options for the Simulator.
a. In the Select Simulator area, click on the Simulator list item to view available simulators
(VCS is the default).
b. Specify an appropriate Verilog simulator from the drop-down menu.
c. For installation instructions and information about required tools and versions, refer to
“Setting up Your Environment” in the DesignWare AMBA Synthesizable Components
Installation Guide. For general information about the contents of the release, refer to the
DesignWare DW_apb_uart Release Notes.
d. In the Simulator Setup area of the Simulator pane, look at the parameters for the simulator
setup, as detailed in the following table.
Field Name Description
Root Directory of Cadence The path to the top of the directory tree where the Cadence NC-Verilog
Installation executable is found; coreConsultant automatically detects this path. The
NC-Verilog executables reside in the ./bin subdirectory.
MTI Include Directory The path to the include directory contained within your MTI simulator
installation area. A valid directory includes the veriuser.h file.
Vera Install Area Path to your Vera installation. This parameter defaults to the value of your
($VERA_HOME) VERA_HOME environment variable. Changes to this value are propagated
as $VERA_HOME in any simulation run.
Vera .vro file cache Cache directory used by Vera to store .vro files, which are generated when
directory building the testbench. Encrypted Vera source is compiled and stored in the
cache.
DW Foundation install area Path to your $SYNOPSYS/dw installation. This parameter defaults to the
($SYNOPSYS) value of your SYNOPSYS environment variable. Any change to this value
must be made from the Tool Installation Areas coreConsultant dialog box.
C Compiler for (Vera PLI) Values: gcc or cc
Default Value: gcc
Description: Invokes the specific C compiler to create a Vera PLI for your
chosen non-VCS simulator. Choose cc if you have the platform-native ANSI
C compiler installed. Choose gcc if you have the GNU C compiler installed.
e. In the Waves Setup area of the Simulator pane, look at the parameters for the waves setup, as
detailed below.
Note
For the Generate Waves File setting, enable the check box so that the simulation creates a
dump file that you can use later for debugging the simulation, if you want to do so.
Formal Verification
You can run formal verification scripts using Synopsys Formality (fm_shell) to check two designs for
functional equivalence. You can check the gate-level design from a selected phase of a previously
executed synthesis strategy against either the RTL version of the design or the gate-level design from
another stage of synthesis.
To run formal verification scripts:
● Formal Verification – Choose Formal Verification under the Verify Component category and then
click Apply.
Simulate Subsystem
Specify the simulation for the subsystem by completing the Simulate Subsystem activity:
1. Simulate Subsystem – In the Simulator Setup tab, look at the parameters for the simulator setup,
as detailed in the following table.
Field Name Description
Control Language Values: Verilog or C
Default Value: Verilog
Description: The language used to control the testbench.
AHB/APB Monitors Values: Enable or Disable
Enabled Default Value: Enable
Description: Determines whether or not to activate the AHB/APB bus monitors.
SIO Monitors Enabled Values: Enable or Disable
Default Value: Enable
Description: Determines whether or not to activate the SIO monitors.
Simulator Values: Enable or Disable
Default Value: Enable
Description: Choice of simulator to invoke for the testbench.
MTI Include Path The path to the include directory contained within your ModelSim simulator
installation area. A valid directory includes the veriuser.h file.
Root Directory of The path to the top of the directory tree where the Cadence NC-Verilog
Cadence Installation executable is found; Connect automatically detects this path. The NC-Verilog
executables reside in the ./bin subdirectory.
Execution Options
3. Choose the Testbench Definition tab to determine which slaves you want to be tested by which
master – in this case, there is only one slave and one master.
4. Click Apply to run the subsystem simulation. Connect creates no files in the export directory for
this activity.
No files added.
Note
When you use this file, it deletes your workspace before it recreates it. So all manually
edited files will become deleted. Make sure to save any files you want to keep to a
different location.
To use this batch script to recreate your subsystem, perform the following:
1. Make sure to run the batch.tcl script from a directory other than where your workspace resides.
2. In the Console at the bottom of the Connect GUI screen, enter the following:
% source batch.tcl
3
Functional Description
This chapter describes the functional operation of the DW_apb_uart. The topics are as follows:
● “UART (RS232) Serial Protocol” on page 45
● “IrDA 1.0 SIR Protocol” on page 47
● “FIFO Support” on page 48
● “Clock Support” on page 49
● “Interrupts” on page 51
● “Auto Flow Control” on page 51
● “Programmable THRE Interrupt” on page 54
● “Clock Gate Enable” on page 56
● “DMA Support” on page 58
One Character
All the bits in the transmission (with exception to the half stop bit when 1.5 stop bits are used) are
transmitted for exactly the same time duration. This is referred to as a Bit Period or Bit Time. One Bit
Time equals 16 baud clocks. To ensure stability on the line the receiver samples the serial input data at
approximately the mid point of the Bit Time once the start bit has been detected. As the exact number
of baud clocks that each bit was transmitted for is known, calculating the mid point for sampling is not
difficult, that is every 16 baud clocks after the mid point sample of the start bit. Figure 6 shows the
sampling points of the first couple of bits in a serial character.
8 16 16
sclk
baudout_n (divisor of 1)
baudout_n (divisor of 2)
baudout_n (divisor of 3)
Attention
Information provided on IrDA SIR mode in this section assumes that the reader is fully
familiar with the IrDa Serial Infrared Physical Layer Specifications. This specification can
be obtained from the following website:
http://www.irda.org
The data format is similar to the standard serial (sout and sin) data format. Each data character is sent
serially, beginning with a start bit, followed by 8 data bits, and ending with at least one stop bit. Thus,
the number of data bits that can be sent is fixed. No parity information can be supplied and only one
stop bit is used while in this mode.
Trying to adjust the number of data bits sent or enable parity with the Line Control Register (LCR) has
no effect. When the DW_apb_uart is configured to support IrDA 1.0 SIR it can be enabled with Mode
Control Register (MCR) bit 6. When the DW_apb_uart is not configured to support IrDA SIR mode,
none of the logic is implemented and the mode cannot be activated, reducing total gate counts. When
SIR mode is enabled and active, serial data is transmitted and received on the sir_out_n and sir_in
ports, respectively.
Transmitting a single infrared pulse signals a logic zero, while a logic one is represented by not sending
a pulse. The width of each pulse is 3/16ths of a normal serial bit time. Thus, each new character begins
with an infrared pulse for the start bit. However, received data is inverted from transmitted data due to
the infrared pulses energizing the photo transistor base of the IrDA receiver, pulling its output low. This
inverted transistor output is then fed to the DW_apb_uart sir_in port, which then has correct UART
polarity. Figure 8 shows the timing diagram for the IrDA SIR data format in comparison to the standard
serial format.
bit period
data bits
sout start stop
3/16
bit
sir_out_n period
sir_in
When IrDA SIR mode is enabled, the DW_apb_uart operation is similar to when the mode is disabled,
with one exception; data transfers can only occur in half-duplex fashion when IrDA SIR mode is
enabled. This is because the IrDA SIR physical layer specifies a minimum of 10ms delay between
transmission and reception. This 10ms delay must be generated by software.
FIFO Support
The DW_apb_uart can be configured to implement FIFOs (as shown in Figure 2 on page 15) to buffer
transmit and receive data. If FIFO support is not selected, then no FIFOs are implemented and only a
single receive data byte and transmit data byte can be stored at a time in the RBR and THR. This
implies a 16450-compatible mode of operation. In this mode most of the enhanced features are
unavailable.
In FIFO mode, the FIFOs can be selected to be either external customer-supplied FIFO RAMs or
internal DesignWare D-flip-flop based RAMs (DW_ram_r_w_s_dff). If the configured FIFO depth is
greater than 256, the FIFO memory selection is restricted to be external. In addition, selection of
internal memory restricts the Memory Read Port Type to D-flip-flop based, Synchronous read port
RAMs.
When external RAM support is chosen, either synchronous or asynchronous RAMs can be used.
Asynchronous RAM provides read data during the clock cycle that has the memory address and read
signals active, for sampling on the next rising clock edge. Synchronous single stage RAM registers the
data at the current address out and is not available until the next clock cycle (second rising clock edge).
Figure 9 shows the timing diagram for both asynchronous and synchronous RAMs.
pclk
tx_ram_re_n
pclk
tx_ram_wr_addr Addr0
tx_ram_we_n
tx_ram_in Data
Clock Support
The DW_apb_uart can be configured to have either one system clock (pclk) or two system clocks (pclk
and sclk). Having the second asynchronous serial clock (sclk) implemented accommodates accurate
serial baud rate settings, as well as APB bus interface requirements. When using a single system clock,
the system clock settings available for accurate baud rates are greatly restricted.
When a two clock design is chosen, a synchronization module is implemented (as shown in Figure 2 on
page 15) for synchronization of all control and data across the two system clock boundaries. The RTL
diagram for the data synchronization module is shown in Figure 11 on page 50. The data
synchronization module can have pending data capability. The timing diagram shown in Figure 12 on
page 50 shows this process.
The arrival of new source domain data is indicated by the assertion of start. Since data is now available
for synchronization the process is started and busy status is set. If start is asserted while busy and
pending data capability has been selected, the new data is stored. When no longer busy the
synchronization process starts on the stored pending data. Otherwise the busy status is removed when
the current data has been synchronized to the destination domain and the process continues. If only one
clock is implemented, all synchronization logic is absent and signals are simply passed through this
module.
start
busy
pending
data_avail_togg
finish
Full synchronization handshake takes place on all signals that are “data synchronized”. All signals that
are “level synchronized” are simply passed through two destination clock registers. Both
synchronization types incur additional data path latencies. However, this additional latency has no
negative affect on received or transmitted data, other than to limit the serial clock (sclk) to being no
faster than four-times the pclk clock for back-to-back serial communications with no idle assertion.
A serial clock faster than four-times the pclk signal does not leave enough time for a complete
incoming character to be received and pushed into the receiver FIFO. However, in most cases, the pclk
signal is faster than the serial clock and this should never be an issue. There is also slightly more time
required after initial serial control register programming, before serial data can be transmitted or
received.
The serial clock modules must have time to see new register values and reset their respective state
machines. This total time is guaranteed to be no more than eight clock cycles of the slower of the two
system clocks. Therefore, no data should be transmitted or received before this maximum time expires,
after initial configuration.
In systems where only one clock is implemented, there are no additional latencies.
Interrupts
The assertion of the DW_apb_uart interrupt output signal (intr) occurs whenever one of the several
prioritized interrupt types are enabled and active. The following interrupt types can be enabled with the
IER register:
● Receiver Error
● Receiver Data Available
● Character Timeout (in FIFO mode only)
● Transmitter Holding Register Empty at/below threshold (in Programmable THRE interrupt mode)
● Modem Status
These interrupt types are covered in more detail in Table 8 on page 97.
When an interrupt occurs the master accesses the IIR. See Table 7 on page 96 to determine the source
of the interrupt before dealing with it accordingly.
DW_apb_uart 1 DW_apb_uart 2
Auto CTS
Threshold
Detection rts_n cts_n Flow
Auto RTS Control
Flow
Control
rts cts
Threshold
Auto CTS
cts_n rts_n Detection
Flow Auto RTS
Control Flow
Control rts
cts
Once the receiver FIFO becomes completely empty by reading the Receiver Buffer Register
(RBR), rts_n again becomes active (low), signalling the other UART to continue sending data.
It is important to note that even if everything else is selected and the correct MCR bits are set, if
the FIFOs are disabled through FCR[0] or the UART is in SIR mode (MCR[6] is set to one), Auto
Flow Control is also disabled. When Auto RTS is not implemented or disabled, rts_n is controlled
solely by MCR[1]. Figure 14 shows a timing diagram of Auto RTS operation.
This character
was received because rts_n was not detected before next
character entered the sending-UART’s transmitter
rts_n
FIFOs are disabled via FCR[0], Auto Flow Control is also disabled. When Auto CTS is not
implemented or disabled, the transmitter is unaffected by cts_n. A Timing Diagram showing Auto CTS
operation can be seen in Figure 15.
sout start Data Bits stop start Data Bits stop start Data Bits stop
Disabled
cts_n
N
THRE Interrupt
Enabled?
Y
Under the condition that
there are no other pending
interrupts, the interrupt SET INTR
signal (intr) is asserted
Figure 16: Flowchart of Interrupt Generation for Programmable THRE Interrupt Mode
This threshold level is programmed into FCR[5:4]. The available empty thresholds are: empty, 2, ¼ and
½. See “FCR” on page 98for threshold setting details. Selection of the best threshold value depends on
the system's ability to begin a new transmission sequence in a timely manner. However, one of these
thresholds should prove optimum in increasing system performance by preventing the transmitter FIFO
from running empty.
In addition to the interrupt change, Line Status Register (LSR[5]) also switches function from
indicating transmitter FIFO empty, to FIFO full. This allows software to fill the FIFO each transmit
sequence by polling LSR[5] before writing another character. The flow then becomes, “fill transmitter
FIFO whenever an interrupt occurs and there is data to transmit”, instead of waiting until the FIFO is
completely empty. Waiting until the FIFO is empty causes a performance hit whenever the system is
too busy to respond immediately. Further system efficiency is achieved when this mode is enabled in
combination with Auto Flow Control.
Even if everything else is selected and enabled, if the FIFOs are disabled via FCR[0], the
Programmable THRE Interrupt mode is also disabled. When not selected or disabled, THRE interrupts
and LSR[5] function normally (both reflecting an empty THR or FIFO). The flowchart of THRE
interrupt generation when not in programmable THRE interrupt mode is shown in Figure 17.
THRE Interrupt N
Enabled?
Y
Under the condition that
there are no other pending
interrupts, the interrupt SET INTR
signal (intr) is asserted
N
TX FIFO Not Empty
or IIR Read?
Figure 17: Flowchart of Interrupt generation when not in Programmable THRE Interrupt
Mode
device in a low power (lp) mode. Therefore, the following must be true for at least one character time
for the assertion of the clock gate enable signal(s) to occur:
● No data in the RBR (in non-FIFO mode) or the RX FIFO is empty (in FIFO mode)
● No data in the THR (in non-FIFO mode) or the TX FIFO is empty (in FIFO mode)
● sin/sir_in and sout/sir_out_n are inactive (sin/sir_in are kept high and sout is high or sir_out_n is
low) indicating no activity
● No change on the modem control input signals
Note, the clock gate enable assertion does not occur in the following modes of operation:
● Loopback mode
● FIFO access mode
● When transmitting a break
For example, assume a DW_apb_uart that is configured to have a single clock (pclk) and is
programmed to transmit and receive characters of 7 bits (1 start bit, 5 data bits and 1 stop bit) and the
baud clock divisor is set to 1. Therefore, the uart_lp_req_pclk signal is asserted if the transmit and
receive pipeline is clear, no activity has occurred and the modem control input signals have not
changed for 112 (7 × 16) pclk cycles. Figure 18 illustrates this example.
16
cycles
pclk
sin Stop
sout
busy (FSR[0])
baud_clk_cnt
0 1 2 110 111 0 1
Internal
uart_lp_req
number of sclk cycles available before the clock must resume. This means a sample point at the 13
baud clock (at the latest) out of the 16 that is transmitted for each bit period of the character in non-SIR
mode.
Figure 19 shows the timing diagram that illustrates the previous scenario. This problem is magnified in
SIR mode as the pulse width is only 3/16 of a bit period (3 baud clocks, which for a divisor of 1 is 3
sclks). Hence, it could be missed completely. The clocks must resume before 3 baud clock periods
elapse. If the first character received while in sleep mode is used purely for wake up reasons and the
actual character value is unimportant, this may not be a problem at all.
clock(s) resume after actual sample latest sample
2 bclk periods midpoint point point
bclk (= sclk
when div. = 1)
sin
uart_lp_req
DMA Support
The DW_apb_uart supports DMA signalling with the use of two output signals (dma_tx_req_n and
dma_rx_req_n) to indicate when data is ready to be read or when the transmit FIFO is empty. The
DW_apb_uart uses two DMA channels, one for the transmit data and one for the receive data. There
are two DMA modes: mode 0 and mode 1, controllable via bit 3 of the FIFO Control Register (only
DMA mode 0 is available when the FIFOs are not implemented or disabled).
DMA mode 0 supports single DMA data transfers at a time. In mode 0, the dma_tx_req_n signal goes
active low under the following conditions:
● When the Transmitter Holding Register is empty in non-FIFO mode
● When the transmitter FIFO is empty in FIFO mode with Programmable THRE interrupt mode
disabled
● When the transmitter FIFO is at or below the programmed threshold with Programmable THRE
interrupt mode enabled
It goes inactive under the following conditions:
● When a single character has been written into the Transmitter Holding Register or transmitter
FIFO with Programmable THRE interrupt mode disabled
● When the transmitter FIFO is above the threshold with Programmable THRE interrupt mode
enabled.
The dma_rx_req_n signal goes active-low when there is a single character available in the Receiver
FIFO or the Receive Buffer Register and it goes inactive when the Receive Buffer Register or Receiver
FIFO are empty, depending on FIFO mode.
DMA mode 1 supports multi-DMA data transfers, where multiple transfers are made continuously until
the receiver FIFO has been emptied or the transmit FIFO has been filled. In mode 1 the dma_tx_req_n
signal is asserted under the following conditions:
● When the transmitter FIFO is empty with Programmable THRE interrupt mode disabled
● When the transmitter FIFO is at or below the programmed threshold with Programmable THRE
interrupt mode enabled.
The dma_tx_req_n signal is de-asserted when the transmitter FIFO is completely full. The
dma_rx_req_n signal is asserted when the Receiver FIFO is at or above the programmed trigger level,
or a character timeout has occurred (that is, the conditions for a character timeout have been met over
the required duration and does not refer to a character timeout interrupt, hence ERBFI does not need to
be set to one for this to occur), and is de-asserted when the receiver FIFO becomes empty.
The DW_apb_uart can also be configured to have additional DMA interface signals if required for the
DMA controller of choice (i.e. DW_ahb_dmac). When selected to have the additional DMA signals the
assertion of the fixed DMA signals (dma_tx_req_n and dma_rx_req_n) is similar to what was detailed
in the above DMA modes. That is, the dma_tx_req_n signal is asserted under the following conditions:
● When the Transmitter Holding Register is empty in non-FIFO mode
● When the transmitter FIFO is empty in FIFO mode with Programmable THRE interrupt mode
disabled
● When the transmitter FIFO is at, or below the programmed threshold with Programmable THRE
interrupt mode enabled.
The dma_rx_req_n signal is asserted under the following conditions:
● When there is a single character available in the Receive Buffer Register in non-FIFO mode
● When the Receiver FIFO is at or above the programmed trigger level in FIFO mode
With the presence of the additional handshaking signals the UART does not have to rely on internal
status and level values to recognize the completion of a request and hence remove the request. Instead,
the de-assertion of the DMA transmit and receive request is controlled by the assertion of the DMA
transmit and receive acknowledge respectively.
When the UART is configured to have the additional DMA signals, the data flow (transfer lengths)
responsibility falls on the DMA (DW_ahb_dmac) and is controlled by the programmed burst
transaction lengths. Thus, there is no need for DMA modes and programming the FCR[3] has no effect.
The extra handshaking signals are explained in the DMA flow below for a DW_apb_uart that is
configured with FIFOs and Programmable THRE interrupt mode.
As a block flow control device, the DMA Controller is programmed by the processor with the number
of data items (block size) that are to be transmitted or received by the DW_apb_uart; this is
programmed into the BLOCK_TS field of the CTLx register.
The block is broken into a number of transactions, each initiated by a request from the DW_apb_uart.
The DMA Controller must also be programmed with the number of data items (in this case,
DW_apb_uart FIFO entries) to be transferred for each DMA request. This is also known as the burst
transaction length, and is programmed into the SRC_MSIZE/DEST_MSIZE fields of the
DW_ahb_dmac CTLx register for source and destination, respectively.
Figure 20 on page 60 shows a single block transfer, where the block size programmed into the DMA
Controller is 12 and the burst transaction length is set to 4. In this case, the block size is a multiple of
the burst transaction length. Therefore, the DMA block transfer consists of a series of burst
transactions. If the DW_apb_uart makes a transmit request to this channel, four data items are written
to the DW_apb_uart transmit FIFO. Similarly, if the DW_apb_uart makes a receive request to this
channel, four data items are read from the DW_apb_uart receive FIFO. Three separate requests must be
made to this DMA channel before all 12 data items are written or read.
Note
The source and destination transfer width settings in the DW_ahb_dmac –
DMA.CTLx.SRC_TR_WIDTH and DMA.CTLx.DEST_TR_WIDTH – should be set to
3’b000 because the DW_apb_uart FIFOs are 8 bits wide.
12 Data Items
DMA
Multi-block Transfer
Level
12 Data Items
DMA
Block
Level
When the block size programmed into the DMA Controller is not a multiple of the burst transaction
length, as shown in Figure 21, a series of burst transactions followed by single transactions are needed
to complete the block transfer.
15 Data Items
DMA
Multi-Block Transfer
Level
15 Data Items
DMA
Block
Level
DMA Burst DMA Burst DMA Burst DMA Single DMA Single DMA Single
Transaction 1 Transaction2 Transaction 3 Transaction 1 Transaction 2 Transaction 3
4 Data Items 4 Data Items 4 Data Items 1 Data Item 1 Data Item 1 Data Item
Figure 21: Breakdown of DMA Transfer into Single and Burst Transactions
FIFO_MODE = 16
FIFO_MODE − decoded level
Transmit FIFO EMPTY of UART.FCR[5:4] = 14
Watermark level
DMA
UART.FCR[5:4] = 01 Data In Controller
Data Out FULL
UART Transmit FIFO
Thus, the second case has a lower probability of underflow at the expense of more burst transactions
per block. This provides a potentially greater amount of AMBA bursts per block and worse bus
utilization than the former case.
Therefore, the goal in choosing a watermark level is to minimize the number of transactions per block,
while at the same time keeping the probability of an underflow condition to an acceptable level. In
practice, this is a function of the ratio of the rate at which the UART transmits data to the rate at which
the DMA can respond to destination burst requests.
For example, promoting the channel to the highest priority channel in the DMA, and promoting the
DMA master interface to the highest priority master in the AMBA layer, increases the rate at which the
DMA controller can respond to burst transaction requests. This in turn allows the user to decrease the
watermark level, which improves bus utilization without compromising the probability of an underflow
occurring.
Note
The transmit FIFO is not full at the end of a DMA burst transfer if the UART has
successfully transmitted one data item or more on the UART serial transmit line during the
transfer.
Note
The receive FIFO is not empty at the end of the source burst transaction if the UART has
successfully received one data item or more on the UART serial receive line during the
burst.
EMPTY
Receive FIFO
Watermark level DMA
Data Out Controller
FULL UART.decoded level
Data In of FCR[7:6]
UART Receive FIFO
When the DW_apb_uart samples that dma_tx_ack_n/dma_rx_ack_n is de-asserted, it can re-assert the
dma_tx_req_n/dma_rx_req_n of the request line if their corresponding FIFOs exceed their watermark
levels (back-to-back burst transaction). If this is not the case, the DMA request lines remain
de-asserted. Figure 25 on page 65 shows a timing diagram of a burst transaction where pclk = hclk.
Figure 26 shows two back-to-back burst transactions where the hclk frequency is twice the pclk
frequency.
The handshaking loop is as follows:
1. dma_tx_req_n/dma_rx_req_n asserted by DW_apb_uart
2. dma_tx_ack_n/dma_rx_ack_n asserted by DW_ahb_dmac
3. dma_tx_req_n/dma_rx_req_n de-asserted by DW_apb_uart
4. dma_tx_ack_n/dma_rx_ack_n de-asserted by DW_ahb_dmac
5. dma_tx_req_n/dma_rx_req_n re-asserted by DW_apb_uart, if back-to-back transaction is required
Note
The burst transaction request signals, dma_tx_req_n and dma_rx_req_n, are generated in
the DW_apb_uart off pclk and sampled in the DW_ahb_dmac by hclk. The acknowledge
signals, dma_tx_ack_n and dma_rx_ack_n, are generated in the DW_ahb_dmac off hclk
and sampled in the DW_apb_uart of pclk. The handshaking mechanism between the
DW_ahb_dmac and the DW_apb_uart supports quasi-synchronous clocks; that is, hclk
and pclk must be phase-aligned, and the hclk frequency must be a multiple of the pclk
frequency.
pclk
hclk
burst transaction request
dma_tx_req_n
burst transaction complete
dma_tx_ack_n
hclk
pclk
burst transaction request burst transaction request
dma_rx_req_n
burst transaction complete burst transaction complete
dma_rx_ack_n
m0 m1 m2 n0 n1 n2 n3 n4
pclk
hclk
dma_rx_req_n
single transaction complete
dma_rx_ack_n
dma_rx_single_n
hclk
pclk
burst transaction request
dma_tx_req_n
burst transaction complete Single transaction complete
dma_tx_ack_n Single transaction complete Single transaction complete
dma_tx_single_n
Note
The single transaction request signals, dma_tx_single_n and dma_rx_single_n, are
generated in the DW_apb_uart on the pclk edge and sampled in DW_ahb_dmac on hclk.
The acknowledge signals, dma_tx_ack_n and dma_rx_ack_n, are generated in the
DW_ahb_dmac on the hclk edge hclk and sampled in the DW_apb_uart on pclk. The
handshaking mechanism between the DW_ahb_dmac and the DW_apb_uart supports
quasi-synchronous clocks; that is, hclk and pclk must be phase aligned and the hclk
frequency must be a multiple of pclk frequency.
4
Parameters
Parameter Descriptions
The following list identifies the configurable parameters supported by the DW_apb_uart:
Table 4: Top-Level Parameters
5
Signals
pwdata prdata
paddr debug
intr
pwrite
out1_n
psel DW_apb_uart out2_n
penable dma_tx_req
*txrdy_n
dma_tx_ack
dma_tx_single
dma_rx_ack
dma_rx_req
sin *rxrdy_n
sir_in dma_rx_single
cts_n sout
dsr_n sir_out_n
dcd_n rts_n
ri_n dtr_n
tx_ram_rd_addr
tx_ram_wr_addr
tx_ram_we_n
tx_ram_out tx_ram_re_n
rx_ram_out tx_ram_rd_ce_n
tx_ram_in
s_rst_n rx_ram_in
scan_mode rx_ram_rd_addr
rx_ram_wr_addr
presetn
rx_ram_we_n
rx_ram_re_n
rx_ram_rd_ce_n
pclk uart_lp_req_pclk
sclk uart_lp_req_sclk
baudout_n
Optional signals
* These signals are provided only for backward compatibility.
Signals in red are registered
Note
The Description column in Table 6 provides detailed information about each signal.
In the Registered field, a “Yes” indicates whether an I/O signal is directly connected to an
internal register and nothing else. An I/O signal is also considered to be registered if the
signal is connected to one or more inverters or buffers between the I/O port and internal
register, but not connected to any logic that involves another signal.
The Input/Output Delay field provides the percentage of the clock cycle assumed to be
used by logic outside this design. The given value is used to automatically define the
default synthesis constraints for input/output delay. You can override these default values
in the Specify Port Constraints activity in coreConsultant. For more information, refer to
“Create Gate-Level Netlist” on page 32.
pclk 1 bit I APB clock used in the APB interface to program registers
Registered: No
Synchronous to: N/A
Default Input Delay: N/A
presetn 1 bit I APB clock-domain reset
Active State: Low
Registered: No
Synchronous to: pclk on de-assertion,
asynchronous on assertion
Default Input Delay: 50% of pclk
psel 1 bit I APB peripheral select
Active State: High
Registered: No
Synchronous to: pclk
Default Input Delay: 50% of pclk
paddrn 8 bits I APB address bus. Uses the lower bits of the APB address bus for
register decode.
Registered: No
Synchronous to: pclk
Default Input Delay: 50% of pclk
scan_mode 1 bit I Scan mode used to ensure that test automation tools can control all
asynchronous flop signals. During scan this signal must be set high all
the time. In normal operation you must tie this signal low.
Active State: High
Registered: No
Synchronous to: pclk
Default Input Delay: 20% of pclk
FIFO Interface (Dependencies: Present only when FIFO_MODE!=NONE and MEM_SELECT==External)
tx_ram_rd_ce_n 1 bit O Read port chip enable for transmit FIFO RAM
Active State: Low
Registered: Yes
Synchronous to: pclk
Default Output Delay: 60% of pclk
rx_ram_outn 10 bits I Data to the receive FIFO RAM
Registered: No
Synchronous to: pclk
Default Input Delay: 60% of pclk
rx_ram_inn 10 bits O Data from the receive FIFO RAM
Registered: No
Synchronous to: pclk
Default Output Delay: 60% of pclk
rx_ram_rd_addrn log2(FIFO_ O Read address pointer for the receive FIFO RAM
MODE) Registered: Yes
Synchronous to: pclk
Default Output Delay: 60% of pclk
rx_ram_wr_addrn log2(FIFO_ O Write address pointer for the receive FIFO RAM
MODE) Registered: Yes
Synchronous to: pclk
Default Output Delay: 60% of pclk
rx_ram_we_n 1 bit O Write enable for the receive FIFO RAM
Active State: Low
Registered: No
Synchronous to: pclk
Default Output Delay: 60% of pclk
rx_ram_re_n 1 bit O Read enable for the receive FIFO RAM wake-up
Active State: Low
Registered: No
Synchronous to: pclk
Default Output Delay: 60% of pclk
rx_ram_rd_ce_n 1 bit O Read port chip enable for receive FIFO RAM
Active State: Low
Registered: Yes
Synchronous to: pclk
Default Output Delay: 60% of pclk
Modem Interface
dma_tx_req_n 1 bit O Transmit Buffer Ready indicates that the Transmit buffer requires
service from the DMA controller
Active State: Low
Registered: Yes
Synchronous to: pclk
Default Output Delay: 90% of pclk
dma_tx_single_n 1 bit O DMA Transmit FIFO Single informs the DMA controller that there is
at least one free entry in the Transmit buffer/FIFO. This output does
not request a DMA transfer.
Active State: Low
Registered: Yes
Synchronous to: pclk
Default Output Delay: 90% of pclk
Dependencies: Present only when DMA_EXTRA==Yes
dma_tx_ack_n 1 bit I DMA Transmit Acknowledge indicates that the DMA Controller has
transmitted the block of data to the DW_apb_uart for transmission
Active State: Low
Registered: No
Synchronous to: pclk
Default Input Delay: 50% of pclk
Dependencies: Present only when DMA_EXTRA==Yes
dma_rx_req_n 1 bit O Receive Buffer Ready indicates that the Receive buffer requires
service from the DMA controller
Active State: Low
Registered: Yes
Synchronous to: pclk
Default Output Delay: 90% of pclk
dma_rx_single_n 1 bit O DMA Receive FIFO Single informs the DMA controller that there is
at least one free entry in the Receive buffer/FIFO. This output does
not request a DMA transfer.
Active State: Low
Registered: Yes
Synchronous to: pclk
Default Output Delay: 90% of pclk
Dependencies: Present only when DMA_EXTRA==Yes
dma_rx_ack_n 1 bit I DMA Receive Acknowledge indicates that the DMA Controller has
received the block of data from the DW_apb_uart.
Active State: Low
Registered: No
Synchronous to: pclk
Default Input Delay: 50% of pclk
Dependencies: Present only when DMA_EXTRA==Yes
txrdy_n 1 bit O This transmit buffer read signal is used for backward compatibility of
older DW_apb_uart components to indicate that the Transmit buffer
requires service from the DMA controller
Active State: Low
Registered: Yes
Synchronous to: pclk
Default Output Delay: 90% of pclk
Dependencies: Present only when DMA_EXTRA==No
rxrdy_n 1 bit O This receive buffer read signal is used for backward compatibility of
older DW_apb_uart components to indicate that the Receive buffer
requires service from the DMA controller
Active State: Low
Registered: Yes
Synchronous to: pclk
Default Output Delay: 90% of pclk
Dependencies: Present only when DMA_EXTRA==No
Serial Interface
Infrared Interface (Dependencies: The following signals are present only when SIR_MODE==Enabled)
Interrupt Interface
Debug Interface
uart_lp_req_pclk 1 bit O pclk domain clock gate signal indicates that the UART is inactive, so
clocks may be gated to put the device in a low-power (lp) mode.
Active State: High
Registered: Yes
Synchronous to: pclk
Default Output Delay: 25% of pclk
Dependencies: Present only when CLK_GATE_EN==Include.
uart_lp_req_sclk 1 bit O sclk domain clock gate signal indicates that the UART is inactive, so
clocks may be gated to put the device in a low-power (lp) mode.
Active State: High
Registered: Yes
Synchronous to: sclk
Default Output Delay: 25% of sclk
Dependencies: Present only when CLK_GATE_EN==Include
and CLOCK_MODE==Enabled.
6
Registers
Note
Since DW_apb_uart registers are only located 32-bit boundaries, paddr[1:0] may be tied
low permanently, if so desired. This would allow backward compatibility with standard
16550 UART programmability.
The following table summarizes the register memory map for the DW_apb_uart:
Address
Name Offset Width R/W Description
RBR 0x00 32 bits R Receive Buffer Register
Reset Value: 0x0
Dependencies: LCR[7] bit = 0
THR 32 bits W Transmit Holding Register
Reset Value: 0x0
Dependencies: LCR[7] bit = 0
DLL 32 bits R/W Divisor Latch (Low)
Reset Value: 0x0
Dependencies: LCR[7] bit = 1
DLH 0x04 32 bits R/W Divisor Latch (High)
Reset Value: 0x0
Dependencies: LCR[7] bit = 1
IER 32 bits R/W Interrupt Enable Register
Reset Value: 0x0
Dependencies: LCR[7] bit = 0
Address
Name Offset Width R/W Description
IIR 0x08 32 bits R Interrupt Identification Register
Reset Value: 0x01
FCR 32 bits W FIFO Control Register
Reset Value: 0x0
LCR 0x0C 32 bits R/W Line Control Register
Reset Value: 0x0
MCR 0x10 32 bits R/W Modem Control Register
Reset Value: 0x0
LSR 0x14 32 bits R Line Status Register
Reset Value: 0x60
MSR 0x18 32 bits R Modem Status Register
Reset Value: 0x0
SCR 0x1C 32 bits R/W Scratchpad Register
Reset Value: 0x0
LPDLL 0x20 32 bits R/W Low Power Divisor Latch (Low) Register
Reset Value: 0x0
LPDLH 0x24 32 bits R/W Low Power Divisor Latch (High) Register
Reset Value: 0x0
Reserved 0x28 - – – –
0x2C
SRBR 0x30 - 32 bits R Shadow Receive Buffer Register
0x6C Reset Value: 0x0
Dependencies: LCR[7] bit = 0
STHR 32 bits W Shadow Transmit Holding Register
Reset Value: 0x0
Dependencies: LCR[7] bit = 0
FAR 0x70 32 bits R/W FIFO Access Register
Reset Value: 0x0
TFR 0x74 32 bits R Transmit FIFO Read
Reset Value: 0x0
RFW 0x78 32 bits W Receive FIFO Write
Reset Value: 0x0
USR 0x7C 32 bits R UART Status Register
Reset Value: 0x6
TFL 0x80 See R Transmit FIFO Level
Description Width: FIFO_ADDR_WIDTH + 1
(page 118) Reset Value: 0x0
Address
Name Offset Width R/W Description
RFL 0x84 See R Receive FIFO Level
Description Width: FIFO_ADDR_WIDTH + 1
(page 119) Reset Value: 0x0
SRR 0x88 32 bits W Software Reset Register
Reset Value: 0x0
SRTS 0x8C 32 bits R/W Shadow Request to Send
Reset Value: 0x0
SBCR 0x90 32 bits R/W Shadow Break Control Register
Reset Value: 0x0
SDMAM 0x94 32 bits R/W Shadow DMA Mode
Reset Value: 0x0
SFE 0x98 32 bits R/W Shadow FIFO Enable
Reset Value: 0x0
SRT 0x9C 32 bits R/W Shadow RCVR Trigger
Reset Value: 0x0
STET 0xA0 32 bits R/W Shadow TX Empty Trigger
Reset Value: 0x0
HTX 0xA4 32 bits R/W Halt TX
Reset Value: 0x0
DMASA 0xA8 1 bit W DMA Software Acknowledge
Reset Value: 0x0
– 0xAC - – – –
0xF0
CPR 0xF4 32 bits R Component Parameter Register
Reset Value: Configuration-dependent
UCV 0xF8 32 bits R UART Component Version
Reset Value: See the Releases table in the
DW_apb_uart Release Notes
CTR 0xFC 32 bits R Component Type Register
Reset Value: 0x44570110
RBR
● Name: Receive Buffer Register
● Size: 32 bits
● Address Offset: 0x00
● Read/write access: read-only
31:8 7:0
Reserved
Receive Buffer Register
THR
● Name: Transmit Holding Register
● Size: 32 bits
● Address Offset: 0x00
● Read/write access: write-only
31:8 7:0
Reserved
Transmit Holding Register
DLH
● Name: Divisor Latch High
● Size: 32 bits
● Address Offset: 0x04
● Read/write access: read/write
31:8 7:0
Reserved
Divisor Latch (high)
DLL
● Name: Divisor Latch Low
● Size: 32 bits
● Address Offset: 0x00
● Read/write access: read/write
31:8 7:0
Reserved
Divisor Latch (low)
IER
● Name: Interrupt Enable Register
● Size: 32 bits
● Address Offset: 0x04
● Read/write access: read/write
31:8 7 6:4 3 2 1 0
Reserved
PTIME
Reserved
EDSSI
ELSI
ETBEI
ERBFI
IIR
● Name: Interrupt Identity Register
● Size: 32 bits
● Address Offset: 0x08
● Read/write access: read-only
Reserved
FIFOSE
Reserved
IID
FCR
● Name: FIFO Control Register
● Size: 32 bits
● Address Offset: 0x08
● Read/write access: write-only
31:8 7:6 5:4 3 2 1 0
Reserved
RCVR
TET
DMAM
XFIFOR
RFIFOR
FIFOE
This register is only valid when the DW_apb_uart is configured to have FIFOs implemented
(FIFO_MODE != NONE). If FIFOs are not implemented, this register does not exist and writing to this
register address has no effect; reading from this register address returns zero.
LCR
● Name: Line Control Register
● Size: 32 bits
● Address Offset: 0x0C
● Read/write access: read/write
31:8 7 6 5 4 3 2 1:0
Reserved
DLAB
BC
Stick Parity (raz)
EPS
PEN
STOP
DLS
MCR
● Name: Modem Control Register
● Size: 32 bits
● Address Offset: 0x10
● Read/write access: read/write
31:7 6 5 4 3 2 1 0
Reserved
SIRE
AFCE
LB
OUT2
OUT1
RTS
DTR
LSR
● Name: Line Status Register
● Size: 32 bits
● Address Offset: 0x14
● Read/write access: read-only
31:8 7 6 5 4 3 2 1 0
Reserved
RFE
TEMT
THRE
BI
FE
PE
OE
DR
MSR
● Name: Modem Status Register
● Size: 32 bits
● Address Offset: 0x18
● Read/write access: read-only
31:8 7 6 5 4 3 2 1 0
Reserved
DCD
RI
DSR
CTS
DDCD
TERI
DDSR
DCTS
Whenever bits 0, 1, 2 or 3 are set to logic one, to indicate a change on the modem control inputs, a
modem status interrupt is generated if enabled through the IER, regardless of when the change
occurred. Since the delta bits (bits 0, 1, 3) can get set after a reset if their respective modem signals are
active (see individual bits for details), a read of the MSR after reset can be performed to prevent
unwanted interrupts.
SCR
● Name: Scratchpad Register
● Size: 32 bits
● Address Offset: 0x1C
● Read/write access: read/write
31:8 7:0
Reserved
Scratchpad Register
LPDLL
● Name: Low Power Divisor Latch Low Register
● Size: 32 bits
● Address Offset: 0x1C
● Read/write access: read/write
This register is only valid when the DW_apb_uart is configured to have SIR low-power reception
capabilities implemented (SIR_LP_RX = Yes). If SIR low-power reception capabilities are not
implemented, this register does not exist and reading from thsi register address returns zero.
31:8 7:0
Reserved
Low Power Divisor Latch Low Register
LPDLH
● Name: Low Power Divisor Latch High Register
● Size: 32 bits
● Address Offset: 0x1C
● Read/write access: read/write
This register is only valid when the DW_apb_uart is configured to have SIR low-power reception
capabilities implemented (SIR_LP_RX = Yes). If SIR low-power reception capabilities are not
implemented, this register does not exist and reading from thsi register address returns zero.
31:8 7:0
Reserved
Low Power Divisor Latch High Register
SRBR
● Name: Shadow Receive Buffer Register
● Size: 32 bits
● Address Offset: 0x30 - 0x6C
● Read/write access: read-only
31:8 7:0
Reserved
Shadow Receive Buffer Register
This register is only valid when the DW_apb_uart is configured to have additional shadow registers
implemented (SHADOW == YES). If shadow registers are not implemented, this register does not
exist and reading from this register address returns zero.
STHR
● Name: Shadow Transmit Holding Register
● Size: 32 bits
● Address Offset: 0x30 - 0x6C
● Read/write access: write
31:8 7:0
Reserved
Shadow Transmit Holding Register
This register is only valid when the DW_apb_uart is configured to have additional shadow registers
implemented (SHADOW == YES). If shadow registers are not implemented, this register does not
exist, and reading from this register address returns zero.
FAR
● Name: FIFO Access Register
● Size: 32 bits
● Address Offset: 0x70
● Read/write access: read/write
31:1 0
Reserved
FIFO Access Register
TFR
● Name: Transmit FIFO Read
● Size: 32 bits
● Address Offset: 0x74
● Read/write access: read-only
31:8 7:0
Reserved
Transmit FIFO Read
This register is only valid when the DW_apb_uart is configured to have the FIFO access test mode
available (FIFO_ACCESS == YES). If not configured, this register does not exist and reading from this
register address returns zero.
RFW
● Name: Receive FIFO Write
● Size: 32 bits
● Address Offset: 0x78
● Read/write access: write-only
31:10 9 8 7:0
Reserved
RFFE
RFPE
RFWD
This register is only valid when the DW_apb_uart is configured to have the FIFO access test mode
available (FIFO_ACCESS == YES). If not configured, this register does not exist and reading from this
register address returns zero.
USR
● Name: UART Status Register
● Size: 32 bits
● Address Offset: 0x7C
● Read/write access: read-only
31:5 4 3 2 1 0
Reserved
RFF
RFNE
TFE
TFNF
BUSY
TFL
● Name: Transmit FIFO Level
● Size: FIFO_ADDR_WIDTH + 1
● Address Offset: 0x80
● Read/write access: read-only
31:FIFO_ADDR_WIDTH +1 FIFO_ADDR_WIDTH:0
Reserved
Transmit FIFO Level
This register is only valid when the DW_apb_uart is configured to have additional FIFO status registers
implemented (FIFO_STAT == YES). If status registers are not implemented, this register does not exist
and reading from this register address returns zero.
RFL
● Name: Receive FIFO Level
● Size: FIFO_ADDR_WIDTH + 1
● Address Offset: 0x84
● Read/write access: read-only
31:FIFO_ADDR_WIDTH +1 FIFO_ADDR_WIDTH:0
Reserved
Receive FIFO Level
This register is only valid when the DW_apb_uart is configured to have additional FIFO status registers
implemented (FIFO_STAT == YES). If status registers are not implemented, this register does not exist
and reading from this register address returns zero.
SRR
● Name: Software Reset Register
● Size: 32 bits
● Address Offset: 0x88
● Read/write access: write-only
31:3 2 1 0
Reserved
XFR
RFR
UR
This register is only valid when the DW_apb_uart is configured to have additional shadow registers
implemented (SHADOW == YES). If shadow registers are not implemented, this register does not
exist and reading from this register address returns zero.
SRTS
● Name: Shadow Request to Send
● Size: 32 bits
● Address Offset: 0x8C
● Read/write access: read/write
31:1 0
Reserved
Shadow Request to Send
This register is only valid when the DW_apb_uart is configured to have additional shadow registers
implemented (SHADOW == YES). If shadow registers are not implemented, this register does not
exist and reading from this register address returns zero.
SBCR
● Name: Shadow Break Control Register
● Size: 32 bits
● Address Offset: 0x90
● Read/write access: read/write
31:1 0
Reserved
Shadow Break Control Register
This register is only valid when the DW_apb_uart is configured to have additional shadow registers
implemented (SHADOW == YES). If shadow registers are not implemented, this register does not
exist and reading from this register address returns zero.
SDMAM
● Name: Shadow DMA Mode
● Size: 32 bits
● Address Offset: 0x94
● Read/write access: read/write
31:1 0
Reserved
Shadow DMA Mode
This register is only valid when the DW_apb_uart is configured to have additional FIFO registers
implemented (FIFO_MODE != None) and additional shadow registers implemented (SHADOW ==
YES). If these registers are not implemented, this register does not exist and reading from this register
address returns zero.
SFE
● Name: Shadow FIFO Enable
● Size: 32 bits
● Address Offset: 0x98
● Read/write access: read/write
31:1 0
Reserved
Shadow FIFO Enable
This register is only valid when the DW_apb_uart is configured to have additional FIFO registers
implemented (FIFO_MODE != None) and additional shadow registers implemented (SHADOW ==
YES). If these registers are not implemented, this register does not exist and reading from this register
address returns zero.
SRT
● Name: Shadow RCVR Trigger
● Size: 32 bits
● Address Offset: 0x9C
● Read/write access: read/write
31:2 1:0
Reserved
Shadow RCVR Trigger
This register is only valid when the DW_apb_uart is configured to have additional FIFO registers
implemented (FIFO_MODE != None) and additional shadow registers implemented (SHADOW ==
YES). If these registers are not implemented, this register does not exist and reading from this register
address returns zero.
STET
● Name: Shadow TX Empty Trigger
● Size: 32 bits
● Address Offset: 0xA0
● Read/write access: read/write
31:2 1:0
Reserved
Shadow TX Empty Trigger
This register is only valid when the DW_apb_uart is configured to have FIFOs implemented
(FIFO_MODE != NONE) and THRE interrupt support implemented (THRE_MODE_USER ==
Enabled) and additional shadow registers implemented (SHADOW == YES). If FIFOs are not
implemented or THRE interrupt support is not implemented or shadow registers are not implemented,
this register does not exist and reading from this register address returns zero.
HTX
● Name: Halt TX
● Size: 32 bits
● Address Offset: 0xA4
● Read/write access: read/write
31:1 0
Reserved
Halt TX
DMASA
● Name: DMA Software Acknowledge
● Size: 32 bits
● Address Offset: 0xA8
● Read/write access: read/write
31:1 0
Reserved
DMA Software Acknowledge
CPR
● Name: Component Parameter Register
● Size: 32 bits
● Address Offset: 0xF4
● Read/write access: read-only
● Dependency: This register is only valid when the DW_apb_uart is configured to have the
Component Parameter register implemented (UART_ADD_ENCODED_PARAMS == YES). If
the Component Parameter register is not implemented, this register does not exist and reading from
this register address returns zero.
Reserved
FIFO_MODE
Reserved
DMA_EXTRA
UART_ADD_ENCODED_PARAMS
SHADOW
FIFO_STAT
FIFO_ACCESS
NEW_FEAT
SIR_LP_MODE
SIR_MODE
THRE_MODE
AFCE_MODE
Reserved
APB_DATA_WIDTH
UCV
● Name: UART Component Version
● Size: 32 bits
● Address Offset: 0xF8
● Read/write access: read-only
● Dependency: This register is only valid when the DW_apb_uart is configured to have additional
features implemented (ADDITIONAL_FEATURES == YES). If additional features are not
implemented, this register does not exist and reading from this register address returns zero.
31:0
CTR
● Name: Component Type Register
● Size: 32 bits
● Address Offset: 0xFC
● Read/write access: read-only
● Dependency: This register is only valid when the DW_apb_uart is configured to have additional
features implemented (ADDITIONAL_FEATURES == YES). If additional features are not
implemented, this register does not exist and reading from this register address returns zero.
31:0
Peripheral ID
7
Programming the DW_apb_uart
Software Drivers
The family of DesignWare AMBA Synthesizable Components includes a Driver Kit for the
DW_apb_uart component. This low-level driver allows you to program a DW_apb_uart component
and integrate your code into a larger software system. The Driver Kit provides the following benefits to
IP designers:
● Proven method of access to DW_apb_uart minimizing usage errors
● Rapid software development with minimum overhead
● Detailed knowledge of DW_apb_uart register bit fields not required
● Easy integration of DW_apb_uart into existing software system
● Programming at register level eliminated
You must purchase a source code license (DWC-APB-Periph-Source) to use the DW_apb_uart Driver
Kit. However, you can access some Driver Kit files and documentation in $DESIGNWARE_HOME/
drivers/DW_apb_uart/latest. For more information about the Driver Kit, refer to the DW_apb_uart
Driver Kit User Guide. For more information about purchasing the source code license and obtaining a
download of the Driver Kit, contact Synopsys at [email protected] for details.
8
Verification
This chapter provides an overview of the testbench and tests available for DW_apb_uart verification.
(Also see “Verification Environment Overview” on page 17). Once the DW_apb_uart has been
configured and the verification environment set up, simulations can be automatically ran.
For more information about running simulations for DW_apb_uart in Connect, refer to “Verify
Component” on page 37. For more information about verifying DW_apb_uart in coreConsultant, see
“Verifying the DW_apb_uart” on page 160.
Note
The DW_apb_uart verification testbench is built with DesignWare AMBA Verification IP
(VIP). Please make 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, refer to the following web page:
www.synopsys.com/products/designware/docs/doc/amba/latest/dw_amba_install.pdf
Vera Tests
(test stimuli and results)
test_DW_apb_uart.v
APB Checkers
BFM SIO
Monitors
AHB DUT
BFM DW_apb_uart.v
(APB Slave 0) SIO Txrx
UartLocal models
(DUT driver)
DMA
BFM
UartRemote
(VIP driver)
Scoreboard
= Vera shell
mode, interrupts, and so on in the DUT(UART). Since the information directing the required
simulations are shielded by UartLocalClass away from AHB BFM, revised versions of the latter
Vera component can be easily accommodated by updating UartLocalClass.
● VIP Driver, or UartRemoteClass – Performs a similar role to that of UartLocalClass, translating
the information provided by Testbench API into corresponding SIO_TxRx BFM commands in
order to effect the desired simulation behaviors. Note that controls complementary to that of the
UartLocalClass are performed in the UartRemoteClass, such that if the DUT performs transmits,
then the SIO_TxRx BFM attempts reception(s). UartRemoteClass also serves to shield the rest of
the verification environment from revised versions of this VIP component.
● AHB BFM – VIP harness BFM required to imitate as an AHB master. All actual register accesses
(reads and writes) required by a current test are performed using AHB BFM commands. Existing
class definitions for this BFM are re-used.
● DMA BFM – Exercises the DMA interface of the DUT/UARTv3.0. It behaves as another AHB
master, issuing commands to perform reads and writes from/to the UART. These activities are
coordinated within the UartLocalClass.
● Checkers – Examine the behavior of the DUT through the DUT signal interfaces, and evaluate the
outcome of the prescribed tests targeted at the DUT. The verification tests determine the degree to
which the DUT is verified, and is therefore linked to one (or more) test monitors in the test
environment. These Checkers operate independently of the main flow in the test code. This form of
messaging uses two classes, TestmonAlertClass and TestmonExecuteClass.
● SIOMonitor – Serial monitor VIP from the SIO VIP package. When appropriately parameterized,
the SIO_Mon examines the serial bit patterns exchanged between the DUT and the SIO_TxRx.
● SIOTxRx BFM – Vera model of a UART capable of serial data exchanges with any other UART.
● APB Slave BFM – Used to ensure that violations in the APB accesses are appropriately captured
and logged.
● Scoreboard – Tracks the data that are exchanged between the UART and the SIOTxrx models. This
allows verification of the actual contents transmitted and/or received on either side in either
direction.
9
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 for the slave interface of APB peripherals:
● “Reading and Writing from an APB Slave” on page 137
● “Write Timing Operation” on page 140
● “Read Timing Operation” on page 141
● “Accessing Top-level Constraints” on page 142
● “Coherency” on page 142
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
Register 2 [15:0] nn04
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
Figure 31: Read/Write Locations for Different APB Bus Data Widths
Note
If you write to an address location not on a 32-bit boundary, the bottom bits are
ignored/not used.
Note
If you write to an address location not on a 16-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
Note
If a read enable is not active, then the previously read data is maintained on the read-back
data bus.
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.
Writing Coherently
Writing coherently means that all the bits of a register can be written at the same time. A peripheral
may have programmable registers that are wider than the width of the connected APB data bus, which
prevents all the bits being programmed at the same time unless additional coherency circuitry is
provided.
The programmable register could be the load value for a counter that may exist in a different clock
domain. Not only does the value to be programmed need to be coherent, it also needs to be transferred
to a different clock domain and then loaded into the counter. Depending on the function of the
programmable register, a qualifier may need to be generated with the data so that it knows when the
new value is currently transferred and when it should be loaded into the counter.
Depending on the system and on the register being programmed, there may be no need for any special
coherency circuitry. One example that requires coherency circuitry is a 32-bit timer within an 8-bit
APB system. The value is entirely programmed only after four 8-bit wide write transfers. It is safe to
transfer or use the register when the last byte is currently written. An example where no coherency is
required is a 16-bit wide timer within a 16-bit APB system. The value is entirely programmed after a
single 16-bit wide write transfer.
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 gives 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
Identical Clocks
The following figure illustrates an RTL diagram for the circuitry required to implement the coherent
write transaction when the APB bus clock and peripheral clocks are identical.
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
pclk
paddr A0 A1 A2 A3
penable
pwdata[7:0] A
0A B
0B C
0C D
0D
Shadow[7:0] A
0A
Shadow[15:8] B
0B
Shadow[23:16]] 0C
C
tLoadValue[31:0] DCBA
0D0C0B0A
UpperByteWen
LoadCnt
Counter[31:0] DCBA
0D0C0B0A
Synchronous Clocks
When the clocks are synchronous but do not have identical periods, the circuitry needs to be extended
so that the LoadCnt signal is kept high until a rising edge of the counter clock occurs. This extension is
necessary so that the value can be loaded, using LoadCnt, into the counter on the first counter clock
edge. At the rising edge of the counter clock if LoadCnt is high, then a register clocked with the counter
clock toggles, otherwise it keeps its current value. A circuit detecting the toggling is used to clear the
original LoadCnt by looking for edge changes. The value is loaded into the counter when a toggle has
been detected. Once it is loaded, the counter should be free to increment or decrement by normal rules.
The following figure shows an RTL diagram for the circuitry required to implement the coherent write
when the bus and peripheral clocks are synchronous.
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 timing diagram shows 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] A
0A B
0B C
0C D
0D
Shadow[7:0]] A
0A
Shadow[15:8] B
0B
Shadow[23:16] C
0C
CntLoadValue[31:0] DCBA
0D0C0B0A
LoadCnt
toggle
toggle_edge_detect
Counter[31:0] DCBA
0D0C0B0A
Asynchronous Clocks
When the clocks are asynchronous, the processor clock needs to be three-times the speed of the
peripheral clock for the re-timing to operate correctly. The high pulse time of the peripheral clock needs
to be greater than the period of the processor clock. The following figure shows an RTL diagram for the
circuitry required to implement the coherent write when the bus and peripheral clocks are
asynchronous.
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.
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 following timing diagram does not show the shadow registers being loaded. This is identical to the
loading for the other clock modes. 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.
p c lk
c o u n te r_ clk
U p p e rB yte W e n
paddr A3
p e n a b le
p w d a ta [7 :0 ] D
0D
N e w Va lu e
C n tL o a d Va lu e [3 1 :0 ] D C BA
0D0C0B0A
re d _ co u n te r_ c lk
S a fe C n tL o a d Va lu e [3 1 :0 ] D C BA
0D0C0B0A
S a fe N e w Va lu e
to g g le
C lrN e w Va lu e
C o u n te r[3 1 :0 ] DCBA
0D0C0B0A
Reading Coherently
For writing to registers, an upper-byte concept is proposed for solving coherency issues. For read
transactions, a lower-byte concept is required. The following table provides the relationship between
the register width and the bus width for the generation of the correct lower byte. 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.
Table 10: Lower Byte Generation
Lower Byte
Bus Width
Counter Register 8 16 32
Width
9 - 16 0 NCR NCR
17 - 24 0 0 NCR
25 - 32 0 0 NCR
There are two cases regarding the relationship between the processor and peripheral clocks to be
considered as follows:
● Identical and/or synchronous
● Asynchronous
Synchronous Clocks
When the clocks are identical and/or synchronous, the remaining unread bits (if any) need to be saved
into a holding register once a read is started. The first read byte must be the lower byte provided in the
previous table, which causes the other bits to be moved into the holding register, SafeCntVal, provided
that the register cannot be read in one access. The upper bytes of the register are read from the holding
register rather than the actual register so that the value read is coherent. This is illustrated in the
following figure and timing diagram.
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.
pc lk
c lk 1
paddr A0 A1 A2 A3 A0 A1 A2
penable
prdata[7:0] 03
3 02
2 01
1 00
0 0H
H 0G
G
LowerB y teRen
Asynchronous Clocks
When the clocks are asynchronous, the processor clock needs to be three times the speed of the
peripheral clock for the re-timing to operate correctly. The high pulse time of the peripheral clock needs
to be greater than the period of the processor clock.
To safely transfer a counter value from the counter clock domain to the bus clock domain, the counter
clock signal should be transferred to the bus clock domain. When the rising edge detect of this re-timed
counter clock signal is detected, it is safe to use the counter value to update a shadow register that holds
the current value of the counter.
While reading the counter contents it may take multiple APB transfers to read the value.
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 and timing diagram illustrate 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.
pc lk
c lk 1
paddr A0 A1 A2 A3 A0 A1 A2
penable
prdata[7:0] 3
03 2
02 1
01 0
00 H
0H G
0G
LowerB y teRen
A
Building and Verifying Your DW_apb_uart
This chapter provides an overview of the step-by-step process you use to configure, synthesize, and
verify your DW_apb_uart component using the Synopsys coreConsultant tool. You use coreConsultant
to create a workspace that is your working version of a subsystem, where you connect, configure,
simulate, and synthesize your implementation of the subsystem. You can create several workspaces to
experiment with different design alternatives. The topics are as follows:
● “Set up Your Environment”
● “Start coreConsultant”
● “Check Your Environment” on page 155
● “Configure DW_apb_uart” on page 155
● “Create Gate-Level Netlist” on page 156
● “Verifying the DW_apb_uart” on page 160
If you plan to include the DW_apb_uart as part of a DesignWare AMBA subsystem, then you will want
to use the DesignWare Connect tool. This tool is a customized version of coreAssembler. For more
information about including DW_apb_uart in a DesignWare AMBA subsystem, refer to Chapter 2,
“Building and Verifying a Subsystem” on page 21.
Start coreConsultant
To invoke coreConsultant:
1. In a UNIX shell, navigate to a directory where you plan to locate your component workspace.
2. Invoke the coreConsultant GUI:
% coreConsultant
The welcome page is displayed, similar to the one below.
Activity
List pane
Activity View
pane
Console
pane
Command
Line pane
3. Click on the DW_apb_uart link in the “Configuring and Using an IP block” section to create a new
workspace. After you have created a workspace, you can also continue working from the point you
left off by using the “Open” link to open it back up.
In the resulting dialog box, specify the workspace name and workspace root directory, or use the
defaults – a workspace name is the name of a configuration of a core; the workspace root directory
is the directory in which the configuration is created. Click OK.
You may notice that you are already in the Specify Configuration activity under the Create RTL
category in the Activity List on the left, and that the Set Design Prefix activity is already checked
in the list. It is not necessary for you to set the design prefix at this point of the learning phase. You
may use this feature in the future if you ever use multiple versions of a component in a design.
Configure DW_apb_uart
This section steps you through the tasks in the coreConsultant GUI that configure your core. Complete
information on the latest version of coreConsultant can be found on the web in the coreConsultant User
Guide. To view documentation specific to your version of coreConsultant, choose the Help pull-down
menu from the coreConsultant GUI.
At any time during this process you can click on the Help tab for each activity to activate the
coreConsultant online help.
Note
Throughout the remaining steps in this chapter, it is best if you apply the default values so
that the directions and descriptions in the chapter will coincide with your display. After
you have used the DW_apb_uart in coreConsultant, you can then go back through these
steps and change values in order to see how they affect the design.
1. Notice that the Set Design Prefix activity is already checked. This setting is used to make each
design in your component have a unique name. This is needed only when you have two or more
versions of
2. Specify Configuration – The Specify Configuration activity is where you specify the basic
configuration of the DW_apb_uart. If you have a Source license, you can choose to use
DesignWare Building Block IP (DWBB) components for optimal Synthesis QoR. Alternatively, if
you have an RTL source licence, you may use source code for DWBB components without a
DesignWare license. If you use RTL source and also have a DesignWare key, you can choose to
retain the DWBB parts.
Look through the basic parameters for each item. Click the Next button to view the other
configuration defaults. If you need help with any field in the activity pane, right-click on the field
name and then left-click on the What’s This box. When finished, click Apply.
When the configuration setup is complete, the Report tab is displayed, which gives you all the
source files (in encrypted format if you have a DW license, and unencrypted if you have a source
license) and all the parameters that have been set for this particular configuration. Reports contain
useful information as you complete each step in the coreConsultant process. Familiarize yourself
with the report contents before going to the next step.
3. Specify Clock(s) – In the Specify Clock(s) activity, look at the attributes associated with each of
the real and virtual clocks in your design. Click Apply and familiarize yourself with the resultant
report, which gives you clock information.
4. Specify Operating Conditions and Wire Loads – In the Specify Operating Conditions and Wire
Loads activity, look at the attributes relating to the chip environment. If you do not see a value
beside OperatingConditionsWorst, select an appropriate value from the drop-down list; if there is
no value for this attribute, you will get an error message. Click Apply and look at the report, which
gives the operating conditions and wireload information.
5. Specify Port Constraints – In the Specify Port Constraints activity, look at the attributes
associated with input delay, drive strength, DRC constraints, output delay, and load specifications.
Click Apply and look at the report, which gives the port constraint checks.
6. Specify Synthesis Methodology – In the Specify Synthesis Methodology activity, look at the
synthesis strategy attributes. Note that these attributes are typically set by the core developer and
are not required to be modified by the core integrator. If you want to add your own commands
during a synthesis, you use the Advanced tab in order to provide pathnames to your auxiliary
scripts. Also click on the Physical Synthesis, and Fpga Synthesis tabs to familiarize yourself with
those items. Click Apply and look at the report, which gives design information. For more
information on adding auxiliary scripts, refer to “Advanced Synthesis Attributes” in the
coreConsultant User Guide.
7. Specify Test Methodology – In the Specify Test Methodology activity, look at the scan test
attributes. Also click on the other tabs to familiarize yourself with auto-fix attributes, SoC test
wrapper attributes, test wrapper integration attributes, BIST attributes, and BIST testpoint
insertion attributes. Click Apply and look at the report, which gives design-for-test information.
8. Synthesize – Choose the Synthesize activity. Do the following:
a. Choose the Strategy tab.
b. Click the Options button beside DCTCL_opto_strategy and look through the strategy
parameters. For example, you can use the Gate Clocks During Elaboration check box in the
Clock Gating tab in order to add parameters that enable and control the use of clock gating.
Click OK when you are done. For more information on clock gating and other parameters for
synthesis strategies, refer to “DC(TCL)_opto_strategy” in the coreConsultant User Guide.
For FPGA synthesis, click the Options button and then select the FPGA Synthesis tab. It is
here where you specify the location of your FPGA device and speed grade, synthetic libraries
other than DesignWare Foundation libraries, implementation of DC-FPGA operators, and so
on. For more information about running synthesis for an FPGA device, refer to the
coreConsultant User Guide.
For Design for Test, click the Options button and then select the Design for Test tab. Here you
can specify whether to add the -scan option to the initial compile call (Test Read Compile)
and/or insert design for test circuitry (Insert Dft). For more information about include DFT in
your synthesis run, refer to the coreConsultant User Guide.
c. Choose the Options tab. Look at the values for the parameters listed below.
Execution Options
d. If it is not already set, choose the “local” Run Style option and maintain the other default
settings.
e. Look through the Licenses and Reports tabs, and ensure that you have all the licenses that are
required to run this synthesis session.
f. Click Apply in the Synthesize activity pane to start synthesis from coreConsultant. The
current status of the synthesis run is displayed in the main window. Click the Reload Page
button if you want to update the status in this screen.
9. Generate Test Vectors – This option allows you to generate ATPG test vectors with TetraMax.
For more information about this option, refer to “Generating ATPG Test Vectors” in the
coreConsultant User Guide.
Note
The Synopsys VCS simulator reads the encrypted files directly and does not require a
GTECH conversion. All other supported simulators require a GTECH simulation model.
You need a DesignWare license to complete the GTECH generation process. If you are a
source license customer, then you do not have to generate a GTECH simulation model,
even if you are using a non-VCS simulator.
1. Generate GTECH Model – To create a GTECH simulation model, click on the Generate GTECH
Simulation Model activity.
2. Look at the values for the parameters listed below.
Execution Options
Synthesis Control
Your simulation model is contained in the DW_apb_uart.v output file that is written to
workspace/gtech/qmap/db.
Root Directory of The path to the top of the directory tree where the Cadence NC-Verilog
Cadence Installation executable is found; coreConsultant automatically detects this path. The
NC-Verilog executables reside in the ./bin subdirectory.
MTI Include Directory The path to the include directory contained within your MTI simulator
installation area. A valid directory includes the veriuser.h file.
Vera .vro file cache Location to store .vro files. These files are generated as part of building the
directory testbench. Encrypted Vera is source is compiled and stored in the cache.
DW Foundation Install Path to your Synopsys DW Foundation installation, which is set from the
Area ($SYNOPSYS) Tools Installation Areas dialog box. Any change to this value must be made
from the Tool Installation Areas coreConsultant dialog box.
d. In the Waves Setup area of the Simulator pane, look at the parameters for the waves setup as
detailed below.
Note
For the Generate Waves File setting, enable the check box so that the simulation creates a
file that you can use later for debugging the simulation, if you want to do so.
Depth of waves to be Description: Enter the depth of the signal hierarchy for which to record
recorded waves in the dump file. A depth of 0 indicates all signals in the hierarchy are
included in the wave file.
B
Database Description
This appendix lists the deliverables and other reference files that are generated from the coreConsultant
flow.
This appendix includes the following sections:
● “Design/HDL Files” on page 168
● “Register Map Files” on page 169
● “Synthesis Files” on page 170
● “Verification Reference Files” on page 170
Design/HDL Files
The following sections describe the design and HDL files that are produced by coreConsultant when
configuring and verifying a DesignWare AMBA component.
RTL-Level Files
The following table describes the RTL files that are generated by the Create RTL activity of the
coreConsultant GUI. They are encrypted except where otherwise noted.
Note
Any Synopsys synthesis tool or simulator can read encrypted RTL files.
Synthesis Files
The following table includes the files that are generated after the Create Gate-Level Netlist activity in
coreConsultant is performed on a component.
Table 14: Synthesis Files
Files Encrypted? Purpose
./syn/auxScripts No Auxiliary files for synthesis.
./syn/final/db/component.db Binary format Synopsys .db files (gate level) that can be read into dc_shell for
further synthesis, if desired.
./syn/final/db/component.v No Gate-level netlist that is mapped to technology libraries that you
specify.
./syn/constrain/script/*.* No Constraint files for the components.
./syn/final/report/*.* No Synthesis result files.
For more information about performing verification on your component, see the chapter titled
Verification in this databook.
C
DesignWare QuickStart Designs
The DesignWare AMBA Synthesizable Components environment provides many templates and
examples to help you be successful with your own design creation process. This section summarizes
these system design aids, and points you to more information about them.
Note
If you could not open the QuickStart documentation, it means that you have not
downloaded the QuickStart examples. For download instructions, please refer to the
DesignWare AMBA Synthesizable Components Installation Guide.
D
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.
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 AMBA The Synopsys name for the collection of AMBA-compliant coreKits and
Synthesizable Components verification models delivered with DesignWare and used with coreConsultant
or coreAssembler to quickly build DesignWare AMBA 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.
Environment (TRE) The files, tests, and functionality vary from component to component.
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 channel
active command queue definition 174
definition 173 command stream
definition 174
activity
definition 173 component
definition 174
Adding component, to subsystem 26
configuration
AHB definition 174
definition 173
configuration intent
AMBA definition 174
definition 173
Configuring components
APB in Connect 29
definition 173
Connect
APB bridge building a subsystem 21
definition 173 configuring components 29
application design creating a batch script 42
definition 173 creating gate-level netlist 32
arbiter creating subsystem RTL 30
definition 173 formal verification 40
ATPG, with TetraMax 34 overview of usage flow 22
Auto CTS, timing of 54 starting 24
Auto flow control 51 verifying a component 37
Auto RTS, timing of 53 core
definition 174
B core developer
definition 174
BFM core integrator
definition 173 definition 174
big-endian coreAssembler
definition 173 definition 174
Block descriptions 14 coreConsultant
Block diagram definition 174
DW_apb_uart functional 15 coreKit
blocked command stream definition 174
definition 173 Create gate-level netlist 156
blocking command Creating
definition 174 batch script of workspace 42
Building a subsystem, with Connect 21 gate-level netlist in Connect 32
bus bridge cycle command
definition 174 definition 174
C D
C header files 169 dc_shell 32
Check tool environment, in Connect 25 decoder
Coherency definition 174
about 142 design context
read 150 definition 174
write 143
E L
endian Licenses 18
definition 175 little-endian
Environment, licenses 18 definition 175
Exporting, a subsystem 43
M
F MacroCell
fm_shell 32 definition 175
Formal verification, in Connect 40 master
FPGA, running synthesis for 33, 157 definition 175
fpga_shell 32 model
Full-Functional Mode definition 175
definition 175 monitor
Functional description 45 definition 175
G N
Gate-level netlist, creating 156 non-blocking command
Generating definition 175
subsystem RTL 30
GPIO O
definition 175 Output files
GTECH GTECH 169
definition 175
Synthesis wrap
output files 35, 159 definition 176
results 35, 159 wrapper
running from command line 159 definition 176
target technology, specifying 32, 155, 156, 157, Write coherency
162 about 143
synthesis intent and asynchronous clocks 148
definition 176 and identical clocks 144
synthesizable IP and synchronous clocks 145
definition 176
Synthesizing subsystem 32 Z
zero-cycle command
T definition 176
Target technology, specifying 32, 155, 156, 157,
162
technology-independent
definition 176
Test Vectors, generating 34
Testsuite Regression Environment (TRE)
definition 176
THRE (Transmitter Holding Register Empty) 13
THRE interrupt 54
Timing
auto CTS 54
auto RTS 53
IrDA SIR data format 47
read operation of DW_apb slave 141
write operation of DW_apb slave 140
TRE
definition 176
U
USE_FOUNDATION 69
V
Verification
generating GTECH models 35, 160
of a component 37
of a subsystem 40
of DW_apb_uart coreKit 134
Verilog header files 169
VIP
definition 176
W
Waves setup 162
workspace
definition 176