IHI0029F Coresight v3 0 Architecture Specification
IHI0029F Coresight v3 0 Architecture Specification
IHI0029F Coresight v3 0 Architecture Specification
® ™
Architecture Specification
v3.0
Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved.
ARM IHI 0029F (ID022122)
Arm CoreSight Architecture Specification
v3.0
Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved.
Release Information
Change history
24 March 2005 B Non-Confidential Second release for v1.0. Editorial changes and clarifications.
Proprietary Notice
This document is protected by copyright and other related rights and the practice or implementation of the information contained
in this document may be protected by one or more patents or pending patent applications. No part of this document may be
reproduced in any form by any means without the express prior written permission of Arm. No license, express or implied, by
estoppel or otherwise to any intellectual property rights is granted by this document unless specifically stated.
Your access to the information in this document is conditional upon your acceptance that you will not use or permit others to use
the information for the purposes of determining whether implementations infringe any third party patents.
THIS DOCUMENT IS PROVIDED “AS IS”. ARM PROVIDES NO REPRESENTATIONS AND NO WARRANTIES,
EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULAR
PURPOSE WITH RESPECT TO THE DOCUMENT. For the avoidance of doubt, Arm makes no representation with respect to,
and has undertaken no analysis to identify or understand the scope and content of, patents, copyrights, trade secrets, or other rights.
TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ARM BE LIABLE FOR ANY DAMAGES,
INCLUDING WITHOUT LIMITATION ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, OR
CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING
OUT OF ANY USE OF THIS DOCUMENT, EVEN IF ARM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
This document consists solely of commercial items. You shall be responsible for ensuring that any use, duplication or disclosure
of this document complies fully with any relevant export laws and regulations to assure that this document or any portion thereof
is not exported, directly or indirectly, in violation of such export laws. Use of the word “partner” in reference to Arm’s customers
is not intended to create or refer to any partnership relationship with any other company. Arm may make changes to this document
at any time and without notice.
This document may be translated into other languages for convenience, and you agree that if there is any conflict between the
English version of this document and any translation, the terms of the English version of the Agreement shall prevail.
The Arm corporate logo and words marked with ® or ™ are registered trademarks or trademarks of Arm Limited (or its affiliates)
in the US and/or elsewhere. All rights reserved. Other brands and names mentioned in this document may be the trademarks of
their respective owners. Please follow Arm’s trademark usage guidelines at https://www.arm.com/company/policies/trademarks.
Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved.
ii Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Confidentiality Status
This document is Non-Confidential. The right to use, copy and disclose this document may be subject to license restrictions in
accordance with the terms of the agreement entered into by Arm and the party that Arm delivered this document to.
Product Status
Web Address
http://www.arm.com
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. iii
ID022122 Non-Confidential
iv Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Contents
Arm CoreSight Architecture Specification v3.0
Preface
About this document .................................................................................................... x
Using this document ................................................................................................... xi
Conventions .............................................................................................................. xiii
Additional reading ...................................................................................................... xv
Feedback .................................................................................................................. xvi
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. v
ID022122 Non-Confidential
Chapter B3 Topology Detection
B3.1 About topology detection ..................................................................................... B3-66
B3.2 Requirements for topology detection signals ...................................................... B3-67
B3.3 Combination with integration registers ................................................................ B3-68
B3.4 Interfaces that are not connected or implemented .............................................. B3-69
B3.5 Variant interfaces ................................................................................................ B3-70
B3.6 Documentation requirements for topology detection registers ............................ B3-71
vi Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
D3.4 Target Connector Signal details ......................................................................... D3-133
Part E Appendixes
Appendix E1 Power Requester
E1.1 About the power requester ................................................................................. E1-170
E1.2 Register descriptions ......................................................................................... E1-171
E1.3 Powering non-visible components ..................................................................... E1-188
Appendix E2 Revisions
Glossary
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. vii
ID022122 Non-Confidential
viii Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Preface
This preface introduces the Arm® CoreSight™ Architecture Specification. It contains the following sections:
• About this document on page x.
• Using this document on page xi.
• Conventions on page xiii.
• Additional reading on page xv.
• Feedback on page xvi.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ix
ID022122 Non-Confidential
Preface
About this document
Intended audience
This specification targets the following audiences:
• Software engineers writing development tools that support CoreSight system functionality.
• Designers of debug hardware that is used to connect to a CoreSight system, for example JTAG emulators,
SWD emulators, and Trace Port Analyzers.
This specification does not document the behavior of individual components unless they form a fundamental part
of the architecture.
Arm recommends that engineers who use this document have experience of the Arm architecture.
x Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Preface
Using this document
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. xi
ID022122 Non-Confidential
Preface
Using this document
Part E, Appendixes
This specification contains the following appendixes:
Appendix E2 Revisions
Read this chapter for a description of the technical changes between released versions of this
specification.
Glossary
Read this chapter for definitions of some terms that are used in this specification. The glossary does
not contain terms that are industry standard unless the Arm meaning differs from the accepted
meaning.
xii Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Preface
Conventions
Conventions
The following sections describe conventions that this document can use:
• Typographic conventions.
• Signals.
• Timing diagrams.
• Numbers on page xiv.
• Pseudocode descriptions on page xiv.
Typographic conventions
The typographical conventions are:
italic Introduces special terminology, and denotes internal cross-references and citations, or highlights an
important note.
bold Denotes signal names, and is used for terms in descriptive lists, where appropriate.
monospace Used for assembler syntax descriptions, pseudocode, and source code examples.
Also used in the main text for instruction mnemonics and for references to other items appearing in
assembler syntax descriptions, pseudocode, and source code examples.
SMALL CAPITALS
Used for a few terms that have specific technical meanings, and are included in the Glossary.
Signals
In general, this document does not define processor signals, but it does include some signal examples and
recommendations. The signal conventions are:
Signal level The level of an asserted signal depends on whether the signal is active-HIGH or
active-LOW. Asserted means:
• HIGH for active-HIGH signals.
• LOW for active-LOW signals.
Timing diagrams
The figure, Key to timing diagram conventions on page xiv, explains the components that are used in timing
diagrams. Variations, when they occur, have clear labels. Do not assume any timing information that is not explicit
in the diagrams.
Shaded bus and signal areas are undefined so the bus or signal can assume any value within the shaded area at that
time. The actual level is unimportant and does not affect normal operation.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. xiii
ID022122 Non-Confidential
Preface
Conventions
Clock
HIGH to LOW
Transient
HIGH/LOW to HIGH
Bus stable
Bus change
Timing diagrams sometimes show single-bit signals as HIGH and LOW at the same time and they look similar to
the bus change shown in Key to timing diagram conventions. If a timing diagram shows a single-bit signal in this
way, its value does not affect the accompanying description.
Numbers
Numbers are normally written in decimal notation. Binary numbers are preceded by 0b, and hexadecimal numbers
by 0x. In both cases, the prefix and the associated value are written in a monospace font, for example 0xFFFF0000.
Pseudocode descriptions
This document uses a form of pseudocode to provide precise descriptions of the specified functionality. This
pseudocode is written in a monospace font, and is described in Appendix E3 Pseudocode Definition.
xiv Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Preface
Additional reading
Additional reading
This section lists relevant publications from Arm and third parties.
Arm publications
This specification contains information that is specific to CoreSight. See the following documents for other relevant
information:
• Arm® Architecture Reference Manual ARMv7-A and ARMv7-R edition (ARM DDI 0406).
• Arm® Architecture Reference Manual ARMv8, for A-profile architecture (ARM DDI 0487).
• Arm® Architecture Reference Manual Supplement, the Realm Management Extension (RME) for Armv9-A
(ARM DDI 0615).
• Arm® Realm Management Extension (RME) System Architecture (ARM DEN 0129).
• Arm® AMBA® AXI and ACE Protocol Specification (ARM IHI 0022).
Other publications
This section lists relevant documents that are published by third parties:
• IEEE, Standard Test Access Port and Boundary Scan Architecture, IEEE Std 1149.1-1990
• JEDEC, Standard Manufacturer’s Identification Code, JEP106
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. xv
ID022122 Non-Confidential
Preface
Feedback
Feedback
Arm welcomes feedback on its documentation.
Note
Arm tests PDFs only in Adobe Acrobat and Acrobat Reader, and cannot guarantee the appearance or behavior of
any document when viewed with any other PDF reader.
Previous issues of this document included terms that can be offensive. We have replaced these terms. If you find
offensive terms in this document, please contact terms@arm.com.
xvi Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Part A
CoreSight Architecture
Chapter A1
About the CoreSight Architecture
This chapter introduces the CoreSight architecture. It contains the following sections:
• Purpose of the CoreSight architecture on page A1-20.
• Structure of the CoreSight architecture on page A1-21.
• CoreSight component types on page A1-23.
• CoreSight topology detection on page A1-25.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. A1-19
ID022122 Non-Confidential
About the CoreSight Architecture
A1.1 Purpose of the CoreSight architecture
• The requirement to debug and trace system components beyond the core, for example buses.
• The requirement for sharing resources, such as pins and trace storage, between debug and trace components,
to reduce silicon costs.
• The requirement for debug and trace components from multiple vendors to be able to work together.
• The requirement for supporting increasing trace bandwidth from many sources.
• The requirement to accommodate the existing trace solutions, rather than expecting them to be rewritten to
support a new trace architecture.
• The requirement for development tools to automatically identify and configure themselves for different
systems.
• The requirement for controlling access to debug and trace functionality in the field.
• The fact that the clock and power to parts of the system can be varied or disabled independently while
debugging the rest of the system.
• The fact that the time available to design debug and trace functionality is often limited and the number of
options must be minimized where possible.
• The requirement for debug monitors and other on-chip debug software to have access to the same debug and
trace functionality as an external debugger.
• The fact that systems are often built from a hierarchy of reusable platforms, where each level must hide its
internal complexities, which prevents designers from changing the platform when using it in another system.
The CoreSight architecture satisfies the following requirements for debug and trace:
• To perform certain operations, such as real-time tracing, non-invasively, with no effect on the behavior of the
system.
The CoreSight architecture can be used to design CoreSight components, that can be combined with other CoreSight
components and processors that comply with the CoreSight architecture to make up a CoreSight system.
A1-20 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
About the CoreSight Architecture
A1.2 Structure of the CoreSight architecture
The visible component architecture is visible to the programming interface and to tools that access the device. All
CoreSight components must comply with the visible component architecture. The visible component architecture
specifies:
• The requirements that all CoreSight components must conform to the programmers’ model.
• The requirements that enable discovery of the component layout for topology detection.
For details of the visible component architecture, see Part B CoreSight Visible Component Architecture.
It is possible to create a homogeneous component that performs various functions internally as separate components
implementing the visible component architecture, provided one set of reusable component interfaces is available to
enable integration into a larger CoreSight system.
Caution
Self-contained systems that implement only the visible, and not the reusable component architecture, are compatible
with development tools, but have the following limitations:
• Integrating them with other CoreSight components might be impossible.
• Detecting them during topology detection might fail.
For details about the reusable component architecture, see Part C CoreSight Reusable Component Architecture.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. A1-21
ID022122 Non-Confidential
About the CoreSight Architecture
A1.2 Structure of the CoreSight architecture
• The design of the ROM Table. See CoreSight component types on page A1-23 and Chapter D5 About ROM
Tables.
• How to enable CoreSight topology detection.
• Compliance requirements for CoreSight systems.
For details about the system architecture, see Part D CoreSight System Architecture.
A1-22 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
About the CoreSight Architecture
A1.3 CoreSight component types
Note
A CoreSight component is a component that implements the CoreSight visible component architecture.
Control components
CoreSight systems can include Embedded Cross Trigger (ECT) control components. The ECT
includes:
• Cross Trigger Interface (CTI).
• Cross Trigger Matrix (CTM).
Trace sources
CoreSight systems can include the following trace sources:
• Embedded Trace Macrocells (ETMs).
• AMBA Trace Macrocells.
• Program Flow Trace Macrocells (PTMs).
• System Trace Macrocells (STMs).
Trace links
CoreSight systems can include the following trace links:
• Trace funnels.
• Replicators.
• ATB bridges.
Trace sinks
CoreSight systems can include the following trace sinks:
• Trace Port Interface Units (TPIUs).
• Embedded Trace Buffers (ETBs).
• Trace Memory Controllers (TMCs).
Each trace sink can include a Trace Formatter.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. A1-23
ID022122 Non-Confidential
About the CoreSight Architecture
A1.3 CoreSight component types
For more information on specific components, see the appropriate Technical Reference Manual.
A1-24 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
About the CoreSight Architecture
A1.4 CoreSight topology detection
CoreSight systems can have several interface types, as Transmitters or Receivers. Each CoreSight component
specifies which interfaces are present. The debugger probes each interface to determine which other components
are connected to it.
Each interface type defines which signals must be controllable by the Transmitter and Receiver interfaces, and how
the debugger can determine the connectivity using these signals. These signals are referred to as topology detection
signals. For the specification of the requirements for standard interfaces that are used by Arm CoreSight
components, see Chapter C7 Topology Detection at the Component Level. Interface vendors must define the
requirements for other interfaces, following the rules in Chapter D6 Topology Detection at the System Level.
At the visible component architecture level, a CoreSight system provides topology detection registers. These
registers are accessible through the programmers’ model and contain information about the components in the
system and permit a debugger to identify the components. See Chapter B3 Topology Detection.
At the reusable component architecture level, the system defines interfaces that enable communication between the
various components and enable debuggers access to the system. See Chapter C7 Topology Detection at the
Component Level.
There are registers to control the wires where buses exist, and enough of the system must be controllable to establish
the existence of the link. For example, for ATB interface signals, only ATVALID and ATREADY must be
controlled.
Before it performs topology detection, the debugger uses the following procedure to determine which components
are present in the system:
• It connects to the physical interface. See Chapter D3 Physical Interface.
• It establishes communication with the system, for example through an interface that complies with the ADI
architecture.
• It uses the ROM Table to determine which components are present.
• For each component, it uses the component type to determine which interfaces are present and how to access
signals on these interfaces.
• For each interface, it uses the interface type to determine which signals to access. Chapter C7 Topology
Detection at the Component Level describes how to perform topology detection for each of the CoreSight
interfaces.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. A1-25
ID022122 Non-Confidential
About the CoreSight Architecture
A1.4 CoreSight topology detection
• It uses the algorithm that is described in Chapter D6 Topology Detection at the System Level to perform
topology detection. Topology detection asserts and deasserts signals on each Transmitter interface in turn to
check each Receiver interface and determine where interfaces are connected together.
A1-26 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Part B
CoreSight Visible Component Architecture
Chapter B1
About the Visible Component Architecture
The visible component architecture specifies aspects of components that are visible to the programming interface
and to tools that access the device.
• Chapter B2 CoreSight programmers’ model. The programmers’ model specifies various registers for the
identification and control of the component.
• Chapter B3 Topology Detection. The topology detection registers provide the means for the process of
topology detection in the CoreSight system.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B1-29
ID022122 Non-Confidential
B1 About the Visible Component Architecture
B1-30 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter B2
CoreSight programmers’ model
This chapter describes the CoreSight programmers’ model. It contains the following sections:
• About the programmers’ model on page B2-32.
• Component and Peripheral Identification Registers on page B2-38.
• Component-specific registers for Class 0x9 CoreSight components on page B2-44.
• Component-specific registers for Class 0xF CoreLink, PrimeCell, and system components on page B2-64.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-31
ID022122 Non-Confidential
CoreSight programmers’ model
B2.1 About the programmers’ model
• Define the standard set of registers that every CoreSight component must implement in addition to the control
registers specific to that component.
• Explain how software can use integration registers for determining the topology of a CoreSight system.
• Component-specific control registers. The set of required control registers depends on the component class.
For a list of valid components classes, see the description of the CIDR1.CLASS field in CIDR0-CIDR3,
Component Identification Registers on page B2-38.
This register structure must be supported by every component that implements a CoreSight compliant programmers’
model.
B2-32 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.1 About the programmers’ model
The fields that can contribute to the Unique Component Identifier are listed in Table B2-1. For details about the
individual fields, see the field descriptions in the relevant register descriptions.
Table B2-1 Register fields that contribute to the Unique Component Identifier
PIDR1 DES_0 4
PART_1 4
PIDR2 REVISION 4
DES_1 3
PIDR3 REVAND 4
PIDR4 DES_2 4
REVISION 4
ARCHID 16
DEVTYPEa SUB 4
MAJOR 4
a. These registers only contribute to the Unique Component Identifier of components with a
CIDR1.CLASS value of 0x9.
• Multiple instances of the same component are not considered to be unique and usually have the same Unique
Component Identifier.
• Where a component has multiple possible configurations and each configuration is a subset of one single
configuration, it is not necessary for each configuration to have a separate Unique Component Identifier. For
example, a trace macrocell that has a configurable number of comparators does not need a separate Unique
Component Identifier for each configuration with a different number of comparators.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-33
ID022122 Non-Confidential
CoreSight programmers’ model
B2.1 About the programmers’ model
• If a component in a subsystem that is described by a ROM Table is changed, the revision number in its Unique
Component Identifier must be changed, even if the revision number that is part of the Unique Component
Identifier of the ROM Table is not changed.
Note
• If multiple components share the value for the part number in PIDR0.PART_0 and PIDR1.PART_1, they are
differentiated by the different values of the other fields in the Unique Component Identifier.
• Component designers who require more than 12 bits for the part number, for example when using a 16-bit
part numbering scheme, can use the PIDR2.REVISION and PIDR3.REVAND fields to indicate the part
number. Effectively, the PIDR0.PART_0, PIDR1.PART_1, PIDR2.REVISION, and PIDR3.REVAND fields
provide a total of 20 bits that can be used to create part numbers and revisions of the component.
• CoreSight versions before version 3.0 permitted using the PIDR3.CMOD field to distinguish between
different components. This permission is removed in CoreSight version 3.0.
Note
Although a component can be designed to implement only the valid bits of a CoreSight register, software can always
access the register as a 32-bit register.
• Extra address space must be allocated in 4KB blocks, and the total number of blocks must be a power-of-2.
The maximum number of blocks is 16,384 for an address space of 64MBytes.
• All 4KB blocks comprising a component must be allocated as a contiguous segment, without gaps.
• The CoreSight programmers’ model must be implemented in one of the 4KB blocks making up the
component. It is not necessary to implement the programmers’ model in the other 4KB blocks that are part
of the same component.
Note
From CoreSight version 3.0 onwards, the CoreSight programmers’ model does not need to be implemented
in the last 4KB block of each individual component.
• Arm recommends that debug tools determine the size of the component from the part number in the
Peripheral ID registers and other IMPLEMENTATION DEFINED registers in the component.
From v3.0 onwards, using the PIDR4.SIZE field to indicate the size of the component is deprecated:
— Arm recommends that PIDR4.SIZE is always 0x0. The PIDR4.SIZE field might not correctly indicate
the size of the component.
— Arm recommends that debug tools ignore the value of PIDR4.SIZE.
B2-34 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.1 About the programmers’ model
For more information about PIDR4, see PIDR0-PIDR7, Peripheral Identification Registers on page B2-40.
• The bus that is used to access the component must have enough address lines to span the entire allocated
address space. See Table B2-2.
The following alternative methods for extending the address space available to a component are possible, but not
recommended:
Table B2-2 summarizes the relationship between the address space size, the number of available registers, and the
number of required address lines.
Component-specific
Number of Total memory Expected
registers available
4KB blocks window used PADDRDBG inputa
(words)
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-35
ID022122 Non-Confidential
CoreSight programmers’ model
B2.1 About the programmers’ model
0xFAC RO DEVAFF1
0xFD8 RO PIDR6
0xFDC RO PIDR7
The words at offsets 0xF00-0xFFC are the CoreSight management registers. These registers are common to all
CoreSight components. This area is reserved for CoreSight registers, and device-specific control registers must not
use it. The CoreSight management registers include:
• The Peripheral ID Registers, at offsets 0xFD0-0xFEC.
• The Component ID Registers, at offsets 0xFF0-0xFFC.
B2-36 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.1 About the programmers’ model
The remaining words can be used for component-specific registers. Arm recommends using the following
conventions:
• Control registers start at address 0x000 and continue upwards.
• Any registers that are used purely for integration purposes start at address 0xEFC and continue downwards.
The register type of device-specific registers is IMPLEMENTATION DEFINED and can be RW, RO, or WO.
Table B2-4 defines the behavior on accesses to reserved registers and fields.
Access to Behavior
Locations that are marked as RES0 are reserved. Reads of write-only registers are considered accesses to Reserved
registers. Writes to read-only registers are considered accesses to Reserved registers. The following tables show the
specific meaning of each of the behaviors.
Table B2-5 shows the required behavior of a CoreSight component for registers that are defined as RW, RO, or WO.
Table B2-6 shows the required behavior of software when accessing a CoreSight component for registers that are
defined as RW, RO, or WO.
RES0 Treat as UNKNOWN Treat as UNKNOWN Do not read Preserve Do not write Preserve
RES1 Treat as UNKNOWN Treat as UNKNOWN Do not read Preserve Do not write Preserve
RAZ/WI Expect zero Expect zero Do not read Are ignored Do not write Are ignored
Programming a reserved value into a register, or a field within a register, might result in CONSTRAINED
UNPREDICTABLE behavior of the component. Usually, this involves mapping the behavior to one or more permitted
behaviors.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-37
ID022122 Non-Confidential
CoreSight programmers’ model
B2.2 Component and Peripheral Identification Registers
Purpose
Provide information that can be used to identify a CoreSight component.
Usage constraints
CIDR0-CIDR3 are accessible as follows:
Default
RO
Configurations
Included in all implementations.
Attributes
A set of four 32-bit management registers.
Field Descriptions
The CIDR0-CIDR3 bit assignments are:
31 8 7 0
31 8 7 0
31 8 7 4 3 0
31 8 7 0
Bits[31:8] of CIDR3
RES0.
B2-38 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.2 Component and Peripheral Identification Registers
Bits[31:8] of CIDR2
RES0.
Bits[31:8] of CIDR1
RES0.
Value Description
0x2-0x8 Reserved.
0xA Reserved.
0xC-0xD Reserved.
Bits[31:8] of CIDR0
RES0.
Accessing CIDR
CIDR0-CIDR3 can be accessed at the following addresses:
Offset
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-39
ID022122 Non-Confidential
CoreSight programmers’ model
B2.2 Component and Peripheral Identification Registers
Purpose
Provide information that can be used to identify a CoreSight component. Most of the fields making
up PIDR0-PIDR7 are included in the Unique Component Identifier. The Unique Component
Identifier can also include fields from the CIDR1, DEVARCH, and DEVTYPE registers. For
details, see The Unique Component Identifier on page B2-32.
Usage constraints
PIDR0-PIDR7 are accessible as follows:
Default
RO
Configurations
Included in all implementations.
Field Descriptions
The PIDR0-PIDR7 bit assignments are:
31 8 7 4 3 0
31 8 7 4 3 2 0
JEDEC
31 8 7 4 3 0
31 8 7 0
31 0
31 0
B2-40 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.2 Component and Peripheral Identification Registers
31 0
31 8 7 4 3 0
PIDR3 bits[31:8]
RES0.
Note
CoreSight versions before version 3.0 permitted using the CMOD field to distinguish
between different components. This permission is removed in CoreSight version 3.0.
PIDR2 bits[31:8]
RES0.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-41
ID022122 Non-Confidential
CoreSight programmers’ model
B2.2 Component and Peripheral Identification Registers
PIDR1 bits[31:8]
RES0.
PIDR0 bits[31:8]
RES0.
B2-42 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.2 Component and Peripheral Identification Registers
PIDR7 bits[31:0]
RES0.
PIDR6 bits[31:0]
RES0.
PIDR5 bits[31:0]
RES0.
PIDR4 bits[31:8]
RES0.
Offset
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-43
ID022122 Non-Confidential
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
CoreSight components must implement an extra set of registers, referred to as the CoreSight management registers,
which are described in this section. Addresses 0xF00 to 0xFCC are reserved for use by CoreSight management
registers.
When implementing a CoreSight component, ensure that the following requirements are met:
• Any reads from unimplemented or reserved registers in 0xF00 to 0xFFF must return zero, and writes must be
ignored. For details about the required behavior of reserved locations, see Programmers’ Model Quick
Reference on page B2-36.
• Two or more functionally different CoreSight components are permitted to share a part number, as long as
they each have a different Unique Component Identifier. See The Unique Component Identifier on
page B2-32.
B2-44 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Purpose
Reports the required security level and status of the authentication interface. Where functionality
changes on a given security level, the change in status must be reported in this register. For details
about the authentication interface, see Chapter C5 Authentication Interface.
Usage constraints
Some components might not distinguish between Secure and Non-secure debug. For example, a
trace component for a simple bus might connect to a Secure or a Non-secure bus, while its enable
signals connect differently depending on which bus the component connects to. A failure to
distinguish between Secure and Non-secure debug could result in:
• A component that indicates only Non-secure debug capabilities while performing only
Secure debug functions.
• A component that indicates only Secure debug capabilities while performing only
Non-secure debug functions.
Debuggers must be able to accommodate this possibility.
AUTHSTATUS is accessible as follows:
Default
RO
Configurations
Included in all implementations.
Attributes
A 32-bit register.
Field Descriptions
The AUTHSTATUS bit assignments are:
31 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 87 65 43 21 0
RES0 RTNID RTID SUNID SUID NSUID RLNID RLID HNID HID SNID SID NSID
NSUNID NSNID
Bits[31:28]
RES0.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-45
ID022122 Non-Confidential
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
B2-46 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
RLNID, bits[15:14]
Realm Non-invasive debug. Indicates whether a separate enable control for Realm state
non-invasive debug features is implemented and enabled. The defined values of this field
are:
0b00 Separate Realm non-invasive debug enable not implemented or Realm state
non-invasive debug features not implemented.
0b10 Implemented and disabled.
0b11 Implemented and enabled.
All other values are reserved.
RLID, bits[13:12]
Realm Invasive Debug. Indicates whether a separate enable control for Realm state invasive
debug is implemented and enabled. The defined values of this field are:
0b00 Separate Realm invasive debug enable not implemented or Realm state invasive
debug features not implemented.
0b10 Implemented and disabled.
0b11 Implemented and enabled.
All other values are reserved.
HNID, bits[11:10]
Hypervisor non-invasive debug.
This field can have one of the following values:
0b00 Debug level not supported.
0b10 Supported and disabled.
(HIDEN | HNIDEN) & (DBGEN | NIDEN) == FALSE.
0b11 Supported and enabled.
(HIDEN | HNIDEN) & (DBGEN | NIDEN) == TRUE.
All other values are reserved.
HID, bits[9:8]
Hypervisor invasive debug.
This field can have one of the following values:
0b00 Debug level is not supported.
0b10 Supported and disabled.
(HIDEN | DBGEN) == FALSE.
0b11 Supported and enabled.
(HIDEN | DBGEN) == TRUE.
All other values are reserved.
SNID, bits[7:6]
Secure noninvasive debug.
This field can have one of the following values:
0b00 Debug level is not supported.
0b10 Supported and disabled.
(SPIDEN | SPNIDEN) & (DBGEN | NIDEN) == FALSE.
0b11 Supported and enabled.
(SPIDEN | SPNIDEN) & (DBGEN | NIDEN) == TRUE.
All other values are reserved.
SID, bits[5:4]
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-47
ID022122 Non-Confidential
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
NSNID, bits[3:2]
Non-secure noninvasive debug.
This field can have one of the following values:
0b00 Debug level is not supported.
0b10 Supported and disabled.
(NIDEN | DBGEN) == FALSE.
0b11 Supported and enabled.
(NIDEN | DBGEN) == TRUE.
All other values are reserved.
NSID, bits[1:0]
Non-secure invasive debug.
This field can have one of the following values:
0b00 Debug level is not supported.
0b10 Supported and disabled.
DBGEN == FALSE.
0b11 Supported and enabled.
DBGEN == TRUE.
All other values are reserved.
Accessing AUTHSTATUS
AUTHSTATUS can be accessed at the following address:
Offset
0xFB8
B2.3.2 CLAIMSET and CLAIMCLR, Claim Tag Set Register and Claim Tag Clear Register
The characteristics of CLAIMSET and CLAIMCLR are:
Purpose
Often there are several debug agents that must cooperate to control the resources that the CoreSight
components make available. For example, an external debugger and a debug monitor running on the
target might both require control of the breakpoint resources of a processor. It is important that a
debug agent does not reprogram debug resources that another debug agent is using.
The Claim tag registers provide various bits that can be separately set and cleared to indicate
whether functionality is in use by a debug agent. All debug agents must implement a common
protocol to use these bits.
B2-48 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
This specification does not define the claim tag protocol, but consider the following examples that
illustrate how these bits can be used:
Protocol 1: Set common bit to claim
In this scenario, debug functionality is only claimed on a few rare, well-defined points,
for example when the target is powered up or when a debugger is connected.
Each bit in the claim tag corresponds to an area of debug functionality, which is shared
between all debug agents. For example, 4 bits can control four areas of functionality.
The following shows a pseudocode implementation of this protocol:
read claim tag bit
if (bit is set)
functionality is not available
else
set bit
use functionality
Protocol 2: Set private bit to claim
In this scenario, debug functionality is also only claimed on a few rare, well-defined
points, but it is necessary to be able to determine which other agent has claimed
functionality.
Each bit in the claim tag corresponds to an area of debug functionality for a debug agent.
For example, 4 bits can control two areas of functionality each for two debug agents.
The following shows a pseudocode implementation of this protocol:
read all claim tag bits for this functionality
if (any bits are set)
functionality is not available
else
set bit for this agent
use functionality
Protocol 3: Set private bit and check for race
In this scenario, debug functionality is claimed regularly and it is possible for two debug
agents to attempt to claim it at the same time. Each bit in the claim tag corresponds to
an area of debug functionality for a debug agent, as in protocol 2. The following shows
a pseudocode implementation of this protocol:
read all claim tag bits for this functionality
if (any bits are set)
functionality is not available
else
set bit for this agent
read all claim tag bits for this functionality
if (any bits are set by other agents)
clear bit for this agent
wait a random amount of time
go back to start
else
use functionality
Usage constraints
The value of CLAIMCLR must be zero at reset.
CLAIMSET and CLAIMCLR are accessible as follows:
Default
RW
Configurations
Included in all implementations.
Attributes
32-bit registers.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-49
ID022122 Non-Confidential
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Field Descriptions
The CLAIMSET and CLAIMCLR bit assignments are:
31 nTags nTags-1 0
31 nTags nTags-1 0
CLAIMCLR bits[31:nTags]
RAZ/WI
CLAIMSET bits[31:nTags]
RAZ/WI
Offset
CLAIMCLR CLAIMSET
0xFA4 0xFA0
B2-50 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Purpose
Enables a debugger to determine whether two components have an affinity with each other.
For example, when a trace macrocell connects to a processor, the DEVAFF0 and DEVAFF1 in both
components must contain identical values that are unique. Doing so enables the debugger to identify
how the components relate to each other, without performing topology detection.
Usage constraints
DEVAFF0-DEVAFF1 are accessible as follows:
Default
RO
Configurations
Included in all implementations.
Attributes
A set of 32-bit registers that return an IMPLEMENTATION DEFINED value. A component might have
affinity with a group of components, for example where a single component is shared between
multiple PEs. The DEVAFF registers can be used to indicate the affinity with a group of
components. See the Arm® Architecture Reference Manual, for A-profile for examples of how
affinity with a group of PEs is indicated.
Field Descriptions
The DEVAFF0-DEVAFF1 bit assignments are:
31 0
31 0
DEVAFF1, bits[31:0],
DEVAFF0, bits[31:0]
IMPLEMENTATION DEFINED. If a component has no unique association with another
component, these fields are RAZ.
Examples of the content that DEVAFF returns are the MPIDRs of Arm architecture
processors and CTIs that connect to them:
• DEVAFF0 returns MPIDR, bits[31:0].
• DEVAFF1 returns MPIDR, bits[63:32].
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-51
ID022122 Non-Confidential
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Accessing DEVAFF0-DEVAFF1
DEVAFF0-DEVAFF1 can be accessed at the following address:
Offset
DEVAFF0 DEVAFF1
0xFA8 0xFAC
B2-52 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Purpose
Identifies the architect and architecture of a CoreSight component. The architect might differ from
the designer of a component, for example when Arm defines the architecture but another company
designs and implements the component.
Usage constraints
DEVARCH is accessible as follows:
Default
RO
Configurations
Included in all implementations.
Attributes
A 32-bit register that returns an IMPLEMENTATION DEFINED value.
Field Descriptions
The DEVARCH bit assignments are:
31 21 20 19 16 15 0
PRESENT
ARCHITECT, bits[31:21]
Defines the architect of the component:
Bits[31:28] Indicates the JEP106 continuation code.
Bits[27:21] Indicates the JEP106 identification code.
See the Standard Manufacturers Identification Code for information about JEP106. For
components where Arm is the architect, this 11-bit field returns 0x23B.
PRESENT, bit[20]
Indicates the presence of this register:
0 = DEVARCH is not present. Bits[31:0] must be RAZ.
1 = DEVARCH is present.
REVISION, bits[19:16]
Architecture revision. Returns the revision of the architecture that the ARCHID field
specifies.
ARCHID, bits[15:0]
Architecture ID. Returns a value that identifies the architecture of the component.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-53
ID022122 Non-Confidential
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Table B2-8 lists the ARCHID values for some example components where Arm is the
architect.
ARCHID Description
Accessing DEVARCH
DEVARCH can be accessed at the following address:
Offset
0xFBC
B2-54 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Purpose
Indicates the capabilities of the component.
Usage constraints
This register is IMPLEMENTATION DEFINED for each part number and designer.
The entire 32-bit field can be used because the data width is determined by the component itself.
Unused bits must be RES0.
If the component is configurable, Arm recommends that this register reflects any changes to a
standard configuration.
DEVID is accessible as follows:
Default
RO
Configurations
Included in all implementations.
Attributes
A 32-bit register that returns an IMPLEMENTATION DEFINED value.
Field Descriptions
The DEVID bit assignments are:
31 0
IMPLEMENTATION DEFINED
Bits[31:0]
IMPLEMENTATION DEFINED.
Accessing DEVID
DEVID can be accessed at the following address:
Offset
0xFC8
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-55
ID022122 Non-Confidential
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Purpose
Indicates the capabilities of the component.
Usage constraints
This register is IMPLEMENTATION DEFINED for each part number and designer.
The entire 32-bit field can be used because the data width is determined by the component itself.
Unused bits must be RES0.
If the component is configurable, Arm recommends that this register reflects any changes to a
standard configuration.
DEVID1 is accessible as follows:
Default
RO
Configurations
Included in all implementations.
Attributes
A 32-bit register that returns an IMPLEMENTATION DEFINED value.
Field Descriptions
The DEVID1 bit assignments are:
31 0
IMPLEMENTATION DEFINED
Bits[31:0]
IMPLEMENTATION DEFINED.
Accessing DEVID1
DEVID1 can be accessed at the following address:
Offset
0xFC4
B2-56 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Purpose
Indicates the capabilities of the component.
Usage constraints
This register is IMPLEMENTATION DEFINED for each part number and designer.
The entire 32-bit field can be used because the data width is determined by the component itself.
Unused bits must be RES0.
If the component is configurable, Arm recommends that this register reflects any changes to a
standard configuration.
DEVID2 is accessible as follows:
Default
RO
Configurations
Included in all implementations.
Attributes
A 32-bit register that returns an IMPLEMENTATION DEFINED value.
Field Descriptions
The DEVID2 bit assignments are:
31 0
IMPLEMENTATION DEFINED
Bits[31:0]
IMPLEMENTATION DEFINED.
Accessing DEVID2
DEVID2 can be accessed at the following address:
Offset
0xFC0
Purpose
If the part number field is not recognized, a debugger can report the information that is provided by
DEVTYPE about the component instead.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-57
ID022122 Non-Confidential
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Usage constraints
DEVTYPE is accessible as follows:
Default
RO
Configurations
Included in all implementations.
Attributes
A 32-bit register that returns an IMPLEMENTATION DEFINED value.
Field Descriptions
The DEVTYPE bit assignments are:
31 8 7 4 3 0
Bits[31:8]
RES0.
SUB, bits[7:4]
Sub type for the component device type, as described in Table B2-9.
MAJOR, bits[3:0]
Major type for the component device type, as described in Table B2-9.
0x1-0x3 Reserved.
0x5-0xF Reserved.
0x4-0xF Reserved.
B2-58 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
0x2 Filter.
0x4-0xF Reserved.
0x5 Reserved.
0x7-0xF Reserved.
0x4-0xF Reserved.
0x2 DSP.
0x6-0xF Reserved.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-59
ID022122 Non-Confidential
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
0x6-0xF Reserved.
0x7-0xF Reserved - -
Accessing DEVTYPE
DEVTYPE can be accessed at the following address:
Offset
0xFCC
Purpose
A component can use this register to dynamically switch between functional mode and
integration mode.
In integration mode, topology detection is enabled. For more information, see Chapter B3
Topology Detection.
Usage constraints
After switching to integration mode and performing integration tests or topology detection,
reset the system to ensure correct behavior of CoreSight and other connected system
components.
ITCTRL is accessible as follows:
Default
RW
Configurations
Included in all implementations.
Attributes
A 32-bit register.
B2-60 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Field Descriptions
The ITCTRL bit assignments are:
31 1 0
RES0
IME
Bits[31:1]
RES0.
Accessing ITCTRL
ITCTRL can be accessed at the following address:
Offset
0xF00
B2.3.10 LSR and LAR, Software Lock Status Register and Software Lock Access Register
The characteristics of the Software lock registers are:
Purpose
The Software lock mechanism prevents accidental access to the registers of CoreSight components.
Software that is being debugged might accidentally write to memory used by CoreSight
components. Accidental accesses might disable those components, making the software impossible
to debug. The CoreSight programmers’ model includes a Lock Status Register, LSR, and a Lock
Access Register, LAR, to control software access to CoreSight components to ensure that the
likelihood of accidental access to CoreSight components is small.
Note
From CoreSight version 3.0 onwards, implementation of the Software lock mechanism that is
controlled by LAR and LSR is deprecated.
To ensure that the software being debugged can never access an unlocked CoreSight component, a
software monitor that accesses debug registers must unlock the component before accessing any
registers, and lock the component again before exiting the monitor.
Arm recommends that external accesses from a debugger are not subject to the Software lock, and
therefore that external reads of the LSR return zero. For information on how CoreSight components
can distinguish between external and internal accesses, see Debug APB interface memory map on
page D2-118.
A system can include several bus Requesters capable of accessing the same CoreSight component,
for example in systems that include several processors. In this case, it is possible for software
running on one processor, processor A, to accidentally access the component while it is being
programmed by a debug monitor running on another processor, processor B. Because the
component that is being accessed cannot distinguish between the two processors, processor A might
disable the component and cause problems for processor B. The probability of this occurring is low,
but must be considered if there are special circumstances that make this scenario more likely.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-61
ID022122 Non-Confidential
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Note
The claim tag cannot be used to manage accesses to the Software lock registers, because access to
the claim tag is subject to the Software lock mechanism.
Usage constraints
LSR and LAR are accessible as follows:
Default
LSR LAR
RO WO
Configurations
LSR is included in all implementations, and LSR.SLI indicates whether LAR is implemented.
Attributes
32-bit registers.
Field Descriptions
The LSR and LAR bit assignments are:
31 3 2 1 0
nTT
SLK
SLI
31 0
LSR, bits[31:3]
RES0.
Note
When present, the reset value of this bit is 1.
B2-62 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
CoreSight programmers’ model
B2.3 Component-specific registers for Class 0x9 CoreSight components
Note
Some components have two programmable views, one only visible from external tools and
the other visible from software running on-chip. In this case:
• For accesses from external tools, the Software lock mechanism is not required and
LSR.SLI and LSR.SLK both return a value of zero.
• For accesses from software running on-chip the Software lock is optional, and, when
implemented, LSR.SLI has the value 0b1 and LSR.SLK returns the status of the
Software lock.
Offset
LAR LSR
0xFB0 0xFB4
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B2-63
ID022122 Non-Confidential
CoreSight programmers’ model
B2.4 Component-specific registers for Class 0xF CoreLink, PrimeCell, and system components
B2.4 Component-specific registers for Class 0xF CoreLink, PrimeCell, and system
components
Components that have the value 0xF assigned to the CIDR1.CLASS field in the Component Identification Register
are CoreLink, PrimeCell, or system components. For details, see CIDR0-CIDR3, Component Identification
Registers on page B2-38.
CoreLink, PrimeCell, and system components are not related to the CoreSight system.
B2-64 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter B3
Topology Detection
This chapter describes the CoreSight topology detection registers. It contains the following sections:
• About topology detection on page B3-66.
• Requirements for topology detection signals on page B3-67.
• Combination with integration registers on page B3-68.
• Interfaces that are not connected or implemented on page B3-69.
• Variant interfaces on page B3-70.
• Documentation requirements for topology detection registers on page B3-71.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B3-65
ID022122 Non-Confidential
Topology Detection
B3.1 About topology detection
For the specification of the requirements for the topology detection signals for standard interfaces that are used by
Arm CoreSight components, see Chapter C7 Topology Detection at the Component Level. Interface vendors must
define the requirements for other interfaces, following the rules in Chapter D6 Topology Detection at the System
Level.
B3-66 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Topology Detection
B3.2 Requirements for topology detection signals
• For each topology detection input, it must be possible to read the state of that input.
• For each topology detection output, it must be possible to drive the state of that output without affecting other
topology detection signals.
Note
It is not necessary to implement topology detection registers on the programming interface for the component,
because this connectivity is described by the ROM Table.
Topology detection can be invasive. See Chapter D6 Topology Detection at the System Level.
• Implement a topology detection mode that isolates the topology detection signals.
• For each topology detection output, provide a register that sets the value of that output in topology detection
mode.
• For each topology detection input, provide a register that returns the value of that input in topology detection
mode.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B3-67
ID022122 Non-Confidential
Topology Detection
B3.3 Combination with integration registers
For components that implement integration registers, Arm recommends reusing these registers for topology
detection. Use the ITCTRL register to select both integration mode and topology detection mode. See also ITCTRL,
Integration Mode Control Register on page B2-60.
B3-68 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Topology Detection
B3.4 Interfaces that are not connected or implemented
If the component requires that the interface is still usable when connected to a non-CoreSight component that is not
capable of topology detection, the programmers’ model must indicate whether the interface is connected or not.
If the component can only be connected to other CoreSight components, the tools can assume that the interface does
not exist if they fail to find any connected interfaces during topology detection. In this case, the programmers’ model
does not need to indicate whether the interface is connected, but if it does, some time can be saved during topology
detection.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B3-69
ID022122 Non-Confidential
Topology Detection
B3.5 Variant interfaces
The connections between interfaces can only change if all the following conditions apply:
• The programmers’ model of the affected component controls the configuration by selecting between several
alternative connections for that interface.
• The number of valid alternative connections that are indicated in the programmers’ model, which is used to
reduce the autodetection time, is less than 32, and remains constant during switching.
If these conditions are too stringent for your application, a separate CoreSight component that multiplexes the
connections is required. Topology detection can then be performed between this new component and the
components it is connected to.
When a switch has occurred, topology detection must be repeated to determine the new connections. Because
topology detection can be invasive, Arm recommends performing topology detections for all configurations that are
likely to occur in advance.
• A register that indicates that there are n inputs to select from. This register can be read by a debugger to
determine which values of the selection register are valid. The register is tied to the value n outside the
component.
CoreSight component
n D Q Number of
valid
alternatives
Q D Selection
register
Input 1
...
D Q Variant
Input n
connection
B3-70 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Topology Detection
B3.6 Documentation requirements for topology detection registers
• Its name, using the format that is listed in Chapter D6 Topology Detection at the System Level.
• How to control the topology detection signals listed for that interface in Chapter D6 Topology Detection at
the System Level.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. B3-71
ID022122 Non-Confidential
Topology Detection
B3.6 Documentation requirements for topology detection registers
B3-72 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Part C
CoreSight Reusable Component Architecture
Chapter C1
About the Reusable Component Architecture
The CoreSight reusable component architecture specifies the rules that enable a component to be used with other
components that use the CoreSight architecture, and defines the physical interfaces of the components so that they
can be connected together easily.
Note
Unlike the visible component architecture, implementing the reusable component architecture is not mandatory.
Omitting the reusable component architecture from a self-contained system does not compromise its compatibility
with debuggers, but prevents it from being used with other CoreSight components.
If a component does not require the functionality that is provided by a particular interface, implementing the
interface is optional. For example, a component with no programmable registers does not need to implement the
AMBA APB interface.
It is possible to create a component that performs several functions internally, while presenting only one set of
reusable component interfaces. Doing so allows implementing pre-built platforms with an integrated CoreSight
infrastructure, enabling the platform to be integrated into a larger system as if it were a single CoreSight component.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C1-75
ID022122 Non-Confidential
About the Reusable Component Architecture
C1-76 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter C2
AMBA APB and ATB Interfaces
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C2-77
ID022122 Non-Confidential
AMBA APB and ATB Interfaces
C2.1 AMBA APB interface
For more information, see the Arm® AMBA® APB Protocol Specification.
Some legacy debug components implement a JTAG TAP Controller to access their functionality.
The bus that connects all CoreSight components is referred to as the Debug APB interface.
Note
• The signal suffix DBG indicates that the Debug APB interface is used to access CoreSight components.
• The clamp value is the value that an output must be clamped to when the component is powered down or
disabled.
For more information, see the Arm® AMBA® APB Protocol Specification.
Direction
Name Description
Clamp
Requester Completer
value
PADDRDBG[31:2] Output Input 0 This bus indicates the address of the transfer.
It is not necessary to implement unused
bits.a
C2-78 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
AMBA APB and ATB Interfaces
C2.1 AMBA APB interface
Direction
Name Description
Clamp
Requester Completer
value
Chapter B2 CoreSight programmers’ model describes the model compatible with a 32-bit AMBA APB interface.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C2-79
ID022122 Non-Confidential
AMBA APB and ATB Interfaces
C2.2 AMBA ATB interface
Every CoreSight component or platform with trace capabilities has an AMBA ATB interface, and is either a
Transmitter or Receiver on the AMBA ATB:
For more information, see the Arm® AMBA® ATB Protocol Specification.
C2-80 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter C3
Event Interface
A CoreSight system uses the event interface to transfer events between components. It is most commonly used for
communicating cross-trigger events between debug components and a Cross Trigger Interface (CTI).
EVENTCLK Clock. This signal is typically mapped onto an existing clock signal.
EVENTRESETn Reset. This signal is typically mapped onto an existing reset signal.
EVENT This signal indicates the event, and is typically mapped onto a signal of a different name that
describes its purpose.
An event is indicated by a rising edge on EVENT. Therefore an event can be signaled at
most once every two EVENTCLK cycles.
If the event has a duration, the falling edge on EVENT indicates its completion.
The interface defines no back-pressure mechanism, so events that are close together might merge. For example, if
the event interface crosses an asynchronous boundary to a slower clock domain, events in close succession might
merge into a single event.
The source of an event interface is known as an event interface transmitter. The destination of an event interface is
known as an event interface receiver.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C3-81
ID022122 Non-Confidential
Event Interface
C3-82 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter C4
Channel interface
This chapter describes the channel interface. It contains the following sections:
• About the channel interface on page C4-84.
• Channels on page C4-86.
• Channel interface signals on page C4-87.
• Channel connections on page C4-88.
• Synchronous and asynchronous conversions on page C4-89.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C4-83
ID022122 Non-Confidential
Channel interface
C4.1 About the channel interface
• If two or more processors are required to stop at the same time, they must signal to each other when they have
stopped.
• To perform advanced profiling functions, profiling events from many different sources in the system must be
shared.
Figure C4-1 shows a channel interface that connects multiple CTIs, which are provided by CoreSight technology.
The channel interface can be supported directly by a CoreSight component, if necessary.
Platform
Events Events
CoreSight component
Note
When using the CTI:
• Some systems require more event signals than are supported by a CTI.
• In a platform-oriented system, it is necessary to connect event signals together within the platform and export
only a set of standard interfaces for extension at higher levels.
The channel interface is designed to enable components to communicate events with minimal overhead. However,
if multiple events are presented to the channel interface in close succession, they might be interpreted as a single
event. Figure C4-2 on page C4-85 illustrates this limitation for a situation where events that are generated in a fast
clock domain, Clock A, are passed to a slower clock domain, Clock B. In Clock A, two separate events can be seen,
but these events are too close together for Clock B, resulting in Clock B interpreting them as a single event.
C4-84 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Channel interface
C4.1 About the channel interface
Clock A
Channel A value
Clock B
Channel B value
This limitation makes the channel interface unsuitable for counting events that occur in rapid succession. An
example of this type of operation is counting the number of instructions that are executed by a processor over time.
• Transmission of an event that happens only once, for example a trigger signal to an ETB or TPIU to end trace
capture.
• Transmission of a signal subject to handshaking using another channel in the channel interface.
• Transmission of events to be counted that do not occur close together, for example the number of times a
peripheral causes an interrupt.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C4-85
ID022122 Non-Confidential
Channel interface
C4.2 Channels
C4.2 Channels
The channel interface comprises two types of signals:
• Channel outputs, which transmit events that are generated by a component.
• Channel inputs, which listen for events that are generated by other components.
A component uses its channel outputs to transmit events to the channel inputs of all components in the system,
except its own.
The interface supports an IMPLEMENTATION DEFINED number of channels. Arm recommends that at least four
channels are implemented.
Components must treat all channels identically. It must be possible for the debugger to control which channels are
used for which purposes.
If a system consists of subsystems with different numbers of channels, and there is a requirement to pass events
between these subsystems, the following rules must be observed:
• A subset of the channels from the subsystem with the greater number of channels is connected to all the
channels in the other subsystem.
• The set of channels that is connected is always a contiguous set, starting from channel 0.
For example, in a system where subsystem A has eight channels and subsystem B has four channels, channels 0-3
from subsystem A are connected to channels 0-3 in subsystem B. Channels 4-7 are not connected to subsystem B.
C4-86 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Channel interface
C4.3 Channel interface signals
Clamp
Name Direction Description
value
Figure C4-3 shows how the asynchronous interface uses a basic four-phase handshaking protocol. The same
protocol is used by CHOUT and CHOUTACK.
CHIN[m]
CHINACK[m]
Table C4-2 shows the set of signals that are required by a synchronous channel interface.
Clamp
Name Direction Description
value
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C4-87
ID022122 Non-Confidential
Channel interface
C4.4 Channel connections
Component 1 Component 2
CHOUT[n-1:0] CHIN[n-1:0]
CHOUTACK[n-1:0] CHINACK[n-1:0]
CHIN[n-1:0] CHOUT[n-1:0]
CHINACK[n-1:0] CHOUTACK[n-1:0]
Figure C4-5 shows how to connect two synchronous channel interfaces together.
Component 1 Component 2
CHCLK CHCLK
CHIN[n-1:0] CHOUT[n-1:0]
CHOUT[n-1:0] CHIN[n-1:0]
• Only the input channels, which is appropriate for components that do not generate events, but have to react
to events from other components.
• Only the output channels, which is appropriate for components that generate events, but do not have to react
to events from other components.
If a component does not support both sets of channels, the unsupported outputs must be clamped as shown in
Table C4-1 on page C4-87 and Table C4-2 on page C4-87.
If a component supports both input and output channels, the component must not reflect events on an input channel
to the corresponding output channel.
C4-88 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Channel interface
C4.5 Synchronous and asynchronous conversions
Asynchronous Synchronous
interface interface
CHOUT
CHIN
Q D
CHOUTACK
Synchronizer
CHCLK
CHIN CHOUT
Synchronizer
CHINACK
Implementing a synchronous to asynchronous converter increases the likelihood of events being merged as
described in About the channel interface on page C4-84 on page C4-84.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C4-89
ID022122 Non-Confidential
Channel interface
C4.5 Synchronous and asynchronous conversions
C4-90 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter C5
Authentication Interface
This chapter defines the system requirements that control access to debug and trace peripherals, and how those
requirements are met by devices that comply with the CoreSight architecture. It contains the following sections:
• About the authentication interface on page C5-92.
• Definitions of Secure, hypervisor, and invasive debug on page C5-93.
• Authentication interface signals on page C5-94.
• Authentication rules on page C5-95.
• User mode debugging on page C5-100.
• Control of the authentication interface on page C5-101.
• Exemptions from implementing the authentication interface on page C5-102.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C5-91
ID022122 Non-Confidential
Authentication Interface
C5.1 About the authentication interface
• To prevent unauthorized people from modifying the behavior of the system, for example to prevent a mobile
phone from reporting a fake identification number to the network. This requires authenticated access to
invasive debug functions such as traditional core debug, but permits non-invasive tracing and profiling
functions.
• To prevent unauthorized people from reverse engineering a product or discovering secrets that are stored
within it, for example to read encryption keys. This requires authenticated access to all debug and trace
functions.
The authentication interface does not prevent accidental access of debug functionality by rogue code, making a
system impossible to debug. This type of access is managed by the Software lock mechanism that is optional in all
CoreSight components, see LSR and LAR, Software Lock Status Register and Software Lock Access Register on
page B2-61.
C5-92 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Authentication Interface
C5.2 Definitions of Secure, hypervisor, and invasive debug
Using this definition, debug operations that monitor the time that is taken by a Secure routine are Non-secure debug
operations, because the time taken can be measured by combining off-chip timing information with Non-secure
on-chip event generation information. Operations that affect the time that is taken by a Secure routine are considered
Secure debug operations.
Examples include any changes to the contents of memory and insertion of instructions into a processor pipeline, but
not necessarily the act of changing the number of cycles that are taken to perform an operation, unless the number
of cycles is defined architecturally.
An implementation can treat an IMPLEMENTATION DEFINED set of effects that change the observable, but not the
defined behavior of the system, as invasive. Examples include most effects that change the number of cycles that
are taken to perform an operation.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C5-93
ID022122 Non-Confidential
Authentication Interface
C5.3 Authentication interface signals
Signal Description
C5-94 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Authentication Interface
C5.4 Authentication rules
1. Synchronous interfaces must sample all signals synchronously, on the rising edge of AUTHCLK. Typically,
AUTHCLK is mapped onto another clock signal. It is IMPLEMENTATION DEFINED when a change of any of
the authentication signals takes effect. For example, a processor core might ignore changes to the
authentication signals while in Debug state. By extension, it is possible that a component only observes the
signals on reset, but it is recommended that more frequent changes are permitted.
Asynchronous interfaces must sample all signals asynchronously.
Arm recommends that processors implementing the authentication interface specify a sequence of
instructions that, when executed, wait until changes to the authentication signals have taken effect before
continuing.
3. If NIDEN is LOW and DBGEN is LOW, neither invasive nor non-invasive debug is permitted.
4. If NIDEN is LOW and DBGEN is HIGH, both invasive and non-invasive debug are permitted. Arm
recommends that these signals are not driven in this way.
To ensure that a non-invasive component is correctly enabled, it must import both DBGEN and NIDEN, and
internally OR the result.
6. If SPNIDEN is LOW and SPIDEN is LOW, all Secure debug is not permitted.
7. If SPNIDEN is LOW and SPIDEN is HIGH both invasive and non-invasive Secure debug are permitted.
Arm recommends that these signals are not driven in this way. To ensure that a non-invasive component is
correctly enabled, it must import SPIDEN in addition to SPNIDEN, and internally OR the result.
Note
Rules 5 to 7 are the equivalent of rules 2 to 4, but used for Secure debug. They are useful for systems that separate
Secure and Non-secure data, for example systems implementing Arm Security Extensions. Secure non-invasive
debug is any debug operation that enables a debugger to read Secure data. Secure invasive debug is any debug
operation that enables a debugger to change Secure data. If a debug component supports Secure non-invasive debug
functions by implementing the signal SPNIDEN, it must also observe the Secure invasive signal, SPIDEN.
1. If SPIDEN is HIGH and DBGEN is LOW, invasive debug is not permitted. Arm recommends that these
signals are not driven in this way. To ensure that a component that supports Secure invasive debug is correctly
controlled, Arm recommends importing both DBGEN and SPIDEN, and using the result of an internal AND
operation with the imported signals as operands for authentication.
2. If SPNIDEN is HIGH and NIDEN is LOW, debugging is not permitted. Arm recommends that these signals
are not driven in this way. To ensure that a component that supports Secure non-invasive debug is correctly
controlled, it must import NIDEN in addition to SPNIDEN, and internally AND the result.
4. If HNIDEN is LOW and HIDEN is LOW, all hypervisor debug is not permitted.
5. If HNIDEN is LOW and HIDEN is HIGH both invasive and non-invasive hypervisor debug are permitted.
Arm recommends that these signals are not driven in this way. To ensure that a non-invasive component is
correctly enabled, it must import HIDEN in addition to HNIDEN, and internally OR the result.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C5-95
ID022122 Non-Confidential
Authentication Interface
C5.4 Authentication rules
8. If HIDEN is HIGH and DBGEN is LOW, invasive debug is not permitted. Arm does not recommend that
these signals are driven in this way. To ensure that a component that supports hypervisor invasive debug is
correctly controlled, Arm recommends importing both DBGEN and HIDEN, and using the result of an
internal AND operation with the imported signals as operands for authentication.
9. If HNIDEN is HIGH and NIDEN is LOW, debugging is not permitted. Arm does not recommend that these
signals are driven in this way. To ensure that a component that supports Secure non-invasive debug is
correctly controlled, it must import NIDEN in addition to HNIDEN, and internally AND the result.
10. If the value of any of the authentication signals changes, it is IMPLEMENTATION DEFINED when it takes effect.
Pipeline effects mean that it is not possible for these signals to be precise. Arm recommends not to use them
to enable and disable debugging around specific regions of code without a full understanding of the pipeline
behavior of the system.
11. The authentication interface is extended to include two additional signals to define invasive debug for Root
and Realm:
• RLPIDEN.
• RTPIDEN.
Note
Equivalent signals that define when Root and Realm non-invasive debug are permitted are not defined.
Root non-invasive debug is only enabled when Root invasive debug is enabled.
Realm non-invasive debug is only enabled when Realm invasive debug is enabled.
See Root and Realm signals on page C5-99.
• SPIDEN, DBGEN, SPNIDEN, and NIDEN enable Secure invasive debug, Non-secure invasive debug,
Secure non-invasive debug, and Non-secure non-invasive debug, respectively.
• Because invasive functionality requires non-invasive functionality to function correctly, if invasive debug is
enabled, non-invasive debug must also be enabled.
The following signal combinations are not permitted and behave as if RLPIDEN == 0:
• DBGEN == 0 & RLPIDEN == 1
The following signal combinations are not permitted and behave as if RTPIDEN == 0:
• DBGEN == 0 & RTPIDEN == 1
• RTPIDEN == 1 & RLPIDEN == 0
Table C5-2, Table C5-3 on page C5-97, Table C5-4 on page C5-97, and Table C5-5 on page C5-97 show the
equations that define whether a particular level of debug functionality is permitted for a debug component that
supports the authentication interface:
C5-96 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Authentication Interface
C5.4 Authentication rules
The SPIDEN and SPNIDEN signals have no dependencies on the HIDEN and HNIDEN signals, and conversely.
Table C5-6 shows the restrictions for SPIDEN and SPNIDEN and their effects. Numbers in brackets indicate the
rules that apply in each case, S indicates Secure, and NS indicates Non-secure.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C5-97
ID022122 Non-Confidential
Authentication Interface
C5.4 Authentication rules
Table C5-6 Authentication signal restrictions for SPIDEN and SPNIDEN (continued)
a. These signal combinations were permitted in previous versions of the CoreSight architecture but are deprecated from
v2.0 onwards.
Table C5-7 shows the restrictions for HIDEN and HNIDEN and their effects. Numbers in brackets indicate the
rules that apply in each case, H indicates hypervisor, and NH indicates non-hypervisor.
C5-98 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Authentication Interface
C5.4 Authentication rules
RTPIDEN effects are not permitted to change except when the system is in RME system reset.
To ensure an entire system observes the same value of RTPIDEN at all times, Arm recommends that the system
samples RTPIDEN on leaving RME system reset and keeps this sampled signal stable while the system is not in
RME system reset. The sampled signal is distributed to all components which consume RTPIDEN.
A component which consumes RTPIDEN might choose to only sample RTPIDEN when leaving reset. However,
this is not mandatory.
RLPIDEN effects are not permitted to change after RMSD firmware is loaded.
To ensure an entire system observes the same value of RLPIDEN at all times, Arm recommends that the system
samples RLPIDEN on leaving RME system reset and keeps this sampled signal stable while the system is not in
RME system reset. However, an exception to this is MSD firmware explicitly permitting RLPIDEN to change. If
MSD firmware permits RLPIDEN to change, a new RLPIDEN value is sampled under control of MSD firmware.
The sampled signal is distributed to all components which consume RLPIDEN.
A component that consumes RLPIDEN might choose to only sample RLPIDEN when leaving reset. This is not
mandatory. Such a component will be unable to observe changes in RLPIDEN after the component has left reset.
A system must ensure that the sequencing of resets is appropriate to ensure that the sampled RTPIDEN and
RLPIDEN are further sampled by the components appropriately.
LEGACY_TZ_EN
A component might operate in a system that can be configured to operate with or without RME. Arm recommends
the component has an input signal, LEGACY_TZ_EN, when a component needs to be aware of the Root or Realm
debug authentication status. LEGACY_TZ_EN defines whether the component is operating with RME enabled or
disabled.
When LEGACY_TZ_EN is 1, RTPIDEN and RLPIDEN are ignored and the component behaves as if Root and
Realm debug are disabled.
Note
A component is permitted to indicate support for RME when LEGACY_TZ_EN is 1. However, the component
behaves as if RME is disabled, and Root debug and Realm debug are disabled.
LEGACY_TZ_EN is not permitted to change value after RME system reset has been deasserted. Arm recommends
that LEGACY_TZ_EN is only sampled as the component leaves reset.
Note
LEGACY_TZ_EN is not part of the authentication interface.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C5-99
ID022122 Non-Confidential
Authentication Interface
C5.5 User mode debugging
Figure C5-1 shows how the signals of the CoreSight authentication interface interact with the two registers that are
controlled by the Secure Operating System (OS), SUIDEN and SUNIDEN:
• In all other cases, the permissions that are represented by all the boxes bounding each level of debug
functionality must be granted before that level of debug functionality is enabled.
DBGEN NIDEN
Pin control
a
Indicates control by the Secure operating system
C5-100 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Authentication Interface
C5.6 Control of the authentication interface
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C5-101
ID022122 Non-Confidential
Authentication Interface
C5.7 Exemptions from implementing the authentication interface
C5-102 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter C6
Timestamp Interface
A CoreSight system uses the wide timestamp interface to distribute a time value to debug components. Typically
this time value is included in a trace stream to permit correlation of events in multiple trace streams.
Table C6-1 shows the signals that are defined for the timestamp interface.
Name Description
If a system with multiple components implements the timestamp interface, the same timestamp is used by all
components. If systems use different clocks or different timestamp distribution mechanisms, there might be skew
between the timestamp values that are observed by the components.
Some components might not implement a full 64-bit timestamp. These components use an IMPLEMENTATION
DEFINED subset of the 64-bit timestamp value. Arm recommends using the subset that provides the largest set of
unique observable timestamp values. This subset might depend on the clock speed of the component.
Arm recommends that new designs share the same source of time for both PEs and CoreSight components.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C6-103
ID022122 Non-Confidential
Timestamp Interface
Note
Previous versions of this specification recommended that the timestamp resolution is at least 10% of the fastest
processor in the system. This recommendation has been removed. However, Arm recommends that the timestamp
resolution is reasonably high to allow for fine-grained correlation of traces.
The source of a timestamp is known as a timestamp Transmitter. The destination of a timestamp is known as a
timestamp Receiver.
C6-104 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter C7
Topology Detection at the Component Level
This chapter describes how to detect components that are connected to the AMBA ATB interface and where they
are logically located in any corresponding hierarchical connection. It contains the following sections:
• About topology detection at the component level on page C7-106.
• Interface types for topology detection on page C7-107.
• Interface requirements for topology detection on page C7-109.
• Signals for topology detection on page C7-110.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C7-105
ID022122 Non-Confidential
Topology Detection at the Component Level
C7.1 About topology detection at the component level
C7-106 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Topology Detection at the Component Level
C7.2 Interface types for topology detection
The following conditions apply to the interfaces used for topology detection:
• The list of interfaces must be defined for each block for the purposes of topology detection.
• Not all signals that are used in the implementation must be exposed in an interface, provided the signals that
are not exposed are irrelevant for topology detection.
Programmable
Interfaces
component
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C7-107
ID022122 Non-Confidential
Topology Detection at the Component Level
C7.2 Interface types for topology detection
Programmable
Interfaces
component
C7-108 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Topology Detection at the Component Level
C7.3 Interface requirements for topology detection
If the interface is bidirectional, each interface to be tested must in turn be treated as a Transmitter while the other
interfaces of that type are treated as Receiver. See Chapter D6 Topology Detection at the System Level.
For signals that must be controllable, it must be possible to independently control the value of outputs, and read the
value of inputs. See Chapter B3 Topology Detection.
Usually each Transmitter interface specifies one output, and the Receiver interface specifies the corresponding
input. When choosing a signal, observe the conditions that are described in the following section:
• Intermediate non-programmable components.
• Multi-way connections.
Sufficient signals must be controllable to cause the arbitration logic to route between the Transmitter and Receiver.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. C7-109
ID022122 Non-Confidential
Topology Detection at the Component Level
C7.4 Signals for topology detection
a. Using DBGACK for topology detection is restricted by the fact that in some Arm processors it
cannot be controlled, or it can only be controlled from a JTAG debugger. To perform topology
detection on a processor that has this restriction, use a different IMPLEMENTATION DEFINED
controllable signal, or the Device Affinity registers, DEVAFF0-DEVAFF1, which indicate the
association of a processor with the ETM.
b. The event interface is defined for miscellaneous point-to-point connections that carry a one-bit
signal. An event interface might implement an acknowledge signal, that, if implemented, must be
controllable. To implement the event interface, substitute EVENT and EVENTACK for the
equivalent signals in the appropriate interface.
Table C7-3 lists the signals that an interface must implement to support topology detection between Transmitters
and Receivers of key interface types. Use the table with the algorithm given in Detection algorithm on page D6-155.
For the full specification of a signal, see the relevant interface specification.
C7-110 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Part D
CoreSight System Architecture
Chapter D1
About the System Architecture
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D1-113
ID022122 Non-Confidential
About the System Architecture
D1-114 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter D2
System Considerations
This chapter describes system aspects that must be considered when integrating CoreSight components into a
system. It has the following sections:
• Clock and power domains on page D2-116 describes the requirements for the clock and power domain
structure that is exposed to debuggers.
• Control of authentication interfaces on page D2-117 describes the requirements for the signals in the
authentication interface.
• Memory system design on page D2-118 describes how to expose CoreSight registers to system software.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D2-115
ID022122 Non-Confidential
System Considerations
D2.1 Clock and power domains
System domain This domain comprises most non-debug functionality. The clock frequencies in this domain
can be asynchronous to the other domains and can vary over time in response to varying
performance requirements. The clocks can be stopped, and the power can be removed,
leading to the loss of all state information.
Debug domain This domain comprises most debug functionality. When debug functionality is not required,
the power can be removed or the clocks can be stopped to reduce power consumption.
Always-on domain This domain comprises the power controller and the interface to the debugger. The power
is never removed, even when the device is dormant, which enables the debugger to connect
to the device even when it is powered down.
When deviating from the default clock and power domains, observe the following rules:
• When implementing extra clock and power domains by subdividing one of the default clock and power
domains, make sure that the clock and power domains respond appropriately to requests made using the
debug interface. For example, an implementation can have two system clock domains, as long as both
domains are permanently accessible whenever a System Power Up request is made.
• When implementing fewer clock and power domains by combining two or more of the default clock and
power domains, make sure that all requests made using the debug interface are operational. For example,
when combining the system and debug power domains, the combined domain must always be powered up
whenever a System Power Up request or a Debug Power Up request is made.
The debugger can use the debug interface to make the following requests to the system:
• Power up everything in the system domain. When this request is made, all logic in the system domain must
be kept permanently powered up, and be continuously accessible to the debugger.
• Power up everything in the debug domain. When this request is made, all logic in the debug domain must be
kept permanently powered up, and be continuously accessible to the debugger.
• Reset everything in the debug domain. When this request is made, all logic in the debug domain must be reset
to its initial state.
The debugger interface is managed by an implementation of the ADI. For more information, see the appropriate
CoreSight Technical Reference Manual.
D2-116 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
System Considerations
D2.2 Control of authentication interfaces
• Tied LOW. This method is most appropriate for production systems where the specified debug functionality
is not required, and prevents in-the-field debugging. There is usually an alternative development chip with
the same functionality enabled.
• Tied HIGH. This method is most appropriate for prototype or development systems where authentication is
not required.
• Connected to a fuse that is blown in production parts to disable debug functionality, which prevents
in-the-field debugging.
• Driven by a custom authentication module, that unlocks debug functionality after a successful authentication
sequence. This method provides the most flexibility. In systems where high security is required, Arm
recommends using a challenge-response mechanism that is based on an on-chip random number generator or
a hardware key unique to that device.
When secure debugging is enabled, secure operations are visible to the outside world, and sometimes to software
running in the Non-secure world.
Arm recommends that devices are split into development and production devices:
• Development devices can have secure debugging enabled by authorized developers. All secure data must be
replaced by test data suitable for development purposes, where losses are minimal if the test data is disclosed.
• Production devices can never have secure debugging enabled. These devices are loaded with the real secure
data.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D2-117
ID022122 Non-Confidential
System Considerations
D2.3 Memory system design
• The component implements the Software lock mechanism that is described in the programmers’ model, see
LSR and LAR, Software Lock Status Register and Software Lock Access Register on page B2-61.
Note
From v3.0 onwards, implementation of the Software lock is deprecated. If a component implements the
Software lock, but is accessed using an interconnect that does not support indicating the difference between
external and internal accesses, Arm strongly recommends that the component is configured as follows:
— LSR is RAZ to indicate that the Software lock mechanism is not implemented. See also LSR and LAR,
Software Lock Status Register and Software Lock Access Register on page B2-61.
— PADDRDBG[31] is tied to HIGH to force all accesses to be interpreted as external accesses. See also
AMBA APB interface signals on page C2-78.
For the limited set of components that must differentiate between external and internal accesses, Arm recommends
that two views of the component are provided in the memory system, one for internal accesses, and one for external
accesses:
• The two views can be located anywhere in the Debug APB interface address space.
• Arm strongly recommends that a ROM Table provides a pointer only to the external view.
• Arm recommends that one of the address bits is used to differentiate the views.
An example of this configuration is shown in Figure D2-1, where a 4KB component of a PE at address
0xB00000000 uses two adjacent views at addresses 0x00002000 and 0x00003000 in the APB memory map.
Accesses to addresses between 0x00002000 and 0x00002FFF, for which address bit[12] has a value of 0b0, are
external accesses, and accesses to addresses between 0x00003000 and 0x00003FFF, for which address bit[12]
has a value of 0b1, are internal accesses.
Other Unused
internal access
Component N (int) 8KB Component C (int) 0x00003000-0x00003FFF: bit [12] is 0b1 for int
4KB Component N
external access Component N (ext) Component C (ext) 0x00002000-0x00002FFF: bit [12] is 0b0 for ext
Other Unused
0xB0000000 0x00000000
Component Processor Memory Map Debug APB
Figure D2-1 Example of an AMBA APB interface memory map for a component with external and internal views
Note
From v3.0 onwards, the use of PADDRDBG[31] to split the memory map into two 2GB segments to indicate the
difference between external and internal accesses is deprecated. An older implementation having its external and
internal views 2GB apart can be regarded as a special case of a version 3.0 implementation: one that uses address
bit[31] to differentiate between external and internal accesses.
If a component requires more than one view, and those views are not related to the external and internal views
described in this section, the arrangement of those views in the memory system is IMPLEMENTATION DEFINED.
D2-118 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
System Considerations
D2.3 Memory system design
Examples of implementations of a system with three components are shown in Figure D2-2 and Figure D2-3 on
page D2-120:
• In the example that is shown in Figure D2-2, one of the components, Component C, requires differentiation
between external and internal accesses. The component provides two adjacent views allowing external
accesses at addresses for which bit[12] equals 0b0, and internal accesses at addresses for which bit[12] equals
0b1.
• In the example that is shown in Figure D2-3 on page D2-120, all three components require differentiation
between external and internal accesses. As in the example that is shown in Figure D2-2, address bit[12] is
used to differentiate between external and internal accesses, leading to a configuration where the external
views are interleaved with the internal views.
Other
ROM table
pointers
Other
Unused
ROM table
pointers
Debug APB
Other
Other
Processor 2
Memory Map
Figure D2-2 Example that includes one component with external and internal views
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D2-119
ID022122 Non-Confidential
System Considerations
D2.3 Memory system design
Other
ROM table
pointers
Other
Unused
Processor 1
Memory Map 0x00005000-0x00005FFF Component C (int) bit [12] is 0b1 for int
0x00004000-0x00004FFF Component C (ext) bit [12] is 0b0 for ext
Other 0x00003000-0x00003FFF Component B (int) bit [12] is 0b1 for int
0x00002000-0x00002FFF Component B (ext) bit [12] is 0b0 for ext
ROM table 0x00001000-0x00001FFF Component A (int) bit [12] is 0b1 for int
pointers 0x00000000-0x00000FFF Component A (ext) bit [12] is 0b0 for ext
Other
Unused
Component C (int) 0xA0005000-0xA0005FFF
8KB
Component C (ext) 0xA0004000-0xA0004FFF Debug APB
Component B (int) 0xA0003000-0xA0003FFF
8KB
Component B (ext) 0xA0002000-0xA0002FFF
Component A (int) 0xA0001000-0xA0001FFF
8KB
Component A (ext) 0xA0000000-0xA0000FFF
Other
Processor 2
Memory Map
Figure D2-3 Example that includes three components with external and internal views
Note
Do not prevent Non-secure software from accessing the registers of CoreSight components, even if those
components can debug secure software. Doing so seriously restricts debugging of Non-secure software.
For system bus transaction Requesters that support privileged and unprivileged modes, Arm recommends the
following:
• If the Requester does not have an MMU or MPU, the system prevents access to the CoreSight components
by unprivileged software.
• If the Requester does have an MMU or MPU, the MMU or MPU is used to prevent access to the CoreSight
components by unprivileged software.
D2-120 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter D3
Physical Interface
This chapter describes the external pin interface, timing, and connector type that is required for the trace port on a
target system. It contains the following sections:
• Arm JTAG 20 on page D3-122.
• CoreSight 10 and CoreSight 20 connectors on page D3-124.
• Arm MICTOR on page D3-128.
• Target Connector Signal details on page D3-133.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D3-121
ID022122 Non-Confidential
Physical Interface
D3.1 Arm JTAG 20
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
Table D3-1 shows the Arm JTAG 20 pinout as used on the target board.
1 VTREF
2 NC
3 nTRST
4 GND
5 TDI
6 GND
7 TMS/SWDIO
8 GND
9 TCK/SWCLK
10 GND
11 RTCK
12 GND
13 TDO/SWO
14 GND
15 nSRST
16 GND
17 DBGRQ/TRIGIN
D3-122 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Physical Interface
D3.1 Arm JTAG 20
18 GND
19 DBGACK/TRIGOUT
20 GND
See Target Connector Signal details on page D3-133 for a description of the signals in Table D3-1 on page D3-122.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D3-123
ID022122 Non-Confidential
Physical Interface
D3.2 CoreSight 10 and CoreSight 20 connectors
This section describes 10-way and 20-way connectors that are mounted on debug target boards. These connectors
are specified as 0.050 inch pitch two-row pin headers, Samtec FTSH or equivalent. For more information, see the
Samtec website, www.samtec.com.
The connectors are grouped into compatible sets according to the functions they support. Some targets support
communication by both SWD and JTAG using the SWJ-DP block to switch between protocols.
Note
Some of the tables in this section have a column that is named MICTOR, which lists the equivalent pin numbers on
a CoreSight-compatible Matched Impedance Connector (MICTOR) connector for the named CoreSight pin. A
target can feature both CoreSight and MICTOR connectors, where the signals are connected in parallel as suggested
by the pinout tables. This configuration enables the target to be debugged using either physical connector.
1 VTref 11 Gnd/TgtPwr+Cap
2 TMS/SWDIO 12 TraceClk/RTCK
3 GND 13 Gnd/TgtPwr+Cap
4 TCK/SWCLK 14 TraceD0/SWO
5 GND 15 GND
6 TDO/SWO/EXTa/TraceCtl 16 TraceD1/nTRST
7 Key 17 GND
8 TDI/EXTb 18 TraceD2/TrigIn
9 GNDDetect 19 GND
10 nSRST 20 TraceD3/TrigOut
See Target Connector Signal details on page D3-133 for a description of the signals in Table D3-2.
The following sections describe the use of pins 6, 8, 11, and 13:
• EXTa and EXTb pins on page D3-125.
• GND/TgtPwr+Cap pins on page D3-125.
D3-124 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Physical Interface
D3.2 CoreSight 10 and CoreSight 20 connectors
GND/TgtPwr+Cap pins
There are two usage options for these pins:
Target boards
Standard target boards can connect these two pins directly to signal ground, GND.
Some special target boards, for example, boards that are used for evaluation or demonstration
purposes, can use these pins to supply power to the target board. In this case, the target board must
include capacitors between each of the pins and signal ground. The capacitors must be situated
extremely close to the connector so that they maintain an effective AC ground, that is, high
frequency signal return path. Typical values for the capacitors are 10nF.
Debug equipment
Debug communication equipment that is designed to work with special valuation or demonstration
target boards provides an operating current, typically up to 100mA, at a target-specific supply
voltage, for example, 3.3V, 5V, or 9V. Arm recommends that the debug equipment includes some
protection when it is connected to standard target boards that have connected these pins directly to
GND, for example, a current limiting circuit. This debug equipment must include capacitors
between each of these power pins and signal ground. The capacitors must be situated extremely
close to the connector so that they maintain an effective AC ground, ensuring a high frequency
signal return path. Typical values for the capacitors are 10nF.
Standard debug communication equipment can connect these pins directly to GND. It is also
possible for these pins to have only a high frequency signal return path to ground, using 10nF
capacitors. This option is also compatible in the unlikely case where a target board has a connection
between the debug connector TgtPwr pins, but is powered from another source.
The pinouts are arranged to facilitate dynamic switching between the protocols.
Note
SWD is the preferred protocol for debugging because it provides more data bandwidth over fewer pins, which
increases the bandwidth that is available to application functions. JTAG can be used where the target is
communicating with a tool chain that does not support SWD, or with test tools performing board-level boundary
scan testing, where it might be acceptable to sacrifice the functional pins multiplexed with JTAG.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D3-125
ID022122 Non-Confidential
Physical Interface
D3.2 CoreSight 10 and CoreSight 20 connectors
Table D3-3 shows the CoreSight 10 for targets using SWD or JTAG for debug communication, and includes an
optional SWO signal for conveying application and instrumentation trace.
VTref 1 12 VTref 1 12
SWDIO 2 17 TMS 2 17
GND 3 - GND 3 -
SWCLK 4 15 TCK 4 15
GND 5 - GND 5 -
SWO 6 11 TDO 6 11
Key 7 - Key 7 -
NC/EXTb 8 19 TDI 8 19
GNDDetect 9 - GNDDetect 9 -
nSRST 10 9 nSRST 10 9
The SWD layout is typically used in a CoreSight system that uses an SWJ-DP operating in SWD mode.
The JTAG layout is typically used in a CoreSight system that includes a JTAG-DP, or a system with an SWJ-DP
operating in JTAG mode, possibly because it is cascaded with other JTAG TAPs.
Note
A target board can use this connector for performing board-level boundary scans but then switch its SWJ-DP into
SWD mode for debugging according to the layout shown in Table D3-3. This method frees up pins 6 and 8 for either
application functions or SWO.
It is not necessary to choose the switching mode at the time of chip or board development. The connector can be
switched and the target board can be operated in either SWD or JTAG mode.
Table D3-4 on page D3-127 shows the CoreSight 20 for targets using SWD or JTAG for debug communication, and
includes an optional SWO signal for conveying application or instrumentation trace. Alternatively, a target trace
port operating in CoreSight normal or bypass modes might convey the TraceCtl signal on pin 6.
D3-126 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Physical Interface
D3.2 CoreSight 10 and CoreSight 20 connectors
Both pin 6 and pin 8 in the SWD layout are shown with alternative extra signals, EXTa and EXTb, which provides
flexibility to communicate other signals on these pins. For example, future target systems and trace equipment might
convey two more trace data signals on these pins.
VTref 1 12 VTref 1 12
SWDIO 2 17 TMS 2 17
GND 3 - GND 3 -
SWCLK 4 15 TCK 4 15
GND 5 - GND 5 -
SWO/EXTa/TraceCtl 6 11 TDO 6 11
Key 7 - Key 7 -
GNDDetect 9 - GNDDetect 9 -
nSRST 10 9 nSRST 10 9
Gnd/TgtPwr+Cap 11 - Gnd/TgtPwr+Cap 11 -
TraceClk 12 6 TraceClk 12 6
Gnd/TgtPwr+Cap 13 - Gnd/TgtPwr+Cap 13 -
TraceD0 14 38 TraceD0 14 38
GND 15 - GND 15 -
TraceD1 16 28 TraceD1 16 28
GND 17 - GND 17 -
TraceD2 18 26 TraceD2 18 26
GND 19 - GND 19 -
TraceD3 20 24 TraceD3 20 24
The SWD layout is typically used in a CoreSight system that uses an SWJ-DP operating in SWD mode.
The JTAG layout is typically used in a CoreSight system that includes a JTAG-DP, or a system with an SWJ-DP
operating JTAG mode, possibly because it is cascaded with other JTAG TAPs. This layout is the recommended
debug connection for a processor that is built with support for instruction trace, for example, a processor that
includes an ETM.
Note
A target board can use this layout for performing board-level boundary scans but then switch its SWJ-DP into SWD
mode for debugging according to the layout shown in Table D3-4. This method frees up pins 6 and 8 for either
application functions or SWO.
It is not necessary to choose the switching mode at the time of chip or board development. The connector can be
switched and the target board can be operated in either SWD or JTAG mode.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D3-127
ID022122 Non-Confidential
Physical Interface
D3.3 Arm MICTOR
For tracing with large port widths that have more than 16 data pins, two connectors are required. See Single target
connector pinout on page D3-129 and Dual target connector pinout on page D3-130.
The AMP MICTOR connector is a high-density matched-impedance connector. This connector has several
important attributes:
• Direct connection to a logic analyzer probe using a high-density adapter cable with termination, for example
HPE5346A from Agilent.
• Inclusion of one or both of the JTAG and SWD runtime control signals, enabling a single debug connection
to the target.
Table D3-5 lists the AMP part numbers for the four possible connectors.
767054-1
767061-1
D3-128 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Physical Interface
D3.3 Arm MICTOR
38 37
Target system
2 1
Pin 1 chamfer
Table D3-6 shows the connections on a single MICTOR connector, and indicates the differences with the
connections specified in the Arm® Embedded Trace Macrocell Architecture Specification. If a signal is not
implemented on the target system, it must be replaced with a logic 0 connection.
38 TRACEDATA[0] 37 TRACEDATA[8]
36 TRACECTL 35 TRACEDATA[9]
34 Logic 1 33 TRACEDATA[10]
32 Logic 0 31 TRACEDATA[11]
30 Logic 0 29 TRACEDATA[12]
28 TRACEDATA[1] 27 TRACEDATA[13]
26 TRACEDATA[2] 25 TRACEDATA[14]
24 TRACEDATA[3] 23 TRACEDATA[15]
22 TRACEDATA[4] 21 nTRST
20 TRACEDATA[5] 19 TDI
18 TRACEDATA[6] 17 TMS/SWDIO
16 TRACEDATA[7] 15 TCK/SWCLK
14 VSupply 13 RTCK
12 VTRef 11 TDO/SWO
8 TRIGOUT/DBGACK 7 TRIGIN/DBGRQ
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D3-129
ID022122 Non-Confidential
Physical Interface
D3.3 Arm MICTOR
6 TRACECLK 5 GND
4 No connection 3 No connection
2 No connection 1 No connection
38 37
Target system
2 1
Pin 1 chamfer
38 37
1.35 inch
2 1
Pin 1 chamfer
Table D3-7 shows the connections for the secondary MICTOR connector. For the primary connector, see
Table D3-6 on page D3-129. If a signal is not implemented on the target system, it must be replaced with a logic 0
connection.
38 TRACEDATA[16] 37 TRACEDATA[24]
36 Logic 0 35 TRACEDATA[25]
34 Logic 1 33 TRACEDATA[26]
32 Logic 0 31 TRACEDATA[27]
D3-130 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Physical Interface
D3.3 Arm MICTOR
30 Logic 0 29 TRACEDATA[28]
28 TRACEDATA[17] 27 TRACEDATA[29]
26 TRACEDATA[18] 25 TRACEDATA[30]
24 TRACEDATA[19] 23 TRACEDATA[31]
22 TRACEDATA[20] 21 No connection
20 TRACEDATA[21] 19 No connection
18 TRACEDATA[22] 17 No connection
16 TRACEDATA[23] 15 No connection
14 No connection 13 No connection
12 VTRef 11 No connection
10 No connection 9 No connection
8 No connection 7 No connection
6 TRACECLK 5 GND
4 No connection 3 No connection
2 No connection 1 No connection
1 0 1 Yes No Trigger
1 1 x No No Trace disable
Trigger packet
Although CoreSight does not use the encoding for a trigger packet, it must be implemented to maintain cross
compatibility with ETMv3.x trace ports. TRACEDATA signals must be stored because there is further information
that is emitted on this cycle, but the TRACECTL signal can be discarded. For more information, see the Arm®
Embedded Trace Macrocell Architecture Specification.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D3-131
ID022122 Non-Confidential
Physical Interface
D3.3 Arm MICTOR
Trigger
A trigger is used as a marker to enable the TCD to stop capture after a predetermined number of cycles. No data is
output on this cycle, and TRACEDATA[n:0] and TRACECTL must not be captured.
Trace disable
This signal indicates that the current cycle must not be captured because it contains no useful information.
It is important to keep the track length differences as small as possible to minimize skew between signals. Crosstalk
on the trace port must be kept to a minimum because it can cause erroneous trace results. To minimize the chance
of unpredictable responses, avoid stubs on the trace lines, especially at high frequencies. If stubs are necessary, make
them as small as possible.
The trace port clock line, TRACECLK must be series-terminated as close as possible to the pins of the driving
ASIC.
The maximum capacitance that is presented by the trace connector, cabling, and interfacing logic must be less than
15pF.
There are no inherent restrictions on operating frequency, other than ASIC pad technology and TPA limitations. It
is mandatory, however, to observe the following guidelines for maximizing the speed at which trace capture is
possible.
TRACECLK
Tr Tf
Twh Twl
Tcyc
Arm recommends that trace ports provide a TRACECLK that is as symmetrical as possible, because both edges
are used to capture trace. Figure D3-5 shows the setup and hold requirements for the trace data pins,
TRACEDATA[n:0] and TRACECTL, in relation to TRACECLK.
TRACECLK
Trace data
Ts
Th
• Make sure that the setup time Ts and the hold time Th are as large as possible, and make sure that both are
positive, which is required by some TPAs.
• Allow the TPAs to delay each trace data signal individually by up to a whole clock period, to compensate for
trace ports where Ts and Th are not balanced or vary between data signals.
D3-132 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Physical Interface
D3.4 Target Connector Signal details
Note
VTRef does not supply operating current to the debug equipment.
Target boards must supply a voltage of 1-5V ±10%, implying a minimum of 0.9V, and a maximum of 5.5V. The DC
output impedance of the target board must be low enough to ensure that the output voltage does not change by more
than 1% when supplying a nominal signal current of 0.4mA. Debug equipment that connects to this signal must use
it as a signal rather than a power supply pin and not load it more heavily than a signal pin. The recommended
maximum source or sink current is 0.4mA.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D3-133
ID022122 Non-Confidential
Physical Interface
D3.4 Target Connector Signal details
On the target, pull up this pin to HIGH to avoid unintentional resets when there is no connection.
For more details on the use of nSRST, see the Arm® Debug Interface Architecture Specification.
D3-134 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Physical Interface
D3.4 Target Connector Signal details
• The VDD power rail typically drives the pin on the target board.
• Target board documentation indicates the VSupply pin voltage and the current available. Target boards must
supply a voltage that is nominally between 2V and 5V with a tolerance of ±10%, amounting to a minimum
of 1.8V and a maximum of 5.5V. A target board that drives this pin must provide a minimum supply current
of 250mA, where 400mA is recommended.
• To enable establishing the need for an external power supply to power the debug equipment, debug
equipment must indicate the required supply voltage range and the current power consumption over that
range.
• Target boards might have a limited amount of current available for external debug equipment, so a backup
mechanism to power the debug equipment must be provided in case VSupply is not connected or insufficient.
D3.4.19 GND
This pin must be connected to 0V on the target board to provide a signal return and logic reference.
D3.4.20 No connection
No connection must be made to this pin.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D3-135
ID022122 Non-Confidential
Physical Interface
D3.4 Target Connector Signal details
D3-136 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter D4
Trace Formatter
This chapter describes trace formatter requirements for devices that comply with the CoreSight architecture. It
contains the following sections:
• About trace formatters on page D4-138.
• Frame descriptions on page D4-139.
• Modes of operation on page D4-144.
• Flush of trace data at the end of operation on page D4-145.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D4-137
ID022122 Non-Confidential
Trace Formatter
D4.1 About trace formatters
• It permits trace from several sources to be merged into a single stream and later separated.
• It does not place any requirements or constraints on the data that is emitted from trace sources.
• It can be transmitted and stored as a bitstream without the need for separate alignment information.
• It indicates the position of the trigger signal around which trace capture is centered to the TPA, eliminating
the need for a separate pin.
• It indicates when the trace port is inactive to the TPA, eliminating the need for a separate flow control pin.
If the embedded trigger and flow control information is not required by the TPA, and only a single trace source is
used, it is possible to disable the formatting to achieve better data throughput.
D4-138 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Trace Formatter
D4.2 Frame descriptions
Figure D4-1 shows how these bytes are arranged in a formatter frame.
31 24 23 17 16 15 8 7 1 0
Each time the ID changes, at least 1 byte of data must be output for that ID. Table D4-1 shows the meaning of each
bit in a formatter frame. It is output least significant bit first, starting with bit 0.
Byte
Bits Description
number
1 7:0 Data[7:0].
3 7:0 Data[7:0].
5 7:0 Data[7:0].
7 7:0 Data[7:0].
9 7:0 Data[7:0].
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D4-139
ID022122 Non-Confidential
Trace Formatter
D4.2 Frame descriptions
Byte
Bits Description
number
11 7:0 Data[7:0].
13 7:0 Data[7:0].
15 0 Auxiliary bit for byte 0, see bit in Figure D4-1 on page D4-139 marked A.
The meaning of this bit depends on whether byte 0 contains data or a new ID:
Data = Data[0].
New ID:
0 = Byte 1 corresponds to the new ID.
1 = Byte 1 corresponds to the old ID.
The new ID takes effect from the next data byte after byte 1.
1 Auxiliary bit for byte 2, marked B in Figure D4-1 on page D4-139. See bit 0.
If byte 2 contains a new ID, this bit indicates whether the new ID takes effect from byte 3
or the following data byte.
2 Auxiliary bit for byte 4, marked C in Figure D4-1 on page D4-139. See bit 0.
3 Auxiliary bit for byte 6, marked D in Figure D4-1 on page D4-139. See bit 0.
4 Auxiliary bit for byte 8, marked E in Figure D4-1 on page D4-139. See bit 0.
5 Auxiliary bit for byte 10, marked G in Figure D4-1 on page D4-139. See bit 0.
6 Auxiliary bit for byte 12, marked H in Figure D4-1 on page D4-139. See bit 0.
7 Auxiliary bit for byte 14, marked J in Figure D4-1 on page D4-139. See bit 0.
If byte 14 is a new ID, this bit is reserved. It must be zero, and must be ignored when
decompressing the frame. The new ID takes effect from the first data byte of the next
frame.
D4-140 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Trace Formatter
D4.2 Frame descriptions
31 24 23 17 16 15 8 7 1 0
0 Bit[0] is set. This byte represents the new ID 0x03. Bit[0] of byte 15 is clear, so - 0x03
the new ID takes effect immediately.
1 Data byte for the trace with the new ID 0x03. 0xAA 0x03
2 Bit[0] is clear This byte is a data byte for the trace with the current ID 0x03. 0xA6 0x03
Bit[0] of the data is taken from bit[1] of byte 15.
4 Bit[0] is set This byte represents the new ID 0x15. Bit[2] of byte 15 is set, so - 0x03
the next data byte continues to use the current ID 0x03.
5 Data byte for the trace with the current ID 0x03. 0xA8 0x03
6 Bit[0] is clear. This byte is a data byte for the trace with the new ID 0x15. Bit[0] 0x55 0x15
of the data is taken from bit[3] of byte 15.
8 Bit[0] is clear. This byte is a data byte. Bit[0] of the data is taken from bit[4] of 0x53 0x15
byte 15.
10 Bit[0] is set. This byte represents the new ID 0x03. Bit[5] of byte 15 is clear, so - 0x03
the new ID takes effect immediately.
11 Data byte for the trace with the new ID 0x03. 0xCA 0x03
12 Bit[0] is clear. This byte is a data byte for the trace with the current ID 0x03. 0xC6 0x03
Bit[0] of the data is taken from bit[6] of byte 15.
14 Bit[0] is clear. This byte is a data byte. Bit[0] of the data is taken from bit[7] of 0xC8 0x03
byte 15.
15 Auxiliary bits. - -
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D4-141
ID022122 Non-Confidential
Trace Formatter
D4.2 Frame descriptions
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
This sequence cannot occur at any other time, if ID 0x7F has not been used. See Special trace source IDs for more
information on reserved source IDs.
Note
Frame synchronization packets and frame data are always multiples of 32-bits, but do not always start on a 32-bit
boundary. Because halfword synchronization packets can occur within frames and between frames, they can also
start on 16-bit boundaries. See also Halfword synchronization packet.
• If they appear within a frame, they are always aligned to a 16-bit boundary.
• They are output least significant bit first, starting with bit[0].
• They are only generated in continuous mode. If a TPA detects a halfword synchronization packet, it must
discard it, because it does not form part of a formatter frame. See Modes of operation on page D4-144 for
more information about continuous mode.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Note
Frame synchronization packets and frame data are always multiples of 32-bits, but do not always start on a 32-bit
boundary. Because halfword synchronization packets can occur within frames and between frames, they can also
start on 16-bit boundaries.
0x00 This ID indicates a NULL trace source. Any data following this ID change must be ignored by the
debugger, which is required if there is insufficient trace data available to complete a formatter frame.
0x70-0x7A Reserved.
D4-142 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Trace Formatter
D4.2 Frame descriptions
0x7B This ID indicates a flush response. Trace that is output with the flush response ID signifies that all
trace that was generated previous to a flush request has been output.
Each byte of trace that is output with ID 0x7B constitutes a separate flush response, whereby the
value of the byte can be one of the following:
0x00 All active trace sources have indicated a flush response.
0x01-0x6F The trace source ID with this value has indicated a flush response.
0x70-0xFF Reserved.
Note
The use of trace source ID 0x7B is also permitted on ATB, with the same payload semantics.
0x7C Reserved.
0x7D This ID indicates a trigger within the trace stream and is accompanied by one byte of data for each
trigger. The value of each data byte indicates the ID of the trigger. A data byte with a value of zero
indicates that the trigger ID is UNKNOWN.
Note
The use of trace source ID 0x7D is also permitted on ATB, with the same payload semantics.
0x7E Reserved.
0x7F This ID must never be used because it conflicts with the synchronization packet encodings.
Under certain conditions, the formatter can be bypassed to eliminate this overhead. For more information, see
Bypass on page D4-144.
When using a protocol that is unable to output such a packet, use the formatter protocol to indicate the position of
synchronization points by using two source IDs. The trace source starts outputting trace using the first ID, then
switches to the second ID at the first alignment point. It switches back to the first ID at the next alignment point,
and continues switching at each subsequent alignment point.
A trace source that uses ID switching in this manner cannot use bypass mode. See Bypass on page D4-144.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D4-143
ID022122 Non-Confidential
Trace Formatter
D4.3 Modes of operation
D4.3.1 Bypass
In this mode, the trace is output without modification. No formatting information is inserted into the trace stream.
When using bypass mode, observe the following rules:
• If the trace is to be output over a trace port, the TRACECTL pin must be implemented, and the TPA must
support this pin. This configuration enables the TPA to determine the position of the trigger and detect when
no trace is available for capture. See Decoding requirements for Trace Capture Devices on page D3-131.
• The debugger does not need to report the position of the trigger as seen by the trace sink. In bypass mode, the
trigger ID 0x7D is not generated.
To ensure that all trace is output from a trace sink when stopping trace, extra data might be added to the end of the
trace stream. See Bypass mode on page D4-145.
D4.3.2 Normal
The formatter is enabled, and the TRACECTL pin is used to determine the position of the trigger and detect when
no trace is available for capture. Halfword synchronization packets are not generated. The TPA does not have to
decode any part of the trace stream.
D4.3.3 Continuous
The formatter is enabled, but the TRACECTL pin is not used. The TPA must decode part of the formatter protocol
to determine the position of the trigger and detect when no trace is available for capture.
D4-144 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Trace Formatter
D4.4 Flush of trace data at the end of operation
Note
When tracing is resumed, some leftover trace that is generated by the flush sequence might be output before any
new trace is output. Look for the first synchronization packet in the protocol before starting to decompress the trace.
Trace that is output with the flush response ID 0x7B signifies that all trace that was generated previous to a flush
request has been output. See also Special trace source IDs on page D4-142.
The sequence consists of a single bit that is set, followed by a series of zeros. This sequence does not represent real
trace data and must always be removed before decompression when the trace sink has been requested to stop trace
output.
The following two examples show sequences that can be observed on a 32-bit trace port. Figure D4-5 shows an
example of how the last AMBA ATB protocol transaction left three bytes within the formatter.
31 24 23 16 15 8 7 0
0xAA 0x55 0xAA 0x55
[Real Data] [Real Data] [Real Data] [Real Data]
0x55 0xAA 0x55
0x01
[Real Data] [Real Data] [Real Data]
0x00 0x00 0x00 0x00
Figure D4-6 shows an example of how the trace finishes on a 32-bit trace port boundary.
31 24 23 16 15 8 7 0
0x55 0xAA 0x55 0xAA
[Real Data] [Real Data] [Real Data] [Real Data]
0x55 0xAA 0x55 0xAA
[Real Data] [Real Data] [Real Data] [Real Data]
0x00 0x00 0x00 0x01
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D4-145
ID022122 Non-Confidential
Trace Formatter
D4.4 Flush of trace data at the end of operation
D4-146 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter D5
About ROM Tables
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D5-147
ID022122 Non-Confidential
About ROM Tables
D5.1 ROM Tables Overview
• Systems with a single debug component do not require a ROM Table. However, a designer might choose to
implement such a system to include a ROM Table.
• Systems with more than one debug component must include at least one ROM Table.
A ROM Table connects to a bus controlled by a Memory Access Port (MEM-AP). In other words, the ROM Table
is part of the address space of the memory system that is connected to a MEM-AP. More than one ROM Table can
be connected to a single bus.
D5-148 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
About ROM Tables
D5.2 ROM Table Types
Note
Class 0x9 ROM Tables can be used alongside Class 0x1 ROM Tables, and both Class 0x9 and Class 0x1 ROM
Tables might be present in systems that comply with CoreSight v3.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D5-149
ID022122 Non-Confidential
About ROM Tables
D5.3 Component and Peripheral ID Registers for ROM Tables
• A cluster of components grouped together with a ROM table hierarchy pointing to all the components is
uniquely identified by the outermost ROM Table in the cluster.
• A subsystem of all components connected to a single MEM-AP is uniquely identified by the outermost ROM
Table in the subsystem. This ROM Table is usually the first component pointed to by the MEM-AP.
• An SoC, consisting of multiple MEM-APs implementing the ADIv5, is uniquely identified by the collective
Unique Component Identifiers from all of the outermost ROM Tables pointed to by each of the Memory
Access Ports.
• An SoC, consisting of multiple MEM-APs implementing the ADIv6, is uniquely identified by the Unique
Component Identifiers from the outermost ROM Table providing pointers to by each of the MEM-APs. This
ROM Table is usually the first component pointed to by the DP.
An SoC, system, or subsystem might be configurable when being built. For example, a cluster of processors might
permit the number of processors to be configurable. The ROM Table, which describes such a collection of
components, might have the same Unique Component Identifier for all configurations of the system. However, this
is only permitted when components are either included or excluded, and is not permitted to be the same when the
location of any component in the address map changes or components significantly change in function. In effect, a
ROM Table Unique Component Identifier uniquely identifies a superset configuration of the collection of
components. ROM Tables with the same Unique Component Identifier might only describe a subset of this superset.
D5-150 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter D6
Topology Detection at the System Level
This chapter describes topology detection at the system level. It contains the following sections:
• About topology detection at the system level on page D6-152.
• Detection on page D6-153.
• Components that are not recognized on page D6-154.
• Detection algorithm on page D6-155.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D6-151
ID022122 Non-Confidential
Topology Detection at the System Level
D6.1 About topology detection at the system level
D6-152 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Topology Detection at the System Level
D6.2 Detection
D6.2 Detection
When connecting to a CoreSight system, a debugger performs the following steps:
2. It ensures that the system is powered up, and that its clocks are running. The DP provides facilities to assist
with this assessment.
4. It compares the Peripheral ID of the ROM Table against a list of saved system descriptions. For information
on this ID, see PIDR0-PIDR7 in Arm® Debug Interface v6 Specification.
5. If a description of the system with this ID is saved, it uses that description. If not, the debugger continues
with the following steps:
a. It identifies each component.
b. It looks up information that is known about that component to determine what interfaces are supported
and how to control them for topology detection.
c. It performs topology detection. See Detection algorithm on page D6-155.
d. It saves the description for later use.
Note
Software running on the system must be able to determine the topology of the CoreSight system, and keep
functioning when topology detection registers are enabled.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D6-153
ID022122 Non-Confidential
Topology Detection at the System Level
D6.3 Components that are not recognized
D6-154 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Topology Detection at the System Level
D6.4 Detection algorithm
Signals for topology detection on page C7-110 describes preambles, and assert and deassert sequences for common
interfaces. If a component does not specify a preamble or postamble, they are as follows:
Component preamble
Set ITCTRL.IME to 0b1.
Component postamble
Clear ITCTRL.IME to 0b0.
Note
After a device has been in integration mode, it might behave differently than before. After performing integration
or topology detection, reset the system to ensure correct behavior of CoreSight and other connected system
components that are affected by the integration or topology detection.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D6-155
ID022122 Non-Confidential
Topology Detection at the System Level
D6.4 Detection algorithm
D6-156 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Chapter D7
Compliance Requirements
This chapter describes the requirements for CoreSight compliance. It contains the following sections:
• About compliance classes on page D7-158.
• CoreSight debug on page D7-159.
• CoreSight trace on page D7-161.
• Multiple DPs on page D7-164.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D7-157
ID022122 Non-Confidential
Compliance Requirements
D7.1 About compliance classes
These requirements are aimed at interoperability between debuggers, and only cover behavior that is visible to such
tools. The following behavior is specified:
• Optional functionality. Arm recommends that debuggers aiming to support compliant systems support this
functionality.
Note
Systems can implement extra functionality, provided it does not affect the use of the minimum functionality.
Debuggers might not be able to support this extra functionality.
• CoreSight debug, which is the basic level of compliance. A processor supporting CoreSight debug does not
need to comply with the CoreSight visible component architecture, although doing so makes it easier to build
a CoreSight system.
• CoreSight trace, which includes all the requirements for CoreSight debug, and adds trace functionality.
The level of compliance is claimed for each individual processor in the system. For example, a system incorporating
three processors might claim CoreSight trace for the first processor, CoreSight debug for the second, and no
CoreSight compliance for the third.
D7-158 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Compliance Requirements
D7.2 CoreSight debug
Note
A CoreSight component is a component that implements the CoreSight visible component architecture.
• Each CoreSight system must contain exactly one DP, and implement a JTAG-DP or a SW-DP component.
The JTAG or Serial Wire interface of the component must be accessible to debug tools. For more information
about implementing multiple systems containing DPs, see Multiple DPs on page D7-164.
• All CoreSight components must comply with all the following requirements:
— They must be accessible through a MEM-AP.
— They must be discoverable through a valid ROM Table, that must itself conform to the requirements
for CoreSight components.
• All processors claiming CoreSight debug compliance must observe at least one of the following
requirements:
— They must conform to the CoreSight visible component architecture, while conforming to the
requirements for CoreSight components.
— They must be accessible using a JTAG TAP Controller that is connected in series with the JTAG TAP
Controller of the JTAG-DP, connected to the TDI side of the JTAG-DP as Figure D7-8 on
page D7-164 shows.
— They must be accessible using a JTAG TAP Controller that is connected in a chain of TAP Controllers
that are controlled by the JTAG-AP.
• All debug functionality must be visible and detectable, with its clocks running, when Debug Power Up is
requested in the JTAG-DP programmers’ model, except where it is hidden due to security restrictions.
• All debug functionality must be operational when System Power Up is requested in the JTAG-DP
programmers’ model, except where it is hidden due to security restrictions.
• All debug functionality must be reset to its initial state when Debug Reset is requested in the JTAG-DP
programmers’ model.
• For each CoreSight component and JTAG controlled processor, all inputs and outputs that are defined as type
event are connected to a CTI component, unless there is only one component in the system with event inputs
or outputs, in which case no CTI is required. For Arm JTAG controlled processors, the required connections
are documented in the CoreSight Technology System Design Guide.
• All channel interfaces of CoreSight components, for example interfaces that are present on CTIs, are
connected together, so that the channels are shared between all components. CoreSight technology from Arm
provides a CTM for connecting three or more channel interfaces together where required.
• Unless stated otherwise in this specification, extra logic between components that is visible to the tools is not
permitted. See also Variant interfaces on page B3-70.
• Arm recommends all system designs to be CoreSight compliant, but recognizes that this recommendation
might not always be achievable. If a system requires certain operations to be performed before it complies
with the CoreSight compliance criteria, clearly state what these operations are, and clearly state that it is not
CoreSight compliant until they have been performed.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D7-159
ID022122 Non-Confidential
Compliance Requirements
D7.2 CoreSight debug
Single-core debug
Figure D7-1 shows the simplest CoreSight debug configuration for a single-core system. In this configuration, no
trace capabilities are provided. The processor is accessed via a JTAG-AP, to ensure that it can be powered down
without affecting other components on the master JTAG TAP chain.
JTAG
JTAG-DP JTAG-AP
processor
Multi-core debug
Figure D7-2 shows a multi-core CoreSight debug system:
• Both processors provide access to program the CTI and processor with interfaces that comply with the
CoreSight architecture.
An alternative method to provide memory access that is not shown in the figure is to use AHB-AP.
JTAG
AP JTAG-
JTAG- Processor
DP Processor
APB- APB
AP bridge
Debug APB
D7-160 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Compliance Requirements
D7.3 CoreSight trace
• All Arm-compatible processors claiming CoreSight trace compliance must implement an Arm CoreSight
ETM.
• Processors that are not Arm-compatible must implement a trace solution that complies with the following
requirements:
— It must implement the CoreSight visible component architecture.
— It must provide the processor with at least instruction trace as a CoreSight trace source.
• All CoreSight trace sources must drain into one or more of the trace sinks:
— Where two or more trace sources drain into the same trace sink, they are connected through one or
more CoreSight trace funnels.
— The trace cannot travel through multiple paths to reach the same endpoint. See the example in
Figure D7-3.
ETM Funnel
ETM
Funnel
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D7-161
ID022122 Non-Confidential
Compliance Requirements
D7.3 CoreSight trace
Arm
SWJ- APB- APB Cortex ETM TPIU
DP AP bridge processor
Debug APB
Debug APB
Formatting
turned on
Multi-core trace
Figure D7-7 on page D7-163 shows a system with an Arm processor and a DSP. A third smaller subsystem is added
to support merging of multiple CoreSight AMBA ATB interfaces into a single trace stream.
D7-162 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Compliance Requirements
D7.3 CoreSight trace
SWJ-DP
AHB-AP
APB-AP
System 1 System 2
Memory Cross trigger matrix Memory Cross trigger matrix
Interconnect
AXI/AHB AXI/AHB
Processor DSP
APB bridge
Debug Debug
APB APB
HTM HTM
CTI CTI
Trace Trace
Funnel Funnel
System 3
Trace
Funnel
Replicator
Debug
APB
F
CTI
ETB
F
TPIU
Trace
port
Figure D7-7 Full system trace with Arm processor and CoreSight compliant DSP
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D7-163
ID022122 Non-Confidential
Compliance Requirements
D7.4 Multiple DPs
• Connections between JTAG TAP Controllers cannot be interleaved between systems. For example, if there
are two systems sharing a JTAG TAP chain, each with a JTAG-DP and two JTAG processors connected in
series with the JTAG-DP, the connections that are shown in Figure D7-8 are permitted, while the connections
shown in Figure D7-9 are not permitted.
In Figure D7-8:
— System 1 is defined as the two processors before the first JTAG-DP in the TAP chain.
— System 2 is defined as the two processors before the second JTAG-DP in the TAP chain.
TDI
System 1 System 2
Processor 1 Processor 1
Processor 2 Processor 2
JTAG-DP JTAG-DP
TDO
TDI
System 1 System 2
Processor 1 Processor 1
JTAG-DP JTAG-DP
TDO
• Extra JTAG TAP Controllers can be implemented in series with JTAG TAP Controllers of the CoreSight
systems. For example, in Figure D7-10, processor A is not part of either CoreSight system 1 or 2. The
debugger considers processor A to be part of system 2, because the JTAG-DP closest to the TDO side of
processor A is in system 2. If the debugger does not recognize processor A, then it is ignored, otherwise the
debugger attempts topology detection on system 2 with processor A, and fails to find any connections
between processor A and system 2.
TDI
System 1 System 2
Processor 1 Processor 1
JTAG-DP JTAG-DP
TDO
• A JTAG-DP must not be accessed through the JTAG-AP of another system, as shown in Figure D7-11.
D7-164 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Compliance Requirements
D7.4 Multiple DPs
MEM-
AP
SWJ- JTAG- JTAG-
DP DP AP
JTAG-
AP
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. D7-165
ID022122 Non-Confidential
Compliance Requirements
D7.4 Multiple DPs
D7-166 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Part E
Appendixes
Appendix E1
Power Requester
This appendix describes the power requestor which Arm recommends that some CoreSight components implement.
It contains the following sections:
• About the power requester on page E1-170.
• Register descriptions on page E1-171.
• Powering non-visible components on page E1-188.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E1-169
ID022122 Non-Confidential
Power Requester
E1.1 About the power requester
The power requester can control the application or removal of power for up to 32 power domains.
E1-170 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Power Requester
E1.2 Register descriptions
Purpose
Reports the required security level and status of the authentication interface. Where functionality
changes on a given security level, this change in status must be reported in this register.
Usage constraints
None.
Default
RO
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E1-171
ID022122 Non-Confidential
Power Requester
E1.2 Register descriptions
Configurations
Included in all implementations.
Attributes
A 32-bit register.
Field Descriptions
The AUTHSTATUS bit assignments are:
31 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 87 65 43 21 0
RES0 RTNID RTID SUNID SUID NSUID RLNID RLID HNID HID SNID SID NSID
NSUNID NSNID
Bits[31:28]
RES0. See AUTHSTATUS, Authentication Status Register on page B2-45.
SUNID, bits[23:22]
Secure Unprivileged non-invasive debug. See AUTHSTATUS, Authentication Status
Register on page B2-45.
SUID, bits[21:20]
Secure Unprivileged invasive debug. See AUTHSTATUS, Authentication Status Register on
page B2-45.
NSUNID, bits[19:18]
Non-secure Unprivileged non-invasive debug. See AUTHSTATUS, Authentication Status
Register on page B2-45.
NSUID, bits[17:16]
Non-secure Unprivileged invasive debug. See AUTHSTATUS, Authentication Status
Register on page B2-45.
RLNID, bits[15:14]
Realm non-invasive debug. See AUTHSTATUS, Authentication Status Register on
page B2-45.
RLID, bits[13:12]
Realm invasive debug. See AUTHSTATUS, Authentication Status Register on page B2-45.
HNID, bits[11:10]
Hypervisor non-invasive debug. See AUTHSTATUS, Authentication Status Register on
page B2-45.
HID, bits[9:8]
Hypervisor invasive debug. See AUTHSTATUS, Authentication Status Register on
page B2-45.
SNID, bits[7:6]
E1-172 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Power Requester
E1.2 Register descriptions
SID, bits[5:4]
Secure invasive debug. See AUTHSTATUS, Authentication Status Register on page B2-45.
NSNID, bits[3:2]
Non-secure non-invasive debug. See AUTHSTATUS, Authentication Status Register on
page B2-45.
NSID, bits[1:0]
Non-secure invasive debug. See AUTHSTATUS, Authentication Status Register on
page B2-45.
Accessing AUTHSTATUS
AUTHSTATUS can be accessed at the following address:
Component Offset
GPR 0xFB8
Purpose
Returns the status of the power requests that CDBGPWRUPREQ issues.
Usage constraints
The register can monitor the power requests for up to 32 power domains.
CDBGPWRUPACK is accessible as follows:
Default
RO
Configurations
Included in all implementations.
Attributes
A 32-bit register.
Field Descriptions
The CDBGPWRUPACK bit assignments are:
31 DEVID.NUMREQ DEVID.NUMREQ-1 0
RES0 ACK
Bits[31:DEVID.NUMREQ]
RES0
ACK, bits[DEVID.NUMREQ-1:0]
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E1-173
ID022122 Non-Confidential
Power Requester
E1.2 Register descriptions
The size of this field is IMPLEMENTATION DEFINED, and equals the value of DEVID.NUMREQ.
Permitted values of bit[n] are:
0 Power domain n is not powered.
1 Power domain n is powered.
Accessing CDBGPWRUPACK
CDBGPWRUPACK can be accessed at the following address:
Component Offset
GPR 0x004
Purpose
Controls whether a power request is active for a power domain.
Usage constraints
CDBGPWRUPREQ can issue power requests for up to 32 power domains.
CDBGPWRUPREQ is accessible as follows:
Default
RW
Configurations
Included in all implementations.
Attributes
A 32-bit register.
Field Descriptions
The CDBGPWRUPREQ bit assignments are:
31 DEVID.NUMREQ DEVID.NUMREQ-1 0
RES0 REQ
Bits[31:DEVID.NUMREQ]
RES0.
REQ, bits[DEVID.NUMREQ-1:0]
The size of this field is IMPLEMENTATION DEFINED, and equals the value of DEVID.NUMREQ.
Permitted values of bit[n] are:
0 Power request for power domain n is not active.
1 Power request for power domain n is active.
E1-174 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Power Requester
E1.2 Register descriptions
Accessing CDBGPWRUPREQ
CDBGPWRUPREQ can be accessed at the following address:
Component Offset
GPR 0x000
Purpose
Provide information to identify a CoreSight component.
Usage constraints
CIDR0-CIDR3 are accessible as follows:
Default
RO
Configurations
Included in all implementations.
Attributes
Four 32-bit management registers.
Field Descriptions
The CIDR0 bit assignments are:
31 8 7 0
31 8 7 0
31 8 7 4 3 0
31 8 7 0
CIDR3 bits[31:8]
RES0.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E1-175
ID022122 Non-Confidential
Power Requester
E1.2 Register descriptions
CIDR2 bits[31:8]
RES0.
CIDR1 bits[31:8]
RES0.
CIDR0 bits[31:8]
RES0.
Offset
Component
CIDR0 CIDR1 CIDR2 CIDR3
Purpose
Clears claim tags and returns the current claim tag values.
Usage constraints
Must be used with CLAIMSET.
To indicate the width of the area that represents valid claim tags, a component must use
CLAIMSET.
If CLAIMCLR and CLAIMSET are implemented, all debug agents that use them must
implement a common claim tag protocol.
The value of CLAIMCLR must be zero at reset.
E1-176 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Power Requester
E1.2 Register descriptions
Default
RW
Configurations
Included in all implementations.
Attributes
A 32-bit management register.
Field Descriptions
The CLAIMCLR bit assignments are:
31 nTags nTags-1 0
RAZ/WI CLR
Bits[31:nTags]
RAZ/WI.
CLR, bits[nTags-1:0]
The size n of this field is IMPLEMENTATION DEFINED, and equals the number of bits set in
CLAIMSET.
Permitted values of bit[n] are:
Write 0 No effect.
Write 1 Clear the claim tag for bit[n].
Read 0 The debug functionality that is tagged by bit[n] is available.
Read 1 The debug functionality that is tagged by bit[n] is claimed.
Accessing CLAIMCLR
CLAIMCLR can be accessed at the following address:
Component Offset
GPR 0xFA4
Purpose
Sets claim tags and returns the valid claim tags.
Usage constraints
Must be used with CLAIMSET.
The bits indicating valid claim tags must be consecutive.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E1-177
ID022122 Non-Confidential
Power Requester
E1.2 Register descriptions
If CLAIMCLR and CLAIMSET are implemented, all debug agents that use them must
implement a common claim tag protocol.
CLAIMSET is accessible as follows:
Default
RW
Attributes
A 32-bit management register.
Field Descriptions
The CLAIMSET bit assignments are:
31 nTags nTags-1 0
RAZ/WI SET
Bits[31:nTags]
RAZ/WI.
SET, bits[nTags-1:0]
The size n of this field is IMPLEMENTATION DEFINED.
Permitted values of bit[n] are:
Write 0 No effect.
Write 1 Set the claim tag for bit[n].
Read 0 The claim tag that is represented by bit[n] is implemented.
Read 1 The claim tag that is represented by bit[n] is not implemented.
Accessing CLAIMSET
CLAIMSET can be accessed at the following address:
Component Offset
GPR 0xFA0
Purpose
Identifies the architect and architecture of a CoreSight component. The architect might
differ from the designer of a component, for example when Arm defines the architecture but
another company designs and implements the component.
Usage constraints
E1-178 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Power Requester
E1.2 Register descriptions
Default
RO
Configurations
Included in all implementations.
Attributes
A 32-bit management register.
Field Descriptions
The DEVARCH bit assignments are:
31 21 20 19 16 15 0
PRESENT
ARCHITECT, bits[31:21]
0x23B The architect is Arm.
PRESENT, bit[20]
1 DEVARCH is present.
REVISION, bits[19:16]
0x0
ARCHID, bits[15:0]
0xA34 Power Requestor.
Accessing DEVARCH
DEVARCH can be accessed at the following address:
Component Offset
GPR 0xFBC
Purpose
Indicates how many power domains the power requestor supports.
Usage constraints
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E1-179
ID022122 Non-Confidential
Power Requester
E1.2 Register descriptions
Default
RO
Configurations
Included in all implementations.
Attributes
A 32-bit management register.
Field Descriptions
The DEVID bit assignments are:
31 6 5 0
RES0 NUMREQ
Bits[31:6]
RES0
NUMREQ, bits[5:0]
IMPLEMENTATION DEFINED.
Number of power domains to be managed by
CDBGPWRUPREQ and CDBGPWRUPACK.
Accessing DEVID
DEVID can be accessed at the following address:
Component Offset
GPR 0xFC8
Purpose
If the part number field is not recognized, a debugger can report the information that is
provided by DEVTYPE about the component instead.
Usage constraints
DEVTYPE is accessible as follows:
Default
RO
Configurations
E1-180 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Power Requester
E1.2 Register descriptions
Attributes
A 32-bit management register.
Field Descriptions
The DEVTYPE bit assignments are:
31 8 7 4 3 0
Bits[31:8]
RES0. Ensures that the bits that are not associated with the component type have a
well-defined value.
SUB, bits[7:4]
0x3 Power Requester.
MAJOR, bits[3:0]
0x4 Debug Control.
Accessing DEVTYPE
DEVTYPE can be accessed at the following address:
Component Offset
GPR 0xFCC
Purpose
A component can use this register to dynamically switch between functional mode and
integration mode.
In integration mode, topology detection is enabled. For more information, see Chapter B3
Topology Detection.
Usage constraints
After switching to integration mode and performing integration tests or topology detection,
reset the system to ensure correct behavior of CoreSight and other connected system
components.
ITCTRL is accessible as follows:
Default
RW
Configurations
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E1-181
ID022122 Non-Confidential
Power Requester
E1.2 Register descriptions
Attributes
A 32-bit management register.
Field Descriptions
The ITCTRL bit assignments are:
31 1 0
RES0
IME
Bits[31:1]
RES0.
IME, bits[0]
Permitted values of IME are:
0 The component must enter functional mode.
1 The component must enter integration mode, and enable support for topology
detection and integration testing.
When no integration functionality is implemented, this field is RES0.
Component Offset
GPR 0xF00
Purpose
Components can use this register to enable write access to device registers.
Usage constraints
LAR is accessible as follows:
Default
WO
Configurations
LSR.SLI indicates whether a Software lock mechanism is implemented. If a Software lock
mechanism is implemented, LAR is implemented, and must be used with LSR.
Attributes
A 32-bit management register.
E1-182 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Power Requester
E1.2 Register descriptions
Field Descriptions
The LAR bit assignments are:
31 0
KEY, bits[31:0]
Writing a value to this field controls write access to the control registers.
Permitted values of KEY are:
Write 0xC5ACCE55
Signals that LSR must permit writing to the control registers.
Write any other value
Signals that LSR must block writing to the control registers.
Accessing LAR
LAR can be accessed at the following address:
Component Offset
GPR 0xFB0
Purpose
Defines the parameters for a Software lock mechanism that can be implemented to control
write access to device registers.
Usage constraints
LSR is accessible as follows:
Default
RO
Configurations
Included in all implementations.
Attributes
A 32-bit management register.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E1-183
ID022122 Non-Confidential
Power Requester
E1.2 Register descriptions
Field Descriptions
The LSR bit assignments are:
31 3 2 1 0
nTT
SLK
SLI
Bits[31:3]
RES0.
nTT, bits[2]
0 LAR is a 32-bit register.
SLK, bits[1]
This field is used to return the current software lock status.
Permitted values of SLK are:
0 Writing to the control registers must be permitted.
1 Writing to the control registers must be blocked.
SLI, bits[0]
This field indicates whether a Software lock mechanism is implemented.
Permitted values of SLI are:
0 Software lock mechanism is not implemented.
1 Software lock mechanism is implemented.
Accessing LSR
LSR can be accessed at the following address:
Component Offset
GPR 0xFB4
Purpose
Provide information to identify a CoreSight component.
Usage constraints
PIDR0-PIDR7 are accessible as follows:
Default
IMPLEMENTATION DEFINED
E1-184 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Power Requester
E1.2 Register descriptions
Configurations
Included in all implementations.
Attributes
Eight 32-bit management registers.
Field Descriptions
The PIDR bit assignments are:
31 8 7 4 3 0
31 8 7 4 3 2 0
JEDEC
31 8 7 4 3 0
31 8 7 0
31 0
31 0
31 0
31 8 7 4 3 0
PIDR3 bits[31:8]
RES0.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E1-185
ID022122 Non-Confidential
Power Requester
E1.2 Register descriptions
PIDR2 bits[31:8]
RES0.
PIDR1 bits[31:8]
RES0.
PIDR0 bits[31:8]
RES0.
PIDR7 bits[31:0]
RES0.
PIDR6 bits[31:0]
RES0.
PIDR5 bits[31:0]
RES0.
PIDR4 bits[31:8]
RES0.
E1-186 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Power Requester
E1.2 Register descriptions
Offset
Component
PIDR0 PIDR1 PIDR2 PIDR3 PIDR4 PIDR5 PIDR6 PIDR7
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E1-187
ID022122 Non-Confidential
Power Requester
E1.3 Powering non-visible components
For example, if two Cross Trigger Interfaces (CTIs) are connected through a CTM, a response to a power request
for the CTIs must also power the CTM.
E1-188 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Appendix E2
Revisions
This appendix describes the main technical changes between released versions of this specification.
Change Location
Renamed register fields for consistency across Arm documentation. Entire document.
Clarified that all registers are accessed in little-endian format. About the programmers’ model on page B2-32.
Added new registers to Class 0x9 CoreSight component. DEVID1, Device Configuration Register 1 on page B2-56.
DEVID2, Device Configuration Register 2 on page B2-57.
DEVARCH, Device Architecture Register on page B2-53.
DEVAFF0-DEVAFF1, Device Affinity Registers on
page B2-51.
Updated the definition of the authentication interface to deprecate some Chapter C5 Authentication Interface.
previously permitted encodings.
Updated the permitted trace ID values to include 0x7D. Special trace source IDs on page D4-142.
Added the power requester and ROM Table values. Appendix E1 Power Requester.
ROM Tables Overview on page D5-148.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E2-189
ID022122 Non-Confidential
Revisions
Change Location
The use of LAR and LSR to implement the Software lock mechanism LSR and LAR, Software Lock Status Register and Software
is deprecated. Lock Access Register on page B2-61.
The use of PADDRDBG[31] to split the memory map and indicate the Debug APB interface memory map on page D2-118
difference between external and internal accesses is deprecated.
Use of the PIDR4.SIZE field is deprecated. Components that occupy more than 4KB of address space
on page B2-34 and PIDR0-PIDR7, Peripheral
Identification Registers on page B2-40.
The AUTHSTATUS description is extended to include optional fields AUTHSTATUS, Authentication Status Register on
that can be used to indicate hypervisor debug visibility. page B2-45.
The Authentication Interface is extended to support signals that control Chapter C5 Authentication Interface.
debug for a hypervisor.
The rules for assigning a Unique Component Identifier and a revision Chapter B2 Component and Peripheral Identification
number to a component have been updated. registers.
Trace Formatter ID 0x7B, which was reserved in earlier versions, is Special trace source IDs on page D4-142.
allocated to indicate a flush response.
Introduced Class 0x9 ROM Tables, and adopted the designation Class Chapter D5 About ROM Tables.
0x1 ROM Tables for the existing format. See Arm® Debug Interface Architecture Specification
(ADIv6.0).
Support for Realm Management Extension is added Component-specific registers for Class 0x9 CoreSight
components on page B2-44.
Chapter C5 Authentication Interface.
Support in AUTHSTATUS for indicating Unprivileged debug AUTHSTATUS, Authentication Status Register on
page B2-45.
E2-190 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Appendix E3
Pseudocode Definition
This appendix provides a definition of the pseudocode that is used in this manual, and defines some helper
procedures and functions that are used by pseudocode. It contains the following sections:
• About the Arm pseudocode on page E3-192.
• Pseudocode for instruction descriptions on page E3-193.
• Data types on page E3-195.
• Operators on page E3-200.
• Statements and control structures on page E3-206.
• Built-in functions on page E3-211.
• Miscellaneous helper procedures and functions on page E3-214.
• Arm pseudocode definition index on page E3-216.
Note
This appendix is not a formal language definition for the pseudocode. It is a guide to help understand the use of Arm
pseudocode. This appendix is not complete. Changes are planned for future releases.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-191
ID022122 Non-Confidential
Pseudocode Definition
E3.1 About the Arm pseudocode
Built-in functions on page E3-211 and Miscellaneous helper procedures and functions on page E3-214 describe
some built-in functions and pseudocode helper functions that are used by the pseudocode functions that are
described elsewhere in this manual. Arm pseudocode definition index on page E3-216 contains the indexes to the
pseudocode.
E3-192 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.2 Pseudocode for instruction descriptions
In the instruction pseudocode, instruction fields are referred to by the names shown in the encoding diagram for the
instruction. Instruction encoding diagrams and instruction pseudocode gives more information about the
pseudocode provided for each instruction.
An encoding diagram specifies each bit of the instruction as one of the following:
• An obligatory 0 or 1, represented in the diagram as 0 or 1. If this bit does not have this value, the encoding
corresponds to a different instruction.
• A should be 0 or 1, represented in the diagram as (0) or (1). If this bit does not have this value, the instruction
is CONSTRAINED UNPREDICTABLE. For more information, see SBZ or SBO fields T32 and A32 in instructions
on page K1-11158.
• A named single bit or a bit in a named multi-bit field. The cond field in bits[31:28] of many A32/T32
instructions has some special rules associated with it.
An encoding diagram matches an instruction if all obligatory bits are identical in the encoding diagram and the
instruction, and one of the following is true:
• The encoding diagram is not for an A32/T32 instruction.
• The encoding diagram is for an A32/T32 instruction that does not have a cond field in bits[31:28].
• The encoding diagram is for an A32/T32 instruction that has a cond field in bits[31:28], and bits[31:28] of
the instruction are not 0b1111.
In the context of the instruction pseudocode, the execution model for an instruction is:
1. Find all encoding diagrams that match the instruction. It is possible that no encoding diagram matches. In
that case, abandon this execution model and consult the relevant instruction set chapter instead to find out
how the instruction is to be treated. The bit pattern of such an instruction is usually reserved and UNDEFINED,
though there are some other possibilities. For example, unallocated hint instructions are documented as being
reserved and executed as NOPs.
2. If the operation pseudocode for the matching encoding diagrams starts with a condition code check, perform
that check. If the condition code check fails, abandon this execution model and treat the instruction as a NOP.
If there are multiple matching encoding diagrams, either all or none of their corresponding pieces of common
pseudocode start with a condition code check.
3. Perform the encoding-specific pseudocode for each of the matching encoding diagrams independently and in
parallel. Each such piece of encoding-specific pseudocode starts with a bitstring variable for each named bit
or multi-bit field in its corresponding encoding diagram, named the same as the bit or multi-bit field and
initialized with the values of the corresponding bit or bits from the bit pattern of the instruction.
In a few cases, the encoding diagram contains more than one bit or field with same name. In these cases, the
values of the different instances of those bits or fields must be identical. The encoding-specific pseudocode
contains a special case using the Consistent() function to specify what happens if they are not identical.
Consistent() returns TRUE if all instruction bits or fields with the same name as its argument have the same
value, and FALSE otherwise.
If there are multiple matching encoding diagrams, all but one of the corresponding pieces of pseudocode must
contain a special case that indicates that it does not apply. Discard the results of all such pieces of pseudocode
and their corresponding encoding diagrams.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-193
ID022122 Non-Confidential
Pseudocode Definition
E3.2 Pseudocode for instruction descriptions
There is now one remaining piece of pseudocode and its corresponding encoding diagram left to consider.
This pseudocode might also contain a special case, most commonly one indicating that it is CONSTRAINED
UNPREDICTABLE. If so, abandon this execution model and treat the instruction according to the special case.
4. Check the should be bits of the encoding diagram against the corresponding bits of the bit pattern of the
instruction. If any of them do not match, abandon this execution model and treat the instruction as
CONSTRAINED UNPREDICTABLE, see SBZ or SBO fields T32 and A32 in instructions on page K1-11158.
5. Perform the rest of the operation pseudocode for the instruction description that contains the encoding
diagram. That pseudocode starts with all variables set to the values they were left with by the
encoding-specific pseudocode.
The ConditionPassed() call in the common pseudocode, if present, performs step 2, and the
EncodingSpecificOperations() call performs steps 3 and 4.
• An exception can be taken during execution of the pseudocode for an instruction, either explicitly as a result
of the execution of a pseudocode function such as Abort(), or implicitly, for example if an interrupt is taken
during execution of an LDM instruction. If this happens, the pseudocode does not describe the extent to which
the normal behavior of the instruction occurs. To determine that, see the descriptions of the exceptions in
Handling exceptions that are taken to an Exception level using AArch32 on page G1-8545.
E3-194 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.3 Data types
The type of a literal is determined by its syntax. A variable can be assigned to without an explicit declaration. The
variable implicitly has the type of the assigned value. For example, the following assignments implicitly declare the
variables x, y and z to have types integer, bitstring of length 1, and Boolean, respectively.
x = 1;
y = '1';
z = TRUE;
Variables can also have their types declared explicitly by preceding the variable name with the name of the type.
The following example declares explicitly that a variable named count is an integer.
integer count;
This is most often done in function definitions for the arguments and the result of the function.
E3.3.2 Bitstrings
This section describes the bitstring data type.
Syntax
bits(N) The type name of a bitstring of length N.
bit A synonym of bits(1).
Description
A bitstring is a finite-length string of 0s and 1s. Each length of bitstring is a different type. The minimum permitted
length of a bitstring is 0.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-195
ID022122 Non-Confidential
Pseudocode Definition
E3.3 Data types
Bitstring constants literals are written as a single quotation mark, followed by the string of 0s and 1s, followed by
another single quotation mark. For example, the two constants literals of type bit are '0' and '1'. Spaces can be
included in bitstrings for clarity.
The bits in a bitstring are numbered from left to right N-1 to 0. This numbering is used when accessing the bitstring
using bitslices. In conversions to and from integers, bit N-1 is the MSByte and bit 0 is the LSByte. This order
matches the order in which bitstrings derived from encoding diagrams are printed.
Every bitstring value has a left-to-right order, with the bits being numbered in standard little-endian order. That is,
the leftmost bit of a bitstring of length N is bit (N–1) and its right-most bit is bit 0. This order is used as the
most-significant-to-least-significant bit order in conversions to and from integers. For bitstring constants and
bitstrings that are derived from encoding diagrams, this order matches the way that they are printed.
Bitstrings are the only concrete data type in pseudocode, corresponding directly to the contents values that are
manipulated in registers, memory locations, and instructions. All other data types are abstract.
E3.3.3 Integers
This section describes the data type for integer numbers.
Syntax
integer The type name for the integer data type.
Description
Pseudocode integers are unbounded in size and can be either positive or negative. That is, they are mathematical
integers rather than what computer languages and architectures commonly call integers. Computer integers are
represented in pseudocode as bitstrings of the appropriate length, and the pseudocode provides functions to interpret
those bitstrings as integers.
Integer literals are normally written in decimal form, such as 0, 15, -1234. They can also be written in C-style
hexadecimal form, such as 0x55 or 0x80000000. Hexadecimal integer literals are treated as positive unless they have
a preceding minus sign. For example, 0x80000000 is the integer +231. If -231 needs to be written in hexadecimal, it
must be written as -0x80000000.
E3.3.4 Reals
This section describes the data type for real numbers.
Syntax
real The type name for the real data type.
Description
Pseudocode reals are unbounded in size and precision. That is, they are mathematical real numbers, not computer
floating-point numbers. Computer floating-point numbers are represented in pseudocode as bitstrings of the
appropriate length, and the pseudocode provides functions to interpret those bitstrings as reals.
Real constant literals are written in decimal form with a decimal point. This means 0 is an integer constant literal,
but 0.0 is a real constant literal.
E3.3.5 Booleans
This section describes the Boolean data type.
Syntax
boolean The type name for the Boolean data type.
E3-196 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.3 Data types
Description
A Boolean is a logical TRUE or FALSE value.
Note
This is not the same type as bit, which is a bitstring of length 1. A Boolean can only take on one of two values: TRUE
or FALSE.
E3.3.6 Enumerations
This section describes the enumeration data type.
Description
An enumeration is a defined set of named values.
An enumeration must contain at least one named value. A named value must not be shared between enumerations.
Enumerations must be defined explicitly, although a variable of an enumeration type can be declared implicitly by
assigning one of the named values to it. By convention, each named value starts with the name of the enumeration
followed by an underscore. The name of the enumeration is its type name, or type, and the named values are its
possible values.
E3.3.7 Structures
This section describes the structure data type.
ShiftSpec abc;
A declaration of a variable named abc of type ShiftSpec.
abc.shift
Syntax to refer to the individual members within the structure variable.
Description
A structure is a compound data type composed of one or more data items. The data items can be of different data
types. This can include compound data types. The data items of a structure are called its members and are named.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-197
ID022122 Non-Confidential
Pseudocode Definition
E3.3 Data types
In the syntax section, the example defines a structure called ShiftSpec with two members. The first is a bitstring of
length 2 named shift and the second is an integer named amount. After declaring a variable of that type named abc,
the members of this structure are referred to as abc.shift and abc.amount.
Every definition of a structure creates a different type, even if the number and type of their members are identical.
For example:
ShiftSpec1 and ShiftSpec2 are two different types despite having identical definitions. This means that the value in
a variable of type ShiftSpec1 cannot be assigned to variable of type ShiftSpec2.
E3.3.8 Tuples
This section describes the tuple data type.
Examples
(bits(32) shifter_result, bit shifter_carry_out)
An example of the tuple syntax.
Description
A tuple is an ordered set of data items, separated by commas and enclosed in parentheses. The items can be of
different types and a tuple must contain at least one data item.
Tuples are often used as the return type for functions that return multiple results. For example, in the syntax section,
the example tuple is the return type of the function Shift_C(), which performs a standard A32/T32 shift or rotation.
Its return type is a tuple containing two data items, with the first of type bits(32) and the second of type bit.
Each tuple is a separate compound data type. The compound data type is represented as a comma-separated list of
ordered data types between parentheses. This means that the example tuple at the start of this section is of type
(bits(32), bit). The general principle that types can be implied by an assignment extends to implying the type of
the elements in the tuple. For example, in the syntax section, the example assignment implicitly declares:
• shift_t to be of type bits(2).
• shift_n to be of type integer.
• (shift_t, shift_n) to be a tuple of type (bits(2), integer).
E3-198 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.3 Data types
E3.3.9 Arrays
This section describes the array data type.
Syntax
array The type name for the array data type.
Description
An array is an ordered set of fixed size containing items of a single data type. This can include compound data types.
Pseudocode arrays are indexed by either enumerations or integer ranges. An integer range is represented by the
lower inclusive end of the range, then .., then the upper inclusive end of the range.
For example:
The following example declares an array of 31 bitstrings of length 64, indexed from 0 to 30.
Arrays are always explicitly declared, and there is no notation for a constant literal array. Arrays always contain at
least one element data item, because:
• Enumerations always contain at least one symbolic constant named value.
• Integer ranges always contain at least one integer.
An array declared with an enumeration type as the index must be accessed using enumeration values of that
enumeration type. An array declared with an integer range type as the index must be accessed using integer values
from that inclusive range. Accessing such an array with an integer value outside of the range is a coding error.
Arrays do not usually appear directly in pseudocode. The items that syntactically look like arrays in pseudocode are
usually array-like functions such as R[i], MemU[address, size] or Elem[vector, i, size]. These functions package
up and abstract additional operations normally performed on accesses to the underlying arrays, such as register
banking, memory protection, endian-dependent byte ordering, exclusive-access housekeeping and Advanced SIMD
element processing. See Function and procedure calls on page E3-206.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-199
ID022122 Non-Confidential
Pseudocode Definition
E3.4 Operators
E3.4 Operators
This section describes:
• Relational operators.
• Boolean operators.
• Bitstring operators on page E3-201.
• Arithmetic operators on page E3-201.
• The assignment operator on page E3-202.
• Precedence rules on page E3-204.
• Conditional expressions on page E3-204.
• Operator polymorphism on page E3-204.
Note
This special form is permitted in the implied equality comparisons in the when parts of case … of … structures.
Comparisons
If x and y are integers or reals, then x < y, x <= y, x > y, and x >= y are less than, less than or equal, greater than,
and greater than or equal comparisons between them, producing Boolean results.
If x and y are Boolean expressions, then x && y is the result of ANDing them together. As in the C language, if x is
FALSE, the result is determined to be FALSE without evaluating y.
Note
This is known as short circuit evaluation.
If x and y are booleans, then x || y is the result of ORing them together. As in the C language, if x is TRUE, the result
is determined to be TRUE without evaluating y.
E3-200 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.4 Operators
Note
If x and y are booleans or Boolean expressions, then the result of x != y is the same as the result of exclusive-ORing
x and y together. The operator EOR only accepts bitstring arguments.
If x and y are bitstrings of the same length, x AND y, x OR y, and x EOR y are the bitstrings of that same length obtained
by logically ANDing, logically ORing, and exclusive-ORing corresponding bits of x and y together.
The bitstring slicing operator addresses specific bits in a bitstring. This can be used to create a new bitstring from
extracted bits or to set the value of specific bits. Its syntax is x<integer_list>, where x is the integer or bitstring
being sliced, and <integer_list> is a comma-separated list of integers enclosed in angle brackets. The length of the
resulting bitstring is equal to the number of integers in <integer_list>. In x<integer_list>, each of the integers in
<integer_list> must be:
• >= 0.
• < Len(x) if x is a bitstring.
The definition of x<integer_list> depends on whether integer_list contains more than one integer:
• If integer_list contains more than one integer, x<i, j, k,…, n> is defined to be the concatenation:
x<i> : x<j> : x<k> : … : x<n>.
• If integer_list consists of just one integer i, x<i> is defined to be:
— If x is a bitstring, '0' if bit i of x is a zero and '1' if bit i of x is a one.
— If x is an integer, and y is the unique integer in the range 0 to 2^(i+1)-1 that is congruent to x modulo
2^(i+1). Then x<i> is '0' if y < 2^i and '1' if y >= 2^i.
Loosely, this definition treats an integer as equivalent to a sufficiently long two’s complement
representation of it as a bitstring.
The notation for a range expression is i:j with i >= j is shorthand for the integers in order from i down to j, with
both end values included. For example, instr<31:28> represents instr<31, 30, 29, 28>.
x<integer_list> is assignable provided x is an assignable bitstring and no integer appears more than once in
<integer_list>. In particular, x<i> is assignable if x is an assignable bitstring and 0 <= i < Len(x).
Encoding diagrams for registers frequently show named bits or multi-bit fields. For example, the encoding diagram
for the APSR shows its bit<31> as N. In such cases, the syntax APSR.N is used as a more readable synonym for
APSR<31> as named bits can be referred to with the same syntax as referring to members of a struct. A
comma-separated list of named bits enclosed in angle brackets following the register name allows multiple bits to
be addressed simultaneously. For example, APSR.<N, C, Q> is synonymous with APSR <31, 29, 27>.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-201
ID022122 Non-Confidential
Pseudocode Definition
E3.4 Operators
There are two cases where the types of x and y can be different. A bitstring and an integer can be added together to
allow the operation PC + 4. An integer can be subtracted from a bitstring to allow the operation PC - 2.
If x and y are bitstrings of the same length N, so that N = Len(x) = Len(y), then x+y and x-y are the least significant
N bits of the results of converting x and y to integers and adding or subtracting them. Signed and unsigned
conversions produce the same result:
If x is a bitstring of length N and y is an integer, x+y and x-y are the bitstrings of length N defined by x+y = x + y<N-1:0>
and x-y = x - y<N-1:0>. Similarly, if x is an integer and y is a bitstring of length M, x+y and x-y are the bitstrings of
length M defined by x+y = x<M-1:0> + y and x-y = x<M-1:0> - y.
Multiplication
If x and y are integers or reals, then x * y is the product of x and y. It is of type integer if x and y are both of type
integer, and real otherwise.
If x and y are integers, then x DIV y and x MOD y are defined by:
x DIV y = RoundDown(x/y)
x MOD y = x - y * (x DIV y)
It is a pseudocode error to use any of x/y, x MOD y, or x DIV y in any context where y can be zero.
Scaling
If x and n are of type integer, then:
• x << n = RoundDown(x * 2^n).
• x >> n = RoundDown(x * 2^(-n)).
Raising to a power
If x is an integer or a real and n is an integer, then x^n is the result of raising x to the power of n, and:
• If x is of type integer, then x^n is of type integer.
• If x is of type real, then x^n is of type real.
<assignable_expression> = <expression>;
E3-202 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.4 Operators
Variable names normally consist of alphanumeric and underscore characters, starting with an alphabetic or
underscore character.
Each register defined in an Arm architecture specification defines a correspondingly named pseudocode bitstring
variable, and that variable has the stated behavior of the register. For example, if a bit of a register is defined as
RAZ/WI, then the corresponding bit of its variable reads as '0' and ignore writes.
An expression like bits(32) UNKNOWN indicates that the result of the expression is a value of the given type, but the
architecture does not specify what value it is and software must not rely on such values. The value produced must
not:
• Return information that cannot be accessed at the current or a lower level of privilege using instructions that
are not UNPREDICTABLE or CONSTRAINED UNPREDICTABLE and do not return UNKNOWN values,
• Be promoted as providing any useful information to software.
Note
UNKNOWN values are similar to the definition of UNPREDICTABLE, but do not indicate that the entire architectural
state becomes unspecified.
Only the following expressions are assignable. This means that these are the only expressions that can be placed on
the left-hand side of an assignment.
• Variables.
• The results of applying some operators to other expressions.
The description of each language-defined operator that can generate an assignable expression specifies the
circumstances under which it does so. For example, those circumstances might require that one or more of
the expressions the operator operates on is an assignable expression.
• The results of applying array-like functions to other expressions. The description of an array-like function
specifies the circumstances under which it can generate an assignable expression.
Note
If the right-hand side in an assignment is a function returning a tuple, an item in the assignment destination can be
written as - to indicate that the corresponding item of the assigned tuple value is discarded. For example:
The expression on the right-hand side itself can be a tuple. For example:
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-203
ID022122 Non-Confidential
Pseudocode Definition
E3.4 Operators
• For a function, the definition of the function determines the data type.
Table E3-1 on page E3-204 summarizes the operand types valid for each unary operator and the result type.
Table E3-2 on page E3-204 summarizes the operand types valid for each binary operator and the result type.
Table E3-1 Result and operand types permitted for unary operators
integer integer
-
real real
! boolean boolean
Table E3-2 Result and operand types permitted for binary operators
integer
bits(N)
bits(N)
integer integer
== boolean
real real
enumeration enumeration
boolean boolean
bits(N) bits(N)
real real
E3-204 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.4 Operators
Table E3-2 Result and operand types permitted for binary operators (continued)
integer integer
MOD integer
bits(N) integer
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-205
ID022122 Non-Confidential
Pseudocode Definition
E3.5 Statements and control structures
Indentation normally indicates the structure in compound statements. The statements contained in structures such
as if … then … else … or procedure and function definitions are indented more deeply than the statement structure
itself. The end of a compound statement structure and their end is indicated by returning to the original indentation
level or less.
Indentation is normally done by four spaces for each level. Standard indentation uses four spaces for each level of
indent.
E3-206 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.5 Statements and control structures
where <argument prototypes> consists of zero or more argument definitions, separated by commas. Each argument
definition consists of a type name followed by the name of the argument.
Note
This first definition line is not terminated by a semicolon. This distinguishes it from a procedure call.
A function definition is similar, but also declares the return type of the function:
Note
A function or procedure name can include a ".". This is a convention used for functions that have similar but
different behaviors in AArch32 and AArch64 states.
Array-like functions are similar, but are written with square brackets and have two forms. These two forms exist
because reading from and writing to an array element require different functions. They are frequently used in
memory operations. An array-like function definition with a return type is equivalent to reading from an array. For
example:
Its related function definition with no return type is equivalent to writing to an array. For example:
The value prototype determines what data type can be written to the array. The two related functions must share the
same name, but the value prototype and return type can be different.
Procedure calls
A procedure call has the form:
<procedure_name>(<arguments>);
Return statements
A procedure return has the form:
return;
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-207
ID022122 Non-Confidential
Pseudocode Definition
E3.5 Statements and control structures
return <expression>;
if … then … else …
In addition to being a ternary operator, a multi-line if … then … else … structure can act as a control structure and
has the form:
if <boolean_expression> then
<statement 1>;
<statement 2>;
…
<statement n>;
The block of lines consisting of elsif and its indented statements is optional, and multiple elsif blocks can be used.
The block of lines consisting of else and its indented statements is optional.
Abbreviated one-line forms can be used when the then part, and in the else part if it is present, contain only simple
statements such as:
Note
In these forms, <statement 1>, <statement 2>, and <statement A> must be terminated by semicolons. This, and the
fact that the else part is optional, distinguish its use as a control structure from its use as a ternary operator.
case … of …
A case … of … structure has the form:
case <expression> of
when <literal values1>
<statement 1>;
<statement 2>;
…
<statement n>;
otherwise
E3-208 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.5 Statements and control structures
<statement A>;
<statement B>;
…
<statement Z>;
In this structure, <literal values1> and <literal values2> consist of literal values of the same type as <expression>,
separated by commas. There can be additional when groups in the structure. Abbreviated one line forms of when and
otherwise parts can be used when they contain only simple statements.
If <expression> has a bitstring type, the literal values can also include bitstring literals containing 'x' bits, known
as bitmasks. For details, see Equality and non-equality on page E3-200.
repeat … until …
A repeat … until … structure has the form:
repeat
<statement 1>;
<statement 2>;
…
<statement n>;
until <boolean_expression>;
It executes the statement block at least once, and the loop repeats until <boolean expression> evaluates to TRUE.
Variables explicitly declared inside the loop body have scope local to that loop and might not be accessed outside
the loop body.
while … do
A while … do structure has the form:
while <boolean_expression> do
<statement 1>;
<statement 2>;
…
<statement n>;
It begins executing the statement block only if the Boolean expression is true. The loop then runs until the
expression is false.
for …
A for … structure has the form:
where <integer_expr1> is decremented after the loop body executes and continues until <assignable expression> is
less than or equal than <integer_expr2>.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-209
ID022122 Non-Confidential
Pseudocode Definition
E3.5 Statements and control structures
UNDEFINED
This subsection describes the statement:
UNDEFINED;
This statement indicates a special case that replaces the behavior defined by the current pseudocode, apart from
behavior required to determine that the special case applies. The replacement behavior is that the Undefined
Instruction exception is taken.
UNPREDICTABLE
This subsection describes the statement:
UNPREDICTABLE;
This statement indicates a special case that replaces the behavior defined by the current pseudocode, apart from
behavior required to determine that the special case applies. The replacement behavior is UNPREDICTABLE.
SEE…
This subsection describes the statement:
SEE <reference>;
This statement indicates a special case that replaces the behavior defined by the current pseudocode, apart from
behavior required to determine that the special case applies. The replacement behavior is that nothing occurs as a
result of the current pseudocode because some other piece of pseudocode defines the required behavior. The
<reference> indicates where that other pseudocode can be found.
It usually refers to another instruction, but can also refer to another encoding or note of the same instruction.
IMPLEMENTATION_DEFINED
This subsection describes the statement:
IMPLEMENTATION_DEFINED {"<text>"};
This statement indicates a special case that replaces the behavior defined by the current pseudocode, apart from
behavior required to determine that the special case applies. The replacement behavior is IMPLEMENTATION
DEFINED. An optional <text> field can give more information.
E3.5.6 Comments
The pseudocode supports two styles of comments:
• // starts a comment that is terminated by the end of the line.
• /* starts a comment that is terminated by */.
/**/ statements might not be nested, and the first */ ends the comment.
Note
Comment lines do not require a terminating semicolon.
E3-210 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.6 Built-in functions
Bitstring count
If x is a bitstring, BitCount(x) is an integer result equal to the number of bits of x that are ones.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-211
ID022122 Non-Confidential
Pseudocode Definition
E3.6 Built-in functions
IsZero(x) = (BitCount(x) == 0)
IsOnes(x) = (BitCount(x) == Len(x))
IsZeroBit(x) = if IsZero(x) then '1' else '0'
IsOnesBit(x) = if IsOnes(x) then '1' else '0'
If x is a bitstring and i is an integer, then SignExtend(x, i) is x extended to a length of i bits, by adding sufficient
copies of its leftmost bit to its left. That is, if i == Len(x), then SignExtend(x, i) = x, and if i > Len(x), then:
It is a pseudocode error to use either ZeroExtend(x, i) or SignExtend(x, i) in a context where it is possible that
i < Len(x).
Int(x, unsigned) returns either SInt(x) or UInt(x) depending on the value of its second argument.
Absolute value
If x is either of type real or integer, Abs(x) returns the absolute value of x. The result is the same type as x.
E3-212 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.6 Built-in functions
If x and y are both of type integer, Align(x, y) = y * (x DIV y), and is of type integer.
If x is of type bitstring and y is of type integer, Align(x, y) = (Align(UInt(x), y))<Len(x)-1:0>, and is a bitstring
of the same length as x.
It is a pseudocode error to use either form of Align(x, y) in any context where y can be 0. In practice, Align(x, y)
is only used with y a constant power of two, and the bitstring form used with y = 2^n has the effect of producing its
argument with its n low-order bits forced to zero.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-213
ID022122 Non-Confidential
Pseudocode Definition
E3.7 Miscellaneous helper procedures and functions
Note
Chapter J1 Armv8 Pseudocode also has an entry for each of these functions, but currently these entries do not say
anything about the effect of the function. When this information is added in Chapter J1, this section will be removed
from the manual.
E3.7.1 EndOfInstruction()
This procedure terminates processing of the current instruction.
EndOfInstruction();
E3.7.2 Hint_Debug()
This procedure supplies a hint to the debug system.
Hint_Debug(bits(4) option);
E3.7.3 Hint_PreloadData()
This procedure performs a preload data hint.
Hint_PreloadData(bits(32) address);
E3.7.4 Hint_PreloadDataForWrite()
This procedure performs a preload data hint with a probability that the use will be for a write.
Hint_PreloadDataForWrite(bits(32) address);
E3.7.5 Hint_PreloadInstr()
This procedure performs a preload instructions hint.
Hint_PreloadInstr(bits(32) address);
E3.7.6 Hint_Yield()
This procedure performs a Yield hint.
Hint_Yield();
E3.7.7 IsExternalAbort()
This function returns TRUE if the abort currently being processed is an External abort and FALSE otherwise. It is used
only in exception entry pseudocode.
E3-214 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.7 Miscellaneous helper procedures and functions
E3.7.8 IsAsyncAbort()
This function returns TRUE if the abort currently being processed is an asynchronous abort, and FALSE otherwise. It
is used only in exception entry pseudocode.
E3.7.9 LSInstructionSyndrome()
This function returns the extended syndrome information for a fault reported in the HSR.
bits(11) LSInstructionSyndrome();
E3.7.10 ProcessorID()
This function returns an integer that uniquely identifies the executing PE in the system.
integer ProcessorID();
E3.7.11 RemapRegsHaveResetValues()
This function returns TRUE if the remap registers PRRR and NMRR have their IMPLEMENTATION DEFINED reset
values, and FALSE otherwise.
boolean RemapRegsHaveResetValues();
E3.7.12 ResetControlRegisters()
This function resets the System registers and memory-mapped control registers that have architecturally defined
reset values to those values. For more information about the affected registers, see:
• Reset behavior on page D1-4564.
• PE state on reset into AArch32 state on page G1-8602.
AArch64.ResetControlRegisters(boolean ResetIsCold)
AArch32.ResetControlRegisters(boolean ResetIsCold)
E3.7.13 ThisInstr()
This function returns the bitstring encoding of the currently executing instruction.
bits(32) ThisInstr();
Note
Currently, this function is used only on 32-bit instruction encodings.
E3.7.14 ThisInstrLength()
This function returns the length, in bits, of the current instruction. This means it returns 32 or 16:
integer ThisInstrLength();
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-215
ID022122 Non-Confidential
Pseudocode Definition
E3.8 Arm pseudocode definition index
Keyword Meaning
Operator Meaning
: Bitstring concatenation
! Boolean NOT
/ Division of reals
E3-216 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Pseudocode Definition
E3.8 Arm pseudocode definition index
Operator Meaning
= Assignment operator
|| Boolean OR
^ Exponential operator
OR Bitwise OR of bitstrings
Operator Meaning
FALSE One of two values a Boolean can take (other than TRUE)
for … = …to … Loop control structure, counting up from the initial value to the
upper limit
for … = … downto … Loop control structure, counting down from the initial value to
the lower limit
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. E3-217
ID022122 Non-Confidential
Pseudocode Definition
E3.8 Arm pseudocode definition index
Operator Meaning
repeat … until … Loop control structure that runs at least once until the
termination condition is satisfied
TRUE One of two values a Boolean can take (other than FALSE)
while … do … Loop control structure that runs until the termination condition
is satisfied
Keyword Meaning
E3-218 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Glossary
This glossary describes some of the technical terms that are used in Arm documentation.
AHB An AMBA bus protocol supporting pipelined operation, with the address and data phases
occurring during different clock periods, meaning that the address phase of a transfer can occur
during the data phase of the previous transfer. AHB provides a subset of the functionality of the
AMBA AXI protocol.
CoreSight supports access to a system bus infrastructure using the AHB Access Port (AHB-AP).
The AHB-AP provides an AHB Requester port for direct access to system memory. Other bus
protocols can use AHB bridges to map transactions. For example, you can use AHB to AXI
bridges to provide AHB access to an AXI bus matrix.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. Glossary-219
ID022122 Non-Confidential
Glossary
AHB-Lite A subset of the full AMBA AHB protocol specification. It provides all the basic functions that
are required by most AMBA AHB Completer and Requester designs, particularly when used
with a multi-layer AMBA interconnect.
Aligned A data item that is stored at an address that is exactly divisible by the number of bytes that
defines its data size. Aligned doublewords, words, and halfwords have addresses that are
divisible by eight, four, and two respectively. An aligned access is one where the address of the
access is aligned to the size of each element of the access.
AMBA The AMBA family of protocol specifications is the Arm open standard for on-chip buses.
AMBA provides solutions for the interconnection and management of the functional blocks that
make up a System-on-Chip (SoC). Applications include the development of embedded systems
with one or more processors or signal processors and multiple peripherals.
APB An AMBA bus protocol for ancillary or general-purpose peripherals such as timers, interrupt
controllers, UARTs, and I/O ports. It connects to the main system bus through a
system-to-peripheral bus bridge that helps reduce system power consumption.
APB Access Port (APB-AP)
An optional component that provides an APB interface to a SoC, usually to its main functional
buses.
APB-AP See APB Access Port (APB-AP).
ATB An AMBA bus protocol for trace data. A trace device can use an ATB to share CoreSight
capture resources.
ATB bridge A synchronous ATB bridge provides a register slice that meets timing requirements by adding
a pipeline stage. It provides a unidirectional link between two synchronous ATB domains.
An asynchronous ATB bridge provides a unidirectional link between two ATB domains with
asynchronous clocks, and connects components in different clock domains.
The AXI protocol includes optional signaling extensions for low-power operation.
Glossary-220 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Glossary
CoreSight Arm on-chip debug and trace components, that provide the infrastructure for monitoring,
tracing, and debugging a complete system on chip.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. Glossary-221
ID022122 Non-Confidential
Glossary
Simple An observable condition that a trace macrocell can use to control aspects of a
trace.
Complex A boolean combination of simple events that a trace macrocell can use to control
aspects of a trace.
Formatter In an ETB or TPIU, an internal input block that embeds the trace source ID in the data to create
a single trace stream.
Halfword A 16-bit data item. Halfwords are normally halfword-aligned in Arm systems.
Halfword-aligned A data item having a memory address that is divisible by 2.
Host A computer that provides data and other services to another computer. In the context of an Arm
debugger, a computer providing debugging services to a target being debugged.
HTM See AHB Trace Macrocell (HTM).
IEEE 1149.1 The IEEE Standard that defines TAP. Commonly referred to as JTAG.
See IEEE Std 1149.1-1990 IEEE Standard Test Access Port and Boundary-Scan Architecture
specification available from the IEEE Standards Association http://standards.ieee.org.
IGN An abbreviation for Ignore, when describing the behavior of a register or memory access.
IMP DEF See IMPLEMENTATION DEFINED.
IMPLEMENTATION DEFINED
Behavior that is not defined by the architecture, but must be defined and documented by
individual implementations.
When IMPLEMENTATION SPECIFIC is used with this meaning in body text, it is always in SMALL
CAPITALS.
Glossary-222 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Glossary
See IEEE Std 1149.1-1990 IEEE Standard Test Access Port and Boundary-Scan Architecture
specification available from the IEEE Standards Association http://standards.ieee.org.
JTAG See Joint Test Action Group (JTAG).
JTAG Access Port (JTAG-AP)
An optional component that provides debugger access to on-chip scan chains.
JTAG-AP See JTAG Access Port (JTAG-AP).
JTAG-DP See Debug Access Port (DAP).
nSRST Abbreviation of System Reset. The signal that causes the target system other than the TAP
Controller to be reset.
A Program Flow Trace Macrocell (PTM) implements the Program Flow Trace architecture.
RAO See Read-As-One (RAO).
RAO/WI Read-As-One, Writes Ignored.
Hardware must implement the field as Read-as-One, and must ignore writes to the field.
Software can rely on the field reading as all 1s, and on writes being ignored. This description
can apply to a single bit that reads as 1, or to a field that reads as all 1s.
RAZ See Read-As-Zero (RAZ).
RAZ/WI Read-As-One, Writes Ignored.
Hardware must implement the field as Read-as-Zero, and must ignore writes to the field.
Software can rely on the field reading as all 0s, and on writes being ignored. This description
can apply to a single bit that reads as 0, or to a field that reads as all 0s.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. Glossary-223
ID022122 Non-Confidential
Glossary
Replicator In an Arm trace macrocell, a replicator enables two-trace sinks to be wired together and to
operate independently on the same incoming trace stream. The input trace stream is output onto
two independent ATB ports.
RES0 A reserved bit or field with Should-Be-Zero-or-Preserved (SBZP) behavior. Used for fields in
register descriptions, and for fields in architecturally defined data structures that are held in
memory, for example in translation table descriptors.
Note
RES0 is not used in descriptions of instruction encodings.
Within the architecture, there are some cases where a register bit or bitfield:
If the bit has not been successfully written since reset, then the read
of the bit returns the reset value if there is one, or otherwise returns
an UNKNOWN value.
• A direct write to the bit must update a storage location that is
associated with the bit.
• The value of the bit must have no effect on the operation of the core,
other than determining the value read back from the bit.
Whether RES0 bits or fields follow behavior 1 or behavior 2 is implementation
defined on a field-by-field basis.
Glossary-224 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Glossary
Note
As indicated in this list, this value might be written by an indirect write to
the register.
If the bit has not been successfully written since reset, then the read of the
bit returns the reset value if there is one, or otherwise returns an unknown
value.
• A direct write to the bit must update a storage location that is associated
with the bit.
• While the use of the register is such that the bit is described as RES0, the
value of the bit must have no effect on the operation of the core, other than
determining the value read back from that bit.
The RES0 description can apply to bits or bitfields that are read-only or write-only:
• For a read-only bit, RES0 indicates that the bit reads as 0, but software must treat the bit
as UNKNOWN.
• For a write-only bit, RES0 indicates that software must treat the bit as SBZ.
This RES0 description can apply to a single bit that should be written as its preserved value or
as 0, or to a field that should be written as its preserved value or as all 0s.
Within the architecture, there are some cases where a register bit or bitfield:
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. Glossary-225
ID022122 Non-Confidential
Glossary
If the bit has not been successfully written since reset, then the read
of the bit returns the reset value if there is one, or otherwise returns
an UNKNOWN value.
• A direct write to the bit must update a storage location that is
associated with the bit.
• The value of the bit must have no effect on the operation of the core,
other than determining the value read back from the bit.
Whether RES1 bits or fields follow behavior 1 or behavior 2 is implementation
defined on a field-by-field basis.
If the bit has not been successfully written since reset, then the read of the
bit returns the reset value if there is one, or otherwise returns an unknown
value.
• A direct write to the bit must update a storage location that is associated
with the bit.
• While the use of the register is such that the bit is described as RES1, the
value of the bit must have no effect on the operation of the core, other than
determining the value read back from that bit.
The RES1 description can apply to bits or bitfields that are read-only or write-only:
• For a read-only bit, RES1 indicates that the bit reads as 1, but software must treat the bit
as UNKNOWN.
• For a write-only bit, RES1 indicates that software must treat the bit as SBO.
This RES1 description can apply to a single bit that should be written as its preserved value or
as 0, or to a field that should be written as its preserved value or as all 1s.
Glossary-226 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Glossary
Reserved
• Instruction and 32-bit system control register encodings are UNPREDICTABLE.
• Reserved 64-bit system control register encodings are UNDEFINED.
• Reserved register bit fields are UNK/SBZP.
SBO See Should-Be-One (SBO).
SBOP See Should-Be-One-or-Preserved (SBOP).
SBZ See Should-Be-Zero (SBZ).
SBZP See Should-Be-Zero-or-Preserved (SBZP).
Serial wire debug (SWD)
A debug implementation that uses a serial connection between the SoC and a debugger.
The SWDP consists of two terminals that provide synchronous access to debug interfaces. The
terminals are SWDIO and SWCLK.
Serial Wire Debug Port (SWDP)
The interface for serial wire debug.
Serial Wire JTAG Debug Port (SWJ - DP)
The SWJ - DP is a combined JTAG-DP and SWDP that you can use to connect either a Serial
Wire Debug (SWD) or JTAG probe to a target.
Should-Be-One (SBO) Hardware must ignore writes to the field.
Software should write the field as all 1s. If software writes a value that is not all 1s, it must
expect an UNPREDICTABLE result.
This description can apply to a single bit that should be written as 1, or to a field that should be
written as all 1s.
Should-Be-One-or-Preserved (SBOP)
The Armv7 Large Physical Address Extension modified the definition of SBOP to apply to
register fields that are SBOP in some but not all contexts. From the introduction of Armv8 such
register fields are described as RES1, see RES1. The definition of SBOP given here applies only
to fields that are SBOP in all contexts.
If software has read the field since the core implementing the field was last reset and initialized,
it should preserve the value of the field by writing the value that it previously read from the field.
Otherwise, it should write the field as all 1s.
If software writes a value to the field that is not a value that was previously read for the field
and is not all 1s, it must expect an UNPREDICTABLE result.
This description can apply to a single bit that should be written as its preserved value or as 1, or
to a field that should be written as its preserved value or as all 1s.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. Glossary-227
ID022122 Non-Confidential
Glossary
Software should write the field as all 0s. If software writes a value that is not all 0s, it must
expect an UNPREDICTABLE result.
This description can apply to a single bit that should be written as 0, or to a field that should be
written as all 0s.
Should-Be-Zero-or-Preserved (SBZP)
The Armv7 Large Physical Address Extension modified the definition of SBZP to apply to
register fields that are SBZP in some but not all contexts. From the introduction of Armv8 such
register fields are described as RES0, see RES0. The definition of SBZP given here applies only
to fields that are SBZP in all contexts.
If software has read the field since the core implementing the field was last reset and initialized,
it must preserve the value of the field by writing the value that it previously read from the field.
Otherwise, it must write the field as all 0s.
If software writes a value to the field that is not a value that was previously read for the field
and is not all 0s, it must expect an UNPREDICTABLE result.
This description can apply to a single bit that should be written as its preserved value or as 0, or
to a field that should be written as its preserved value or as all 0s.
See also Test Data Input (TDI), Test Data Output (TDO).
Test Access Port (TAP)
The collection of four mandatory and one optional terminals that form the input/output and
control interface to a JTAG boundary-scan architecture. The mandatory terminals are TDI,
TDO, TMS, and TCK. In the JTAG standard, the nTRST signal is optional, but this signal is
mandatory in Arm processors because it is used to reset the debug logic.
See also Joint Test Action Group (JTAG), TAP Controller, TCK, Test Data Input (TDI), Test
Data Output (TDO), TMS.
Test Data Input (TDI) Test Data Input (TDI) is the input to a TAP Controller from the data source (upstream). Usually,
this input connects the RealView ICE run control unit to the first TAP controller.
See also Joint Test Action Group (JTAG), RealView ICE, and TAP Controller.
Test Data Output (TDO)
Test Data Output (TDO) is the electronic signal output from a TAP Controller to the downstream
data sink. Usually, this output connects the last TAP controller to the RealView ICE run control
unit.
See also Joint Test Action Group (JTAG), RealView ICE, TAP Controller.
Glossary-228 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122
Glossary
In any implementation, the bit must read as 0, or all 0s for a bit field. Software must not rely on
the field reading as zero.
An UNKNOWN value must not be documented or promoted as having a defined value or effect.
ARM IHI 0029F Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. Glossary-229
ID022122 Non-Confidential
Glossary
For an Arm trace macrocell, UNPREDICTABLE means that the behavior of the macrocell cannot
be relied on. Such conditions have not been validated. When applied to the programming of an
event resource, only the output of that event resource is UNPREDICTABLE. UNPREDICTABLE
behavior can affect the behavior of the entire system, because the trace macrocell can cause the
core to enter debug state, and external outputs can be used for other purposes.
Glossary-230 Copyright © 2004, 2005, 2012, 2013, 2017, 2022 Arm Limited or its affiliates. All rights reserved. ARM IHI 0029F
Non-Confidential ID022122