Carbon Cortex-A8 Model User Guide for SoC Designer
Carbon Cortex-A8 Model User Guide for SoC Designer
Carbon Cortex-A8 Model User Guide for SoC Designer
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Carbon</strong> <strong>Cortex</strong>-<strong>A8</strong> <strong>Model</strong><br />
<strong>User</strong> <strong>Guide</strong> <strong>for</strong> <strong>SoC</strong> <strong>Designer</strong><br />
<strong>Carbon</strong> <strong>Model</strong> Version 4.0.0<br />
For the ARM <strong>Cortex</strong>-<strong>A8</strong> Processor<br />
Silicon Version: r3p2<br />
SOFTWARE BEFORE SILICON ®<br />
The in<strong>for</strong>mation contained in this document is confidential in<strong>for</strong>mation of <strong>Carbon</strong> Design Systems, Inc.,<br />
and may not be duplicated or disclosed to unauthorized and/or third parties.
Copyright<br />
Copyright © 2003-2012 <strong>Carbon</strong> Design Systems, Inc. All rights reserved.<br />
Files, documents or portions thereof presented on the <strong>Carbon</strong> Design Systems Internet server “Publication”, permits persons<br />
to view, copy, and print the Publication subject to the following conditions:<br />
• The Publication are to be kept strictly confidential<br />
• Copies of the Publication will not be distributed<br />
• Copies of the Publication must include the <strong>Carbon</strong> Design Systems copyright notice<br />
• <strong>Carbon</strong> Design Systems logos may only be used with <strong>Carbon</strong>'s expressed written permission, including but not limited<br />
to: linking through hyperlinks, electronic display, and print <strong>for</strong>mat.<br />
Disclaimer of Warranty<br />
This publication is provided “as is” without warranty of any kind, either expressed or implied, including, but not limited<br />
to, the implied warranties of merchantability, fitness <strong>for</strong> a particular purpose, or non-infringement. <strong>Carbon</strong> Design Systems<br />
assumes no responsibility <strong>for</strong> errors or omissions in this publication or other documents which are referenced by or<br />
linked to this publication.<br />
References to corporations, their services and products, are provided “as is” without warranty of any kind, either<br />
expressed or implied. In no event shall <strong>Carbon</strong> Design Systems be liable <strong>for</strong> any special, incidental, indirect or consequential<br />
damages of any kind, or any damages whatsoever, including, without limitation, those resulting from loss of<br />
use, data or profits, whether or not advised of the possibility of damage, and on any theory of liability, arising out of or in<br />
connection with the use or per<strong>for</strong>mance of this in<strong>for</strong>mation.<br />
This publication may include technical or other inaccuracies or typographical errors. <strong>Carbon</strong> Design Systems may make<br />
improvements and/or changes in the product(s) and/or the program(s) described in this publication and in the publication<br />
itself at any time.<br />
Trademarks<br />
© 2003-2012 <strong>Carbon</strong> Design Systems, Inc. All rights reserved. <strong>Carbon</strong> Design Systems, the <strong>Carbon</strong> Design Systems<br />
logo, <strong>Carbon</strong> <strong>Model</strong> Studio, Replay, OnDemand, <strong>SoC</strong> <strong>Designer</strong>, Software Be<strong>for</strong>e Silicon, SOC-VSP, VSP, and The<br />
Answer to Validation are trademarks or registered trademarks of <strong>Carbon</strong> Design Systems, Incorporated in the United<br />
States and/or other countries.<br />
ARM, AMBA and RealView are registered trademarks of ARM Limited. AHB, APB and AXI are trademarks of ARM<br />
Limited. “ARM” is used to represent ARM Holdings plc; its operating company ARM Limited; and the regional subsidiaries<br />
ARM INC.; ARM KK; ARM Korea Ltd.; ARM Taiwan; ARM France SAS; ARM Consulting (Shanghai) Co.<br />
Ltd.; ARM Belgium N.V.; ARM Embedded Technologies Pvt. Ltd.; and ARM Physical IP, Inc.<br />
Microsoft, Windows 2000, and Windows XP are trademarks or registered trademarks of Microsoft Corporation in the<br />
United States and/or other countries.<br />
SystemC is a trademark of the Open SystemC Initiative.<br />
All other trademarks, registered trademarks, and products referenced herein are the property of their respective owners.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Technical Support<br />
If you have questions or problems concerning <strong>Carbon</strong> software, contact Technical Support.<br />
Phone Support Hours: Monday–Friday<br />
9:00 am–5:00 pm EST<br />
<strong>Carbon</strong> Design Systems, Inc.<br />
125 Nagog Park<br />
Acton, MA 01720<br />
Voice: +1-978-264-7399<br />
Asia: +81-3-5524-1288<br />
Fax: +1-978-264-9990<br />
Email: support@carbondesignsystems.com<br />
Web: www.carbondesignsystems.com<br />
Voice mail is available after hours. You may also access our on-line feedback <strong>for</strong>m any time from the Support page of<br />
the <strong>Carbon</strong> web site.<br />
Document revised May 2012.
<strong>Carbon</strong> Design Systems, Inc. Confidential
Contents<br />
Chapter 1.<br />
Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
<strong>Cortex</strong>-<strong>A8</strong> Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-1<br />
Implemented Hardware Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2<br />
Hardware Features not Implemented . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2<br />
Features Additional to the Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-3<br />
Differences from the ARM RVML <strong>Model</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-3<br />
Adding and Configuring the <strong>SoC</strong> <strong>Designer</strong> Component . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-4<br />
<strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong> Component Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-4<br />
Adding the <strong>Carbon</strong> <strong>Model</strong> to the Component Library . . . . . . . . . . . . . . . . . . . . . . . . . .1-5<br />
Adding the Component to the <strong>SoC</strong> <strong>Designer</strong> Canvas . . . . . . . . . . . . . . . . . . . . . . . . . . .1-5<br />
Available Component ESL Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-6<br />
Setting Component Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-8<br />
Debug Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-10<br />
Register In<strong>for</strong>mation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-11<br />
Run To Debug Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-21<br />
Memory In<strong>for</strong>mation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-21<br />
Disassembly View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-22<br />
Available Profiling Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-23<br />
Hardware Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-23<br />
Software Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-25<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
vi<br />
Contents<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Preface<br />
A <strong>Carbon</strong> <strong>Model</strong> component is a library developed from ARM intellectual property (IP)<br />
that is generated through <strong>Carbon</strong> <strong>Model</strong> Studio. The model then can be used within a<br />
virtual plat<strong>for</strong>m tool, <strong>for</strong> example, <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong>.<br />
About This <strong>Guide</strong><br />
This guide provides all the in<strong>for</strong>mation needed to configure and use the <strong>Carbon</strong> <strong>Cortex</strong>-<strong>A8</strong><br />
processor <strong>Model</strong> in <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong>.<br />
Audience<br />
This guide is intended <strong>for</strong> experienced hardware and software developers who create components<br />
<strong>for</strong> use with <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong>. You should be familiar with the following<br />
products and technology:<br />
• <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong><br />
• Hardware design verification<br />
• Verilog or VHDL programming language<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
viii<br />
Preface<br />
Conventions<br />
This guide uses the following conventions:<br />
Convention Description Example<br />
courier<br />
italic<br />
bold<br />
<br />
Commands, functions,<br />
variables, routines, and<br />
code examples that are set<br />
apart from ordinary text.<br />
New or unusual words or<br />
phrases appearing <strong>for</strong> the<br />
first time.<br />
Action that the user per<strong>for</strong>ms.<br />
Values that you fill in, or<br />
that the system automatically<br />
supplies.<br />
[ text ] Square brackets [ ] indicate<br />
optional text.<br />
[ text1 | text2 ] The vertical bar | indicates<br />
“OR,” meaning that you<br />
can supply text1 or text 2.<br />
sparseMem_t SparseMemCreate-<br />
New();<br />
Transactors provide the entry and exit<br />
points <strong>for</strong> data ...<br />
Click Close to close the dialog.<br />
/ represents the name of<br />
various plat<strong>for</strong>ms.<br />
$CARBON_HOME/bin/modelstudio<br />
[ ]<br />
$CARBON_HOME/bin/modelstudio<br />
[.symtab.db |<br />
.ccfg ]<br />
Also note the following references:<br />
• References to C code implicitly apply to C++ as well.<br />
• File names ending in .cc, .cpp, or .cxx indicate a C++ source file.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Preface<br />
ix<br />
Further reading<br />
This section lists related publications by <strong>Carbon</strong> and by third parties.<br />
<strong>Carbon</strong> <strong>Model</strong> Documentation<br />
The following publications provide in<strong>for</strong>mation that relate directly to models from <strong>Carbon</strong><br />
Design Systems:<br />
• <strong>Carbon</strong> <strong>Cortex</strong>-<strong>A8</strong> <strong>Model</strong> Generation <strong>Guide</strong><br />
• <strong>Carbon</strong> <strong>Model</strong> Installation and Licensing <strong>Guide</strong><br />
<strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong> Documentation<br />
The following publications provide in<strong>for</strong>mation that relate directly to <strong>SoC</strong> <strong>Designer</strong>:<br />
• <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong> Installation <strong>Guide</strong><br />
• <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong> <strong>User</strong> <strong>Guide</strong><br />
• <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong> RTOE <strong>User</strong> <strong>Guide</strong><br />
• <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong> <strong>Model</strong>s Reference<br />
• <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong> AXIv2 Protocol Bundle <strong>User</strong> <strong>Guide</strong><br />
External publications<br />
The following publications provide reference in<strong>for</strong>mation about ARM® products:<br />
• ARM <strong>Cortex</strong>-<strong>A8</strong> Technical Reference Manual<br />
• <strong>Cortex</strong>-<strong>A8</strong> Configuration and Sign-Off <strong>Guide</strong><br />
• AMBA Specification<br />
• AMBA AXI Transaction Level <strong>Model</strong>ing Specification<br />
• Architecture Reference Manual<br />
• ARM RealView <strong>Model</strong> Debugger <strong>User</strong> <strong>Guide</strong><br />
See http://infocenter.arm.com/help/index.jsp <strong>for</strong> access to ARM documentation.<br />
The following publications provide additional in<strong>for</strong>mation on simulation:<br />
• IEEE 1666 SystemC Language Reference Manual, (IEEE Standards Association)<br />
• SPIRIT <strong>User</strong> <strong>Guide</strong>, Revision 1.2, SPIRIT Consortium.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
x<br />
Preface<br />
Glossary<br />
AMBA<br />
AHB<br />
APB<br />
AXI<br />
<strong>Carbon</strong> <strong>Model</strong><br />
<strong>Carbon</strong> <strong>Model</strong><br />
Studio<br />
CASI<br />
CADI<br />
CAPI<br />
Component<br />
ESL<br />
HDL<br />
RTL<br />
<strong>SoC</strong> <strong>Designer</strong><br />
SystemC<br />
Transactor<br />
Advanced Microcontroller Bus Architecture. The ARM open standard on-chip<br />
bus specification that describes a strategy <strong>for</strong> the interconnection and management<br />
of functional blocks that make up a System-on-Chip (<strong>SoC</strong>).<br />
Advanced High-per<strong>for</strong>mance Bus. A bus protocol with a fixed pipeline<br />
between address/control and data phases. It only supports a subset of the functionality<br />
provided by the AMBA AXI protocol.<br />
Advanced Peripheral Bus. A simpler bus protocol than AXI and AHB. It is<br />
designed <strong>for</strong> use with ancillary or general-purpose peripherals such as timers,<br />
interrupt controllers, UARTs, and I/O ports.<br />
Advanced eXtensible Interface. A bus protocol that is targeted at high per<strong>for</strong>mance,<br />
high clock frequency system designs and includes a number of features<br />
that make it very suitable <strong>for</strong> high speed sub-micron interconnect.<br />
A software object created by the <strong>Carbon</strong> <strong>Model</strong> Studio (or <strong>Carbon</strong> compiler)<br />
from an RTL design. The <strong>Carbon</strong> <strong>Model</strong> contains a cycle- and register-accurate<br />
model of the hardware design.<br />
<strong>Carbon</strong>’s graphical tool <strong>for</strong> generating, validating, and executing hardwareaccurate<br />
software models. It creates a <strong>Carbon</strong> <strong>Model</strong>, and it also takes a <strong>Carbon</strong><br />
<strong>Model</strong> as input and generates a <strong>Carbon</strong> component that can be used in<br />
<strong>SoC</strong> <strong>Designer</strong>, Plat<strong>for</strong>m Architect, or OSCI SystemC <strong>for</strong> simulation.<br />
ESL API Simulation Interface, is based on the SystemC communication<br />
library and manages the interconnection of components and communication<br />
between components.<br />
ESL API Debug Interface, enables reading and writing memory and register<br />
values and also provides the interface to external debuggers.<br />
ESL API Profiling Interface, enables collecting historical data from a component<br />
and displaying the results in various <strong>for</strong>mats.<br />
Building blocks used to create simulated systems. Components are connected<br />
together with unidirectional transaction-level or signal-level connections.<br />
Electronic System Level. A type of design and verification methodology that<br />
models the behavior of an entire system using a high-level language such as C<br />
or C++.<br />
Hardware Description Language. A language <strong>for</strong> <strong>for</strong>mal description of electronic<br />
circuits, <strong>for</strong> example, Verilog or VHDL.<br />
Register Transfer Level. A high-level hardware description language (HDL)<br />
<strong>for</strong> defining digital circuits.<br />
The full name is <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong>. A high-per<strong>for</strong>mance, cycle accurate<br />
simulation framework which is targeted at System-on-a-Chip hardware and<br />
software debug as well as architectural exploration.<br />
SystemC is a single, unified design and verification language that enables verification<br />
at the system level, independent of any detailed hardware and software<br />
implementation, as well as enabling co-verification with RTL design.<br />
Transaction adaptors. You add transactors to your <strong>Carbon</strong> component to connect<br />
your component directly to transaction level interface ports <strong>for</strong> your particular<br />
plat<strong>for</strong>m.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Chapter 1<br />
Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
This chapter describes the functionality of the <strong>Model</strong> component, and how to use it in<br />
<strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong>. It contains the following sections:<br />
• <strong>Cortex</strong>-<strong>A8</strong> Functionality<br />
• Adding and Configuring the <strong>SoC</strong> <strong>Designer</strong> Component<br />
• Available Component ESL Ports<br />
• Setting Component Parameters<br />
• Debug Features<br />
• Available Profiling Data<br />
Note:<br />
If you received the <strong>Model</strong> from <strong>Carbon</strong>, see the provided “<strong>Carbon</strong> <strong>Model</strong> Installation<br />
and Licensing <strong>Guide</strong>” <strong>for</strong> <strong>Model</strong> installation and licensing in<strong>for</strong>mation.<br />
1.1 <strong>Cortex</strong>-<strong>A8</strong> Functionality<br />
The <strong>Cortex</strong>-<strong>A8</strong> processor is a high-per<strong>for</strong>mance, low-power, cached application processor<br />
that provides full virtual memory capabilities. The <strong>Cortex</strong>-<strong>A8</strong> processor has:<br />
• configurable 64-bit or 128-bit high-speed Advanced Microprocessor Bus Architecture<br />
(AMBA) with AXI <strong>for</strong> main memory interface supporting multiple outstanding transactions<br />
• a pipeline <strong>for</strong> executing ARM integer instructions<br />
• a NEON pipeline <strong>for</strong> executing Advanced SIMD and VFP instruction sets<br />
• Memory Management Unit (MMU) and separate instruction and data Translation<br />
Look-aside Buffers (TLBs) of 32 entries each<br />
• Level 1 instruction and data caches of 16KB or 32KB configurable size<br />
• Level 2 cache of 0KB, 128KB through 1MB configurable size<br />
• Level 2 cache with parity and Error Correction Code (ECC) configuration option<br />
• Embedded Trace Macrocell (ETM) support <strong>for</strong> non-invasive debug<br />
• static and dynamic power management including Intelligent Energy Management<br />
(IEM)<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-2 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
This section provides a summary of the functionality of the model compared to that of the<br />
hardware, and the per<strong>for</strong>mance and accuracy of the model.<br />
• Implemented Hardware Features<br />
• Hardware Features not Implemented<br />
• Features Additional to the Hardware<br />
1.1.1 Implemented Hardware Features<br />
The following features of the <strong>Cortex</strong>-<strong>A8</strong> hardware are fully implemented in the <strong>Carbon</strong><br />
model:<br />
• ARMv7-A integer instruction set<br />
• Thumb-2 integer instruction set<br />
• Thumb-2 Execution Environment<br />
• NEON Media Acceleration instruction set<br />
• TrustZone Secure Monitor Mode<br />
• VFPv3 instruction set<br />
• VMSAv7-A memory architecture<br />
• L1 instruction and data caches<br />
• L2 unified cache<br />
• External AXI memory interface<br />
See the ARM <strong>Cortex</strong>-<strong>A8</strong> Technical Reference Manual <strong>for</strong> more in<strong>for</strong>mation.<br />
1.1.2 Hardware Features not Implemented<br />
The following features of the <strong>Cortex</strong>-<strong>A8</strong> hardware are not implemented in the <strong>Carbon</strong>ized<br />
model:<br />
• ARMv7 Debug architecture, comprising:<br />
– Embedded Trace Macrocell interface<br />
– APBv3 CoreSight compliant debug interface<br />
– Debug Coprocessor (CP14) registers, interface, and associated instructions<br />
• Test features, including MBIST and integration test registers<br />
• Array debug data access operations<br />
• Parity and error correction are not implemented in the internal RAMs. Timing effects<br />
of parity errors caused by direct CP15 manipulation are not visible<br />
• The AXI bus width must be specified in the <strong>Cortex</strong><strong>A8</strong>.conf configuration file be<strong>for</strong>e<br />
the <strong>Model</strong> has been generated, and is there<strong>for</strong>e not configurable at simulation runtime.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
<strong>Cortex</strong>-<strong>A8</strong> Functionality 1-3<br />
1.1.3 Features Additional to the Hardware<br />
The following features that are implemented in the <strong>Cortex</strong>-<strong>A8</strong> model do not exist in the<br />
<strong>Cortex</strong>-<strong>A8</strong> hardware. These features have been added to the model <strong>for</strong> enhanced usability.<br />
• The component supports positive and negative level irq and fiq signal. This is configurable<br />
using the negLogic parameter (see Table 1-3 on page 1-9).<br />
• Semihosting Support. Semihosting enables the target application to communicate with<br />
the host operating system. This is used <strong>for</strong> external time synchronization, file handling<br />
operations, console input/output, and similar functionality.<br />
• Debug and Profiling. For more in<strong>for</strong>mation about debug and profiling features, refer<br />
to the sections Debug Features and Available Profiling Data, respectively.<br />
• The “run to debug point” feature has been added. This feature <strong>for</strong>ces the debugger to<br />
advance the processor to the debug state instead of having the model get into a nondebuggable<br />
state. See “Run To Debug Point” on page 1-21 <strong>for</strong> more in<strong>for</strong>mation.<br />
1.1.4 Differences from the ARM RVML <strong>Model</strong><br />
The following differences exist between the <strong>Carbon</strong> <strong>Model</strong> and the older ARM® Real-<br />
View® <strong>Model</strong> Library model.<br />
• The <strong>Carbon</strong> model uses the AXI v2 port interface instead of the v1 interface used by<br />
the RVML model.<br />
• No software profiling is available.<br />
• When using semihosting you must use the semihost component from <strong>Carbon</strong>. This<br />
“<strong>Carbon</strong>Semihost” component is included in the <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong> Standard<br />
<strong>Model</strong> Library, version 3.0 or greater. The ARM RVML semihost component will not<br />
work with the <strong>Carbon</strong> <strong>Model</strong>. Additionally, only a single core is currently supported<br />
<strong>for</strong> semihosting.<br />
• Differences in component ports:<br />
– The following ports are not available in the <strong>Carbon</strong> <strong>Model</strong>: CPEXIST,<br />
L1RSTDISABLE, L2RSTDISABLE, SILICONID, NEON_RESET, RESET, axiclk,<br />
and semihostbus.<br />
– The following ports have been added to the <strong>Carbon</strong> <strong>Model</strong>: extSemi.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-4 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
1.2 Adding and Configuring the <strong>SoC</strong> <strong>Designer</strong> Component<br />
The following topics briefly describe how to use the component. See the <strong>Carbon</strong> <strong>SoC</strong><br />
<strong>Designer</strong> <strong>User</strong> <strong>Guide</strong> <strong>for</strong> more in<strong>for</strong>mation.<br />
• <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong> Component Files<br />
• Adding the <strong>Carbon</strong> <strong>Model</strong> to the Component Library<br />
• Adding the Component to the <strong>SoC</strong> <strong>Designer</strong> Canvas<br />
1.2.1 <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong> Component Files<br />
The component files are the final output from the <strong>Carbon</strong> <strong>Model</strong> Studio compile and are<br />
the input to <strong>SoC</strong> <strong>Designer</strong>. There are two versions of the component; an optimized release<br />
version <strong>for</strong> normal operation, and a debug version.<br />
On Linux, the debug version of the component is compiled without optimizations and<br />
includes debug symbols <strong>for</strong> use with gdb. The release version is compiled without debug<br />
in<strong>for</strong>mation and is optimized <strong>for</strong> per<strong>for</strong>mance.<br />
On Windows, the debug version of the component is compiled referencing the debug runtime<br />
libraries so it can be linked with the debug version of <strong>SoC</strong> <strong>Designer</strong>. The release version<br />
is compiled referencing the release runtime library. Both release and debug versions<br />
generate debug symbols <strong>for</strong> use with the Visual C++ debugger on Windows.<br />
The provided component files are listed below:<br />
Table 1-1 <strong>Carbon</strong> <strong>SoC</strong> <strong>Designer</strong> Component Files<br />
Plat<strong>for</strong>m File Description<br />
Linux<br />
Windows<br />
maxlib.lib.conf<br />
lib.mx.so<br />
lib.mx_DBG.so<br />
maxlib.lib.windows.conf<br />
lib.mx.dll<br />
lib.mx_DBG.dll<br />
<strong>SoC</strong> <strong>Designer</strong> configuration file<br />
<strong>SoC</strong> <strong>Designer</strong> component runtime file<br />
<strong>SoC</strong> <strong>Designer</strong> component debug file<br />
<strong>SoC</strong> <strong>Designer</strong> configuration file<br />
<strong>SoC</strong> <strong>Designer</strong> component runtime file<br />
<strong>SoC</strong> <strong>Designer</strong> component debug file<br />
Additionally, this <strong>User</strong> <strong>Guide</strong> PDF file, the <strong>Carbon</strong> <strong>Model</strong> Installation and Licensing<br />
<strong>Guide</strong>, and a ReadMe text file are provided with the component.<br />
Note:<br />
If you generated these files from a <strong>Carbon</strong> <strong>Model</strong> Kit, they are located in<br />
/data/<strong>SoC</strong><strong>Designer</strong>. If you installed them from a model package from<br />
<strong>Carbon</strong> Design Systems, they are located where you instructed the installer to<br />
place them.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Adding and Configuring the <strong>SoC</strong> <strong>Designer</strong> Component 1-5<br />
1.2.2 Adding the <strong>Carbon</strong> <strong>Model</strong> to the Component Library<br />
The compiled <strong>Carbon</strong> <strong>Model</strong> component is provided as a configuration file (.conf). To<br />
make the component available in the Component Window in <strong>SoC</strong> <strong>Designer</strong> Canvas, per<strong>for</strong>m<br />
the following steps:<br />
1. Launch <strong>SoC</strong> <strong>Designer</strong> Canvas.<br />
2. From the File menu, select Preferences.<br />
3. Click on Component Library in the list on the left.<br />
4. Under the Additional Component Configuration Files window, click Add.<br />
5. Browse to the location where the <strong>SoC</strong> <strong>Designer</strong> model is located and select the component<br />
configuration file:<br />
– maxlib.lib.conf (<strong>for</strong> Linux)<br />
– maxlib.lib.windows.conf (<strong>for</strong> Windows)<br />
6. Click OK.<br />
7. To save the preferences permanently, click the OK & Save button.<br />
The component is now available from the <strong>SoC</strong> <strong>Designer</strong> Component Window.<br />
1.2.3 Adding the Component to the <strong>SoC</strong> <strong>Designer</strong> Canvas<br />
Locate the component in the Component Window and drag it out to the Canvas. It will<br />
appear as shown in Figure 1-1.<br />
Figure 1-1 <strong>Cortex</strong>-<strong>A8</strong> Components in <strong>SoC</strong> <strong>Designer</strong><br />
The figure shows the component with one Master AXI port.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-6 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
1.3 Available Component ESL Ports<br />
Table 1-2 describes the ESL ports that are exposed in <strong>SoC</strong> <strong>Designer</strong>. Some ports may or<br />
may not appear depending on the settings that you enabled in the configuration file (<strong>for</strong><br />
example, CORTEX<strong>A8</strong>.conf). See the ARM <strong>Cortex</strong>-<strong>A8</strong> Technical Reference Manual <strong>for</strong><br />
more in<strong>for</strong>mation.<br />
Table 1-2 ESL Component Ports<br />
ESL Port Description Direction Type<br />
CFGEND0<br />
CFGNMFI<br />
CFGTE<br />
CLKSTOPREQ<br />
CP15SDISABLE<br />
FIQ 1<br />
IRQ 1<br />
SECMONOUTEN<br />
VINITHI<br />
Endianness configuration. Controls the state of EE bit in<br />
the CP15 Control Register at reset:<br />
0 = EE bit is LOW<br />
1 = EE bit is HIGH<br />
Configures fast interrupts to be nonmaskable at reset:<br />
0 = clears the NMFI bit in the CP15 c1 Control Register<br />
1 = sets the NMFI bit in the CP15 c1 Control Register<br />
Controls the state of TE bit in the CP15 Control Register<br />
at reset:<br />
0 = TE bit is LOW<br />
1 = TE bit is HIGH<br />
Clock stop request:<br />
0 = do not stop the internal clocks<br />
1 = cause the processor to stop the internal clocks, go into<br />
low active power mode, and to assert the CLKSTOPACK<br />
output<br />
Disables write access to certain TrustZone registers in the<br />
CP15 system control coprocessor.<br />
Active-LOW asynchronous fast interrupt request:<br />
0 = activate fast interrupt<br />
1 = do not activate fast interrupt<br />
Active-LOW asynchronous interrupt request:<br />
0 = activate interrupt<br />
1 = do not activate interrupt<br />
Security monitor output enable at reset:<br />
0 = disables SECMONOUT[86:0]<br />
1 = enables SECMONOUT[86:0].<br />
Controls the start location of the exception vectors at<br />
reset:<br />
0 = starts exception vectors at address 0x00000000<br />
1 = starts exception vectors at address 0xFFFF0000<br />
Input<br />
Input<br />
Input<br />
Input<br />
Input<br />
Input<br />
Input<br />
Input<br />
Input<br />
Signal slave<br />
Signal slave<br />
Signal slave<br />
Signal slave<br />
Signal slave<br />
Signal slave<br />
Signal slave<br />
Signal slave<br />
Signal slave<br />
clk_in Input clock. Input Clock slave<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Available Component ESL Ports 1-7<br />
CLKSTOPACK<br />
DMAEXTERRIRQ<br />
DMAIRQ<br />
DMASIRQ<br />
PMUIRQ<br />
SECMONOUT<br />
STANDBYWFI<br />
Clock stop acknowledge. Asserted high when CLKSTO-<br />
PREQ is asserted and the core has drained and entered<br />
low active power mode:<br />
0 = the internal clocks are not stopped<br />
1 = the internal clocks are stopped<br />
Active-LOW PLE interrupt on error <strong>for</strong> all transfers:<br />
0 = interrupt active<br />
1 = interrupt not active<br />
Active-LOW PLE interrupt on completion <strong>for</strong> nonsecure<br />
transfers:<br />
0 = interrupt active<br />
1 = interrupt not active<br />
Active-LOW PLE interrupt on completion <strong>for</strong> secure<br />
transfers:<br />
0 = interrupt active<br />
1 = interrupt not active<br />
Active-LOW PMU interrupt signal:<br />
0 = PMU interrupt active<br />
1 = PMU interrupt not active<br />
Security monitor output. See the <strong>Cortex</strong>-<strong>A8</strong> TRM <strong>for</strong> a<br />
detailed list of pins and their descriptions.<br />
Standby mode flag generated by WFI operation:<br />
0 = processor not in standby mode<br />
1 = processor in standby mode<br />
Output<br />
Output<br />
Output<br />
Output<br />
Output<br />
Output<br />
Output<br />
Signal master<br />
Signal master<br />
Signal master<br />
Signal master<br />
Signal master<br />
Signal master<br />
Signal master<br />
axiport AXI Master port. Output AXI Transaction<br />
master<br />
extSemi<br />
Table 1-2 ESL Component Ports (Continued)<br />
ESL Port Description Direction Type<br />
Semihosting can be enabled by connecting this port to the<br />
<strong>SoC</strong> <strong>Designer</strong> semihost component contained in the <strong>Carbon</strong><br />
<strong>SoC</strong> <strong>Designer</strong> Standard <strong>Model</strong> Library (v3.0 or<br />
greater).<br />
Output<br />
Transaction<br />
master<br />
1. For these interrupt ports, the active high/low setting is controlled by the negLogic component parameter.<br />
The default is active high.<br />
All pins that are not listed in this table have been either tied or disconnected <strong>for</strong> per<strong>for</strong>mance<br />
reasons.<br />
Note:<br />
Some ESL component port values can be set using a component parameter. This<br />
includes the CFGEND0, CFGNMFI, CFGTE, CP15SDISABLE, SEC-<br />
MONOUTEN, and VINITHI ports. In those cases, the parameter value will be<br />
used whenever the ESL port is not connected. If the port is connected, the connection<br />
value takes precedence over the parameter value.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-8 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
1.4 Setting Component Parameters<br />
You can change the settings of all the component parameters in <strong>SoC</strong> <strong>Designer</strong> Canvas, and<br />
of some of the parameters in <strong>SoC</strong> <strong>Designer</strong> Simulator. To modify the <strong>Carbon</strong> component’s<br />
parameters:<br />
1. In the Canvas, right-click on the <strong>Carbon</strong> component and select Edit Parameters....<br />
You can also double-click the component. The Edit Parameters dialog box appears.<br />
Figure 1-2 Component Parameters Dialog Box<br />
The list of available parameters will be slightly different depending on the settings that<br />
you enabled in the configuration file (<strong>for</strong> example, CORTEX<strong>A8</strong>.conf).<br />
2. In the Parameters window, double-click the Value field of the parameter that you<br />
want to modify.<br />
3. If it is a text field, type a new value in the Value field. If a menu choice is offered,<br />
select the desired option. The parameters are described in Table 1-3.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Setting Component Parameters 1-9<br />
Table 1-3 Component Parameters<br />
Name<br />
Description<br />
Allowed<br />
Values<br />
Default Value Runtime 1<br />
Align Wave<strong>for</strong>ms<br />
axiport Enable Debug<br />
Messages<br />
<strong>Carbon</strong> DB Path<br />
cfgend0<br />
cfgnmfi<br />
cfgte<br />
cp15disable<br />
cpexist<br />
Dump Wave<strong>for</strong>ms<br />
Enable Debug<br />
Messages<br />
Enable PC Tracing<br />
negLogic<br />
PC Tracing File<br />
When set to true, wave<strong>for</strong>ms dumped<br />
by the <strong>Carbon</strong> component are aligned<br />
with the <strong>SoC</strong> <strong>Designer</strong> simulation<br />
time. The reset sequence, however, is<br />
not included in the dumped data.<br />
When set to false, the reset sequence<br />
is dumped to the wave<strong>for</strong>m data,<br />
however, the <strong>Carbon</strong> component time<br />
is not aligned with <strong>SoC</strong> <strong>Designer</strong><br />
time.<br />
Whether debug messages are logged<br />
<strong>for</strong> the AXI port.<br />
Sets the directory path to the <strong>Carbon</strong><br />
database file.<br />
Endianness configuration. Controls<br />
the initial state at reset of the EE bit in<br />
the CP15 control register.<br />
Configures fast interrupts to be nonmaskable.<br />
Controls the initial state at reset of the<br />
TE bit in the CP15 control register.<br />
Disables write access to certain Trust-<br />
Zone CP15 registers.<br />
Enables access programming of coprocessors<br />
0-13.<br />
Whether <strong>SoC</strong> <strong>Designer</strong> dumps wave<strong>for</strong>ms<br />
<strong>for</strong> this component.<br />
Whether debug messages are logged<br />
<strong>for</strong> the component.<br />
Enables dumping a PC trace to disk<br />
containing decode PCs and actual<br />
branch PCs. See “Software Profiling”<br />
on page 1-25.<br />
Sets IRQ/FIQ assertion to use negative<br />
logic. Default of false means<br />
0=off and 1=on. True means 0=on<br />
and 1=off.<br />
The file to write the PC trace in<strong>for</strong>mation.<br />
The file is written in binary<br />
<strong>for</strong>mat. The C++ file<br />
pctracedump.cpp can be used to<br />
decode the data.<br />
true, false true No<br />
true, false false Yes<br />
Not Used empty No<br />
true, false false Yes<br />
true, false false Yes<br />
true, false false Yes<br />
true, false false Yes<br />
0 – 0x3fff 3072 (0x0c00) Yes<br />
true, false false Yes<br />
true, false false Yes<br />
true, false false No<br />
true, false true Yes<br />
Valid file<br />
name<br />
<strong>Cortex</strong><strong>A8</strong>PC.dat<br />
No<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-10 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
Table 1-3 Component Parameters (Continued)<br />
Name<br />
Description<br />
Allowed<br />
Values<br />
Default Value Runtime 1<br />
secmonouten Enable the security monitor output. true, false false Yes<br />
siliconid<br />
Defines the reset value of the CP15 0 – 0xffffffff 0x41000000 Yes<br />
Silicon ID register.<br />
vinithi<br />
Control of the location of the exception<br />
vectors at reset.<br />
0, 1 0 Yes<br />
Wave<strong>for</strong>m File 2 Name of the wave<strong>for</strong>m file. string carbon_CORTEX<br />
<strong>A8</strong>.vcd<br />
Wave<strong>for</strong>m Timescale<br />
Sets the timescale to be used in the<br />
wave<strong>for</strong>m.<br />
Many values<br />
in drop-down<br />
No<br />
1 ns No<br />
1. Yes means the parameter can be dynamically changed during simulation, No means it can be changed only<br />
when building the system, Reset means it can be changed during simulation, but its new value will be taken<br />
into account only at the next reset.<br />
2. When enabled, <strong>SoC</strong> <strong>Designer</strong> writes accumulated wave<strong>for</strong>ms to the wave<strong>for</strong>m file in the following situations:<br />
when the wave<strong>for</strong>m buffer fills, when validation is paused and when validation finishes, and at the<br />
end of each validation run.<br />
1.5 Debug Features<br />
The <strong>Cortex</strong>-<strong>A8</strong> model has a debug interface (CADI) that allows the user to view, manipulate,<br />
and control the registers and memory, and display disassembly <strong>for</strong> programs running<br />
on the model in the <strong>SoC</strong> <strong>Designer</strong> Simulator or any debugger that supports CADI. A view<br />
can be accessed in <strong>SoC</strong> <strong>Designer</strong> by right clicking on the model and choosing the appropriate<br />
menu entry.<br />
The following topics are discussed in this section:<br />
• Register In<strong>for</strong>mation<br />
• Run To Debug Point<br />
• Memory In<strong>for</strong>mation<br />
• Disassembly View<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Debug Features 1-11<br />
1.5.1 Register In<strong>for</strong>mation<br />
Figure 1-3 shows the Register view of the <strong>Cortex</strong>-<strong>A8</strong> model in <strong>SoC</strong> <strong>Designer</strong> Simulator.<br />
Figure 1-3 <strong>Cortex</strong>-<strong>A8</strong> Registers View<br />
The <strong>Cortex</strong>-<strong>A8</strong> model has many sets of registers that are accessible via the debug interface.<br />
Registers are grouped into sets according to functional area.<br />
• Core Registers<br />
• VFP/Neon Registers<br />
• ID Registers<br />
• Control Registers<br />
• Cache Registers<br />
• PLE Registers<br />
• Perf Registers<br />
• TLB Registers<br />
• VA to PA Registers<br />
• Normal World Registers<br />
• Secure World Registers<br />
• Debug Registers<br />
See the ARM <strong>Cortex</strong>-<strong>A8</strong> Technical Reference Manual <strong>for</strong> detailed descriptions of these<br />
registers.<br />
Note that certain CoProcessor 15 registers will cause the UNDEFINED exception to be<br />
taken when invalid data is written. If this exception is triggered during a debug write<br />
access, the program counter may jump to the undefined exception handler the next time<br />
that cycles are executed.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-12 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
1.5.1.1 Core Registers<br />
The Core group contains the ARM architectural registers.<br />
Table 1-4 Core Registers<br />
Name Description Type<br />
R0 R0 register read-write 1<br />
R1 R1 register read-write 1<br />
R2 R2 register read-write 1<br />
R3 R3 register read-write 1<br />
R4 R4 register read-write 1<br />
R5 R5 register read-write 1<br />
R6 R6 register read-write 1<br />
R7 R7 register read-write 1<br />
R8 R8 register read-write 1<br />
R9 R9 register read-write 1<br />
R10 R10 register read-write 1<br />
R11 R11 register read-write 1<br />
R12 R12 register read-write 1<br />
R13 R13/Stack Pointer register read-write 1<br />
R14 R14/Link Register read-write 1<br />
R15 Program Counter register read-write 1<br />
CPSR Current Program Status register read-write 1<br />
R8_USR R8 USR register read-write 1<br />
R9_USR R9 USR register read-write 1<br />
R10_USR R10 USR register read-write 1<br />
R11_USR R11 USR register read-write 1<br />
R12_USR R12 USR register read-write 1<br />
R13_USR R13 USR register read-write 1<br />
R14_USR R14 USR register read-write 1<br />
R13_IRQ R13 IRQ register read-write 1<br />
R14_IRQ R14 IRQ register read-write 1<br />
SPSR_IRQ Saved Program Status Register IRQ register read-write 1<br />
R8_FIQ R8 FIQ register read-write 1<br />
R9_FIQ R9 FIQ register read-write 1<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Debug Features 1-13<br />
Table 1-4 Core Registers (Continued)<br />
Name Description Type<br />
R10_FIQ R10 FIQ register read-write 1<br />
R11_FIQ R11 FIQ register read-write 1<br />
R12_FIQ R12 FIQ register read-write 1<br />
R13_FIQ R13 FIQ register read-write 1<br />
R14_FIQ R14 FIQ register read-write 1<br />
SPSR_FIQ Saved Program Status Register FIQ register read-write 1<br />
R13_SVC R13 SVC register read-write 1<br />
R14_SVC R14 SVC register read-write 1<br />
SPSR_SVC Saved Program Status Register SVC register read-write 1<br />
R13_ABT R13 ABT register read-write 1<br />
R14_ABT R14 ABT register read-write 1<br />
SPSR_ABT Saved Program Status Register ABT register read-write 1<br />
R13_UND R13 UND register read-write 1<br />
R14_UND R14 UND register read-write 1<br />
SPSR_UND Saved Program Status Register UND register read-write 1<br />
R13_MON R13 MON register read-write 1<br />
R14_MON R14 MON register read-write 1<br />
SPSR_MON Saved Program Status Register MON register read-write 1<br />
ExtendedTargetFeatures Used internally <strong>for</strong> TrustZone support read-only<br />
PC_MEMSPACE Used internally <strong>for</strong> TrustZone support read-only<br />
1. Writable at debug point only.<br />
1.5.1.2 VFP/Neon Registers<br />
The VFP/NEON group contains the registers <strong>for</strong> the NEON and VFP coprocessors. The<br />
NEON and VFP coprocessor share the same register bank. You can reference the NEON<br />
and VFP register bank using three explicitly aliased views. See the “NEON and VFP Programmers<br />
<strong>Model</strong>” chapter in the <strong>Cortex</strong>-<strong>A8</strong> TRM <strong>for</strong> more in<strong>for</strong>mation.<br />
Table 1-5 VFP/Neon Registers<br />
Name Description Type<br />
FPSCR Floating-point Status and Control register read-write<br />
S0 - S31 Thirty-two 32-bit single-word registers used by VFP. read-write<br />
D0 - D31<br />
Thirty-two 64-bit double-word registers used by both<br />
VFP and NEON.<br />
read-write<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-14 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
Table 1-5 VFP/Neon Registers (Continued)<br />
Name Description Type<br />
Q0 - Q15 Sixteen 128-bit quad-word registers used by NEON. read-write<br />
FPSID Floating-Point System ID register read-only<br />
MVFR0 Media and VFP Feature Register 0 read-only<br />
MVFR1 Media and VFP Feature Register 1 read-only<br />
FPEXC Floating-Point Exception register read-write<br />
1.5.1.3 ID Registers<br />
The ID group contains registers that describe the processor capabilities.<br />
Table 1-6 ID Registers<br />
Name Description Type<br />
CP15_CACHE_TYPE Cache Type register read-only<br />
CP15_ID Main ID register read-only<br />
CP15_ID_AFR0 Auxiliary Feature 0 register (always returns 0) read-only<br />
CP15_ID_DFR0 Debug Feature 0 register read-only<br />
CP15_ID_ISAR0 Instruction Set Attribute 0 register read-only<br />
CP15_ID_ISAR1 Instruction Set Attribute 1 register read-only<br />
CP15_ID_ISAR2 Instruction Set Attribute 2 register read-only<br />
CP15_ID_ISAR3 Instruction Set Attribute 3 register read-only<br />
CP15_ID_ISAR4 Instruction Set Attribute 4 register read-only<br />
CP15_ID_ISAR5 Instruction Set Attribute 5 register (always returns 0) read-only<br />
CP15_ID_ISAR6 Instruction Set Attribute 6 register (always returns 0) read-only<br />
CP15_ID_ISAR7 Instruction Set Attribute 7 register (always returns 0) read-only<br />
CP15_ID_MMFR0 Memory <strong>Model</strong> Feature 0 register read-only<br />
CP15_ID_MMFR1 Memory <strong>Model</strong> Feature 1 register read-only<br />
CP15_ID_MMFR2 Memory <strong>Model</strong> Feature 2 register read-only<br />
CP15_ID_MMFR3 Memory <strong>Model</strong> Feature 3 register read-only<br />
CP15_ID_PFR0 Processor Feature 0 register read-only<br />
CP15_ID_PFR1 Processor Feature 1 register read-only<br />
CP15_MULTIPROCESSOR_ID Multiprocessor ID register read-only<br />
CP15_SILICON_ID Silicon ID register read-only<br />
CP15_TCM_TYPE TCM Type register read-only<br />
CP15_TLB_TYPE TLB Type register read-only<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Debug Features 1-15<br />
1.5.1.4 Control Registers<br />
The Control group contains registers that dynamically configure the processor.<br />
Table 1-7 Control Registers<br />
Name Description Type<br />
CP15_AUXILIARY_CONTROL Auxiliary Control register read-only<br />
CP15_CID Context ID register read-write<br />
CP15_CONTROL Control register read-write<br />
CP15_COPROCESSOR_ACCESS_<br />
CONTROL<br />
Coprocessor Access Control register. Only available<br />
if Neon and FPU processors are present.<br />
read-only<br />
CP15_DACR Domain Access Control register read-write<br />
CP15_DATA_AUX_FAULT Data Auxiliary Fault Status register read-only<br />
CP15_DFAR Data Fault Address register read-write<br />
CP15_DFSR Data Fault Status register read-write<br />
CP15_IFAR Instruction Fault Address register read-write<br />
CP15_IFSR Instruction Fault Status register read-write<br />
CP15_INSTR_AUX_FAULT Instruction Auxiliary Fault Status register read-only<br />
CP15_INTERRUPT_STATUS Interrupt Status register read-only<br />
CP15_MONITOR_VECTOR_BASE Monitor Vector Base Address register read-write<br />
CP15_NORM_MEM_REMAP Normal Memory Remap register read-write<br />
CP15_NS_ACCESS_CONTROL Nonsecure Access Control register read-only<br />
CP15_PID FCSE PID register read-write<br />
CP15_PRIM_REGION_REMAP Primary Region Remap register read-write<br />
CP15_PRIVILEGED_ID Privileged only Thread and Process ID register read-write<br />
CP15_SECURE_CONFIGURATION Secure Configuration register read-write<br />
CP15_SECURE_DEBUG_ENABLE Secure Debug Enable register read-write<br />
CP15_TTBC TTB Control register read-write<br />
CP15_TTBR0 TTB Register 0 read-write<br />
CP15_TTBR1 TTB Register 1 read-write<br />
CP15_USER_RO_ID <strong>User</strong> read-only Thread and Process ID register read-write<br />
CP15_USER_RW_ID <strong>User</strong> read/write Thread and Process ID register read-write<br />
CP15_VECTOR_BASE Monitor Vector Base Address register read-write<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-16 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
1.5.1.5 Cache Registers<br />
The Cache group contains registers to access cache in<strong>for</strong>mation.<br />
Table 1-8 Cache Registers<br />
Name Description Type<br />
CP15_CACHE_LEVEL_ID Cache Level ID register read-only<br />
CP15_CACHE_SIZE_ID Cache Size ID register read-only<br />
CP15_CACHE_SIZE_SELECT Cache Size Selection register read-only<br />
CP15_L2_CACHE_AUX_CTRL L2 Cache Auxiliary Control register read-write<br />
CP15_L2_CACHE_DATA_LCK L2 Cache Lockdown register read-write<br />
1.5.1.6 PLE Registers<br />
The PLE group contains the PreLoad Engine control and configuration registers.<br />
Table 1-9 PLE Registers<br />
Name Description Type<br />
CP15_CHANNELS_ACCESSIBI PLE <strong>User</strong> Accessibility register<br />
read-write<br />
LITY<br />
CP15_CHANNELS_INTERRUPT PLE Channel Interrupting register<br />
read-only<br />
ING<br />
CP15_CHANNELS_PRESENT PLE Channel Present register read-only<br />
CP15_CHANNELS_RUNNING PLE Channel Running register read-only<br />
CP15_CHANNEL_CONTEXTID PLE Channel Context ID register read-write<br />
CP15_CHANNEL_CONTROL PLE Channel Control register read-write<br />
CP15_CHANNEL_INTERNAL PLE Internal Start Address register<br />
read-write<br />
STARTADDRESS<br />
CP15_CHANNEL_INTERNAL PLE Internal End Address register<br />
read-write<br />
ENDADDRESS<br />
CP15_CHANNEL_NUMBER PLE Channel Number register read-write<br />
CP15_CHANNEL_STATUS PLE Channel Status register read-only<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Debug Features 1-17<br />
1.5.1.7 Perf Registers<br />
The Perf group contains per<strong>for</strong>mance related registers.<br />
Table 1-10 Perf Registers<br />
Name Description Type<br />
CP15_COUNT_ENA_CLR Count Enable Clear register read-write<br />
CP15_COUNT_ENA_SET Count Enable Set register read-write<br />
CP15_CYCLE_COUNT Cycle Count register read-write<br />
CP15_Counter_Select Event Counter Selection register read-write<br />
CP15_EVENT_SELECT Event Selection register read-write<br />
CP15_INTERRUPT_ENABLE_CLR Interrupt Enable Clear register read-write<br />
CP15_INTERRUPT_ENABLE_SET Interrupt Enable Set register read-write<br />
CP15_Overflow_Status Overflow Flag Status register read-write<br />
CP15_PERF_MON_COUNT Per<strong>for</strong>mance Monitor Count register read-write<br />
CP15_PERF_MON_CTRL Per<strong>for</strong>mance Monitor Control register read-write<br />
CP15_USER_ENABLE <strong>User</strong> Enable register read-write<br />
1.5.1.8 TLB Registers<br />
The TLB group contains per<strong>for</strong>mance related registers.<br />
Table 1-11 TLB Registers<br />
Name Description Type<br />
CP15_DATA_TLB_LCK Data TLB Lockdown register read-write<br />
CP15_INSTR_TLB_LCK Instruction TLB Lockdown register read-write<br />
1.5.1.9 VA to PA Registers<br />
The VA to PA group contains registers to per<strong>for</strong>m virtual to physical address translations.<br />
Table 1-12 VA to PA Registers<br />
Name Description Type<br />
CP15_PA Physical Address register read-write<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-18 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
1.5.1.10 Normal World Registers<br />
The Normal World group contains control register that are only accessible in non-secure<br />
mode.<br />
Table 1-13 Normal World Registers<br />
Name Description Type<br />
CP15_N_CID CP15 Context ID Non-secure register read-write<br />
CP15_N_CONTROL CP15 Control Non-secure register read-only<br />
CP15_N_AUXILIARY_ CP15 Auxiliary Control Non-secure register read-write<br />
CONTROL<br />
CP15_N_DACR CP15 Domain Access Control Non-secure register read-write<br />
CP15_N_DATA_AUX_<br />
FAULT<br />
CP15 Data Auxiliary Fault Status Non-secure register<br />
read-write<br />
CP15_N_DFAR CP15 Data Fault Address Non-secure register read-write<br />
CP15_N_DFSR CP15 Data Fault Status Non-secure register read-write<br />
CP15_N_IFAR CP15 Instruction Fault Address Non-secure register read-write<br />
CP15_N_IFSR CP15 Instruction Fault Status Non-secure register read-write<br />
CP15_N_INSTR_AUX_<br />
FAULT<br />
CP15_N_NORM_MEM_<br />
REMAP<br />
CP15 Instruction Auxiliary Fault Status Non-secure<br />
register<br />
CP15 Normal Memory Remap Non-secure register<br />
read-write<br />
read-write<br />
CP15_N_PA CP15 Physical Address Non-secure register read-write<br />
CP15_N_PID CP15 FCSE PID Non-secure register read-write<br />
CP15_N_PRIM_REGION_<br />
REMAP<br />
CP15 Primary Region Remap Non-secure register read-write<br />
CP15_N_PRIVILEGED_<br />
ID<br />
CP15 Privileged only Thread and Process ID Nonsecure<br />
register<br />
read-write<br />
CP15_N_TTBC CP15 TTB Control Non-secure register read-write<br />
CP15_N_TTBR0 CP15 TTB Non-secure Register 0 read-write<br />
CP15_N_TTBR1 CP15 TTB Non-secure Register 1 read-write<br />
CP15_N_USER_RO_ID CP15 <strong>User</strong> read-only Thread and Process ID Nonsecure<br />
read-write<br />
register<br />
CP15_N_USER_RW_ID CP15 <strong>User</strong> read/write Thread and Process ID Nonsecure<br />
read-write<br />
register<br />
CP15_N_VECTOR_BASE CP15 Monitor Vector Base Address Non-secure<br />
register<br />
read-write<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Debug Features 1-19<br />
1.5.1.11 Secure World Registers<br />
The Secure group contains control registers that are only accessible in secure mode.<br />
Table 1-14 Secure World Registers<br />
Name Description Type<br />
CP15_S_CID CP15 Context ID Secure register read-write<br />
CP15_S_CONTROL CP15 Control Secure register read-only<br />
CP15_S_AUXILIARY_ CP15 Auxiliary Control Secure register read-write<br />
CONTROL<br />
CP15_S_DACR CP15 Domain Access Control Secure register read-write<br />
CP15_S_DATA_AUX_ CP15 Data Auxiliary Fault Status Secure register read-write<br />
FAULT<br />
CP15_S_DFAR CP15 Data Fault Address Secure register read-write<br />
CP15_S_DFSR CP15 Data Fault Status Secure register read-write<br />
CP15_S_IFAR CP15 Instruction Fault Address Secure register read-write<br />
CP15_S_IFSR CP15 Instruction Fault Status Secure register read-write<br />
CP15_S_INSTR_AUX_<br />
FAULT<br />
CP15_S_NORM_MEM_<br />
REMAP<br />
CP15 Instruction Auxiliary Fault Status Secure<br />
register<br />
CP15 Normal Memory Remap Secure register<br />
read-write<br />
read-write<br />
CP15_S_PA CP15 Physical Address Secure register read-write<br />
CP15_S_PID CP15 FCSE PID Secure register read-write<br />
CP15_S_PRIM_REGION_ CP15 Primary Region Remap Secure register read-write<br />
REMAP<br />
CP15_S_PRIVILEGED_ID CP15 Privileged only Thread and Process ID read-write<br />
Secure register<br />
CP15_S_TTBC CP15 TTB Control Secure register read-write<br />
CP15_S_TTBR0 CP15 TTB Secure Register 0 read-write<br />
CP15_S_TTBR1 CP15 TTB Secure Register 1 read-write<br />
CP15_S_USER_RO_ID CP15 <strong>User</strong> read-only Thread and Process ID read-write<br />
Secure register<br />
CP15_S_USER_RW_ID CP15 <strong>User</strong> read/write Thread and Process ID read-write<br />
Secure register<br />
CP15_S_VECTOR_BASE CP15 Monitor Vector Base Address Secure register<br />
read-write<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-20 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
1.5.1.12 Debug Registers<br />
The Debug group provides access to the current debug state.<br />
Table 1-15 Debug Registers<br />
Name Description Type<br />
CP14_DIDR Debug ID Register read-only<br />
CP14_DBGROMADDR Debug ROM Address Register read-only<br />
CP14_DBGSELFADDR Debug Self Address Offset Register read-only<br />
CP14_DSCR Debug Status and Control register read-only<br />
CP14_DTRRX Data Transfer Register - Receive read-only<br />
CP14_DTRTX Data Transfer Register - Transmit write-only<br />
THUMB2EE_CONFIG ThumbEE Configuration Register read-write 1<br />
THUMB2EE_HANDLER_BASE ThumbEE Handler Base Register read-write 1<br />
CP14_JAZELLE_ID Jazelle Identity Register read-only<br />
CP14_JAZELLE_OS_CONTROL Jazelle OS Control Register read-only<br />
CP14_JAZELLE_CONFIGURATION Jazelle Main Configuration Register read-only<br />
1. Read/Write in Privileged modes.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Debug Features 1-21<br />
1.5.2 Run To Debug Point<br />
The “run to debug point” feature enhances model debugging. The <strong>Cortex</strong>-<strong>A8</strong> processor is<br />
a dual issue out of order completion machine. This means that while the processor is running<br />
it does not present a coherent programmer’s view state; instructions in the pipeline<br />
may be in different execution states.<br />
This feature <strong>for</strong>ces the processor into a coherent state called “run to debug point”. When<br />
debugging with the ARM RealView Development Suite (RVDS), the model is brought to<br />
the debug point automatically whenever a software breakpoint is hit (including single<br />
stepping). However, if a hardware breakpoint is reached, or the system is advanced by<br />
cycles within <strong>SoC</strong> <strong>Designer</strong>, the model can get to a non-debuggable state. In this event, the<br />
run to debug point will advance the processor to the debug state. It does this by stalling the<br />
instruction within the decode stage and allowing all earlier instructions to complete. Once<br />
that has been accomplished, the model will cause the system to stop simulating.<br />
The run to debug point is available as a context menu item (Run to Debuggable Point) <strong>for</strong><br />
the component within <strong>SoC</strong> <strong>Designer</strong> Simulator. It is also available in the disassembler<br />
view.<br />
1.5.3 Memory In<strong>for</strong>mation<br />
Figure 1-4 shows a Memory view of <strong>Cortex</strong>-<strong>A8</strong> model.<br />
Figure 1-4 <strong>Cortex</strong>-<strong>A8</strong> Memory View<br />
The display only provides a virtual memory view from the core’s perspective. However,<br />
the “axiport” space shows the physical memory view from the perspective of the axi interface.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-22 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
1.5.4 Disassembly View<br />
Figure 1-5 shows the disassembly view of a program running on the <strong>Cortex</strong>-<strong>A8</strong> model in<br />
<strong>SoC</strong> <strong>Designer</strong> Simulator. To display the disassembly view in the <strong>SoC</strong> <strong>Designer</strong> Simulator,<br />
right-click on the <strong>Cortex</strong>-<strong>A8</strong> model and select View Disassembly… from the context<br />
menu.<br />
Figure 1-5 <strong>Cortex</strong>-<strong>A8</strong> Disassembly Window<br />
All CADI windows support breakpoints – when double-clicking on the proper location a<br />
red dot will indicate that a breakpoint is currently active. To remove the breakpoints simply<br />
double-click on the same location again.<br />
The instruction step button has a minimum granularity of one cycle. The <strong>Cortex</strong>-<strong>A8</strong> can<br />
dual-issue many instruction pairs, which will result in the instruction step button completing<br />
two instructions instead of one.<br />
Breakpoints also have a minimum granularity of one cycle. When a breakpoint is placed<br />
on an instruction, program execution will always stop one cycle be<strong>for</strong>e that instruction<br />
completes. If the instruction was dual-issued into the younger pipe, this will mean that the<br />
program counter is pointing to the instruction be<strong>for</strong>e that which triggered the breakpoint.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Available Profiling Data 1-23<br />
1.6 Available Profiling Data<br />
Profiling data is enabled, and can be viewed using the Profiling Manager, which is accessible<br />
via the Debug menu in the <strong>SoC</strong> <strong>Designer</strong> Simulator. Both hardware and software<br />
based profiling is available.<br />
1.6.1 Hardware Profiling<br />
Hardware profiling is broken down into six streams per processor core. They are the<br />
L1 events, L2 events, TLB events, Core events, Branch events, and Interface events. The<br />
buckets supported by each of these streams are shown in Table 1-16:<br />
Table 1-16 <strong>Cortex</strong>-<strong>A8</strong> Profiling Events<br />
Stream Buckets X axis Y axis<br />
L1 Events ICache refill Cycle L1 events<br />
DCache refill<br />
DCache access<br />
Data read<br />
Data write<br />
L1 miss (0x49)<br />
L1 miss (0x4A)<br />
L1 page color<br />
L1 neon hit<br />
L1 neon access<br />
L1 cache access<br />
L2 Events L2 store merge Cycle L2 events<br />
L2 buffer<br />
L2 access<br />
L2 cache miss<br />
L2 neon access<br />
L2 neon hit<br />
TLB Events ITLB refill Cycle TLB<br />
DTLB refill<br />
Core Events SW increment Cycle Core events<br />
Instr exec<br />
CID write<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-24 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
Table 1-16 <strong>Cortex</strong>-<strong>A8</strong> Profiling Events (Continued)<br />
Stream Buckets X axis Y axis<br />
Core Events Unalign access Cycle Core events<br />
Buffer full<br />
Replay<br />
Unaligned replay<br />
Op issue<br />
No avail inst issue<br />
Inst issue<br />
Stall MRC<br />
Stall<br />
Non-idle<br />
Branch Events Exp taken Cycle Branch events<br />
Exp return<br />
PC change<br />
Imm branch<br />
Proc return<br />
Branch mispred<br />
Branch pred<br />
Ret stk mispred<br />
Brnch dir mispred<br />
Brnch pred not-taken<br />
Brnch pred taken<br />
Interface Events AXI data read Cycle Interface events<br />
AXI data write<br />
PMUEXTIN[0]<br />
PMUEXTIN[1]<br />
PMUEXTIN[1 or 0]<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
Available Profiling Data 1-25<br />
An example of debug in<strong>for</strong>mation <strong>for</strong> a software stream is shown below.<br />
Figure 1-6 Software Stream Debug In<strong>for</strong>mation<br />
1.6.2 Software Profiling<br />
Software-based profiling is provided by <strong>SoC</strong> <strong>Designer</strong>. Profiling in<strong>for</strong>mation is also available<br />
in the <strong>SoC</strong> <strong>Designer</strong> Profiler. See the user guide <strong>for</strong> <strong>SoC</strong> <strong>Designer</strong> or <strong>SoC</strong> <strong>Designer</strong><br />
Profiler <strong>for</strong> more in<strong>for</strong>mation.<br />
<strong>Carbon</strong> Design Systems, Inc. Confidential
1-26 Using the <strong>Model</strong> Kit Component in <strong>SoC</strong> <strong>Designer</strong><br />
<strong>Carbon</strong> Design Systems, Inc. Confidential