<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.emmtrix.com/w139/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mira.steinmetz</id>
	<title>emmtrix Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.emmtrix.com/w139/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mira.steinmetz"/>
	<link rel="alternate" type="text/html" href="https://www.emmtrix.com/wiki/Special:Contributions/Mira.steinmetz"/>
	<updated>2026-04-09T11:06:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Link_Stubber&amp;diff=2822</id>
		<title>emmtrix Link Stubber</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Link_Stubber&amp;diff=2822"/>
		<updated>2025-09-04T08:17:16Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;emmtrix Link Stubber&#039;&#039;&#039; is a Clang-based tool designed to augment C and C++ source files in a way that makes them linkable, even in the absence of complete implementations. This tool is particularly useful in early development phases, integration testing, unit testing, static analysis, or code generation pipelines where certain source components or libraries may not yet be available.&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
Modern software development — especially in embedded and safety-critical domains — often involves compiling and analyzing incomplete systems. Missing function definitions or global variables can prevent successful linking, which blocks further tool-based processing like:&lt;br /&gt;
&lt;br /&gt;
* Binary generation&lt;br /&gt;
* Static timing analysis&lt;br /&gt;
* Code instrumentation&lt;br /&gt;
* Unit test compilation&lt;br /&gt;
* Cross-module analysis&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;emmtrix Link Stubber&#039;&#039;&#039; solves this by generating stub implementations for unresolved symbols, allowing compilation and linking to proceed without requiring full source availability.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Automatic Stub Generation&#039;&#039;&#039;&amp;lt;br&amp;gt;Automatically generates minimal placeholder implementations for:&lt;br /&gt;
** Undefined functions, member functions, constructors or destructors&lt;br /&gt;
** External global or static variables&lt;br /&gt;
** Forward-declared classes and structs&lt;br /&gt;
** Function and class templates&lt;br /&gt;
** Abstract classes (with pure virtuals) are handled by:&lt;br /&gt;
*** Finding a suitable concrete derived class&lt;br /&gt;
*** Or generating a new one if none exists&lt;br /&gt;
* &#039;&#039;&#039;Multi-Translation-Unit (TU) Support&#039;&#039;&#039;&lt;br /&gt;
** Definitions can be generated across multiple input files&lt;br /&gt;
** Emits one output file per TU&lt;br /&gt;
* &#039;&#039;&#039;Clang Integration&#039;&#039;&#039;&amp;lt;br&amp;gt;Built on top of Clang’s frontend infrastructure for full compatibility with standard C/C++ codebases.&lt;br /&gt;
* &#039;&#039;&#039;Minimal Intrusiveness&#039;&#039;&#039;&amp;lt;br&amp;gt;Generates valid, syntactically correct C/C++ code that can be:&lt;br /&gt;
** Output as a separate file, or&lt;br /&gt;
** Directly appended to the end of the processed C/C++ source file.&lt;br /&gt;
* &#039;&#039;&#039;Inline Stub Insertion&#039;&#039;&#039;&amp;lt;br&amp;gt;In a common usage scenario, the stub code is inserted &#039;&#039;&#039;at the end of the original .cpp file&#039;&#039;&#039;, keeping everything in one translation unit. This avoids changes to build configurations and simplifies testing or integration.&lt;br /&gt;
* &#039;&#039;&#039;Aggregate Initialization&#039;&#039;&#039;&amp;lt;br&amp;gt;Aggregate types are initialized with brace-enclosed initializer lists.&lt;br /&gt;
* &#039;&#039;&#039;Selective Stubbing&#039;&#039;&#039;&amp;lt;br&amp;gt;Users can control symbol exclusion via opt-out list&lt;br /&gt;
* &#039;&#039;&#039;Configuration&#039;&#039;&#039;&amp;lt;br&amp;gt;YAML config for advanced scenarios and per-file options&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Isolated Unit Testing&#039;&#039;&#039;&amp;lt;br&amp;gt;During unit testing, individual classes or functions are compiled without all dependent files. By appending stubs to the test target file, developers can:&lt;br /&gt;
** Compile isolated .cpp files&lt;br /&gt;
** Avoid linker errors due to missing symbols&lt;br /&gt;
** Easily test legacy code with unknown or complex dependencies&lt;br /&gt;
* &#039;&#039;&#039;Static performance analysis&#039;&#039;&#039; on partial codebases.&lt;br /&gt;
* &#039;&#039;&#039;Early integration&#039;&#039;&#039; of modules before all dependencies are available.&lt;br /&gt;
* &#039;&#039;&#039;CI/CD build stability&#039;&#039;&#039; even with missing components.&lt;br /&gt;
* &#039;&#039;&#039;C/C++ to other language migration&#039;&#039;&#039; workflows (e.g., Rust), where linkability is required before full conversion.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
The following table shows examples of output generated by the link stubber. To simplify the examples, the main function is omitted. The tool can optionally generate a `main` function if missing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Example: Stub generation&lt;br /&gt;
!Input C++ Source&lt;br /&gt;
!Generated Stubs&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
extern int var1;&lt;br /&gt;
&lt;br /&gt;
namespace ns {&lt;br /&gt;
    extern int var2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void func() {&lt;br /&gt;
    var1 = 0;&lt;br /&gt;
    ns::var2 = 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Demonstrates the generation of global variables across namespaces.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
int ns::var2 = (int)0;&lt;br /&gt;
&lt;br /&gt;
int var1 = (int)0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
struct B1 {&lt;br /&gt;
    B1(int i);&lt;br /&gt;
    int i;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct S1 : public B1 {&lt;br /&gt;
    S1(int j);&lt;br /&gt;
    int j;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
extern S1 var1;&lt;br /&gt;
&lt;br /&gt;
void func() {&lt;br /&gt;
    var1.i = 1;&lt;br /&gt;
    var1.j = 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Shows constructor stubbing with inheritance and initialization of extern objects.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
B1::B1(int i) {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int __tmp1 = (int)0;&lt;br /&gt;
&lt;br /&gt;
S1::S1(int j) : B1(__tmp1) {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int __tmp0 = (int)0;&lt;br /&gt;
&lt;br /&gt;
S1 var1(__tmp0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
class C {&lt;br /&gt;
public:&lt;br /&gt;
    static void func2();&lt;br /&gt;
    int func3();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void func() {&lt;br /&gt;
    C::func2();&lt;br /&gt;
    C().func3();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Handles stub generation for static and non-static member functions.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
int __tmp0 = (int)0;&lt;br /&gt;
&lt;br /&gt;
int C::func3() {&lt;br /&gt;
    return __tmp0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void C::func2() {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
class V1 {&lt;br /&gt;
public:&lt;br /&gt;
    V1();&lt;br /&gt;
    virtual ~V1();&lt;br /&gt;
    virtual void test() = 0;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class C1 : public V1 {&lt;br /&gt;
public:&lt;br /&gt;
    C1();&lt;br /&gt;
    void test();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
extern C1 var1;&lt;br /&gt;
&lt;br /&gt;
void func() {&lt;br /&gt;
    var1.test();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Demonstrates stub generation for abstract base classes and virtual methods.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
V1::V1() {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
C1::C1() : V1() {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
V1::~V1() noexcept {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
C1 var1;&lt;br /&gt;
&lt;br /&gt;
void C1::test() {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
extern std::vector&amp;lt;int&amp;gt; var1;&lt;br /&gt;
&lt;br /&gt;
int func1() {&lt;br /&gt;
    return var1.size();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|Handles standard library containers such as std::vector.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
std::vector&amp;lt;int, std::allocator&amp;lt;int&amp;gt;&amp;gt; var1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
* Stub implementations are not functional — they only satisfy the linker.&lt;br /&gt;
* Care must be taken to avoid executing stubbed functions in functional tests.&lt;br /&gt;
* Test engineers can use the generated stubs as templates and extend them with realistic behavior if needed.&lt;br /&gt;
&lt;br /&gt;
== Interested? ==&lt;br /&gt;
{{CallToAction|text=Interested in applying this coverage workflow to your own projects?}}&lt;br /&gt;
&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Code_Generator&amp;diff=2821</id>
		<title>emmtrix Code Generator</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Code_Generator&amp;diff=2821"/>
		<updated>2025-09-04T08:14:53Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: /* Interested? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:emmtrix Code Generator Icon.png|frameless|150x150px]]&lt;br /&gt;
&lt;br /&gt;
== Our Solution for MATLAB® Code Generation ==&lt;br /&gt;
emmtrix Code Generator (eCG) translated MATLAB®, GNU Octave, or Scilab code into platform-independent and readable C or C++ code suitable for embedded processors. The generated code was easy to understand, prepared for parallelization, and could be adjusted to individual requirements. Automatically generated reports helped with the code certification process. In combination with [https://www.emmtrix.com/tools/emmtrix-parallel-studio emmtrix Parallel Studio], eCG enabled multicore programming or vectorization directly from *.m or *.sci script files. Furthermore, eCG worked hand in hand with [[emmtrix Model Code Generator]] to support C code generation from Simulink® models.&lt;br /&gt;
&lt;br /&gt;
== eCG Workflow ==&lt;br /&gt;
[[File:emmtrix Code Generator Workflow.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
emmtrix Code Generator used *.m script files (MATLAB® or GNU Octave) or *.sce/sci script files (Scilab) as input and generated sequential C code according to C89, C99, or C11 standards as output. All generated source and header files could be directly compiled without dependencies on external libraries. A direct generation of executable files was also possible. When fixed-point data types were used, C++ templates were employed to represent them.&lt;br /&gt;
&lt;br /&gt;
The generated C code was static and free of dynamic memory allocation, making it suitable for embedded systems and for parallelization tools like [https://www.emmtrix.com/tools/emmtrix-parallel-studio emmtrix Parallel Studio]. Data dependencies could easily be analyzed. Matrices were represented by multi-dimensional arrays to enable loop transformations required for parallelization or vectorization.&lt;br /&gt;
&lt;br /&gt;
Users could extend their input scripts with special eCG directives (similar to pragmas in C). These directives were treated as comments by the original tools, ensuring code compatibility. The special directives could be used to provide additional information in the output code, select different algorithms for built-in functions like FFT, or enable various code optimizations to improve performance, memory consumption, or parallelizability.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Supported code generation compliant with ISO C90, C99, C11, C18, C++98, C++11, C++14, and C++17 standards&lt;br /&gt;
* Performance &amp;amp; memory analysis&lt;br /&gt;
* Highly comprehensive target-optimized C/C++ code&lt;br /&gt;
* User-controlled cache and memory optimization&lt;br /&gt;
* Bidirectional traceability via code generation reports&lt;br /&gt;
* Embedded code generation without dynamic memory allocation&lt;br /&gt;
&lt;br /&gt;
* Interfacing custom C/C++ code or libraries&lt;br /&gt;
* Automatable back-to-back tests for functional validation&lt;br /&gt;
* Usable within continuous integration processes&lt;br /&gt;
* Automatic floating-point to integer number conversion&lt;br /&gt;
* Profiling-based performance analysis and visualization within GUI&lt;br /&gt;
* Worst-case analysis&lt;br /&gt;
* Optional array bound checking within generated code&lt;br /&gt;
&lt;br /&gt;
== Supported MATLAB®/GNU Octave/Scilab Language Features ==&lt;br /&gt;
&lt;br /&gt;
* N-dimensional arrays&lt;br /&gt;
* Matrix operations&lt;br /&gt;
* Processing of multiple input files&lt;br /&gt;
* Variable-sized variables (growing arrays)&lt;br /&gt;
* Subscripting, linear and logical indexing&lt;br /&gt;
* Double-precision, single-precision, and integer data types&lt;br /&gt;
&lt;br /&gt;
* Complex numbers&lt;br /&gt;
* Fixed-point arithmetic&lt;br /&gt;
* Program control statements if, for, while, break, continue and switch/case&lt;br /&gt;
* Arithmetic, relational, and logical operators&lt;br /&gt;
* Function handles&lt;br /&gt;
&lt;br /&gt;
* Structures and array of structures&lt;br /&gt;
* Global variables&lt;br /&gt;
* Recursive function calls&lt;br /&gt;
* Global and local functions&lt;br /&gt;
* Functions with variable-length input/output arguments&lt;br /&gt;
* Over 100 MATLAB®/GNU Octave/Scilab functions supported&lt;br /&gt;
&lt;br /&gt;
== emmtrix Code Generator Online - still available ==&lt;br /&gt;
Try out [https://www.emmtrix.com/online-emmtrix-code-generator/ emmtrix Code Generator Online]. This version of eCG allows easy conversion of MATLAB® or Scilab scripts to C code. Upload your script files directly or type the code into the editor window and convert the code with a single click of a button.&lt;br /&gt;
&lt;br /&gt;
It offers the following features: generation of HTML reports with lots of information of the automated analysis, access to the latest versions of eCG, use the generated C code without any additional runtime environment or framework, generates all files required for compilation: C sources and headers including utility functions as well as a Makefile.&lt;br /&gt;
&lt;br /&gt;
Go to eCG Online: https://www.emmtrix.com/online-emmtrix-code-generator/&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Code_Generator&amp;diff=2820</id>
		<title>emmtrix Code Generator</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Code_Generator&amp;diff=2820"/>
		<updated>2025-09-04T08:13:59Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:emmtrix Code Generator Icon.png|frameless|150x150px]]&lt;br /&gt;
&lt;br /&gt;
== Our Solution for MATLAB® Code Generation ==&lt;br /&gt;
emmtrix Code Generator (eCG) translated MATLAB®, GNU Octave, or Scilab code into platform-independent and readable C or C++ code suitable for embedded processors. The generated code was easy to understand, prepared for parallelization, and could be adjusted to individual requirements. Automatically generated reports helped with the code certification process. In combination with [https://www.emmtrix.com/tools/emmtrix-parallel-studio emmtrix Parallel Studio], eCG enabled multicore programming or vectorization directly from *.m or *.sci script files. Furthermore, eCG worked hand in hand with [[emmtrix Model Code Generator]] to support C code generation from Simulink® models.&lt;br /&gt;
&lt;br /&gt;
== eCG Workflow ==&lt;br /&gt;
[[File:emmtrix Code Generator Workflow.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
emmtrix Code Generator used *.m script files (MATLAB® or GNU Octave) or *.sce/sci script files (Scilab) as input and generated sequential C code according to C89, C99, or C11 standards as output. All generated source and header files could be directly compiled without dependencies on external libraries. A direct generation of executable files was also possible. When fixed-point data types were used, C++ templates were employed to represent them.&lt;br /&gt;
&lt;br /&gt;
The generated C code was static and free of dynamic memory allocation, making it suitable for embedded systems and for parallelization tools like [https://www.emmtrix.com/tools/emmtrix-parallel-studio emmtrix Parallel Studio]. Data dependencies could easily be analyzed. Matrices were represented by multi-dimensional arrays to enable loop transformations required for parallelization or vectorization.&lt;br /&gt;
&lt;br /&gt;
Users could extend their input scripts with special eCG directives (similar to pragmas in C). These directives were treated as comments by the original tools, ensuring code compatibility. The special directives could be used to provide additional information in the output code, select different algorithms for built-in functions like FFT, or enable various code optimizations to improve performance, memory consumption, or parallelizability.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Supported code generation compliant with ISO C90, C99, C11, C18, C++98, C++11, C++14, and C++17 standards&lt;br /&gt;
* Performance &amp;amp; memory analysis&lt;br /&gt;
* Highly comprehensive target-optimized C/C++ code&lt;br /&gt;
* User-controlled cache and memory optimization&lt;br /&gt;
* Bidirectional traceability via code generation reports&lt;br /&gt;
* Embedded code generation without dynamic memory allocation&lt;br /&gt;
&lt;br /&gt;
* Interfacing custom C/C++ code or libraries&lt;br /&gt;
* Automatable back-to-back tests for functional validation&lt;br /&gt;
* Usable within continuous integration processes&lt;br /&gt;
* Automatic floating-point to integer number conversion&lt;br /&gt;
* Profiling-based performance analysis and visualization within GUI&lt;br /&gt;
* Worst-case analysis&lt;br /&gt;
* Optional array bound checking within generated code&lt;br /&gt;
&lt;br /&gt;
== Supported MATLAB®/GNU Octave/Scilab Language Features ==&lt;br /&gt;
&lt;br /&gt;
* N-dimensional arrays&lt;br /&gt;
* Matrix operations&lt;br /&gt;
* Processing of multiple input files&lt;br /&gt;
* Variable-sized variables (growing arrays)&lt;br /&gt;
* Subscripting, linear and logical indexing&lt;br /&gt;
* Double-precision, single-precision, and integer data types&lt;br /&gt;
&lt;br /&gt;
* Complex numbers&lt;br /&gt;
* Fixed-point arithmetic&lt;br /&gt;
* Program control statements if, for, while, break, continue and switch/case&lt;br /&gt;
* Arithmetic, relational, and logical operators&lt;br /&gt;
* Function handles&lt;br /&gt;
&lt;br /&gt;
* Structures and array of structures&lt;br /&gt;
* Global variables&lt;br /&gt;
* Recursive function calls&lt;br /&gt;
* Global and local functions&lt;br /&gt;
* Functions with variable-length input/output arguments&lt;br /&gt;
* Over 100 MATLAB®/GNU Octave/Scilab functions supported&lt;br /&gt;
&lt;br /&gt;
== emmtrix Code Generator Online - still available ==&lt;br /&gt;
Try out [https://www.emmtrix.com/online-emmtrix-code-generator/ emmtrix Code Generator Online]. This version of eCG allows easy conversion of MATLAB® or Scilab scripts to C code. Upload your script files directly or type the code into the editor window and convert the code with a single click of a button.&lt;br /&gt;
&lt;br /&gt;
It offers the following features: generation of HTML reports with lots of information of the automated analysis, access to the latest versions of eCG, use the generated C code without any additional runtime environment or framework, generates all files required for compilation: C sources and headers including utility functions as well as a Makefile.&lt;br /&gt;
&lt;br /&gt;
Go to eCG Online: https://www.emmtrix.com/online-emmtrix-code-generator/&lt;br /&gt;
&lt;br /&gt;
== Interested? ==&lt;br /&gt;
{{CallToAction|text=Interested in applying this coverage workflow to your own projects?}}&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_C%2B%2B_to_C_Compiler&amp;diff=2819</id>
		<title>emmtrix C++ to C Compiler</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_C%2B%2B_to_C_Compiler&amp;diff=2819"/>
		<updated>2025-09-04T08:12:43Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.emmtrix.com/tools/emmtrix-cpp-to-c-compiler emmtrix C++ to C Compiler (eCPP2C)] automatically translates your C++ source code into analyzable C code. The design goal was to keep the binary compilation of the original C++ code and the binary compilation of the translated C code mostly identical. This guarantees the functional correctness of the generated C code. [https://www.emmtrix.com/tools/emmtrix-cpp-to-c-compiler eCPP2C] utilizes the LLVM/Clang compiler technology to enable support of the latest features of the fast evolving C++ standard. In combination with [https://www.emmtrix.com/tools/emmtrix-parallel-studio emmtrix Parallel Studio], [https://www.emmtrix.com/tools/emmtrix-cpp-to-c-compiler eCPP2C] enables software parallelization of C++ applications.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Translation of C++ to C11 (ISO/IEC 9899:2011) source code&lt;br /&gt;
* Utilizes latest LLVM/Clang compiler technology&lt;br /&gt;
* Gurantees functional correctness of generated C code by verification tool&lt;br /&gt;
* eCPP2C Qualification Kit (ISO 26262, DO-178C/330 or any comparable standard) can be provided on request&lt;br /&gt;
* Demystifies how your C++ code is compiled to assembler&lt;br /&gt;
* Can be used in combination with (certified) C compilers and C code analysis tools&lt;br /&gt;
* Integrated into emmtrix Parallel Studio GUI to enable C++ code parallelization&lt;br /&gt;
&lt;br /&gt;
== Supported C++ Language Features ==&lt;br /&gt;
The following list displays some of the C++ language features supported by the C++ to C Compiler:&lt;br /&gt;
&lt;br /&gt;
* Classes&lt;br /&gt;
* Multiple inheritance&lt;br /&gt;
* New/Delete&lt;br /&gt;
* Namespaces&lt;br /&gt;
* extern “C”&lt;br /&gt;
* Using&lt;br /&gt;
* Friends&lt;br /&gt;
* Lambda expressions&lt;br /&gt;
&lt;br /&gt;
* Static assert&lt;br /&gt;
* C++ casts&lt;br /&gt;
* Auto&lt;br /&gt;
* References&lt;br /&gt;
* Rvalue references&lt;br /&gt;
* Move semantic&lt;br /&gt;
* Range-based for loops&lt;br /&gt;
* STL containers&lt;br /&gt;
&lt;br /&gt;
* Templates&lt;br /&gt;
* Variadic Templates&lt;br /&gt;
* Copy elision&lt;br /&gt;
* Trailing return types&lt;br /&gt;
* User-defined literals&lt;br /&gt;
* C++11-style attributes&lt;br /&gt;
* Scoped enums&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-cpp-to-c-compiler emmtrix C++ to C Compiler] is under active development and it aims to support the full feature set of the C++17 (ISO/IEC 14882:2017) standard as well as common GCC / Clang language extensions.&lt;br /&gt;
&lt;br /&gt;
Interested in having C++ exceptions supported? Even though this C++ feature does not have an equivalent we can provide a solution to you upon request (see contact details at the buttom of the page).&lt;br /&gt;
&lt;br /&gt;
== Verification Tool and Test Strategy ==&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-cpp-to-c-compiler emmtrix C++ to C compiler] has a unique verification and testing strategy that guarantees that the generated C code is semantically equivalent to C++.&lt;br /&gt;
* See [[C++ to C Test Strategy]]&lt;br /&gt;
&lt;br /&gt;
== emmtrix C++ to C Compiler Online ==&lt;br /&gt;
&lt;br /&gt;
Try out emmtrix [https://online-ecpp2c.emmtrix.com/ C++ to C Compiler Online] powered by [https://godbolt.org/ Compiler Explorer]. We have integrated our tool [https://www.emmtrix.com/tools/emmtrix-cpp-to-c-compiler eCPP2C] into the Compiler Explorer framework so that you can enter your C++ code and immediately see the converted C code.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Demystifying C++]] - Demystifying C++ article series based on the output of the tool&lt;br /&gt;
* Office webpage at https://www.emmtrix.com/tools/emmtrix-cpp-to-c-compiler&lt;br /&gt;
&lt;br /&gt;
== Interested? ==&lt;br /&gt;
{{CallToAction|text=Interested in applying this coverage workflow to your own projects?}}&lt;br /&gt;
&lt;br /&gt;
[[Category:C++ to C Compiler]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Code_Vectorizer&amp;diff=2818</id>
		<title>emmtrix Code Vectorizer</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Code_Vectorizer&amp;diff=2818"/>
		<updated>2025-09-04T08:12:16Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;emmtrix Code Vectorizer is a C source-to-source compiler that vectorizes C code for various SIMD architectures like [[Infineon AURIX TC4x|Infineon AURIX TC4x PPU]], x86 AVX, ARM NEON, or RISC-V V extensions. It follows an semi-automatic approach, where the user can guide the vectorization process from an Eclipse-based GUI or by using pragmas in the C code. The vectorized C code is always visible to the user, which makes it easy to follow the transformation and to understand the generated code. The generated code can be compiled with the vendor’s compiler and either run on the target hardware or in a simulator to get performance feedback and verify the correctness of the transformation.&lt;br /&gt;
&lt;br /&gt;
=== Multi-Precision Vector Math Library ===&lt;br /&gt;
The emmtrix Code Vectorizer incorporates a multi-precision vector math library that provides vectorized implementations of common C mathematical functions like sinf, cosf, expf, logf, powf, sqrtf, tanhf and many more. The library provides multiple versions of each function to provide the best trade-off between accuracy and performance. During vectorization, the vector math library is used to replace scalar math functions with vectorized versions. By specifying the accuracy requirements in [[ULP Difference of Float Numbers|ULPs (units in the last place)]], the user can control which version of the function is used.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function&lt;br /&gt;
!Info&lt;br /&gt;
! Accuracy&amp;lt;ref&amp;gt;Accuracy of hardware version are given from the data sheet. A ULP 0.0 means that the implementation is exact. Otherwise, the highest know ULP is provided. Math functions that are based on non-perfect hardware implementation use a pessimistic software implementation for ULP evaluation. A more accurate ULP evaluation could be provided on request.&amp;lt;/ref&amp;gt; [ULP]&lt;br /&gt;
! Latency on AURIX™ TC4x [cycles]&lt;br /&gt;
! Throughput on AURIX™ TC4x [cycles]&lt;br /&gt;
|-&lt;br /&gt;
|fabsf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fminf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fmaxf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|roundf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|11&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|ceilf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|6&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|floorf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|6&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|truncf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|6&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
| sqrtf&lt;br /&gt;
|Hardware version&lt;br /&gt;
| 0.5&lt;br /&gt;
|16&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
| expf&lt;br /&gt;
|Hardware version&lt;br /&gt;
| 1.0&lt;br /&gt;
|11&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|exp2f&lt;br /&gt;
|Hardware version&lt;br /&gt;
|1.0&lt;br /&gt;
|14&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
| log2f&lt;br /&gt;
|Hardware version&lt;br /&gt;
| 1.0&lt;br /&gt;
|14&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|logf&lt;br /&gt;
|Based on log2f ULP 1.0 hardware version&lt;br /&gt;
|1.93&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|log10f&lt;br /&gt;
|Based on log2f ULP 1.0 hardware version&lt;br /&gt;
|2.50&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| sinf&lt;br /&gt;
|Hardware version&lt;br /&gt;
| 1.0&lt;br /&gt;
|14&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
| cosf&lt;br /&gt;
|Hardware version&lt;br /&gt;
| 1.0&lt;br /&gt;
|14&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|tanf&lt;br /&gt;
|Based on sinf/cosf ULP 1.0 hardware version&lt;br /&gt;
|3.42&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | tanhf&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Based on expf ULP 1.0 hardware version&lt;br /&gt;
|7.08&lt;br /&gt;
|41&lt;br /&gt;
|18&lt;br /&gt;
|-&lt;br /&gt;
|4.23&lt;br /&gt;
|41&lt;br /&gt;
|19&lt;br /&gt;
|-&lt;br /&gt;
|2.74&lt;br /&gt;
|41&lt;br /&gt;
|23&lt;br /&gt;
|-&lt;br /&gt;
|1.91&lt;br /&gt;
|41&lt;br /&gt;
|27&lt;br /&gt;
|-&lt;br /&gt;
|hypotf&lt;br /&gt;
|Based on sqrt ULP 0.5 hardware vesrion&lt;br /&gt;
|1.995&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|remainderf&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fmodf&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fdimf&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interested? ==&lt;br /&gt;
{{CallToAction|text=Interested in applying this coverage workflow to your own projects?}}&lt;br /&gt;
[[Category:Math Function Accuracy]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Performance_Estimator&amp;diff=2817</id>
		<title>emmtrix Performance Estimator</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Performance_Estimator&amp;diff=2817"/>
		<updated>2025-09-04T08:10:17Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.emmtrix.com/tools/emmtrix-performance-estimator emmtrix Performance Estimator (ePE)] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / [https://emmtrix.com/wiki/Infineon_AURIX_TC3xx TC3xx]/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems.&lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models.&lt;br /&gt;
&lt;br /&gt;
=== Estimation Methods ===&lt;br /&gt;
In general, the execution time of a task or block can be modelled as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;t&amp;lt;sub&amp;gt;exec&amp;lt;/sub&amp;gt; = execution_frequency&amp;lt;sub&amp;gt;block&amp;lt;/sub&amp;gt;* single_duration&amp;lt;sub&amp;gt;block&amp;lt;/sub&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The C code based static code analysis derives the execution frequency by analyzing loop boundaries using constant folding. For the duration, each instruction in the code is modeled as the number of cycles of an abstract hardware model of the processor, and then summed.&lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels:&lt;br /&gt;
*analysis of C code&lt;br /&gt;
*generically compiler-optimized code&lt;br /&gt;
*assembly code from the target compiler.&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
==== Static Code Analysis: ====&lt;br /&gt;
[[File:Static Code Analysis.jpg|frameless|800x800px]]&lt;br /&gt;
&lt;br /&gt;
==== Processor Pipeline: ====&lt;br /&gt;
[[File:ePE Processor Pipeline.png|frameless|950x950px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-performance-estimator emmtrix Performance Estimator (ePE)] supports different ways to acquire the duration of the tasks of an application. These methods vary in accuracy and additional software or hardware requirements. Static code analysis provides basic information without the need for hardware or special software and may thus be seamlessly incorporated into early stages of the Software Development Life Cycle (SDLC). More accurate numbers can be collected with interfaces to simulators or the hardware. Depending on the requirements, the methods can be combined as desired.&lt;br /&gt;
&lt;br /&gt;
Addressing performance issues at the onset of the SDLC is not only proactive but also cost-efficient. Early estimation and intervention, as suggested by the below graph, can drastically reduce the complexities and expenses associated with fixing defects post-deployment. Although early estimates may not be as precise as measurements taken during later stages, they serve as a crucial checkpoint to prevent potential timing issues from escalating. This preemptive approach aligns with the principle that the cost to repair defects increases exponentially as they progress through the SDLC, as shown by the sharp rise in cost depicted in the graph. Hence, initial performance estimations are a strategic investment, minimizing the risk of facing a steep climb in remediation costs and efforts at later stages.&lt;br /&gt;
[[File:DefectDetectionandRemediation.webp|center|frameless|800x800px|Cost of Defect Remediation across the Software Development Life Cycle]]&lt;br /&gt;
&lt;br /&gt;
== Interested? ==&lt;br /&gt;
{{CallToAction|text=Interested in applying this coverage workflow to your own projects?}}&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Dependency_Analyzer&amp;diff=2816</id>
		<title>emmtrix Dependency Analyzer</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Dependency_Analyzer&amp;diff=2816"/>
		<updated>2025-09-04T08:09:14Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.emmtrix.com/tools/emmtrix-dependency-analyzer emmtrix Dependency Analyzer (eDA)] analyzes C source code to extract which output signals/variables depend on which input signals/variables.&lt;br /&gt;
&lt;br /&gt;
== Dependency Analysis ==&lt;br /&gt;
The core dependency analysis of [https://www.emmtrix.com/tools/emmtrix-dependency-analyzer eDA] tool is using the C source code and an entry function (typically a runnable in an automotive application) as input. It calculates which global variables depend on each other when the function is executed. If a variable v1 depends on variable v2, the result of v1 (after function execution) is somehow influenced by the value of v2 (before function execution) when the function is executed.&lt;br /&gt;
&lt;br /&gt;
The dependency analysis is not limited to programs using global variables for transporting information. By applying an automatic preprocessing and postprocessing step, more generic programs can be transformed into programs using global variables. This way we can e.g. detect dependencies between AUTOSAR signals, network communication function, etc.&lt;br /&gt;
&lt;br /&gt;
=== Simple Case ===&lt;br /&gt;
&lt;br /&gt;
In the following example, we have the global variables &amp;lt;code&amp;gt;in1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;out1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;out2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;out3&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;in1&amp;lt;/code&amp;gt; is assigned to out1, so the value of &amp;lt;code&amp;gt;out1&amp;lt;/code&amp;gt; depend on &amp;lt;code&amp;gt;in1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;in1&amp;lt;/code&amp;gt; is not changed in the function, so it is not listed in the results.&lt;br /&gt;
* &amp;lt;code&amp;gt;out2&amp;lt;/code&amp;gt; is assigned a constant value, so it has no dependency on any input value.&lt;br /&gt;
* &amp;lt;code&amp;gt;in1&amp;lt;/code&amp;gt; is added to &amp;lt;code&amp;gt;out3&amp;lt;/code&amp;gt;, so the value of &amp;lt;code&amp;gt;out3&amp;lt;/code&amp;gt; depends both on &amp;lt;code&amp;gt;in1&amp;lt;/code&amp;gt; and on &amp;lt;code&amp;gt;out3&amp;lt;/code&amp;gt; itself (i.e. the value prior function execution).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Input Code&lt;br /&gt;
!Result&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int in1;&lt;br /&gt;
int out1, out2, out3;&lt;br /&gt;
&lt;br /&gt;
void func(void) {&lt;br /&gt;
  out1 = in1;&lt;br /&gt;
  out2 = 5;&lt;br /&gt;
  out3 += in1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;out1: in1&lt;br /&gt;
out2: -&lt;br /&gt;
out3: out3 in1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Conditional ===&lt;br /&gt;
&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-dependency-analyzer eDA] distinguish between two kinds of dependencies:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Data dependencies&#039;&#039;&#039; are caused by assigning a value to variable.&lt;br /&gt;
# &#039;&#039;&#039;Control dependencies&#039;&#039;&#039; are caused by the control structure of the program e.g. if a variable changed conditionally. Control dependencies are indicated in the results by the &amp;lt;code&amp;gt;(c)&amp;lt;/code&amp;gt; suffix.&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-dependency-analyzer eDA] restricts that one variable can be either control or data dependent on another variable. The data dependency is considered stronger that the control dependency. If both dependencies appear, only the data dependency will appear in the results.&lt;br /&gt;
&lt;br /&gt;
In this example, the dependency of output variables on input variables is determined based on a conditional if statement. The function checks the value of in1 to decide which values to assign to out1 and out2. The result shows that out1 is control dependent on in1 and data dependent on in2. out2 is both control and data dependent on in1 but only the dominant data dependency is shown. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Input Code&lt;br /&gt;
!Result&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int in1, in2;&lt;br /&gt;
int out1, out2;&lt;br /&gt;
&lt;br /&gt;
void func(void) {&lt;br /&gt;
    if (in1) {&lt;br /&gt;
        out1 = in2;&lt;br /&gt;
        out2 = in1;&lt;br /&gt;
    } else {&lt;br /&gt;
        out1 = 0;&lt;br /&gt;
        out2 = 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;out1: in1(c) in2&lt;br /&gt;
out2: in1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delay Elements ===&lt;br /&gt;
In this example, a simple implementation of a delay element is shown. The output variable out1 is assigned the value of in1 from the previous function call. If the function is executed only one time, the output variable is not influenced by any input variable and thus would only have a dependency to the internal variable.&lt;br /&gt;
&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-dependency-analyzer eDA] considers this scenario by calculating the dependencies for multiple function calls. If one variable is dependent on a variable from a previous function call, it is considered as a delayed (data or control) dependency. Delayed dependencies are indicated in the results by a suffix of &amp;lt;code&amp;gt;^-N&amp;lt;/code&amp;gt;, where N is the number of function calls the dependency is delayed. Internally non-delayed dependencies are modeled as delayed dependencies with N=0. One variable cannot have multiple delayed or non-delayed dependencies to the same variable. Dependencies with a smaller delay are considered stronger than dependencies with a larger delay.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Input Code&lt;br /&gt;
!Result&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int in1;&lt;br /&gt;
int out1;&lt;br /&gt;
static int internal1;&lt;br /&gt;
&lt;br /&gt;
void func(void) {&lt;br /&gt;
    out1 = internal1;&lt;br /&gt;
    &lt;br /&gt;
    internal1 = in1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;internal1: in1&lt;br /&gt;
out1: internal1 in1^-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Local Variables ===&lt;br /&gt;
In this example, two local variables are used to store intermediate results. eDA considers the local variables and their dependencies to the global variables. The result shows that the output variable out1 is dependent on in1 and in2. The local variables are not listed in the results as their lifetime ends after the function execution.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Input Code&lt;br /&gt;
!Result&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
float in1, in2;&lt;br /&gt;
float out1;&lt;br /&gt;
&lt;br /&gt;
void func(void) {&lt;br /&gt;
    float local1;&lt;br /&gt;
    float local2;&lt;br /&gt;
    &lt;br /&gt;
    local1 = in1 * in1 + in2 * in2;&lt;br /&gt;
    local2 = sqrt(local1);&lt;br /&gt;
    &lt;br /&gt;
    out1 = local2 + 1.0f;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;out1: in1 in2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== Ignoring Name Dependencies===&lt;br /&gt;
In this example, the local variable local1 is reused to store two different intermediate results. Reusing (global or local) variables is common in C programming and also used by code generators like TargedLink. A name-based dependency analysis would consider the output variable out2 dependent on in1 and in2. However, [https://www.emmtrix.com/tools/emmtrix-dependency-analyzer eDA] ignores the name of the variable and considers only the data flow. The result shows that out2 is only dependent on in2.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Input Code&lt;br /&gt;
!Result&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
float in1, in2;&lt;br /&gt;
float out1, out2;&lt;br /&gt;
&lt;br /&gt;
void func(void) {&lt;br /&gt;
    float local1;&lt;br /&gt;
&lt;br /&gt;
    local1 = in1 * in1;&lt;br /&gt;
    out1 = local1;&lt;br /&gt;
    &lt;br /&gt;
    local1 = sqrt(in2);&lt;br /&gt;
    out2 = local1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;out1: in1&lt;br /&gt;
out2: in2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ignoring name dependencies is especially important for TargetLink-generated code. TargetLink uses `AUX_*` variables that are reused for different intermediate results. Name dependencies would lead to many false dependencies and thus to many false positives. In one relevant use case, the number of dependencies was reduced by 90% by ignoring name dependencies.&lt;br /&gt;
&lt;br /&gt;
=== Arrays ===&lt;br /&gt;
&lt;br /&gt;
In this example, an array A is used to store the input variables in1 and in2. The results show that the array variable A is dependent on in1 and in2. However, eDA considers the array elements as separate variables if they are accessed by constant indices. The output variable out1 is only dependent on in1. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Input Code&lt;br /&gt;
!Result&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int in1, in2;&lt;br /&gt;
int A[10];&lt;br /&gt;
int out1;&lt;br /&gt;
&lt;br /&gt;
void func(void) {&lt;br /&gt;
    A[0] = in1;&lt;br /&gt;
    A[1] = in2;&lt;br /&gt;
    &lt;br /&gt;
    out1 = A[0];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;A: in1 in2&lt;br /&gt;
out1: in1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Function Calls ===&lt;br /&gt;
&lt;br /&gt;
In this example, the function add is used to calculate the sum of two input variables. The function is called 3 times with different arguments. [https://www.emmtrix.com/tools/emmtrix-dependency-analyzer eDA] not only considers the data dependencies between the parameters and the return value but also calculates the dependencies for each call separately. The result shows that out1 is dependent on in1 and in2, out2 is dependent on in1 and out3 is independent of any input variable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Input Code&lt;br /&gt;
!Result&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int in1, in2;&lt;br /&gt;
int out1, out2, out3;&lt;br /&gt;
&lt;br /&gt;
int add(int a, int b) {&lt;br /&gt;
	return a + b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void func(void) {&lt;br /&gt;
	out1 = add(in1, in2);&lt;br /&gt;
	out2 = add(in1, 1);&lt;br /&gt;
    out3 = add(5, 6);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;out1: in1 in2&lt;br /&gt;
out2: in1&lt;br /&gt;
out3: -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Call by Reference Function Parameters ===&lt;br /&gt;
&lt;br /&gt;
In this example, the function swap uses pointers to swap the values of two input variables. ...&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Input Code&lt;br /&gt;
!Result&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int in1, in2;&lt;br /&gt;
int out1, out2;&lt;br /&gt;
&lt;br /&gt;
void swap(int* a, int* b) {&lt;br /&gt;
    int c = *a;&lt;br /&gt;
    *a = *b;&lt;br /&gt;
    *b = c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void func(void) {&lt;br /&gt;
    out1 = in1;&lt;br /&gt;
    out2 = in2;&lt;br /&gt;
&lt;br /&gt;
    swap(&amp;amp;out1, &amp;amp;out2);&lt;br /&gt;
    swap(&amp;amp;out1, &amp;amp;out2);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;out1: in1&lt;br /&gt;
out2: in2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parametrized Dependency Analysis===&lt;br /&gt;
In automotive applications, it is common to use the same software across multiple car models with different configurations. [https://www.emmtrix.com/tools/emmtrix-dependency-analyzer eDA] supports a parametrized dependency analysis where one or more input variables are considered as constant parameters. Code parts that are deactivated by the constant parameters are not considered during dependency analysis. This is useful to calculate the dependencies only for one active configuration and to reduce the number of dependencies.&lt;br /&gt;
&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-dependency-analyzer eDA] follows a two step approach for the parametrized dependency analysis. In the first step, the constant parameters are propagated through the code and inactive code parts are removed. In the second step, the dependency analysis is performed on the transformed code. Even the transformed code is available as intermediate code for transparency reasons. This is useful to understand the results and to verify the correctness of the transformation.&lt;br /&gt;
&lt;br /&gt;
The following example is identical to the conditional example. Only the input variable in1 is considered as a constant parameter (indicated by the &amp;lt;code&amp;gt;static const&amp;lt;/code&amp;gt; in the input code). The result shows the intermediate code after the transformation. The if statement is removed and the output variables are assigned the values of the else branch. In contrast to the conditional example, the output variables are not dependent on the input variable in1.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Input Code&lt;br /&gt;
!Intermediate Code&lt;br /&gt;
!Result&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
static const int in1 = 0;&lt;br /&gt;
int in2;&lt;br /&gt;
int out1, out2;&lt;br /&gt;
&lt;br /&gt;
void func(void) {&lt;br /&gt;
    if (in1) {&lt;br /&gt;
        out1 = in2;&lt;br /&gt;
        out2 = in1;&lt;br /&gt;
    } else {&lt;br /&gt;
        out1 = 0;&lt;br /&gt;
        out2 = 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int in2;&lt;br /&gt;
int out1, out2;&lt;br /&gt;
&lt;br /&gt;
void func(void) {&lt;br /&gt;
    out1 = 0;&lt;br /&gt;
    out2 = 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;out1: -&lt;br /&gt;
out2: -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUTOSAR Integration ===&lt;br /&gt;
In AUTOSAR, ports are accessed using IRead/IWrite function. By providing dummy implementations of these functions that simple read or write a dummy global variable, the AUTOSAR program is transformed into a program with global variables. This is used as input for the dependency analysis.&lt;br /&gt;
&lt;br /&gt;
=== Output Format Example ===&lt;br /&gt;
A small source code example is shown in the next figure. The code uses three global variables g1. g2 and g3 as well as two output variables out1 and out2. The dependency analysis extracts how the output depend on the input variables.&lt;br /&gt;
&lt;br /&gt;
[[File:emmtrix_Dependency_Analyzer_input.png|alt=emmtrix Dependency Analyzer -Input|frameless|262x262px]]&lt;br /&gt;
&lt;br /&gt;
The results are shown in the XML file in the next figure. Variable out1 depends on g3 and g2 whereas the dependency to g3 is a control dependency and to g2 a data dependency. Variable out2 only depends on g1.&lt;br /&gt;
&lt;br /&gt;
[[File:emmtrix Depenendy Analyzer xml results.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More information can be seen as comments inside of the C code. The next figure shows all use (read) and def (write) accesses to all variables in the program. Control dependencies are marked with (c), delayed dependencies that depend on values from a previous iteration by ^-1. Phi statements are virtual instructions that are placed when the value of a variable depends on a condition. This kind of representation is useful to see the dependencies directly where they come from in the source code.&lt;br /&gt;
&lt;br /&gt;
An extract from the full dependency graph can be seen in the next figure. It shows statements from the source code and how they depend on each other:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;SSA:&#039;&#039; there exists a use/def dependency where one signal writes a value  and another one reads it&lt;br /&gt;
* &#039;&#039;Control:&#039;&#039; a control dependency caused by a condition (branch) instruction exists&lt;br /&gt;
* &#039;&#039;CallArg:&#039;&#039;  the statement depends on an argument of the function&lt;br /&gt;
* &#039;&#039;Expr: &#039;&#039; the statement is part of the previous expression.&lt;br /&gt;
&lt;br /&gt;
This kind of visualization can help pinpoint the root of a specific dependency.&lt;br /&gt;
&lt;br /&gt;
=== Undescribed Features ===&lt;br /&gt;
&lt;br /&gt;
* Function calls to known functions&lt;br /&gt;
* Function calls to unknown functions&lt;br /&gt;
* Loops&lt;br /&gt;
* Switch case&lt;br /&gt;
* Output&lt;br /&gt;
** C debug output&lt;br /&gt;
** XML output&lt;br /&gt;
** Reachability output&lt;br /&gt;
** Dependency path output&lt;br /&gt;
* Propagation of tags (e.g. OBD, ASIL-D)&lt;br /&gt;
* AUTOSAR integration&lt;br /&gt;
* [[Bitblast Transformation]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* Official webpage - https://www.emmtrix.com/tools/emmtrix-dependency-analyzer&lt;br /&gt;
&lt;br /&gt;
== Interested? ==&lt;br /&gt;
{{CallToAction|text=Interested in applying this coverage workflow to your own projects?}}&lt;br /&gt;
&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Explicit_Cast_Insertion&amp;diff=2723</id>
		<title>Explicit Cast Insertion</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Explicit_Cast_Insertion&amp;diff=2723"/>
		<updated>2025-06-03T07:27:51Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: Mira.steinmetz moved page Explicit Cast Insertion to Explicit Cast Insertion Transformation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Explicit Cast Insertion Transformation]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Explicit_Cast_Insertion_Transformation&amp;diff=2722</id>
		<title>Explicit Cast Insertion Transformation</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Explicit_Cast_Insertion_Transformation&amp;diff=2722"/>
		<updated>2025-06-03T07:27:51Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: Mira.steinmetz moved page Explicit Cast Insertion to Explicit Cast Insertion Transformation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Explicit Cast Insertion Transformation}}&lt;br /&gt;
&lt;br /&gt;
Explicit cast insertion is a transformation that introduces explicit type casts in situations where implicit type conversions would otherwise occur. By making type conversions explicit, this technique improves code clarity, prevents unintended behavior, and enhances static code analysis. It is particularly useful in strongly typed languages, ensuring that conversions are intentional and reducing ambiguity in expressions involving mixed data types. While preserving program semantics, explicit cast insertion helps avoid compiler warnings and improves maintainability by making type changes more transparent.&lt;br /&gt;
==Explicit Cast Insertion Transformation in emmtrix Studio==&lt;br /&gt;
emmtrix Studio can implement explicit cast insertion using #pragma directives or via the GUI. Cast insertion is a transformation that inserts explicit type casts in situations where implicit type conversion will take place. The transformation preserves the code-semantics.&lt;br /&gt;
===Typical Usage and Benefits===&lt;br /&gt;
The transformation is used to generate clearer code and to increase capabilities of the code analysis.&lt;br /&gt;
===Example===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code tests cast insertion transformation applied to main function.&lt;br /&gt;
 * In the given example, in expressions sum(a, b), if (a) and x ? a : b, there is implicit type conversion. &lt;br /&gt;
 * Explicit type casts are inserted in the relevant places.&lt;br /&gt;
 */   &lt;br /&gt;
&lt;br /&gt;
int sum(int num1, int num2) {&lt;br /&gt;
    return num1 + num2;&lt;br /&gt;
}&lt;br /&gt;
#pragma EMX_TRANSFORMATION ExplicitCastInserter&lt;br /&gt;
int main(void) {&lt;br /&gt;
    char a = 5;&lt;br /&gt;
    char x = &#039;s&#039;;&lt;br /&gt;
    float b = 3.14159;&lt;br /&gt;
    int c;&lt;br /&gt;
    sum(a, b);&lt;br /&gt;
    if (a) {&lt;br /&gt;
        printf(” % c\ n”, a);&lt;br /&gt;
    }&lt;br /&gt;
    c = x ? a : b;&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code is the generated code after the transformation has been applied.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
int sum(int num1, int num2) {&lt;br /&gt;
    return num1 + num2;&lt;br /&gt;
}&lt;br /&gt;
int main() {&lt;br /&gt;
    char a = (char) 5;&lt;br /&gt;
    char x = (char)&lt;br /&gt;
    &#039;s&#039;;&lt;br /&gt;
    float b = (float) 3.14159;&lt;br /&gt;
    int c;&lt;br /&gt;
    sum((int) a, (int) b);&lt;br /&gt;
    if ((_Bool) a) {&lt;br /&gt;
        printf(” % c\ n”, a);&lt;br /&gt;
    }&lt;br /&gt;
    c = (int)((_Bool) x ? (float) a : b);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Code Transformation]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2707</id>
		<title>Infineon AURIX TC4x</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2707"/>
		<updated>2025-05-21T08:19:22Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Infineon Aurix TC4x.webp|right|frameless]]&lt;br /&gt;
The TC4x is Infineon&#039;s latest generation of AURIX™ microcontrollers, designed for advanced automotive applications, including eMobility, Advanced Driver Assistance Systems (ADAS), and automotive E/E (Electric/Electronic) architectures. These microcontrollers are built on a 28 nm process and feature the [[TriCore Instruction Set Architecture|TriCore™ 1.8 instruction set architecture]], which includes up to six cores running at speeds up to 500 MHz. This architecture is optimized for high-performance and real-time applications.&lt;br /&gt;
&lt;br /&gt;
== Key Features ==&lt;br /&gt;
* &#039;&#039;&#039;High Performance and Scalability&#039;&#039;&#039;: Equipped with a Parallel Processing Unit (PPU), Data Routing Engine (DRE), and other accelerators to enhance AI capabilities and real-time processing.&lt;br /&gt;
* &#039;&#039;&#039;Extensive Connectivity&#039;&#039;&#039;: Supports high-speed communication interfaces such as 5 Gbps Ethernet, PCIe, CAN-XL, and 10BASE-T1S Ethernet, providing flexibility and performance for various automotive applications.&lt;br /&gt;
* &#039;&#039;&#039;Enhanced Security&#039;&#039;&#039;: Compliant with ISO 21434, the TC4x includes advanced cybersecurity modules and supports safe, over-the-air (SOTA) updates with zero downtime.&lt;br /&gt;
* &#039;&#039;&#039;Memory and Storage&#039;&#039;&#039;: Features up to 25 MB of on-chip flash memory, allowing for complex software applications and data storage.&lt;br /&gt;
* &#039;&#039;&#039;Real-Time Control&#039;&#039;&#039;: Advanced timers and ADCs (Analog-to-Digital Converters) improve control loops for electric motors and power conversion tasks.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
[[File:Infineon TC4x Architecture.png|thumb|Infineon TC4x architecture|494x494px]]&lt;br /&gt;
&lt;br /&gt;
=== System Architecture ===&lt;br /&gt;
&lt;br /&gt;
=== TC 1.8P Processor Core (CPU0 ... CPU5) ===&lt;br /&gt;
&lt;br /&gt;
=== Parallel Processing Unit (PPU) ===&lt;br /&gt;
The PPU is an implementation of the &#039;&#039;&#039;DesignWare ARC EV71 Processor&#039;&#039;&#039;. The length of the vector registers is flexible and depends on the version. Commercially, 128 or 256 bit vector registers are available. In a pre-series stepping even 512 bit was used.&lt;br /&gt;
&lt;br /&gt;
See [[Infineon AURIX TC4x Parallel Processing Unit (PPU)]]&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
* eMobility&lt;br /&gt;
* ADAS&lt;br /&gt;
* Automotive E/E architectures&lt;br /&gt;
* Affordable artificial intelligence (AI) applications&lt;br /&gt;
&lt;br /&gt;
== emmtrix Tools for AURIX™ TC4x ==&lt;br /&gt;
emmtrix offers several tools for the Infineon AURIX™ TC4x architecture:&lt;br /&gt;
&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer] for vectorizing C code for the Infineon PPU. emmtrix was working together with Infineon already during develop of the TC4x architecture for supporting the PPU and received one of the first series A test boards.&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-performance-estimatorator emmtrix Performance Estimator] for estimating the performance of C code written for the Tricore™ CPUs.&lt;br /&gt;
&lt;br /&gt;
[[File:Infineon Board.png|thumb|Infineon Development Board (AURIX™ TC4x Communication Board)]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Code Vectorizer ===&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer (eCV)] simplifies programming the Parallel Processing Unit (PPU) on Infineon’s &#039;&#039;&#039;AURIX™ TC4x microcontrollers&#039;&#039;&#039;, enabling significant acceleration of data-parallel applications like sensor fusion or AI inference. By leveraging the PPU, these tasks can be accelerated by factors &amp;gt;10, unlocking the full potential of hardware capabilities.&lt;br /&gt;
&lt;br /&gt;
eCV automates the vectorization process, transforming sequential C code into optimized vectorized code tailored to the &#039;&#039;&#039;AURIX™ TC4x architecture&#039;&#039;&#039;. This includes efficient handling of memory layouts and advanced loop transformations. Developers can simulate and test functionality even without access to target hardware, reducing development time and effort.&lt;br /&gt;
&lt;br /&gt;
With support for &#039;&#039;&#039;Simulink® models, ONNX-based AI workflows,&#039;&#039;&#039; and detailed performance insights through integrated simulators, eCV minimizes the need for manual optimization while maximizing hardware performance.[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / [[Infineon AURIX TC3xx|TC3xx]] / TC4x microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
====Architecture &amp;amp; Variant Consulting====&lt;br /&gt;
*Support in selecting suitable AURIX derivatives for new product generations (trade-offs between performance, price, safety, and peripheral features)&lt;br /&gt;
*Analysis of requirements and mapping to specific AURIX product families (e.g., TC3xx vs. TC4xx)&lt;br /&gt;
*Analysis/identification of performance margins for down- or upgrades&lt;br /&gt;
====Runtime Analysis &amp;amp; Performance Engineering====&lt;br /&gt;
*Execution of detailed runtime analyses (maximum/minimum vs. average)&lt;br /&gt;
*Identification of bottlenecks in program execution, including benchmarking&lt;br /&gt;
*Optimization of access to flash, RAM, and peripherals (e.g., cache configuration, DMA utilization)&lt;br /&gt;
====Dependency Analysis====&lt;br /&gt;
*Freedom from interference (ASIL level check)&lt;br /&gt;
====Multicore Design &amp;amp; Scheduling Concepts====&lt;br /&gt;
*Development of core mapping strategies (static vs. dynamic assignment of compute-intensive tasks)&lt;br /&gt;
*Support for integrating bare-metal scheduling on AURIX&lt;br /&gt;
*Assistance with architectural decisions to meet functional safety requirements in multicore systems&lt;br /&gt;
&lt;br /&gt;
==== PPU Vector Accelerator ====&lt;br /&gt;
&lt;br /&gt;
* Acceleration of existing projects or migration of components to the PPU&lt;br /&gt;
&lt;br /&gt;
* Support for new projects (selection of suitable components for acceleration), assistance with vectorization&lt;br /&gt;
* Debugging of vectorized code&lt;br /&gt;
&lt;br /&gt;
====Training &amp;amp; Know-how Transfer====&lt;br /&gt;
*Technical in-house workshops on AURIX optimization, multicore strategies&lt;br /&gt;
*Coaching of employees/project teams in performance analysis and systematic tuning&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC4x Parallel Processing Unit (PPU)]]&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc4x/&lt;br /&gt;
&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2706</id>
		<title>Infineon AURIX TC3xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2706"/>
		<updated>2025-05-21T08:17:16Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AURIX TC399 LFBGA-516 plain.jpg|thumb|Infineon AURIX™ TC3xx second-generation microcontroller (TC399 BGA package). The AURIX™ TC3xx family integrates multiple TriCore™ CPUs and on-chip safety/security modules for automotive applications.|alt=TC399 BGA package]]&lt;br /&gt;
The &#039;&#039;&#039;Infineon AURIX™ TC3xx&#039;&#039;&#039; (Automotive Realtime Integrated neXt-generation architecture) is a family of 32-bit automotive microcontrollers introduced as the second generation of Infineon’s AURIX™ platform. Launched in 2016 as a successor to the earlier [[Infineon AURIX TC2xx|AURIX™ TC2xx series]], the TC3xx devices emphasize high performance, functional safety, and embedded security for advanced automotive and industrial applications. AURIX™ TC3xx microcontrollers feature a hexa-core [[TriCore Instruction Set Architecture|&#039;&#039;TriCore&#039;&#039; processor architecture]] with enhanced safety measures, making them well-suited for demanding tasks such as autonomous driving domain controllers, powertrain control, and sensor data fusion in advanced driver-assistance systems (ADAS). The combination of multiple CPU cores, extensive on-chip memory, and a rich peripheral set allows TC3xx chips to deliver real-time responsiveness and reliability in safety-critical environments while meeting stringent automotive standards (such as ISO 26262 for functional safety).&amp;lt;ref name=&amp;quot;ref1951907555&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1428109010&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1948477695&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Applications==&lt;br /&gt;
AURIX™ TC3xx microcontrollers are used in a variety of safety-critical and high-performance applications across the automotive and industrial sectors. Key application domains include:&lt;br /&gt;
*&#039;&#039;&#039;Automotive Systems:&#039;&#039;&#039; The TC3xx family was primarily designed for automotive use and finds broad application in vehicles’ electronic control units (ECUs). Notably, it is used in &#039;&#039;powertrain and drivetrain control&#039;&#039; (engine management, transmission control, hybrid/electric vehicle inverter control, battery management) where its real-time processing and resilience support precise actuator control. It is also deployed in &#039;&#039;chassis and safety systems&#039;&#039; such as anti-lock braking systems (ABS), electronic stability control, airbag controllers, and electric power steering, leveraging its redundancy and fast response for fail-safe operation. With the growth of ADAS and autonomous driving, AURIX™ TC3xx devices serve as domain controllers for &#039;&#039;ADAS sensor fusion&#039;&#039;, handling data from radar, LiDAR, camera, and ultrasonic sensors and performing environment modeling and decision-making algorithms. Their combination of multiple cores and a built-in radar signal processing sub-system makes them an attractive choice for tasks like front radar processing, sensor fusion hubs, and &#039;&#039;autonomous driving domain controllers&#039;&#039; that must meet ASIL-D safety levels.&amp;lt;ref name=&amp;quot;ref14281090102&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Industrial Automation and Robotics:&#039;&#039;&#039; Infineon has also positioned the AURIX™ family for use in industrial applications that demand high reliability. The TC3xx MCUs, with their hardware self-test mechanisms and safety documentation, can be found in &#039;&#039;industrial motor drives, robotics controllers, and PLCs (programmable logic controllers)&#039;&#039;, where they help achieve functional safety certifications up to SIL-3 (according to IEC 61508). The powerful TriCore™ cores and rich peripheral set enable complex motor control algorithms (e.g., field-oriented control for servo motors) and real-time sensor processing in factory automation. Additionally, the support for automotive-grade networking (CAN/CAN-FD, Ethernet) and timing peripherals makes them suitable for synchronous control in robotics and machinery. Infineon’s provision of AUTOSAR-compatible software for AURIX™ has even facilitated its use in non-automotive settings such as medical devices and elevator controllers, where proven safety and security are required.&amp;lt;ref name=&amp;quot;ref496771205&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Aerospace and Defense:&#039;&#039;&#039; The high fault-tolerance and deterministic performance of the AURIX™ TC3xx architecture also attract interest for aerospace and other mission-critical uses. In avionics systems or autonomous drones, for instance, the lockstep core configuration and robust error checking of AURIX™ can provide an added layer of reliability for flight control computers or navigation systems. While primarily an automotive chip, its ability to operate in harsh conditions (−40°C to 150°C range) and to detect internal failures in real-time makes it viable for certain aerospace electronic systems. Some defense and aerospace projects leverage COTS (commercial off-the-shelf) automotive components like AURIX™ for applications such as unmanned vehicle control and high-reliability communication links, given its safety pedigree. (In these domains, additional analysis and possibly radiation testing would be performed if the devices are used in high-altitude or space environments.)&lt;br /&gt;
== Architecture Overview ==&lt;br /&gt;
[[File:Infineon TC3xx Architecture.webp|545x545px|thumb|alt=TC3xx Architecture Overview|TC3xx Architecture Overview]]&lt;br /&gt;
=== Processor Cores and Architecture===&lt;br /&gt;
The AURIX™ TC3xx family implements Infineon’s TriCore™ architecture, which uniquely combines aspects of RISC microcontrollers, DSP (digital signal processor) capabilities, and conventional microprocessor features into a single core design. Each TC3xx device can include up to six independent TriCore™ 32-bit CPU cores (TriCore™ version 1.6.2), all capable of running at up to 300 MHz clock frequency. Four of these cores can operate in dual-core lockstep pairs (with one core acting as a redundant checker for its partner) to provide fault detection for safety-critical functions. The TriCore™ cores use a superscalar Harvard architecture with 32-bit instruction words (and support for mixed 16/32-bit instruction encoding for code density). Each core includes a dedicated Floating Point Unit (FPU) for single-precision arithmetic and supports DSP-oriented instructions (e.g. single-cycle 16×16 MAC operations, SIMD for 16-bit/8-bit data) to accelerate signal processing tasks. For fast real-time performance, the architecture offers low interrupt latency (with automatic context save on-chip) and features like zero-overhead loops and a programmable peripheral timer unit for scheduling tasks. In total, a high-end TC3xx (such as the TC39x) provides six 300 MHz cores plus four checker cores, yielding a theoretical processing throughput of up to ~2400 DMIPS (Dhrystone MIPS) when all cores are utilized. This represents roughly a threefold increase in computational power over the previous AURIX™ generation (which achieved ~740 DMIPS with three cores).&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot;&amp;gt;UDE Debug, Trace and Test solutions for Infineon TriCore™ AURIX™ TC32, TC33, TC35, TC36, TC37, TC38, TC39, TC3x Microcontrollers       https://www.pls-mc.com/products/infineon-tricore-aurix-tc32-tc33-tc35-tc36-tc37-tc38-tc39-microcontrollers/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Memory Subsystem and Cache===&lt;br /&gt;
AURIX™ TC3xx microcontrollers integrate a large on-chip memory system to meet real-time and safety requirements. Program flash memory sizes range up to 16 MB on the largest models, with over 6 MB of on-chip SRAM available for data and scratchpad usage. Each TriCore™ CPU has its own tightly-coupled local memories as well as caches: for example, each core includes a 32 KB instruction cache and a 16 KB data cache. In addition, every core has separate local RAM blocks (Harvard architecture) for instructions and data (often termed PSPR and DSPR – Program Scratch-Pad RAM and Data Scratch-Pad RAM) that allow deterministic access for time-critical routines. Shared global memory is provided via a Local Memory Unit (LMU) which can be up to several hundred kilobytes (for instance, 768 KB in the TC39x) accessible by all cores. The memory system is connected by a high-bandwidth internal bus fabric (the SRI crossbar and peripheral buses) that arbitrates access between cores, DMA engines, and peripherals. This architecture ensures that each core can quickly fetch instructions and data either from its local cache/RAM or the central memory, enabling efficient parallel processing. Memory protection hardware is also built-in to isolate tasks of different criticality, an important feature for safety and security.&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Peripherals and Interfaces===&lt;br /&gt;
One of the strengths of the AURIX™ TC3xx architecture is its extensive set of on-chip peripherals and interface controllers, designed to handle the complex networking and I/O needs of modern vehicles and industrial systems. Key peripheral features and interfaces include:&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref3635926&amp;quot;&amp;gt;AURIX™ Training System Architecture https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_System_Architecture-Training-v01_00-EN.pdf?fileId=5546d46272e49d2a0172eb476d56739e&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Networking Interfaces:&#039;&#039;&#039; Multiple CAN FD controllers (supporting up to 12 CAN-FD channels in high-end variants) for in-vehicle networking, with legacy CAN and LIN interfaces (up to 24 LIN channels) for lower-speed device communication. Many TC3xx devices also integrate up to two FlexRay controllers for time-triggered automotive networks (maintaining compatibility with earlier automotive communication standards). For high-bandwidth data, a Gigabit Ethernet MAC is included, enabling uses like automotive Ethernet (e.g., audio-video bridging and IP-based connectivity).&lt;br /&gt;
* &#039;&#039;&#039;Analog and Timers:&#039;&#039;&#039; A suite of analog peripherals including multiple ADC units for sensor interfacing and motor control, and DACs in some models. Sophisticated timer units are on-chip, notably the Generic Timer Module (GTM) and Capture/Compare Units (CCU6), which can generate complex PWM waveforms and handle events for engine control, power inverters, or robotics with minimal CPU intervention. These timers enable precise control of actuators (e.g. fuel injection timing, electric motor commutation) in real time.&lt;br /&gt;
*&#039;&#039;&#039;Serial Interfaces:&#039;&#039;&#039; SPI, I²C, UART/LIN and other serial interfaces for connecting to external sensors, actuator controllers, and memory. The controllers often support multiple instances (several SPI channels, etc.) to accommodate numerous devices. AURIX™ TC3xx also provides an external bus interface (EBU) for parallel memory or FPGA connectivity, and an SD/MMC interface (eMMC) to connect external flash memory for data logging or over-the-air update storage.&lt;br /&gt;
*&#039;&#039;&#039;Dedicated Processing Units:&#039;&#039;&#039; Some AURIX™ TC3xx models include special accelerators, such as a hardware Fast Fourier Transform unit (HW-FFT) and up to two Signal Processing Units (SPUs) optimized for radar signal processing. These enable the microcontroller to handle radar front-end data or other intensive DSP tasks (like Fourier transforms for radar or audio signals) on-chip, which is crucial for advanced driver assistance sensors. There is also a &#039;&#039;Security Module&#039;&#039; (covered in a later section) and a Safety Management Unit that supervise system integrity.&lt;br /&gt;
*&#039;&#039;&#039;Other On-chip Modules:&#039;&#039;&#039; Watchdog timers, error-correction coders for memories (ECC on flash and RAM for reliability), a programmable interrupt system, multiple DMA channels (up to 128 DMA channels) for efficient data movement, and debug interfaces (JTAG and a 2/3-pin DAP) for development. The on-chip debug system supports tracing of program execution (via a built-in Emulation Memory, MCDS) to aid in complex multicore software development.&lt;br /&gt;
&lt;br /&gt;
Overall, the AURIX™TC3xx provides a highly integrated SoC-like platform, allowing a single chip to manage tasks ranging from powertrain control and chassis control to infotainment gateways. This high level of integration reduces the need for separate companion chips and helps to lower system complexity and cost.&lt;br /&gt;
===Performance and Benchmarking===&lt;br /&gt;
Fabricated in a 40 nm embedded flash process&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;, AURIX™ TC3xx processors achieve significant performance gains over prior generations while maintaining automotive-grade power efficiency. With six 32-bit cores at 300 MHz (four of them paired in lockstep), a flagship TC3xx device (e.g., TC39x) can deliver up to approximately 2,400 DMIPS of aggregate computing throughput&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;. In terms of per-core performance, the TriCore™ architecture yields around 1.3–2.0 DMIPS/MHz depending on the instruction mix, meaning each 300 MHz core can approach ~400–600 DMIPS in optimized scenarios&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. This is on par with or exceeding many contemporary 32-bit automotive MCUs. The integrated DSP extensions and optional accelerators (like the FFT unit) also enable high-speed signal processing, with Infineon citing up to ~1.8 GFLOPS of DSP throughput for certain operations&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Real-world performance improvements of the TC3xx over its predecessor are notable: for example, compared to the first-generation AURIX™ (which offered up to 740 DMIPS), the TC3xx’s expanded core count and clock speed provide roughly three times the computational power on the same type of workload&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. This extra headroom allows more functions (such as running multiple control algorithms or sensor fusion tasks in parallel) to be consolidated onto one microcontroller without compromising real-time deadlines&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. Despite the increase in speed and core count, the TC3xx family was designed with power and thermal constraints in mind, achieving these gains within similar power consumption envelopes as the previous generation by leveraging the smaller 40 nm process and power-saving features like clock gating&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot; /&amp;gt;. The deterministic real-time performance (with features like lockstep and tightly-coupled memory) makes the AURIX™ TC3xx suitable for the most demanding automotive applications, where consistent low latency and high throughput are required simultaneously.&lt;br /&gt;
&lt;br /&gt;
== On-Chip System Connectivity and Bridges ==&lt;br /&gt;
[[File:TC3xx On-Chip System Connectivity.png|thumb|The TC3xx has two &#039;&#039;&#039;SRI Domains&#039;&#039;&#039; (SRI0 and SRI1). CPU0 to CPU3 are connected to SRI0, CPU4/5 are connected to SRI1.|alt=TC3xx On-Chip System Connectivity|423x423px]]&lt;br /&gt;
The AURIX™ TC3xx Platform has three independent on-chip connectivity resources: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System Resource Interconnect Fabric (SRI Fabric)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and other high bandwidth requestors to high bandwidth memories and other resources for instruction fetches and data accesses. A key component of the fabric is the SRI crossbar, which connects all the agents in one SRI domain. The SRI crossbar carries the transactions between the SRI Masters and SRI Slaves of the domain. The SRI crossbar supports parallel transactions between different SRI Master and SRI Slave agents. In addition to the parallelism of concurrent requests, it also supports pipelined requests from an SRI Master to a SRI Slave.&lt;br /&gt;
* &#039;&#039;&#039;System Peripheral Bus (SPB)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and other SPB masters to the medium and low bandwidth peripherals. SPB masters do not directly connect to the SRI Fabric, and will access SRI attached resources via a SFI_F2S Bridge.&lt;br /&gt;
* &#039;&#039;&#039;Back Bone Bus (BBB)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and SPB masters with ADAS resources. SRI Masters do not directly connect to the BBB, but access BBB attached resources via a SFI_S2F Bridge. SPB masters also do not directly connect to the BBB, but access BBB attached resources via bridging over the SRI Fabric.&lt;br /&gt;
&lt;br /&gt;
=== CPU Resource Access Times ===&lt;br /&gt;
These tables describe the CPU access times to various resources in CPU clock cycles for the AURIX™ TC3xx Platform. In the case of load or fetch accesses, the access times are the minimum number of CPU stall cycles to complete the access. If there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes. &lt;br /&gt;
&lt;br /&gt;
For write access, the access times are the maximum for a sequence of such access (non-conflicting). In many cases for a singleton access, or a short sequence, write buffering reduces the stall effect seen by a CPU, sometimes to 0. However, as with loads and fetches, if there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes.&lt;br /&gt;
&lt;br /&gt;
==== Access latency for global resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! CPU stall cycles&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| Data read from System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |The final number of stall cycles will depend&amp;lt;br&amp;gt;on the real number of WS generated by the target resource.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;9 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |When SFI_S2F is connected to XBar2 (TC39x and TC37xED)&amp;lt;br&amp;gt;there is an additional latency due to access going through an S2S.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;5 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;6 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;3 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Module Wait State&#039;&#039;&#039;: The number of wait states for read and for write accesses is &amp;gt;= 1 and depends on the accessed module and its configuration.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU Accesses: Stall cycles for local and SRI resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! Local CPU !! Local SRI !! Remote SRI Domain&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DSPR || 0 || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DLMU || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DLMU || 2 || 5, {{rev|3|with Pipelining}}|| 5, 4&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DLMU || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to PSPR || See local SRI column || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PFlash || 5 + PWS || 10 + PWS || 13 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer miss) || 2 + PWS || 9 + PWS || 12 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer hit) || 3 || 6 || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to LMU || n.a. || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DFlash || n.a. || 5 + 3*(3 + DCWS) || 8 + 3*(3 + DCWS)&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC39x, TC37xED) || n.a. || n.a. || 14, {{rev|15|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC39x, TC37xED) || n.a. || n.a. || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC35x, TC33xED) || n.a. || 11, {{rev|12|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC35x, TC33xED) || n.a. || 9 || n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from DAM || n.a. || 10 || 13&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to DAM || n.a. || 7 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;Remote SRI Domain&#039;&#039;&#039;: Only applies to products with SRI extenders. Additional latency due to access going through an S2S&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;DCWS&#039;&#039;&#039;: Configured DFlash Corrected Wait States (Includes cycles for DFlash access cycles and ECC correction latency)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Subsystem ==&lt;br /&gt;
[[File:TC3xx Processor Core, Local Memory and Connectivity.png|alt=TC3xx Processor Core, Local Memory and Connectivity|thumb|Processor Core, Local Memory and Connectivity]]The Infineon AURIX™ TC3xx features up to 6 processor cores (CPU0 ... CPU5) implementing the [[TriCore Instruction Set Architecture|TC1.6.2 instruction set architecture]]. The following section focuses on the microarchitectural details of the CPU subsystem. For more information about the ISA, please take a look at the [[TriCore Instruction Set Architecture]].&lt;br /&gt;
&lt;br /&gt;
The processor core connects to the following memories and bus interfaces (where implemented):&lt;br /&gt;
*Program Scratch-Pad SRAM (PSPR)&lt;br /&gt;
*Data Scratch-Pad SRAM (DSPR)&lt;br /&gt;
*Program Cache (PCache)&lt;br /&gt;
*Data Cache (DCache)&lt;br /&gt;
*Local Memory Unit (DLMU)&lt;br /&gt;
*Local Pflash bank (LPB)&lt;br /&gt;
*SRI slave interface (x2)&lt;br /&gt;
*SRI master Interface&lt;br /&gt;
*SPB master interface&lt;br /&gt;
&lt;br /&gt;
=== TC1.6.2P Implementation Features ===&lt;br /&gt;
*Most instructions executed in 1 cycle&lt;br /&gt;
*Branch instructions in 1, 2 or 3 cycles (using dynamic branch prediction)&lt;br /&gt;
*Wide memory interface for fast context switch&lt;br /&gt;
* Automatic context save-on-entry and restore-on-exit for: subroutine, interrupt, trap&lt;br /&gt;
*Six memory protection register sets&lt;br /&gt;
*Dual instruction issuing (in parallel into Integer Pipeline and Load/Store Pipeline)&lt;br /&gt;
*Third pipeline for loop instruction only (zero overhead loop)&lt;br /&gt;
*Single precision Floating Point Unit (IEEE-754 Compatible)&lt;br /&gt;
*Dedicated Integer divide unit&lt;br /&gt;
*18 data memory protection ranges, 10 code memory protection ranges arranged in 6 sets&lt;br /&gt;
&lt;br /&gt;
=== Superscalar Architecture ===&lt;br /&gt;
The processor core within the AURIX™ TC3xx family, specifically the TC1.6.2P implementation, employs a superscalar architecture characterized by three parallel pipelines: the Integer Pipeline, the Load/Store Pipeline, and the Loop Pipeline. Superscalar execution is a form of instruction-level parallelism that enables the processor to issue and execute multiple instructions during a single clock cycle. The TriCore™ TC3xx core&#039;s superscalar architecture allows it to issue and execute multiple instructions in parallel. Specifically, it can issue up to two instructions simultaneously to the Integer and Load/Store pipelines. However, there are certain constraints on this dual issuing capability. For example, back-to-back data arithmetic instructions can only be issued in separate cycles, and a load/store instruction can be issued either on its own or paired with a data arithmetic instruction, provided the load/store instruction is the second in the pair. Under ideal conditions, with careful instruction scheduling, this dual-issue capability can lead to a throughput of close to 0.5 clock cycles per instruction, effectively executing two instructions per cycle.&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Stages ===&lt;br /&gt;
The execution of instructions within the TriCore™ TC3xx core is managed through a pipeline consisting of several stages. In one document it is mentioned that the pipeline consists of 6 stages &amp;lt;ref name=&amp;quot;ref3635926&amp;quot; /&amp;gt;, but the exact stages remain unclear. From the architecture the following stages can be inferred:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Fetch Stage&#039;&#039;&#039;: The initial stage in the pipeline is the Fetch stage, where instructions are retrieved from memory. This task is handled by the Instruction Fetch Unit (IFU), which is responsible for fetching instructions from the memory system. To improve efficiency, the IFU employs a pre-fetching mechanism, anticipating the instructions that will be needed and bringing them into the processor before they are actually required. Instructions are fetched through a 64-bit wide Program Memory Interface (PMI), allowing for the retrieval of a significant amount of instruction data in each cycle. The fetched instructions are then placed into an issue FIFO, a buffer capable of holding up to six instructions. This buffer plays a crucial role in managing the flow of instructions to the subsequent execution pipelines. The 64-bit fetch width and the instruction buffer are indicative of a design that aims to ensure a continuous supply of instructions to the pipelines, preventing them from being starved of work. A wider fetch path allows for more instruction bits to be obtained from memory in each clock cycle, while the buffer helps to mitigate temporary delays in instruction fetching.&lt;br /&gt;
* &#039;&#039;&#039;Execution Unit&#039;&#039;&#039;: The Execution Unit contains the Integer Pipeline, the Load/Store Pipeline and the Loop Pipeline. All three pipelines operate in parallel and are capable of executing instructions simultaneously. Each pipline has its own decode stage and two execute stages. Furthermore, the TC3xx features a Floating Point Unit (FPU). It is not clear whether the FPU is part of the execution unit or a separate unit. It is assumed that the FPU also has its own decode stage and an unknown number of execute stages&lt;br /&gt;
** &#039;&#039;&#039;Decode Stage&#039;&#039;&#039;: Following the Fetch stage, the instruction are issued to one of the pipelines. In the decode stage of each pipeline, the instruction is examined and translated to determine the specific operation it represents and to identify the operands it will operate on. It is assumed that operands are read from the register file during the decode stage.&lt;br /&gt;
** &#039;&#039;&#039;Execute Stage&#039;&#039;&#039;: The Execute stage is where the actual operation specified by the instruction is carried out. Pipeline hazards (stalls) are minimised by the use of forwarding paths between pipeline stages allowing the results of one instruction to be used by a following instruction as soon as the result becomes available.&lt;br /&gt;
** &#039;&#039;&#039;Writeback Stage&#039;&#039;&#039;: The final stage in the pipeline is the Writeback stage. In this stage, the results produced by the executed instruction are written back to the processor&#039;s register file, making them available for subsequent instructions. It is unclear whether the writeback stage is part of the (two) execution stages or a separate stage.&lt;br /&gt;
&lt;br /&gt;
=== Execution Pipelines ===&lt;br /&gt;
The TriCore™ TC3xx core leverages four parallel pipelines to enhance its performance. Each pipeline is designed to handle a specific class of instructions:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Integer Pipeline:&#039;&#039;&#039; This pipeline is responsible for executing integer arithmetic and logical instructions, including data-conditional jump instructions, bit manipulation operations, as well as division and multiply-accumulate (MAC) instructions.&lt;br /&gt;
* &#039;&#039;&#039;Load/Store Pipeline:&#039;&#039;&#039; The primary function of this pipeline is to manage memory access operations, including loading data from memory and storing data to memory. It also handles address arithmetic, unconditional jump instructions, procedure call instructions, context-switching operations, and control flow related to context save areas (CSAs).&lt;br /&gt;
* &#039;&#039;&#039;Loop Pipeline:&#039;&#039;&#039; This is a specialized pipeline designed to facilitate zero-overhead loops, a technique that significantly improves the performance of iterative code sections. Its design aims to eliminate or minimize the overhead typically associated with loop control, such as incrementing counters and checking loop conditions. Some documentation suggests that the loop pipeline comes along with a &amp;quot;Loop Cache&amp;quot;. This dedicated cache would likely be used to store instructions belonging to the loop, enabling very fast access and execution for repeated iterations.&lt;br /&gt;
* &#039;&#039;&#039;Floating Point Unit (FPU):&#039;&#039;&#039; The FPU is responsible for executing floating-point arithmetic operations&lt;br /&gt;
&lt;br /&gt;
=== Store Buffers ===&lt;br /&gt;
The TriCore™ TC3xx core include &#039;&#039;&#039;Store Buffers&#039;&#039;&#039; to decouple memory write operations from CPU instruction execution. All stores from the Load/Store Pipeline are placed in the store buffer prior to being written to local memory or transferred via the bus system. Write data is taken from the store buffers and written to memory when the target memory or bus interface becomes available. In normal operation the CPU will prioritise memory load operations over store operations in order to improve performance unless the store buffer is full or the order of load and store operations must be preserved (e.g. peripheral space access). The store buffer can hold the data for up to 6 stores operations. To improve performance the store buffer will merge consecutive byte, half-word, and word writes of the same location to reduce the number of memory accesses required.&lt;br /&gt;
&lt;br /&gt;
=== Instruction Timing ===&lt;br /&gt;
&lt;br /&gt;
==Functional Safety and Security Features==&lt;br /&gt;
===Hardware Security Module and Encryption===&lt;br /&gt;
One of the defining features of the AURIX™ TC3xx family is its robust hardware-based security subsystem, implemented to protect against cyber threats and unauthorized manipulation of vehicle systems. Each TC3xx MCU includes a dedicated &#039;&#039;Hardware Security Module&#039;&#039; (HSM), which is essentially an on-chip co-processor with its own CPU and cryptographic engine designed to handle secure operations. In the second-generation AURIX™ (TC3xx), the HSM was upgraded with support for asymmetric cryptography (e.g., RSA, ECC algorithms) in hardware, providing significantly faster public-key encryption and authentication capabilities than pure software implementations. This HSM supports &#039;&#039;&#039;EVITA Full&#039;&#039;&#039; (the highest level of the EU’s EVITA automotive security requirements), meaning it can perform secure boot, message authentication, and encryption at a level suitable for protecting critical in-vehicle communications. For example, the HSM can encrypt and authenticate CAN/Ethernet messages to prevent spoofing or tampering on the vehicle network, and it can manage cryptographic keys securely isolated from the main application cores.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The security module enables features like &#039;&#039;&#039;secure boot&#039;&#039;&#039;, where the AURIX™ will only execute firmware that is digitally signed by the vehicle manufacturer, thereby preventing unauthorized or malicious code. It also facilitates &#039;&#039;over-the-air (OTA) updates&#039;&#039; in a secure manner: the TC3xx HSM can verify and decrypt update packages received via telematics, allowing firmware upgrades while protecting against attackers attempting to hijack the software. In addition, the HSM includes a true random number generator and supports protocols for immobilizer and theft protection systems. Infineon’s implementation essentially treats the HSM as an “embedded smart card” inside the microcontroller. This approach, building on Infineon’s expertise in chip card security, helps to safeguard sensitive assets like cryptographic keys and to perform secure operations (encryption, decryption, authentication) in hardware, making attacks significantly more difficult. The strong cybersecurity provisions of the AURIX™ TC3xx have made it a preferred choice for vehicle gateway ECUs and central body controllers, which are points of entry for connected car communications and thus high-value targets for hackers. By incorporating the HSM, automotive OEMs can implement advanced security features such as encrypted onboard communication (to thwart bus tampering) and secure diagnostics, ensuring the vehicle’s electronic data is protected against cyber threats even as cars become more connected.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref19484776953&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Functional Safety and Fault Tolerance===&lt;br /&gt;
Beyond cybersecurity, the AURIX™ TC3xx architecture is built with extensive &#039;&#039;functional safety&#039;&#039; features to meet the highest safety integrity levels in automotive systems. The multi-core design supports &#039;&#039;lockstep operation&#039;&#039;, where redundant checker cores run in parallel with main cores and continuously compare results cycle-by-cycle. In TC3xx devices, up to four of the six TriCore™ CPUs have such lockstep partner cores, allowing the microcontroller to detect any single-point CPU failure instantly (if a discrepancy arises between the core and its checker, a fault is signaled). A &#039;&#039;Safety Management Unit (SMU)&#039;&#039; is integrated on-chip to monitor various fault conditions throughout the device – it aggregates error signals from the lockstep cores, memory ECC monitors, clock/watchdog monitors, and peripheral self-tests, and can initiate safe-state actions (like resetting the chip or signaling an error pin to an external supervisor) if a critical fault is detected. The AURIX™ safety concept also includes a distributed Memory Protection Unit (MPU) arrangement, with multiple memory protection contexts that prevent errant or malicious code from writing to wrong memory areas. This helps contain faults and eases the integration of software with mixed criticality (Infineon allows partitioning software components of different ASIL levels on the same MCU while keeping them isolated).&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref19519075552&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crucially, the TC3xx family was developed according to ISO 26262 processes and can achieve &#039;&#039;&#039;ASIL-D&#039;&#039;&#039; (Automotive Safety Integrity Level D), the highest grade for automotive functional safety. Compared to a traditional dual-core lockstep approach, the AURIX’s™ multi-core safety architecture allowed Infineon to reduce certain safety development overheads (earlier Infineon data suggested up to 30% reduction in safety software workload) by providing built-in safety mechanisms and diagnostics. Infineon supplies a comprehensive safety manual and diagnostic libraries for the AURIX™, helping engineers utilize features like CPU self-tests, RAM tests, and CRC checks to comply with safety standards. In addition to automotive standards, the AURIX™ TC3xx has also been qualified for &#039;&#039;&#039;industrial safety&#039;&#039;&#039;: in 2023, Infineon announced support for IEC 61508 metrics, enabling designs with AURIX™ to reach SIL-2 and SIL-3 safety integrity levels for industrial applications. This cross-industry safety compliance is facilitated by the MCU’s redundant design and detailed failure mode documentation (FMEDA) provided by Infineon. In summary, the AURIX™ TC3xx integrates both proactive safety (fault prevention via lockstep, monitoring and protection) and reactive safety (fault detection and safe shutdown), making it a dependable component for systems that cannot afford unintended behavior, whether in cars, factories, or aerospace. &amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref4967712052&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref196858272&amp;quot;&amp;gt;MCUs support industrial functional safety - Electronic Products https://www.electronicproducts.com/mcus-support-industrial-functional-safety/&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Platform Devices ==&lt;br /&gt;
The following table shows a feature overview of the AURIX™ TC3xx Platform family focusing on memory and number of cores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Feature&lt;br /&gt;
!TC33x&lt;br /&gt;
!TC33xEXT&lt;br /&gt;
!TC35x&lt;br /&gt;
!TC36x&lt;br /&gt;
!TC37x&lt;br /&gt;
!TC37xEXT&lt;br /&gt;
!TC38x&lt;br /&gt;
!TC39x&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |CPUs&lt;br /&gt;
|Cores / Checker Cores&lt;br /&gt;
|1 / 1&lt;br /&gt;
|2 / 1&lt;br /&gt;
|3 / 2&lt;br /&gt;
|2 / 2&lt;br /&gt;
|3 / 2&lt;br /&gt;
|3 / 3&lt;br /&gt;
|4 / 2&lt;br /&gt;
|6 / 4&lt;br /&gt;
|-&lt;br /&gt;
|Max. Freq.&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Cache per CPU &lt;br /&gt;
|Program [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |32&lt;br /&gt;
|-&lt;br /&gt;
|Data [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |SRAM per CPU&lt;br /&gt;
|PSPR [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|32|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|DSPR [KB]&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|192|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|-&lt;br /&gt;
|DLMU [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|8|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |SRAM global&lt;br /&gt;
|LMU [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|512&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|128&lt;br /&gt;
|768&lt;br /&gt;
|-&lt;br /&gt;
|DAM [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|32&lt;br /&gt;
| -&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Extension Memory (EMEM)&lt;br /&gt;
|TCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XTM [KB]&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Program Flash&lt;br /&gt;
|Size [MB]&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|10&lt;br /&gt;
|10&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|Banks [MB]&lt;br /&gt;
|1 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 3&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|5 x 3, 1 x 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Data Flash&lt;br /&gt;
|DF0 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|256&lt;br /&gt;
|512&lt;br /&gt;
|512&lt;br /&gt;
|1024&lt;br /&gt;
|-&lt;br /&gt;
|DF1 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |DMA&lt;br /&gt;
|Channels&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
|Move Engines&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Resource Partitions&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
The AURIX™ TC3xx family is a series of high-performance microcontrollers widely used in automotive and industrial applications. Compilers for the AURIX™ TC3xx are crucial for developers aiming to optimize performance, reliability, and safety in their applications. One significant aspect of the compiler landscape for AURIX™ TC3xx is the limited direct support from mainline open-source compilers such as GCC or LLVM/Clang. The primary reason for this is the stringent requirements for functional safety in automotive and industrial applications, which demand specialized features and compliance with safety standards that are often not met by general-purpose open-source compilers.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Compilers ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Tasking&#039;&#039;&#039;: Tasking compilers are renowned for their robust support for automotive applications, offering advanced debugging capabilities and optimization techniques tailored for the AURIX™ architecture. They provide extensive code optimization, comprehensive debugging tools, and strong support for safety standards such as ISO 26262, making them ideal for developing high-performance, reliable, and safe applications.&lt;br /&gt;
# &#039;&#039;&#039;HighTec&#039;&#039;&#039;: The HighTec compiler is a popular choice, known for its Eclipse-based development environment and strong multicore support. HighTec provides both GCC and LLVM-based ports of open-source compilers tailored specifically for the AURIX™ TC3xx family. These compilers offer efficient parallel execution, advanced code analysis, and an integrated development environment, ensuring robust performance and compliance with safety standards.&lt;br /&gt;
# &#039;&#039;&#039;Green Hills Software&#039;&#039;&#039;: Green Hills Software provides a highly optimized toolchain aimed at safety-critical applications, focusing on high performance and strict compliance with automotive standards. Their compiler offers superior optimization, extensive safety features, and a proprietary IDE with specialized tools for automotive development, ensuring developers can meet the stringent demands of functional safety.&lt;br /&gt;
&lt;br /&gt;
=== GCC for AURIX™ ===&lt;br /&gt;
&lt;br /&gt;
While mainline GCC does not directly support the AURIX™ TC3xx family, there is an unofficial GCC version available for AURIX™. Due to the GNU General Public License (GPL), the source code from HighTec was retrieved and, along with binary versions, published on GitHub:&lt;br /&gt;
&lt;br /&gt;
*GCC 4.9.4/Binutils 2.20/Newlib 1.18 for Tricore™ AURIX™ [[https://github.com/volumit/package_494 Source]] [[https://github.com/volumit/tricore_gcc494_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc494_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GCC 9.4.0/Binutils 2.20/Newlib 1.18 for Tricore™ AURIX™ [[https://github.com/volumit/package_940 Source]] [[https://github.com/volumit/tricore_gcc940_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc940_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GDB 10.0.50 for Tricore™ AURIX™ [[https://github.com/volumit/gdb-tricore Source]]&lt;br /&gt;
==emmtrix Tools for AURIX™ TC3xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX™ TC3xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
====Architecture &amp;amp; Variant Consulting====&lt;br /&gt;
* Support in selecting suitable AURIX derivatives for new product generations (trade-offs between performance, price, safety, and peripheral features)&lt;br /&gt;
*Analysis of requirements and mapping to specific AURIX product families (e.g., TC3xx vs. TC4xx)&lt;br /&gt;
*Analysis/identification of performance margins for down- or upgrades&lt;br /&gt;
==== Runtime Analysis &amp;amp; Performance Engineering ====&lt;br /&gt;
* Execution of detailed runtime analyses (maximum/minimum vs. average)&lt;br /&gt;
* Identification of bottlenecks in program execution, including benchmarking&lt;br /&gt;
*Optimization of access to flash, RAM, and peripherals (e.g., cache configuration, DMA utilization)&lt;br /&gt;
====Dependency Analysis====&lt;br /&gt;
*Freedom from interference (ASIL level check)&lt;br /&gt;
&lt;br /&gt;
==== Multicore Design &amp;amp; Scheduling Concepts ====&lt;br /&gt;
&lt;br /&gt;
* Development of core mapping strategies (static vs. dynamic assignment of compute-intensive tasks)&lt;br /&gt;
&lt;br /&gt;
*Support for integrating bare-metal scheduling on AURIX&lt;br /&gt;
*Assistance with architectural decisions to meet functional safety requirements in multicore systems&lt;br /&gt;
&lt;br /&gt;
==== Training &amp;amp; Know-how Transfer ====&lt;br /&gt;
&lt;br /&gt;
* Technical in-house workshops on AURIX optimization, multicore strategies&lt;br /&gt;
&lt;br /&gt;
*Coaching of employees/project teams in performance analysis and systematic tuning&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC4x|Infineon AURIX™ TC4x]]&lt;br /&gt;
*[[Infineon AURIX TC2xx|Infineon AURIX™ TC2xx]]&lt;br /&gt;
*[[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&lt;br /&gt;
*[https://documentation.infineon.com/aurixtc3xx/docs/qmd1702366622648 AURIX™ TC3xx user manuals]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d3605221d96 AURIX™ TC3xx User Manual Part-1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d35f8541d94 AURIX™ TC3xx User Manual Part-2]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd AURIX™ TC3xx Architecture vol 1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 AURIX™ TC3xx Architecture vol 2]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
 |title=Infineon AURIX TC3xx Family – Deep Dive&lt;br /&gt;
 |description=This deep dive into Infineon&#039;s AURIX TC3xx family explores its multi-core TriCore architecture, real-time capabilities, safety and security features and tools&lt;br /&gt;
 |image=File:AURIX_TC399_LFBGA-516_plain.jpg&lt;br /&gt;
 |keywords=AURIX, Infineon, TC3xx, microcontroller, TriCore, automotive, ADAS, ISO 26262, functional safety, embedded security, ASIL-D, deep dive&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2705</id>
		<title>Infineon AURIX TC3xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2705"/>
		<updated>2025-05-21T08:15:37Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AURIX TC399 LFBGA-516 plain.jpg|thumb|Infineon AURIX™ TC3xx second-generation microcontroller (TC399 BGA package). The AURIX™ TC3xx family integrates multiple TriCore™ CPUs and on-chip safety/security modules for automotive applications.|alt=TC399 BGA package]]&lt;br /&gt;
The &#039;&#039;&#039;Infineon AURIX™ TC3xx&#039;&#039;&#039; (Automotive Realtime Integrated neXt-generation architecture) is a family of 32-bit automotive microcontrollers introduced as the second generation of Infineon’s AURIX™ platform. Launched in 2016 as a successor to the earlier [[Infineon AURIX TC2xx|AURIX™ TC2xx series]], the TC3xx devices emphasize high performance, functional safety, and embedded security for advanced automotive and industrial applications. AURIX™ TC3xx microcontrollers feature a hexa-core [[TriCore Instruction Set Architecture|&#039;&#039;TriCore&#039;&#039; processor architecture]] with enhanced safety measures, making them well-suited for demanding tasks such as autonomous driving domain controllers, powertrain control, and sensor data fusion in advanced driver-assistance systems (ADAS). The combination of multiple CPU cores, extensive on-chip memory, and a rich peripheral set allows TC3xx chips to deliver real-time responsiveness and reliability in safety-critical environments while meeting stringent automotive standards (such as ISO 26262 for functional safety).&amp;lt;ref name=&amp;quot;ref1951907555&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1428109010&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1948477695&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Applications==&lt;br /&gt;
AURIX™ TC3xx microcontrollers are used in a variety of safety-critical and high-performance applications across the automotive and industrial sectors. Key application domains include:&lt;br /&gt;
*&#039;&#039;&#039;Automotive Systems:&#039;&#039;&#039; The TC3xx family was primarily designed for automotive use and finds broad application in vehicles’ electronic control units (ECUs). Notably, it is used in &#039;&#039;powertrain and drivetrain control&#039;&#039; (engine management, transmission control, hybrid/electric vehicle inverter control, battery management) where its real-time processing and resilience support precise actuator control. It is also deployed in &#039;&#039;chassis and safety systems&#039;&#039; such as anti-lock braking systems (ABS), electronic stability control, airbag controllers, and electric power steering, leveraging its redundancy and fast response for fail-safe operation. With the growth of ADAS and autonomous driving, AURIX™ TC3xx devices serve as domain controllers for &#039;&#039;ADAS sensor fusion&#039;&#039;, handling data from radar, LiDAR, camera, and ultrasonic sensors and performing environment modeling and decision-making algorithms. Their combination of multiple cores and a built-in radar signal processing sub-system makes them an attractive choice for tasks like front radar processing, sensor fusion hubs, and &#039;&#039;autonomous driving domain controllers&#039;&#039; that must meet ASIL-D safety levels.&amp;lt;ref name=&amp;quot;ref14281090102&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Industrial Automation and Robotics:&#039;&#039;&#039; Infineon has also positioned the AURIX™ family for use in industrial applications that demand high reliability. The TC3xx MCUs, with their hardware self-test mechanisms and safety documentation, can be found in &#039;&#039;industrial motor drives, robotics controllers, and PLCs (programmable logic controllers)&#039;&#039;, where they help achieve functional safety certifications up to SIL-3 (according to IEC 61508). The powerful TriCore™ cores and rich peripheral set enable complex motor control algorithms (e.g., field-oriented control for servo motors) and real-time sensor processing in factory automation. Additionally, the support for automotive-grade networking (CAN/CAN-FD, Ethernet) and timing peripherals makes them suitable for synchronous control in robotics and machinery. Infineon’s provision of AUTOSAR-compatible software for AURIX™ has even facilitated its use in non-automotive settings such as medical devices and elevator controllers, where proven safety and security are required.&amp;lt;ref name=&amp;quot;ref496771205&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Aerospace and Defense:&#039;&#039;&#039; The high fault-tolerance and deterministic performance of the AURIX™ TC3xx architecture also attract interest for aerospace and other mission-critical uses. In avionics systems or autonomous drones, for instance, the lockstep core configuration and robust error checking of AURIX™ can provide an added layer of reliability for flight control computers or navigation systems. While primarily an automotive chip, its ability to operate in harsh conditions (−40°C to 150°C range) and to detect internal failures in real-time makes it viable for certain aerospace electronic systems. Some defense and aerospace projects leverage COTS (commercial off-the-shelf) automotive components like AURIX™ for applications such as unmanned vehicle control and high-reliability communication links, given its safety pedigree. (In these domains, additional analysis and possibly radiation testing would be performed if the devices are used in high-altitude or space environments.)&lt;br /&gt;
== Architecture Overview ==&lt;br /&gt;
[[File:Infineon TC3xx Architecture.webp|545x545px|thumb|alt=TC3xx Architecture Overview|TC3xx Architecture Overview]]&lt;br /&gt;
=== Processor Cores and Architecture===&lt;br /&gt;
The AURIX™ TC3xx family implements Infineon’s TriCore™ architecture, which uniquely combines aspects of RISC microcontrollers, DSP (digital signal processor) capabilities, and conventional microprocessor features into a single core design. Each TC3xx device can include up to six independent TriCore™ 32-bit CPU cores (TriCore™ version 1.6.2), all capable of running at up to 300 MHz clock frequency. Four of these cores can operate in dual-core lockstep pairs (with one core acting as a redundant checker for its partner) to provide fault detection for safety-critical functions. The TriCore™ cores use a superscalar Harvard architecture with 32-bit instruction words (and support for mixed 16/32-bit instruction encoding for code density). Each core includes a dedicated Floating Point Unit (FPU) for single-precision arithmetic and supports DSP-oriented instructions (e.g. single-cycle 16×16 MAC operations, SIMD for 16-bit/8-bit data) to accelerate signal processing tasks. For fast real-time performance, the architecture offers low interrupt latency (with automatic context save on-chip) and features like zero-overhead loops and a programmable peripheral timer unit for scheduling tasks. In total, a high-end TC3xx (such as the TC39x) provides six 300 MHz cores plus four checker cores, yielding a theoretical processing throughput of up to ~2400 DMIPS (Dhrystone MIPS) when all cores are utilized. This represents roughly a threefold increase in computational power over the previous AURIX™ generation (which achieved ~740 DMIPS with three cores).&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot;&amp;gt;UDE Debug, Trace and Test solutions for Infineon TriCore™ AURIX™ TC32, TC33, TC35, TC36, TC37, TC38, TC39, TC3x Microcontrollers       https://www.pls-mc.com/products/infineon-tricore-aurix-tc32-tc33-tc35-tc36-tc37-tc38-tc39-microcontrollers/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Memory Subsystem and Cache===&lt;br /&gt;
AURIX™ TC3xx microcontrollers integrate a large on-chip memory system to meet real-time and safety requirements. Program flash memory sizes range up to 16 MB on the largest models, with over 6 MB of on-chip SRAM available for data and scratchpad usage. Each TriCore™ CPU has its own tightly-coupled local memories as well as caches: for example, each core includes a 32 KB instruction cache and a 16 KB data cache. In addition, every core has separate local RAM blocks (Harvard architecture) for instructions and data (often termed PSPR and DSPR – Program Scratch-Pad RAM and Data Scratch-Pad RAM) that allow deterministic access for time-critical routines. Shared global memory is provided via a Local Memory Unit (LMU) which can be up to several hundred kilobytes (for instance, 768 KB in the TC39x) accessible by all cores. The memory system is connected by a high-bandwidth internal bus fabric (the SRI crossbar and peripheral buses) that arbitrates access between cores, DMA engines, and peripherals. This architecture ensures that each core can quickly fetch instructions and data either from its local cache/RAM or the central memory, enabling efficient parallel processing. Memory protection hardware is also built-in to isolate tasks of different criticality, an important feature for safety and security.&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Peripherals and Interfaces===&lt;br /&gt;
One of the strengths of the AURIX™ TC3xx architecture is its extensive set of on-chip peripherals and interface controllers, designed to handle the complex networking and I/O needs of modern vehicles and industrial systems. Key peripheral features and interfaces include:&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref3635926&amp;quot;&amp;gt;AURIX™ Training System Architecture https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_System_Architecture-Training-v01_00-EN.pdf?fileId=5546d46272e49d2a0172eb476d56739e&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Networking Interfaces:&#039;&#039;&#039; Multiple CAN FD controllers (supporting up to 12 CAN-FD channels in high-end variants) for in-vehicle networking, with legacy CAN and LIN interfaces (up to 24 LIN channels) for lower-speed device communication. Many TC3xx devices also integrate up to two FlexRay controllers for time-triggered automotive networks (maintaining compatibility with earlier automotive communication standards). For high-bandwidth data, a Gigabit Ethernet MAC is included, enabling uses like automotive Ethernet (e.g., audio-video bridging and IP-based connectivity).&lt;br /&gt;
* &#039;&#039;&#039;Analog and Timers:&#039;&#039;&#039; A suite of analog peripherals including multiple ADC units for sensor interfacing and motor control, and DACs in some models. Sophisticated timer units are on-chip, notably the Generic Timer Module (GTM) and Capture/Compare Units (CCU6), which can generate complex PWM waveforms and handle events for engine control, power inverters, or robotics with minimal CPU intervention. These timers enable precise control of actuators (e.g. fuel injection timing, electric motor commutation) in real time.&lt;br /&gt;
*&#039;&#039;&#039;Serial Interfaces:&#039;&#039;&#039; SPI, I²C, UART/LIN and other serial interfaces for connecting to external sensors, actuator controllers, and memory. The controllers often support multiple instances (several SPI channels, etc.) to accommodate numerous devices. AURIX™ TC3xx also provides an external bus interface (EBU) for parallel memory or FPGA connectivity, and an SD/MMC interface (eMMC) to connect external flash memory for data logging or over-the-air update storage.&lt;br /&gt;
*&#039;&#039;&#039;Dedicated Processing Units:&#039;&#039;&#039; Some AURIX™ TC3xx models include special accelerators, such as a hardware Fast Fourier Transform unit (HW-FFT) and up to two Signal Processing Units (SPUs) optimized for radar signal processing. These enable the microcontroller to handle radar front-end data or other intensive DSP tasks (like Fourier transforms for radar or audio signals) on-chip, which is crucial for advanced driver assistance sensors. There is also a &#039;&#039;Security Module&#039;&#039; (covered in a later section) and a Safety Management Unit that supervise system integrity.&lt;br /&gt;
*&#039;&#039;&#039;Other On-chip Modules:&#039;&#039;&#039; Watchdog timers, error-correction coders for memories (ECC on flash and RAM for reliability), a programmable interrupt system, multiple DMA channels (up to 128 DMA channels) for efficient data movement, and debug interfaces (JTAG and a 2/3-pin DAP) for development. The on-chip debug system supports tracing of program execution (via a built-in Emulation Memory, MCDS) to aid in complex multicore software development.&lt;br /&gt;
&lt;br /&gt;
Overall, the AURIX™TC3xx provides a highly integrated SoC-like platform, allowing a single chip to manage tasks ranging from powertrain control and chassis control to infotainment gateways. This high level of integration reduces the need for separate companion chips and helps to lower system complexity and cost.&lt;br /&gt;
===Performance and Benchmarking===&lt;br /&gt;
Fabricated in a 40 nm embedded flash process&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;, AURIX™ TC3xx processors achieve significant performance gains over prior generations while maintaining automotive-grade power efficiency. With six 32-bit cores at 300 MHz (four of them paired in lockstep), a flagship TC3xx device (e.g., TC39x) can deliver up to approximately 2,400 DMIPS of aggregate computing throughput&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;. In terms of per-core performance, the TriCore™ architecture yields around 1.3–2.0 DMIPS/MHz depending on the instruction mix, meaning each 300 MHz core can approach ~400–600 DMIPS in optimized scenarios&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. This is on par with or exceeding many contemporary 32-bit automotive MCUs. The integrated DSP extensions and optional accelerators (like the FFT unit) also enable high-speed signal processing, with Infineon citing up to ~1.8 GFLOPS of DSP throughput for certain operations&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Real-world performance improvements of the TC3xx over its predecessor are notable: for example, compared to the first-generation AURIX™ (which offered up to 740 DMIPS), the TC3xx’s expanded core count and clock speed provide roughly three times the computational power on the same type of workload&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. This extra headroom allows more functions (such as running multiple control algorithms or sensor fusion tasks in parallel) to be consolidated onto one microcontroller without compromising real-time deadlines&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. Despite the increase in speed and core count, the TC3xx family was designed with power and thermal constraints in mind, achieving these gains within similar power consumption envelopes as the previous generation by leveraging the smaller 40 nm process and power-saving features like clock gating&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot; /&amp;gt;. The deterministic real-time performance (with features like lockstep and tightly-coupled memory) makes the AURIX™ TC3xx suitable for the most demanding automotive applications, where consistent low latency and high throughput are required simultaneously.&lt;br /&gt;
&lt;br /&gt;
== On-Chip System Connectivity and Bridges ==&lt;br /&gt;
[[File:TC3xx On-Chip System Connectivity.png|thumb|The TC3xx has two &#039;&#039;&#039;SRI Domains&#039;&#039;&#039; (SRI0 and SRI1). CPU0 to CPU3 are connected to SRI0, CPU4/5 are connected to SRI1.|alt=TC3xx On-Chip System Connectivity|423x423px]]&lt;br /&gt;
The AURIX™ TC3xx Platform has three independent on-chip connectivity resources: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System Resource Interconnect Fabric (SRI Fabric)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and other high bandwidth requestors to high bandwidth memories and other resources for instruction fetches and data accesses. A key component of the fabric is the SRI crossbar, which connects all the agents in one SRI domain. The SRI crossbar carries the transactions between the SRI Masters and SRI Slaves of the domain. The SRI crossbar supports parallel transactions between different SRI Master and SRI Slave agents. In addition to the parallelism of concurrent requests, it also supports pipelined requests from an SRI Master to a SRI Slave.&lt;br /&gt;
* &#039;&#039;&#039;System Peripheral Bus (SPB)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and other SPB masters to the medium and low bandwidth peripherals. SPB masters do not directly connect to the SRI Fabric, and will access SRI attached resources via a SFI_F2S Bridge.&lt;br /&gt;
* &#039;&#039;&#039;Back Bone Bus (BBB)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and SPB masters with ADAS resources. SRI Masters do not directly connect to the BBB, but access BBB attached resources via a SFI_S2F Bridge. SPB masters also do not directly connect to the BBB, but access BBB attached resources via bridging over the SRI Fabric.&lt;br /&gt;
&lt;br /&gt;
=== CPU Resource Access Times ===&lt;br /&gt;
These tables describe the CPU access times to various resources in CPU clock cycles for the AURIX™ TC3xx Platform. In the case of load or fetch accesses, the access times are the minimum number of CPU stall cycles to complete the access. If there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes. &lt;br /&gt;
&lt;br /&gt;
For write access, the access times are the maximum for a sequence of such access (non-conflicting). In many cases for a singleton access, or a short sequence, write buffering reduces the stall effect seen by a CPU, sometimes to 0. However, as with loads and fetches, if there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes.&lt;br /&gt;
&lt;br /&gt;
==== Access latency for global resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! CPU stall cycles&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| Data read from System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |The final number of stall cycles will depend&amp;lt;br&amp;gt;on the real number of WS generated by the target resource.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;9 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |When SFI_S2F is connected to XBar2 (TC39x and TC37xED)&amp;lt;br&amp;gt;there is an additional latency due to access going through an S2S.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;5 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;6 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;3 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Module Wait State&#039;&#039;&#039;: The number of wait states for read and for write accesses is &amp;gt;= 1 and depends on the accessed module and its configuration.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU Accesses: Stall cycles for local and SRI resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! Local CPU !! Local SRI !! Remote SRI Domain&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DSPR || 0 || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DLMU || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DLMU || 2 || 5, {{rev|3|with Pipelining}}|| 5, 4&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DLMU || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to PSPR || See local SRI column || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PFlash || 5 + PWS || 10 + PWS || 13 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer miss) || 2 + PWS || 9 + PWS || 12 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer hit) || 3 || 6 || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to LMU || n.a. || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DFlash || n.a. || 5 + 3*(3 + DCWS) || 8 + 3*(3 + DCWS)&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC39x, TC37xED) || n.a. || n.a. || 14, {{rev|15|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC39x, TC37xED) || n.a. || n.a. || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC35x, TC33xED) || n.a. || 11, {{rev|12|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC35x, TC33xED) || n.a. || 9 || n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from DAM || n.a. || 10 || 13&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to DAM || n.a. || 7 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;Remote SRI Domain&#039;&#039;&#039;: Only applies to products with SRI extenders. Additional latency due to access going through an S2S&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;DCWS&#039;&#039;&#039;: Configured DFlash Corrected Wait States (Includes cycles for DFlash access cycles and ECC correction latency)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Subsystem ==&lt;br /&gt;
[[File:TC3xx Processor Core, Local Memory and Connectivity.png|alt=TC3xx Processor Core, Local Memory and Connectivity|thumb|Processor Core, Local Memory and Connectivity]]The Infineon AURIX™ TC3xx features up to 6 processor cores (CPU0 ... CPU5) implementing the [[TriCore Instruction Set Architecture|TC1.6.2 instruction set architecture]]. The following section focuses on the microarchitectural details of the CPU subsystem. For more information about the ISA, please take a look at the [[TriCore Instruction Set Architecture]].&lt;br /&gt;
&lt;br /&gt;
The processor core connects to the following memories and bus interfaces (where implemented):&lt;br /&gt;
*Program Scratch-Pad SRAM (PSPR)&lt;br /&gt;
*Data Scratch-Pad SRAM (DSPR)&lt;br /&gt;
*Program Cache (PCache)&lt;br /&gt;
*Data Cache (DCache)&lt;br /&gt;
*Local Memory Unit (DLMU)&lt;br /&gt;
*Local Pflash bank (LPB)&lt;br /&gt;
*SRI slave interface (x2)&lt;br /&gt;
*SRI master Interface&lt;br /&gt;
*SPB master interface&lt;br /&gt;
&lt;br /&gt;
=== TC1.6.2P Implementation Features ===&lt;br /&gt;
*Most instructions executed in 1 cycle&lt;br /&gt;
*Branch instructions in 1, 2 or 3 cycles (using dynamic branch prediction)&lt;br /&gt;
*Wide memory interface for fast context switch&lt;br /&gt;
* Automatic context save-on-entry and restore-on-exit for: subroutine, interrupt, trap&lt;br /&gt;
*Six memory protection register sets&lt;br /&gt;
*Dual instruction issuing (in parallel into Integer Pipeline and Load/Store Pipeline)&lt;br /&gt;
*Third pipeline for loop instruction only (zero overhead loop)&lt;br /&gt;
*Single precision Floating Point Unit (IEEE-754 Compatible)&lt;br /&gt;
*Dedicated Integer divide unit&lt;br /&gt;
*18 data memory protection ranges, 10 code memory protection ranges arranged in 6 sets&lt;br /&gt;
&lt;br /&gt;
=== Superscalar Architecture ===&lt;br /&gt;
The processor core within the AURIX™ TC3xx family, specifically the TC1.6.2P implementation, employs a superscalar architecture characterized by three parallel pipelines: the Integer Pipeline, the Load/Store Pipeline, and the Loop Pipeline. Superscalar execution is a form of instruction-level parallelism that enables the processor to issue and execute multiple instructions during a single clock cycle. The TriCore™ TC3xx core&#039;s superscalar architecture allows it to issue and execute multiple instructions in parallel. Specifically, it can issue up to two instructions simultaneously to the Integer and Load/Store pipelines. However, there are certain constraints on this dual issuing capability. For example, back-to-back data arithmetic instructions can only be issued in separate cycles, and a load/store instruction can be issued either on its own or paired with a data arithmetic instruction, provided the load/store instruction is the second in the pair. Under ideal conditions, with careful instruction scheduling, this dual-issue capability can lead to a throughput of close to 0.5 clock cycles per instruction, effectively executing two instructions per cycle.&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Stages ===&lt;br /&gt;
The execution of instructions within the TriCore™ TC3xx core is managed through a pipeline consisting of several stages. In one document it is mentioned that the pipeline consists of 6 stages &amp;lt;ref name=&amp;quot;ref3635926&amp;quot; /&amp;gt;, but the exact stages remain unclear. From the architecture the following stages can be inferred:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Fetch Stage&#039;&#039;&#039;: The initial stage in the pipeline is the Fetch stage, where instructions are retrieved from memory. This task is handled by the Instruction Fetch Unit (IFU), which is responsible for fetching instructions from the memory system. To improve efficiency, the IFU employs a pre-fetching mechanism, anticipating the instructions that will be needed and bringing them into the processor before they are actually required. Instructions are fetched through a 64-bit wide Program Memory Interface (PMI), allowing for the retrieval of a significant amount of instruction data in each cycle. The fetched instructions are then placed into an issue FIFO, a buffer capable of holding up to six instructions. This buffer plays a crucial role in managing the flow of instructions to the subsequent execution pipelines. The 64-bit fetch width and the instruction buffer are indicative of a design that aims to ensure a continuous supply of instructions to the pipelines, preventing them from being starved of work. A wider fetch path allows for more instruction bits to be obtained from memory in each clock cycle, while the buffer helps to mitigate temporary delays in instruction fetching.&lt;br /&gt;
* &#039;&#039;&#039;Execution Unit&#039;&#039;&#039;: The Execution Unit contains the Integer Pipeline, the Load/Store Pipeline and the Loop Pipeline. All three pipelines operate in parallel and are capable of executing instructions simultaneously. Each pipline has its own decode stage and two execute stages. Furthermore, the TC3xx features a Floating Point Unit (FPU). It is not clear whether the FPU is part of the execution unit or a separate unit. It is assumed that the FPU also has its own decode stage and an unknown number of execute stages&lt;br /&gt;
** &#039;&#039;&#039;Decode Stage&#039;&#039;&#039;: Following the Fetch stage, the instruction are issued to one of the pipelines. In the decode stage of each pipeline, the instruction is examined and translated to determine the specific operation it represents and to identify the operands it will operate on. It is assumed that operands are read from the register file during the decode stage.&lt;br /&gt;
** &#039;&#039;&#039;Execute Stage&#039;&#039;&#039;: The Execute stage is where the actual operation specified by the instruction is carried out. Pipeline hazards (stalls) are minimised by the use of forwarding paths between pipeline stages allowing the results of one instruction to be used by a following instruction as soon as the result becomes available.&lt;br /&gt;
** &#039;&#039;&#039;Writeback Stage&#039;&#039;&#039;: The final stage in the pipeline is the Writeback stage. In this stage, the results produced by the executed instruction are written back to the processor&#039;s register file, making them available for subsequent instructions. It is unclear whether the writeback stage is part of the (two) execution stages or a separate stage.&lt;br /&gt;
&lt;br /&gt;
=== Execution Pipelines ===&lt;br /&gt;
The TriCore™ TC3xx core leverages four parallel pipelines to enhance its performance. Each pipeline is designed to handle a specific class of instructions:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Integer Pipeline:&#039;&#039;&#039; This pipeline is responsible for executing integer arithmetic and logical instructions, including data-conditional jump instructions, bit manipulation operations, as well as division and multiply-accumulate (MAC) instructions.&lt;br /&gt;
* &#039;&#039;&#039;Load/Store Pipeline:&#039;&#039;&#039; The primary function of this pipeline is to manage memory access operations, including loading data from memory and storing data to memory. It also handles address arithmetic, unconditional jump instructions, procedure call instructions, context-switching operations, and control flow related to context save areas (CSAs).&lt;br /&gt;
* &#039;&#039;&#039;Loop Pipeline:&#039;&#039;&#039; This is a specialized pipeline designed to facilitate zero-overhead loops, a technique that significantly improves the performance of iterative code sections. Its design aims to eliminate or minimize the overhead typically associated with loop control, such as incrementing counters and checking loop conditions. Some documentation suggests that the loop pipeline comes along with a &amp;quot;Loop Cache&amp;quot;. This dedicated cache would likely be used to store instructions belonging to the loop, enabling very fast access and execution for repeated iterations.&lt;br /&gt;
* &#039;&#039;&#039;Floating Point Unit (FPU):&#039;&#039;&#039; The FPU is responsible for executing floating-point arithmetic operations&lt;br /&gt;
&lt;br /&gt;
=== Store Buffers ===&lt;br /&gt;
The TriCore™ TC3xx core include &#039;&#039;&#039;Store Buffers&#039;&#039;&#039; to decouple memory write operations from CPU instruction execution. All stores from the Load/Store Pipeline are placed in the store buffer prior to being written to local memory or transferred via the bus system. Write data is taken from the store buffers and written to memory when the target memory or bus interface becomes available. In normal operation the CPU will prioritise memory load operations over store operations in order to improve performance unless the store buffer is full or the order of load and store operations must be preserved (e.g. peripheral space access). The store buffer can hold the data for up to 6 stores operations. To improve performance the store buffer will merge consecutive byte, half-word, and word writes of the same location to reduce the number of memory accesses required.&lt;br /&gt;
&lt;br /&gt;
=== Instruction Timing ===&lt;br /&gt;
&lt;br /&gt;
==Functional Safety and Security Features==&lt;br /&gt;
===Hardware Security Module and Encryption===&lt;br /&gt;
One of the defining features of the AURIX™ TC3xx family is its robust hardware-based security subsystem, implemented to protect against cyber threats and unauthorized manipulation of vehicle systems. Each TC3xx MCU includes a dedicated &#039;&#039;Hardware Security Module&#039;&#039; (HSM), which is essentially an on-chip co-processor with its own CPU and cryptographic engine designed to handle secure operations. In the second-generation AURIX™ (TC3xx), the HSM was upgraded with support for asymmetric cryptography (e.g., RSA, ECC algorithms) in hardware, providing significantly faster public-key encryption and authentication capabilities than pure software implementations. This HSM supports &#039;&#039;&#039;EVITA Full&#039;&#039;&#039; (the highest level of the EU’s EVITA automotive security requirements), meaning it can perform secure boot, message authentication, and encryption at a level suitable for protecting critical in-vehicle communications. For example, the HSM can encrypt and authenticate CAN/Ethernet messages to prevent spoofing or tampering on the vehicle network, and it can manage cryptographic keys securely isolated from the main application cores.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The security module enables features like &#039;&#039;&#039;secure boot&#039;&#039;&#039;, where the AURIX™ will only execute firmware that is digitally signed by the vehicle manufacturer, thereby preventing unauthorized or malicious code. It also facilitates &#039;&#039;over-the-air (OTA) updates&#039;&#039; in a secure manner: the TC3xx HSM can verify and decrypt update packages received via telematics, allowing firmware upgrades while protecting against attackers attempting to hijack the software. In addition, the HSM includes a true random number generator and supports protocols for immobilizer and theft protection systems. Infineon’s implementation essentially treats the HSM as an “embedded smart card” inside the microcontroller. This approach, building on Infineon’s expertise in chip card security, helps to safeguard sensitive assets like cryptographic keys and to perform secure operations (encryption, decryption, authentication) in hardware, making attacks significantly more difficult. The strong cybersecurity provisions of the AURIX™ TC3xx have made it a preferred choice for vehicle gateway ECUs and central body controllers, which are points of entry for connected car communications and thus high-value targets for hackers. By incorporating the HSM, automotive OEMs can implement advanced security features such as encrypted onboard communication (to thwart bus tampering) and secure diagnostics, ensuring the vehicle’s electronic data is protected against cyber threats even as cars become more connected.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref19484776953&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Functional Safety and Fault Tolerance===&lt;br /&gt;
Beyond cybersecurity, the AURIX™ TC3xx architecture is built with extensive &#039;&#039;functional safety&#039;&#039; features to meet the highest safety integrity levels in automotive systems. The multi-core design supports &#039;&#039;lockstep operation&#039;&#039;, where redundant checker cores run in parallel with main cores and continuously compare results cycle-by-cycle. In TC3xx devices, up to four of the six TriCore™ CPUs have such lockstep partner cores, allowing the microcontroller to detect any single-point CPU failure instantly (if a discrepancy arises between the core and its checker, a fault is signaled). A &#039;&#039;Safety Management Unit (SMU)&#039;&#039; is integrated on-chip to monitor various fault conditions throughout the device – it aggregates error signals from the lockstep cores, memory ECC monitors, clock/watchdog monitors, and peripheral self-tests, and can initiate safe-state actions (like resetting the chip or signaling an error pin to an external supervisor) if a critical fault is detected. The AURIX™ safety concept also includes a distributed Memory Protection Unit (MPU) arrangement, with multiple memory protection contexts that prevent errant or malicious code from writing to wrong memory areas. This helps contain faults and eases the integration of software with mixed criticality (Infineon allows partitioning software components of different ASIL levels on the same MCU while keeping them isolated).&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref19519075552&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crucially, the TC3xx family was developed according to ISO 26262 processes and can achieve &#039;&#039;&#039;ASIL-D&#039;&#039;&#039; (Automotive Safety Integrity Level D), the highest grade for automotive functional safety. Compared to a traditional dual-core lockstep approach, the AURIX’s™ multi-core safety architecture allowed Infineon to reduce certain safety development overheads (earlier Infineon data suggested up to 30% reduction in safety software workload) by providing built-in safety mechanisms and diagnostics. Infineon supplies a comprehensive safety manual and diagnostic libraries for the AURIX™, helping engineers utilize features like CPU self-tests, RAM tests, and CRC checks to comply with safety standards. In addition to automotive standards, the AURIX™ TC3xx has also been qualified for &#039;&#039;&#039;industrial safety&#039;&#039;&#039;: in 2023, Infineon announced support for IEC 61508 metrics, enabling designs with AURIX™ to reach SIL-2 and SIL-3 safety integrity levels for industrial applications. This cross-industry safety compliance is facilitated by the MCU’s redundant design and detailed failure mode documentation (FMEDA) provided by Infineon. In summary, the AURIX™ TC3xx integrates both proactive safety (fault prevention via lockstep, monitoring and protection) and reactive safety (fault detection and safe shutdown), making it a dependable component for systems that cannot afford unintended behavior, whether in cars, factories, or aerospace. &amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref4967712052&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref196858272&amp;quot;&amp;gt;MCUs support industrial functional safety - Electronic Products https://www.electronicproducts.com/mcus-support-industrial-functional-safety/&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Platform Devices ==&lt;br /&gt;
The following table shows a feature overview of the AURIX™ TC3xx Platform family focusing on memory and number of cores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Feature&lt;br /&gt;
!TC33x&lt;br /&gt;
!TC33xEXT&lt;br /&gt;
!TC35x&lt;br /&gt;
!TC36x&lt;br /&gt;
!TC37x&lt;br /&gt;
!TC37xEXT&lt;br /&gt;
!TC38x&lt;br /&gt;
!TC39x&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |CPUs&lt;br /&gt;
|Cores / Checker Cores&lt;br /&gt;
|1 / 1&lt;br /&gt;
|2 / 1&lt;br /&gt;
|3 / 2&lt;br /&gt;
|2 / 2&lt;br /&gt;
|3 / 2&lt;br /&gt;
|3 / 3&lt;br /&gt;
|4 / 2&lt;br /&gt;
|6 / 4&lt;br /&gt;
|-&lt;br /&gt;
|Max. Freq.&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Cache per CPU &lt;br /&gt;
|Program [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |32&lt;br /&gt;
|-&lt;br /&gt;
|Data [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |SRAM per CPU&lt;br /&gt;
|PSPR [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|32|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|DSPR [KB]&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|192|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|-&lt;br /&gt;
|DLMU [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|8|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |SRAM global&lt;br /&gt;
|LMU [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|512&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|128&lt;br /&gt;
|768&lt;br /&gt;
|-&lt;br /&gt;
|DAM [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|32&lt;br /&gt;
| -&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Extension Memory (EMEM)&lt;br /&gt;
|TCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XTM [KB]&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Program Flash&lt;br /&gt;
|Size [MB]&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|10&lt;br /&gt;
|10&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|Banks [MB]&lt;br /&gt;
|1 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 3&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|5 x 3, 1 x 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Data Flash&lt;br /&gt;
|DF0 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|256&lt;br /&gt;
|512&lt;br /&gt;
|512&lt;br /&gt;
|1024&lt;br /&gt;
|-&lt;br /&gt;
|DF1 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |DMA&lt;br /&gt;
|Channels&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
|Move Engines&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Resource Partitions&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
The AURIX™ TC3xx family is a series of high-performance microcontrollers widely used in automotive and industrial applications. Compilers for the AURIX™ TC3xx are crucial for developers aiming to optimize performance, reliability, and safety in their applications. One significant aspect of the compiler landscape for AURIX™ TC3xx is the limited direct support from mainline open-source compilers such as GCC or LLVM/Clang. The primary reason for this is the stringent requirements for functional safety in automotive and industrial applications, which demand specialized features and compliance with safety standards that are often not met by general-purpose open-source compilers.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Compilers ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Tasking&#039;&#039;&#039;: Tasking compilers are renowned for their robust support for automotive applications, offering advanced debugging capabilities and optimization techniques tailored for the AURIX™ architecture. They provide extensive code optimization, comprehensive debugging tools, and strong support for safety standards such as ISO 26262, making them ideal for developing high-performance, reliable, and safe applications.&lt;br /&gt;
# &#039;&#039;&#039;HighTec&#039;&#039;&#039;: The HighTec compiler is a popular choice, known for its Eclipse-based development environment and strong multicore support. HighTec provides both GCC and LLVM-based ports of open-source compilers tailored specifically for the AURIX™ TC3xx family. These compilers offer efficient parallel execution, advanced code analysis, and an integrated development environment, ensuring robust performance and compliance with safety standards.&lt;br /&gt;
# &#039;&#039;&#039;Green Hills Software&#039;&#039;&#039;: Green Hills Software provides a highly optimized toolchain aimed at safety-critical applications, focusing on high performance and strict compliance with automotive standards. Their compiler offers superior optimization, extensive safety features, and a proprietary IDE with specialized tools for automotive development, ensuring developers can meet the stringent demands of functional safety.&lt;br /&gt;
&lt;br /&gt;
=== GCC for AURIX™ ===&lt;br /&gt;
&lt;br /&gt;
While mainline GCC does not directly support the AURIX™ TC3xx family, there is an unofficial GCC version available for AURIX™. Due to the GNU General Public License (GPL), the source code from HighTec was retrieved and, along with binary versions, published on GitHub:&lt;br /&gt;
&lt;br /&gt;
*GCC 4.9.4/Binutils 2.20/Newlib 1.18 for Tricore™ AURIX™ [[https://github.com/volumit/package_494 Source]] [[https://github.com/volumit/tricore_gcc494_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc494_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GCC 9.4.0/Binutils 2.20/Newlib 1.18 for Tricore™ AURIX™ [[https://github.com/volumit/package_940 Source]] [[https://github.com/volumit/tricore_gcc940_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc940_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GDB 10.0.50 for Tricore™ AURIX™ [[https://github.com/volumit/gdb-tricore Source]]&lt;br /&gt;
==emmtrix Tools for AURIX™ TC3xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX™ TC3xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
====Architecture &amp;amp; Variant Consulting====&lt;br /&gt;
* Support in selecting suitable AURIX derivatives for new product generations (trade-offs between performance, price, safety, and peripheral features)&lt;br /&gt;
*Analysis of requirements and mapping to specific AURIX product families (e.g., TC3xx vs. TC4xx)&lt;br /&gt;
*Analysis/identification of performance margins for down- or upgrades&lt;br /&gt;
==== Runtime Analysis &amp;amp; Performance Engineering ====&lt;br /&gt;
* Execution of detailed runtime analyses (maximum/minimum vs. average)&lt;br /&gt;
* Identification of bottlenecks in program execution, including benchmarking&lt;br /&gt;
*Optimization of access to flash, RAM, and peripherals (e.g., cache configuration, DMA utilization)&lt;br /&gt;
====Dependency Analysis====&lt;br /&gt;
*Freedom from interference (ASIL level check)&lt;br /&gt;
====Multicore Design &amp;amp; Scheduling Concepts ====*Development of core mapping strategies (static vs. dynamic assignment of compute-intensive tasks)&lt;br /&gt;
*Support for integrating bare-metal scheduling on AURIX&lt;br /&gt;
*Assistance with architectural decisions to meet functional safety requirements in multicore systems&lt;br /&gt;
====Training &amp;amp; Know-how Transfer====*Technical in-house workshops on AURIX optimization, multicore strategies&lt;br /&gt;
*Coaching of employees/project teams in performance analysis and systematic tuning&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC4x|Infineon AURIX™ TC4x]]&lt;br /&gt;
*[[Infineon AURIX TC2xx|Infineon AURIX™ TC2xx]]&lt;br /&gt;
*[[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&lt;br /&gt;
*[https://documentation.infineon.com/aurixtc3xx/docs/qmd1702366622648 AURIX™ TC3xx user manuals]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d3605221d96 AURIX™ TC3xx User Manual Part-1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d35f8541d94 AURIX™ TC3xx User Manual Part-2]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd AURIX™ TC3xx Architecture vol 1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 AURIX™ TC3xx Architecture vol 2]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
 |title=Infineon AURIX TC3xx Family – Deep Dive&lt;br /&gt;
 |description=This deep dive into Infineon&#039;s AURIX TC3xx family explores its multi-core TriCore architecture, real-time capabilities, safety and security features and tools&lt;br /&gt;
 |image=File:AURIX_TC399_LFBGA-516_plain.jpg&lt;br /&gt;
 |keywords=AURIX, Infineon, TC3xx, microcontroller, TriCore, automotive, ADAS, ISO 26262, functional safety, embedded security, ASIL-D, deep dive&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2704</id>
		<title>Infineon AURIX TC2xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2704"/>
		<updated>2025-05-21T08:14:08Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Infineon AURIX™ TC2xx&#039;&#039;&#039; is a family of 32-bit automotive microcontrollers developed by Infineon Technologies. &#039;&#039;AURIX™&#039;&#039; stands for &#039;&#039;“Automotive Realtime Integrated Next Generation Architecture”&#039;&#039;, reflecting its design for real-time, safety-critical automotive applications&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. The TC2xx series (first-generation AURIX™) is based on a multicore architecture featuring up to three independent 32-bit &#039;&#039;&#039;TriCore™&#039;&#039;&#039; processor cores. Introduced around 2012, the AURIX™ TC2xx marked Infineon’s transition to a multicore microcontroller platform (fabricated in 65 nm technology) after earlier single-core TriCore™ generations. It was designed from the ground up to meet stringent automotive safety requirements (ISO 26262) and to provide higher performance and integration for applications like engine management, chassis control, and driver assistance systems.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot;&amp;gt;Optimized for Success - EE Times Europe https://www.eetimes.eu/optimized-for-success/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The AURIX™ TC2xx family’s design philosophy is to combine &#039;&#039;&#039;safety&#039;&#039;&#039;, &#039;&#039;&#039;security&#039;&#039;&#039;, and &#039;&#039;&#039;performance&#039;&#039;&#039; in one scalable MCU platform. It achieves high functional safety compliance (up to &#039;&#039;&#039;ASIL-D&#039;&#039;&#039;, the highest automotive safety integrity level) with less development effort compared to traditional dual-controller lockstep systems&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. Infineon claims that using AURIX™ can cut safety-related development time by ~30% versus classical lockstep architectures, thanks to its built-in fault detection and monitoring hardware. At the same time, the TC2xx provides significant performance headroom – roughly 50% to 100% higher computational performance compared to its predecessors – while maintaining power consumption similar to previous single-core designs. To address emerging automotive security needs, the AURIX™ MCUs also integrate a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) on-chip, which protects against IP theft, fraud, and tampering. This combination of features makes the AURIX™ TC2xx a popular choice for consolidating various automotive control functions (powertrain, safety, body, etc.) onto one platform, without sacrificing reliability or efficiency.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC2xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Architecture==&lt;br /&gt;
The AURIX™ TC2xx is built on Infineon’s &#039;&#039;&#039;TriCore™&#039;&#039;&#039; architecture, which uniquely unifies traits of a RISC processor, a microcontroller, and a DSP (digital signal processor) into one core design. Each TriCore™ CPU in the TC2xx is a 32-bit superscalar processor that supports both 32-bit and 16-bit instruction formats (the latter for code size efficiency). The TriCore™ instruction set architecture includes typical RISC features (load/store architecture, 4 GB address space) and DSP capabilities (such as multiply-accumulate instructions and bit manipulation) in a single core. The cores also have an optional floating-point unit (FPU) and support SIMD (single-instruction multiple-data) operations for signal processing acceleration. The maximum core frequency in the TC2xx family is 300 MHz, and devices achieve about 1.7–2.4 DMIPS/MHz per core, providing robust real-time performance.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In terms of core configuration, high-end AURIX™ TC2xx models implement three main TriCore™ CPUs, which can be run in parallel or in redundant (lockstep) pairs for safety. Some variants include a redundant checker core that shadows a primary core to detect calculation errors (a technique to meet SIL/ASIL safety goals). The multicore architecture is supported by a layered memory system: each TriCore™ has tightly coupled local memory for fast instruction and data access, and they share access to large on-chip Flash and RAM via an internal bus matrix. Memory options in the TC2xx range from about &#039;&#039;&#039;0.5 MB up to 8 MB of on-chip Flash&#039;&#039;&#039;, and from ~50 KB up to 2.7 MB of SRAM, depending on the specific device. This on-chip memory (with ECC protection on memories for safety) allows real-time code execution and data storage without external memory in most use cases. For peripherals and I/O, the AURIX™ architecture includes a rich set of on-chip modules connected via internal buses, such as analog-to-digital converters, timer units, communication interfaces, and direct memory access (DMA) controllers. AURIX™ TC2xx MCUs typically provide interfaces like multiple CAN/CAN-FD channels, LIN/UART, SPI, I²C, Ethernet (on higher-end models), and automotive-specific buses (e.g. FlexRay on some variants), making the chip a self-contained controller for complex automotive networks.&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot;&amp;gt;Infineon TriCore - Wikipedia https://en.wikipedia.org/wiki/Infineon_TriCore&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; is a notable part of the AURIX™ TC2xx architecture. It is a sophisticated timer/co-processor integrated on-chip to handle complex timing, PWM generation, input capture, and other signal conditioning tasks across more than 200 channels. There are also specialized accelerators and co-processors on certain TC2xx devices, such as a &#039;&#039;&#039;Hardware Fast Fourier Transform (HFFT)&#039;&#039;&#039; unit for signal processing and a &#039;&#039;&#039;Parallel Pixel Processor&#039;&#039;&#039; for simple video or sensor data processing. These dedicated engines offload the TriCore™ CPUs for specific high-load tasks (e.g. radar signal FFTs or encoder signal processing), improving overall throughput in automotive applications. The AURIX™ architecture uses a single-power supply (5V or 3.3V) design and includes an on-chip voltage regulator (EVR), simplifying power management. The MCUs are offered in a variety of package types (from compact QFP-64 up to large BGA-516) to accommodate different I/O needs. Overall, the TC2xx architecture is highly integrated and optimized for real-time, combining multiple CPU cores with ample flash memory, SRAM, and peripherals on one chip to serve as a &#039;&#039;&#039;central control unit&#039;&#039;&#039; in vehicles.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;AURIX™ Unleashed - RS Components https://docs.rs-online.com/0f3f/0900766b815c315c.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
====CPU access latency (TC29x) ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!CPU Access Type!!Local CPU&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to own DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to own DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to own or other PSPR||8&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to own or other PSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to other DSPR||8&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to other DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from own PSPR&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other PSPR (critical word)||8&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other PSPR (any remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other DSPR (critical word)||8&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other DSPR (any remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Initial Pflash Access (critical word)||7 + configured PFlash Wait States&lt;br /&gt;
|-&lt;br /&gt;
|Initial Pflash Access (remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|PMU PFlash Buffer Hit (critical word)||6&lt;br /&gt;
|-&lt;br /&gt;
|PMU PFlash Buffer Hit (remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Initial Dflash Access||7 + configured DFlash Wait States&lt;br /&gt;
|-&lt;br /&gt;
|TC1.6P Data read from System Peripheral Bus (SPB)&lt;br /&gt;
|{{rev|4|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&amp;lt;br&amp;gt;{{rev|7|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = 2*f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&amp;lt;br&amp;gt;{{rev|10|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = 3*f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
|TC1.6P Data write to System Peripheral Bus (SPB)||0&lt;br /&gt;
|}&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
==Key Features==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Safety Mechanisms:&#039;&#039;&#039; The AURIX™ TC2xx was developed via an ISO 26262-compliant process and includes multiple hardware mechanisms to achieve &#039;&#039;&#039;functional safety up to ASIL-D&#039;&#039;&#039;. Notably, it supports &#039;&#039;lockstep&#039;&#039; operation, where one or two of the TriCore™ CPUs can run in redundant lockstep mode with another core to detect discrepancies (faults) cycle-by-cycle. A Safety Management Unit (&#039;&#039;&#039;SMU&#039;&#039;&#039;) is built in to monitor critical system parameters and handle faults. The architecture employs memory protection units and safe internal communication buses to isolate and supervise different software domains. Other safety features include &#039;&#039;&#039;error-correcting code (ECC)&#039;&#039;&#039; on flash and RAM, redundant peripherals (for example, duplicated ADC channels), watchdog timers, clock and voltage monitors, and self-test routines. These features allow developers to more easily implement safety-critical functions and meet standards like IEC 61508 (SIL-3) or ISO 26262 (ASIL-D) using a single AURIX™ MCU, whereas achieving the same on a traditional single-core MCU might require additional external safety ICs or companion processors.&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Security Functions:&#039;&#039;&#039; Infineon integrated a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) into the AURIX™ TC2xx family to address automotive cybersecurity requirements. This HSM is essentially an on-chip co-processor (with its own CPU and flash) that handles cryptographic operations and secure key storage isolated from the main cores. It follows the EVITA (E-safety Vehicle Intrusion Protected Applications) guidelines for automotive security. The HSM enables features like secure boot, encryption/decryption, authentication, and detection of software tampering. By having a built-in “embedded smart card” for security, the AURIX™ can implement anti-theft, anti-cloning, and secure onboard communication measures without needing an external security chip. This integration is a key differentiator, as it helps protect vehicle functions (e.g. immobilizers, firmware updates, V2X communication) against hacking and unauthorized modifications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Performance and DSP Capability:&#039;&#039;&#039; Each TriCore™ CPU in the TC2xx is capable of up to 300 MHz operation, and combined the multicore setup offers considerable processing power for an MCU (Infineon cites up to ~1.8 GFLOPS of DSP throughput for the highest models). The TriCore™ design delivers around &#039;&#039;&#039;1.7–2.4 DMIPS/MHz&#039;&#039;&#039; per core, meaning a triple-core AURIX™ at max frequency can exceed 2000 DMIPS of total throughput. The inclusion of DSP instructions and dedicated accelerators enables the AURIX™ to handle computationally intensive tasks (like control algorithms, filtering operations, or even rudimentary neural networks) that previously might require a separate DSP or FPGA. A built-in &#039;&#039;&#039;Floating Point Unit&#039;&#039;&#039; on each core supports single-precision (and optional double-precision in some cases) arithmetic, beneficial for model-based control algorithms and automotive sensor processing. Peripherals like the &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; and &#039;&#039;&#039;Hardware FFT&#039;&#039;&#039; accelerator (available on select TC2xx variants) further boost real-time performance for handling high-frequency events (e.g. engine ignition timing, motor control PWM, radar signal analysis) without overloading the CPU. Despite the performance, the TC2xx was designed with efficiency in mind; Infineon managed to double the performance over the prior generation (TC1xx AUDO) while keeping power consumption at comparable levels. The MCUs also support various low-power modes and a standby controller to minimize energy usage when parts of the system are idle.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Power and Integration:&#039;&#039;&#039; As a system-on-chip for vehicles, AURIX™ TC2xx integrates a wide range of &#039;&#039;&#039;communication interfaces&#039;&#039;&#039; and analog/digital peripherals. Common features include multiple CAN bus controllers (often with CAN FD support), LIN/UART, SPI and I²C channels, FlexRay communication in high-end models, and even Ethernet (in variants aimed at gateway or ADAS roles). High-resolution &#039;&#039;&#039;ADC units&#039;&#039;&#039; (with shared and redundant channels) allow precise sensor measurements for engine or chassis control. There are also specialized modules like delta-sigma ADCs and SENT interfaces for automotive sensor inputs. This rich peripheral set reduces the need for external components, helping to lower the overall system Bill of Materials. The TC2xx devices operate over a broad temperature range (typically –40 °C to +150 °C), meeting the demands of under-the-hood automotive environments. They run from a single supply (with internal regulators), simplifying designs, and support both 5 V and 3.3 V systems for compatibility with a variety of sensors and actuators. Combined with its safety and security features, the AURIX’s™ high integration makes it a one-chip solution for many complex embedded applications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
The Infineon AURIX™ TC2xx family is primarily targeted at the &#039;&#039;&#039;automotive industry&#039;&#039;&#039;, especially domains requiring high reliability and real-time control. Its initial use cases were in &#039;&#039;&#039;powertrain&#039;&#039;&#039; and engine management systems – for example, controlling combustion engines, managing fuel injection and ignition, and coordinating electric motor and battery systems in hybrid or electric vehicles. The multi-core AURIX™ can run multiple control algorithms in parallel (e.g. for an engine’s cylinders, transmission and motor inverter concurrently), which is valuable in modern electrified powertrains. Beyond engines, AURIX™ TC2xx MCUs are used in &#039;&#039;&#039;chassis and safety systems&#039;&#039;&#039;: they can serve as the central controller for &#039;&#039;&#039;anti-lock braking systems (ABS)&#039;&#039;&#039; and stability control, &#039;&#039;&#039;airbag control units&#039;&#039;&#039;, &#039;&#039;&#039;electric power steering (EPS)&#039;&#039;&#039; systems, and suspension controllers. Advanced Driver Assistance Systems (&#039;&#039;&#039;ADAS&#039;&#039;&#039;) and autonomous driving modules in earlier generations of vehicles have also employed AURIX™ for tasks such as sensor fusion, radar signal processing, and acting as a safety supervisor for driving assistance features&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. For example, a radar unit for adaptive cruise control might use an AURIX™ to perform real-time signal processing (using its DSP capabilities and HFFT) and make high-level decisions, all within an ASIL-D safe environment.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot;&amp;gt;https://resources.tasking.com/sites/default/files/2021-02/Take%20Advantage%20of%20Infineon%20AURIX%20TC3xx%20Family%20With%20the%20Right%20Compiler_WEB.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to its safety certification and robust design, the AURIX™ TC2xx has seen adoption in any application that cannot tolerate failure. This includes &#039;&#039;&#039;industrial automation and robotics&#039;&#039;&#039;, where the MCU’s reliability and support for functional safety (IEC 61508) are attractive. In industrial motor drives or robotics controllers, an AURIX™ might handle precise motor control algorithms and system monitoring. Other use cases outside pure automotive include &#039;&#039;&#039;commercial vehicles and transportation&#039;&#039;&#039; (trucks, agricultural and construction machinery), which have similar safety and durability requirements. The AURIX’s™ extensive communication interfaces also make it suitable as a gateway or central node in complex networks – for instance, acting as a domain controller in modern automotive E/E architectures to coordinate data between powertrain, body, and ADAS subsystems. Some &#039;&#039;&#039;electric vehicle (EV)&#039;&#039;&#039; platforms use AURIX™ MCUs in battery management systems and inverter controls, leveraging its calculation power for battery algorithms and its safety for monitoring cell health. In summary, the TC2xx family finds use in scenarios that demand &#039;&#039;&#039;real-time performance with high safety integrity&#039;&#039;&#039;, predominantly in automotive (engine, transmission, chassis, safety, ADAS) but also in high-end industrial embedded systems.&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==emmtrix Tools for AURIX™ TC2xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX™ TC2xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ TC2xx / [[Infineon AURIX TC3xx|TC3xx]]/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture &amp;amp; Variant Consulting ====&lt;br /&gt;
&lt;br /&gt;
* Support in selecting suitable AURIX derivatives for new product generations (trade-offs between performance, price, safety, and peripheral features)&lt;br /&gt;
* Analysis of requirements and mapping to specific AURIX product families (e.g., TC3xx vs. TC4xx)&lt;br /&gt;
* Analysis/identification of performance margins for down- or upgrades&lt;br /&gt;
&lt;br /&gt;
==== Runtime Analysis &amp;amp; Performance Engineering ====&lt;br /&gt;
&lt;br /&gt;
* Execution of detailed runtime analyses (maximum/minimum vs. average)&lt;br /&gt;
* Identification of bottlenecks in program execution, including benchmarking&lt;br /&gt;
* Optimization of access to flash, RAM, and peripherals (e.g., cache configuration, DMA utilization)&lt;br /&gt;
&lt;br /&gt;
==== Dependency Analysis ====&lt;br /&gt;
&lt;br /&gt;
* Freedom from interference (ASIL level check)&lt;br /&gt;
&lt;br /&gt;
==== Multicore Design &amp;amp; Scheduling Concepts ====&lt;br /&gt;
&lt;br /&gt;
* Development of core mapping strategies (static vs. dynamic assignment of compute-intensive tasks)&lt;br /&gt;
* Support for integrating bare-metal scheduling on AURIX&lt;br /&gt;
* Assistance with architectural decisions to meet functional safety requirements in multicore systems&lt;br /&gt;
&lt;br /&gt;
==== Training &amp;amp; Know-how Transfer ====&lt;br /&gt;
&lt;br /&gt;
* Technical in-house workshops on AURIX optimization, multicore strategies&lt;br /&gt;
* Coaching of employees/project teams in performance analysis and systematic tuning&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx|Infineon AURIX™ TC3xx]]&lt;br /&gt;
* [[Infineon AURIX TC4x|Infineon AURIX™ TC4x]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture|TriCore™ Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&lt;br /&gt;
* [https://www.infineon.com/dgdl/Infineon-TC29x_B-step-UM-v01_03-EN.pdf?fileId=5546d46269bda8df0169ca1bdee424a2 TC29x B-Step User Manual]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2696</id>
		<title>Infineon AURIX TC3xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2696"/>
		<updated>2025-04-08T08:39:17Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AURIX TC399 LFBGA-516 plain.jpg|thumb|Infineon AURIX™ TC3xx second-generation microcontroller (TC399 BGA package). The AURIX™ TC3xx family integrates multiple TriCore™ CPUs and on-chip safety/security modules for automotive applications.|alt=TC399 BGA package]]&lt;br /&gt;
The &#039;&#039;&#039;Infineon AURIX™ TC3xx&#039;&#039;&#039; (Automotive Realtime Integrated neXt-generation architecture) is a family of 32-bit automotive microcontrollers introduced as the second generation of Infineon’s AURIX™ platform. Launched in 2016 as a successor to the earlier [[Infineon AURIX TC2xx|AURIX™ TC2xx series]], the TC3xx devices emphasize high performance, functional safety, and embedded security for advanced automotive and industrial applications. AURIX™ TC3xx microcontrollers feature a hexa-core [[TriCore Instruction Set Architecture|&#039;&#039;TriCore&#039;&#039; processor architecture]] with enhanced safety measures, making them well-suited for demanding tasks such as autonomous driving domain controllers, powertrain control, and sensor data fusion in advanced driver-assistance systems (ADAS). The combination of multiple CPU cores, extensive on-chip memory, and a rich peripheral set allows TC3xx chips to deliver real-time responsiveness and reliability in safety-critical environments while meeting stringent automotive standards (such as ISO 26262 for functional safety).&amp;lt;ref name=&amp;quot;ref1951907555&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1428109010&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1948477695&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Applications==&lt;br /&gt;
AURIX™ TC3xx microcontrollers are used in a variety of safety-critical and high-performance applications across the automotive and industrial sectors. Key application domains include:&lt;br /&gt;
*&#039;&#039;&#039;Automotive Systems:&#039;&#039;&#039; The TC3xx family was primarily designed for automotive use and finds broad application in vehicles’ electronic control units (ECUs). Notably, it is used in &#039;&#039;powertrain and drivetrain control&#039;&#039; (engine management, transmission control, hybrid/electric vehicle inverter control, battery management) where its real-time processing and resilience support precise actuator control. It is also deployed in &#039;&#039;chassis and safety systems&#039;&#039; such as anti-lock braking systems (ABS), electronic stability control, airbag controllers, and electric power steering, leveraging its redundancy and fast response for fail-safe operation. With the growth of ADAS and autonomous driving, AURIX™ TC3xx devices serve as domain controllers for &#039;&#039;ADAS sensor fusion&#039;&#039;, handling data from radar, LiDAR, camera, and ultrasonic sensors and performing environment modeling and decision-making algorithms. Their combination of multiple cores and a built-in radar signal processing sub-system makes them an attractive choice for tasks like front radar processing, sensor fusion hubs, and &#039;&#039;autonomous driving domain controllers&#039;&#039; that must meet ASIL-D safety levels.&amp;lt;ref name=&amp;quot;ref14281090102&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Industrial Automation and Robotics:&#039;&#039;&#039; Infineon has also positioned the AURIX™ family for use in industrial applications that demand high reliability. The TC3xx MCUs, with their hardware self-test mechanisms and safety documentation, can be found in &#039;&#039;industrial motor drives, robotics controllers, and PLCs (programmable logic controllers)&#039;&#039;, where they help achieve functional safety certifications up to SIL-3 (according to IEC 61508). The powerful TriCore™ cores and rich peripheral set enable complex motor control algorithms (e.g., field-oriented control for servo motors) and real-time sensor processing in factory automation. Additionally, the support for automotive-grade networking (CAN/CAN-FD, Ethernet) and timing peripherals makes them suitable for synchronous control in robotics and machinery. Infineon’s provision of AUTOSAR-compatible software for AURIX™ has even facilitated its use in non-automotive settings such as medical devices and elevator controllers, where proven safety and security are required.&amp;lt;ref name=&amp;quot;ref496771205&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Aerospace and Defense:&#039;&#039;&#039; The high fault-tolerance and deterministic performance of the AURIX™ TC3xx architecture also attract interest for aerospace and other mission-critical uses. In avionics systems or autonomous drones, for instance, the lockstep core configuration and robust error checking of AURIX™ can provide an added layer of reliability for flight control computers or navigation systems. While primarily an automotive chip, its ability to operate in harsh conditions (−40°C to 150°C range) and to detect internal failures in real-time makes it viable for certain aerospace electronic systems. Some defense and aerospace projects leverage COTS (commercial off-the-shelf) automotive components like AURIX™ for applications such as unmanned vehicle control and high-reliability communication links, given its safety pedigree. (In these domains, additional analysis and possibly radiation testing would be performed if the devices are used in high-altitude or space environments.)&lt;br /&gt;
== Architecture Overview ==&lt;br /&gt;
[[File:Infineon TC3xx Architecture.webp|545x545px|thumb|alt=TC3xx Architecture Overview|TC3xx Architecture Overview]]&lt;br /&gt;
=== Processor Cores and Architecture===&lt;br /&gt;
The AURIX™ TC3xx family implements Infineon’s TriCore™ architecture, which uniquely combines aspects of RISC microcontrollers, DSP (digital signal processor) capabilities, and conventional microprocessor features into a single core design. Each TC3xx device can include up to six independent TriCore™ 32-bit CPU cores (TriCore™ version 1.6.2), all capable of running at up to 300 MHz clock frequency. Four of these cores can operate in dual-core lockstep pairs (with one core acting as a redundant checker for its partner) to provide fault detection for safety-critical functions. The TriCore™ cores use a superscalar Harvard architecture with 32-bit instruction words (and support for mixed 16/32-bit instruction encoding for code density). Each core includes a dedicated Floating Point Unit (FPU) for single-precision arithmetic and supports DSP-oriented instructions (e.g. single-cycle 16×16 MAC operations, SIMD for 16-bit/8-bit data) to accelerate signal processing tasks. For fast real-time performance, the architecture offers low interrupt latency (with automatic context save on-chip) and features like zero-overhead loops and a programmable peripheral timer unit for scheduling tasks. In total, a high-end TC3xx (such as the TC39x) provides six 300 MHz cores plus four checker cores, yielding a theoretical processing throughput of up to ~2400 DMIPS (Dhrystone MIPS) when all cores are utilized. This represents roughly a threefold increase in computational power over the previous AURIX™ generation (which achieved ~740 DMIPS with three cores).&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot;&amp;gt;UDE Debug, Trace and Test solutions for Infineon TriCore™ AURIX™ TC32, TC33, TC35, TC36, TC37, TC38, TC39, TC3x Microcontrollers       https://www.pls-mc.com/products/infineon-tricore-aurix-tc32-tc33-tc35-tc36-tc37-tc38-tc39-microcontrollers/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Memory Subsystem and Cache===&lt;br /&gt;
AURIX™ TC3xx microcontrollers integrate a large on-chip memory system to meet real-time and safety requirements. Program flash memory sizes range up to 16 MB on the largest models, with over 6 MB of on-chip SRAM available for data and scratchpad usage. Each TriCore™ CPU has its own tightly-coupled local memories as well as caches: for example, each core includes a 32 KB instruction cache and a 16 KB data cache. In addition, every core has separate local RAM blocks (Harvard architecture) for instructions and data (often termed PSPR and DSPR – Program Scratch-Pad RAM and Data Scratch-Pad RAM) that allow deterministic access for time-critical routines. Shared global memory is provided via a Local Memory Unit (LMU) which can be up to several hundred kilobytes (for instance, 768 KB in the TC39x) accessible by all cores. The memory system is connected by a high-bandwidth internal bus fabric (the SRI crossbar and peripheral buses) that arbitrates access between cores, DMA engines, and peripherals. This architecture ensures that each core can quickly fetch instructions and data either from its local cache/RAM or the central memory, enabling efficient parallel processing. Memory protection hardware is also built-in to isolate tasks of different criticality, an important feature for safety and security.&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Peripherals and Interfaces===&lt;br /&gt;
One of the strengths of the AURIX™ TC3xx architecture is its extensive set of on-chip peripherals and interface controllers, designed to handle the complex networking and I/O needs of modern vehicles and industrial systems. Key peripheral features and interfaces include:&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref3635926&amp;quot;&amp;gt;AURIX™ Training System Architecture https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_System_Architecture-Training-v01_00-EN.pdf?fileId=5546d46272e49d2a0172eb476d56739e&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Networking Interfaces:&#039;&#039;&#039; Multiple CAN FD controllers (supporting up to 12 CAN-FD channels in high-end variants) for in-vehicle networking, with legacy CAN and LIN interfaces (up to 24 LIN channels) for lower-speed device communication. Many TC3xx devices also integrate up to two FlexRay controllers for time-triggered automotive networks (maintaining compatibility with earlier automotive communication standards). For high-bandwidth data, a Gigabit Ethernet MAC is included, enabling uses like automotive Ethernet (e.g., audio-video bridging and IP-based connectivity).&lt;br /&gt;
* &#039;&#039;&#039;Analog and Timers:&#039;&#039;&#039; A suite of analog peripherals including multiple ADC units for sensor interfacing and motor control, and DACs in some models. Sophisticated timer units are on-chip, notably the Generic Timer Module (GTM) and Capture/Compare Units (CCU6), which can generate complex PWM waveforms and handle events for engine control, power inverters, or robotics with minimal CPU intervention. These timers enable precise control of actuators (e.g. fuel injection timing, electric motor commutation) in real time.&lt;br /&gt;
*&#039;&#039;&#039;Serial Interfaces:&#039;&#039;&#039; SPI, I²C, UART/LIN and other serial interfaces for connecting to external sensors, actuator controllers, and memory. The controllers often support multiple instances (several SPI channels, etc.) to accommodate numerous devices. AURIX™ TC3xx also provides an external bus interface (EBU) for parallel memory or FPGA connectivity, and an SD/MMC interface (eMMC) to connect external flash memory for data logging or over-the-air update storage.&lt;br /&gt;
*&#039;&#039;&#039;Dedicated Processing Units:&#039;&#039;&#039; Some AURIX™ TC3xx models include special accelerators, such as a hardware Fast Fourier Transform unit (HW-FFT) and up to two Signal Processing Units (SPUs) optimized for radar signal processing. These enable the microcontroller to handle radar front-end data or other intensive DSP tasks (like Fourier transforms for radar or audio signals) on-chip, which is crucial for advanced driver assistance sensors. There is also a &#039;&#039;Security Module&#039;&#039; (covered in a later section) and a Safety Management Unit that supervise system integrity.&lt;br /&gt;
*&#039;&#039;&#039;Other On-chip Modules:&#039;&#039;&#039; Watchdog timers, error-correction coders for memories (ECC on flash and RAM for reliability), a programmable interrupt system, multiple DMA channels (up to 128 DMA channels) for efficient data movement, and debug interfaces (JTAG and a 2/3-pin DAP) for development. The on-chip debug system supports tracing of program execution (via a built-in Emulation Memory, MCDS) to aid in complex multicore software development.&lt;br /&gt;
&lt;br /&gt;
Overall, the AURIX™TC3xx provides a highly integrated SoC-like platform, allowing a single chip to manage tasks ranging from powertrain control and chassis control to infotainment gateways. This high level of integration reduces the need for separate companion chips and helps to lower system complexity and cost.&lt;br /&gt;
===Performance and Benchmarking===&lt;br /&gt;
Fabricated in a 40 nm embedded flash process&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;, AURIX™ TC3xx processors achieve significant performance gains over prior generations while maintaining automotive-grade power efficiency. With six 32-bit cores at 300 MHz (four of them paired in lockstep), a flagship TC3xx device (e.g., TC39x) can deliver up to approximately 2,400 DMIPS of aggregate computing throughput&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;. In terms of per-core performance, the TriCore™ architecture yields around 1.3–2.0 DMIPS/MHz depending on the instruction mix, meaning each 300 MHz core can approach ~400–600 DMIPS in optimized scenarios&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. This is on par with or exceeding many contemporary 32-bit automotive MCUs. The integrated DSP extensions and optional accelerators (like the FFT unit) also enable high-speed signal processing, with Infineon citing up to ~1.8 GFLOPS of DSP throughput for certain operations&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Real-world performance improvements of the TC3xx over its predecessor are notable: for example, compared to the first-generation AURIX™ (which offered up to 740 DMIPS), the TC3xx’s expanded core count and clock speed provide roughly three times the computational power on the same type of workload&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. This extra headroom allows more functions (such as running multiple control algorithms or sensor fusion tasks in parallel) to be consolidated onto one microcontroller without compromising real-time deadlines&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. Despite the increase in speed and core count, the TC3xx family was designed with power and thermal constraints in mind, achieving these gains within similar power consumption envelopes as the previous generation by leveraging the smaller 40 nm process and power-saving features like clock gating&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot; /&amp;gt;. The deterministic real-time performance (with features like lockstep and tightly-coupled memory) makes the AURIX™ TC3xx suitable for the most demanding automotive applications, where consistent low latency and high throughput are required simultaneously.&lt;br /&gt;
&lt;br /&gt;
== On-Chip System Connectivity and Bridges ==&lt;br /&gt;
[[File:TC3xx On-Chip System Connectivity.png|thumb|The TC3xx has two &#039;&#039;&#039;SRI Domains&#039;&#039;&#039; (SRI0 and SRI1). CPU0 to CPU3 are connected to SRI0, CPU4/5 are connected to SRI1.|alt=TC3xx On-Chip System Connectivity|423x423px]]&lt;br /&gt;
The AURIX™ TC3xx Platform has three independent on-chip connectivity resources: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System Resource Interconnect Fabric (SRI Fabric)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and other high bandwidth requestors to high bandwidth memories and other resources for instruction fetches and data accesses. A key component of the fabric is the SRI crossbar, which connects all the agents in one SRI domain. The SRI crossbar carries the transactions between the SRI Masters and SRI Slaves of the domain. The SRI crossbar supports parallel transactions between different SRI Master and SRI Slave agents. In addition to the parallelism of concurrent requests, it also supports pipelined requests from an SRI Master to a SRI Slave.&lt;br /&gt;
* &#039;&#039;&#039;System Peripheral Bus (SPB)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and other SPB masters to the medium and low bandwidth peripherals. SPB masters do not directly connect to the SRI Fabric, and will access SRI attached resources via a SFI_F2S Bridge.&lt;br /&gt;
* &#039;&#039;&#039;Back Bone Bus (BBB)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and SPB masters with ADAS resources. SRI Masters do not directly connect to the BBB, but access BBB attached resources via a SFI_S2F Bridge. SPB masters also do not directly connect to the BBB, but access BBB attached resources via bridging over the SRI Fabric.&lt;br /&gt;
&lt;br /&gt;
=== CPU Resource Access Times ===&lt;br /&gt;
These tables describe the CPU access times to various resources in CPU clock cycles for the AURIX™ TC3xx Platform. In the case of load or fetch accesses, the access times are the minimum number of CPU stall cycles to complete the access. If there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes. &lt;br /&gt;
&lt;br /&gt;
For write access, the access times are the maximum for a sequence of such access (non-conflicting). In many cases for a singleton access, or a short sequence, write buffering reduces the stall effect seen by a CPU, sometimes to 0. However, as with loads and fetches, if there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes.&lt;br /&gt;
&lt;br /&gt;
==== Access latency for global resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! CPU stall cycles&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| Data read from System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |The final number of stall cycles will depend&amp;lt;br&amp;gt;on the real number of WS generated by the target resource.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;9 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |When SFI_S2F is connected to XBar2 (TC39x and TC37xED)&amp;lt;br&amp;gt;there is an additional latency due to access going through an S2S.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;5 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;6 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;3 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Module Wait State&#039;&#039;&#039;: The number of wait states for read and for write accesses is &amp;gt;= 1 and depends on the accessed module and its configuration.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU Accesses: Stall cycles for local and SRI resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! Local CPU !! Local SRI !! Remote SRI Domain&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DSPR || 0 || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DLMU || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DLMU || 2 || 5, {{rev|3|with Pipelining}}|| 5, 4&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DLMU || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to PSPR || See local SRI column || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PFlash || 5 + PWS || 10 + PWS || 13 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer miss) || 2 + PWS || 9 + PWS || 12 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer hit) || 3 || 6 || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to LMU || n.a. || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DFlash || n.a. || 5 + 3*(3 + DCWS) || 8 + 3*(3 + DCWS)&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC39x, TC37xED) || n.a. || n.a. || 14, {{rev|15|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC39x, TC37xED) || n.a. || n.a. || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC35x, TC33xED) || n.a. || 11, {{rev|12|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC35x, TC33xED) || n.a. || 9 || n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from DAM || n.a. || 10 || 13&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to DAM || n.a. || 7 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;Remote SRI Domain&#039;&#039;&#039;: Only applies to products with SRI extenders. Additional latency due to access going through an S2S&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;DCWS&#039;&#039;&#039;: Configured DFlash Corrected Wait States (Includes cycles for DFlash access cycles and ECC correction latency)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Subsystem ==&lt;br /&gt;
[[File:TC3xx Processor Core, Local Memory and Connectivity.png|alt=TC3xx Processor Core, Local Memory and Connectivity|thumb|Processor Core, Local Memory and Connectivity]]The Infineon AURIX™ TC3xx features up to 6 processor cores (CPU0 ... CPU5) implementing the [[TriCore Instruction Set Architecture|TC1.6.2 instruction set architecture]]. The following section focuses on the microarchitectural details of the CPU subsystem. For more information about the ISA, please take a look at the [[TriCore Instruction Set Architecture]].&lt;br /&gt;
&lt;br /&gt;
The processor core connects to the following memories and bus interfaces (where implemented):&lt;br /&gt;
*Program Scratch-Pad SRAM (PSPR)&lt;br /&gt;
*Data Scratch-Pad SRAM (DSPR)&lt;br /&gt;
*Program Cache (PCache)&lt;br /&gt;
*Data Cache (DCache)&lt;br /&gt;
*Local Memory Unit (DLMU)&lt;br /&gt;
*Local Pflash bank (LPB)&lt;br /&gt;
*SRI slave interface (x2)&lt;br /&gt;
*SRI master Interface&lt;br /&gt;
*SPB master interface&lt;br /&gt;
&lt;br /&gt;
=== TC1.6.2P Implementation Features ===&lt;br /&gt;
*Most instructions executed in 1 cycle&lt;br /&gt;
*Branch instructions in 1, 2 or 3 cycles (using dynamic branch prediction)&lt;br /&gt;
*Wide memory interface for fast context switch&lt;br /&gt;
* Automatic context save-on-entry and restore-on-exit for: subroutine, interrupt, trap&lt;br /&gt;
*Six memory protection register sets&lt;br /&gt;
*Dual instruction issuing (in parallel into Integer Pipeline and Load/Store Pipeline)&lt;br /&gt;
*Third pipeline for loop instruction only (zero overhead loop)&lt;br /&gt;
*Single precision Floating Point Unit (IEEE-754 Compatible)&lt;br /&gt;
*Dedicated Integer divide unit&lt;br /&gt;
*18 data memory protection ranges, 10 code memory protection ranges arranged in 6 sets&lt;br /&gt;
&lt;br /&gt;
=== Superscalar Architecture ===&lt;br /&gt;
The processor core within the AURIX™ TC3xx family, specifically the TC1.6.2P implementation, employs a superscalar architecture characterized by three parallel pipelines: the Integer Pipeline, the Load/Store Pipeline, and the Loop Pipeline. Superscalar execution is a form of instruction-level parallelism that enables the processor to issue and execute multiple instructions during a single clock cycle. The TriCore™ TC3xx core&#039;s superscalar architecture allows it to issue and execute multiple instructions in parallel. Specifically, it can issue up to two instructions simultaneously to the Integer and Load/Store pipelines. However, there are certain constraints on this dual issuing capability. For example, back-to-back data arithmetic instructions can only be issued in separate cycles, and a load/store instruction can be issued either on its own or paired with a data arithmetic instruction, provided the load/store instruction is the second in the pair. Under ideal conditions, with careful instruction scheduling, this dual-issue capability can lead to a throughput of close to 0.5 clock cycles per instruction, effectively executing two instructions per cycle.&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Stages ===&lt;br /&gt;
The execution of instructions within the TriCore™ TC3xx core is managed through a pipeline consisting of several stages. In one document it is mentioned that the pipeline consists of 6 stages &amp;lt;ref name=&amp;quot;ref3635926&amp;quot; /&amp;gt;, but the exact stages remain unclear. From the architecture the following stages can be inferred:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Fetch Stage&#039;&#039;&#039;: The initial stage in the pipeline is the Fetch stage, where instructions are retrieved from memory. This task is handled by the Instruction Fetch Unit (IFU), which is responsible for fetching instructions from the memory system. To improve efficiency, the IFU employs a pre-fetching mechanism, anticipating the instructions that will be needed and bringing them into the processor before they are actually required. Instructions are fetched through a 64-bit wide Program Memory Interface (PMI), allowing for the retrieval of a significant amount of instruction data in each cycle. The fetched instructions are then placed into an issue FIFO, a buffer capable of holding up to six instructions. This buffer plays a crucial role in managing the flow of instructions to the subsequent execution pipelines. The 64-bit fetch width and the instruction buffer are indicative of a design that aims to ensure a continuous supply of instructions to the pipelines, preventing them from being starved of work. A wider fetch path allows for more instruction bits to be obtained from memory in each clock cycle, while the buffer helps to mitigate temporary delays in instruction fetching.&lt;br /&gt;
* &#039;&#039;&#039;Execution Unit&#039;&#039;&#039;: The Execution Unit contains the Integer Pipeline, the Load/Store Pipeline and the Loop Pipeline. All three pipelines operate in parallel and are capable of executing instructions simultaneously. Each pipline has its own decode stage and two execute stages. Furthermore, the TC3xx features a Floating Point Unit (FPU). It is not clear whether the FPU is part of the execution unit or a separate unit. It is assumed that the FPU also has its own decode stage and an unknown number of execute stages&lt;br /&gt;
** &#039;&#039;&#039;Decode Stage&#039;&#039;&#039;: Following the Fetch stage, the instruction are issued to one of the pipelines. In the decode stage of each pipeline, the instruction is examined and translated to determine the specific operation it represents and to identify the operands it will operate on. It is assumed that operands are read from the register file during the decode stage.&lt;br /&gt;
** &#039;&#039;&#039;Execute Stage&#039;&#039;&#039;: The Execute stage is where the actual operation specified by the instruction is carried out. Pipeline hazards (stalls) are minimised by the use of forwarding paths between pipeline stages allowing the results of one instruction to be used by a following instruction as soon as the result becomes available.&lt;br /&gt;
** &#039;&#039;&#039;Writeback Stage&#039;&#039;&#039;: The final stage in the pipeline is the Writeback stage. In this stage, the results produced by the executed instruction are written back to the processor&#039;s register file, making them available for subsequent instructions. It is unclear whether the writeback stage is part of the (two) execution stages or a separate stage.&lt;br /&gt;
&lt;br /&gt;
=== Execution Pipelines ===&lt;br /&gt;
The TriCore™ TC3xx core leverages four parallel pipelines to enhance its performance. Each pipeline is designed to handle a specific class of instructions:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Integer Pipeline:&#039;&#039;&#039; This pipeline is responsible for executing integer arithmetic and logical instructions, including data-conditional jump instructions, bit manipulation operations, as well as division and multiply-accumulate (MAC) instructions.&lt;br /&gt;
* &#039;&#039;&#039;Load/Store Pipeline:&#039;&#039;&#039; The primary function of this pipeline is to manage memory access operations, including loading data from memory and storing data to memory. It also handles address arithmetic, unconditional jump instructions, procedure call instructions, context-switching operations, and control flow related to context save areas (CSAs).&lt;br /&gt;
* &#039;&#039;&#039;Loop Pipeline:&#039;&#039;&#039; This is a specialized pipeline designed to facilitate zero-overhead loops, a technique that significantly improves the performance of iterative code sections. Its design aims to eliminate or minimize the overhead typically associated with loop control, such as incrementing counters and checking loop conditions. Some documentation suggests that the loop pipeline comes along with a &amp;quot;Loop Cache&amp;quot;. This dedicated cache would likely be used to store instructions belonging to the loop, enabling very fast access and execution for repeated iterations.&lt;br /&gt;
* &#039;&#039;&#039;Floating Point Unit (FPU):&#039;&#039;&#039; The FPU is responsible for executing floating-point arithmetic operations&lt;br /&gt;
&lt;br /&gt;
=== Store Buffers ===&lt;br /&gt;
The TriCore™ TC3xx core include &#039;&#039;&#039;Store Buffers&#039;&#039;&#039; to decouple memory write operations from CPU instruction execution. All stores from the Load/Store Pipeline are placed in the store buffer prior to being written to local memory or transferred via the bus system. Write data is taken from the store buffers and written to memory when the target memory or bus interface becomes available. In normal operation the CPU will prioritise memory load operations over store operations in order to improve performance unless the store buffer is full or the order of load and store operations must be preserved (e.g. peripheral space access). The store buffer can hold the data for up to 6 stores operations. To improve performance the store buffer will merge consecutive byte, half-word, and word writes of the same location to reduce the number of memory accesses required.&lt;br /&gt;
&lt;br /&gt;
=== Instruction Timing ===&lt;br /&gt;
&lt;br /&gt;
==Functional Safety and Security Features==&lt;br /&gt;
===Hardware Security Module and Encryption===&lt;br /&gt;
One of the defining features of the AURIX™ TC3xx family is its robust hardware-based security subsystem, implemented to protect against cyber threats and unauthorized manipulation of vehicle systems. Each TC3xx MCU includes a dedicated &#039;&#039;Hardware Security Module&#039;&#039; (HSM), which is essentially an on-chip co-processor with its own CPU and cryptographic engine designed to handle secure operations. In the second-generation AURIX™ (TC3xx), the HSM was upgraded with support for asymmetric cryptography (e.g., RSA, ECC algorithms) in hardware, providing significantly faster public-key encryption and authentication capabilities than pure software implementations. This HSM supports &#039;&#039;&#039;EVITA Full&#039;&#039;&#039; (the highest level of the EU’s EVITA automotive security requirements), meaning it can perform secure boot, message authentication, and encryption at a level suitable for protecting critical in-vehicle communications. For example, the HSM can encrypt and authenticate CAN/Ethernet messages to prevent spoofing or tampering on the vehicle network, and it can manage cryptographic keys securely isolated from the main application cores.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The security module enables features like &#039;&#039;&#039;secure boot&#039;&#039;&#039;, where the AURIX™ will only execute firmware that is digitally signed by the vehicle manufacturer, thereby preventing unauthorized or malicious code. It also facilitates &#039;&#039;over-the-air (OTA) updates&#039;&#039; in a secure manner: the TC3xx HSM can verify and decrypt update packages received via telematics, allowing firmware upgrades while protecting against attackers attempting to hijack the software. In addition, the HSM includes a true random number generator and supports protocols for immobilizer and theft protection systems. Infineon’s implementation essentially treats the HSM as an “embedded smart card” inside the microcontroller. This approach, building on Infineon’s expertise in chip card security, helps to safeguard sensitive assets like cryptographic keys and to perform secure operations (encryption, decryption, authentication) in hardware, making attacks significantly more difficult. The strong cybersecurity provisions of the AURIX™ TC3xx have made it a preferred choice for vehicle gateway ECUs and central body controllers, which are points of entry for connected car communications and thus high-value targets for hackers. By incorporating the HSM, automotive OEMs can implement advanced security features such as encrypted onboard communication (to thwart bus tampering) and secure diagnostics, ensuring the vehicle’s electronic data is protected against cyber threats even as cars become more connected.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref19484776953&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Functional Safety and Fault Tolerance===&lt;br /&gt;
Beyond cybersecurity, the AURIX™ TC3xx architecture is built with extensive &#039;&#039;functional safety&#039;&#039; features to meet the highest safety integrity levels in automotive systems. The multi-core design supports &#039;&#039;lockstep operation&#039;&#039;, where redundant checker cores run in parallel with main cores and continuously compare results cycle-by-cycle. In TC3xx devices, up to four of the six TriCore™ CPUs have such lockstep partner cores, allowing the microcontroller to detect any single-point CPU failure instantly (if a discrepancy arises between the core and its checker, a fault is signaled). A &#039;&#039;Safety Management Unit (SMU)&#039;&#039; is integrated on-chip to monitor various fault conditions throughout the device – it aggregates error signals from the lockstep cores, memory ECC monitors, clock/watchdog monitors, and peripheral self-tests, and can initiate safe-state actions (like resetting the chip or signaling an error pin to an external supervisor) if a critical fault is detected. The AURIX™ safety concept also includes a distributed Memory Protection Unit (MPU) arrangement, with multiple memory protection contexts that prevent errant or malicious code from writing to wrong memory areas. This helps contain faults and eases the integration of software with mixed criticality (Infineon allows partitioning software components of different ASIL levels on the same MCU while keeping them isolated).&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref19519075552&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crucially, the TC3xx family was developed according to ISO 26262 processes and can achieve &#039;&#039;&#039;ASIL-D&#039;&#039;&#039; (Automotive Safety Integrity Level D), the highest grade for automotive functional safety. Compared to a traditional dual-core lockstep approach, the AURIX’s™ multi-core safety architecture allowed Infineon to reduce certain safety development overheads (earlier Infineon data suggested up to 30% reduction in safety software workload) by providing built-in safety mechanisms and diagnostics. Infineon supplies a comprehensive safety manual and diagnostic libraries for the AURIX™, helping engineers utilize features like CPU self-tests, RAM tests, and CRC checks to comply with safety standards. In addition to automotive standards, the AURIX™ TC3xx has also been qualified for &#039;&#039;&#039;industrial safety&#039;&#039;&#039;: in 2023, Infineon announced support for IEC 61508 metrics, enabling designs with AURIX™ to reach SIL-2 and SIL-3 safety integrity levels for industrial applications. This cross-industry safety compliance is facilitated by the MCU’s redundant design and detailed failure mode documentation (FMEDA) provided by Infineon. In summary, the AURIX™ TC3xx integrates both proactive safety (fault prevention via lockstep, monitoring and protection) and reactive safety (fault detection and safe shutdown), making it a dependable component for systems that cannot afford unintended behavior, whether in cars, factories, or aerospace. &amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref4967712052&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref196858272&amp;quot;&amp;gt;MCUs support industrial functional safety - Electronic Products https://www.electronicproducts.com/mcus-support-industrial-functional-safety/&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Platform Devices ==&lt;br /&gt;
The following table shows a feature overview of the AURIX™ TC3xx Platform family focusing on memory and number of cores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Feature&lt;br /&gt;
!TC33x&lt;br /&gt;
!TC33xEXT&lt;br /&gt;
!TC35x&lt;br /&gt;
!TC36x&lt;br /&gt;
!TC37x&lt;br /&gt;
!TC37xEXT&lt;br /&gt;
!TC38x&lt;br /&gt;
!TC39x&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |CPUs&lt;br /&gt;
|Cores / Checker Cores&lt;br /&gt;
|1 / 1&lt;br /&gt;
|2 / 1&lt;br /&gt;
|3 / 2&lt;br /&gt;
|2 / 2&lt;br /&gt;
|3 / 2&lt;br /&gt;
|3 / 3&lt;br /&gt;
|4 / 2&lt;br /&gt;
|6 / 4&lt;br /&gt;
|-&lt;br /&gt;
|Max. Freq.&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Cache per CPU &lt;br /&gt;
|Program [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |32&lt;br /&gt;
|-&lt;br /&gt;
|Data [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |SRAM per CPU&lt;br /&gt;
|PSPR [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|32|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|DSPR [KB]&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|192|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|-&lt;br /&gt;
|DLMU [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|8|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |SRAM global&lt;br /&gt;
|LMU [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|512&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|128&lt;br /&gt;
|768&lt;br /&gt;
|-&lt;br /&gt;
|DAM [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|32&lt;br /&gt;
| -&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Extension Memory (EMEM)&lt;br /&gt;
|TCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XTM [KB]&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Program Flash&lt;br /&gt;
|Size [MB]&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|10&lt;br /&gt;
|10&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|Banks [MB]&lt;br /&gt;
|1 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 3&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|5 x 3, 1 x 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Data Flash&lt;br /&gt;
|DF0 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|256&lt;br /&gt;
|512&lt;br /&gt;
|512&lt;br /&gt;
|1024&lt;br /&gt;
|-&lt;br /&gt;
|DF1 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |DMA&lt;br /&gt;
|Channels&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
|Move Engines&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Resource Partitions&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
The AURIX™ TC3xx family is a series of high-performance microcontrollers widely used in automotive and industrial applications. Compilers for the AURIX™ TC3xx are crucial for developers aiming to optimize performance, reliability, and safety in their applications. One significant aspect of the compiler landscape for AURIX™ TC3xx is the limited direct support from mainline open-source compilers such as GCC or LLVM/Clang. The primary reason for this is the stringent requirements for functional safety in automotive and industrial applications, which demand specialized features and compliance with safety standards that are often not met by general-purpose open-source compilers.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Compilers ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Tasking&#039;&#039;&#039;: Tasking compilers are renowned for their robust support for automotive applications, offering advanced debugging capabilities and optimization techniques tailored for the AURIX™ architecture. They provide extensive code optimization, comprehensive debugging tools, and strong support for safety standards such as ISO 26262, making them ideal for developing high-performance, reliable, and safe applications.&lt;br /&gt;
# &#039;&#039;&#039;HighTec&#039;&#039;&#039;: The HighTec compiler is a popular choice, known for its Eclipse-based development environment and strong multicore support. HighTec provides both GCC and LLVM-based ports of open-source compilers tailored specifically for the AURIX™ TC3xx family. These compilers offer efficient parallel execution, advanced code analysis, and an integrated development environment, ensuring robust performance and compliance with safety standards.&lt;br /&gt;
# &#039;&#039;&#039;Green Hills Software&#039;&#039;&#039;: Green Hills Software provides a highly optimized toolchain aimed at safety-critical applications, focusing on high performance and strict compliance with automotive standards. Their compiler offers superior optimization, extensive safety features, and a proprietary IDE with specialized tools for automotive development, ensuring developers can meet the stringent demands of functional safety.&lt;br /&gt;
&lt;br /&gt;
=== GCC for AURIX™ ===&lt;br /&gt;
&lt;br /&gt;
While mainline GCC does not directly support the AURIX™ TC3xx family, there is an unofficial GCC version available for AURIX™. Due to the GNU General Public License (GPL), the source code from HighTec was retrieved and, along with binary versions, published on GitHub:&lt;br /&gt;
&lt;br /&gt;
*GCC 4.9.4/Binutils 2.20/Newlib 1.18 for Tricore™ AURIX™ [[https://github.com/volumit/package_494 Source]] [[https://github.com/volumit/tricore_gcc494_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc494_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GCC 9.4.0/Binutils 2.20/Newlib 1.18 for Tricore™ AURIX™ [[https://github.com/volumit/package_940 Source]] [[https://github.com/volumit/tricore_gcc940_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc940_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GDB 10.0.50 for Tricore™ AURIX™ [[https://github.com/volumit/gdb-tricore Source]]&lt;br /&gt;
==emmtrix Tools for AURIX™ TC3xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX™ TC3xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC4x|Infineon AURIX™ TC4x]]&lt;br /&gt;
*[[Infineon AURIX TC2xx|Infineon AURIX™ TC2xx]]&lt;br /&gt;
*[[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&lt;br /&gt;
*[https://documentation.infineon.com/aurixtc3xx/docs/qmd1702366622648 AURIX™ TC3xx user manuals]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d3605221d96 AURIX™ TC3xx User Manual Part-1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d35f8541d94 AURIX™ TC3xx User Manual Part-2]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd AURIX™ TC3xx Architecture vol 1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 AURIX™ TC3xx Architecture vol 2]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
 |title=Infineon AURIX TC3xx Family – Deep Dive&lt;br /&gt;
 |description=This deep dive into Infineon&#039;s AURIX TC3xx family explores its multi-core TriCore architecture, real-time capabilities, safety and security features and tools&lt;br /&gt;
 |image=File:AURIX_TC399_LFBGA-516_plain.jpg&lt;br /&gt;
 |keywords=AURIX, Infineon, TC3xx, microcontroller, TriCore, automotive, ADAS, ISO 26262, functional safety, embedded security, ASIL-D, deep dive&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2695</id>
		<title>Infineon AURIX TC2xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2695"/>
		<updated>2025-04-08T08:34:51Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Infineon AURIX™ TC2xx&#039;&#039;&#039; is a family of 32-bit automotive microcontrollers developed by Infineon Technologies. &#039;&#039;AURIX™&#039;&#039; stands for &#039;&#039;“Automotive Realtime Integrated Next Generation Architecture”&#039;&#039;, reflecting its design for real-time, safety-critical automotive applications&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. The TC2xx series (first-generation AURIX™) is based on a multicore architecture featuring up to three independent 32-bit &#039;&#039;&#039;TriCore™&#039;&#039;&#039; processor cores. Introduced around 2012, the AURIX™ TC2xx marked Infineon’s transition to a multicore microcontroller platform (fabricated in 65 nm technology) after earlier single-core TriCore™ generations. It was designed from the ground up to meet stringent automotive safety requirements (ISO 26262) and to provide higher performance and integration for applications like engine management, chassis control, and driver assistance systems.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot;&amp;gt;Optimized for Success - EE Times Europe https://www.eetimes.eu/optimized-for-success/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The AURIX™ TC2xx family’s design philosophy is to combine &#039;&#039;&#039;safety&#039;&#039;&#039;, &#039;&#039;&#039;security&#039;&#039;&#039;, and &#039;&#039;&#039;performance&#039;&#039;&#039; in one scalable MCU platform. It achieves high functional safety compliance (up to &#039;&#039;&#039;ASIL-D&#039;&#039;&#039;, the highest automotive safety integrity level) with less development effort compared to traditional dual-controller lockstep systems&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. Infineon claims that using AURIX™ can cut safety-related development time by ~30% versus classical lockstep architectures, thanks to its built-in fault detection and monitoring hardware. At the same time, the TC2xx provides significant performance headroom – roughly 50% to 100% higher computational performance compared to its predecessors – while maintaining power consumption similar to previous single-core designs. To address emerging automotive security needs, the AURIX™ MCUs also integrate a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) on-chip, which protects against IP theft, fraud, and tampering. This combination of features makes the AURIX™ TC2xx a popular choice for consolidating various automotive control functions (powertrain, safety, body, etc.) onto one platform, without sacrificing reliability or efficiency.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC2xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Architecture==&lt;br /&gt;
The AURIX™ TC2xx is built on Infineon’s &#039;&#039;&#039;TriCore™&#039;&#039;&#039; architecture, which uniquely unifies traits of a RISC processor, a microcontroller, and a DSP (digital signal processor) into one core design. Each TriCore™ CPU in the TC2xx is a 32-bit superscalar processor that supports both 32-bit and 16-bit instruction formats (the latter for code size efficiency). The TriCore™ instruction set architecture includes typical RISC features (load/store architecture, 4 GB address space) and DSP capabilities (such as multiply-accumulate instructions and bit manipulation) in a single core. The cores also have an optional floating-point unit (FPU) and support SIMD (single-instruction multiple-data) operations for signal processing acceleration. The maximum core frequency in the TC2xx family is 300 MHz, and devices achieve about 1.7–2.4 DMIPS/MHz per core, providing robust real-time performance.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In terms of core configuration, high-end AURIX™ TC2xx models implement three main TriCore™ CPUs, which can be run in parallel or in redundant (lockstep) pairs for safety. Some variants include a redundant checker core that shadows a primary core to detect calculation errors (a technique to meet SIL/ASIL safety goals). The multicore architecture is supported by a layered memory system: each TriCore™ has tightly coupled local memory for fast instruction and data access, and they share access to large on-chip Flash and RAM via an internal bus matrix. Memory options in the TC2xx range from about &#039;&#039;&#039;0.5 MB up to 8 MB of on-chip Flash&#039;&#039;&#039;, and from ~50 KB up to 2.7 MB of SRAM, depending on the specific device. This on-chip memory (with ECC protection on memories for safety) allows real-time code execution and data storage without external memory in most use cases. For peripherals and I/O, the AURIX™ architecture includes a rich set of on-chip modules connected via internal buses, such as analog-to-digital converters, timer units, communication interfaces, and direct memory access (DMA) controllers. AURIX™ TC2xx MCUs typically provide interfaces like multiple CAN/CAN-FD channels, LIN/UART, SPI, I²C, Ethernet (on higher-end models), and automotive-specific buses (e.g. FlexRay on some variants), making the chip a self-contained controller for complex automotive networks.&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot;&amp;gt;Infineon TriCore - Wikipedia https://en.wikipedia.org/wiki/Infineon_TriCore&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; is a notable part of the AURIX™ TC2xx architecture. It is a sophisticated timer/co-processor integrated on-chip to handle complex timing, PWM generation, input capture, and other signal conditioning tasks across more than 200 channels. There are also specialized accelerators and co-processors on certain TC2xx devices, such as a &#039;&#039;&#039;Hardware Fast Fourier Transform (HFFT)&#039;&#039;&#039; unit for signal processing and a &#039;&#039;&#039;Parallel Pixel Processor&#039;&#039;&#039; for simple video or sensor data processing. These dedicated engines offload the TriCore™ CPUs for specific high-load tasks (e.g. radar signal FFTs or encoder signal processing), improving overall throughput in automotive applications. The AURIX™ architecture uses a single-power supply (5V or 3.3V) design and includes an on-chip voltage regulator (EVR), simplifying power management. The MCUs are offered in a variety of package types (from compact QFP-64 up to large BGA-516) to accommodate different I/O needs. Overall, the TC2xx architecture is highly integrated and optimized for real-time, combining multiple CPU cores with ample flash memory, SRAM, and peripherals on one chip to serve as a &#039;&#039;&#039;central control unit&#039;&#039;&#039; in vehicles.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;AURIX™ Unleashed - RS Components https://docs.rs-online.com/0f3f/0900766b815c315c.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
====CPU access latency (TC29x) ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!CPU Access Type!!Local CPU&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to own DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to own DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to own or other PSPR||8&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to own or other PSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to other DSPR||8&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to other DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from own PSPR&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other PSPR (critical word)||8&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other PSPR (any remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other DSPR (critical word)||8&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other DSPR (any remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Initial Pflash Access (critical word)||7 + configured PFlash Wait States&lt;br /&gt;
|-&lt;br /&gt;
|Initial Pflash Access (remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|PMU PFlash Buffer Hit (critical word)||6&lt;br /&gt;
|-&lt;br /&gt;
|PMU PFlash Buffer Hit (remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Initial Dflash Access||7 + configured DFlash Wait States&lt;br /&gt;
|-&lt;br /&gt;
|TC1.6P Data read from System Peripheral Bus (SPB)&lt;br /&gt;
|{{rev|4|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&amp;lt;br&amp;gt;{{rev|7|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = 2*f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&amp;lt;br&amp;gt;{{rev|10|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = 3*f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
|TC1.6P Data write to System Peripheral Bus (SPB)||0&lt;br /&gt;
|}&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
==Key Features==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Safety Mechanisms:&#039;&#039;&#039; The AURIX™ TC2xx was developed via an ISO 26262-compliant process and includes multiple hardware mechanisms to achieve &#039;&#039;&#039;functional safety up to ASIL-D&#039;&#039;&#039;. Notably, it supports &#039;&#039;lockstep&#039;&#039; operation, where one or two of the TriCore™ CPUs can run in redundant lockstep mode with another core to detect discrepancies (faults) cycle-by-cycle. A Safety Management Unit (&#039;&#039;&#039;SMU&#039;&#039;&#039;) is built in to monitor critical system parameters and handle faults. The architecture employs memory protection units and safe internal communication buses to isolate and supervise different software domains. Other safety features include &#039;&#039;&#039;error-correcting code (ECC)&#039;&#039;&#039; on flash and RAM, redundant peripherals (for example, duplicated ADC channels), watchdog timers, clock and voltage monitors, and self-test routines. These features allow developers to more easily implement safety-critical functions and meet standards like IEC 61508 (SIL-3) or ISO 26262 (ASIL-D) using a single AURIX™ MCU, whereas achieving the same on a traditional single-core MCU might require additional external safety ICs or companion processors.&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Security Functions:&#039;&#039;&#039; Infineon integrated a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) into the AURIX™ TC2xx family to address automotive cybersecurity requirements. This HSM is essentially an on-chip co-processor (with its own CPU and flash) that handles cryptographic operations and secure key storage isolated from the main cores. It follows the EVITA (E-safety Vehicle Intrusion Protected Applications) guidelines for automotive security. The HSM enables features like secure boot, encryption/decryption, authentication, and detection of software tampering. By having a built-in “embedded smart card” for security, the AURIX™ can implement anti-theft, anti-cloning, and secure onboard communication measures without needing an external security chip. This integration is a key differentiator, as it helps protect vehicle functions (e.g. immobilizers, firmware updates, V2X communication) against hacking and unauthorized modifications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Performance and DSP Capability:&#039;&#039;&#039; Each TriCore™ CPU in the TC2xx is capable of up to 300 MHz operation, and combined the multicore setup offers considerable processing power for an MCU (Infineon cites up to ~1.8 GFLOPS of DSP throughput for the highest models). The TriCore™ design delivers around &#039;&#039;&#039;1.7–2.4 DMIPS/MHz&#039;&#039;&#039; per core, meaning a triple-core AURIX™ at max frequency can exceed 2000 DMIPS of total throughput. The inclusion of DSP instructions and dedicated accelerators enables the AURIX™ to handle computationally intensive tasks (like control algorithms, filtering operations, or even rudimentary neural networks) that previously might require a separate DSP or FPGA. A built-in &#039;&#039;&#039;Floating Point Unit&#039;&#039;&#039; on each core supports single-precision (and optional double-precision in some cases) arithmetic, beneficial for model-based control algorithms and automotive sensor processing. Peripherals like the &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; and &#039;&#039;&#039;Hardware FFT&#039;&#039;&#039; accelerator (available on select TC2xx variants) further boost real-time performance for handling high-frequency events (e.g. engine ignition timing, motor control PWM, radar signal analysis) without overloading the CPU. Despite the performance, the TC2xx was designed with efficiency in mind; Infineon managed to double the performance over the prior generation (TC1xx AUDO) while keeping power consumption at comparable levels. The MCUs also support various low-power modes and a standby controller to minimize energy usage when parts of the system are idle.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Power and Integration:&#039;&#039;&#039; As a system-on-chip for vehicles, AURIX™ TC2xx integrates a wide range of &#039;&#039;&#039;communication interfaces&#039;&#039;&#039; and analog/digital peripherals. Common features include multiple CAN bus controllers (often with CAN FD support), LIN/UART, SPI and I²C channels, FlexRay communication in high-end models, and even Ethernet (in variants aimed at gateway or ADAS roles). High-resolution &#039;&#039;&#039;ADC units&#039;&#039;&#039; (with shared and redundant channels) allow precise sensor measurements for engine or chassis control. There are also specialized modules like delta-sigma ADCs and SENT interfaces for automotive sensor inputs. This rich peripheral set reduces the need for external components, helping to lower the overall system Bill of Materials. The TC2xx devices operate over a broad temperature range (typically –40 °C to +150 °C), meeting the demands of under-the-hood automotive environments. They run from a single supply (with internal regulators), simplifying designs, and support both 5 V and 3.3 V systems for compatibility with a variety of sensors and actuators. Combined with its safety and security features, the AURIX’s™ high integration makes it a one-chip solution for many complex embedded applications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
The Infineon AURIX™ TC2xx family is primarily targeted at the &#039;&#039;&#039;automotive industry&#039;&#039;&#039;, especially domains requiring high reliability and real-time control. Its initial use cases were in &#039;&#039;&#039;powertrain&#039;&#039;&#039; and engine management systems – for example, controlling combustion engines, managing fuel injection and ignition, and coordinating electric motor and battery systems in hybrid or electric vehicles. The multi-core AURIX™ can run multiple control algorithms in parallel (e.g. for an engine’s cylinders, transmission and motor inverter concurrently), which is valuable in modern electrified powertrains. Beyond engines, AURIX™ TC2xx MCUs are used in &#039;&#039;&#039;chassis and safety systems&#039;&#039;&#039;: they can serve as the central controller for &#039;&#039;&#039;anti-lock braking systems (ABS)&#039;&#039;&#039; and stability control, &#039;&#039;&#039;airbag control units&#039;&#039;&#039;, &#039;&#039;&#039;electric power steering (EPS)&#039;&#039;&#039; systems, and suspension controllers. Advanced Driver Assistance Systems (&#039;&#039;&#039;ADAS&#039;&#039;&#039;) and autonomous driving modules in earlier generations of vehicles have also employed AURIX™ for tasks such as sensor fusion, radar signal processing, and acting as a safety supervisor for driving assistance features&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. For example, a radar unit for adaptive cruise control might use an AURIX™ to perform real-time signal processing (using its DSP capabilities and HFFT) and make high-level decisions, all within an ASIL-D safe environment.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot;&amp;gt;https://resources.tasking.com/sites/default/files/2021-02/Take%20Advantage%20of%20Infineon%20AURIX%20TC3xx%20Family%20With%20the%20Right%20Compiler_WEB.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to its safety certification and robust design, the AURIX™ TC2xx has seen adoption in any application that cannot tolerate failure. This includes &#039;&#039;&#039;industrial automation and robotics&#039;&#039;&#039;, where the MCU’s reliability and support for functional safety (IEC 61508) are attractive. In industrial motor drives or robotics controllers, an AURIX™ might handle precise motor control algorithms and system monitoring. Other use cases outside pure automotive include &#039;&#039;&#039;commercial vehicles and transportation&#039;&#039;&#039; (trucks, agricultural and construction machinery), which have similar safety and durability requirements. The AURIX’s™ extensive communication interfaces also make it suitable as a gateway or central node in complex networks – for instance, acting as a domain controller in modern automotive E/E architectures to coordinate data between powertrain, body, and ADAS subsystems. Some &#039;&#039;&#039;electric vehicle (EV)&#039;&#039;&#039; platforms use AURIX™ MCUs in battery management systems and inverter controls, leveraging its calculation power for battery algorithms and its safety for monitoring cell health. In summary, the TC2xx family finds use in scenarios that demand &#039;&#039;&#039;real-time performance with high safety integrity&#039;&#039;&#039;, predominantly in automotive (engine, transmission, chassis, safety, ADAS) but also in high-end industrial embedded systems.&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==emmtrix Tools for AURIX™ TC2xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX™ TC2xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ TC2xx / [[Infineon AURIX TC3xx|TC3xx]]/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx|Infineon AURIX™ TC3xx]]&lt;br /&gt;
* [[Infineon AURIX TC4x|Infineon AURIX™ TC4x]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture|TriCore™ Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&lt;br /&gt;
* [https://www.infineon.com/dgdl/Infineon-TC29x_B-step-UM-v01_03-EN.pdf?fileId=5546d46269bda8df0169ca1bdee424a2 TC29x B-Step User Manual]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=TriCore_Instruction_Set_Architecture&amp;diff=2694</id>
		<title>TriCore Instruction Set Architecture</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=TriCore_Instruction_Set_Architecture&amp;diff=2694"/>
		<updated>2025-04-08T08:31:37Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TriCore™ is a unified, 32-bit microcontroller-DSP, single-core architecture optimized for real-time embedded systems. The ISA supports a uniform, 32-bit address space, with optional virtual addressing and memory-mapped I/O. The architecture allows for a wide range of implementations, ranging from scalar through to superscalar, and is capable of interacting with different system architectures, including multiprocessing. This flexibility at the implementation and system levels allows for different trade-offs between performance and cost at any point in time.&lt;br /&gt;
&lt;br /&gt;
The architecture supports both 16-bit and 32-bit instruction formats. All instructions have a 32-bit format. The 16-bit instructions are a subset of the 32-bit instructions, chosen because of their frequency of use. These instructions significantly reduce code space, lowering memory requirements, system and power consumption.&lt;br /&gt;
&lt;br /&gt;
Real-time responsiveness is largely determined by interrupt latency and context-switch time. The high-performance architecture minimizes interrupt latency by avoiding long multi-cycle instructions and by providing a flexible hardware-supported interrupt scheme. The architecture also supports fast-context switching.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
[[File:Tricore History.png|center|thumb|726x726px|Evolution of TriCore families&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Welcome to the next generation AURIX™ TC4x, Thomas Boehm, Senior Vice President Automotive Microcontroller, 12 January 2022, https://www.infineon.com/dgdl/Infineon_AURIX_TC4x.pdf?fileId=8ac78c8b7e4b5364017e4e1a407c0001&amp;lt;/ref&amp;gt;]]Infineon’s TriCore™ architecture, which underpins the AURIX™ family, has a lineage dating back to the late 1990s. The first TriCore™-based microcontrollers were introduced in 1999 as the Infineon &#039;&#039;&#039;AUDO&#039;&#039;&#039; family (Automotive unified processor), marking the debut of a 32-bit core unifying RISC, microcontroller, and DSP capabilities. Over the next decade, Infineon released several generations of TriCore™-based AUDO MCUs (with increasing performance and integration), establishing a strong presence in automotive powertrain control units. The major breakthrough came in 2012 when Infineon announced the &#039;&#039;&#039;AURIX™&#039;&#039;&#039; family (the name AURIX™ being an acronym reflecting its automotive real-time focus) as the next evolution of TriCore™ micros. The first-generation AURIX™ (commonly referred to as [[Infineon AURIX TC2xx|AURIX TC2xx]]) featured up to three 32-bit TriCore™ CPUs at 200–300 MHz, with two of the cores optionally arranged in a lockstep pair for safety. These devices, manufactured on a 65 nm process, offered up to about 4–8 MB of flash memory and were among the first automotive MCUs to include a hardware security module for encryption. The AURIX™ TC2xx family quickly became a &#039;&#039;&#039;benchmark&#039;&#039;&#039; for automotive microcontrollers, combining high real-time performance with built-in safety and security, and saw adoption in various vehicle domains from engine management to chassis and ADAS.&amp;lt;ref name=&amp;quot;ref507313680&amp;quot;&amp;gt;History of TriCore™ - Infineon Technologies https://www.infineon.com/cms/en/product/promopages/historyoftricore/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1951907555&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of January 2022, Infineon has shipped over &#039;&#039;&#039;845 million&#039;&#039;&#039; TriCore™ devices, including more than &#039;&#039;&#039;320 million&#039;&#039;&#039; AURIX™ microcontrollers. TriCore™ has proven to be the &#039;&#039;&#039;trusted choice for the automotive industry&#039;&#039;&#039;, with total shipments expected to surpass &#039;&#039;&#039;1 billion units&#039;&#039;&#039; by the end of 2022. The &#039;&#039;&#039;success story began in the powertrain domain&#039;&#039;&#039; and subsequently expanded to cover the entire automotive MCU market.&amp;lt;ref&amp;gt;Welcome to the next generation AURIX™ TC4x, Thomas Boehm, Senior Vice President Automotive Microcontroller, 12 January 2022&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;[[Infineon AURIX TC3xx|AURIX TC3xx]]&#039;&#039;&#039; (second-generation AURIX™) was announced in October 2016 as a major upgrade over the first generation, targeting the emerging needs of automated and electric vehicles. While maintaining software and pin compatibility with the TC2xx family, the TC3xx generation doubled the number of cores (scaling up to six TriCore™ cores) and moved to a smaller geometry 40 nm process to integrate larger memories and new peripherals. Key improvements introduced with TC3xx included: higher total processing performance (achieving 3× the real-time computing capability of its predecessor), increased on-chip flash (up to 16 MB) and SRAM (&amp;gt;6 MB) to accommodate the growing software in vehicles, a enhanced HSM with full EVITA support for cybersecurity, and new connectivity options like Gigabit Ethernet and more CAN FD channels to handle the data fusion requirements of ADAS. The TC3xx also introduced dedicated radar processing units (SPUs) to support level 2+ and level 3 autonomous driving systems that process radar sensor data on the MCU. Engineering samples of the flagship 300 MHz, 6-core TC39x became available in 2017, and the family entered volume production by 2019 once it achieved full automotive qualification. The seamless backward compatibility eased the migration for automakers and Tier-1 suppliers, allowing them to leverage existing AURIX™ TC2xx software and safety concepts on the more powerful TC3xx platform.&amp;lt;ref name=&amp;quot;ref1428109010&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1948477695&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot;&amp;gt;UDE Debug, Trace and Test solutions for Infineon TriCore™ AURIX™ TC32, TC33, TC35, TC36, TC37, TC38, TC39, TC3x Microcontrollers       https://www.pls-mc.com/products/infineon-tricore-aurix-tc32-tc33-tc35-tc36-tc37-tc38-tc39-microcontrollers/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of the mid-2020s, Infineon has continued to evolve the AURIX™ lineage. In 2023, the company revealed the third-generation &#039;&#039;&#039;[[Infineon AURIX TC4x|AURIX TC4x]]&#039;&#039;&#039; family, representing the 7th generation of TriCore™-based MCUs overall. The TC4x family (in development) is slated to bring further enhancements such as higher CPU frequencies, larger local memories, an enhanced TriCore™ core design with improved floating-point and virtualization support, and even the integration of auxiliary cores (including potentially heterogeneous cores). Notably, Infineon is also embracing emerging technology by planning to incorporate &#039;&#039;&#039;RISC-V&#039;&#039;&#039; processor cores alongside TriCore™ in future AURIX™ products, combining the proven safety of TriCore™ with the flexibility of the open RISC-V ecosystem. Throughout its history, the AURIX™ architecture’s roadmap has been driven by the increasing computational demands and safety requirements of modern vehicles – from the early single-core engine controllers to today’s multi-core domain controllers for autonomous driving. Each generation has built upon the last, adding more performance, memory, and features while preserving the fundamental focus on real-time determinism, safety, and security that the TriCore™ architecture was originally created for. &amp;lt;ref name=&amp;quot;ref507313680&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1329056342&amp;quot;&amp;gt;Infineon brings RISC-V to the automotive industry and is first to announce an automotive RISC-V microcontroller family – RISC-V International https://riscv.org/ecosystem-news/2025/03/infineon-brings-risc-v-to-the-automotive-industry-and-is-first-to-announce-an-automotive-risc-v-microcontroller-family/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of January 2022, Infineon has shipped over &#039;&#039;&#039;845 million&#039;&#039;&#039; TriCore™ devices, including more than &#039;&#039;&#039;320 million&#039;&#039;&#039; AURIX™ microcontrollers. TriCore™ has proven to be the &#039;&#039;&#039;trusted choice for the automotive industry&#039;&#039;&#039;, with total shipments expected to surpass &#039;&#039;&#039;1 billion units&#039;&#039;&#039; by the end of 2022. The &#039;&#039;&#039;success story began in the powertrain domain&#039;&#039;&#039; and subsequently expanded to cover the entire automotive MCU market.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
==Versions==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!ISA&lt;br /&gt;
!Processors&lt;br /&gt;
!User Manual Date&lt;br /&gt;
!New Instructions&lt;br /&gt;
|-&lt;br /&gt;
|TC1.3&lt;br /&gt;
|&lt;br /&gt;
|2002-05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TC1.3.1 &lt;br /&gt;
|[https://www.infineon.com/cms/en/product/microcontroller/legacy-microcontroller/other-legacy-mcus/audo-family/ TriCore™ Family AUDO MAX]&lt;br /&gt;
|2007-11&lt;br /&gt;
|&lt;br /&gt;
*CACHEI.W, CACHEI.WI&lt;br /&gt;
&lt;br /&gt;
*FTOIZ, FTOQ31Z, FTOUZ (FPU Conversion Instructions)&lt;br /&gt;
|-&lt;br /&gt;
|TC1.6&lt;br /&gt;
|[[Infineon AURIX TC2xx]]&lt;br /&gt;
| 2013-07&lt;br /&gt;
|&lt;br /&gt;
*DISABLE, RESTORE, CACHEI.I (Interrupt and Data Cache manipulation)&lt;br /&gt;
*DIV, DIV.U (Fast Integer Divide)&lt;br /&gt;
*FCALL,FCALLA,FCALLI, FRET (fast call and return with minimal saving of state)&lt;br /&gt;
*LD.BU, LD.B, LD.HU, LD.H, ST.B, ST.H, ST.A (Long offset addressing mode introduced for byte, half word and address accesses)&lt;br /&gt;
*JEQ, JNE (Extended range of 16 bit jumps)&lt;br /&gt;
*CMPSWAP.W, SWAPMSK.W (New Synchronisation Instructions)&lt;br /&gt;
*CRC32 (New CRC instruction)&lt;br /&gt;
*WAIT (New wait for interrupt instruction)&lt;br /&gt;
|-&lt;br /&gt;
|TC1.6.2&lt;br /&gt;
|[[Infineon AURIX TC3xx]]&lt;br /&gt;
|2017-01&lt;br /&gt;
|&lt;br /&gt;
*CRC32B.W, CRC32L.W, CRC32.B (CRC32 for big endian, little endian and byte data)&lt;br /&gt;
*CRCN (arbitrary width and polynomial CRC calculation)&lt;br /&gt;
*SHUFFLE (Reorder bytes within word)&lt;br /&gt;
*POPCNT (count number of bits set in word)&lt;br /&gt;
* FTOHP, HPTOF (Half precision floating point conversion)&lt;br /&gt;
*LHA (Load high bits of address value) &lt;br /&gt;
|-&lt;br /&gt;
|TC1.8&lt;br /&gt;
|[[Infineon AURIX TC4x]]&lt;br /&gt;
| N/A&lt;br /&gt;
|N/A (user manual not yet public available)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Features==&lt;br /&gt;
The key features of the TriCore™ Instruction Set Architecture (ISA) are:&lt;br /&gt;
&lt;br /&gt;
*32-bit load store architecture&lt;br /&gt;
*4 Gbyte address range (2&amp;lt;sup&amp;gt;32&amp;lt;/sup&amp;gt;)&lt;br /&gt;
*16-bit and 32-bit instructions for reduced code size&lt;br /&gt;
*Data types:&lt;br /&gt;
**Boolean, integer with saturation, bit array, signed fraction, character, double-word integers, signed integer, unsigned integer, IEEE-754 single-precision floating point &lt;br /&gt;
&lt;br /&gt;
*Data formats:&lt;br /&gt;
**Bit, byte (8-bits), half-word (16-bits), word (32-bits), double-word (64-bits)&lt;br /&gt;
*Byte and bit addressing&lt;br /&gt;
*Little-endian byte ordering for data, memory and CPU registers&lt;br /&gt;
*Multiply and Accumulate (MAC) instructions: Dual 16 × 16, 16 × 32, 32 × 32&lt;br /&gt;
*Saturation integer arithmetic&lt;br /&gt;
*Packed data&lt;br /&gt;
*Addressing modes:&lt;br /&gt;
**Absolute, circular, bit reverse, long + short, base + offset with pre- and post-update&lt;br /&gt;
*Instruction types:&lt;br /&gt;
**Arithmetic, address arithmetic, comparison, address comparison, logical, MAC, shift, coprocessor, bit logical, branch, bit field, load/store, packed data, system&lt;br /&gt;
&lt;br /&gt;
*General Purpose Register Set (GPRS):&lt;br /&gt;
**Sixteen 32-bit data registers&lt;br /&gt;
**Sixteen 32-bit address registers&lt;br /&gt;
**Three 32-bit status and program counter registers (PSW, PC, PCXI)&lt;br /&gt;
*Debug support (OCDS):&lt;br /&gt;
** Level 1, supported in conjunction with the CPS block&lt;br /&gt;
**Level 3, supported in conjunction with the MCDS block (Emulation Device only).&lt;br /&gt;
*Flexible memory protection system providing multiple protection sets with multiple protection ranges per set.&lt;br /&gt;
&lt;br /&gt;
*Temporal protection system allowing time bounded real time operation&lt;br /&gt;
&lt;br /&gt;
==Register Set==&lt;br /&gt;
&lt;br /&gt;
===Architectural Registers===&lt;br /&gt;
The architectural registers consist of:&lt;br /&gt;
&lt;br /&gt;
*32 General Purpose Registers (GPRs)&lt;br /&gt;
**16 Address Registers&lt;br /&gt;
**16 Data Registers&lt;br /&gt;
*Program Counter (PC)&lt;br /&gt;
*Two 32-bit registers containing status flags&lt;br /&gt;
{| style=&amp;quot;margin: 1em 0&amp;quot;&lt;br /&gt;
|+32-bit Architectural Registers&lt;br /&gt;
| style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 1em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Address Register&lt;br /&gt;
|-&lt;br /&gt;
|A[15]&lt;br /&gt;
|Implicit Base Address&lt;br /&gt;
|-&lt;br /&gt;
|A[14]||&lt;br /&gt;
|-&lt;br /&gt;
| A[13]||&lt;br /&gt;
|-&lt;br /&gt;
|A[12]||&lt;br /&gt;
|-&lt;br /&gt;
|A[11]||Return Address &lt;br /&gt;
|-&lt;br /&gt;
|A[10]|| Stack Pointer (SP)&lt;br /&gt;
|-&lt;br /&gt;
|A[9]||Global Address Register &lt;br /&gt;
|-&lt;br /&gt;
|A[8]|| Global Address Register&lt;br /&gt;
|-&lt;br /&gt;
|A[7]||&lt;br /&gt;
|-&lt;br /&gt;
|A[6]||&lt;br /&gt;
|-&lt;br /&gt;
|A[5]||&lt;br /&gt;
|-&lt;br /&gt;
|A[4]||&lt;br /&gt;
|-&lt;br /&gt;
|A[3]||&lt;br /&gt;
|-&lt;br /&gt;
| A[2]||&lt;br /&gt;
|-&lt;br /&gt;
|A[1]&lt;br /&gt;
|Global Address Register&lt;br /&gt;
|-&lt;br /&gt;
| A[0]||Global Address Register&lt;br /&gt;
|} &lt;br /&gt;
| style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 1em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Data Register&lt;br /&gt;
|-&lt;br /&gt;
|D[15]||Implicit Data &lt;br /&gt;
|-&lt;br /&gt;
|D[14]||&lt;br /&gt;
|-&lt;br /&gt;
|D[13]||&lt;br /&gt;
|-&lt;br /&gt;
|D[12]||&lt;br /&gt;
|-&lt;br /&gt;
|D[11]||&lt;br /&gt;
|-&lt;br /&gt;
|D[10]||&lt;br /&gt;
|-&lt;br /&gt;
|D[9]||&lt;br /&gt;
|-&lt;br /&gt;
|D[8]||&lt;br /&gt;
|-&lt;br /&gt;
|D[7]||&lt;br /&gt;
|-&lt;br /&gt;
|D[6]||&lt;br /&gt;
|-&lt;br /&gt;
|D[5] ||&lt;br /&gt;
|-&lt;br /&gt;
|D[4]||&lt;br /&gt;
|-&lt;br /&gt;
|D[3]||&lt;br /&gt;
|-&lt;br /&gt;
|D[2]||&lt;br /&gt;
|-&lt;br /&gt;
|D[1]||&lt;br /&gt;
|-&lt;br /&gt;
|D[0]||&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 1em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |System Register&lt;br /&gt;
|-&lt;br /&gt;
|PCXI||Previous Context Information&lt;br /&gt;
|-&lt;br /&gt;
|PSW||Program Status Word&lt;br /&gt;
|-&lt;br /&gt;
|PC||Program Counter&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Special Registers===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |General Special Registers&lt;br /&gt;
|-&lt;br /&gt;
| PC||Program Counter Register&lt;br /&gt;
|-&lt;br /&gt;
|SYSCON&lt;br /&gt;
|System Configuration Register&lt;br /&gt;
|-&lt;br /&gt;
|CPU_ID||CPU Identification Register (Read Only)&lt;br /&gt;
|-&lt;br /&gt;
|CORE_ID|| Core Identification Register&lt;br /&gt;
|-&lt;br /&gt;
|BIV||Base Address of Interrupt Vector Table Register&lt;br /&gt;
|-&lt;br /&gt;
|BTV||Base Address of Trap Vector Table Register&lt;br /&gt;
|-&lt;br /&gt;
|ISP||Interrupt Stack Pointer Register&lt;br /&gt;
|-&lt;br /&gt;
|ICR||ICU Interrupt Control Register&lt;br /&gt;
|-&lt;br /&gt;
|FCX||Free Context List Head Pointer Register&lt;br /&gt;
|-&lt;br /&gt;
|LCX||Free Context List Limit Pointer Register&lt;br /&gt;
|-&lt;br /&gt;
|COMPAT||Compatibility Mode Register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Debug Registers &lt;br /&gt;
|-&lt;br /&gt;
|DBGSR&lt;br /&gt;
|Debug Status Register&lt;br /&gt;
|-&lt;br /&gt;
|EXEVT||External Event Register&lt;br /&gt;
|-&lt;br /&gt;
|CREVT||Core Register Event Register&lt;br /&gt;
|-&lt;br /&gt;
|SWEVT||Software Event Register&lt;br /&gt;
|-&lt;br /&gt;
| TR0EVT||Trigger Event 0 Register&lt;br /&gt;
|-&lt;br /&gt;
|TR0ADR||Trigger Address 0 Register&lt;br /&gt;
|-&lt;br /&gt;
|⋮||&lt;br /&gt;
|-&lt;br /&gt;
|TR7EVT&lt;br /&gt;
|Trigger Event 7 Register&lt;br /&gt;
|-&lt;br /&gt;
|TR7ADR||Trigger Address 7 Register&lt;br /&gt;
|-&lt;br /&gt;
|TRIG_ACC|| Trigger Accumulator Register&lt;br /&gt;
|-&lt;br /&gt;
|DMS||Debug Monitor Start Address Register&lt;br /&gt;
|-&lt;br /&gt;
|DCX||Debug Context Save Address Register&lt;br /&gt;
|-&lt;br /&gt;
|TASK_ASI||TASK Address Space Identifier Register&lt;br /&gt;
|-&lt;br /&gt;
|DBGTCR||Debug Trap Control Register&lt;br /&gt;
|-&lt;br /&gt;
|CCTRL&lt;br /&gt;
|Counter Control Register&lt;br /&gt;
|-&lt;br /&gt;
|CCNT||CPU Clock Count Register&lt;br /&gt;
|-&lt;br /&gt;
|ICNT||Instruction Count Register&lt;br /&gt;
|-&lt;br /&gt;
|M1CNT||Multi Count Register 1&lt;br /&gt;
|-&lt;br /&gt;
| M2CNT||Multi Count Register 2&lt;br /&gt;
|-&lt;br /&gt;
|M3CNT||Multi Count Register 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Floating Point Registers&lt;br /&gt;
|-&lt;br /&gt;
|FPU_TRAP_CON||Trap Control Register&lt;br /&gt;
|-&lt;br /&gt;
|FPU_TRAP_PC||Trapping Instruction Program Control Register&lt;br /&gt;
|-&lt;br /&gt;
|FPU_TRAP_OPC||Trapping Instruction Opcode Register&lt;br /&gt;
|-&lt;br /&gt;
|FPU_TRAP_SRC1||Trapping Instruction SRC1 Operand Register&lt;br /&gt;
|-&lt;br /&gt;
|FPU_TRAP_SRC2||Trapping Instruction SRC2 Operand Register&lt;br /&gt;
|-&lt;br /&gt;
|FPU_TRAP_SRC3||Trapping Instruction SRC3 Operand Register &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Instructions Set==&lt;br /&gt;
&lt;br /&gt;
===Pipeline===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Acronym&lt;br /&gt;
!Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load/Store&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Integer Pipeline&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point Unit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Class&lt;br /&gt;
!Pipeline&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic operations involving addresses.&lt;br /&gt;
|ADD.A, ADDIH.A&lt;br /&gt;
|-&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic operations involving integers.&lt;br /&gt;
| ADD, SUB&lt;br /&gt;
|-&lt;br /&gt;
|Cache&lt;br /&gt;
|LS&lt;br /&gt;
|Cache management operations.&lt;br /&gt;
|CACHEA.W, CACHEA.WI&lt;br /&gt;
|-&lt;br /&gt;
|Compare&lt;br /&gt;
|IP&lt;br /&gt;
| Comparison operations.&lt;br /&gt;
|EQ, GE&lt;br /&gt;
|-&lt;br /&gt;
|Control Flow&lt;br /&gt;
|LS&lt;br /&gt;
|Control flow instructions for branching.&lt;br /&gt;
|J, JNE.A&lt;br /&gt;
|-&lt;br /&gt;
|Control Flow&lt;br /&gt;
| IP&lt;br /&gt;
| Control flow operations for branching.&lt;br /&gt;
|JEQ, JLT&lt;br /&gt;
|-&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|IP&lt;br /&gt;
|Special operations using coprocessor 0.&lt;br /&gt;
|CRC32.B, IXMAX&lt;br /&gt;
|-&lt;br /&gt;
|Count&lt;br /&gt;
|IP&lt;br /&gt;
|Counting bits in registers.&lt;br /&gt;
|CLO, CLZ&lt;br /&gt;
|-&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|LS&lt;br /&gt;
|Context Save Areas (CSA) control flow instructions&lt;br /&gt;
|CALL, BISR&lt;br /&gt;
|-&lt;br /&gt;
| Extract&lt;br /&gt;
|IP&lt;br /&gt;
| Bit field extraction and manipulation.&lt;br /&gt;
|DEXTR, INS.T&lt;br /&gt;
|-&lt;br /&gt;
|Floating Point&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating-point instructions&lt;br /&gt;
|ADDF, SUBF &lt;br /&gt;
|-&lt;br /&gt;
|Integer Divide&lt;br /&gt;
|IP&lt;br /&gt;
|Integer division operations.&lt;br /&gt;
|DIV, DVSTEP&lt;br /&gt;
|-&lt;br /&gt;
|Load&lt;br /&gt;
|LS&lt;br /&gt;
|Load data from memory.&lt;br /&gt;
|LD.A, LDUCX&lt;br /&gt;
|-&lt;br /&gt;
|Logical&lt;br /&gt;
|IP&lt;br /&gt;
|Bitwise logical operations.&lt;br /&gt;
|AND, OR&lt;br /&gt;
|-&lt;br /&gt;
|Move&lt;br /&gt;
|LS&lt;br /&gt;
|Move data between registers.&lt;br /&gt;
|MOV.A, MOV.AA&lt;br /&gt;
|-&lt;br /&gt;
|Move&lt;br /&gt;
|IP&lt;br /&gt;
|Move operations with conditions.&lt;br /&gt;
|CMOV, MOV&lt;br /&gt;
|-&lt;br /&gt;
|Multiply&lt;br /&gt;
|IP &lt;br /&gt;
|Multiplication operations.&lt;br /&gt;
|MUL, MULS&lt;br /&gt;
|-&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|IP&lt;br /&gt;
| Multiply and accumulate operations.&lt;br /&gt;
|MADD, MSUB&lt;br /&gt;
|-&lt;br /&gt;
|Shift&lt;br /&gt;
|IP&lt;br /&gt;
|Bit shift operations.&lt;br /&gt;
|SH, SHA&lt;br /&gt;
|-&lt;br /&gt;
|Store&lt;br /&gt;
|LS&lt;br /&gt;
|Store data to memory.&lt;br /&gt;
|ST.A, ST.B&lt;br /&gt;
|-&lt;br /&gt;
|Sync&lt;br /&gt;
|LS&lt;br /&gt;
|Synchronization operations. &lt;br /&gt;
|DSYNC, ISYNC&lt;br /&gt;
|-&lt;br /&gt;
|Trap and Interrupt&lt;br /&gt;
|LS&lt;br /&gt;
|Interrupt and trap operations.&lt;br /&gt;
| DEBUG, TRAPV&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Instruction List===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Pipeline &lt;br /&gt;
!Class&lt;br /&gt;
!Mnemonic&lt;br /&gt;
!Longname&lt;br /&gt;
!ISA Version&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADD.A&lt;br /&gt;
|Add Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADDIH.A&lt;br /&gt;
|Add Immediate High to Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADDSC.A&lt;br /&gt;
|Add Scaled Index to Address&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADDSC.AT&lt;br /&gt;
|Add Bit-Scaled Index to Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|BISR&lt;br /&gt;
|Begin Interrupt Service Routine&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS &lt;br /&gt;
|Cache&lt;br /&gt;
|CACHEA.I&lt;br /&gt;
|Cache Address, Invalidate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Cache&lt;br /&gt;
|CACHEA.W&lt;br /&gt;
|Cache Address, Writeback&lt;br /&gt;
|TC1.3.1&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Cache&lt;br /&gt;
|CACHEA.WI&lt;br /&gt;
|Cache Address, Writeback and Invalidate&lt;br /&gt;
| TC1.3.1&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Cache&lt;br /&gt;
|CACHEI.W&lt;br /&gt;
|Cache Index, Writeback&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| LS&lt;br /&gt;
|Cache&lt;br /&gt;
|CACHEI.I&lt;br /&gt;
|Cache Index, Invalidate&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Cache&lt;br /&gt;
|CACHEI.WI&lt;br /&gt;
&lt;br /&gt;
|Cache Index, Writeback, Invalidate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|CALL&lt;br /&gt;
|Call&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|CALLA&lt;br /&gt;
|Call Absolute&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|CALLI&lt;br /&gt;
|Call Indirect &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|CMPSWAP.W&lt;br /&gt;
|Compare and Swap&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
| LS&lt;br /&gt;
|Trap and Interrupt&lt;br /&gt;
|DEBUG&lt;br /&gt;
|Debug&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Trap and Interrupt&lt;br /&gt;
|DISABLE&lt;br /&gt;
|Disable Interrupts&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Sync&lt;br /&gt;
|DSYNC&lt;br /&gt;
|Synchronize Data&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Trap and Interrupt&lt;br /&gt;
|ENABLE&lt;br /&gt;
|Enable Interrupts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|EQ.A&lt;br /&gt;
|Equal to Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| LS&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|EQZ.A&lt;br /&gt;
|Equal Zero Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|FCALL&lt;br /&gt;
|Fast Call&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
|LS &lt;br /&gt;
| CSA Control Flow&lt;br /&gt;
|FCALLA&lt;br /&gt;
|Fast Call Absolute&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|FCALLI&lt;br /&gt;
|Fast Call Indirect&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|FRET&lt;br /&gt;
|Return from Fast Call&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|GE.A&lt;br /&gt;
|Greater Than or Equal Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Sync&lt;br /&gt;
|ISYNC&lt;br /&gt;
|Synchronize Instructions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Control Flow&lt;br /&gt;
|J&lt;br /&gt;
|Jump Unconditional&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JA&lt;br /&gt;
|Jump Unconditional Absolute&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JEQ.A&lt;br /&gt;
|Jump if Equal Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JI&lt;br /&gt;
|Jump Indirect&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JL &lt;br /&gt;
|Jump and Link&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JLA&lt;br /&gt;
|Jump and Link Absolute&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
| Control Flow&lt;br /&gt;
| JLI&lt;br /&gt;
|Jump and Link Indirect&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JNE.A&lt;br /&gt;
|Jump if Not Equal Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Control Flow &lt;br /&gt;
|JNZ.A&lt;br /&gt;
|Jump if Not Equal to Zero Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JZ.A&lt;br /&gt;
|Jump if Zero Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|LD.A&lt;br /&gt;
|Load Word to Address Register&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|LD.B&lt;br /&gt;
|Load Byte&lt;br /&gt;
|TC1.6*&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|LD.BU&lt;br /&gt;
|Load Byte Unsigned&lt;br /&gt;
|TC1.6*&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|LD.D&lt;br /&gt;
|Load Double-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|LD.DA&lt;br /&gt;
|Load Double-word to Address Register&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|LD.H&lt;br /&gt;
|Load Half-word&lt;br /&gt;
|TC1.6*&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load &lt;br /&gt;
|LD.HU&lt;br /&gt;
|Load Half-word Unsigned&lt;br /&gt;
|TC1.6*&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
| Load&lt;br /&gt;
|LD.Q&lt;br /&gt;
|Load Half-word Signed Fraction&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS &lt;br /&gt;
|Load&lt;br /&gt;
|LD.W&lt;br /&gt;
|Load Word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
| Load&lt;br /&gt;
|LDLCX&lt;br /&gt;
|Load Lower Context&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Store&lt;br /&gt;
|LDMST&lt;br /&gt;
|Load-Modify-Store&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|LDUCX&lt;br /&gt;
|Load Upper Context&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|LEA&lt;br /&gt;
|Load Effective Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|LHA&lt;br /&gt;
|Load High Address&lt;br /&gt;
|TC1.6.2 &lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Control Flow&lt;br /&gt;
|LOOP&lt;br /&gt;
|Loop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Control Flow&lt;br /&gt;
|LOOPU&lt;br /&gt;
|Loop Unconditional&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|LT.A&lt;br /&gt;
|Less Than Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Move&lt;br /&gt;
|MFCR&lt;br /&gt;
|Move From Core Register&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Move&lt;br /&gt;
|MOV.A&lt;br /&gt;
|Move Value to Address Register &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Move&lt;br /&gt;
|MOV.AA&lt;br /&gt;
|Move Address from Address Register&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Move&lt;br /&gt;
|MOV.D&lt;br /&gt;
|Move Address to Data Register&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Move&lt;br /&gt;
|MOVH.A&lt;br /&gt;
|Move High to Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Move&lt;br /&gt;
|MTCR&lt;br /&gt;
|Move To Core Register&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|NE.A&lt;br /&gt;
|Not Equal Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic &lt;br /&gt;
|NEZ.A&lt;br /&gt;
|Not Equal Zero Address&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|NOP&lt;br /&gt;
|No Operation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Trap and Interrupt&lt;br /&gt;
|RESTORE&lt;br /&gt;
|Restore&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
| LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|RET&lt;br /&gt;
|Return from Call&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|RFE&lt;br /&gt;
|Return From Exception&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|RFM&lt;br /&gt;
|Return From Monitor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|RSLCX&lt;br /&gt;
|Restore Lower Context&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Store&lt;br /&gt;
|ST.A&lt;br /&gt;
|Store Word from Address Register&lt;br /&gt;
|TC1.6* &lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Store&lt;br /&gt;
|ST.B&lt;br /&gt;
|Store Byte&lt;br /&gt;
|TC1.6*&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Store&lt;br /&gt;
|ST.D&lt;br /&gt;
|Store Double-word &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Store&lt;br /&gt;
|ST.DA&lt;br /&gt;
|Store Double-word from Address Registers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| LS&lt;br /&gt;
|Store&lt;br /&gt;
|ST.H&lt;br /&gt;
|Store Half-word&lt;br /&gt;
|TC1.6*&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Store&lt;br /&gt;
|ST.Q&lt;br /&gt;
|Store Half-word Signed Fraction&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Store&lt;br /&gt;
|ST.T&lt;br /&gt;
|Store Bit&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Store&lt;br /&gt;
|ST.W&lt;br /&gt;
|Store Word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
| Store&lt;br /&gt;
|STLCX&lt;br /&gt;
|Store Lower Context&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Store &lt;br /&gt;
|STUCX&lt;br /&gt;
|Store Upper Context&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SUB.A&lt;br /&gt;
|Subtract Address &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|SVLCX&lt;br /&gt;
|Save Lower Context&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|SWAP.W&lt;br /&gt;
|Swap with Data Register&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Load&lt;br /&gt;
|SWAPMSK.W&lt;br /&gt;
|Swap under Mask&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|CSA Control Flow&lt;br /&gt;
|SYSCALL&lt;br /&gt;
|System Call&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
|Trap and Interrupt&lt;br /&gt;
|TRAPSV&lt;br /&gt;
|Trap on Sticky Overflow&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| LS&lt;br /&gt;
|Trap and Interrupt&lt;br /&gt;
|TRAPV&lt;br /&gt;
|Trap on Overflow &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LS&lt;br /&gt;
| Trap and Interrupt&lt;br /&gt;
|WAIT&lt;br /&gt;
|Wait&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
| Arithmetic&lt;br /&gt;
|ABS &lt;br /&gt;
|Absolute Value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ABS.B&lt;br /&gt;
|Absolute Value Packed Byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic &lt;br /&gt;
|ABS.H&lt;br /&gt;
|Absolute Value Packed Half-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ABSDIF&lt;br /&gt;
|Absolute Value of Difference &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ABSDIF.B&lt;br /&gt;
|Absolute Value of Difference Packed Byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ABSDIF.H &lt;br /&gt;
|Absolute Value of Difference Packed Half-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ABSDIFS&lt;br /&gt;
&lt;br /&gt;
|Absolute Value of Difference with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ABSDIFS.H&lt;br /&gt;
|Absolute Value of Difference Packed Half-word with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ABSS&lt;br /&gt;
|Absolute Value with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ABSS.H&lt;br /&gt;
|Absolute Value Packed Half-word with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADD&lt;br /&gt;
|Add&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADD.B &lt;br /&gt;
|Add Packed Byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADD.H&lt;br /&gt;
|Add Packed Half-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
| Arithmetic&lt;br /&gt;
|ADDC&lt;br /&gt;
|Add with Carry&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADDI&lt;br /&gt;
|Add Immediate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADDIH&lt;br /&gt;
|Add Immediate High&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADDS&lt;br /&gt;
|Add Signed with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADDS.H&lt;br /&gt;
&lt;br /&gt;
|Add Signed Packed Half-word with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADDS.HU&lt;br /&gt;
|Add Unsigned Packed Half-word with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
| ADDS.U&lt;br /&gt;
|Add Unsigned with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Arithmetic&lt;br /&gt;
|ADDX&lt;br /&gt;
|Add Extended&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical &lt;br /&gt;
|AND&lt;br /&gt;
|Bitwise AND&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|AND.AND.T&lt;br /&gt;
|Accumulating Bit Logical AND-AND&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical &lt;br /&gt;
|AND.ANDN.T&lt;br /&gt;
|Accumulating Bit Logical AND-AND-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|AND.NOR.T&lt;br /&gt;
|Accumulating Bit Logical AND-NOR &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|AND.OR.T&lt;br /&gt;
|Accumulating Bit Logical AND-OR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Logical&lt;br /&gt;
|AND.EQ&lt;br /&gt;
|Equal Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|AND.GE&lt;br /&gt;
|Greater Than or Equal Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|AND.GE.U&lt;br /&gt;
|Greater Than or Equal Accumulating Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|AND.LT&lt;br /&gt;
|Less Than Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
| AND.LT.U&lt;br /&gt;
|Less Than Accumulating Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|AND.NE&lt;br /&gt;
|Not Equal Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|AND.T&lt;br /&gt;
|Bit Logical AND&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|ANDN&lt;br /&gt;
|Bitwise AND-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|ANDN.T&lt;br /&gt;
| Bit Logical AND-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|BMERGE&lt;br /&gt;
|Bit Merge&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|BSPLIT&lt;br /&gt;
|Bit Split&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Arithmetic&lt;br /&gt;
|CADD&lt;br /&gt;
|Conditional Add&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|CADDN&lt;br /&gt;
|Conditional Add-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Count&lt;br /&gt;
|CLO&lt;br /&gt;
|Count Leading Ones&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Count&lt;br /&gt;
|CLO.H&lt;br /&gt;
|Count Leading Ones in Packed Half-words&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
| Count&lt;br /&gt;
|CLS&lt;br /&gt;
|Count Leading Signs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Count&lt;br /&gt;
|CLS.H&lt;br /&gt;
|Count Leading Signs in Packed Half-words&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Count&lt;br /&gt;
|CLZ&lt;br /&gt;
|Count Leading Zeros&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Count&lt;br /&gt;
|CLZ.H&lt;br /&gt;
|Count Leading Zeros in Packed Half-words&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Move&lt;br /&gt;
|CMOV (16-bit)&lt;br /&gt;
|Conditional Move (16-bit)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Move&lt;br /&gt;
|CMOVN (16-bit)&lt;br /&gt;
|Conditional Move-Not (16-bit)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
| CRC32.B&lt;br /&gt;
|CRC32 Byte&lt;br /&gt;
|TC1.6.2&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|CRC32B.W {{rev|CRC32|TC1.6}}&lt;br /&gt;
|CRC32 Word Big-Endian&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|CRC32L.W&lt;br /&gt;
|CRC32 Word Little-Endian&lt;br /&gt;
|TC1.6.2&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|CRCN&lt;br /&gt;
|User-Defined CRC&lt;br /&gt;
|TC1.6.2&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
| Arithmetic&lt;br /&gt;
|CSUB&lt;br /&gt;
|Conditional Subtract&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|CSUBN&lt;br /&gt;
|Conditional Subtract-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Extract&lt;br /&gt;
|DEXTR&lt;br /&gt;
|Extract from Double Register&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Integer Divide&lt;br /&gt;
|DVADJ&lt;br /&gt;
|Divide-Adjust&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Integer Divide&lt;br /&gt;
|DIV&lt;br /&gt;
|Divide &lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Integer Divide&lt;br /&gt;
|DIV.U&lt;br /&gt;
|Divide Unsigned&lt;br /&gt;
|TC1.6&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Integer Divide&lt;br /&gt;
|DVINIT&lt;br /&gt;
|Divide-Initialization Word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
| Integer Divide&lt;br /&gt;
|DVINIT.U&lt;br /&gt;
|Divide-Initialization Word Unsigned&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Integer Divide&lt;br /&gt;
| DVINIT.B&lt;br /&gt;
|Divide-Initialization Byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Integer Divide&lt;br /&gt;
|DVINIT.BU&lt;br /&gt;
|Divide-Initialization Byte Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Integer Divide&lt;br /&gt;
|DVINIT.H&lt;br /&gt;
|Divide-Initialization Half-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Integer Divide&lt;br /&gt;
|DVINIT.HU&lt;br /&gt;
|Divide-Initialization Half-word Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Integer Divide &lt;br /&gt;
|DVSTEP &lt;br /&gt;
|Divide-Step&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Integer Divide&lt;br /&gt;
|DVSTEP.U&lt;br /&gt;
|Divide-Step Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|EQ&lt;br /&gt;
|Equal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|EQ.B&lt;br /&gt;
|Equal Packed Byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|EQ.H&lt;br /&gt;
|Equal Packed Half-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Compare&lt;br /&gt;
|EQ.W &lt;br /&gt;
|Equal Packed Word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|EQANY.B&lt;br /&gt;
|Equal Any Byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|EQANY.H &lt;br /&gt;
|Equal Any Half-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Extract&lt;br /&gt;
|EXTR&lt;br /&gt;
|Extract Bit Field&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Extract&lt;br /&gt;
|EXTR.U&lt;br /&gt;
&lt;br /&gt;
|Extract Bit Field Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|GE&lt;br /&gt;
|Greater Than or Equal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Compare &lt;br /&gt;
|GE.U&lt;br /&gt;
|Greater Than or Equal Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Extract&lt;br /&gt;
|IMASK&lt;br /&gt;
|Insert Mask&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Extract&lt;br /&gt;
|INS.T&lt;br /&gt;
|Insert Bit&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Extract&lt;br /&gt;
|INSN.T&lt;br /&gt;
|Insert Bit-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
| Extract&lt;br /&gt;
|INSERT &lt;br /&gt;
|Insert Bit Field&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|IXMAX&lt;br /&gt;
|Find Maximum Index &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|IXMAX.U&lt;br /&gt;
|Find Maximum Index (unsigned)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|IXMIN&lt;br /&gt;
|Find Minimum Index&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|IXMIN.U&lt;br /&gt;
|Find Minimum Index (unsigned)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JEQ&lt;br /&gt;
|Jump if Equal&lt;br /&gt;
|TC1.6*&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JGE&lt;br /&gt;
|Jump if Greater Than or Equal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JGE.U&lt;br /&gt;
|Jump if Greater Than or Equal Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JGEZ (16-bit)&lt;br /&gt;
|Jump if Greater Than or Equal to Zero (16-bit)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JGTZ (16-bit)&lt;br /&gt;
|Jump if Greater Than Zero (16-bit)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JLEZ (16-bit)&lt;br /&gt;
|Jump if Less Than or Equal to Zero (16-bit)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JLT&lt;br /&gt;
|Jump if Less Than&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JLT.U&lt;br /&gt;
|Jump if Less Than Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JLTZ (16-bit)&lt;br /&gt;
|Jump if Less Than Zero (16-bit)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JNE&lt;br /&gt;
| Jump if Not Equal&lt;br /&gt;
|TC1.6*&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JNED&lt;br /&gt;
|Jump if Not Equal and Decrement&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JNEI &lt;br /&gt;
|Jump if Not Equal and Increment&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JNZ (16-bit)&lt;br /&gt;
| Jump if Not Equal to Zero (16-bit) &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JNZ.T&lt;br /&gt;
|Jump if Not Equal to Zero Bit &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Control Flow&lt;br /&gt;
|JZ (16-bit)&lt;br /&gt;
| Jump if Zero (16-bit)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Control Flow &lt;br /&gt;
|JZ.T&lt;br /&gt;
|Jump if Zero Bit&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare &lt;br /&gt;
|LT&lt;br /&gt;
|Less Than&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|LT.U&lt;br /&gt;
|Less Than Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|LT.B&lt;br /&gt;
&lt;br /&gt;
|Less Than Packed Byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|LT.BU&lt;br /&gt;
|Less Than Packed Byte Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare &lt;br /&gt;
|LT.H&lt;br /&gt;
|Less Than Packed Half-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Compare&lt;br /&gt;
|LT.HU&lt;br /&gt;
|Less Than Packed Half-word Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|LT.W&lt;br /&gt;
|Less Than Packed Word &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|LT.WU&lt;br /&gt;
| Less Than Packed Word Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Multiply Accumulate &lt;br /&gt;
|MADD&lt;br /&gt;
|Multiply-Add&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDS&lt;br /&gt;
|Multiply-Add, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADD.H&lt;br /&gt;
|Packed Multiply-Add Q Format&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDS.H&lt;br /&gt;
|Packed Multiply-Add Q Format, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate &lt;br /&gt;
|MADD.Q&lt;br /&gt;
|Multiply-Add Q Format&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDS.Q&lt;br /&gt;
|Multiply-Add Q Format, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADD.U&lt;br /&gt;
|Multiply-Add Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Multiply Accumulate &lt;br /&gt;
|MADDS.U &lt;br /&gt;
|Multiply-Add Unsigned, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate &lt;br /&gt;
|MADDM.H&lt;br /&gt;
|Packed Multiply-Add Q Format Multi-precision&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDMS.H&lt;br /&gt;
|Packed Multiply-Add Q Format Multi-precision, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDR.H&lt;br /&gt;
|Packed Multiply-Add Q Format with Rounding&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDRS.H&lt;br /&gt;
|Packed Multiply-Add Q Format with Rounding, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDR.Q&lt;br /&gt;
|Multiply-Add Q Format with Rounding&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDRS.Q&lt;br /&gt;
|Multiply-Add Q Format with Rounding, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
| MADDSU.H&lt;br /&gt;
|Packed Multiply-Add/Subtract Q Format&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDSUS.H&lt;br /&gt;
|Packed Multiply-Add/Subtract Q Format Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDSUM.H&lt;br /&gt;
|Packed Multiply-Add/Subtract Q Format Multi-precision&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDSUMS.H&lt;br /&gt;
|Packed Multiply-Add/Subtract Q Format Multi-precision Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDSUR.H&lt;br /&gt;
|Packed Multiply-Add/Subtract Q Format with Rounding&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MADDSURS.H&lt;br /&gt;
|Packed Multiply-Add/Subtract Q Format with Rounding Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
| Arithmetic&lt;br /&gt;
|MAX&lt;br /&gt;
|Maximum Value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|MAX.U &lt;br /&gt;
|Maximum Value Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|MAX.B&lt;br /&gt;
|Maximum Value Packed Byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|MAX.BU&lt;br /&gt;
|Maximum Value Packed Byte Unsigned &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|MAX.H&lt;br /&gt;
|Maximum Value Packed Half-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|MAX.HU&lt;br /&gt;
|Maximum Value Packed Half-word Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|MIN&lt;br /&gt;
|Minimum Value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
| MIN.U&lt;br /&gt;
|Minimum Value Unsigned &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|MIN.B&lt;br /&gt;
|Minimum Value Packed Byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|MIN.BU&lt;br /&gt;
|Minimum Value Packed Byte Unsigned &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|MIN.H&lt;br /&gt;
|Minimum Value Packed Half-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|MIN.HU&lt;br /&gt;
|Minimum Value Packed Half-word Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Move&lt;br /&gt;
|MOV&lt;br /&gt;
|Move&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Move&lt;br /&gt;
|MOV.U&lt;br /&gt;
|Move Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Move&lt;br /&gt;
|MOVH&lt;br /&gt;
|Move High&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUB&lt;br /&gt;
|Multiply-Subtract&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBS&lt;br /&gt;
|Multiply-Subtract, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUB.H&lt;br /&gt;
|Packed Multiply-Subtract Q Format&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBS.H&lt;br /&gt;
|Packed Multiply-Subtract Q Format, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUB.Q&lt;br /&gt;
|Multiply-Subtract Q Format&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBS.Q&lt;br /&gt;
|Multiply-Subtract Q Format, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUB.U&lt;br /&gt;
|Multiply-Subtract Unsigned &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBS.U &lt;br /&gt;
|Multiply-Subtract Unsigned, Saturated &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBAD.H&lt;br /&gt;
|Packed Multiply-Subtract/Add Q Format&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
| Multiply Accumulate&lt;br /&gt;
|MSUBADS.H&lt;br /&gt;
|Packed Multiply-Subtract/Add Q Format, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBADM.H&lt;br /&gt;
|Packed Multiply-Subtract/Add Q Format-Multi-precision&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBADMS.H&lt;br /&gt;
|Packed Multiply-Subtract/Add Q Format-Multi-precision, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBADR.H&lt;br /&gt;
|Packed Multiply-Subtract/Add Q Format with Rounding&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate &lt;br /&gt;
|MSUBADRS.H&lt;br /&gt;
|Packed Multiply-Subtract/Add Q Format with Rounding, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBM.H&lt;br /&gt;
|Packed Multiply-Subtract Q Format-Multi-precision&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBMS.H&lt;br /&gt;
|Packed Multiply-Subtract Q Format-Multi-precision, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBR.H&lt;br /&gt;
|Packed Multiply-Subtract Q Format with Rounding&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBRS.H&lt;br /&gt;
|Packed Multiply-Subtract Q Format with Rounding, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBR.Q&lt;br /&gt;
|Multiply-Subtract Q Format with Rounding&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply Accumulate&lt;br /&gt;
|MSUBRS.Q&lt;br /&gt;
|Multiply-Subtract Q Format with Rounding, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply&lt;br /&gt;
|MUL&lt;br /&gt;
|Multiply&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply&lt;br /&gt;
|MULS&lt;br /&gt;
|Multiply, Saturated &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Multiply&lt;br /&gt;
|MUL.H&lt;br /&gt;
|Packed Multiply Q Format&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
| Multiply&lt;br /&gt;
|MUL.Q &lt;br /&gt;
|Multiply Q Format&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply&lt;br /&gt;
|MUL.U&lt;br /&gt;
|Multiply Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply&lt;br /&gt;
|MULS.U&lt;br /&gt;
|Multiply Unsigned, Saturated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply&lt;br /&gt;
|MULM.H&lt;br /&gt;
|Packed Multiply Q Format-Multi-precision&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply&lt;br /&gt;
|MULR.H&lt;br /&gt;
|Packed Multiply Q Format with Rounding&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Multiply&lt;br /&gt;
|MULR.Q&lt;br /&gt;
|Multiply Q Format with Rounding&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Logical&lt;br /&gt;
|NAND&lt;br /&gt;
|Bitwise NAND&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IP&lt;br /&gt;
|Logical&lt;br /&gt;
|NAND.T&lt;br /&gt;
|Bit Logical NAND&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Compare&lt;br /&gt;
|NE&lt;br /&gt;
|Not Equal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|NOR&lt;br /&gt;
|Bitwise NOR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|NOR.T &lt;br /&gt;
|Bit Logical NOR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|NOT (16-bit)&lt;br /&gt;
|Bitwise Complement NOT (16-bit)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|OR&lt;br /&gt;
|Bitwise OR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|OR.AND.T&lt;br /&gt;
|Accumulating Bit Logical OR-AND&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|OR.ANDN.T&lt;br /&gt;
|Accumulating Bit Logical OR-AND-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|OR.NOR.T&lt;br /&gt;
|Accumulating Bit Logical OR-NOR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|OR.OR.T&lt;br /&gt;
|Accumulating Bit Logical OR-OR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|OR.EQ&lt;br /&gt;
|Equal Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|OR.GE&lt;br /&gt;
|Greater Than or Equal Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|OR.GE.U&lt;br /&gt;
|Greater Than or Equal Accumulating Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|OR.LT&lt;br /&gt;
|Less Than Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|OR.LT.U &lt;br /&gt;
|Less Than Accumulating Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical &lt;br /&gt;
|OR.NE&lt;br /&gt;
|Not Equal Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|OR.T&lt;br /&gt;
|Bit Logical OR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
| Logical&lt;br /&gt;
|ORN&lt;br /&gt;
|Bitwise OR-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|ORN.T&lt;br /&gt;
|Bit Logical OR-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
| PACK&lt;br /&gt;
|Pack&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|PARITY&lt;br /&gt;
|Parity&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Count&lt;br /&gt;
|POPCNT.W&lt;br /&gt;
|Population Count Word&lt;br /&gt;
|TC1.6.2&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Trap and Interrupt&lt;br /&gt;
|RSTV&lt;br /&gt;
|Reset Overflow Bits&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|RSUB&lt;br /&gt;
|Reverse-Subtract &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|RSUBS&lt;br /&gt;
|Reverse-Subtract with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|RSUBS.U&lt;br /&gt;
|Reverse-Subtract Unsigned with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SAT.B&lt;br /&gt;
|Saturate Byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SAT.BU&lt;br /&gt;
|Saturate Byte Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SAT.H&lt;br /&gt;
|Saturate Half-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SAT.HU&lt;br /&gt;
|Saturate Half-word Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SEL&lt;br /&gt;
|Select&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SELN&lt;br /&gt;
|Select-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH&lt;br /&gt;
|Shift&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.EQ&lt;br /&gt;
|Shift Equal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.GE&lt;br /&gt;
|Shift Greater Than or Equal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.GE.U&lt;br /&gt;
| Shift Greater Than or Equal Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Shift &lt;br /&gt;
|SH.H&lt;br /&gt;
|Shift Packed Half-words&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.LT&lt;br /&gt;
|Shift Less Than&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.LT.U&lt;br /&gt;
|Shift Less Than Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
| SH.NE&lt;br /&gt;
|Shift Not Equal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.AND.T&lt;br /&gt;
|Accumulating Shift-AND&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.ANDN.T&lt;br /&gt;
|Accumulating Shift-AND-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.NAND.T&lt;br /&gt;
|Accumulating Shift-NAND &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Shift&lt;br /&gt;
|SH.NOR.T&lt;br /&gt;
|Accumulating Shift-NOR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.OR.T&lt;br /&gt;
|Accumulating Shift-OR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.ORN.T&lt;br /&gt;
|Accumulating Shift-OR-Not&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.XNOR.T&lt;br /&gt;
|Accumulating Shift-XNOR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SH.XOR.T&lt;br /&gt;
|Accumulating Shift-XOR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SHA&lt;br /&gt;
|Arithmetic Shift &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SHA.H&lt;br /&gt;
|Arithmetic Shift Packed Half-words &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Shift&lt;br /&gt;
|SHAS&lt;br /&gt;
|Arithmetic Shift with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP &lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SHUFFLE&lt;br /&gt;
|Byte Shuffle&lt;br /&gt;
|TC1.6.2&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SUB&lt;br /&gt;
|Subtract&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SUB.B&lt;br /&gt;
|Subtract Packed Byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SUB.H&lt;br /&gt;
|Subtract Packed Half-word&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SUBC&lt;br /&gt;
| Subtract With Carry&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SUBS&lt;br /&gt;
|Subtract Signed with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SUBS.U&lt;br /&gt;
|Subtract Unsigned with Saturation &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SUBS.H&lt;br /&gt;
| Subtract Packed Half-word with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SUBS.HU&lt;br /&gt;
|Subtract Packed Half-word Unsigned with Saturation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Arithmetic&lt;br /&gt;
|SUBX&lt;br /&gt;
|Subtract Extended&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Coprocessor 0&lt;br /&gt;
|UNPACK&lt;br /&gt;
|Unpack Floating Point&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|XNOR&lt;br /&gt;
|Bitwise XNOR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|XNOR.T &lt;br /&gt;
|Bit Logical XNOR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|XOR&lt;br /&gt;
|Bitwise XOR &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|XOR.EQ&lt;br /&gt;
| Equal Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|XOR.GE&lt;br /&gt;
|Greater Than or Equal Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical &lt;br /&gt;
|XOR.GE.U&lt;br /&gt;
|Greater Than or Equal Accumulating Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|XOR.LT&lt;br /&gt;
|Less Than Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|XOR.LT.U&lt;br /&gt;
|Less Than Accumulating Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|XOR.NE&lt;br /&gt;
|Not Equal Accumulating&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|IP&lt;br /&gt;
|Logical&lt;br /&gt;
|XOR.T&lt;br /&gt;
|Bit Logical XOR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|ADD.F&lt;br /&gt;
|Add Float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|CMP.F&lt;br /&gt;
|Compare Float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|DIV.F&lt;br /&gt;
|Divide Float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|FTOI&lt;br /&gt;
|Float to Integer&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|FTOIZ&lt;br /&gt;
|Float to Integer, Round towards Zero&lt;br /&gt;
|TC1.3.1&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|FTOQ31&lt;br /&gt;
|Float to Fraction&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|FTOQ31Z &lt;br /&gt;
|Float to Fraction, Round towards Zero&lt;br /&gt;
| TC1.3.1 &lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|FTOU&lt;br /&gt;
|Float to Unsigned&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|FTOUZ&lt;br /&gt;
|Float to Unsigned, Round towards Zero&lt;br /&gt;
|TC1.3.1&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|FTOHP&lt;br /&gt;
|Single Precision to Half Precision&lt;br /&gt;
|TC1.6.2&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|HPTOF &lt;br /&gt;
|Half Precision to Single Precision&lt;br /&gt;
| TC1.6.2 &lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|ITOF&lt;br /&gt;
|Integer to Float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|MADD.F&lt;br /&gt;
|Multiply Add Float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
| MSUB.F&lt;br /&gt;
|Multiply Subtract Float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point &lt;br /&gt;
|MUL.F&lt;br /&gt;
|Multiply Float &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|Q31TOF&lt;br /&gt;
|Fraction to Floating-point&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|QSEED.F&lt;br /&gt;
|Inverse Square Root Seed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|SUB.F&lt;br /&gt;
|Subtract Float&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|UPDFL&lt;br /&gt;
|Update Flags&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FPU&lt;br /&gt;
|Floating Point&lt;br /&gt;
|UTOF&lt;br /&gt;
|Unsigned to Floating-point&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison with Other Microcontroller Architectures ==&lt;br /&gt;
In the automotive and industrial MCU landscape, Infineon’s TriCore™/AURIX™ architecture stands alongside other major architectures such as ARM Cortex-based microcontrollers, Power Architecture (PowerPC) based controllers, and more recently RISC-V based designs. &#039;&#039;&#039;Architecturally&#039;&#039;&#039;, TriCore’s™ niche is its unified MCU/DSP design and native multicore safety support. In contrast, many competitors historically used separate cores or accelerators for DSP tasks (for example, ARM’s Cortex-M4/M7 cores include a DSP instruction set, but earlier automotive designs often combined a CPU with a separate DSP or relied on fixed-function accelerators). TriCore™ was one of the first to meld DSP capabilities into a general-purpose controller core&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;, giving it an edge in signal-processing-heavy automotive tasks like ignition control or motor control. Moreover, AURIX™ introduced multi-core lockstep and distributed memory protection at a time when many automotive MCU competitors were still single-core or dual-core. For instance, Texas Instruments’ &#039;&#039;&#039;Hercules&#039;&#039;&#039; safety microcontrollers use dual ARM Cortex-R4 cores in lockstep to achieve similar fault-detection as AURIX’s™ lockstep pairs, and NXP (Freescale)’s older PowerPC-based MCUs implemented lockstep on a single core pair. AURIX’s™ approach with up to three lockstep pairs (in a 2oo3 or 1oo2D configuration) on one chip was relatively unique, enabling higher ASIL-D performance within one device&amp;lt;ref name=&amp;quot;ref19519075552&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;. In terms of &#039;&#039;&#039;raw performance&#039;&#039;&#039;, TriCore™ cores at 300 MHz deliver comparable DMIPS/MHz to high-end ARM Cortex-R and Cortex-M cores. A 300 MHz TriCore™ 1.6.2 is roughly in the same class as a 300 MHz ARM Cortex-R5 or a 350 MHz Cortex-M7 in terms of Dhrystone performance, although specific benchmarks vary&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1077685626&amp;quot;&amp;gt;Aurix TC3xx microcontroller - how to access shared variables from ... https://www.reddit.com/r/embedded/comments/10v8vtz/aurix_tc3xx_microcontroller_how_to_access_shared/&amp;lt;/ref&amp;gt;. The AURIX TC3xx’s hexa-core design can outpace many dual- or triple-core competitors on aggregate throughput, though ARM-based families have also scaled up core counts in some SoC-like designs.&lt;br /&gt;
&lt;br /&gt;
When comparing &#039;&#039;&#039;security features&#039;&#039;&#039;, Infineon’s decision to include a high-grade HSM on AURIX™ gave it a head start in automotive cybersecurity. ARM’s TrustZone technology (available on some Cortex-M35/M33 and higher cores) provides a form of security partitioning, but it’s not directly equivalent to a full HSM with its own CPU and crypto engine. Many automotive MCU vendors (like NXP and ST) have since incorporated dedicated security modules or accelerators in their ARM-based designs, but AURIX’s™ HSM (with EVITA High compliance) remains a standout for handling features like onboard encryption, secure boot, and even V2X cryptography without external chips&amp;lt;ref name=&amp;quot;ref20223578062&amp;quot;&amp;gt;UDE Debug, Trace and Test solutions for Infineon TriCore™ AURIX™ TC32, TC33, TC35, TC36, TC37, TC38, TC39, TC3x Microcontrollers       https://www.pls-mc.com/products/infineon-tricore-aurix-tc32-tc33-tc35-tc36-tc37-tc38-tc39-microcontrollers/&amp;lt;/ref&amp;gt;. On the other hand, the broader ecosystem for &#039;&#039;&#039;software and tools&#039;&#039;&#039; tends to favor ARM. ARM Cortex-based microcontrollers benefit from widespread compiler support, development tools, and a large developer community. Infineon’s TriCore™, being proprietary, has a more specialized toolchain (with commercial compilers from Tasking, HighTec, etc., and a smaller community), which can mean a higher barrier to entry for new developers. However, automotive Tier-1 suppliers have invested in TriCore™ toolchains for years, and Infineon provides AUTOSAR libraries and MCAL drivers that ease development in the automotive context&amp;lt;ref name=&amp;quot;ref496771205&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In terms of &#039;&#039;&#039;industry adoption&#039;&#039;&#039;, TriCore™/AURIX™ has become one of the dominant architectures in European automotive electronics, often chosen for its safety and performance in powertrain and safety domains, while ARM-based microcontrollers have gained popularity especially in body electronics and new ECU designs due to their flexibility and the ARM ecosystem. Historically, high-end automotive MCUs were based on PowerPC cores (like NXP/Freescale MPC5xx/MPC55xx) or proprietary cores like Renesas V850/RH850. Infineon’s AURIX™ emerged as a strong competitor to these, offering a new option with multicore and DSP advantages. By the mid-2010s, ARM made inroads into this space (TI’s TMS570/Hercules with Cortex-R4, and later NXP and Renesas adopting ARM Cortex-R/M for some families), but many automotive OEMs continued to trust established platforms. A 2013 analysis noted that PowerPC was dominant, with Infineon’s TriCore™ and Renesas’s V850 as big competitors, and ARM as a “latest entrant” in the automotive MCU arena. Since then, ARM cores have seen increasing use in automotive for domains like gateways and ADAS (e.g., NVIDIA and Mobileye use ARM in their SoCs, and some microcontroller families like Cypress Traveo and NXP S32K are ARM-based), but AURIX™ maintains a significant share in high safety integrity applications.&amp;lt;ref name=&amp;quot;ref196337548&amp;quot;&amp;gt;Automotive world: PowerPC vs ARM vs V850 vs SH - Page 1 https://www.eevblog.com/forum/microcontrollers/automotive-world-powerpc-vs-arm-vs-v850-vs-sh/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking forward, the rise of &#039;&#039;&#039;RISC-V&#039;&#039;&#039; open architecture presents both a competition and an opportunity. Infineon itself has announced that it will introduce a new AURIX™ family branch that includes RISC-V cores alongside TriCore™&amp;lt;ref name=&amp;quot;ref13290563422&amp;quot;&amp;gt;Infineon brings RISC-V to the automotive industry and is first to announce an automotive RISC-V microcontroller family – RISC-V International https://riscv.org/ecosystem-news/2025/03/infineon-brings-risc-v-to-the-automotive-industry-and-is-first-to-announce-an-automotive-risc-v-microcontroller-family/&amp;lt;/ref&amp;gt;. This reflects a trend toward heterogeneous architectures: pairing a proven safety-critical core (TriCore™) with supplementary cores that can be optimized for tasks like AI acceleration or network management. RISC-V’s open ecosystem could bring more developers and third-party IP into the fold, potentially addressing the ecosystem gap between TriCore™ and ARM. Other companies are also exploring RISC-V for automotive; for example, Western Digital and GreenWaves have automotive-oriented RISC-V processors, and some start-ups are aiming for ASIL-rated RISC-V cores. However, as of the TC3xx generation, AURIX’s™ competition remains largely the ARM Cortex-R5-based MCUs (like Renesas RH850/U2x series which moved to ARM cores, or NXP’s S32S which uses Cortex-R52) and the last of the line PowerPC-based units. In &#039;&#039;&#039;summary&#039;&#039;&#039;, AURIX’s™ TriCore™ architecture distinguishes itself with a laser focus on automotive needs – blending real-time control, DSP, built-in redundancy, and security in one package – whereas ARM architectures offer a broad general-purpose approach with wide support, and RISC-V is emerging as a flexible, open alternative. Each has its strengths: AURIX™ for integrated safety/security, ARM for its ubiquity and IP ecosystem, and RISC-V for customizability. Infineon’s strategy indicates a recognition that future architectures may combine these strengths to meet the ever-growing demands of software-defined vehicles&amp;lt;ref name=&amp;quot;ref13290563422&amp;quot; /&amp;gt;. &lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC2xx]]&lt;br /&gt;
*[[Infineon AURIX TC3xx]]&lt;br /&gt;
*[[Infineon AURIX TC4x]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*[https://www.infineon.com/dgdl/TC1_3_ArchOverview_1.pdf?fileId=db3a304312bae05f0112be86204c0111 TriCore™ 1.3 Architecture Overview Handbook]&lt;br /&gt;
*[https://www.infineon.com/dgdl/tc_v131_corearchitecture_v__138.pdf?fileId=db3a304412b407950112b409c4500359 TriCore® TC1.3 &amp;amp; TC1.3.1 User Manual Volume 1 - Core Architecture]&lt;br /&gt;
*[https://www.infineon.com/dgdl/Infineon-TC2xx_Architecture_vol1-UM-v01_00-EN.pdf?fileId=5546d46269bda8df0169ca1bea3624a5 TriCore® TC1.6P &amp;amp; TC1.6E User Manual Volume 1 - Core Architecture]&lt;br /&gt;
*[https://www.infineon.com/dgdl/Infineon-TC2xx_Architecture_vol2-UM-v01_00-EN.pdf?fileId=5546d46269bda8df0169ca1bf33124a8 TriCore® TC1.6P &amp;amp; TC1.6E User Manual Volume 2 - Instruction Set]&lt;br /&gt;
*[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd TriCore™ TC1.6.2 User Manual Volume 1 - Core Architecture]&lt;br /&gt;
*[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 TriCore™ TC1.6.2 User Manual Volume 2 - Instruction Set]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x_Parallel_Processing_Unit_(PPU)&amp;diff=2693</id>
		<title>Infineon AURIX TC4x Parallel Processing Unit (PPU)</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x_Parallel_Processing_Unit_(PPU)&amp;diff=2693"/>
		<updated>2025-04-08T08:11:47Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Parallel Processing Unit (PPU)&#039;&#039;&#039; in [[Infineon AURIX TC4x|Infineon’s AURIX™ TC4x]] microcontroller family is a specialized co-processor designed to accelerate highly parallel computations for automotive and industrial applications. It complements the TC4x’s [[TriCore Instruction Set Architecture|TriCore™ 1.8]] CPUs by offloading computationally intensive tasks such as digital signal processing and neural network inference, enabling artificial intelligence (AI) capabilities up to the highest automotive safety levels (ASIL-D). The PPU features a vector processing architecture and dedicated hardware accelerators, allowing it to execute math-intensive algorithms in parallel and in real time, which is critical for advanced driver assistance systems (ADAS), electric powertrain control, and other safety-critical functions.&amp;lt;ref name=&amp;quot;ref1001512215&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC4x - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc4x/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Infineon’s AURIX™ TC4x is the third-generation family of 32-bit automotive microcontrollers, built for safe and secure real-time processing in domains such as powertrain, chassis, advanced safety, and ADAS. The TC4x family integrates up to six TriCore™ v1.8 CPU cores (with lockstep redundancy for safety) and a suite of specialized accelerators to meet the increasing performance demands of modern vehicles. Among these new accelerators is the &#039;&#039;&#039;Parallel Processing Unit (PPU)&#039;&#039;&#039; – a new programmable vector co-processor introduced in the TC4x family to boost signal processing and AI performance. The PPU’s role is to handle tasks that involve large amounts of numeric computation or data parallelism, thereby augmenting the microcontroller’s throughput while maintaining deterministic real-time behavior needed for automotive applications.&amp;lt;ref name=&amp;quot;ref1047817100&amp;quot;&amp;gt;Lauterbach supports Infineon’s Next-Generation AURIX™ TC4x https://www.lauterbach.com/press-releases/lauterbach-announces-debug-and-trace-support-for-infineons-next-generation-aurix-microcontrollers&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1001512215&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Designed as a &#039;&#039;&#039;heterogeneous multi-core architecture&#039;&#039;&#039;, the AURIX™ TC4x combines conventional scalar processing cores with the PPU vector core and other accelerators. This approach allows the system to offload specialized workloads to the appropriate processing unit. For example, time-critical control tasks and general application code run on the TriCore CPUs, while the PPU is invoked for high-volume data processing like sensor data filtering, complex control algorithms, or neural network evaluation. By relieving the main CPUs of these heavy workloads, the PPU helps the TC4x family achieve significantly higher performance (up to 78× in certain benchmarks compared to a single TriCore 1.8 core) without compromising the strict safety and real-time requirements of automotive systems.&amp;lt;ref name=&amp;quot;ref1239294738&amp;quot;&amp;gt;Software Support for Parallel ADAS Applications on Pre-development Version of the Aurix TC4, Master Thesis, Bc. Lukáš Bielesch https://dspace.cvut.cz/bitstream/handle/10467/101423/F3-DP-2022-Bielesch-Lukas-bieleluk_thesis_final.pdf?sequence=-1&amp;amp;isAllowed=y&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1315913395&amp;quot;&amp;gt;empower® is the addin for PowerPoint presentations https://www.infineon.com/dgdl/Infineon_AURIX_TC4x.pdf?fileId=8ac78c8b7e4b5364017e4e1a407c0001&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design and Instruction Set ===&lt;br /&gt;
&lt;br /&gt;
The PPU is implemented as a &#039;&#039;&#039;vector processor&#039;&#039;&#039; based on the Synopsys DesignWare ARC EV71 architecture. It consists of a 32-bit RISC processing core coupled with a wide Single-Instruction Multiple-Data (SIMD) vector unit. The PPU’s vector unit features 512-bit vector registers and executes instructions that operate on multiple data elements in parallel. In essence, a single vector instruction can perform the same operation across an entire array of values (for example, multiplying 16 or more data points at once), which contrasts with the scalar TriCore CPUs that execute one operation on one set of operands at a time. This vectorized design, common in digital signal processors (DSPs), enables significantly higher throughput for algorithms that can be parallelized, such as signal filtering, matrix operations, and image processing.&amp;lt;ref name=&amp;quot;ref1239294738&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;ref504569965&amp;quot;&amp;gt;Synopsys ARC MetaWare Toolkit for Infineon AURIX TC4x https://www.synopsys.com/dw/ipdir.php?ds=sw_metaware-aurix&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1696196978&amp;quot;&amp;gt;#ev #electricvehicles #emobility #electrification #electronics #ai | EV Tech Insider https://www.linkedin.com/posts/evtechinsider_ev-electricvehicles-emobility-activity-7259210423105671168-fP1b&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Memory Model and Parallelism ===&lt;br /&gt;
&lt;br /&gt;
The PPU operates within the microcontroller’s memory space as a peer processor alongside the TriCore CPUs. It is equipped with its own local memory hierarchy (including instruction and data caches or tightly coupled memories) and connects to the shared memory via the on-chip interconnect fabric. A &#039;&#039;&#039;Data Routing Engine (DRE)&#039;&#039;&#039; is included in the TC4x architecture to facilitate efficient data movement between the PPU, main memory, and other peripherals. This helps feed the PPU with data (for example, sensor readings or large data buffers) and retrieve results with minimal CPU intervention. The PPU can also use direct memory access (DMA) to autonomously fetch and store data to shared memory, ensuring that data transfers occur in parallel with computation.&amp;lt;ref name=&amp;quot;ref1239294738&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;ref1001512215&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To support parallel processing without interfering with the real-time tasks on the TriCore cores, the PPU and CPU cores communicate through well-defined mechanisms. Shared memory regions and &#039;&#039;&#039;mailbox registers&#039;&#039;&#039; allow exchange of data and signals between the scalar cores and the PPU. &#039;&#039;&#039;Inter-core interrupts&#039;&#039;&#039; are used for synchronization and job control – for instance, a TriCore core can signal the PPU to start processing a dataset, or the PPU can interrupt a CPU when it has finished a computation task. This architecture enables true parallelism at the system level: while the PPU crunches numbers on a vectorizable task, the main CPUs can continue executing other software tasks. The net effect is a form of coarse-grained parallel processing (different cores executing different tasks concurrently) combined with the fine-grained data parallelism within the PPU itself. The PPU’s vector unit executes SIMD operations across up to 512-bit wide data sets, and its internal design can be configured to handle various data widths (such as 8, 16, or 32-bit elements) in parallel. This flexibility allows tuning for either higher precision or higher parallel count, as needed by the application.&amp;lt;ref name=&amp;quot;ref1239294738&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;ref1466902521&amp;quot;&amp;gt;Synopsys EV7x Vision Processors https://www.synopsys.com/dw/ipdir.php?ds=ev7x-vision-processors&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardware Acceleration and Applications ==&lt;br /&gt;
&lt;br /&gt;
[[File:PPU Applications.jpg|thumb|&#039;&#039;Illustrative range of PPU application domains and tasks. The PPU can handle high-frequency control loops (on the order of microseconds) for power electronics as well as more complex, slower tasks such as sensor fusion and AI-based predictive control. It supports both observer-based control algorithms and neural network–based functions across automotive use cases&#039;&#039; &amp;lt;ref name=&amp;quot;ref623706068&amp;quot; /&amp;gt;]]&lt;br /&gt;
The PPU provides significant hardware acceleration for computations common in automotive and industrial systems. Its vector DSP engine is capable of &#039;&#039;&#039;high-throughput signal processing&#039;&#039;&#039;. In practical terms, the PPU can execute complex math such as fast Fourier transforms, digital filters, matrix multiplications, and trigonometric calculations much faster than the general-purpose TriCore CPUs by leveraging its 512-bit SIMD instructions. This is especially beneficial for applications like radar signal processing or sensor data fusion, where large matrices or arrays of data must be processed under tight time constraints.&amp;lt;ref name=&amp;quot;ref623706068&amp;quot;&amp;gt;New PPU SIMD vector DSP - Infineon Technologies https://www.infineon.com/cms/en/product/promopages/new-ppu-simd-vector-dsp/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1239294738&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;automotive applications&#039;&#039;&#039; of the PPU span a wide range of domains:&lt;br /&gt;
* &#039;&#039;&#039;eMobility and power control:&#039;&#039;&#039; In electric vehicles, the PPU can be used in on-board chargers, DC/DC converters, and traction motor inverters to perform high-bandwidth control algorithms and complex calculations for power conversion efficiency and motor control. For example, field-oriented control of motors involves heavy linear algebra and trigonometric computations that the PPU can accelerate. It also enables advanced battery management system (BMS) functions like state-of-charge (SoC) and state-of-health (SoH) estimation using adaptive algorithms or even neural networks.&amp;lt;ref name=&amp;quot;ref623706068&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Advanced Driver Assistance Systems (ADAS):&#039;&#039;&#039; The PPU supports use cases in radar signal processing, lidar, and sensor fusion for ADAS. It can process raw data from radar sensors using fast DSP operations or run a neural network to identify objects in sensor data, all within the tight latency required for functions like automatic emergency braking or lane-keeping. Its high parallel throughput is advantageous for handling the massive data streams from high-resolution sensors in real time.&amp;lt;ref name=&amp;quot;ref623706068&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Domain and zone controllers:&#039;&#039;&#039; Future vehicle E/E architectures often involve domain controllers (for vehicle dynamics, chassis control, etc.) or zonal controllers that handle multiple functions. The PPU is suited for &#039;&#039;&#039;domain control tasks&#039;&#039;&#039; such as predictive vehicle motion control, complex vehicle dynamics simulations, or coordinating multiple sensor inputs. It enables these controllers to implement sophisticated algorithms (like model-predictive control or AI-based sensor calibration) that require intensive computation, thereby increasing the accuracy and responsiveness of systems like stability control or autonomous driving logic.&amp;lt;ref name=&amp;quot;ref623706068&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Safety and monitoring features:&#039;&#039;&#039; Even tasks like &#039;&#039;&#039;siren sound detection&#039;&#039;&#039; (acoustic pattern recognition for emergency vehicle detection) or other audio signal processing in the vehicle can leverage the PPU’s DSP capability. Similarly, the PPU can assist with cybersecurity or functional safety monitoring algorithms that may use heavy mathematics (for example, cryptographic filtering or redundancy checks) by accelerating those computations in parallel.&amp;lt;ref name=&amp;quot;ref1167709857&amp;quot;&amp;gt;AURIX™ TC4x microcontrollers for embedded AI application development receive safety assessment from Fraunhofer IKS - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2024/INFATV202404-093.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1001512215&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While the AURIX™ TC4x and its PPU are primarily aimed at automotive, many of these capabilities are equally valuable in &#039;&#039;&#039;industrial applications&#039;&#039;&#039;. Industrial control systems (such as robotics controllers, industrial drives, or renewable energy inverters) have similar demands for real-time, high-throughput computations. The PPU’s hardware acceleration of control algorithms and neural network inference can enable smarter factory automation, high-performance motor drives, and safety systems in industrial settings. Furthermore, the compliance of the TC4x platform with automotive safety standards (ISO 26262 ASIL-D) corresponds to SIL 3 capability under IEC 61508 for industrial use, making the PPU-equipped microcontrollers attractive for safety-critical industrial controllers as well.&amp;lt;ref name=&amp;quot;ref1899712745&amp;quot;&amp;gt;AURIX TC4x: Safety Solutions from HighTec - HighTec EDV-Systeme GmbH https://hightec-rt.com/products/aurix-tc4x-safety-solutions&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integration with the TC4x Platform ==&lt;br /&gt;
&lt;br /&gt;
The PPU is tightly integrated into the AURIX™ TC4x system-on-chip alongside the TriCore CPU clusters and other accelerators. It functions as a &#039;&#039;&#039;co-processor&#039;&#039;&#039;, with a level of autonomy in executing its own instruction stream, yet it shares the overall memory map and resources of the microcontroller. The integration is designed such that the PPU can be treated as another compute core in the system, managed by the system software when needed. For example, the TC4x platform includes an AUTOSAR-compatible &#039;&#039;&#039;Complex Device Driver (CDD)&#039;&#039;&#039; for the PPU, which allows automotive software (running on a TriCore) to dispatch tasks to the PPU and manage its operation in a controlled manner. A runtime component often called the &#039;&#039;PPU dispatcher&#039;&#039; is provided to queue and schedule parallel tasks on the PPU, handle the initiation of PPU execution, and retrieve results when finished. This dispatcher abstracts the details of PPU job control from the application, so developers can request computations (like “perform this FFT” or “run this neural network on new data”) and the system will utilize the PPU to complete them asynchronously.&amp;lt;ref name=&amp;quot;ref504569965&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From a hardware perspective, the PPU connects to the microcontroller’s internal buses and interconnects. Shared SRAM memory is accessible to both the TriCore cores and the PPU, enabling bulk data to be passed by reference rather than copied between cores. For instance, a TriCore core can populate a buffer with sensor data in shared memory and then signal the PPU to process it, rather than explicitly feeding each data point. The &#039;&#039;&#039;Data Routing Engine (DRE)&#039;&#039;&#039; further assists in shuttling data between the PPU and other subsystems efficiently. In addition, mutual exclusion and memory protection mechanisms ensure that the PPU’s operations do not interfere with the timing and memory of the main CPUs. Infineon’s architecture implements safeguards so that even though the PPU shares buses and memory, critical real-time tasks on the TriCore (such as an interrupt service routine for safety) can preempt bus access if needed to maintain determinism (this falls under the TC4x’s overall &#039;&#039;freedom-from-interference&#039;&#039; design philosophy for mixed-criticality systems).&amp;lt;ref name=&amp;quot;ref1001512215&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inter-core communication&#039;&#039;&#039; is achieved through interrupts and handshaking flags. The TriCore CPUs can start or stop the PPU, and the PPU can interrupt the main CPUs upon task completion or if it needs attention. Software mailboxes (basically designated memory or register locations) are typically used to post job descriptors or status flags between the cores. This design is similar to a heterogeneous multi-processor system where a host CPU controls an accelerator: the host sets up the data and parameters for the accelerator, triggers it, and later reads back the results. In TC4x, however, all of this happens on a single chip and within a unified development environment, making the use of the PPU relatively seamless for developers familiar with multi-core programming.&amp;lt;ref name=&amp;quot;ref1239294738&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notably, the PPU is &#039;&#039;&#039;independent of the TriCore CPU architecture&#039;&#039;&#039; – it does not execute TriCore instructions and vice versa. Instead, it runs its own code (compiled for the ARC EV71 ISA) from either internal code memory or system memory. Tools like debuggers have been updated to be aware of this extra core. For example, Lauterbach’s TRACE32 debugging tool can simultaneously debug all TriCore CPUs &#039;&#039;and&#039;&#039; the PPU and trace their execution in parallel. This full-system visibility is important when integrating PPU tasks into the application, since developers need to coordinate and verify the interaction between the main application and the parallel routines on the PPU.&amp;lt;ref name=&amp;quot;ref1047817100&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Real-Time and Safety Considerations ==&lt;br /&gt;
&lt;br /&gt;
A critical aspect of the AURIX™ TC4x PPU is that it is designed to meet the stringent &#039;&#039;&#039;real-time and functional safety requirements&#039;&#039;&#039; of automotive systems. In terms of real-time behavior, the PPU’s operations are deterministic and can be analyzed for worst-case execution time, which is essential for ensuring it fits within the timing budgets of safety-critical tasks. The use of hardware acceleration means that tasks that would otherwise take an impractically long time on a CPU (potentially causing deadline misses) can be completed much faster on the PPU, often turning minutes of CPU processing into milliseconds or less. This allows sophisticated algorithms (like high-order filters or deep neural networks) to be used in real-time control loops where previously they would have been too slow. System designers can assign PPU-heavy tasks lower priorities or schedule them in parallel so that the main control loop on a TriCore is never delayed waiting for the PPU; instead, results are ready when needed. The TC4x architecture also supports features like CPU and bus virtualization to ensure that even when multiple cores (TriCore and PPU) are active, critical tasks maintain their timing (for example, through quality-of-service controls on memory accesses).&amp;lt;ref name=&amp;quot;ref1315913395&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;ref1047817100&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From a safety perspective, Infineon has built the PPU and TC4x as &#039;&#039;&#039;ASIL-D compliant&#039;&#039;&#039; components, meaning they can be used in systems that require the highest level of automotive safety integrity. The PPU hardware is likely implemented with various safety mechanisms: its internal memories (register files, caches) and buses have error-correction (ECC) to detect and correct bit flips; the logic may have built-in self-test routines and fault diagnostics that run at startup or periodically to ensure the PPU is operating correctly. Infineon and Synopsys also offer a &#039;&#039;functional safety variant&#039;&#039; of the ARC EV processor (EV71FS) which would include safety extensions such as lockstep comparators or redundant computation for critical parts. These measures enable the PPU to detect internal faults and either correct them or report them to the safety monitors in the system, so that a proper safe state can be achieved if a malfunction occurs. The overall TC4x microcontroller includes a safety management unit that supervises all cores (TriCore and PPU alike) and can, for example, reset or isolate a core that behaves unexpectedly.&amp;lt;ref name=&amp;quot;ref1001512215&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;ref1167709857&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;ref542420283&amp;quot;&amp;gt;[PDF] Synopsys Processor Solutions https://www.synopsys.com/dw/doc.php/ds/cc/dw-processor-solutions.pdf&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1080637602&amp;quot;&amp;gt;[PDF] Software Support for Parallel ADAS Applications on Pre ... https://dspace.cvut.cz/bitstream/handle/10467/101423/F3-DP-2022-Bielesch-Lukas-bieleluk_thesis_final.pdf?sequence=-1&amp;amp;isAllowed=y&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;SAFE AI&#039;&#039;&#039; initiative is an example of how the PPU’s capabilities are being qualified for safety. In 2024, Fraunhofer IKS assessed the AURIX™ TC4x family with its PPU for the safe deployment of AI in automobiles. The result was that the PPU, as an AI accelerator, meets the necessary safety and robustness criteria for using machine learning in safety-critical systems. This is significant because AI algorithms (like neural networks) are typically seen as black boxes, but with the PPU, their execution becomes deterministic and monitorable enough to be included in an ASIL-D system. By adhering to safety frameworks (such as ISO 26262 and the emerging ISO/PAS 8800 for AI), the PPU allows automotive engineers to leverage complex AI models for tasks like sensor interpretation or anomaly detection &#039;&#039;while still complying with safety standards&#039;&#039;. In conjunction with redundant sensing and cross-checking (e.g., comparing an AI-based output with a simpler physics-based calculation as a plausibility check), the PPU’s use can increase both the intelligence and safety of automotive systems.&amp;lt;ref name=&amp;quot;ref1167709857&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In summary, the Infineon AURIX™ TC4x PPU is a pivotal addition to the microcontroller family’s architecture, marrying high performance parallel processing with the rigorous demands of real-time, safety-critical operation. It enables a new class of in-vehicle computations – from high-fidelity motor control to embedded deep learning – all within the envelope of an automotive-qualified, single-chip solution. This combination of capabilities makes the TC4x PPU a key enabler for the next generation of automotive and industrial innovations that require both &#039;&#039;&#039;computational muscle and uncompromising safety&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
* [[Infineon AURIX TC4x]]&lt;br /&gt;
* [[emmtrix Code Vectorizer]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Code_Vectorizer&amp;diff=2692</id>
		<title>emmtrix Code Vectorizer</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Code_Vectorizer&amp;diff=2692"/>
		<updated>2025-04-08T08:07:40Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;emmtrix Code Vectorizer is a C source-to-source compiler that vectorizes C code for various SIMD architectures like [[Infineon AURIX TC4x|Infineon AURIX TC4x PPU]], x86 AVX, ARM NEON, or RISC-V V extensions. It follows an semi-automatic approach, where the user can guide the vectorization process from an Eclipse-based GUI or by using pragmas in the C code. The vectorized C code is always visible to the user, which makes it easy to follow the transformation and to understand the generated code. The generated code can be compiled with the vendor’s compiler and either run on the target hardware or in a simulator to get performance feedback and verify the correctness of the transformation.&lt;br /&gt;
&lt;br /&gt;
=== Multi-Precision Vector Math Library ===&lt;br /&gt;
The emmtrix Code Vectorizer incorporates a multi-precision vector math library that provides vectorized implementations of common C mathematical functions like sinf, cosf, expf, logf, powf, sqrtf, tanhf and many more. The library provides multiple versions of each function to provide the best trade-off between accuracy and performance. During vectorization, the vector math library is used to replace scalar math functions with vectorized versions. By specifying the accuracy requirements in [[ULP Difference of Float Numbers|ULPs (units in the last place)]], the user can control which version of the function is used.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function&lt;br /&gt;
!Info&lt;br /&gt;
! Accuracy&amp;lt;ref&amp;gt;Accuracy of hardware version are given from the data sheet. A ULP 0.0 means that the implementation is exact. Otherwise, the highest know ULP is provided. Math functions that are based on non-perfect hardware implementation use a pessimistic software implementation for ULP evaluation. A more accurate ULP evaluation could be provided on request.&amp;lt;/ref&amp;gt; [ULP]&lt;br /&gt;
! Latency on AURIX™ TC4x [cycles]&lt;br /&gt;
! Throughput on AURIX™ TC4x [cycles]&lt;br /&gt;
|-&lt;br /&gt;
|fabsf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fminf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fmaxf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|roundf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|11&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|ceilf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|6&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|floorf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|6&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|truncf&lt;br /&gt;
|&lt;br /&gt;
|0.0&lt;br /&gt;
|6&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
| sqrtf&lt;br /&gt;
|Hardware version&lt;br /&gt;
| 0.5&lt;br /&gt;
|16&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
| expf&lt;br /&gt;
|Hardware version&lt;br /&gt;
| 1.0&lt;br /&gt;
|11&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|exp2f&lt;br /&gt;
|Hardware version&lt;br /&gt;
|1.0&lt;br /&gt;
|14&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
| log2f&lt;br /&gt;
|Hardware version&lt;br /&gt;
| 1.0&lt;br /&gt;
|14&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|logf&lt;br /&gt;
|Based on log2f ULP 1.0 hardware version&lt;br /&gt;
|1.93&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|log10f&lt;br /&gt;
|Based on log2f ULP 1.0 hardware version&lt;br /&gt;
|2.50&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| sinf&lt;br /&gt;
|Hardware version&lt;br /&gt;
| 1.0&lt;br /&gt;
|14&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
| cosf&lt;br /&gt;
|Hardware version&lt;br /&gt;
| 1.0&lt;br /&gt;
|14&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|tanf&lt;br /&gt;
|Based on sinf/cosf ULP 1.0 hardware version&lt;br /&gt;
|3.42&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | tanhf&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Based on expf ULP 1.0 hardware version&lt;br /&gt;
|7.08&lt;br /&gt;
|41&lt;br /&gt;
|18&lt;br /&gt;
|-&lt;br /&gt;
|4.23&lt;br /&gt;
|41&lt;br /&gt;
|19&lt;br /&gt;
|-&lt;br /&gt;
|2.74&lt;br /&gt;
|41&lt;br /&gt;
|23&lt;br /&gt;
|-&lt;br /&gt;
|1.91&lt;br /&gt;
|41&lt;br /&gt;
|27&lt;br /&gt;
|-&lt;br /&gt;
|hypotf&lt;br /&gt;
|Based on sqrt ULP 0.5 hardware vesrion&lt;br /&gt;
|1.995&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|remainderf&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fmodf&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fdimf&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Math Function Accuracy]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2691</id>
		<title>Infineon AURIX TC4x</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2691"/>
		<updated>2025-04-08T08:05:30Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Infineon Aurix TC4x.webp|right|frameless]]&lt;br /&gt;
The TC4x is Infineon&#039;s latest generation of AURIX™ microcontrollers, designed for advanced automotive applications, including eMobility, Advanced Driver Assistance Systems (ADAS), and automotive E/E (Electric/Electronic) architectures. These microcontrollers are built on a 28 nm process and feature the [[TriCore Instruction Set Architecture|TriCore™ 1.8 instruction set architecture]], which includes up to six cores running at speeds up to 500 MHz. This architecture is optimized for high-performance and real-time applications.&lt;br /&gt;
&lt;br /&gt;
== Key Features ==&lt;br /&gt;
* &#039;&#039;&#039;High Performance and Scalability&#039;&#039;&#039;: Equipped with a Parallel Processing Unit (PPU), Data Routing Engine (DRE), and other accelerators to enhance AI capabilities and real-time processing.&lt;br /&gt;
* &#039;&#039;&#039;Extensive Connectivity&#039;&#039;&#039;: Supports high-speed communication interfaces such as 5 Gbps Ethernet, PCIe, CAN-XL, and 10BASE-T1S Ethernet, providing flexibility and performance for various automotive applications.&lt;br /&gt;
* &#039;&#039;&#039;Enhanced Security&#039;&#039;&#039;: Compliant with ISO 21434, the TC4x includes advanced cybersecurity modules and supports safe, over-the-air (SOTA) updates with zero downtime.&lt;br /&gt;
* &#039;&#039;&#039;Memory and Storage&#039;&#039;&#039;: Features up to 25 MB of on-chip flash memory, allowing for complex software applications and data storage.&lt;br /&gt;
* &#039;&#039;&#039;Real-Time Control&#039;&#039;&#039;: Advanced timers and ADCs (Analog-to-Digital Converters) improve control loops for electric motors and power conversion tasks.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
[[File:Infineon TC4x Architecture.png|thumb|Infineon TC4x architecture|494x494px]]&lt;br /&gt;
&lt;br /&gt;
=== System Architecture ===&lt;br /&gt;
&lt;br /&gt;
=== TC 1.8P Processor Core (CPU0 ... CPU5) ===&lt;br /&gt;
&lt;br /&gt;
=== Parallel Processing Unit (PPU) ===&lt;br /&gt;
The PPU is an implementation of the &#039;&#039;&#039;DesignWare ARC EV71 Processor&#039;&#039;&#039;. The length of the vector registers is flexible and depends on the version. Commercially, 128 or 256 bit vector registers are available. In a pre-series stepping even 512 bit was used.&lt;br /&gt;
&lt;br /&gt;
See [[Infineon AURIX TC4x Parallel Processing Unit (PPU)]]&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
* eMobility&lt;br /&gt;
* ADAS&lt;br /&gt;
* Automotive E/E architectures&lt;br /&gt;
* Affordable artificial intelligence (AI) applications&lt;br /&gt;
&lt;br /&gt;
== emmtrix Tools for AURIX™ TC4x ==&lt;br /&gt;
emmtrix offers several tools for the Infineon AURIX™ TC4x architecture:&lt;br /&gt;
&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer] for vectorizing C code for the Infineon PPU. emmtrix was working together with Infineon already during develop of the TC4x architecture for supporting the PPU and received one of the first series A test boards.&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-performance-estimatorator emmtrix Performance Estimator] for estimating the performance of C code written for the Tricore™ CPUs.&lt;br /&gt;
&lt;br /&gt;
[[File:Infineon Board.png|thumb|Infineon Development Board (AURIX™ TC4x Communication Board)]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Code Vectorizer ===&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer (eCV)] simplifies programming the Parallel Processing Unit (PPU) on Infineon’s &#039;&#039;&#039;AURIX™ TC4x microcontrollers&#039;&#039;&#039;, enabling significant acceleration of data-parallel applications like sensor fusion or AI inference. By leveraging the PPU, these tasks can be accelerated by factors &amp;gt;10, unlocking the full potential of hardware capabilities.&lt;br /&gt;
&lt;br /&gt;
eCV automates the vectorization process, transforming sequential C code into optimized vectorized code tailored to the &#039;&#039;&#039;AURIX™ TC4x architecture&#039;&#039;&#039;. This includes efficient handling of memory layouts and advanced loop transformations. Developers can simulate and test functionality even without access to target hardware, reducing development time and effort.&lt;br /&gt;
&lt;br /&gt;
With support for &#039;&#039;&#039;Simulink® models, ONNX-based AI workflows,&#039;&#039;&#039; and detailed performance insights through integrated simulators, eCV minimizes the need for manual optimization while maximizing hardware performance.[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / [[Infineon AURIX TC3xx|TC3xx]]/ TC4x microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC4x Parallel Processing Unit (PPU)]]&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc4x/&lt;br /&gt;
&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2690</id>
		<title>Infineon AURIX TC3xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2690"/>
		<updated>2025-04-08T08:01:46Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AURIX TC399 LFBGA-516 plain.jpg|thumb|Infineon AURIX™ TC3xx second-generation microcontroller (TC399 BGA package). The AURIX™ TC3xx family integrates multiple TriCore™ CPUs and on-chip safety/security modules for automotive applications.|alt=TC399 BGA package]]&lt;br /&gt;
The &#039;&#039;&#039;Infineon AURIX™ TC3xx&#039;&#039;&#039; (Automotive Realtime Integrated neXt-generation architecture) is a family of 32-bit automotive microcontrollers introduced as the second generation of Infineon’s AURIX™ platform. Launched in 2016 as a successor to the earlier [[Infineon AURIX TC2xx|AURIX™ TC2xx series]], the TC3xx devices emphasize high performance, functional safety, and embedded security for advanced automotive and industrial applications. AURIX™ TC3xx microcontrollers feature a hexa-core [[TriCore Instruction Set Architecture|&#039;&#039;TriCore&#039;&#039; processor architecture]] with enhanced safety measures, making them well-suited for demanding tasks such as autonomous driving domain controllers, powertrain control, and sensor data fusion in advanced driver-assistance systems (ADAS). The combination of multiple CPU cores, extensive on-chip memory, and a rich peripheral set allows TC3xx chips to deliver real-time responsiveness and reliability in safety-critical environments while meeting stringent automotive standards (such as ISO 26262 for functional safety).&amp;lt;ref name=&amp;quot;ref1951907555&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX™ https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1428109010&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1948477695&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Applications==&lt;br /&gt;
AURIX™ TC3xx microcontrollers are used in a variety of safety-critical and high-performance applications across the automotive and industrial sectors. Key application domains include:&lt;br /&gt;
*&#039;&#039;&#039;Automotive Systems:&#039;&#039;&#039; The TC3xx family was primarily designed for automotive use and finds broad application in vehicles’ electronic control units (ECUs). Notably, it is used in &#039;&#039;powertrain and drivetrain control&#039;&#039; (engine management, transmission control, hybrid/electric vehicle inverter control, battery management) where its real-time processing and resilience support precise actuator control. It is also deployed in &#039;&#039;chassis and safety systems&#039;&#039; such as anti-lock braking systems (ABS), electronic stability control, airbag controllers, and electric power steering, leveraging its redundancy and fast response for fail-safe operation. With the growth of ADAS and autonomous driving, AURIX™ TC3xx devices serve as domain controllers for &#039;&#039;ADAS sensor fusion&#039;&#039;, handling data from radar, LiDAR, camera, and ultrasonic sensors and performing environment modeling and decision-making algorithms. Their combination of multiple cores and a built-in radar signal processing sub-system makes them an attractive choice for tasks like front radar processing, sensor fusion hubs, and &#039;&#039;autonomous driving domain controllers&#039;&#039; that must meet ASIL-D safety levels.&amp;lt;ref name=&amp;quot;ref14281090102&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Industrial Automation and Robotics:&#039;&#039;&#039; Infineon has also positioned the AURIX™ family for use in industrial applications that demand high reliability. The TC3xx MCUs, with their hardware self-test mechanisms and safety documentation, can be found in &#039;&#039;industrial motor drives, robotics controllers, and PLCs (programmable logic controllers)&#039;&#039;, where they help achieve functional safety certifications up to SIL-3 (according to IEC 61508). The powerful TriCore™ cores and rich peripheral set enable complex motor control algorithms (e.g., field-oriented control for servo motors) and real-time sensor processing in factory automation. Additionally, the support for automotive-grade networking (CAN/CAN-FD, Ethernet) and timing peripherals makes them suitable for synchronous control in robotics and machinery. Infineon’s provision of AUTOSAR-compatible software for AURIX™ has even facilitated its use in non-automotive settings such as medical devices and elevator controllers, where proven safety and security are required.&amp;lt;ref name=&amp;quot;ref496771205&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Aerospace and Defense:&#039;&#039;&#039; The high fault-tolerance and deterministic performance of the AURIX™ TC3xx architecture also attract interest for aerospace and other mission-critical uses. In avionics systems or autonomous drones, for instance, the lockstep core configuration and robust error checking of AURIX™ can provide an added layer of reliability for flight control computers or navigation systems. While primarily an automotive chip, its ability to operate in harsh conditions (−40°C to 150°C range) and to detect internal failures in real-time makes it viable for certain aerospace electronic systems. Some defense and aerospace projects leverage COTS (commercial off-the-shelf) automotive components like AURIX™ for applications such as unmanned vehicle control and high-reliability communication links, given its safety pedigree. (In these domains, additional analysis and possibly radiation testing would be performed if the devices are used in high-altitude or space environments.)&lt;br /&gt;
== Architecture Overview ==&lt;br /&gt;
[[File:Infineon TC3xx Architecture.webp|545x545px|thumb|alt=TC3xx Architecture Overview|TC3xx Architecture Overview]]&lt;br /&gt;
=== Processor Cores and Architecture===&lt;br /&gt;
The AURIX™ TC3xx family implements Infineon’s TriCore™ architecture, which uniquely combines aspects of RISC microcontrollers, DSP (digital signal processor) capabilities, and conventional microprocessor features into a single core design. Each TC3xx device can include up to six independent TriCore™ 32-bit CPU cores (TriCore™ version 1.6.2), all capable of running at up to 300 MHz clock frequency. Four of these cores can operate in dual-core lockstep pairs (with one core acting as a redundant checker for its partner) to provide fault detection for safety-critical functions. The TriCore™ cores use a superscalar Harvard architecture with 32-bit instruction words (and support for mixed 16/32-bit instruction encoding for code density). Each core includes a dedicated Floating Point Unit (FPU) for single-precision arithmetic and supports DSP-oriented instructions (e.g. single-cycle 16×16 MAC operations, SIMD for 16-bit/8-bit data) to accelerate signal processing tasks. For fast real-time performance, the architecture offers low interrupt latency (with automatic context save on-chip) and features like zero-overhead loops and a programmable peripheral timer unit for scheduling tasks. In total, a high-end TC3xx (such as the TC39x) provides six 300 MHz cores plus four checker cores, yielding a theoretical processing throughput of up to ~2400 DMIPS (Dhrystone MIPS) when all cores are utilized. This represents roughly a threefold increase in computational power over the previous AURIX™ generation (which achieved ~740 DMIPS with three cores).&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot;&amp;gt;UDE Debug, Trace and Test solutions for Infineon TriCore™ AURIX™ TC32, TC33, TC35, TC36, TC37, TC38, TC39, TC3x Microcontrollers       https://www.pls-mc.com/products/infineon-tricore-aurix-tc32-tc33-tc35-tc36-tc37-tc38-tc39-microcontrollers/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Memory Subsystem and Cache===&lt;br /&gt;
AURIX™ TC3xx microcontrollers integrate a large on-chip memory system to meet real-time and safety requirements. Program flash memory sizes range up to 16 MB on the largest models, with over 6 MB of on-chip SRAM available for data and scratchpad usage. Each TriCore™ CPU has its own tightly-coupled local memories as well as caches: for example, each core includes a 32 KB instruction cache and a 16 KB data cache. In addition, every core has separate local RAM blocks (Harvard architecture) for instructions and data (often termed PSPR and DSPR – Program Scratch-Pad RAM and Data Scratch-Pad RAM) that allow deterministic access for time-critical routines. Shared global memory is provided via a Local Memory Unit (LMU) which can be up to several hundred kilobytes (for instance, 768 KB in the TC39x) accessible by all cores. The memory system is connected by a high-bandwidth internal bus fabric (the SRI crossbar and peripheral buses) that arbitrates access between cores, DMA engines, and peripherals. This architecture ensures that each core can quickly fetch instructions and data either from its local cache/RAM or the central memory, enabling efficient parallel processing. Memory protection hardware is also built-in to isolate tasks of different criticality, an important feature for safety and security.&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Peripherals and Interfaces===&lt;br /&gt;
One of the strengths of the AURIX™ TC3xx architecture is its extensive set of on-chip peripherals and interface controllers, designed to handle the complex networking and I/O needs of modern vehicles and industrial systems. Key peripheral features and interfaces include:&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref3635926&amp;quot;&amp;gt;AURIX™ Training System Architecture https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_System_Architecture-Training-v01_00-EN.pdf?fileId=5546d46272e49d2a0172eb476d56739e&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Networking Interfaces:&#039;&#039;&#039; Multiple CAN FD controllers (supporting up to 12 CAN-FD channels in high-end variants) for in-vehicle networking, with legacy CAN and LIN interfaces (up to 24 LIN channels) for lower-speed device communication. Many TC3xx devices also integrate up to two FlexRay controllers for time-triggered automotive networks (maintaining compatibility with earlier automotive communication standards). For high-bandwidth data, a Gigabit Ethernet MAC is included, enabling uses like automotive Ethernet (e.g., audio-video bridging and IP-based connectivity).&lt;br /&gt;
* &#039;&#039;&#039;Analog and Timers:&#039;&#039;&#039; A suite of analog peripherals including multiple ADC units for sensor interfacing and motor control, and DACs in some models. Sophisticated timer units are on-chip, notably the Generic Timer Module (GTM) and Capture/Compare Units (CCU6), which can generate complex PWM waveforms and handle events for engine control, power inverters, or robotics with minimal CPU intervention. These timers enable precise control of actuators (e.g. fuel injection timing, electric motor commutation) in real time.&lt;br /&gt;
*&#039;&#039;&#039;Serial Interfaces:&#039;&#039;&#039; SPI, I²C, UART/LIN and other serial interfaces for connecting to external sensors, actuator controllers, and memory. The controllers often support multiple instances (several SPI channels, etc.) to accommodate numerous devices. AURIX™ TC3xx also provides an external bus interface (EBU) for parallel memory or FPGA connectivity, and an SD/MMC interface (eMMC) to connect external flash memory for data logging or over-the-air update storage.&lt;br /&gt;
*&#039;&#039;&#039;Dedicated Processing Units:&#039;&#039;&#039; Some AURIX™ TC3xx models include special accelerators, such as a hardware Fast Fourier Transform unit (HW-FFT) and up to two Signal Processing Units (SPUs) optimized for radar signal processing. These enable the microcontroller to handle radar front-end data or other intensive DSP tasks (like Fourier transforms for radar or audio signals) on-chip, which is crucial for advanced driver assistance sensors. There is also a &#039;&#039;Security Module&#039;&#039; (covered in a later section) and a Safety Management Unit that supervise system integrity.&lt;br /&gt;
*&#039;&#039;&#039;Other On-chip Modules:&#039;&#039;&#039; Watchdog timers, error-correction coders for memories (ECC on flash and RAM for reliability), a programmable interrupt system, multiple DMA channels (up to 128 DMA channels) for efficient data movement, and debug interfaces (JTAG and a 2/3-pin DAP) for development. The on-chip debug system supports tracing of program execution (via a built-in Emulation Memory, MCDS) to aid in complex multicore software development.&lt;br /&gt;
&lt;br /&gt;
Overall, the AURIX™TC3xx provides a highly integrated SoC-like platform, allowing a single chip to manage tasks ranging from powertrain control and chassis control to infotainment gateways. This high level of integration reduces the need for separate companion chips and helps to lower system complexity and cost.&lt;br /&gt;
===Performance and Benchmarking===&lt;br /&gt;
Fabricated in a 40 nm embedded flash process&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;, AURIX™ TC3xx processors achieve significant performance gains over prior generations while maintaining automotive-grade power efficiency. With six 32-bit cores at 300 MHz (four of them paired in lockstep), a flagship TC3xx device (e.g., TC39x) can deliver up to approximately 2,400 DMIPS of aggregate computing throughput&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;. In terms of per-core performance, the TriCore™ architecture yields around 1.3–2.0 DMIPS/MHz depending on the instruction mix, meaning each 300 MHz core can approach ~400–600 DMIPS in optimized scenarios&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX™ - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. This is on par with or exceeding many contemporary 32-bit automotive MCUs. The integrated DSP extensions and optional accelerators (like the FFT unit) also enable high-speed signal processing, with Infineon citing up to ~1.8 GFLOPS of DSP throughput for certain operations&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Real-world performance improvements of the TC3xx over its predecessor are notable: for example, compared to the first-generation AURIX™ (which offered up to 740 DMIPS), the TC3xx’s expanded core count and clock speed provide roughly three times the computational power on the same type of workload&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. This extra headroom allows more functions (such as running multiple control algorithms or sensor fusion tasks in parallel) to be consolidated onto one microcontroller without compromising real-time deadlines&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. Despite the increase in speed and core count, the TC3xx family was designed with power and thermal constraints in mind, achieving these gains within similar power consumption envelopes as the previous generation by leveraging the smaller 40 nm process and power-saving features like clock gating&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot; /&amp;gt;. The deterministic real-time performance (with features like lockstep and tightly-coupled memory) makes the AURIX™ TC3xx suitable for the most demanding automotive applications, where consistent low latency and high throughput are required simultaneously.&lt;br /&gt;
&lt;br /&gt;
== On-Chip System Connectivity and Bridges ==&lt;br /&gt;
[[File:TC3xx On-Chip System Connectivity.png|thumb|The TC3xx has two &#039;&#039;&#039;SRI Domains&#039;&#039;&#039; (SRI0 and SRI1). CPU0 to CPU3 are connected to SRI0, CPU4/5 are connected to SRI1.|alt=TC3xx On-Chip System Connectivity|423x423px]]&lt;br /&gt;
The AURIX™ TC3xx Platform has three independent on-chip connectivity resources: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System Resource Interconnect Fabric (SRI Fabric)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and other high bandwidth requestors to high bandwidth memories and other resources for instruction fetches and data accesses. A key component of the fabric is the SRI crossbar, which connects all the agents in one SRI domain. The SRI crossbar carries the transactions between the SRI Masters and SRI Slaves of the domain. The SRI crossbar supports parallel transactions between different SRI Master and SRI Slave agents. In addition to the parallelism of concurrent requests, it also supports pipelined requests from an SRI Master to a SRI Slave.&lt;br /&gt;
* &#039;&#039;&#039;System Peripheral Bus (SPB)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and other SPB masters to the medium and low bandwidth peripherals. SPB masters do not directly connect to the SRI Fabric, and will access SRI attached resources via a SFI_F2S Bridge.&lt;br /&gt;
* &#039;&#039;&#039;Back Bone Bus (BBB)&#039;&#039;&#039; connects the TriCore™ CPUs, the DMA module, and SPB masters with ADAS resources. SRI Masters do not directly connect to the BBB, but access BBB attached resources via a SFI_S2F Bridge. SPB masters also do not directly connect to the BBB, but access BBB attached resources via bridging over the SRI Fabric.&lt;br /&gt;
&lt;br /&gt;
=== CPU Resource Access Times ===&lt;br /&gt;
These tables describe the CPU access times to various resources in CPU clock cycles for the AURIX™ TC3xx Platform. In the case of load or fetch accesses, the access times are the minimum number of CPU stall cycles to complete the access. If there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes. &lt;br /&gt;
&lt;br /&gt;
For write access, the access times are the maximum for a sequence of such access (non-conflicting). In many cases for a singleton access, or a short sequence, write buffering reduces the stall effect seen by a CPU, sometimes to 0. However, as with loads and fetches, if there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes.&lt;br /&gt;
&lt;br /&gt;
==== Access latency for global resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! CPU stall cycles&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| Data read from System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |The final number of stall cycles will depend&amp;lt;br&amp;gt;on the real number of WS generated by the target resource.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;9 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |When SFI_S2F is connected to XBar2 (TC39x and TC37xED)&amp;lt;br&amp;gt;there is an additional latency due to access going through an S2S.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;5 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;6 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;3 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Module Wait State&#039;&#039;&#039;: The number of wait states for read and for write accesses is &amp;gt;= 1 and depends on the accessed module and its configuration.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU Accesses: Stall cycles for local and SRI resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! Local CPU !! Local SRI !! Remote SRI Domain&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DSPR || 0 || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DLMU || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DLMU || 2 || 5, {{rev|3|with Pipelining}}|| 5, 4&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DLMU || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to PSPR || See local SRI column || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PFlash || 5 + PWS || 10 + PWS || 13 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer miss) || 2 + PWS || 9 + PWS || 12 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer hit) || 3 || 6 || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to LMU || n.a. || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DFlash || n.a. || 5 + 3*(3 + DCWS) || 8 + 3*(3 + DCWS)&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC39x, TC37xED) || n.a. || n.a. || 14, {{rev|15|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC39x, TC37xED) || n.a. || n.a. || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC35x, TC33xED) || n.a. || 11, {{rev|12|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC35x, TC33xED) || n.a. || 9 || n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from DAM || n.a. || 10 || 13&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to DAM || n.a. || 7 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;Remote SRI Domain&#039;&#039;&#039;: Only applies to products with SRI extenders. Additional latency due to access going through an S2S&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;DCWS&#039;&#039;&#039;: Configured DFlash Corrected Wait States (Includes cycles for DFlash access cycles and ECC correction latency)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Subsystem ==&lt;br /&gt;
[[File:TC3xx Processor Core, Local Memory and Connectivity.png|alt=TC3xx Processor Core, Local Memory and Connectivity|thumb|Processor Core, Local Memory and Connectivity]]The Infineon AURIX™ TC3xx features up to 6 processor cores (CPU0 ... CPU5) implementing the [[TriCore Instruction Set Architecture|TC1.6.2 instruction set architecture]]. The following section focuses on the microarchitectural details of the CPU subsystem. For more information about the ISA, please take a look at the [[TriCore Instruction Set Architecture]].&lt;br /&gt;
&lt;br /&gt;
The processor core connects to the following memories and bus interfaces (where implemented):&lt;br /&gt;
*Program Scratch-Pad SRAM (PSPR)&lt;br /&gt;
*Data Scratch-Pad SRAM (DSPR)&lt;br /&gt;
*Program Cache (PCache)&lt;br /&gt;
*Data Cache (DCache)&lt;br /&gt;
*Local Memory Unit (DLMU)&lt;br /&gt;
*Local Pflash bank (LPB)&lt;br /&gt;
*SRI slave interface (x2)&lt;br /&gt;
*SRI master Interface&lt;br /&gt;
*SPB master interface&lt;br /&gt;
&lt;br /&gt;
=== TC1.6.2P Implementation Features ===&lt;br /&gt;
*Most instructions executed in 1 cycle&lt;br /&gt;
*Branch instructions in 1, 2 or 3 cycles (using dynamic branch prediction)&lt;br /&gt;
*Wide memory interface for fast context switch&lt;br /&gt;
* Automatic context save-on-entry and restore-on-exit for: subroutine, interrupt, trap&lt;br /&gt;
*Six memory protection register sets&lt;br /&gt;
*Dual instruction issuing (in parallel into Integer Pipeline and Load/Store Pipeline)&lt;br /&gt;
*Third pipeline for loop instruction only (zero overhead loop)&lt;br /&gt;
*Single precision Floating Point Unit (IEEE-754 Compatible)&lt;br /&gt;
*Dedicated Integer divide unit&lt;br /&gt;
*18 data memory protection ranges, 10 code memory protection ranges arranged in 6 sets&lt;br /&gt;
&lt;br /&gt;
=== Superscalar Architecture ===&lt;br /&gt;
The processor core within the AURIX™ TC3xx family, specifically the TC1.6.2P implementation, employs a superscalar architecture characterized by three parallel pipelines: the Integer Pipeline, the Load/Store Pipeline, and the Loop Pipeline. Superscalar execution is a form of instruction-level parallelism that enables the processor to issue and execute multiple instructions during a single clock cycle. The TriCore™ TC3xx core&#039;s superscalar architecture allows it to issue and execute multiple instructions in parallel. Specifically, it can issue up to two instructions simultaneously to the Integer and Load/Store pipelines. However, there are certain constraints on this dual issuing capability. For example, back-to-back data arithmetic instructions can only be issued in separate cycles, and a load/store instruction can be issued either on its own or paired with a data arithmetic instruction, provided the load/store instruction is the second in the pair. Under ideal conditions, with careful instruction scheduling, this dual-issue capability can lead to a throughput of close to 0.5 clock cycles per instruction, effectively executing two instructions per cycle.&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Stages ===&lt;br /&gt;
The execution of instructions within the TriCore™ TC3xx core is managed through a pipeline consisting of several stages. In one document it is mentioned that the pipeline consists of 6 stages &amp;lt;ref name=&amp;quot;ref3635926&amp;quot; /&amp;gt;, but the exact stages remain unclear. From the architecture the following stages can be inferred:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Fetch Stage&#039;&#039;&#039;: The initial stage in the pipeline is the Fetch stage, where instructions are retrieved from memory. This task is handled by the Instruction Fetch Unit (IFU), which is responsible for fetching instructions from the memory system. To improve efficiency, the IFU employs a pre-fetching mechanism, anticipating the instructions that will be needed and bringing them into the processor before they are actually required. Instructions are fetched through a 64-bit wide Program Memory Interface (PMI), allowing for the retrieval of a significant amount of instruction data in each cycle. The fetched instructions are then placed into an issue FIFO, a buffer capable of holding up to six instructions. This buffer plays a crucial role in managing the flow of instructions to the subsequent execution pipelines. The 64-bit fetch width and the instruction buffer are indicative of a design that aims to ensure a continuous supply of instructions to the pipelines, preventing them from being starved of work. A wider fetch path allows for more instruction bits to be obtained from memory in each clock cycle, while the buffer helps to mitigate temporary delays in instruction fetching.&lt;br /&gt;
* &#039;&#039;&#039;Execution Unit&#039;&#039;&#039;: The Execution Unit contains the Integer Pipeline, the Load/Store Pipeline and the Loop Pipeline. All three pipelines operate in parallel and are capable of executing instructions simultaneously. Each pipline has its own decode stage and two execute stages. Furthermore, the TC3xx features a Floating Point Unit (FPU). It is not clear whether the FPU is part of the execution unit or a separate unit. It is assumed that the FPU also has its own decode stage and an unknown number of execute stages&lt;br /&gt;
** &#039;&#039;&#039;Decode Stage&#039;&#039;&#039;: Following the Fetch stage, the instruction are issued to one of the pipelines. In the decode stage of each pipeline, the instruction is examined and translated to determine the specific operation it represents and to identify the operands it will operate on. It is assumed that operands are read from the register file during the decode stage.&lt;br /&gt;
** &#039;&#039;&#039;Execute Stage&#039;&#039;&#039;: The Execute stage is where the actual operation specified by the instruction is carried out. Pipeline hazards (stalls) are minimised by the use of forwarding paths between pipeline stages allowing the results of one instruction to be used by a following instruction as soon as the result becomes available.&lt;br /&gt;
** &#039;&#039;&#039;Writeback Stage&#039;&#039;&#039;: The final stage in the pipeline is the Writeback stage. In this stage, the results produced by the executed instruction are written back to the processor&#039;s register file, making them available for subsequent instructions. It is unclear whether the writeback stage is part of the (two) execution stages or a separate stage.&lt;br /&gt;
&lt;br /&gt;
=== Execution Pipelines ===&lt;br /&gt;
The TriCore™ TC3xx core leverages four parallel pipelines to enhance its performance. Each pipeline is designed to handle a specific class of instructions:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Integer Pipeline:&#039;&#039;&#039; This pipeline is responsible for executing integer arithmetic and logical instructions, including data-conditional jump instructions, bit manipulation operations, as well as division and multiply-accumulate (MAC) instructions.&lt;br /&gt;
* &#039;&#039;&#039;Load/Store Pipeline:&#039;&#039;&#039; The primary function of this pipeline is to manage memory access operations, including loading data from memory and storing data to memory. It also handles address arithmetic, unconditional jump instructions, procedure call instructions, context-switching operations, and control flow related to context save areas (CSAs).&lt;br /&gt;
* &#039;&#039;&#039;Loop Pipeline:&#039;&#039;&#039; This is a specialized pipeline designed to facilitate zero-overhead loops, a technique that significantly improves the performance of iterative code sections. Its design aims to eliminate or minimize the overhead typically associated with loop control, such as incrementing counters and checking loop conditions. Some documentation suggests that the loop pipeline comes along with a &amp;quot;Loop Cache&amp;quot;. This dedicated cache would likely be used to store instructions belonging to the loop, enabling very fast access and execution for repeated iterations.&lt;br /&gt;
* &#039;&#039;&#039;Floating Point Unit (FPU):&#039;&#039;&#039; The FPU is responsible for executing floating-point arithmetic operations&lt;br /&gt;
&lt;br /&gt;
=== Store Buffers ===&lt;br /&gt;
The TriCore™ TC3xx core include &#039;&#039;&#039;Store Buffers&#039;&#039;&#039; to decouple memory write operations from CPU instruction execution. All stores from the Load/Store Pipeline are placed in the store buffer prior to being written to local memory or transferred via the bus system. Write data is taken from the store buffers and written to memory when the target memory or bus interface becomes available. In normal operation the CPU will prioritise memory load operations over store operations in order to improve performance unless the store buffer is full or the order of load and store operations must be preserved (e.g. peripheral space access). The store buffer can hold the data for up to 6 stores operations. To improve performance the store buffer will merge consecutive byte, half-word, and word writes of the same location to reduce the number of memory accesses required.&lt;br /&gt;
&lt;br /&gt;
=== Instruction Timing ===&lt;br /&gt;
&lt;br /&gt;
==Functional Safety and Security Features==&lt;br /&gt;
===Hardware Security Module and Encryption===&lt;br /&gt;
One of the defining features of the AURIX™ TC3xx family is its robust hardware-based security subsystem, implemented to protect against cyber threats and unauthorized manipulation of vehicle systems. Each TC3xx MCU includes a dedicated &#039;&#039;Hardware Security Module&#039;&#039; (HSM), which is essentially an on-chip co-processor with its own CPU and cryptographic engine designed to handle secure operations. In the second-generation AURIX™ (TC3xx), the HSM was upgraded with support for asymmetric cryptography (e.g., RSA, ECC algorithms) in hardware, providing significantly faster public-key encryption and authentication capabilities than pure software implementations. This HSM supports &#039;&#039;&#039;EVITA Full&#039;&#039;&#039; (the highest level of the EU’s EVITA automotive security requirements), meaning it can perform secure boot, message authentication, and encryption at a level suitable for protecting critical in-vehicle communications. For example, the HSM can encrypt and authenticate CAN/Ethernet messages to prevent spoofing or tampering on the vehicle network, and it can manage cryptographic keys securely isolated from the main application cores.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The security module enables features like &#039;&#039;&#039;secure boot&#039;&#039;&#039;, where the AURIX™ will only execute firmware that is digitally signed by the vehicle manufacturer, thereby preventing unauthorized or malicious code. It also facilitates &#039;&#039;over-the-air (OTA) updates&#039;&#039; in a secure manner: the TC3xx HSM can verify and decrypt update packages received via telematics, allowing firmware upgrades while protecting against attackers attempting to hijack the software. In addition, the HSM includes a true random number generator and supports protocols for immobilizer and theft protection systems. Infineon’s implementation essentially treats the HSM as an “embedded smart card” inside the microcontroller. This approach, building on Infineon’s expertise in chip card security, helps to safeguard sensitive assets like cryptographic keys and to perform secure operations (encryption, decryption, authentication) in hardware, making attacks significantly more difficult. The strong cybersecurity provisions of the AURIX™ TC3xx have made it a preferred choice for vehicle gateway ECUs and central body controllers, which are points of entry for connected car communications and thus high-value targets for hackers. By incorporating the HSM, automotive OEMs can implement advanced security features such as encrypted onboard communication (to thwart bus tampering) and secure diagnostics, ensuring the vehicle’s electronic data is protected against cyber threats even as cars become more connected.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref19484776953&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Functional Safety and Fault Tolerance===&lt;br /&gt;
Beyond cybersecurity, the AURIX™ TC3xx architecture is built with extensive &#039;&#039;functional safety&#039;&#039; features to meet the highest safety integrity levels in automotive systems. The multi-core design supports &#039;&#039;lockstep operation&#039;&#039;, where redundant checker cores run in parallel with main cores and continuously compare results cycle-by-cycle. In TC3xx devices, up to four of the six TriCore™ CPUs have such lockstep partner cores, allowing the microcontroller to detect any single-point CPU failure instantly (if a discrepancy arises between the core and its checker, a fault is signaled). A &#039;&#039;Safety Management Unit (SMU)&#039;&#039; is integrated on-chip to monitor various fault conditions throughout the device – it aggregates error signals from the lockstep cores, memory ECC monitors, clock/watchdog monitors, and peripheral self-tests, and can initiate safe-state actions (like resetting the chip or signaling an error pin to an external supervisor) if a critical fault is detected. The AURIX™ safety concept also includes a distributed Memory Protection Unit (MPU) arrangement, with multiple memory protection contexts that prevent errant or malicious code from writing to wrong memory areas. This helps contain faults and eases the integration of software with mixed criticality (Infineon allows partitioning software components of different ASIL levels on the same MCU while keeping them isolated).&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref19519075552&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX™ https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crucially, the TC3xx family was developed according to ISO 26262 processes and can achieve &#039;&#039;&#039;ASIL-D&#039;&#039;&#039; (Automotive Safety Integrity Level D), the highest grade for automotive functional safety. Compared to a traditional dual-core lockstep approach, the AURIX’s™ multi-core safety architecture allowed Infineon to reduce certain safety development overheads (earlier Infineon data suggested up to 30% reduction in safety software workload) by providing built-in safety mechanisms and diagnostics. Infineon supplies a comprehensive safety manual and diagnostic libraries for the AURIX™, helping engineers utilize features like CPU self-tests, RAM tests, and CRC checks to comply with safety standards. In addition to automotive standards, the AURIX™ TC3xx has also been qualified for &#039;&#039;&#039;industrial safety&#039;&#039;&#039;: in 2023, Infineon announced support for IEC 61508 metrics, enabling designs with AURIX™ to reach SIL-2 and SIL-3 safety integrity levels for industrial applications. This cross-industry safety compliance is facilitated by the MCU’s redundant design and detailed failure mode documentation (FMEDA) provided by Infineon. In summary, the AURIX™ TC3xx integrates both proactive safety (fault prevention via lockstep, monitoring and protection) and reactive safety (fault detection and safe shutdown), making it a dependable component for systems that cannot afford unintended behavior, whether in cars, factories, or aerospace. &amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref4967712052&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref196858272&amp;quot;&amp;gt;MCUs support industrial functional safety - Electronic Products https://www.electronicproducts.com/mcus-support-industrial-functional-safety/&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Platform Devices ==&lt;br /&gt;
The following table shows a feature overview of the AURIX™ TC3xx Platform family focusing on memory and number of cores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Feature&lt;br /&gt;
!TC33x&lt;br /&gt;
!TC33xEXT&lt;br /&gt;
!TC35x&lt;br /&gt;
!TC36x&lt;br /&gt;
!TC37x&lt;br /&gt;
!TC37xEXT&lt;br /&gt;
!TC38x&lt;br /&gt;
!TC39x&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |CPUs&lt;br /&gt;
|Cores / Checker Cores&lt;br /&gt;
|1 / 1&lt;br /&gt;
|2 / 1&lt;br /&gt;
|3 / 2&lt;br /&gt;
|2 / 2&lt;br /&gt;
|3 / 2&lt;br /&gt;
|3 / 3&lt;br /&gt;
|4 / 2&lt;br /&gt;
|6 / 4&lt;br /&gt;
|-&lt;br /&gt;
|Max. Freq.&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Cache per CPU &lt;br /&gt;
|Program [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |32&lt;br /&gt;
|-&lt;br /&gt;
|Data [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |SRAM per CPU&lt;br /&gt;
|PSPR [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|32|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|DSPR [KB]&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|192|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|-&lt;br /&gt;
|DLMU [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|8|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |SRAM global&lt;br /&gt;
|LMU [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|512&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|128&lt;br /&gt;
|768&lt;br /&gt;
|-&lt;br /&gt;
|DAM [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|32&lt;br /&gt;
| -&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Extension Memory (EMEM)&lt;br /&gt;
|TCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XTM [KB]&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Program Flash&lt;br /&gt;
|Size [MB]&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|10&lt;br /&gt;
|10&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|Banks [MB]&lt;br /&gt;
|1 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 3&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|5 x 3, 1 x 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Data Flash&lt;br /&gt;
|DF0 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|256&lt;br /&gt;
|512&lt;br /&gt;
|512&lt;br /&gt;
|1024&lt;br /&gt;
|-&lt;br /&gt;
|DF1 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |DMA&lt;br /&gt;
|Channels&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
|Move Engines&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Resource Partitions&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
The AURIX™ TC3xx family is a series of high-performance microcontrollers widely used in automotive and industrial applications. Compilers for the AURIX™ TC3xx are crucial for developers aiming to optimize performance, reliability, and safety in their applications. One significant aspect of the compiler landscape for AURIX™ TC3xx is the limited direct support from mainline open-source compilers such as GCC or LLVM/Clang. The primary reason for this is the stringent requirements for functional safety in automotive and industrial applications, which demand specialized features and compliance with safety standards that are often not met by general-purpose open-source compilers.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Compilers ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Tasking&#039;&#039;&#039;: Tasking compilers are renowned for their robust support for automotive applications, offering advanced debugging capabilities and optimization techniques tailored for the AURIX™ architecture. They provide extensive code optimization, comprehensive debugging tools, and strong support for safety standards such as ISO 26262, making them ideal for developing high-performance, reliable, and safe applications.&lt;br /&gt;
# &#039;&#039;&#039;HighTec&#039;&#039;&#039;: The HighTec compiler is a popular choice, known for its Eclipse-based development environment and strong multicore support. HighTec provides both GCC and LLVM-based ports of open-source compilers tailored specifically for the AURIX™ TC3xx family. These compilers offer efficient parallel execution, advanced code analysis, and an integrated development environment, ensuring robust performance and compliance with safety standards.&lt;br /&gt;
# &#039;&#039;&#039;Green Hills Software&#039;&#039;&#039;: Green Hills Software provides a highly optimized toolchain aimed at safety-critical applications, focusing on high performance and strict compliance with automotive standards. Their compiler offers superior optimization, extensive safety features, and a proprietary IDE with specialized tools for automotive development, ensuring developers can meet the stringent demands of functional safety.&lt;br /&gt;
&lt;br /&gt;
=== GCC for AURIX™ ===&lt;br /&gt;
&lt;br /&gt;
While mainline GCC does not directly support the AURIX™ TC3xx family, there is an unofficial GCC version available for AURIX™. Due to the GNU General Public License (GPL), the source code from HighTec was retrieved and, along with binary versions, published on GitHub:&lt;br /&gt;
&lt;br /&gt;
*GCC 4.9.4/Binutils 2.20/Newlib 1.18 for Tricore™ AURIX™ [[https://github.com/volumit/package_494 Source]] [[https://github.com/volumit/tricore_gcc494_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc494_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GCC 9.4.0/Binutils 2.20/Newlib 1.18 for Tricore™ AURIX™ [[https://github.com/volumit/package_940 Source]] [[https://github.com/volumit/tricore_gcc940_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc940_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GDB 10.0.50 for Tricore™ AURIX™ [[https://github.com/volumit/gdb-tricore Source]]&lt;br /&gt;
==emmtrix Tools for AURIX™ TC3xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX™ TC3xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC4x|Infineon AURIX™ TC4x]]&lt;br /&gt;
*[[Infineon AURIX TC2xx|Infineon AURIX™ TC2xx]]&lt;br /&gt;
*[[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&lt;br /&gt;
*[https://documentation.infineon.com/aurixtc3xx/docs/qmd1702366622648 AURIX™ TC3xx user manuals]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d3605221d96 AURIX™ TC3xx User Manual Part-1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d35f8541d94 AURIX™ TC3xx User Manual Part-2]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd AURIX™ TC3xx Architecture vol 1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 AURIX™ TC3xx Architecture vol 2]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
 |title=Infineon AURIX TC3xx Family – Deep Dive&lt;br /&gt;
 |description=This deep dive into Infineon&#039;s AURIX TC3xx family explores its multi-core TriCore architecture, real-time capabilities, safety and security features and tools&lt;br /&gt;
 |image=File:AURIX_TC399_LFBGA-516_plain.jpg&lt;br /&gt;
 |keywords=AURIX, Infineon, TC3xx, microcontroller, TriCore, automotive, ADAS, ISO 26262, functional safety, embedded security, ASIL-D, deep dive&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2689</id>
		<title>Infineon AURIX TC3xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2689"/>
		<updated>2025-04-08T07:53:31Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AURIX TC399 LFBGA-516 plain.jpg|thumb|Infineon AURIX™ TC3xx second-generation microcontroller (TC399 BGA package). The AURIX™ TC3xx family integrates multiple TriCore CPUs and on-chip safety/security modules for automotive applications.|alt=TC399 BGA package]]&lt;br /&gt;
The &#039;&#039;&#039;Infineon AURIX™ TC3xx&#039;&#039;&#039; (Automotive Realtime Integrated neXt-generation architecture) is a family of 32-bit automotive microcontrollers introduced as the second generation of Infineon’s AURIX™ platform. Launched in 2016 as a successor to the earlier [[Infineon AURIX TC2xx|AURIX™ TC2xx series]], the TC3xx devices emphasize high performance, functional safety, and embedded security for advanced automotive and industrial applications. AURIX™ TC3xx microcontrollers feature a hexa-core [[TriCore Instruction Set Architecture|&#039;&#039;TriCore&#039;&#039; processor architecture]] with enhanced safety measures, making them well-suited for demanding tasks such as autonomous driving domain controllers, powertrain control, and sensor data fusion in advanced driver-assistance systems (ADAS). The combination of multiple CPU cores, extensive on-chip memory, and a rich peripheral set allows TC3xx chips to deliver real-time responsiveness and reliability in safety-critical environments while meeting stringent automotive standards (such as ISO 26262 for functional safety).&amp;lt;ref name=&amp;quot;ref1951907555&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX™ https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1428109010&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1948477695&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Applications==&lt;br /&gt;
AURIX™ TC3xx microcontrollers are used in a variety of safety-critical and high-performance applications across the automotive and industrial sectors. Key application domains include:&lt;br /&gt;
*&#039;&#039;&#039;Automotive Systems:&#039;&#039;&#039; The TC3xx family was primarily designed for automotive use and finds broad application in vehicles’ electronic control units (ECUs). Notably, it is used in &#039;&#039;powertrain and drivetrain control&#039;&#039; (engine management, transmission control, hybrid/electric vehicle inverter control, battery management) where its real-time processing and resilience support precise actuator control. It is also deployed in &#039;&#039;chassis and safety systems&#039;&#039; such as anti-lock braking systems (ABS), electronic stability control, airbag controllers, and electric power steering, leveraging its redundancy and fast response for fail-safe operation. With the growth of ADAS and autonomous driving, AURIX™ TC3xx devices serve as domain controllers for &#039;&#039;ADAS sensor fusion&#039;&#039;, handling data from radar, LiDAR, camera, and ultrasonic sensors and performing environment modeling and decision-making algorithms. Their combination of multiple cores and a built-in radar signal processing sub-system makes them an attractive choice for tasks like front radar processing, sensor fusion hubs, and &#039;&#039;autonomous driving domain controllers&#039;&#039; that must meet ASIL-D safety levels.&amp;lt;ref name=&amp;quot;ref14281090102&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Industrial Automation and Robotics:&#039;&#039;&#039; Infineon has also positioned the AURIX™ family for use in industrial applications that demand high reliability. The TC3xx MCUs, with their hardware self-test mechanisms and safety documentation, can be found in &#039;&#039;industrial motor drives, robotics controllers, and PLCs (programmable logic controllers)&#039;&#039;, where they help achieve functional safety certifications up to SIL-3 (according to IEC 61508). The powerful TriCore cores and rich peripheral set enable complex motor control algorithms (e.g., field-oriented control for servo motors) and real-time sensor processing in factory automation. Additionally, the support for automotive-grade networking (CAN/CAN-FD, Ethernet) and timing peripherals makes them suitable for synchronous control in robotics and machinery. Infineon’s provision of AUTOSAR-compatible software for AURIX™ has even facilitated its use in non-automotive settings such as medical devices and elevator controllers, where proven safety and security are required.&amp;lt;ref name=&amp;quot;ref496771205&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Aerospace and Defense:&#039;&#039;&#039; The high fault-tolerance and deterministic performance of the AURIX™ TC3xx architecture also attract interest for aerospace and other mission-critical uses. In avionics systems or autonomous drones, for instance, the lockstep core configuration and robust error checking of AURIX™ can provide an added layer of reliability for flight control computers or navigation systems. While primarily an automotive chip, its ability to operate in harsh conditions (−40°C to 150°C range) and to detect internal failures in real-time makes it viable for certain aerospace electronic systems. Some defense and aerospace projects leverage COTS (commercial off-the-shelf) automotive components like AURIX™ for applications such as unmanned vehicle control and high-reliability communication links, given its safety pedigree. (In these domains, additional analysis and possibly radiation testing would be performed if the devices are used in high-altitude or space environments.)&lt;br /&gt;
== Architecture Overview ==&lt;br /&gt;
[[File:Infineon TC3xx Architecture.webp|545x545px|thumb|alt=TC3xx Architecture Overview|TC3xx Architecture Overview]]&lt;br /&gt;
=== Processor Cores and Architecture===&lt;br /&gt;
The AURIX™ TC3xx family implements Infineon’s TriCore™ architecture, which uniquely combines aspects of RISC microcontrollers, DSP (digital signal processor) capabilities, and conventional microprocessor features into a single core design. Each TC3xx device can include up to six independent TriCore 32-bit CPU cores (TriCore version 1.6.2), all capable of running at up to 300 MHz clock frequency. Four of these cores can operate in dual-core lockstep pairs (with one core acting as a redundant checker for its partner) to provide fault detection for safety-critical functions. The TriCore cores use a superscalar Harvard architecture with 32-bit instruction words (and support for mixed 16/32-bit instruction encoding for code density). Each core includes a dedicated Floating Point Unit (FPU) for single-precision arithmetic and supports DSP-oriented instructions (e.g. single-cycle 16×16 MAC operations, SIMD for 16-bit/8-bit data) to accelerate signal processing tasks. For fast real-time performance, the architecture offers low interrupt latency (with automatic context save on-chip) and features like zero-overhead loops and a programmable peripheral timer unit for scheduling tasks. In total, a high-end TC3xx (such as the TC39x) provides six 300 MHz cores plus four checker cores, yielding a theoretical processing throughput of up to ~2400 DMIPS (Dhrystone MIPS) when all cores are utilized. This represents roughly a threefold increase in computational power over the previous AURIX™ generation (which achieved ~740 DMIPS with three cores).&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot;&amp;gt;UDE Debug, Trace and Test solutions for Infineon TriCore™ AURIX™ TC32, TC33, TC35, TC36, TC37, TC38, TC39, TC3x Microcontrollers       https://www.pls-mc.com/products/infineon-tricore-aurix-tc32-tc33-tc35-tc36-tc37-tc38-tc39-microcontrollers/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Memory Subsystem and Cache===&lt;br /&gt;
AURIX™ TC3xx microcontrollers integrate a large on-chip memory system to meet real-time and safety requirements. Program flash memory sizes range up to 16 MB on the largest models, with over 6 MB of on-chip SRAM available for data and scratchpad usage. Each TriCore CPU has its own tightly-coupled local memories as well as caches: for example, each core includes a 32 KB instruction cache and a 16 KB data cache. In addition, every core has separate local RAM blocks (Harvard architecture) for instructions and data (often termed PSPR and DSPR – Program Scratch-Pad RAM and Data Scratch-Pad RAM) that allow deterministic access for time-critical routines. Shared global memory is provided via a Local Memory Unit (LMU) which can be up to several hundred kilobytes (for instance, 768 KB in the TC39x) accessible by all cores. The memory system is connected by a high-bandwidth internal bus fabric (the SRI crossbar and peripheral buses) that arbitrates access between cores, DMA engines, and peripherals. This architecture ensures that each core can quickly fetch instructions and data either from its local cache/RAM or the central memory, enabling efficient parallel processing. Memory protection hardware is also built-in to isolate tasks of different criticality, an important feature for safety and security.&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Peripherals and Interfaces===&lt;br /&gt;
One of the strengths of the AURIX™ TC3xx architecture is its extensive set of on-chip peripherals and interface controllers, designed to handle the complex networking and I/O needs of modern vehicles and industrial systems. Key peripheral features and interfaces include:&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref3635926&amp;quot;&amp;gt;AURIX™ Training System Architecture https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_System_Architecture-Training-v01_00-EN.pdf?fileId=5546d46272e49d2a0172eb476d56739e&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Networking Interfaces:&#039;&#039;&#039; Multiple CAN FD controllers (supporting up to 12 CAN-FD channels in high-end variants) for in-vehicle networking, with legacy CAN and LIN interfaces (up to 24 LIN channels) for lower-speed device communication. Many TC3xx devices also integrate up to two FlexRay controllers for time-triggered automotive networks (maintaining compatibility with earlier automotive communication standards). For high-bandwidth data, a Gigabit Ethernet MAC is included, enabling uses like automotive Ethernet (e.g., audio-video bridging and IP-based connectivity).&lt;br /&gt;
* &#039;&#039;&#039;Analog and Timers:&#039;&#039;&#039; A suite of analog peripherals including multiple ADC units for sensor interfacing and motor control, and DACs in some models. Sophisticated timer units are on-chip, notably the Generic Timer Module (GTM) and Capture/Compare Units (CCU6), which can generate complex PWM waveforms and handle events for engine control, power inverters, or robotics with minimal CPU intervention. These timers enable precise control of actuators (e.g. fuel injection timing, electric motor commutation) in real time.&lt;br /&gt;
*&#039;&#039;&#039;Serial Interfaces:&#039;&#039;&#039; SPI, I²C, UART/LIN and other serial interfaces for connecting to external sensors, actuator controllers, and memory. The controllers often support multiple instances (several SPI channels, etc.) to accommodate numerous devices. AURIX™ TC3xx also provides an external bus interface (EBU) for parallel memory or FPGA connectivity, and an SD/MMC interface (eMMC) to connect external flash memory for data logging or over-the-air update storage.&lt;br /&gt;
*&#039;&#039;&#039;Dedicated Processing Units:&#039;&#039;&#039; Some AURIX™ TC3xx models include special accelerators, such as a hardware Fast Fourier Transform unit (HW-FFT) and up to two Signal Processing Units (SPUs) optimized for radar signal processing. These enable the microcontroller to handle radar front-end data or other intensive DSP tasks (like Fourier transforms for radar or audio signals) on-chip, which is crucial for advanced driver assistance sensors. There is also a &#039;&#039;Security Module&#039;&#039; (covered in a later section) and a Safety Management Unit that supervise system integrity.&lt;br /&gt;
*&#039;&#039;&#039;Other On-chip Modules:&#039;&#039;&#039; Watchdog timers, error-correction coders for memories (ECC on flash and RAM for reliability), a programmable interrupt system, multiple DMA channels (up to 128 DMA channels) for efficient data movement, and debug interfaces (JTAG and a 2/3-pin DAP) for development. The on-chip debug system supports tracing of program execution (via a built-in Emulation Memory, MCDS) to aid in complex multicore software development.&lt;br /&gt;
&lt;br /&gt;
Overall, the AURIX™TC3xx provides a highly integrated SoC-like platform, allowing a single chip to manage tasks ranging from powertrain control and chassis control to infotainment gateways. This high level of integration reduces the need for separate companion chips and helps to lower system complexity and cost.&lt;br /&gt;
===Performance and Benchmarking===&lt;br /&gt;
Fabricated in a 40 nm embedded flash process&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;, AURIX™ TC3xx processors achieve significant performance gains over prior generations while maintaining automotive-grade power efficiency. With six 32-bit cores at 300 MHz (four of them paired in lockstep), a flagship TC3xx device (e.g., TC39x) can deliver up to approximately 2,400 DMIPS of aggregate computing throughput&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;. In terms of per-core performance, the TriCore architecture yields around 1.3–2.0 DMIPS/MHz depending on the instruction mix, meaning each 300 MHz core can approach ~400–600 DMIPS in optimized scenarios&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX™ - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. This is on par with or exceeding many contemporary 32-bit automotive MCUs. The integrated DSP extensions and optional accelerators (like the FFT unit) also enable high-speed signal processing, with Infineon citing up to ~1.8 GFLOPS of DSP throughput for certain operations&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Real-world performance improvements of the TC3xx over its predecessor are notable: for example, compared to the first-generation AURIX™ (which offered up to 740 DMIPS), the TC3xx’s expanded core count and clock speed provide roughly three times the computational power on the same type of workload&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. This extra headroom allows more functions (such as running multiple control algorithms or sensor fusion tasks in parallel) to be consolidated onto one microcontroller without compromising real-time deadlines&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. Despite the increase in speed and core count, the TC3xx family was designed with power and thermal constraints in mind, achieving these gains within similar power consumption envelopes as the previous generation by leveraging the smaller 40 nm process and power-saving features like clock gating&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot; /&amp;gt;. The deterministic real-time performance (with features like lockstep and tightly-coupled memory) makes the AURIX™ TC3xx suitable for the most demanding automotive applications, where consistent low latency and high throughput are required simultaneously.&lt;br /&gt;
&lt;br /&gt;
== On-Chip System Connectivity and Bridges ==&lt;br /&gt;
[[File:TC3xx On-Chip System Connectivity.png|thumb|The TC3xx has two &#039;&#039;&#039;SRI Domains&#039;&#039;&#039; (SRI0 and SRI1). CPU0 to CPU3 are connected to SRI0, CPU4/5 are connected to SRI1.|alt=TC3xx On-Chip System Connectivity|423x423px]]&lt;br /&gt;
The AURIX™ TC3xx Platform has three independent on-chip connectivity resources: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System Resource Interconnect Fabric (SRI Fabric)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other high bandwidth requestors to high bandwidth memories and other resources for instruction fetches and data accesses. A key component of the fabric is the SRI crossbar, which connects all the agents in one SRI domain. The SRI crossbar carries the transactions between the SRI Masters and SRI Slaves of the domain. The SRI crossbar supports parallel transactions between different SRI Master and SRI Slave agents. In addition to the parallelism of concurrent requests, it also supports pipelined requests from an SRI Master to a SRI Slave.&lt;br /&gt;
* &#039;&#039;&#039;System Peripheral Bus (SPB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other SPB masters to the medium and low bandwidth peripherals. SPB masters do not directly connect to the SRI Fabric, and will access SRI attached resources via a SFI_F2S Bridge.&lt;br /&gt;
* &#039;&#039;&#039;Back Bone Bus (BBB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and SPB masters with ADAS resources. SRI Masters do not directly connect to the BBB, but access BBB attached resources via a SFI_S2F Bridge. SPB masters also do not directly connect to the BBB, but access BBB attached resources via bridging over the SRI Fabric.&lt;br /&gt;
&lt;br /&gt;
=== CPU Resource Access Times ===&lt;br /&gt;
These tables describe the CPU access times to various resources in CPU clock cycles for the AURIX™ TC3xx Platform. In the case of load or fetch accesses, the access times are the minimum number of CPU stall cycles to complete the access. If there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes. &lt;br /&gt;
&lt;br /&gt;
For write access, the access times are the maximum for a sequence of such access (non-conflicting). In many cases for a singleton access, or a short sequence, write buffering reduces the stall effect seen by a CPU, sometimes to 0. However, as with loads and fetches, if there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes.&lt;br /&gt;
&lt;br /&gt;
==== Access latency for global resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! CPU stall cycles&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| Data read from System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |The final number of stall cycles will depend&amp;lt;br&amp;gt;on the real number of WS generated by the target resource.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;9 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |When SFI_S2F is connected to XBar2 (TC39x and TC37xED)&amp;lt;br&amp;gt;there is an additional latency due to access going through an S2S.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;5 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;6 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;3 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Module Wait State&#039;&#039;&#039;: The number of wait states for read and for write accesses is &amp;gt;= 1 and depends on the accessed module and its configuration.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU Accesses: Stall cycles for local and SRI resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! Local CPU !! Local SRI !! Remote SRI Domain&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DSPR || 0 || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DLMU || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DLMU || 2 || 5, {{rev|3|with Pipelining}}|| 5, 4&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DLMU || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to PSPR || See local SRI column || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PFlash || 5 + PWS || 10 + PWS || 13 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer miss) || 2 + PWS || 9 + PWS || 12 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer hit) || 3 || 6 || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to LMU || n.a. || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DFlash || n.a. || 5 + 3*(3 + DCWS) || 8 + 3*(3 + DCWS)&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC39x, TC37xED) || n.a. || n.a. || 14, {{rev|15|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC39x, TC37xED) || n.a. || n.a. || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC35x, TC33xED) || n.a. || 11, {{rev|12|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC35x, TC33xED) || n.a. || 9 || n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from DAM || n.a. || 10 || 13&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to DAM || n.a. || 7 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;Remote SRI Domain&#039;&#039;&#039;: Only applies to products with SRI extenders. Additional latency due to access going through an S2S&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;DCWS&#039;&#039;&#039;: Configured DFlash Corrected Wait States (Includes cycles for DFlash access cycles and ECC correction latency)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Subsystem ==&lt;br /&gt;
[[File:TC3xx Processor Core, Local Memory and Connectivity.png|alt=TC3xx Processor Core, Local Memory and Connectivity|thumb|Processor Core, Local Memory and Connectivity]]The Infineon AURIX™ TC3xx features up to 6 processor cores (CPU0 ... CPU5) implementing the [[TriCore Instruction Set Architecture|TC1.6.2 instruction set architecture]]. The following section focuses on the microarchitectural details of the CPU subsystem. For more information about the ISA, please take a look at the [[TriCore Instruction Set Architecture]].&lt;br /&gt;
&lt;br /&gt;
The processor core connects to the following memories and bus interfaces (where implemented):&lt;br /&gt;
*Program Scratch-Pad SRAM (PSPR)&lt;br /&gt;
*Data Scratch-Pad SRAM (DSPR)&lt;br /&gt;
*Program Cache (PCache)&lt;br /&gt;
*Data Cache (DCache)&lt;br /&gt;
*Local Memory Unit (DLMU)&lt;br /&gt;
*Local Pflash bank (LPB)&lt;br /&gt;
*SRI slave interface (x2)&lt;br /&gt;
*SRI master Interface&lt;br /&gt;
*SPB master interface&lt;br /&gt;
&lt;br /&gt;
=== TC1.6.2P Implementation Features ===&lt;br /&gt;
*Most instructions executed in 1 cycle&lt;br /&gt;
*Branch instructions in 1, 2 or 3 cycles (using dynamic branch prediction)&lt;br /&gt;
*Wide memory interface for fast context switch&lt;br /&gt;
* Automatic context save-on-entry and restore-on-exit for: subroutine, interrupt, trap&lt;br /&gt;
*Six memory protection register sets&lt;br /&gt;
*Dual instruction issuing (in parallel into Integer Pipeline and Load/Store Pipeline)&lt;br /&gt;
*Third pipeline for loop instruction only (zero overhead loop)&lt;br /&gt;
*Single precision Floating Point Unit (IEEE-754 Compatible)&lt;br /&gt;
*Dedicated Integer divide unit&lt;br /&gt;
*18 data memory protection ranges, 10 code memory protection ranges arranged in 6 sets&lt;br /&gt;
&lt;br /&gt;
=== Superscalar Architecture ===&lt;br /&gt;
The processor core within the AURIX™ TC3xx family, specifically the TC1.6.2P implementation, employs a superscalar architecture characterized by three parallel pipelines: the Integer Pipeline, the Load/Store Pipeline, and the Loop Pipeline. Superscalar execution is a form of instruction-level parallelism that enables the processor to issue and execute multiple instructions during a single clock cycle. The TriCore TC3xx core&#039;s superscalar architecture allows it to issue and execute multiple instructions in parallel. Specifically, it can issue up to two instructions simultaneously to the Integer and Load/Store pipelines. However, there are certain constraints on this dual issuing capability. For example, back-to-back data arithmetic instructions can only be issued in separate cycles, and a load/store instruction can be issued either on its own or paired with a data arithmetic instruction, provided the load/store instruction is the second in the pair. Under ideal conditions, with careful instruction scheduling, this dual-issue capability can lead to a throughput of close to 0.5 clock cycles per instruction, effectively executing two instructions per cycle.&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Stages ===&lt;br /&gt;
The execution of instructions within the TriCore TC3xx core is managed through a pipeline consisting of several stages. In one document it is mentioned that the pipeline consists of 6 stages &amp;lt;ref name=&amp;quot;ref3635926&amp;quot; /&amp;gt;, but the exact stages remain unclear. From the architecture the following stages can be inferred:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Fetch Stage&#039;&#039;&#039;: The initial stage in the pipeline is the Fetch stage, where instructions are retrieved from memory. This task is handled by the Instruction Fetch Unit (IFU), which is responsible for fetching instructions from the memory system. To improve efficiency, the IFU employs a pre-fetching mechanism, anticipating the instructions that will be needed and bringing them into the processor before they are actually required. Instructions are fetched through a 64-bit wide Program Memory Interface (PMI), allowing for the retrieval of a significant amount of instruction data in each cycle. The fetched instructions are then placed into an issue FIFO, a buffer capable of holding up to six instructions. This buffer plays a crucial role in managing the flow of instructions to the subsequent execution pipelines. The 64-bit fetch width and the instruction buffer are indicative of a design that aims to ensure a continuous supply of instructions to the pipelines, preventing them from being starved of work. A wider fetch path allows for more instruction bits to be obtained from memory in each clock cycle, while the buffer helps to mitigate temporary delays in instruction fetching.&lt;br /&gt;
* &#039;&#039;&#039;Execution Unit&#039;&#039;&#039;: The Execution Unit contains the Integer Pipeline, the Load/Store Pipeline and the Loop Pipeline. All three pipelines operate in parallel and are capable of executing instructions simultaneously. Each pipline has its own decode stage and two execute stages. Furthermore, the TC3xx features a Floating Point Unit (FPU). It is not clear whether the FPU is part of the execution unit or a separate unit. It is assumed that the FPU also has its own decode stage and an unknown number of execute stages&lt;br /&gt;
** &#039;&#039;&#039;Decode Stage&#039;&#039;&#039;: Following the Fetch stage, the instruction are issued to one of the pipelines. In the decode stage of each pipeline, the instruction is examined and translated to determine the specific operation it represents and to identify the operands it will operate on. It is assumed that operands are read from the register file during the decode stage.&lt;br /&gt;
** &#039;&#039;&#039;Execute Stage&#039;&#039;&#039;: The Execute stage is where the actual operation specified by the instruction is carried out. Pipeline hazards (stalls) are minimised by the use of forwarding paths between pipeline stages allowing the results of one instruction to be used by a following instruction as soon as the result becomes available.&lt;br /&gt;
** &#039;&#039;&#039;Writeback Stage&#039;&#039;&#039;: The final stage in the pipeline is the Writeback stage. In this stage, the results produced by the executed instruction are written back to the processor&#039;s register file, making them available for subsequent instructions. It is unclear whether the writeback stage is part of the (two) execution stages or a separate stage.&lt;br /&gt;
&lt;br /&gt;
=== Execution Pipelines ===&lt;br /&gt;
The TriCore TC3xx core leverages four parallel pipelines to enhance its performance. Each pipeline is designed to handle a specific class of instructions:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Integer Pipeline:&#039;&#039;&#039; This pipeline is responsible for executing integer arithmetic and logical instructions, including data-conditional jump instructions, bit manipulation operations, as well as division and multiply-accumulate (MAC) instructions.&lt;br /&gt;
* &#039;&#039;&#039;Load/Store Pipeline:&#039;&#039;&#039; The primary function of this pipeline is to manage memory access operations, including loading data from memory and storing data to memory. It also handles address arithmetic, unconditional jump instructions, procedure call instructions, context-switching operations, and control flow related to context save areas (CSAs).&lt;br /&gt;
* &#039;&#039;&#039;Loop Pipeline:&#039;&#039;&#039; This is a specialized pipeline designed to facilitate zero-overhead loops, a technique that significantly improves the performance of iterative code sections. Its design aims to eliminate or minimize the overhead typically associated with loop control, such as incrementing counters and checking loop conditions. Some documentation suggests that the loop pipeline comes along with a &amp;quot;Loop Cache&amp;quot;. This dedicated cache would likely be used to store instructions belonging to the loop, enabling very fast access and execution for repeated iterations.&lt;br /&gt;
* &#039;&#039;&#039;Floating Point Unit (FPU):&#039;&#039;&#039; The FPU is responsible for executing floating-point arithmetic operations&lt;br /&gt;
&lt;br /&gt;
=== Store Buffers ===&lt;br /&gt;
The TriCore TC3xx core include &#039;&#039;&#039;Store Buffers&#039;&#039;&#039; to decouple memory write operations from CPU instruction execution. All stores from the Load/Store Pipeline are placed in the store buffer prior to being written to local memory or transferred via the bus system. Write data is taken from the store buffers and written to memory when the target memory or bus interface becomes available. In normal operation the CPU will prioritise memory load operations over store operations in order to improve performance unless the store buffer is full or the order of load and store operations must be preserved (e.g. peripheral space access). The store buffer can hold the data for up to 6 stores operations. To improve performance the store buffer will merge consecutive byte, half-word, and word writes of the same location to reduce the number of memory accesses required.&lt;br /&gt;
&lt;br /&gt;
=== Instruction Timing ===&lt;br /&gt;
&lt;br /&gt;
==Functional Safety and Security Features==&lt;br /&gt;
===Hardware Security Module and Encryption===&lt;br /&gt;
One of the defining features of the AURIX™ TC3xx family is its robust hardware-based security subsystem, implemented to protect against cyber threats and unauthorized manipulation of vehicle systems. Each TC3xx MCU includes a dedicated &#039;&#039;Hardware Security Module&#039;&#039; (HSM), which is essentially an on-chip co-processor with its own CPU and cryptographic engine designed to handle secure operations. In the second-generation AURIX™ (TC3xx), the HSM was upgraded with support for asymmetric cryptography (e.g., RSA, ECC algorithms) in hardware, providing significantly faster public-key encryption and authentication capabilities than pure software implementations. This HSM supports &#039;&#039;&#039;EVITA Full&#039;&#039;&#039; (the highest level of the EU’s EVITA automotive security requirements), meaning it can perform secure boot, message authentication, and encryption at a level suitable for protecting critical in-vehicle communications. For example, the HSM can encrypt and authenticate CAN/Ethernet messages to prevent spoofing or tampering on the vehicle network, and it can manage cryptographic keys securely isolated from the main application cores.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The security module enables features like &#039;&#039;&#039;secure boot&#039;&#039;&#039;, where the AURIX™ will only execute firmware that is digitally signed by the vehicle manufacturer, thereby preventing unauthorized or malicious code. It also facilitates &#039;&#039;over-the-air (OTA) updates&#039;&#039; in a secure manner: the TC3xx HSM can verify and decrypt update packages received via telematics, allowing firmware upgrades while protecting against attackers attempting to hijack the software. In addition, the HSM includes a true random number generator and supports protocols for immobilizer and theft protection systems. Infineon’s implementation essentially treats the HSM as an “embedded smart card” inside the microcontroller. This approach, building on Infineon’s expertise in chip card security, helps to safeguard sensitive assets like cryptographic keys and to perform secure operations (encryption, decryption, authentication) in hardware, making attacks significantly more difficult. The strong cybersecurity provisions of the AURIX™ TC3xx have made it a preferred choice for vehicle gateway ECUs and central body controllers, which are points of entry for connected car communications and thus high-value targets for hackers. By incorporating the HSM, automotive OEMs can implement advanced security features such as encrypted onboard communication (to thwart bus tampering) and secure diagnostics, ensuring the vehicle’s electronic data is protected against cyber threats even as cars become more connected.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref19484776953&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Functional Safety and Fault Tolerance===&lt;br /&gt;
Beyond cybersecurity, the AURIX™ TC3xx architecture is built with extensive &#039;&#039;functional safety&#039;&#039; features to meet the highest safety integrity levels in automotive systems. The multi-core design supports &#039;&#039;lockstep operation&#039;&#039;, where redundant checker cores run in parallel with main cores and continuously compare results cycle-by-cycle. In TC3xx devices, up to four of the six TriCore CPUs have such lockstep partner cores, allowing the microcontroller to detect any single-point CPU failure instantly (if a discrepancy arises between the core and its checker, a fault is signaled). A &#039;&#039;Safety Management Unit (SMU)&#039;&#039; is integrated on-chip to monitor various fault conditions throughout the device – it aggregates error signals from the lockstep cores, memory ECC monitors, clock/watchdog monitors, and peripheral self-tests, and can initiate safe-state actions (like resetting the chip or signaling an error pin to an external supervisor) if a critical fault is detected. The AURIX™ safety concept also includes a distributed Memory Protection Unit (MPU) arrangement, with multiple memory protection contexts that prevent errant or malicious code from writing to wrong memory areas. This helps contain faults and eases the integration of software with mixed criticality (Infineon allows partitioning software components of different ASIL levels on the same MCU while keeping them isolated).&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref19519075552&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX™ https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crucially, the TC3xx family was developed according to ISO 26262 processes and can achieve &#039;&#039;&#039;ASIL-D&#039;&#039;&#039; (Automotive Safety Integrity Level D), the highest grade for automotive functional safety. Compared to a traditional dual-core lockstep approach, the AURIX’s™ multi-core safety architecture allowed Infineon to reduce certain safety development overheads (earlier Infineon data suggested up to 30% reduction in safety software workload) by providing built-in safety mechanisms and diagnostics. Infineon supplies a comprehensive safety manual and diagnostic libraries for the AURIX™, helping engineers utilize features like CPU self-tests, RAM tests, and CRC checks to comply with safety standards. In addition to automotive standards, the AURIX™ TC3xx has also been qualified for &#039;&#039;&#039;industrial safety&#039;&#039;&#039;: in 2023, Infineon announced support for IEC 61508 metrics, enabling designs with AURIX™ to reach SIL-2 and SIL-3 safety integrity levels for industrial applications. This cross-industry safety compliance is facilitated by the MCU’s redundant design and detailed failure mode documentation (FMEDA) provided by Infineon. In summary, the AURIX™ TC3xx integrates both proactive safety (fault prevention via lockstep, monitoring and protection) and reactive safety (fault detection and safe shutdown), making it a dependable component for systems that cannot afford unintended behavior, whether in cars, factories, or aerospace. &amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref4967712052&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref196858272&amp;quot;&amp;gt;MCUs support industrial functional safety - Electronic Products https://www.electronicproducts.com/mcus-support-industrial-functional-safety/&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Platform Devices ==&lt;br /&gt;
The following table shows a feature overview of the AURIX™ TC3xx Platform family focusing on memory and number of cores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Feature&lt;br /&gt;
!TC33x&lt;br /&gt;
!TC33xEXT&lt;br /&gt;
!TC35x&lt;br /&gt;
!TC36x&lt;br /&gt;
!TC37x&lt;br /&gt;
!TC37xEXT&lt;br /&gt;
!TC38x&lt;br /&gt;
!TC39x&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |CPUs&lt;br /&gt;
|Cores / Checker Cores&lt;br /&gt;
|1 / 1&lt;br /&gt;
|2 / 1&lt;br /&gt;
|3 / 2&lt;br /&gt;
|2 / 2&lt;br /&gt;
|3 / 2&lt;br /&gt;
|3 / 3&lt;br /&gt;
|4 / 2&lt;br /&gt;
|6 / 4&lt;br /&gt;
|-&lt;br /&gt;
|Max. Freq.&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Cache per CPU &lt;br /&gt;
|Program [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |32&lt;br /&gt;
|-&lt;br /&gt;
|Data [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |SRAM per CPU&lt;br /&gt;
|PSPR [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|32|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|DSPR [KB]&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|192|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|-&lt;br /&gt;
|DLMU [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|8|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |SRAM global&lt;br /&gt;
|LMU [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|512&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|128&lt;br /&gt;
|768&lt;br /&gt;
|-&lt;br /&gt;
|DAM [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|32&lt;br /&gt;
| -&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Extension Memory (EMEM)&lt;br /&gt;
|TCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XTM [KB]&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Program Flash&lt;br /&gt;
|Size [MB]&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|10&lt;br /&gt;
|10&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|Banks [MB]&lt;br /&gt;
|1 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 3&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|5 x 3, 1 x 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Data Flash&lt;br /&gt;
|DF0 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|256&lt;br /&gt;
|512&lt;br /&gt;
|512&lt;br /&gt;
|1024&lt;br /&gt;
|-&lt;br /&gt;
|DF1 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |DMA&lt;br /&gt;
|Channels&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
|Move Engines&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Resource Partitions&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
The AURIX™ TC3xx family is a series of high-performance microcontrollers widely used in automotive and industrial applications. Compilers for the AURIX™ TC3xx are crucial for developers aiming to optimize performance, reliability, and safety in their applications. One significant aspect of the compiler landscape for AURIX™ TC3xx is the limited direct support from mainline open-source compilers such as GCC or LLVM/Clang. The primary reason for this is the stringent requirements for functional safety in automotive and industrial applications, which demand specialized features and compliance with safety standards that are often not met by general-purpose open-source compilers.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Compilers ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Tasking&#039;&#039;&#039;: Tasking compilers are renowned for their robust support for automotive applications, offering advanced debugging capabilities and optimization techniques tailored for the AURIX™ architecture. They provide extensive code optimization, comprehensive debugging tools, and strong support for safety standards such as ISO 26262, making them ideal for developing high-performance, reliable, and safe applications.&lt;br /&gt;
# &#039;&#039;&#039;HighTec&#039;&#039;&#039;: The HighTec compiler is a popular choice, known for its Eclipse-based development environment and strong multicore support. HighTec provides both GCC and LLVM-based ports of open-source compilers tailored specifically for the AURIX™ TC3xx family. These compilers offer efficient parallel execution, advanced code analysis, and an integrated development environment, ensuring robust performance and compliance with safety standards.&lt;br /&gt;
# &#039;&#039;&#039;Green Hills Software&#039;&#039;&#039;: Green Hills Software provides a highly optimized toolchain aimed at safety-critical applications, focusing on high performance and strict compliance with automotive standards. Their compiler offers superior optimization, extensive safety features, and a proprietary IDE with specialized tools for automotive development, ensuring developers can meet the stringent demands of functional safety.&lt;br /&gt;
&lt;br /&gt;
=== GCC for AURIX™ ===&lt;br /&gt;
&lt;br /&gt;
While mainline GCC does not directly support the AURIX™ TC3xx family, there is an unofficial GCC version available for AURIX™. Due to the GNU General Public License (GPL), the source code from HighTec was retrieved and, along with binary versions, published on GitHub:&lt;br /&gt;
&lt;br /&gt;
*GCC 4.9.4/Binutils 2.20/Newlib 1.18 for Tricore AURIX™ [[https://github.com/volumit/package_494 Source]] [[https://github.com/volumit/tricore_gcc494_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc494_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GCC 9.4.0/Binutils 2.20/Newlib 1.18 for Tricore AURIX™ [[https://github.com/volumit/package_940 Source]] [[https://github.com/volumit/tricore_gcc940_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc940_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GDB 10.0.50 for Tricore AURIX™ [[https://github.com/volumit/gdb-tricore Source]]&lt;br /&gt;
==emmtrix Tools for AURIX™ TC3xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX™ TC3xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC4x|Infineon AURIX™ TC4x]]&lt;br /&gt;
*[[Infineon AURIX TC2xx|Infineon AURIX™ TC2xx]]&lt;br /&gt;
*[[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&lt;br /&gt;
*[https://documentation.infineon.com/aurixtc3xx/docs/qmd1702366622648 AURIX™ TC3xx user manuals]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d3605221d96 AURIX™ TC3xx User Manual Part-1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d35f8541d94 AURIX™ TC3xx User Manual Part-2]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd AURIX™ TC3xx Architecture vol 1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 AURIX™ TC3xx Architecture vol 2]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
 |title=Infineon AURIX TC3xx Family – Deep Dive&lt;br /&gt;
 |description=This deep dive into Infineon&#039;s AURIX TC3xx family explores its multi-core TriCore architecture, real-time capabilities, safety and security features and tools&lt;br /&gt;
 |image=File:AURIX_TC399_LFBGA-516_plain.jpg&lt;br /&gt;
 |keywords=AURIX, Infineon, TC3xx, microcontroller, TriCore, automotive, ADAS, ISO 26262, functional safety, embedded security, ASIL-D, deep dive&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2688</id>
		<title>Infineon AURIX TC2xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2688"/>
		<updated>2025-04-08T07:45:28Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Infineon AURIX™ TC2xx&#039;&#039;&#039; is a family of 32-bit automotive microcontrollers developed by Infineon Technologies. &#039;&#039;AURIX™&#039;&#039; stands for &#039;&#039;“Automotive Realtime Integrated Next Generation Architecture”&#039;&#039;, reflecting its design for real-time, safety-critical automotive applications&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX™ - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. The TC2xx series (first-generation AURIX™) is based on a multicore architecture featuring up to three independent 32-bit &#039;&#039;&#039;TriCore™&#039;&#039;&#039; processor cores. Introduced around 2012, the AURIX™ TC2xx marked Infineon’s transition to a multicore microcontroller platform (fabricated in 65 nm technology) after earlier single-core TriCore™ generations. It was designed from the ground up to meet stringent automotive safety requirements (ISO 26262) and to provide higher performance and integration for applications like engine management, chassis control, and driver assistance systems.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot;&amp;gt;Optimized for Success - EE Times Europe https://www.eetimes.eu/optimized-for-success/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The AURIX™ TC2xx family’s design philosophy is to combine &#039;&#039;&#039;safety&#039;&#039;&#039;, &#039;&#039;&#039;security&#039;&#039;&#039;, and &#039;&#039;&#039;performance&#039;&#039;&#039; in one scalable MCU platform. It achieves high functional safety compliance (up to &#039;&#039;&#039;ASIL-D&#039;&#039;&#039;, the highest automotive safety integrity level) with less development effort compared to traditional dual-controller lockstep systems&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. Infineon claims that using AURIX™ can cut safety-related development time by ~30% versus classical lockstep architectures, thanks to its built-in fault detection and monitoring hardware. At the same time, the TC2xx provides significant performance headroom – roughly 50% to 100% higher computational performance compared to its predecessors – while maintaining power consumption similar to previous single-core designs. To address emerging automotive security needs, the AURIX™ MCUs also integrate a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) on-chip, which protects against IP theft, fraud, and tampering. This combination of features makes the AURIX™ TC2xx a popular choice for consolidating various automotive control functions (powertrain, safety, body, etc.) onto one platform, without sacrificing reliability or efficiency.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC2xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Architecture==&lt;br /&gt;
The AURIX™ TC2xx is built on Infineon’s &#039;&#039;&#039;TriCore™&#039;&#039;&#039; architecture, which uniquely unifies traits of a RISC processor, a microcontroller, and a DSP (digital signal processor) into one core design. Each TriCore™ CPU in the TC2xx is a 32-bit superscalar processor that supports both 32-bit and 16-bit instruction formats (the latter for code size efficiency). The TriCore™ instruction set architecture includes typical RISC features (load/store architecture, 4 GB address space) and DSP capabilities (such as multiply-accumulate instructions and bit manipulation) in a single core. The cores also have an optional floating-point unit (FPU) and support SIMD (single-instruction multiple-data) operations for signal processing acceleration. The maximum core frequency in the TC2xx family is 300 MHz, and devices achieve about 1.7–2.4 DMIPS/MHz per core, providing robust real-time performance.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In terms of core configuration, high-end AURIX™ TC2xx models implement three main TriCore™ CPUs, which can be run in parallel or in redundant (lockstep) pairs for safety. Some variants include a redundant checker core that shadows a primary core to detect calculation errors (a technique to meet SIL/ASIL safety goals). The multicore architecture is supported by a layered memory system: each TriCore™ has tightly coupled local memory for fast instruction and data access, and they share access to large on-chip Flash and RAM via an internal bus matrix. Memory options in the TC2xx range from about &#039;&#039;&#039;0.5 MB up to 8 MB of on-chip Flash&#039;&#039;&#039;, and from ~50 KB up to 2.7 MB of SRAM, depending on the specific device. This on-chip memory (with ECC protection on memories for safety) allows real-time code execution and data storage without external memory in most use cases. For peripherals and I/O, the AURIX™ architecture includes a rich set of on-chip modules connected via internal buses, such as analog-to-digital converters, timer units, communication interfaces, and direct memory access (DMA) controllers. AURIX™ TC2xx MCUs typically provide interfaces like multiple CAN/CAN-FD channels, LIN/UART, SPI, I²C, Ethernet (on higher-end models), and automotive-specific buses (e.g. FlexRay on some variants), making the chip a self-contained controller for complex automotive networks.&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot;&amp;gt;Infineon TriCore™ - Wikipedia https://en.wikipedia.org/wiki/Infineon_TriCore&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; is a notable part of the AURIX™ TC2xx architecture. It is a sophisticated timer/co-processor integrated on-chip to handle complex timing, PWM generation, input capture, and other signal conditioning tasks across more than 200 channels. There are also specialized accelerators and co-processors on certain TC2xx devices, such as a &#039;&#039;&#039;Hardware Fast Fourier Transform (HFFT)&#039;&#039;&#039; unit for signal processing and a &#039;&#039;&#039;Parallel Pixel Processor&#039;&#039;&#039; for simple video or sensor data processing. These dedicated engines offload the TriCore™ CPUs for specific high-load tasks (e.g. radar signal FFTs or encoder signal processing), improving overall throughput in automotive applications. The AURIX™ architecture uses a single-power supply (5V or 3.3V) design and includes an on-chip voltage regulator (EVR), simplifying power management. The MCUs are offered in a variety of package types (from compact QFP-64 up to large BGA-516) to accommodate different I/O needs. Overall, the TC2xx architecture is highly integrated and optimized for real-time, combining multiple CPU cores with ample flash memory, SRAM, and peripherals on one chip to serve as a &#039;&#039;&#039;central control unit&#039;&#039;&#039; in vehicles.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;AURIX™ Unleashed - RS Components https://docs.rs-online.com/0f3f/0900766b815c315c.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
====CPU access latency (TC29x) ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!CPU Access Type!!Local CPU&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to own DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to own DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to own or other PSPR||8&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to own or other PSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to other DSPR||8&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to other DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from own PSPR&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other PSPR (critical word)||8&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other PSPR (any remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other DSPR (critical word)||8&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other DSPR (any remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Initial Pflash Access (critical word)||7 + configured PFlash Wait States&lt;br /&gt;
|-&lt;br /&gt;
|Initial Pflash Access (remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|PMU PFlash Buffer Hit (critical word)||6&lt;br /&gt;
|-&lt;br /&gt;
|PMU PFlash Buffer Hit (remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Initial Dflash Access||7 + configured DFlash Wait States&lt;br /&gt;
|-&lt;br /&gt;
|TC1.6P Data read from System Peripheral Bus (SPB)&lt;br /&gt;
|{{rev|4|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&amp;lt;br&amp;gt;{{rev|7|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = 2*f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&amp;lt;br&amp;gt;{{rev|10|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = 3*f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
|TC1.6P Data write to System Peripheral Bus (SPB)||0&lt;br /&gt;
|}&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
==Key Features==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Safety Mechanisms:&#039;&#039;&#039; The AURIX™ TC2xx was developed via an ISO 26262-compliant process and includes multiple hardware mechanisms to achieve &#039;&#039;&#039;functional safety up to ASIL-D&#039;&#039;&#039;. Notably, it supports &#039;&#039;lockstep&#039;&#039; operation, where one or two of the TriCore™ CPUs can run in redundant lockstep mode with another core to detect discrepancies (faults) cycle-by-cycle. A Safety Management Unit (&#039;&#039;&#039;SMU&#039;&#039;&#039;) is built in to monitor critical system parameters and handle faults. The architecture employs memory protection units and safe internal communication buses to isolate and supervise different software domains. Other safety features include &#039;&#039;&#039;error-correcting code (ECC)&#039;&#039;&#039; on flash and RAM, redundant peripherals (for example, duplicated ADC channels), watchdog timers, clock and voltage monitors, and self-test routines. These features allow developers to more easily implement safety-critical functions and meet standards like IEC 61508 (SIL-3) or ISO 26262 (ASIL-D) using a single AURIX™ MCU, whereas achieving the same on a traditional single-core MCU might require additional external safety ICs or companion processors.&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Security Functions:&#039;&#039;&#039; Infineon integrated a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) into the AURIX™ TC2xx family to address automotive cybersecurity requirements. This HSM is essentially an on-chip co-processor (with its own CPU and flash) that handles cryptographic operations and secure key storage isolated from the main cores. It follows the EVITA (E-safety Vehicle Intrusion Protected Applications) guidelines for automotive security. The HSM enables features like secure boot, encryption/decryption, authentication, and detection of software tampering. By having a built-in “embedded smart card” for security, the AURIX™ can implement anti-theft, anti-cloning, and secure onboard communication measures without needing an external security chip. This integration is a key differentiator, as it helps protect vehicle functions (e.g. immobilizers, firmware updates, V2X communication) against hacking and unauthorized modifications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Performance and DSP Capability:&#039;&#039;&#039; Each TriCore™ CPU in the TC2xx is capable of up to 300 MHz operation, and combined the multicore setup offers considerable processing power for an MCU (Infineon cites up to ~1.8 GFLOPS of DSP throughput for the highest models). The TriCore™ design delivers around &#039;&#039;&#039;1.7–2.4 DMIPS/MHz&#039;&#039;&#039; per core, meaning a triple-core AURIX™ at max frequency can exceed 2000 DMIPS of total throughput. The inclusion of DSP instructions and dedicated accelerators enables the AURIX™ to handle computationally intensive tasks (like control algorithms, filtering operations, or even rudimentary neural networks) that previously might require a separate DSP or FPGA. A built-in &#039;&#039;&#039;Floating Point Unit&#039;&#039;&#039; on each core supports single-precision (and optional double-precision in some cases) arithmetic, beneficial for model-based control algorithms and automotive sensor processing. Peripherals like the &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; and &#039;&#039;&#039;Hardware FFT&#039;&#039;&#039; accelerator (available on select TC2xx variants) further boost real-time performance for handling high-frequency events (e.g. engine ignition timing, motor control PWM, radar signal analysis) without overloading the CPU. Despite the performance, the TC2xx was designed with efficiency in mind; Infineon managed to double the performance over the prior generation (TC1xx AUDO) while keeping power consumption at comparable levels. The MCUs also support various low-power modes and a standby controller to minimize energy usage when parts of the system are idle.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Power and Integration:&#039;&#039;&#039; As a system-on-chip for vehicles, AURIX™ TC2xx integrates a wide range of &#039;&#039;&#039;communication interfaces&#039;&#039;&#039; and analog/digital peripherals. Common features include multiple CAN bus controllers (often with CAN FD support), LIN/UART, SPI and I²C channels, FlexRay communication in high-end models, and even Ethernet (in variants aimed at gateway or ADAS roles). High-resolution &#039;&#039;&#039;ADC units&#039;&#039;&#039; (with shared and redundant channels) allow precise sensor measurements for engine or chassis control. There are also specialized modules like delta-sigma ADCs and SENT interfaces for automotive sensor inputs. This rich peripheral set reduces the need for external components, helping to lower the overall system Bill of Materials. The TC2xx devices operate over a broad temperature range (typically –40 °C to +150 °C), meeting the demands of under-the-hood automotive environments. They run from a single supply (with internal regulators), simplifying designs, and support both 5 V and 3.3 V systems for compatibility with a variety of sensors and actuators. Combined with its safety and security features, the AURIX’s™ high integration makes it a one-chip solution for many complex embedded applications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
The Infineon AURIX™ TC2xx family is primarily targeted at the &#039;&#039;&#039;automotive industry&#039;&#039;&#039;, especially domains requiring high reliability and real-time control. Its initial use cases were in &#039;&#039;&#039;powertrain&#039;&#039;&#039; and engine management systems – for example, controlling combustion engines, managing fuel injection and ignition, and coordinating electric motor and battery systems in hybrid or electric vehicles. The multi-core AURIX™ can run multiple control algorithms in parallel (e.g. for an engine’s cylinders, transmission and motor inverter concurrently), which is valuable in modern electrified powertrains. Beyond engines, AURIX™ TC2xx MCUs are used in &#039;&#039;&#039;chassis and safety systems&#039;&#039;&#039;: they can serve as the central controller for &#039;&#039;&#039;anti-lock braking systems (ABS)&#039;&#039;&#039; and stability control, &#039;&#039;&#039;airbag control units&#039;&#039;&#039;, &#039;&#039;&#039;electric power steering (EPS)&#039;&#039;&#039; systems, and suspension controllers. Advanced Driver Assistance Systems (&#039;&#039;&#039;ADAS&#039;&#039;&#039;) and autonomous driving modules in earlier generations of vehicles have also employed AURIX™ for tasks such as sensor fusion, radar signal processing, and acting as a safety supervisor for driving assistance features&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. For example, a radar unit for adaptive cruise control might use an AURIX™ to perform real-time signal processing (using its DSP capabilities and HFFT) and make high-level decisions, all within an ASIL-D safe environment.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot;&amp;gt;https://resources.tasking.com/sites/default/files/2021-02/Take%20Advantage%20of%20Infineon%20AURIX%20TC3xx%20Family%20With%20the%20Right%20Compiler_WEB.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to its safety certification and robust design, the AURIX™ TC2xx has seen adoption in any application that cannot tolerate failure. This includes &#039;&#039;&#039;industrial automation and robotics&#039;&#039;&#039;, where the MCU’s reliability and support for functional safety (IEC 61508) are attractive. In industrial motor drives or robotics controllers, an AURIX™ might handle precise motor control algorithms and system monitoring. Other use cases outside pure automotive include &#039;&#039;&#039;commercial vehicles and transportation&#039;&#039;&#039; (trucks, agricultural and construction machinery), which have similar safety and durability requirements. The AURIX’s™ extensive communication interfaces also make it suitable as a gateway or central node in complex networks – for instance, acting as a domain controller in modern automotive E/E architectures to coordinate data between powertrain, body, and ADAS subsystems. Some &#039;&#039;&#039;electric vehicle (EV)&#039;&#039;&#039; platforms use AURIX™ MCUs in battery management systems and inverter controls, leveraging its calculation power for battery algorithms and its safety for monitoring cell health. In summary, the TC2xx family finds use in scenarios that demand &#039;&#039;&#039;real-time performance with high safety integrity&#039;&#039;&#039;, predominantly in automotive (engine, transmission, chassis, safety, ADAS) but also in high-end industrial embedded systems.&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==emmtrix Tools for AURIX™ TC2xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX™ TC2xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ TC2xx / [[Infineon AURIX TC3xx|TC3xx]]/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx|Infineon AURIX™ TC3xx]]&lt;br /&gt;
* [[Infineon AURIX TC4x|Infineon AURIX™ TC4x]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture|TriCore™ Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&lt;br /&gt;
* [https://www.infineon.com/dgdl/Infineon-TC29x_B-step-UM-v01_03-EN.pdf?fileId=5546d46269bda8df0169ca1bdee424a2 TC29x B-Step User Manual]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2687</id>
		<title>Infineon AURIX TC3xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2687"/>
		<updated>2025-04-08T07:33:49Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AURIX TC399 LFBGA-516 plain.jpg|thumb|Infineon AURIX™ TC3xx second-generation microcontroller (TC399 BGA package). The AURIX™ TC3xx family integrates multiple TriCore CPUs and on-chip safety/security modules for automotive applications.|alt=TC399 BGA package]]&lt;br /&gt;
The &#039;&#039;&#039;Infineon AURIX™ TC3xx&#039;&#039;&#039; (Automotive Realtime Integrated neXt-generation architecture) is a family of 32-bit automotive microcontrollers introduced as the second generation of Infineon’s AURIX™ platform. Launched in 2016 as a successor to the earlier [[Infineon AURIX TC2xx|AURIX™ TC2xx series]], the TC3xx devices emphasize high performance, functional safety, and embedded security for advanced automotive and industrial applications. AURIX™ TC3xx microcontrollers feature a hexa-core [[TriCore Instruction Set Architecture|&#039;&#039;TriCore&#039;&#039; processor architecture]] with enhanced safety measures, making them well-suited for demanding tasks such as autonomous driving domain controllers, powertrain control, and sensor data fusion in advanced driver-assistance systems (ADAS). The combination of multiple CPU cores, extensive on-chip memory, and a rich peripheral set allows TC3xx chips to deliver real-time responsiveness and reliability in safety-critical environments while meeting stringent automotive standards (such as ISO 26262 for functional safety).&amp;lt;ref name=&amp;quot;ref1951907555&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1428109010&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1948477695&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Applications==&lt;br /&gt;
AURIX™ TC3xx microcontrollers are used in a variety of safety-critical and high-performance applications across the automotive and industrial sectors. Key application domains include:&lt;br /&gt;
*&#039;&#039;&#039;Automotive Systems:&#039;&#039;&#039; The TC3xx family was primarily designed for automotive use and finds broad application in vehicles’ electronic control units (ECUs). Notably, it is used in &#039;&#039;powertrain and drivetrain control&#039;&#039; (engine management, transmission control, hybrid/electric vehicle inverter control, battery management) where its real-time processing and resilience support precise actuator control. It is also deployed in &#039;&#039;chassis and safety systems&#039;&#039; such as anti-lock braking systems (ABS), electronic stability control, airbag controllers, and electric power steering, leveraging its redundancy and fast response for fail-safe operation. With the growth of ADAS and autonomous driving, AURIX™ TC3xx devices serve as domain controllers for &#039;&#039;ADAS sensor fusion&#039;&#039;, handling data from radar, LiDAR, camera, and ultrasonic sensors and performing environment modeling and decision-making algorithms. Their combination of multiple cores and a built-in radar signal processing sub-system makes them an attractive choice for tasks like front radar processing, sensor fusion hubs, and &#039;&#039;autonomous driving domain controllers&#039;&#039; that must meet ASIL-D safety levels.&amp;lt;ref name=&amp;quot;ref14281090102&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Industrial Automation and Robotics:&#039;&#039;&#039; Infineon has also positioned the AURIX™ family for use in industrial applications that demand high reliability. The TC3xx MCUs, with their hardware self-test mechanisms and safety documentation, can be found in &#039;&#039;industrial motor drives, robotics controllers, and PLCs (programmable logic controllers)&#039;&#039;, where they help achieve functional safety certifications up to SIL-3 (according to IEC 61508). The powerful TriCore cores and rich peripheral set enable complex motor control algorithms (e.g., field-oriented control for servo motors) and real-time sensor processing in factory automation. Additionally, the support for automotive-grade networking (CAN/CAN-FD, Ethernet) and timing peripherals makes them suitable for synchronous control in robotics and machinery. Infineon’s provision of AUTOSAR-compatible software for AURIX™ has even facilitated its use in non-automotive settings such as medical devices and elevator controllers, where proven safety and security are required.&amp;lt;ref name=&amp;quot;ref496771205&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Aerospace and Defense:&#039;&#039;&#039; The high fault-tolerance and deterministic performance of the AURIX™ TC3xx architecture also attract interest for aerospace and other mission-critical uses. In avionics systems or autonomous drones, for instance, the lockstep core configuration and robust error checking of AURIX™ can provide an added layer of reliability for flight control computers or navigation systems. While primarily an automotive chip, its ability to operate in harsh conditions (−40°C to 150°C range) and to detect internal failures in real-time makes it viable for certain aerospace electronic systems. Some defense and aerospace projects leverage COTS (commercial off-the-shelf) automotive components like AURIX™ for applications such as unmanned vehicle control and high-reliability communication links, given its safety pedigree. (In these domains, additional analysis and possibly radiation testing would be performed if the devices are used in high-altitude or space environments.)&lt;br /&gt;
== Architecture Overview ==&lt;br /&gt;
[[File:Infineon TC3xx Architecture.webp|545x545px|thumb|alt=TC3xx Architecture Overview|TC3xx Architecture Overview]]&lt;br /&gt;
=== Processor Cores and Architecture===&lt;br /&gt;
The AURIX™ TC3xx family implements Infineon’s TriCore™ architecture, which uniquely combines aspects of RISC microcontrollers, DSP (digital signal processor) capabilities, and conventional microprocessor features into a single core design. Each TC3xx device can include up to six independent TriCore 32-bit CPU cores (TriCore version 1.6.2), all capable of running at up to 300 MHz clock frequency. Four of these cores can operate in dual-core lockstep pairs (with one core acting as a redundant checker for its partner) to provide fault detection for safety-critical functions. The TriCore cores use a superscalar Harvard architecture with 32-bit instruction words (and support for mixed 16/32-bit instruction encoding for code density). Each core includes a dedicated Floating Point Unit (FPU) for single-precision arithmetic and supports DSP-oriented instructions (e.g. single-cycle 16×16 MAC operations, SIMD for 16-bit/8-bit data) to accelerate signal processing tasks. For fast real-time performance, the architecture offers low interrupt latency (with automatic context save on-chip) and features like zero-overhead loops and a programmable peripheral timer unit for scheduling tasks. In total, a high-end TC3xx (such as the TC39x) provides six 300 MHz cores plus four checker cores, yielding a theoretical processing throughput of up to ~2400 DMIPS (Dhrystone MIPS) when all cores are utilized. This represents roughly a threefold increase in computational power over the previous AURIX™ generation (which achieved ~740 DMIPS with three cores).&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot;&amp;gt;UDE Debug, Trace and Test solutions for Infineon TriCore™ AURIX™ TC32, TC33, TC35, TC36, TC37, TC38, TC39, TC3x Microcontrollers       https://www.pls-mc.com/products/infineon-tricore-aurix-tc32-tc33-tc35-tc36-tc37-tc38-tc39-microcontrollers/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Memory Subsystem and Cache===&lt;br /&gt;
AURIX™ TC3xx microcontrollers integrate a large on-chip memory system to meet real-time and safety requirements. Program flash memory sizes range up to 16 MB on the largest models, with over 6 MB of on-chip SRAM available for data and scratchpad usage. Each TriCore CPU has its own tightly-coupled local memories as well as caches: for example, each core includes a 32 KB instruction cache and a 16 KB data cache. In addition, every core has separate local RAM blocks (Harvard architecture) for instructions and data (often termed PSPR and DSPR – Program Scratch-Pad RAM and Data Scratch-Pad RAM) that allow deterministic access for time-critical routines. Shared global memory is provided via a Local Memory Unit (LMU) which can be up to several hundred kilobytes (for instance, 768 KB in the TC39x) accessible by all cores. The memory system is connected by a high-bandwidth internal bus fabric (the SRI crossbar and peripheral buses) that arbitrates access between cores, DMA engines, and peripherals. This architecture ensures that each core can quickly fetch instructions and data either from its local cache/RAM or the central memory, enabling efficient parallel processing. Memory protection hardware is also built-in to isolate tasks of different criticality, an important feature for safety and security.&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Peripherals and Interfaces===&lt;br /&gt;
One of the strengths of the AURIX™ TC3xx architecture is its extensive set of on-chip peripherals and interface controllers, designed to handle the complex networking and I/O needs of modern vehicles and industrial systems. Key peripheral features and interfaces include:&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref3635926&amp;quot;&amp;gt;AURIX Training System Architecture https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_System_Architecture-Training-v01_00-EN.pdf?fileId=5546d46272e49d2a0172eb476d56739e&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Networking Interfaces:&#039;&#039;&#039; Multiple CAN FD controllers (supporting up to 12 CAN-FD channels in high-end variants) for in-vehicle networking, with legacy CAN and LIN interfaces (up to 24 LIN channels) for lower-speed device communication. Many TC3xx devices also integrate up to two FlexRay controllers for time-triggered automotive networks (maintaining compatibility with earlier automotive communication standards). For high-bandwidth data, a Gigabit Ethernet MAC is included, enabling uses like automotive Ethernet (e.g., audio-video bridging and IP-based connectivity).&lt;br /&gt;
* &#039;&#039;&#039;Analog and Timers:&#039;&#039;&#039; A suite of analog peripherals including multiple ADC units for sensor interfacing and motor control, and DACs in some models. Sophisticated timer units are on-chip, notably the Generic Timer Module (GTM) and Capture/Compare Units (CCU6), which can generate complex PWM waveforms and handle events for engine control, power inverters, or robotics with minimal CPU intervention. These timers enable precise control of actuators (e.g. fuel injection timing, electric motor commutation) in real time.&lt;br /&gt;
*&#039;&#039;&#039;Serial Interfaces:&#039;&#039;&#039; SPI, I²C, UART/LIN and other serial interfaces for connecting to external sensors, actuator controllers, and memory. The controllers often support multiple instances (several SPI channels, etc.) to accommodate numerous devices. AURIX™ TC3xx also provides an external bus interface (EBU) for parallel memory or FPGA connectivity, and an SD/MMC interface (eMMC) to connect external flash memory for data logging or over-the-air update storage.&lt;br /&gt;
*&#039;&#039;&#039;Dedicated Processing Units:&#039;&#039;&#039; Some AURIX™ TC3xx models include special accelerators, such as a hardware Fast Fourier Transform unit (HW-FFT) and up to two Signal Processing Units (SPUs) optimized for radar signal processing. These enable the microcontroller to handle radar front-end data or other intensive DSP tasks (like Fourier transforms for radar or audio signals) on-chip, which is crucial for advanced driver assistance sensors. There is also a &#039;&#039;Security Module&#039;&#039; (covered in a later section) and a Safety Management Unit that supervise system integrity.&lt;br /&gt;
*&#039;&#039;&#039;Other On-chip Modules:&#039;&#039;&#039; Watchdog timers, error-correction coders for memories (ECC on flash and RAM for reliability), a programmable interrupt system, multiple DMA channels (up to 128 DMA channels) for efficient data movement, and debug interfaces (JTAG and a 2/3-pin DAP) for development. The on-chip debug system supports tracing of program execution (via a built-in Emulation Memory, MCDS) to aid in complex multicore software development.&lt;br /&gt;
&lt;br /&gt;
Overall, the AURIX™TC3xx provides a highly integrated SoC-like platform, allowing a single chip to manage tasks ranging from powertrain control and chassis control to infotainment gateways. This high level of integration reduces the need for separate companion chips and helps to lower system complexity and cost.&lt;br /&gt;
===Performance and Benchmarking===&lt;br /&gt;
Fabricated in a 40 nm embedded flash process&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;, AURIX™ TC3xx processors achieve significant performance gains over prior generations while maintaining automotive-grade power efficiency. With six 32-bit cores at 300 MHz (four of them paired in lockstep), a flagship TC3xx device (e.g., TC39x) can deliver up to approximately 2,400 DMIPS of aggregate computing throughput&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;. In terms of per-core performance, the TriCore architecture yields around 1.3–2.0 DMIPS/MHz depending on the instruction mix, meaning each 300 MHz core can approach ~400–600 DMIPS in optimized scenarios&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. This is on par with or exceeding many contemporary 32-bit automotive MCUs. The integrated DSP extensions and optional accelerators (like the FFT unit) also enable high-speed signal processing, with Infineon citing up to ~1.8 GFLOPS of DSP throughput for certain operations&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Real-world performance improvements of the TC3xx over its predecessor are notable: for example, compared to the first-generation AURIX™ (which offered up to 740 DMIPS), the TC3xx’s expanded core count and clock speed provide roughly three times the computational power on the same type of workload&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. This extra headroom allows more functions (such as running multiple control algorithms or sensor fusion tasks in parallel) to be consolidated onto one microcontroller without compromising real-time deadlines&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. Despite the increase in speed and core count, the TC3xx family was designed with power and thermal constraints in mind, achieving these gains within similar power consumption envelopes as the previous generation by leveraging the smaller 40 nm process and power-saving features like clock gating&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot; /&amp;gt;. The deterministic real-time performance (with features like lockstep and tightly-coupled memory) makes the AURIX™ TC3xx suitable for the most demanding automotive applications, where consistent low latency and high throughput are required simultaneously.&lt;br /&gt;
&lt;br /&gt;
== On-Chip System Connectivity and Bridges ==&lt;br /&gt;
[[File:TC3xx On-Chip System Connectivity.png|thumb|The TC3xx has two &#039;&#039;&#039;SRI Domains&#039;&#039;&#039; (SRI0 and SRI1). CPU0 to CPU3 are connected to SRI0, CPU4/5 are connected to SRI1.|alt=TC3xx On-Chip System Connectivity|423x423px]]&lt;br /&gt;
The AURIX™ TC3xx Platform has three independent on-chip connectivity resources: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System Resource Interconnect Fabric (SRI Fabric)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other high bandwidth requestors to high bandwidth memories and other resources for instruction fetches and data accesses. A key component of the fabric is the SRI crossbar, which connects all the agents in one SRI domain. The SRI crossbar carries the transactions between the SRI Masters and SRI Slaves of the domain. The SRI crossbar supports parallel transactions between different SRI Master and SRI Slave agents. In addition to the parallelism of concurrent requests, it also supports pipelined requests from an SRI Master to a SRI Slave.&lt;br /&gt;
* &#039;&#039;&#039;System Peripheral Bus (SPB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other SPB masters to the medium and low bandwidth peripherals. SPB masters do not directly connect to the SRI Fabric, and will access SRI attached resources via a SFI_F2S Bridge.&lt;br /&gt;
* &#039;&#039;&#039;Back Bone Bus (BBB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and SPB masters with ADAS resources. SRI Masters do not directly connect to the BBB, but access BBB attached resources via a SFI_S2F Bridge. SPB masters also do not directly connect to the BBB, but access BBB attached resources via bridging over the SRI Fabric.&lt;br /&gt;
&lt;br /&gt;
=== CPU Resource Access Times ===&lt;br /&gt;
These tables describe the CPU access times to various resources in CPU clock cycles for the AURIX™ TC3xx Platform. In the case of load or fetch accesses, the access times are the minimum number of CPU stall cycles to complete the access. If there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes. &lt;br /&gt;
&lt;br /&gt;
For write access, the access times are the maximum for a sequence of such access (non-conflicting). In many cases for a singleton access, or a short sequence, write buffering reduces the stall effect seen by a CPU, sometimes to 0. However, as with loads and fetches, if there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes.&lt;br /&gt;
&lt;br /&gt;
==== Access latency for global resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! CPU stall cycles&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| Data read from System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |The final number of stall cycles will depend&amp;lt;br&amp;gt;on the real number of WS generated by the target resource.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;9 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |When SFI_S2F is connected to XBar2 (TC39x and TC37xED)&amp;lt;br&amp;gt;there is an additional latency due to access going through an S2S.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;5 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;6 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;3 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Module Wait State&#039;&#039;&#039;: The number of wait states for read and for write accesses is &amp;gt;= 1 and depends on the accessed module and its configuration.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU Accesses: Stall cycles for local and SRI resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! Local CPU !! Local SRI !! Remote SRI Domain&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DSPR || 0 || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DLMU || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DLMU || 2 || 5, {{rev|3|with Pipelining}}|| 5, 4&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DLMU || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to PSPR || See local SRI column || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PFlash || 5 + PWS || 10 + PWS || 13 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer miss) || 2 + PWS || 9 + PWS || 12 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer hit) || 3 || 6 || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to LMU || n.a. || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DFlash || n.a. || 5 + 3*(3 + DCWS) || 8 + 3*(3 + DCWS)&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC39x, TC37xED) || n.a. || n.a. || 14, {{rev|15|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC39x, TC37xED) || n.a. || n.a. || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC35x, TC33xED) || n.a. || 11, {{rev|12|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC35x, TC33xED) || n.a. || 9 || n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from DAM || n.a. || 10 || 13&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to DAM || n.a. || 7 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;Remote SRI Domain&#039;&#039;&#039;: Only applies to products with SRI extenders. Additional latency due to access going through an S2S&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;DCWS&#039;&#039;&#039;: Configured DFlash Corrected Wait States (Includes cycles for DFlash access cycles and ECC correction latency)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Subsystem ==&lt;br /&gt;
[[File:TC3xx Processor Core, Local Memory and Connectivity.png|alt=TC3xx Processor Core, Local Memory and Connectivity|thumb|Processor Core, Local Memory and Connectivity]]The Infineon AURIX™ TC3xx features up to 6 processor cores (CPU0 ... CPU5) implementing the [[TriCore Instruction Set Architecture|TC1.6.2 instruction set architecture]]. The following section focuses on the microarchitectural details of the CPU subsystem. For more information about the ISA, please take a look at the [[TriCore Instruction Set Architecture]].&lt;br /&gt;
&lt;br /&gt;
The processor core connects to the following memories and bus interfaces (where implemented):&lt;br /&gt;
*Program Scratch-Pad SRAM (PSPR)&lt;br /&gt;
*Data Scratch-Pad SRAM (DSPR)&lt;br /&gt;
*Program Cache (PCache)&lt;br /&gt;
*Data Cache (DCache)&lt;br /&gt;
*Local Memory Unit (DLMU)&lt;br /&gt;
*Local Pflash bank (LPB)&lt;br /&gt;
*SRI slave interface (x2)&lt;br /&gt;
*SRI master Interface&lt;br /&gt;
*SPB master interface&lt;br /&gt;
&lt;br /&gt;
=== TC1.6.2P Implementation Features ===&lt;br /&gt;
*Most instructions executed in 1 cycle&lt;br /&gt;
*Branch instructions in 1, 2 or 3 cycles (using dynamic branch prediction)&lt;br /&gt;
*Wide memory interface for fast context switch&lt;br /&gt;
* Automatic context save-on-entry and restore-on-exit for: subroutine, interrupt, trap&lt;br /&gt;
*Six memory protection register sets&lt;br /&gt;
*Dual instruction issuing (in parallel into Integer Pipeline and Load/Store Pipeline)&lt;br /&gt;
*Third pipeline for loop instruction only (zero overhead loop)&lt;br /&gt;
*Single precision Floating Point Unit (IEEE-754 Compatible)&lt;br /&gt;
*Dedicated Integer divide unit&lt;br /&gt;
*18 data memory protection ranges, 10 code memory protection ranges arranged in 6 sets&lt;br /&gt;
&lt;br /&gt;
=== Superscalar Architecture ===&lt;br /&gt;
The processor core within the AURIX™ TC3xx family, specifically the TC1.6.2P implementation, employs a superscalar architecture characterized by three parallel pipelines: the Integer Pipeline, the Load/Store Pipeline, and the Loop Pipeline. Superscalar execution is a form of instruction-level parallelism that enables the processor to issue and execute multiple instructions during a single clock cycle. The TriCore TC3xx core&#039;s superscalar architecture allows it to issue and execute multiple instructions in parallel. Specifically, it can issue up to two instructions simultaneously to the Integer and Load/Store pipelines. However, there are certain constraints on this dual issuing capability. For example, back-to-back data arithmetic instructions can only be issued in separate cycles, and a load/store instruction can be issued either on its own or paired with a data arithmetic instruction, provided the load/store instruction is the second in the pair. Under ideal conditions, with careful instruction scheduling, this dual-issue capability can lead to a throughput of close to 0.5 clock cycles per instruction, effectively executing two instructions per cycle.&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Stages ===&lt;br /&gt;
The execution of instructions within the TriCore TC3xx core is managed through a pipeline consisting of several stages. In one document it is mentioned that the pipeline consists of 6 stages &amp;lt;ref name=&amp;quot;ref3635926&amp;quot; /&amp;gt;, but the exact stages remain unclear. From the architecture the following stages can be inferred:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Fetch Stage&#039;&#039;&#039;: The initial stage in the pipeline is the Fetch stage, where instructions are retrieved from memory. This task is handled by the Instruction Fetch Unit (IFU), which is responsible for fetching instructions from the memory system. To improve efficiency, the IFU employs a pre-fetching mechanism, anticipating the instructions that will be needed and bringing them into the processor before they are actually required. Instructions are fetched through a 64-bit wide Program Memory Interface (PMI), allowing for the retrieval of a significant amount of instruction data in each cycle. The fetched instructions are then placed into an issue FIFO, a buffer capable of holding up to six instructions. This buffer plays a crucial role in managing the flow of instructions to the subsequent execution pipelines. The 64-bit fetch width and the instruction buffer are indicative of a design that aims to ensure a continuous supply of instructions to the pipelines, preventing them from being starved of work. A wider fetch path allows for more instruction bits to be obtained from memory in each clock cycle, while the buffer helps to mitigate temporary delays in instruction fetching.&lt;br /&gt;
* &#039;&#039;&#039;Execution Unit&#039;&#039;&#039;: The Execution Unit contains the Integer Pipeline, the Load/Store Pipeline and the Loop Pipeline. All three pipelines operate in parallel and are capable of executing instructions simultaneously. Each pipline has its own decode stage and two execute stages. Furthermore, the TC3xx features a Floating Point Unit (FPU). It is not clear whether the FPU is part of the execution unit or a separate unit. It is assumed that the FPU also has its own decode stage and an unknown number of execute stages&lt;br /&gt;
** &#039;&#039;&#039;Decode Stage&#039;&#039;&#039;: Following the Fetch stage, the instruction are issued to one of the pipelines. In the decode stage of each pipeline, the instruction is examined and translated to determine the specific operation it represents and to identify the operands it will operate on. It is assumed that operands are read from the register file during the decode stage.&lt;br /&gt;
** &#039;&#039;&#039;Execute Stage&#039;&#039;&#039;: The Execute stage is where the actual operation specified by the instruction is carried out. Pipeline hazards (stalls) are minimised by the use of forwarding paths between pipeline stages allowing the results of one instruction to be used by a following instruction as soon as the result becomes available.&lt;br /&gt;
** &#039;&#039;&#039;Writeback Stage&#039;&#039;&#039;: The final stage in the pipeline is the Writeback stage. In this stage, the results produced by the executed instruction are written back to the processor&#039;s register file, making them available for subsequent instructions. It is unclear whether the writeback stage is part of the (two) execution stages or a separate stage.&lt;br /&gt;
&lt;br /&gt;
=== Execution Pipelines ===&lt;br /&gt;
The TriCore TC3xx core leverages four parallel pipelines to enhance its performance. Each pipeline is designed to handle a specific class of instructions:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Integer Pipeline:&#039;&#039;&#039; This pipeline is responsible for executing integer arithmetic and logical instructions, including data-conditional jump instructions, bit manipulation operations, as well as division and multiply-accumulate (MAC) instructions.&lt;br /&gt;
* &#039;&#039;&#039;Load/Store Pipeline:&#039;&#039;&#039; The primary function of this pipeline is to manage memory access operations, including loading data from memory and storing data to memory. It also handles address arithmetic, unconditional jump instructions, procedure call instructions, context-switching operations, and control flow related to context save areas (CSAs).&lt;br /&gt;
* &#039;&#039;&#039;Loop Pipeline:&#039;&#039;&#039; This is a specialized pipeline designed to facilitate zero-overhead loops, a technique that significantly improves the performance of iterative code sections. Its design aims to eliminate or minimize the overhead typically associated with loop control, such as incrementing counters and checking loop conditions. Some documentation suggests that the loop pipeline comes along with a &amp;quot;Loop Cache&amp;quot;. This dedicated cache would likely be used to store instructions belonging to the loop, enabling very fast access and execution for repeated iterations.&lt;br /&gt;
* &#039;&#039;&#039;Floating Point Unit (FPU):&#039;&#039;&#039; The FPU is responsible for executing floating-point arithmetic operations&lt;br /&gt;
&lt;br /&gt;
=== Store Buffers ===&lt;br /&gt;
The TriCore TC3xx core include &#039;&#039;&#039;Store Buffers&#039;&#039;&#039; to decouple memory write operations from CPU instruction execution. All stores from the Load/Store Pipeline are placed in the store buffer prior to being written to local memory or transferred via the bus system. Write data is taken from the store buffers and written to memory when the target memory or bus interface becomes available. In normal operation the CPU will prioritise memory load operations over store operations in order to improve performance unless the store buffer is full or the order of load and store operations must be preserved (e.g. peripheral space access). The store buffer can hold the data for up to 6 stores operations. To improve performance the store buffer will merge consecutive byte, half-word, and word writes of the same location to reduce the number of memory accesses required.&lt;br /&gt;
&lt;br /&gt;
=== Instruction Timing ===&lt;br /&gt;
&lt;br /&gt;
==Functional Safety and Security Features==&lt;br /&gt;
===Hardware Security Module and Encryption===&lt;br /&gt;
One of the defining features of the AURIX™ TC3xx family is its robust hardware-based security subsystem, implemented to protect against cyber threats and unauthorized manipulation of vehicle systems. Each TC3xx MCU includes a dedicated &#039;&#039;Hardware Security Module&#039;&#039; (HSM), which is essentially an on-chip co-processor with its own CPU and cryptographic engine designed to handle secure operations. In the second-generation AURIX™ (TC3xx), the HSM was upgraded with support for asymmetric cryptography (e.g., RSA, ECC algorithms) in hardware, providing significantly faster public-key encryption and authentication capabilities than pure software implementations. This HSM supports &#039;&#039;&#039;EVITA Full&#039;&#039;&#039; (the highest level of the EU’s EVITA automotive security requirements), meaning it can perform secure boot, message authentication, and encryption at a level suitable for protecting critical in-vehicle communications. For example, the HSM can encrypt and authenticate CAN/Ethernet messages to prevent spoofing or tampering on the vehicle network, and it can manage cryptographic keys securely isolated from the main application cores.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The security module enables features like &#039;&#039;&#039;secure boot&#039;&#039;&#039;, where the AURIX™ will only execute firmware that is digitally signed by the vehicle manufacturer, thereby preventing unauthorized or malicious code. It also facilitates &#039;&#039;over-the-air (OTA) updates&#039;&#039; in a secure manner: the TC3xx HSM can verify and decrypt update packages received via telematics, allowing firmware upgrades while protecting against attackers attempting to hijack the software. In addition, the HSM includes a true random number generator and supports protocols for immobilizer and theft protection systems. Infineon’s implementation essentially treats the HSM as an “embedded smart card” inside the microcontroller. This approach, building on Infineon’s expertise in chip card security, helps to safeguard sensitive assets like cryptographic keys and to perform secure operations (encryption, decryption, authentication) in hardware, making attacks significantly more difficult. The strong cybersecurity provisions of the AURIX™ TC3xx have made it a preferred choice for vehicle gateway ECUs and central body controllers, which are points of entry for connected car communications and thus high-value targets for hackers. By incorporating the HSM, automotive OEMs can implement advanced security features such as encrypted onboard communication (to thwart bus tampering) and secure diagnostics, ensuring the vehicle’s electronic data is protected against cyber threats even as cars become more connected.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref19484776953&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Functional Safety and Fault Tolerance===&lt;br /&gt;
Beyond cybersecurity, the AURIX™ TC3xx architecture is built with extensive &#039;&#039;functional safety&#039;&#039; features to meet the highest safety integrity levels in automotive systems. The multi-core design supports &#039;&#039;lockstep operation&#039;&#039;, where redundant checker cores run in parallel with main cores and continuously compare results cycle-by-cycle. In TC3xx devices, up to four of the six TriCore CPUs have such lockstep partner cores, allowing the microcontroller to detect any single-point CPU failure instantly (if a discrepancy arises between the core and its checker, a fault is signaled). A &#039;&#039;Safety Management Unit (SMU)&#039;&#039; is integrated on-chip to monitor various fault conditions throughout the device – it aggregates error signals from the lockstep cores, memory ECC monitors, clock/watchdog monitors, and peripheral self-tests, and can initiate safe-state actions (like resetting the chip or signaling an error pin to an external supervisor) if a critical fault is detected. The AURIX™ safety concept also includes a distributed Memory Protection Unit (MPU) arrangement, with multiple memory protection contexts that prevent errant or malicious code from writing to wrong memory areas. This helps contain faults and eases the integration of software with mixed criticality (Infineon allows partitioning software components of different ASIL levels on the same MCU while keeping them isolated).&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref19519075552&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crucially, the TC3xx family was developed according to ISO 26262 processes and can achieve &#039;&#039;&#039;ASIL-D&#039;&#039;&#039; (Automotive Safety Integrity Level D), the highest grade for automotive functional safety. Compared to a traditional dual-core lockstep approach, the AURIX’s™ multi-core safety architecture allowed Infineon to reduce certain safety development overheads (earlier Infineon data suggested up to 30% reduction in safety software workload) by providing built-in safety mechanisms and diagnostics. Infineon supplies a comprehensive safety manual and diagnostic libraries for the AURIX™, helping engineers utilize features like CPU self-tests, RAM tests, and CRC checks to comply with safety standards. In addition to automotive standards, the AURIX™ TC3xx has also been qualified for &#039;&#039;&#039;industrial safety&#039;&#039;&#039;: in 2023, Infineon announced support for IEC 61508 metrics, enabling designs with AURIX™ to reach SIL-2 and SIL-3 safety integrity levels for industrial applications. This cross-industry safety compliance is facilitated by the MCU’s redundant design and detailed failure mode documentation (FMEDA) provided by Infineon. In summary, the AURIX™ TC3xx integrates both proactive safety (fault prevention via lockstep, monitoring and protection) and reactive safety (fault detection and safe shutdown), making it a dependable component for systems that cannot afford unintended behavior, whether in cars, factories, or aerospace. &amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref4967712052&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref196858272&amp;quot;&amp;gt;MCUs support industrial functional safety - Electronic Products https://www.electronicproducts.com/mcus-support-industrial-functional-safety/&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Platform Devices ==&lt;br /&gt;
The following table shows a feature overview of the AURIX™ TC3xx Platform family focusing on memory and number of cores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Feature&lt;br /&gt;
!TC33x&lt;br /&gt;
!TC33xEXT&lt;br /&gt;
!TC35x&lt;br /&gt;
!TC36x&lt;br /&gt;
!TC37x&lt;br /&gt;
!TC37xEXT&lt;br /&gt;
!TC38x&lt;br /&gt;
!TC39x&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |CPUs&lt;br /&gt;
|Cores / Checker Cores&lt;br /&gt;
|1 / 1&lt;br /&gt;
|2 / 1&lt;br /&gt;
|3 / 2&lt;br /&gt;
|2 / 2&lt;br /&gt;
|3 / 2&lt;br /&gt;
|3 / 3&lt;br /&gt;
|4 / 2&lt;br /&gt;
|6 / 4&lt;br /&gt;
|-&lt;br /&gt;
|Max. Freq.&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Cache per CPU &lt;br /&gt;
|Program [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |32&lt;br /&gt;
|-&lt;br /&gt;
|Data [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |SRAM per CPU&lt;br /&gt;
|PSPR [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|32|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|DSPR [KB]&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|192|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|-&lt;br /&gt;
|DLMU [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|8|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |SRAM global&lt;br /&gt;
|LMU [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|512&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|128&lt;br /&gt;
|768&lt;br /&gt;
|-&lt;br /&gt;
|DAM [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|32&lt;br /&gt;
| -&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Extension Memory (EMEM)&lt;br /&gt;
|TCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XTM [KB]&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Program Flash&lt;br /&gt;
|Size [MB]&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|10&lt;br /&gt;
|10&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|Banks [MB]&lt;br /&gt;
|1 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 3&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|5 x 3, 1 x 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Data Flash&lt;br /&gt;
|DF0 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|256&lt;br /&gt;
|512&lt;br /&gt;
|512&lt;br /&gt;
|1024&lt;br /&gt;
|-&lt;br /&gt;
|DF1 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |DMA&lt;br /&gt;
|Channels&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
|Move Engines&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Resource Partitions&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
The AURIX™ TC3xx family is a series of high-performance microcontrollers widely used in automotive and industrial applications. Compilers for the AURIX™ TC3xx are crucial for developers aiming to optimize performance, reliability, and safety in their applications. One significant aspect of the compiler landscape for AURIX™ TC3xx is the limited direct support from mainline open-source compilers such as GCC or LLVM/Clang. The primary reason for this is the stringent requirements for functional safety in automotive and industrial applications, which demand specialized features and compliance with safety standards that are often not met by general-purpose open-source compilers.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Compilers ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Tasking&#039;&#039;&#039;: Tasking compilers are renowned for their robust support for automotive applications, offering advanced debugging capabilities and optimization techniques tailored for the AURIX™ architecture. They provide extensive code optimization, comprehensive debugging tools, and strong support for safety standards such as ISO 26262, making them ideal for developing high-performance, reliable, and safe applications.&lt;br /&gt;
# &#039;&#039;&#039;HighTec&#039;&#039;&#039;: The HighTec compiler is a popular choice, known for its Eclipse-based development environment and strong multicore support. HighTec provides both GCC and LLVM-based ports of open-source compilers tailored specifically for the AURIX™ TC3xx family. These compilers offer efficient parallel execution, advanced code analysis, and an integrated development environment, ensuring robust performance and compliance with safety standards.&lt;br /&gt;
# &#039;&#039;&#039;Green Hills Software&#039;&#039;&#039;: Green Hills Software provides a highly optimized toolchain aimed at safety-critical applications, focusing on high performance and strict compliance with automotive standards. Their compiler offers superior optimization, extensive safety features, and a proprietary IDE with specialized tools for automotive development, ensuring developers can meet the stringent demands of functional safety.&lt;br /&gt;
&lt;br /&gt;
=== GCC for AURIX™ ===&lt;br /&gt;
&lt;br /&gt;
While mainline GCC does not directly support the AURIX™ TC3xx family, there is an unofficial GCC version available for AURIX™. Due to the GNU General Public License (GPL), the source code from HighTec was retrieved and, along with binary versions, published on GitHub:&lt;br /&gt;
&lt;br /&gt;
*GCC 4.9.4/Binutils 2.20/Newlib 1.18 for Tricore AURIX™ [[https://github.com/volumit/package_494 Source]] [[https://github.com/volumit/tricore_gcc494_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc494_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GCC 9.4.0/Binutils 2.20/Newlib 1.18 for Tricore AURIX™ [[https://github.com/volumit/package_940 Source]] [[https://github.com/volumit/tricore_gcc940_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc940_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GDB 10.0.50 for Tricore AURIX™ [[https://github.com/volumit/gdb-tricore Source]]&lt;br /&gt;
==emmtrix Tools for AURIX™ TC3xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX™ TC3xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC4x|Infineon AURIX™ TC4x]]&lt;br /&gt;
*[[Infineon AURIX TC2xx|Infineon AURIX™ TC2xx]]&lt;br /&gt;
*[[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&lt;br /&gt;
*[https://documentation.infineon.com/aurixtc3xx/docs/qmd1702366622648 AURIX™ TC3xx user manuals]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d3605221d96 AURIX™ TC3xx User Manual Part-1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d35f8541d94 AURIX™ TC3xx User Manual Part-2]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd AURIX™ TC3xx Architecture vol 1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 AURIX™ TC3xx Architecture vol 2]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
 |title=Infineon AURIX TC3xx Family – Deep Dive&lt;br /&gt;
 |description=This deep dive into Infineon&#039;s AURIX TC3xx family explores its multi-core TriCore architecture, real-time capabilities, safety and security features and tools&lt;br /&gt;
 |image=File:AURIX_TC399_LFBGA-516_plain.jpg&lt;br /&gt;
 |keywords=AURIX, Infineon, TC3xx, microcontroller, TriCore, automotive, ADAS, ISO 26262, functional safety, embedded security, ASIL-D, deep dive&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2686</id>
		<title>Infineon AURIX TC2xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2686"/>
		<updated>2025-04-08T07:21:05Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Infineon AURIX™ TC2xx&#039;&#039;&#039; is a family of 32-bit automotive microcontrollers developed by Infineon Technologies. &#039;&#039;AURIX™&#039;&#039; stands for &#039;&#039;“Automotive Realtime Integrated Next Generation Architecture”&#039;&#039;, reflecting its design for real-time, safety-critical automotive applications&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. The TC2xx series (first-generation AURIX™) is based on a multicore architecture featuring up to three independent 32-bit &#039;&#039;&#039;TriCore&#039;&#039;&#039; processor cores. Introduced around 2012, the AURIX™ TC2xx marked Infineon’s transition to a multicore microcontroller platform (fabricated in 65 nm technology) after earlier single-core TriCore generations. It was designed from the ground up to meet stringent automotive safety requirements (ISO 26262) and to provide higher performance and integration for applications like engine management, chassis control, and driver assistance systems.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot;&amp;gt;Optimized for Success - EE Times Europe https://www.eetimes.eu/optimized-for-success/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The AURIX™ TC2xx family’s design philosophy is to combine &#039;&#039;&#039;safety&#039;&#039;&#039;, &#039;&#039;&#039;security&#039;&#039;&#039;, and &#039;&#039;&#039;performance&#039;&#039;&#039; in one scalable MCU platform. It achieves high functional safety compliance (up to &#039;&#039;&#039;ASIL-D&#039;&#039;&#039;, the highest automotive safety integrity level) with less development effort compared to traditional dual-controller lockstep systems&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. Infineon claims that using AURIX™ can cut safety-related development time by ~30% versus classical lockstep architectures, thanks to its built-in fault detection and monitoring hardware. At the same time, the TC2xx provides significant performance headroom – roughly 50% to 100% higher computational performance compared to its predecessors – while maintaining power consumption similar to previous single-core designs. To address emerging automotive security needs, the AURIX™ MCUs also integrate a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) on-chip, which protects against IP theft, fraud, and tampering. This combination of features makes the AURIX™ TC2xx a popular choice for consolidating various automotive control functions (powertrain, safety, body, etc.) onto one platform, without sacrificing reliability or efficiency.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC2xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Architecture==&lt;br /&gt;
The AURIX™ TC2xx is built on Infineon’s &#039;&#039;&#039;TriCore&#039;&#039;&#039; architecture, which uniquely unifies traits of a RISC processor, a microcontroller, and a DSP (digital signal processor) into one core design. Each TriCore CPU in the TC2xx is a 32-bit superscalar processor that supports both 32-bit and 16-bit instruction formats (the latter for code size efficiency). The TriCore instruction set architecture includes typical RISC features (load/store architecture, 4 GB address space) and DSP capabilities (such as multiply-accumulate instructions and bit manipulation) in a single core. The cores also have an optional floating-point unit (FPU) and support SIMD (single-instruction multiple-data) operations for signal processing acceleration. The maximum core frequency in the TC2xx family is 300 MHz, and devices achieve about 1.7–2.4 DMIPS/MHz per core, providing robust real-time performance.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In terms of core configuration, high-end AURIX™ TC2xx models implement three main TriCore CPUs, which can be run in parallel or in redundant (lockstep) pairs for safety. Some variants include a redundant checker core that shadows a primary core to detect calculation errors (a technique to meet SIL/ASIL safety goals). The multicore architecture is supported by a layered memory system: each TriCore has tightly coupled local memory for fast instruction and data access, and they share access to large on-chip Flash and RAM via an internal bus matrix. Memory options in the TC2xx range from about &#039;&#039;&#039;0.5 MB up to 8 MB of on-chip Flash&#039;&#039;&#039;, and from ~50 KB up to 2.7 MB of SRAM, depending on the specific device. This on-chip memory (with ECC protection on memories for safety) allows real-time code execution and data storage without external memory in most use cases. For peripherals and I/O, the AURIX™ architecture includes a rich set of on-chip modules connected via internal buses, such as analog-to-digital converters, timer units, communication interfaces, and direct memory access (DMA) controllers. AURIX™ TC2xx MCUs typically provide interfaces like multiple CAN/CAN-FD channels, LIN/UART, SPI, I²C, Ethernet (on higher-end models), and automotive-specific buses (e.g. FlexRay on some variants), making the chip a self-contained controller for complex automotive networks.&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot;&amp;gt;Infineon TriCore - Wikipedia https://en.wikipedia.org/wiki/Infineon_TriCore&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; is a notable part of the AURIX™ TC2xx architecture. It is a sophisticated timer/co-processor integrated on-chip to handle complex timing, PWM generation, input capture, and other signal conditioning tasks across more than 200 channels. There are also specialized accelerators and co-processors on certain TC2xx devices, such as a &#039;&#039;&#039;Hardware Fast Fourier Transform (HFFT)&#039;&#039;&#039; unit for signal processing and a &#039;&#039;&#039;Parallel Pixel Processor&#039;&#039;&#039; for simple video or sensor data processing. These dedicated engines offload the TriCore CPUs for specific high-load tasks (e.g. radar signal FFTs or encoder signal processing), improving overall throughput in automotive applications. The AURIX™ architecture uses a single-power supply (5V or 3.3V) design and includes an on-chip voltage regulator (EVR), simplifying power management. The MCUs are offered in a variety of package types (from compact QFP-64 up to large BGA-516) to accommodate different I/O needs. Overall, the TC2xx architecture is highly integrated and optimized for real-time, combining multiple CPU cores with ample flash memory, SRAM, and peripherals on one chip to serve as a &#039;&#039;&#039;central control unit&#039;&#039;&#039; in vehicles.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Aurix Unleashed - RS Components https://docs.rs-online.com/0f3f/0900766b815c315c.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
====CPU access latency (TC29x) ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!CPU Access Type!!Local CPU&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to own DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to own DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to own or other PSPR||8&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to own or other PSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Data read access to other DSPR||8&lt;br /&gt;
|-&lt;br /&gt;
|Data write access to other DSPR||0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from own PSPR&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other PSPR (critical word)||8&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other PSPR (any remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other DSPR (critical word)||8&lt;br /&gt;
|-&lt;br /&gt;
|Instruction fetch from other DSPR (any remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Initial Pflash Access (critical word)||7 + configured PFlash Wait States&lt;br /&gt;
|-&lt;br /&gt;
|Initial Pflash Access (remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|PMU PFlash Buffer Hit (critical word)||6&lt;br /&gt;
|-&lt;br /&gt;
|PMU PFlash Buffer Hit (remaining words)||0&lt;br /&gt;
|-&lt;br /&gt;
|Initial Dflash Access||7 + configured DFlash Wait States&lt;br /&gt;
|-&lt;br /&gt;
|TC1.6P Data read from System Peripheral Bus (SPB)&lt;br /&gt;
|{{rev|4|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&amp;lt;br&amp;gt;{{rev|7|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = 2*f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&amp;lt;br&amp;gt;{{rev|10|2=f&amp;lt;sub&amp;gt;CPU&amp;lt;/sub&amp;gt; = 3*f&amp;lt;sub&amp;gt;SPB&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
|TC1.6P Data write to System Peripheral Bus (SPB)||0&lt;br /&gt;
|}&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
==Key Features==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Safety Mechanisms:&#039;&#039;&#039; The AURIX™ TC2xx was developed via an ISO 26262-compliant process and includes multiple hardware mechanisms to achieve &#039;&#039;&#039;functional safety up to ASIL-D&#039;&#039;&#039;. Notably, it supports &#039;&#039;lockstep&#039;&#039; operation, where one or two of the TriCore CPUs can run in redundant lockstep mode with another core to detect discrepancies (faults) cycle-by-cycle. A Safety Management Unit (&#039;&#039;&#039;SMU&#039;&#039;&#039;) is built in to monitor critical system parameters and handle faults. The architecture employs memory protection units and safe internal communication buses to isolate and supervise different software domains. Other safety features include &#039;&#039;&#039;error-correcting code (ECC)&#039;&#039;&#039; on flash and RAM, redundant peripherals (for example, duplicated ADC channels), watchdog timers, clock and voltage monitors, and self-test routines. These features allow developers to more easily implement safety-critical functions and meet standards like IEC 61508 (SIL-3) or ISO 26262 (ASIL-D) using a single AURIX™ MCU, whereas achieving the same on a traditional single-core MCU might require additional external safety ICs or companion processors.&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Security Functions:&#039;&#039;&#039; Infineon integrated a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) into the AURIX™ TC2xx family to address automotive cybersecurity requirements. This HSM is essentially an on-chip co-processor (with its own CPU and flash) that handles cryptographic operations and secure key storage isolated from the main cores. It follows the EVITA (E-safety Vehicle Intrusion Protected Applications) guidelines for automotive security. The HSM enables features like secure boot, encryption/decryption, authentication, and detection of software tampering. By having a built-in “embedded smart card” for security, the AURIX™ can implement anti-theft, anti-cloning, and secure onboard communication measures without needing an external security chip. This integration is a key differentiator, as it helps protect vehicle functions (e.g. immobilizers, firmware updates, V2X communication) against hacking and unauthorized modifications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Performance and DSP Capability:&#039;&#039;&#039; Each TriCore CPU in the TC2xx is capable of up to 300 MHz operation, and combined the multicore setup offers considerable processing power for an MCU (Infineon cites up to ~1.8 GFLOPS of DSP throughput for the highest models). The TriCore design delivers around &#039;&#039;&#039;1.7–2.4 DMIPS/MHz&#039;&#039;&#039; per core, meaning a triple-core AURIX™ at max frequency can exceed 2000 DMIPS of total throughput. The inclusion of DSP instructions and dedicated accelerators enables the AURIX™ to handle computationally intensive tasks (like control algorithms, filtering operations, or even rudimentary neural networks) that previously might require a separate DSP or FPGA. A built-in &#039;&#039;&#039;Floating Point Unit&#039;&#039;&#039; on each core supports single-precision (and optional double-precision in some cases) arithmetic, beneficial for model-based control algorithms and automotive sensor processing. Peripherals like the &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; and &#039;&#039;&#039;Hardware FFT&#039;&#039;&#039; accelerator (available on select TC2xx variants) further boost real-time performance for handling high-frequency events (e.g. engine ignition timing, motor control PWM, radar signal analysis) without overloading the CPU. Despite the performance, the TC2xx was designed with efficiency in mind; Infineon managed to double the performance over the prior generation (TC1xx AUDO) while keeping power consumption at comparable levels. The MCUs also support various low-power modes and a standby controller to minimize energy usage when parts of the system are idle.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Power and Integration:&#039;&#039;&#039; As a system-on-chip for vehicles, AURIX™ TC2xx integrates a wide range of &#039;&#039;&#039;communication interfaces&#039;&#039;&#039; and analog/digital peripherals. Common features include multiple CAN bus controllers (often with CAN FD support), LIN/UART, SPI and I²C channels, FlexRay communication in high-end models, and even Ethernet (in variants aimed at gateway or ADAS roles). High-resolution &#039;&#039;&#039;ADC units&#039;&#039;&#039; (with shared and redundant channels) allow precise sensor measurements for engine or chassis control. There are also specialized modules like delta-sigma ADCs and SENT interfaces for automotive sensor inputs. This rich peripheral set reduces the need for external components, helping to lower the overall system Bill of Materials. The TC2xx devices operate over a broad temperature range (typically –40 °C to +150 °C), meeting the demands of under-the-hood automotive environments. They run from a single supply (with internal regulators), simplifying designs, and support both 5 V and 3.3 V systems for compatibility with a variety of sensors and actuators. Combined with its safety and security features, the AURIX’s™ high integration makes it a one-chip solution for many complex embedded applications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
The Infineon AURIX™ TC2xx family is primarily targeted at the &#039;&#039;&#039;automotive industry&#039;&#039;&#039;, especially domains requiring high reliability and real-time control. Its initial use cases were in &#039;&#039;&#039;powertrain&#039;&#039;&#039; and engine management systems – for example, controlling combustion engines, managing fuel injection and ignition, and coordinating electric motor and battery systems in hybrid or electric vehicles. The multi-core AURIX™ can run multiple control algorithms in parallel (e.g. for an engine’s cylinders, transmission and motor inverter concurrently), which is valuable in modern electrified powertrains. Beyond engines, AURIX™ TC2xx MCUs are used in &#039;&#039;&#039;chassis and safety systems&#039;&#039;&#039;: they can serve as the central controller for &#039;&#039;&#039;anti-lock braking systems (ABS)&#039;&#039;&#039; and stability control, &#039;&#039;&#039;airbag control units&#039;&#039;&#039;, &#039;&#039;&#039;electric power steering (EPS)&#039;&#039;&#039; systems, and suspension controllers. Advanced Driver Assistance Systems (&#039;&#039;&#039;ADAS&#039;&#039;&#039;) and autonomous driving modules in earlier generations of vehicles have also employed AURIX™ for tasks such as sensor fusion, radar signal processing, and acting as a safety supervisor for driving assistance features&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. For example, a radar unit for adaptive cruise control might use an AURIX™ to perform real-time signal processing (using its DSP capabilities and HFFT) and make high-level decisions, all within an ASIL-D safe environment.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot;&amp;gt;https://resources.tasking.com/sites/default/files/2021-02/Take%20Advantage%20of%20Infineon%20AURIX%20TC3xx%20Family%20With%20the%20Right%20Compiler_WEB.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to its safety certification and robust design, the AURIX™ TC2xx has seen adoption in any application that cannot tolerate failure. This includes &#039;&#039;&#039;industrial automation and robotics&#039;&#039;&#039;, where the MCU’s reliability and support for functional safety (IEC 61508) are attractive. In industrial motor drives or robotics controllers, an AURIX™ might handle precise motor control algorithms and system monitoring. Other use cases outside pure automotive include &#039;&#039;&#039;commercial vehicles and transportation&#039;&#039;&#039; (trucks, agricultural and construction machinery), which have similar safety and durability requirements. The AURIX’s™ extensive communication interfaces also make it suitable as a gateway or central node in complex networks – for instance, acting as a domain controller in modern automotive E/E architectures to coordinate data between powertrain, body, and ADAS subsystems. Some &#039;&#039;&#039;electric vehicle (EV)&#039;&#039;&#039; platforms use AURIX™ MCUs in battery management systems and inverter controls, leveraging its calculation power for battery algorithms and its safety for monitoring cell health. In summary, the TC2xx family finds use in scenarios that demand &#039;&#039;&#039;real-time performance with high safety integrity&#039;&#039;&#039;, predominantly in automotive (engine, transmission, chassis, safety, ADAS) but also in high-end industrial embedded systems.&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==emmtrix Tools for AURIX™ TC2xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX™ TC2xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ TC2xx / [[Infineon AURIX TC3xx|TC3xx]]/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[Infineon AURIX TC4x]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&lt;br /&gt;
* [https://www.infineon.com/dgdl/Infineon-TC29x_B-step-UM-v01_03-EN.pdf?fileId=5546d46269bda8df0169ca1bdee424a2 TC29x B-Step User Manual]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2647</id>
		<title>Infineon AURIX TC3xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2647"/>
		<updated>2025-03-28T11:44:17Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AURIX TC399 LFBGA-516 plain.jpg|thumb|Infineon AURIX™ TC3xx second-generation microcontroller (TC399 BGA package). The AURIX TC3xx family integrates multiple TriCore CPUs and on-chip safety/security modules for automotive applications.|alt=TC399 BGA package]]&lt;br /&gt;
The &#039;&#039;&#039;Infineon AURIX TC3xx&#039;&#039;&#039; (Automotive Realtime Integrated neXt-generation architecture) is a family of 32-bit automotive microcontrollers introduced as the second generation of Infineon’s AURIX platform. Launched in 2016 as a successor to the earlier [[Infineon AURIX TC2xx|AURIX TC2xx series]], the TC3xx devices emphasize high performance, functional safety, and embedded security for advanced automotive and industrial applications. AURIX TC3xx microcontrollers feature a hexa-core [[TriCore Instruction Set Architecture|&#039;&#039;TriCore&#039;&#039; processor architecture]] with enhanced safety measures, making them well-suited for demanding tasks such as autonomous driving domain controllers, powertrain control, and sensor data fusion in advanced driver-assistance systems (ADAS). The combination of multiple CPU cores, extensive on-chip memory, and a rich peripheral set allows TC3xx chips to deliver real-time responsiveness and reliability in safety-critical environments while meeting stringent automotive standards (such as ISO 26262 for functional safety).&amp;lt;ref name=&amp;quot;ref1951907555&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1428109010&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1948477695&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Applications==&lt;br /&gt;
AURIX TC3xx microcontrollers are used in a variety of safety-critical and high-performance applications across the automotive and industrial sectors. Key application domains include:&lt;br /&gt;
*&#039;&#039;&#039;Automotive Systems:&#039;&#039;&#039; The TC3xx family was primarily designed for automotive use and finds broad application in vehicles’ electronic control units (ECUs). Notably, it is used in &#039;&#039;powertrain and drivetrain control&#039;&#039; (engine management, transmission control, hybrid/electric vehicle inverter control, battery management) where its real-time processing and resilience support precise actuator control. It is also deployed in &#039;&#039;chassis and safety systems&#039;&#039; such as anti-lock braking systems (ABS), electronic stability control, airbag controllers, and electric power steering, leveraging its redundancy and fast response for fail-safe operation. With the growth of ADAS and autonomous driving, AURIX TC3xx devices serve as domain controllers for &#039;&#039;ADAS sensor fusion&#039;&#039;, handling data from radar, LiDAR, camera, and ultrasonic sensors and performing environment modeling and decision-making algorithms. Their combination of multiple cores and a built-in radar signal processing sub-system makes them an attractive choice for tasks like front radar processing, sensor fusion hubs, and &#039;&#039;autonomous driving domain controllers&#039;&#039; that must meet ASIL-D safety levels.&amp;lt;ref name=&amp;quot;ref14281090102&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Industrial Automation and Robotics:&#039;&#039;&#039; Infineon has also positioned the AURIX family for use in industrial applications that demand high reliability. The TC3xx MCUs, with their hardware self-test mechanisms and safety documentation, can be found in &#039;&#039;industrial motor drives, robotics controllers, and PLCs (programmable logic controllers)&#039;&#039;, where they help achieve functional safety certifications up to SIL-3 (according to IEC 61508). The powerful TriCore cores and rich peripheral set enable complex motor control algorithms (e.g., field-oriented control for servo motors) and real-time sensor processing in factory automation. Additionally, the support for automotive-grade networking (CAN/CAN-FD, Ethernet) and timing peripherals makes them suitable for synchronous control in robotics and machinery. Infineon’s provision of AUTOSAR-compatible software for AURIX has even facilitated its use in non-automotive settings such as medical devices and elevator controllers, where proven safety and security are required.&amp;lt;ref name=&amp;quot;ref496771205&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Aerospace and Defense:&#039;&#039;&#039; The high fault-tolerance and deterministic performance of the AURIX TC3xx architecture also attract interest for aerospace and other mission-critical uses. In avionics systems or autonomous drones, for instance, the lockstep core configuration and robust error checking of AURIX can provide an added layer of reliability for flight control computers or navigation systems. While primarily an automotive chip, its ability to operate in harsh conditions (−40°C to 150°C range) and to detect internal failures in real-time makes it viable for certain aerospace electronic systems. Some defense and aerospace projects leverage COTS (commercial off-the-shelf) automotive components like AURIX for applications such as unmanned vehicle control and high-reliability communication links, given its safety pedigree. (In these domains, additional analysis and possibly radiation testing would be performed if the devices are used in high-altitude or space environments.)&lt;br /&gt;
== Architecture Overview ==&lt;br /&gt;
[[File:Infineon TC3xx Architecture.webp|545x545px|thumb|alt=TC3xx Architecture Overview|TC3xx Architecture Overview]]&lt;br /&gt;
=== Processor Cores and Architecture===&lt;br /&gt;
The AURIX TC3xx family implements Infineon’s TriCore™ architecture, which uniquely combines aspects of RISC microcontrollers, DSP (digital signal processor) capabilities, and conventional microprocessor features into a single core design. Each TC3xx device can include up to six independent TriCore 32-bit CPU cores (TriCore version 1.6.2), all capable of running at up to 300 MHz clock frequency. Four of these cores can operate in dual-core lockstep pairs (with one core acting as a redundant checker for its partner) to provide fault detection for safety-critical functions. The TriCore cores use a superscalar Harvard architecture with 32-bit instruction words (and support for mixed 16/32-bit instruction encoding for code density). Each core includes a dedicated Floating Point Unit (FPU) for single-precision arithmetic and supports DSP-oriented instructions (e.g. single-cycle 16×16 MAC operations, SIMD for 16-bit/8-bit data) to accelerate signal processing tasks. For fast real-time performance, the architecture offers low interrupt latency (with automatic context save on-chip) and features like zero-overhead loops and a programmable peripheral timer unit for scheduling tasks. In total, a high-end TC3xx (such as the TC39x) provides six 300 MHz cores plus four checker cores, yielding a theoretical processing throughput of up to ~2400 DMIPS (Dhrystone MIPS) when all cores are utilized. This represents roughly a threefold increase in computational power over the previous AURIX generation (which achieved ~740 DMIPS with three cores).&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot;&amp;gt;UDE Debug, Trace and Test solutions for Infineon TriCore™ AURIX™ TC32, TC33, TC35, TC36, TC37, TC38, TC39, TC3x Microcontrollers       https://www.pls-mc.com/products/infineon-tricore-aurix-tc32-tc33-tc35-tc36-tc37-tc38-tc39-microcontrollers/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Memory Subsystem and Cache===&lt;br /&gt;
AURIX TC3xx microcontrollers integrate a large on-chip memory system to meet real-time and safety requirements. Program flash memory sizes range up to 16 MB on the largest models, with over 6 MB of on-chip SRAM available for data and scratchpad usage. Each TriCore CPU has its own tightly-coupled local memories as well as caches: for example, each core includes a 32 KB instruction cache and a 16 KB data cache. In addition, every core has separate local RAM blocks (Harvard architecture) for instructions and data (often termed PSPR and DSPR – Program Scratch-Pad RAM and Data Scratch-Pad RAM) that allow deterministic access for time-critical routines. Shared global memory is provided via a Local Memory Unit (LMU) which can be up to several hundred kilobytes (for instance, 768 KB in the TC39x) accessible by all cores. The memory system is connected by a high-bandwidth internal bus fabric (the SRI crossbar and peripheral buses) that arbitrates access between cores, DMA engines, and peripherals. This architecture ensures that each core can quickly fetch instructions and data either from its local cache/RAM or the central memory, enabling efficient parallel processing. Memory protection hardware is also built-in to isolate tasks of different criticality, an important feature for safety and security.&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Peripherals and Interfaces===&lt;br /&gt;
One of the strengths of the AURIX TC3xx architecture is its extensive set of on-chip peripherals and interface controllers, designed to handle the complex networking and I/O needs of modern vehicles and industrial systems. Key peripheral features and interfaces include:&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref3635926&amp;quot;&amp;gt;AURIX Training System Architecture https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_System_Architecture-Training-v01_00-EN.pdf?fileId=5546d46272e49d2a0172eb476d56739e&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Networking Interfaces:&#039;&#039;&#039; Multiple CAN FD controllers (supporting up to 12 CAN-FD channels in high-end variants) for in-vehicle networking, with legacy CAN and LIN interfaces (up to 24 LIN channels) for lower-speed device communication. Many TC3xx devices also integrate up to two FlexRay controllers for time-triggered automotive networks (maintaining compatibility with earlier automotive communication standards). For high-bandwidth data, a Gigabit Ethernet MAC is included, enabling uses like automotive Ethernet (e.g., audio-video bridging and IP-based connectivity).&lt;br /&gt;
* &#039;&#039;&#039;Analog and Timers:&#039;&#039;&#039; A suite of analog peripherals including multiple ADC units for sensor interfacing and motor control, and DACs in some models. Sophisticated timer units are on-chip, notably the Generic Timer Module (GTM) and Capture/Compare Units (CCU6), which can generate complex PWM waveforms and handle events for engine control, power inverters, or robotics with minimal CPU intervention. These timers enable precise control of actuators (e.g. fuel injection timing, electric motor commutation) in real time.&lt;br /&gt;
*&#039;&#039;&#039;Serial Interfaces:&#039;&#039;&#039; SPI, I²C, UART/LIN and other serial interfaces for connecting to external sensors, actuator controllers, and memory. The controllers often support multiple instances (several SPI channels, etc.) to accommodate numerous devices. AURIX TC3xx also provides an external bus interface (EBU) for parallel memory or FPGA connectivity, and an SD/MMC interface (eMMC) to connect external flash memory for data logging or over-the-air update storage.&lt;br /&gt;
*&#039;&#039;&#039;Dedicated Processing Units:&#039;&#039;&#039; Some AURIX TC3xx models include special accelerators, such as a hardware Fast Fourier Transform unit (HW-FFT) and up to two Signal Processing Units (SPUs) optimized for radar signal processing. These enable the microcontroller to handle radar front-end data or other intensive DSP tasks (like Fourier transforms for radar or audio signals) on-chip, which is crucial for advanced driver assistance sensors. There is also a &#039;&#039;Security Module&#039;&#039; (covered in a later section) and a Safety Management Unit that supervise system integrity.&lt;br /&gt;
*&#039;&#039;&#039;Other On-chip Modules:&#039;&#039;&#039; Watchdog timers, error-correction coders for memories (ECC on flash and RAM for reliability), a programmable interrupt system, multiple DMA channels (up to 128 DMA channels) for efficient data movement, and debug interfaces (JTAG and a 2/3-pin DAP) for development. The on-chip debug system supports tracing of program execution (via a built-in Emulation Memory, MCDS) to aid in complex multicore software development.&lt;br /&gt;
&lt;br /&gt;
Overall, the AURIX TC3xx provides a highly integrated SoC-like platform, allowing a single chip to manage tasks ranging from powertrain control and chassis control to infotainment gateways. This high level of integration reduces the need for separate companion chips and helps to lower system complexity and cost.&lt;br /&gt;
===Performance and Benchmarking===&lt;br /&gt;
Fabricated in a 40 nm embedded flash process&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;, AURIX TC3xx processors achieve significant performance gains over prior generations while maintaining automotive-grade power efficiency. With six 32-bit cores at 300 MHz (four of them paired in lockstep), a flagship TC3xx device (e.g., TC39x) can deliver up to approximately 2,400 DMIPS of aggregate computing throughput&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;. In terms of per-core performance, the TriCore architecture yields around 1.3–2.0 DMIPS/MHz depending on the instruction mix, meaning each 300 MHz core can approach ~400–600 DMIPS in optimized scenarios&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. This is on par with or exceeding many contemporary 32-bit automotive MCUs. The integrated DSP extensions and optional accelerators (like the FFT unit) also enable high-speed signal processing, with Infineon citing up to ~1.8 GFLOPS of DSP throughput for certain operations&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Real-world performance improvements of the TC3xx over its predecessor are notable: for example, compared to the first-generation AURIX (which offered up to 740 DMIPS), the TC3xx’s expanded core count and clock speed provide roughly three times the computational power on the same type of workload&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. This extra headroom allows more functions (such as running multiple control algorithms or sensor fusion tasks in parallel) to be consolidated onto one microcontroller without compromising real-time deadlines&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. Despite the increase in speed and core count, the TC3xx family was designed with power and thermal constraints in mind, achieving these gains within similar power consumption envelopes as the previous generation by leveraging the smaller 40 nm process and power-saving features like clock gating&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot; /&amp;gt;. The deterministic real-time performance (with features like lockstep and tightly-coupled memory) makes the AURIX TC3xx suitable for the most demanding automotive applications, where consistent low latency and high throughput are required simultaneously.&lt;br /&gt;
&lt;br /&gt;
== On-Chip System Connectivity and Bridges ==&lt;br /&gt;
[[File:TC3xx On-Chip System Connectivity.png|thumb|The TC3xx has two &#039;&#039;&#039;SRI Domains&#039;&#039;&#039; (SRI0 and SRI1). CPU0 to CPU3 are connected to SRI0, CPU4/5 are connected to SRI1.|alt=TC3xx On-Chip System Connectivity|423x423px]]&lt;br /&gt;
The AURIX™ TC3xx Platform has three independent on-chip connectivity resources: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System Resource Interconnect Fabric (SRI Fabric)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other high bandwidth requestors to high bandwidth memories and other resources for instruction fetches and data accesses. A key component of the fabric is the SRI crossbar, which connects all the agents in one SRI domain. The SRI crossbar carries the transactions between the SRI Masters and SRI Slaves of the domain. The SRI crossbar supports parallel transactions between different SRI Master and SRI Slave agents. In addition to the parallelism of concurrent requests, it also supports pipelined requests from an SRI Master to a SRI Slave.&lt;br /&gt;
* &#039;&#039;&#039;System Peripheral Bus (SPB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other SPB masters to the medium and low bandwidth peripherals. SPB masters do not directly connect to the SRI Fabric, and will access SRI attached resources via a SFI_F2S Bridge.&lt;br /&gt;
* &#039;&#039;&#039;Back Bone Bus (BBB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and SPB masters with ADAS resources. SRI Masters do not directly connect to the BBB, but access BBB attached resources via a SFI_S2F Bridge. SPB masters also do not directly connect to the BBB, but access BBB attached resources via bridging over the SRI Fabric.&lt;br /&gt;
&lt;br /&gt;
=== CPU Resource Access Times ===&lt;br /&gt;
These tables describe the CPU access times to various resources in CPU clock cycles for the AURIX™ TC3xx Platform. In the case of load or fetch accesses, the access times are the minimum number of CPU stall cycles to complete the access. If there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes. &lt;br /&gt;
&lt;br /&gt;
For write access, the access times are the maximum for a sequence of such access (non-conflicting). In many cases for a singleton access, or a short sequence, write buffering reduces the stall effect seen by a CPU, sometimes to 0. However, as with loads and fetches, if there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes.&lt;br /&gt;
&lt;br /&gt;
==== Access latency for global resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! CPU stall cycles&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| Data read from System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |The final number of stall cycles will depend&amp;lt;br&amp;gt;on the real number of WS generated by the target resource.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;9 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |When SFI_S2F is connected to XBar2 (TC39x and TC37xED)&amp;lt;br&amp;gt;there is an additional latency due to access going through an S2S.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;5 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;6 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;3 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Module Wait State&#039;&#039;&#039;: The number of wait states for read and for write accesses is &amp;gt;= 1 and depends on the accessed module and its configuration.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU Accesses: Stall cycles for local and SRI resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! Local CPU !! Local SRI !! Remote SRI Domain&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DSPR || 0 || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DLMU || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DLMU || 2 || 5, {{rev|3|with Pipelining}}|| 5, 4&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DLMU || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to PSPR || See local SRI column || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PFlash || 5 + PWS || 10 + PWS || 13 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer miss) || 2 + PWS || 9 + PWS || 12 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer hit) || 3 || 6 || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to LMU || n.a. || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DFlash || n.a. || 5 + 3*(3 + DCWS) || 8 + 3*(3 + DCWS)&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC39x, TC37xED) || n.a. || n.a. || 14, {{rev|15|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC39x, TC37xED) || n.a. || n.a. || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC35x, TC33xED) || n.a. || 11, {{rev|12|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC35x, TC33xED) || n.a. || 9 || n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from DAM || n.a. || 10 || 13&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to DAM || n.a. || 7 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;Remote SRI Domain&#039;&#039;&#039;: Only applies to products with SRI extenders. Additional latency due to access going through an S2S&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;DCWS&#039;&#039;&#039;: Configured DFlash Corrected Wait States (Includes cycles for DFlash access cycles and ECC correction latency)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Subsystem ==&lt;br /&gt;
[[File:TC3xx Processor Core, Local Memory and Connectivity.png|alt=TC3xx Processor Core, Local Memory and Connectivity|thumb|Processor Core, Local Memory and Connectivity]]The Infineon AURIX TC3xx features up to 6 processor cores (CPU0 ... CPU5) implementing the [[TriCore Instruction Set Architecture|TC1.6.2 instruction set architecture]]. The following section focuses on the microarchitectural details of the CPU subsystem. For more information about the ISA, please take a look at the [[TriCore Instruction Set Architecture]].&lt;br /&gt;
&lt;br /&gt;
The processor core connects to the following memories and bus interfaces (where implemented):&lt;br /&gt;
*Program Scratch-Pad SRAM (PSPR)&lt;br /&gt;
*Data Scratch-Pad SRAM (DSPR)&lt;br /&gt;
*Program Cache (PCache)&lt;br /&gt;
*Data Cache (DCache)&lt;br /&gt;
*Local Memory Unit (DLMU)&lt;br /&gt;
*Local Pflash bank (LPB)&lt;br /&gt;
*SRI slave interface (x2)&lt;br /&gt;
*SRI master Interface&lt;br /&gt;
*SPB master interface&lt;br /&gt;
&lt;br /&gt;
=== TC1.6.2P Implementation Features ===&lt;br /&gt;
*Most instructions executed in 1 cycle&lt;br /&gt;
*Branch instructions in 1, 2 or 3 cycles (using dynamic branch prediction)&lt;br /&gt;
*Wide memory interface for fast context switch&lt;br /&gt;
* Automatic context save-on-entry and restore-on-exit for: subroutine, interrupt, trap&lt;br /&gt;
*Six memory protection register sets&lt;br /&gt;
*Dual instruction issuing (in parallel into Integer Pipeline and Load/Store Pipeline)&lt;br /&gt;
*Third pipeline for loop instruction only (zero overhead loop)&lt;br /&gt;
*Single precision Floating Point Unit (IEEE-754 Compatible)&lt;br /&gt;
*Dedicated Integer divide unit&lt;br /&gt;
*18 data memory protection ranges, 10 code memory protection ranges arranged in 6 sets&lt;br /&gt;
&lt;br /&gt;
=== Superscalar Architecture ===&lt;br /&gt;
The processor core within the AURIX TC3xx family, specifically the TC1.6.2P implementation, employs a superscalar architecture characterized by three parallel pipelines: the Integer Pipeline, the Load/Store Pipeline, and the Loop Pipeline. Superscalar execution is a form of instruction-level parallelism that enables the processor to issue and execute multiple instructions during a single clock cycle. The TriCore TC3xx core&#039;s superscalar architecture allows it to issue and execute multiple instructions in parallel. Specifically, it can issue up to two instructions simultaneously to the Integer and Load/Store pipelines. However, there are certain constraints on this dual issuing capability. For example, back-to-back data arithmetic instructions can only be issued in separate cycles, and a load/store instruction can be issued either on its own or paired with a data arithmetic instruction, provided the load/store instruction is the second in the pair. Under ideal conditions, with careful instruction scheduling, this dual-issue capability can lead to a throughput of close to 0.5 clock cycles per instruction, effectively executing two instructions per cycle.&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Stages ===&lt;br /&gt;
The execution of instructions within the TriCore TC3xx core is managed through a pipeline consisting of several stages. In one document it is mentioned that the pipeline consists of 6 stages &amp;lt;ref name=&amp;quot;ref3635926&amp;quot; /&amp;gt;, but the exact stages remain unclear. From the architecture the following stages can be inferred:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Fetch Stage&#039;&#039;&#039;: The initial stage in the pipeline is the Fetch stage, where instructions are retrieved from memory. This task is handled by the Instruction Fetch Unit (IFU), which is responsible for fetching instructions from the memory system. To improve efficiency, the IFU employs a pre-fetching mechanism, anticipating the instructions that will be needed and bringing them into the processor before they are actually required. Instructions are fetched through a 64-bit wide Program Memory Interface (PMI), allowing for the retrieval of a significant amount of instruction data in each cycle. The fetched instructions are then placed into an issue FIFO, a buffer capable of holding up to six instructions. This buffer plays a crucial role in managing the flow of instructions to the subsequent execution pipelines. The 64-bit fetch width and the instruction buffer are indicative of a design that aims to ensure a continuous supply of instructions to the pipelines, preventing them from being starved of work. A wider fetch path allows for more instruction bits to be obtained from memory in each clock cycle, while the buffer helps to mitigate temporary delays in instruction fetching.&lt;br /&gt;
* &#039;&#039;&#039;Execution Unit&#039;&#039;&#039;: The Execution Unit contains the Integer Pipeline, the Load/Store Pipeline and the Loop Pipeline. All three pipelines operate in parallel and are capable of executing instructions simultaneously. Each pipline has its own decode stage and two execute stages. Furthermore, the TC3xx features a Floating Point Unit (FPU). It is not clear whether the FPU is part of the execution unit or a separate unit. It is assumed that the FPU also has its own decode stage and an unknown number of execute stages&lt;br /&gt;
** &#039;&#039;&#039;Decode Stage&#039;&#039;&#039;: Following the Fetch stage, the instruction are issued to one of the pipelines. In the decode stage of each pipeline, the instruction is examined and translated to determine the specific operation it represents and to identify the operands it will operate on. It is assumed that operands are read from the register file during the decode stage.&lt;br /&gt;
** &#039;&#039;&#039;Execute Stage&#039;&#039;&#039;: The Execute stage is where the actual operation specified by the instruction is carried out. Pipeline hazards (stalls) are minimised by the use of forwarding paths between pipeline stages allowing the results of one instruction to be used by a following instruction as soon as the result becomes available.&lt;br /&gt;
** &#039;&#039;&#039;Writeback Stage&#039;&#039;&#039;: The final stage in the pipeline is the Writeback stage. In this stage, the results produced by the executed instruction are written back to the processor&#039;s register file, making them available for subsequent instructions. It is unclear whether the writeback stage is part of the (two) execution stages or a separate stage.&lt;br /&gt;
&lt;br /&gt;
=== Execution Pipelines ===&lt;br /&gt;
The TriCore TC3xx core leverages four parallel pipelines to enhance its performance. Each pipeline is designed to handle a specific class of instructions:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Integer Pipeline:&#039;&#039;&#039; This pipeline is responsible for executing integer arithmetic and logical instructions, including data-conditional jump instructions, bit manipulation operations, as well as division and multiply-accumulate (MAC) instructions.&lt;br /&gt;
* &#039;&#039;&#039;Load/Store Pipeline:&#039;&#039;&#039; The primary function of this pipeline is to manage memory access operations, including loading data from memory and storing data to memory. It also handles address arithmetic, unconditional jump instructions, procedure call instructions, context-switching operations, and control flow related to context save areas (CSAs).&lt;br /&gt;
* &#039;&#039;&#039;Loop Pipeline:&#039;&#039;&#039; This is a specialized pipeline designed to facilitate zero-overhead loops, a technique that significantly improves the performance of iterative code sections. Its design aims to eliminate or minimize the overhead typically associated with loop control, such as incrementing counters and checking loop conditions. Some documentation suggests that the loop pipeline comes along with a &amp;quot;Loop Cache&amp;quot;. This dedicated cache would likely be used to store instructions belonging to the loop, enabling very fast access and execution for repeated iterations.&lt;br /&gt;
* &#039;&#039;&#039;Floating Point Unit (FPU):&#039;&#039;&#039; The FPU is responsible for executing floating-point arithmetic operations&lt;br /&gt;
&lt;br /&gt;
=== Store Buffers ===&lt;br /&gt;
The TriCore TC3xx core include &#039;&#039;&#039;Store Buffers&#039;&#039;&#039; to decouple memory write operations from CPU instruction execution. All stores from the Load/Store Pipeline are placed in the store buffer prior to being written to local memory or transferred via the bus system. Write data is taken from the store buffers and written to memory when the target memory or bus interface becomes available. In normal operation the CPU will prioritise memory load operations over store operations in order to improve performance unless the store buffer is full or the order of load and store operations must be preserved (e.g. peripheral space access). The store buffer can hold the data for up to 6 stores operations. To improve performance the store buffer will merge consecutive byte, half-word, and word writes of the same location to reduce the number of memory accesses required.&lt;br /&gt;
&lt;br /&gt;
=== Instruction Timing ===&lt;br /&gt;
&lt;br /&gt;
==Functional Safety and Security Features==&lt;br /&gt;
===Hardware Security Module and Encryption===&lt;br /&gt;
One of the defining features of the AURIX TC3xx family is its robust hardware-based security subsystem, implemented to protect against cyber threats and unauthorized manipulation of vehicle systems. Each TC3xx MCU includes a dedicated &#039;&#039;Hardware Security Module&#039;&#039; (HSM), which is essentially an on-chip co-processor with its own CPU and cryptographic engine designed to handle secure operations. In the second-generation AURIX (TC3xx), the HSM was upgraded with support for asymmetric cryptography (e.g., RSA, ECC algorithms) in hardware, providing significantly faster public-key encryption and authentication capabilities than pure software implementations. This HSM supports &#039;&#039;&#039;EVITA Full&#039;&#039;&#039; (the highest level of the EU’s EVITA automotive security requirements), meaning it can perform secure boot, message authentication, and encryption at a level suitable for protecting critical in-vehicle communications. For example, the HSM can encrypt and authenticate CAN/Ethernet messages to prevent spoofing or tampering on the vehicle network, and it can manage cryptographic keys securely isolated from the main application cores.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The security module enables features like &#039;&#039;&#039;secure boot&#039;&#039;&#039;, where the AURIX will only execute firmware that is digitally signed by the vehicle manufacturer, thereby preventing unauthorized or malicious code. It also facilitates &#039;&#039;over-the-air (OTA) updates&#039;&#039; in a secure manner: the TC3xx HSM can verify and decrypt update packages received via telematics, allowing firmware upgrades while protecting against attackers attempting to hijack the software. In addition, the HSM includes a true random number generator and supports protocols for immobilizer and theft protection systems. Infineon’s implementation essentially treats the HSM as an “embedded smart card” inside the microcontroller. This approach, building on Infineon’s expertise in chip card security, helps to safeguard sensitive assets like cryptographic keys and to perform secure operations (encryption, decryption, authentication) in hardware, making attacks significantly more difficult. The strong cybersecurity provisions of the AURIX TC3xx have made it a preferred choice for vehicle gateway ECUs and central body controllers, which are points of entry for connected car communications and thus high-value targets for hackers. By incorporating the HSM, automotive OEMs can implement advanced security features such as encrypted onboard communication (to thwart bus tampering) and secure diagnostics, ensuring the vehicle’s electronic data is protected against cyber threats even as cars become more connected.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref19484776953&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Functional Safety and Fault Tolerance===&lt;br /&gt;
Beyond cybersecurity, the AURIX TC3xx architecture is built with extensive &#039;&#039;functional safety&#039;&#039; features to meet the highest safety integrity levels in automotive systems. The multi-core design supports &#039;&#039;lockstep operation&#039;&#039;, where redundant checker cores run in parallel with main cores and continuously compare results cycle-by-cycle. In TC3xx devices, up to four of the six TriCore CPUs have such lockstep partner cores, allowing the microcontroller to detect any single-point CPU failure instantly (if a discrepancy arises between the core and its checker, a fault is signaled). A &#039;&#039;Safety Management Unit (SMU)&#039;&#039; is integrated on-chip to monitor various fault conditions throughout the device – it aggregates error signals from the lockstep cores, memory ECC monitors, clock/watchdog monitors, and peripheral self-tests, and can initiate safe-state actions (like resetting the chip or signaling an error pin to an external supervisor) if a critical fault is detected. The AURIX safety concept also includes a distributed Memory Protection Unit (MPU) arrangement, with multiple memory protection contexts that prevent errant or malicious code from writing to wrong memory areas. This helps contain faults and eases the integration of software with mixed criticality (Infineon allows partitioning software components of different ASIL levels on the same MCU while keeping them isolated).&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref19519075552&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crucially, the TC3xx family was developed according to ISO 26262 processes and can achieve &#039;&#039;&#039;ASIL-D&#039;&#039;&#039; (Automotive Safety Integrity Level D), the highest grade for automotive functional safety. Compared to a traditional dual-core lockstep approach, the AURIX’s multi-core safety architecture allowed Infineon to reduce certain safety development overheads (earlier Infineon data suggested up to 30% reduction in safety software workload) by providing built-in safety mechanisms and diagnostics. Infineon supplies a comprehensive safety manual and diagnostic libraries for the AURIX, helping engineers utilize features like CPU self-tests, RAM tests, and CRC checks to comply with safety standards. In addition to automotive standards, the AURIX TC3xx has also been qualified for &#039;&#039;&#039;industrial safety&#039;&#039;&#039;: in 2023, Infineon announced support for IEC 61508 metrics, enabling designs with AURIX to reach SIL-2 and SIL-3 safety integrity levels for industrial applications. This cross-industry safety compliance is facilitated by the MCU’s redundant design and detailed failure mode documentation (FMEDA) provided by Infineon. In summary, the AURIX TC3xx integrates both proactive safety (fault prevention via lockstep, monitoring and protection) and reactive safety (fault detection and safe shutdown), making it a dependable component for systems that cannot afford unintended behavior, whether in cars, factories, or aerospace. &amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref4967712052&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref196858272&amp;quot;&amp;gt;MCUs support industrial functional safety - Electronic Products https://www.electronicproducts.com/mcus-support-industrial-functional-safety/&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Platform Devices ==&lt;br /&gt;
The following table shows a feature overview of the AURIX™ TC3xx Platform family focusing on memory and number of cores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Feature&lt;br /&gt;
!TC33x&lt;br /&gt;
!TC33xEXT&lt;br /&gt;
!TC35x&lt;br /&gt;
!TC36x&lt;br /&gt;
!TC37x&lt;br /&gt;
!TC37xEXT&lt;br /&gt;
!TC38x&lt;br /&gt;
!TC39x&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |CPUs&lt;br /&gt;
|Cores / Checker Cores&lt;br /&gt;
|1 / 1&lt;br /&gt;
|2 / 1&lt;br /&gt;
|3 / 2&lt;br /&gt;
|2 / 2&lt;br /&gt;
|3 / 2&lt;br /&gt;
|3 / 3&lt;br /&gt;
|4 / 2&lt;br /&gt;
|6 / 4&lt;br /&gt;
|-&lt;br /&gt;
|Max. Freq.&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Cache per CPU &lt;br /&gt;
|Program [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |32&lt;br /&gt;
|-&lt;br /&gt;
|Data [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |SRAM per CPU&lt;br /&gt;
|PSPR [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|32|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|DSPR [KB]&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|192|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|-&lt;br /&gt;
|DLMU [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|8|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |SRAM global&lt;br /&gt;
|LMU [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|512&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|128&lt;br /&gt;
|768&lt;br /&gt;
|-&lt;br /&gt;
|DAM [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|32&lt;br /&gt;
| -&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Extension Memory (EMEM)&lt;br /&gt;
|TCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XTM [KB]&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Program Flash&lt;br /&gt;
|Size [MB]&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|10&lt;br /&gt;
|10&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|Banks [MB]&lt;br /&gt;
|1 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 3&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|5 x 3, 1 x 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Data Flash&lt;br /&gt;
|DF0 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|256&lt;br /&gt;
|512&lt;br /&gt;
|512&lt;br /&gt;
|1024&lt;br /&gt;
|-&lt;br /&gt;
|DF1 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |DMA&lt;br /&gt;
|Channels&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
|Move Engines&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Resource Partitions&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
The AURIX TC3xx family is a series of high-performance microcontrollers widely used in automotive and industrial applications. Compilers for the AURIX TC3xx are crucial for developers aiming to optimize performance, reliability, and safety in their applications. One significant aspect of the compiler landscape for AURIX TC3xx is the limited direct support from mainline open-source compilers such as GCC or LLVM/Clang. The primary reason for this is the stringent requirements for functional safety in automotive and industrial applications, which demand specialized features and compliance with safety standards that are often not met by general-purpose open-source compilers.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Compilers ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Tasking&#039;&#039;&#039;: Tasking compilers are renowned for their robust support for automotive applications, offering advanced debugging capabilities and optimization techniques tailored for the AURIX architecture. They provide extensive code optimization, comprehensive debugging tools, and strong support for safety standards such as ISO 26262, making them ideal for developing high-performance, reliable, and safe applications.&lt;br /&gt;
# &#039;&#039;&#039;HighTec&#039;&#039;&#039;: The HighTec compiler is a popular choice, known for its Eclipse-based development environment and strong multicore support. HighTec provides both GCC and LLVM-based ports of open-source compilers tailored specifically for the AURIX TC3xx family. These compilers offer efficient parallel execution, advanced code analysis, and an integrated development environment, ensuring robust performance and compliance with safety standards.&lt;br /&gt;
# &#039;&#039;&#039;Green Hills Software&#039;&#039;&#039;: Green Hills Software provides a highly optimized toolchain aimed at safety-critical applications, focusing on high performance and strict compliance with automotive standards. Their compiler offers superior optimization, extensive safety features, and a proprietary IDE with specialized tools for automotive development, ensuring developers can meet the stringent demands of functional safety.&lt;br /&gt;
&lt;br /&gt;
=== GCC for AURIX ===&lt;br /&gt;
&lt;br /&gt;
While mainline GCC does not directly support the AURIX TC3xx family, there is an unofficial GCC version available for AURIX. Due to the GNU General Public License (GPL), the source code from HighTec was retrieved and, along with binary versions, published on GitHub:&lt;br /&gt;
&lt;br /&gt;
*GCC 4.9.4/Binutils 2.20/Newlib 1.18 for Tricore Aurix [[https://github.com/volumit/package_494 Source]] [[https://github.com/volumit/tricore_gcc494_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc494_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GCC 9.4.0/Binutils 2.20/Newlib 1.18 for Tricore Aurix [[https://github.com/volumit/package_940 Source]] [[https://github.com/volumit/tricore_gcc940_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc940_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GDB 10.0.50 for Tricore Aurix [[https://github.com/volumit/gdb-tricore Source]]&lt;br /&gt;
==emmtrix Tools for AURIX TC3xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX TC3xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC4x]]&lt;br /&gt;
*[[Infineon AURIX TC2xx]]&lt;br /&gt;
*[[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&lt;br /&gt;
*[https://documentation.infineon.com/aurixtc3xx/docs/qmd1702366622648 AURIX TC3xx user manuals]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d3605221d96 AURIX™ TC3xx User Manual Part-1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d35f8541d94 AURIX™ TC3xx User Manual Part-2]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd AURIX™ TC3xx Architecture vol 1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 AURIX™ TC3xx Architecture vol 2]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
 |title=Infineon AURIX TC3xx Family – Deep Dive&lt;br /&gt;
 |description=This deep dive into Infineon&#039;s AURIX TC3xx family explores its multi-core TriCore architecture, real-time capabilities, safety and security features and tools&lt;br /&gt;
 |image=File:AURIX_TC399_LFBGA-516_plain.jpg&lt;br /&gt;
 |keywords=AURIX, Infineon, TC3xx, microcontroller, TriCore, automotive, ADAS, ISO 26262, functional safety, embedded security, ASIL-D, deep dive&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2646</id>
		<title>Infineon AURIX TC2xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2646"/>
		<updated>2025-03-28T11:43:25Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Infineon AURIX TC2xx&#039;&#039;&#039; is a family of 32-bit automotive microcontrollers developed by Infineon Technologies. &#039;&#039;AURIX&#039;&#039; stands for &#039;&#039;“Automotive Realtime Integrated Next Generation Architecture”&#039;&#039;, reflecting its design for real-time, safety-critical automotive applications&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. The TC2xx series (first-generation AURIX) is based on a multicore architecture featuring up to three independent 32-bit &#039;&#039;&#039;TriCore&#039;&#039;&#039; processor cores. Introduced around 2012, the AURIX TC2xx marked Infineon’s transition to a multicore microcontroller platform (fabricated in 65 nm technology) after earlier single-core TriCore generations. It was designed from the ground up to meet stringent automotive safety requirements (ISO 26262) and to provide higher performance and integration for applications like engine management, chassis control, and driver assistance systems.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot;&amp;gt;Optimized for Success - EE Times Europe https://www.eetimes.eu/optimized-for-success/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The AURIX TC2xx family’s design philosophy is to combine &#039;&#039;&#039;safety&#039;&#039;&#039;, &#039;&#039;&#039;security&#039;&#039;&#039;, and &#039;&#039;&#039;performance&#039;&#039;&#039; in one scalable MCU platform. It achieves high functional safety compliance (up to &#039;&#039;&#039;ASIL-D&#039;&#039;&#039;, the highest automotive safety integrity level) with less development effort compared to traditional dual-controller lockstep systems&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. Infineon claims that using AURIX can cut safety-related development time by ~30% versus classical lockstep architectures, thanks to its built-in fault detection and monitoring hardware. At the same time, the TC2xx provides significant performance headroom – roughly 50% to 100% higher computational performance compared to its predecessors – while maintaining power consumption similar to previous single-core designs. To address emerging automotive security needs, the AURIX MCUs also integrate a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) on-chip, which protects against IP theft, fraud, and tampering. This combination of features makes the AURIX TC2xx a popular choice for consolidating various automotive control functions (powertrain, safety, body, etc.) onto one platform, without sacrificing reliability or efficiency.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC2xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Architecture==&lt;br /&gt;
The AURIX TC2xx is built on Infineon’s &#039;&#039;&#039;TriCore&#039;&#039;&#039; architecture, which uniquely unifies traits of a RISC processor, a microcontroller, and a DSP (digital signal processor) into one core design. Each TriCore CPU in the TC2xx is a 32-bit superscalar processor that supports both 32-bit and 16-bit instruction formats (the latter for code size efficiency). The TriCore instruction set architecture includes typical RISC features (load/store architecture, 4 GB address space) and DSP capabilities (such as multiply-accumulate instructions and bit manipulation) in a single core. The cores also have an optional floating-point unit (FPU) and support SIMD (single-instruction multiple-data) operations for signal processing acceleration. The maximum core frequency in the TC2xx family is 300 MHz, and devices achieve about 1.7–2.4 DMIPS/MHz per core, providing robust real-time performance.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In terms of core configuration, high-end AURIX TC2xx models implement three main TriCore CPUs, which can be run in parallel or in redundant (lockstep) pairs for safety. Some variants include a redundant checker core that shadows a primary core to detect calculation errors (a technique to meet SIL/ASIL safety goals). The multicore architecture is supported by a layered memory system: each TriCore has tightly coupled local memory for fast instruction and data access, and they share access to large on-chip Flash and RAM via an internal bus matrix. Memory options in the TC2xx range from about &#039;&#039;&#039;0.5 MB up to 8 MB of on-chip Flash&#039;&#039;&#039;, and from ~50 KB up to 2.7 MB of SRAM, depending on the specific device. This on-chip memory (with ECC protection on memories for safety) allows real-time code execution and data storage without external memory in most use cases. For peripherals and I/O, the AURIX architecture includes a rich set of on-chip modules connected via internal buses, such as analog-to-digital converters, timer units, communication interfaces, and direct memory access (DMA) controllers. AURIX TC2xx MCUs typically provide interfaces like multiple CAN/CAN-FD channels, LIN/UART, SPI, I²C, Ethernet (on higher-end models), and automotive-specific buses (e.g. FlexRay on some variants), making the chip a self-contained controller for complex automotive networks.&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot;&amp;gt;Infineon TriCore - Wikipedia https://en.wikipedia.org/wiki/Infineon_TriCore&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; is a notable part of the AURIX TC2xx architecture. It is a sophisticated timer/co-processor integrated on-chip to handle complex timing, PWM generation, input capture, and other signal conditioning tasks across more than 200 channels. There are also specialized accelerators and co-processors on certain TC2xx devices, such as a &#039;&#039;&#039;Hardware Fast Fourier Transform (HFFT)&#039;&#039;&#039; unit for signal processing and a &#039;&#039;&#039;Parallel Pixel Processor&#039;&#039;&#039; for simple video or sensor data processing. These dedicated engines offload the TriCore CPUs for specific high-load tasks (e.g. radar signal FFTs or encoder signal processing), improving overall throughput in automotive applications. The AURIX architecture uses a single-power supply (5V or 3.3V) design and includes an on-chip voltage regulator (EVR), simplifying power management. The MCUs are offered in a variety of package types (from compact QFP-64 up to large BGA-516) to accommodate different I/O needs. Overall, the TC2xx architecture is highly integrated and optimized for real-time, combining multiple CPU cores with ample flash memory, SRAM, and peripherals on one chip to serve as a &#039;&#039;&#039;central control unit&#039;&#039;&#039; in vehicles.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Aurix Unleashed - RS Components https://docs.rs-online.com/0f3f/0900766b815c315c.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Key Features==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Safety Mechanisms:&#039;&#039;&#039; The AURIX TC2xx was developed via an ISO 26262-compliant process and includes multiple hardware mechanisms to achieve &#039;&#039;&#039;functional safety up to ASIL-D&#039;&#039;&#039;. Notably, it supports &#039;&#039;lockstep&#039;&#039; operation, where one or two of the TriCore CPUs can run in redundant lockstep mode with another core to detect discrepancies (faults) cycle-by-cycle. A Safety Management Unit (&#039;&#039;&#039;SMU&#039;&#039;&#039;) is built in to monitor critical system parameters and handle faults. The architecture employs memory protection units and safe internal communication buses to isolate and supervise different software domains. Other safety features include &#039;&#039;&#039;error-correcting code (ECC)&#039;&#039;&#039; on flash and RAM, redundant peripherals (for example, duplicated ADC channels), watchdog timers, clock and voltage monitors, and self-test routines. These features allow developers to more easily implement safety-critical functions and meet standards like IEC 61508 (SIL-3) or ISO 26262 (ASIL-D) using a single AURIX MCU, whereas achieving the same on a traditional single-core MCU might require additional external safety ICs or companion processors.&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Security Functions:&#039;&#039;&#039; Infineon integrated a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) into the AURIX TC2xx family to address automotive cybersecurity requirements. This HSM is essentially an on-chip co-processor (with its own CPU and flash) that handles cryptographic operations and secure key storage isolated from the main cores. It follows the EVITA (E-safety Vehicle Intrusion Protected Applications) guidelines for automotive security. The HSM enables features like secure boot, encryption/decryption, authentication, and detection of software tampering. By having a built-in “embedded smart card” for security, the AURIX can implement anti-theft, anti-cloning, and secure onboard communication measures without needing an external security chip. This integration is a key differentiator, as it helps protect vehicle functions (e.g. immobilizers, firmware updates, V2X communication) against hacking and unauthorized modifications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Performance and DSP Capability:&#039;&#039;&#039; Each TriCore CPU in the TC2xx is capable of up to 300 MHz operation, and combined the multicore setup offers considerable processing power for an MCU (Infineon cites up to ~1.8 GFLOPS of DSP throughput for the highest models). The TriCore design delivers around &#039;&#039;&#039;1.7–2.4 DMIPS/MHz&#039;&#039;&#039; per core, meaning a triple-core AURIX at max frequency can exceed 2000 DMIPS of total throughput. The inclusion of DSP instructions and dedicated accelerators enables the AURIX to handle computationally intensive tasks (like control algorithms, filtering operations, or even rudimentary neural networks) that previously might require a separate DSP or FPGA. A built-in &#039;&#039;&#039;Floating Point Unit&#039;&#039;&#039; on each core supports single-precision (and optional double-precision in some cases) arithmetic, beneficial for model-based control algorithms and automotive sensor processing. Peripherals like the &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; and &#039;&#039;&#039;Hardware FFT&#039;&#039;&#039; accelerator (available on select TC2xx variants) further boost real-time performance for handling high-frequency events (e.g. engine ignition timing, motor control PWM, radar signal analysis) without overloading the CPU. Despite the performance, the TC2xx was designed with efficiency in mind; Infineon managed to double the performance over the prior generation (TC1xx AUDO) while keeping power consumption at comparable levels. The MCUs also support various low-power modes and a standby controller to minimize energy usage when parts of the system are idle.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Power and Integration:&#039;&#039;&#039; As a system-on-chip for vehicles, AURIX TC2xx integrates a wide range of &#039;&#039;&#039;communication interfaces&#039;&#039;&#039; and analog/digital peripherals. Common features include multiple CAN bus controllers (often with CAN FD support), LIN/UART, SPI and I²C channels, FlexRay communication in high-end models, and even Ethernet (in variants aimed at gateway or ADAS roles). High-resolution &#039;&#039;&#039;ADC units&#039;&#039;&#039; (with shared and redundant channels) allow precise sensor measurements for engine or chassis control. There are also specialized modules like delta-sigma ADCs and SENT interfaces for automotive sensor inputs. This rich peripheral set reduces the need for external components, helping to lower the overall system Bill of Materials. The TC2xx devices operate over a broad temperature range (typically –40 °C to +150 °C), meeting the demands of under-the-hood automotive environments. They run from a single supply (with internal regulators), simplifying designs, and support both 5 V and 3.3 V systems for compatibility with a variety of sensors and actuators. Combined with its safety and security features, the AURIX’s high integration makes it a one-chip solution for many complex embedded applications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
The Infineon AURIX TC2xx family is primarily targeted at the &#039;&#039;&#039;automotive industry&#039;&#039;&#039;, especially domains requiring high reliability and real-time control. Its initial use cases were in &#039;&#039;&#039;powertrain&#039;&#039;&#039; and engine management systems – for example, controlling combustion engines, managing fuel injection and ignition, and coordinating electric motor and battery systems in hybrid or electric vehicles. The multi-core AURIX can run multiple control algorithms in parallel (e.g. for an engine’s cylinders, transmission and motor inverter concurrently), which is valuable in modern electrified powertrains. Beyond engines, AURIX TC2xx MCUs are used in &#039;&#039;&#039;chassis and safety systems&#039;&#039;&#039;: they can serve as the central controller for &#039;&#039;&#039;anti-lock braking systems (ABS)&#039;&#039;&#039; and stability control, &#039;&#039;&#039;airbag control units&#039;&#039;&#039;, &#039;&#039;&#039;electric power steering (EPS)&#039;&#039;&#039; systems, and suspension controllers. Advanced Driver Assistance Systems (&#039;&#039;&#039;ADAS&#039;&#039;&#039;) and autonomous driving modules in earlier generations of vehicles have also employed AURIX for tasks such as sensor fusion, radar signal processing, and acting as a safety supervisor for driving assistance features&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. For example, a radar unit for adaptive cruise control might use an AURIX to perform real-time signal processing (using its DSP capabilities and HFFT) and make high-level decisions, all within an ASIL-D safe environment.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot;&amp;gt;https://resources.tasking.com/sites/default/files/2021-02/Take%20Advantage%20of%20Infineon%20AURIX%20TC3xx%20Family%20With%20the%20Right%20Compiler_WEB.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to its safety certification and robust design, the AURIX TC2xx has seen adoption in any application that cannot tolerate failure. This includes &#039;&#039;&#039;industrial automation and robotics&#039;&#039;&#039;, where the MCU’s reliability and support for functional safety (IEC 61508) are attractive. In industrial motor drives or robotics controllers, an AURIX might handle precise motor control algorithms and system monitoring. Other use cases outside pure automotive include &#039;&#039;&#039;commercial vehicles and transportation&#039;&#039;&#039; (trucks, agricultural and construction machinery), which have similar safety and durability requirements. The AURIX’s extensive communication interfaces also make it suitable as a gateway or central node in complex networks – for instance, acting as a domain controller in modern automotive E/E architectures to coordinate data between powertrain, body, and ADAS subsystems. Some &#039;&#039;&#039;electric vehicle (EV)&#039;&#039;&#039; platforms use AURIX MCUs in battery management systems and inverter controls, leveraging its calculation power for battery algorithms and its safety for monitoring cell health. In summary, the TC2xx family finds use in scenarios that demand &#039;&#039;&#039;real-time performance with high safety integrity&#039;&#039;&#039;, predominantly in automotive (engine, transmission, chassis, safety, ADAS) but also in high-end industrial embedded systems.&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==emmtrix Tools for AURIX TC2xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX TC2xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ TC2xx / [[Infineon AURIX TC3xx|TC3xx]]/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[Infineon AURIX TC4x]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&lt;br /&gt;
* [https://www.infineon.com/dgdl/Infineon-TC29x_B-step-UM-v01_03-EN.pdf?fileId=5546d46269bda8df0169ca1bdee424a2 TC29x B-Step User Manual]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2645</id>
		<title>Infineon AURIX TC4x</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2645"/>
		<updated>2025-03-28T11:42:47Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Infineon Aurix TC4x.webp|right|frameless]]&lt;br /&gt;
The TC4x is Infineon&#039;s latest generation of AURIX™ microcontrollers, designed for advanced automotive applications, including eMobility, Advanced Driver Assistance Systems (ADAS), and automotive E/E (Electric/Electronic) architectures. These microcontrollers are built on a 28 nm process and feature the [[TriCore Instruction Set Architecture|TriCore™ 1.8 instruction set architecture]], which includes up to six cores running at speeds up to 500 MHz. This architecture is optimized for high-performance and real-time applications.&lt;br /&gt;
&lt;br /&gt;
== Key Features ==&lt;br /&gt;
* &#039;&#039;&#039;High Performance and Scalability&#039;&#039;&#039;: Equipped with a Parallel Processing Unit (PPU), Data Routing Engine (DRE), and other accelerators to enhance AI capabilities and real-time processing.&lt;br /&gt;
* &#039;&#039;&#039;Extensive Connectivity&#039;&#039;&#039;: Supports high-speed communication interfaces such as 5 Gbps Ethernet, PCIe, CAN-XL, and 10BASE-T1S Ethernet, providing flexibility and performance for various automotive applications.&lt;br /&gt;
* &#039;&#039;&#039;Enhanced Security&#039;&#039;&#039;: Compliant with ISO 21434, the TC4x includes advanced cybersecurity modules and supports safe, over-the-air (SOTA) updates with zero downtime.&lt;br /&gt;
* &#039;&#039;&#039;Memory and Storage&#039;&#039;&#039;: Features up to 25 MB of on-chip flash memory, allowing for complex software applications and data storage.&lt;br /&gt;
* &#039;&#039;&#039;Real-Time Control&#039;&#039;&#039;: Advanced timers and ADCs (Analog-to-Digital Converters) improve control loops for electric motors and power conversion tasks.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
[[File:Infineon TC4x Architecture.png|thumb|Infineon TC4x architecture|494x494px]]&lt;br /&gt;
&lt;br /&gt;
=== System Architecture ===&lt;br /&gt;
&lt;br /&gt;
=== TC 1.8P Processor Core (CPU0 ... CPU5) ===&lt;br /&gt;
&lt;br /&gt;
=== Parallel Processing Unit (PPU) ===&lt;br /&gt;
The PPU is an implementation of the &#039;&#039;&#039;DesignWare ARC EV71 Processor&#039;&#039;&#039;. The length of the vector registers is flexible and depends on the version. Commercially, 128 or 256 bit vector registers are available. In a pre-series stepping even 512 bit was used.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
* eMobility&lt;br /&gt;
* ADAS&lt;br /&gt;
* Automotive E/E architectures&lt;br /&gt;
* Affordable artificial intelligence (AI) applications&lt;br /&gt;
&lt;br /&gt;
== emmtrix Tools for AURIX TC4x ==&lt;br /&gt;
emmtrix offers several tools for the Infineon AURIX TC4x architecture:&lt;br /&gt;
&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer] for vectorizing C code for the Infineon PPU. emmtrix was working together with Infineon already during develop of the TC4x architecture for supporting the PPU and received one of the first series A test boards.&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-performance-estimatorator emmtrix Performance Estimator] for estimating the performance of C code written for the Tricore CPUs.&lt;br /&gt;
&lt;br /&gt;
[[File:Infineon Board.png|thumb|Infineon Development Board (AURIX™ TC4x Communication Board)]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Code Vectorizer ===&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer (eCV)] simplifies programming the Parallel Processing Unit (PPU) on Infineon’s &#039;&#039;&#039;AURIX™ TC4x microcontrollers&#039;&#039;&#039;, enabling significant acceleration of data-parallel applications like sensor fusion or AI inference. By leveraging the PPU, these tasks can be accelerated by factors &amp;gt;10, unlocking the full potential of hardware capabilities.&lt;br /&gt;
&lt;br /&gt;
eCV automates the vectorization process, transforming sequential C code into optimized vectorized code tailored to the &#039;&#039;&#039;AURIX™ TC4x architecture&#039;&#039;&#039;. This includes efficient handling of memory layouts and advanced loop transformations. Developers can simulate and test functionality even without access to target hardware, reducing development time and effort.&lt;br /&gt;
&lt;br /&gt;
With support for &#039;&#039;&#039;Simulink® models, ONNX-based AI workflows,&#039;&#039;&#039; and detailed performance insights through integrated simulators, eCV minimizes the need for manual optimization while maximizing hardware performance.[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is an Infineon Associated Partner with over 10 years of experience working with the &#039;&#039;&#039;Infineon AURIX™ microcontroller family&#039;&#039;&#039; and has been actively collaborating with Infineon for the past five years.]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / [[Infineon AURIX TC3xx|TC3xx]]/ TC4x microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc4x/&lt;br /&gt;
&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2644</id>
		<title>Infineon AURIX TC2xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2644"/>
		<updated>2025-03-27T12:58:37Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: /* emmtrix Tools for AURIX TC3xx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Infineon AURIX TC2xx&#039;&#039;&#039; is a family of 32-bit automotive microcontrollers developed by Infineon Technologies. &#039;&#039;AURIX&#039;&#039; stands for &#039;&#039;“Automotive Realtime Integrated Next Generation Architecture”&#039;&#039;, reflecting its design for real-time, safety-critical automotive applications&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. The TC2xx series (first-generation AURIX) is based on a multicore architecture featuring up to three independent 32-bit &#039;&#039;&#039;TriCore&#039;&#039;&#039; processor cores. Introduced around 2012, the AURIX TC2xx marked Infineon’s transition to a multicore microcontroller platform (fabricated in 65 nm technology) after earlier single-core TriCore generations. It was designed from the ground up to meet stringent automotive safety requirements (ISO 26262) and to provide higher performance and integration for applications like engine management, chassis control, and driver assistance systems.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot;&amp;gt;Optimized for Success - EE Times Europe https://www.eetimes.eu/optimized-for-success/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The AURIX TC2xx family’s design philosophy is to combine &#039;&#039;&#039;safety&#039;&#039;&#039;, &#039;&#039;&#039;security&#039;&#039;&#039;, and &#039;&#039;&#039;performance&#039;&#039;&#039; in one scalable MCU platform. It achieves high functional safety compliance (up to &#039;&#039;&#039;ASIL-D&#039;&#039;&#039;, the highest automotive safety integrity level) with less development effort compared to traditional dual-controller lockstep systems&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. Infineon claims that using AURIX can cut safety-related development time by ~30% versus classical lockstep architectures, thanks to its built-in fault detection and monitoring hardware. At the same time, the TC2xx provides significant performance headroom – roughly 50% to 100% higher computational performance compared to its predecessors – while maintaining power consumption similar to previous single-core designs. To address emerging automotive security needs, the AURIX MCUs also integrate a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) on-chip, which protects against IP theft, fraud, and tampering. This combination of features makes the AURIX TC2xx a popular choice for consolidating various automotive control functions (powertrain, safety, body, etc.) onto one platform, without sacrificing reliability or efficiency.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC2xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Architecture==&lt;br /&gt;
The AURIX TC2xx is built on Infineon’s &#039;&#039;&#039;TriCore&#039;&#039;&#039; architecture, which uniquely unifies traits of a RISC processor, a microcontroller, and a DSP (digital signal processor) into one core design. Each TriCore CPU in the TC2xx is a 32-bit superscalar processor that supports both 32-bit and 16-bit instruction formats (the latter for code size efficiency). The TriCore instruction set architecture includes typical RISC features (load/store architecture, 4 GB address space) and DSP capabilities (such as multiply-accumulate instructions and bit manipulation) in a single core. The cores also have an optional floating-point unit (FPU) and support SIMD (single-instruction multiple-data) operations for signal processing acceleration. The maximum core frequency in the TC2xx family is 300 MHz, and devices achieve about 1.7–2.4 DMIPS/MHz per core, providing robust real-time performance.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In terms of core configuration, high-end AURIX TC2xx models implement three main TriCore CPUs, which can be run in parallel or in redundant (lockstep) pairs for safety. Some variants include a redundant checker core that shadows a primary core to detect calculation errors (a technique to meet SIL/ASIL safety goals). The multicore architecture is supported by a layered memory system: each TriCore has tightly coupled local memory for fast instruction and data access, and they share access to large on-chip Flash and RAM via an internal bus matrix. Memory options in the TC2xx range from about &#039;&#039;&#039;0.5 MB up to 8 MB of on-chip Flash&#039;&#039;&#039;, and from ~50 KB up to 2.7 MB of SRAM, depending on the specific device. This on-chip memory (with ECC protection on memories for safety) allows real-time code execution and data storage without external memory in most use cases. For peripherals and I/O, the AURIX architecture includes a rich set of on-chip modules connected via internal buses, such as analog-to-digital converters, timer units, communication interfaces, and direct memory access (DMA) controllers. AURIX TC2xx MCUs typically provide interfaces like multiple CAN/CAN-FD channels, LIN/UART, SPI, I²C, Ethernet (on higher-end models), and automotive-specific buses (e.g. FlexRay on some variants), making the chip a self-contained controller for complex automotive networks.&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot;&amp;gt;Infineon TriCore - Wikipedia https://en.wikipedia.org/wiki/Infineon_TriCore&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; is a notable part of the AURIX TC2xx architecture. It is a sophisticated timer/co-processor integrated on-chip to handle complex timing, PWM generation, input capture, and other signal conditioning tasks across more than 200 channels. There are also specialized accelerators and co-processors on certain TC2xx devices, such as a &#039;&#039;&#039;Hardware Fast Fourier Transform (HFFT)&#039;&#039;&#039; unit for signal processing and a &#039;&#039;&#039;Parallel Pixel Processor&#039;&#039;&#039; for simple video or sensor data processing. These dedicated engines offload the TriCore CPUs for specific high-load tasks (e.g. radar signal FFTs or encoder signal processing), improving overall throughput in automotive applications. The AURIX architecture uses a single-power supply (5V or 3.3V) design and includes an on-chip voltage regulator (EVR), simplifying power management. The MCUs are offered in a variety of package types (from compact QFP-64 up to large BGA-516) to accommodate different I/O needs. Overall, the TC2xx architecture is highly integrated and optimized for real-time, combining multiple CPU cores with ample flash memory, SRAM, and peripherals on one chip to serve as a &#039;&#039;&#039;central control unit&#039;&#039;&#039; in vehicles.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Aurix Unleashed - RS Components https://docs.rs-online.com/0f3f/0900766b815c315c.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Key Features==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Safety Mechanisms:&#039;&#039;&#039; The AURIX TC2xx was developed via an ISO 26262-compliant process and includes multiple hardware mechanisms to achieve &#039;&#039;&#039;functional safety up to ASIL-D&#039;&#039;&#039;. Notably, it supports &#039;&#039;lockstep&#039;&#039; operation, where one or two of the TriCore CPUs can run in redundant lockstep mode with another core to detect discrepancies (faults) cycle-by-cycle. A Safety Management Unit (&#039;&#039;&#039;SMU&#039;&#039;&#039;) is built in to monitor critical system parameters and handle faults. The architecture employs memory protection units and safe internal communication buses to isolate and supervise different software domains. Other safety features include &#039;&#039;&#039;error-correcting code (ECC)&#039;&#039;&#039; on flash and RAM, redundant peripherals (for example, duplicated ADC channels), watchdog timers, clock and voltage monitors, and self-test routines. These features allow developers to more easily implement safety-critical functions and meet standards like IEC 61508 (SIL-3) or ISO 26262 (ASIL-D) using a single AURIX MCU, whereas achieving the same on a traditional single-core MCU might require additional external safety ICs or companion processors.&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Security Functions:&#039;&#039;&#039; Infineon integrated a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) into the AURIX TC2xx family to address automotive cybersecurity requirements. This HSM is essentially an on-chip co-processor (with its own CPU and flash) that handles cryptographic operations and secure key storage isolated from the main cores. It follows the EVITA (E-safety Vehicle Intrusion Protected Applications) guidelines for automotive security. The HSM enables features like secure boot, encryption/decryption, authentication, and detection of software tampering. By having a built-in “embedded smart card” for security, the AURIX can implement anti-theft, anti-cloning, and secure onboard communication measures without needing an external security chip. This integration is a key differentiator, as it helps protect vehicle functions (e.g. immobilizers, firmware updates, V2X communication) against hacking and unauthorized modifications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Performance and DSP Capability:&#039;&#039;&#039; Each TriCore CPU in the TC2xx is capable of up to 300 MHz operation, and combined the multicore setup offers considerable processing power for an MCU (Infineon cites up to ~1.8 GFLOPS of DSP throughput for the highest models). The TriCore design delivers around &#039;&#039;&#039;1.7–2.4 DMIPS/MHz&#039;&#039;&#039; per core, meaning a triple-core AURIX at max frequency can exceed 2000 DMIPS of total throughput. The inclusion of DSP instructions and dedicated accelerators enables the AURIX to handle computationally intensive tasks (like control algorithms, filtering operations, or even rudimentary neural networks) that previously might require a separate DSP or FPGA. A built-in &#039;&#039;&#039;Floating Point Unit&#039;&#039;&#039; on each core supports single-precision (and optional double-precision in some cases) arithmetic, beneficial for model-based control algorithms and automotive sensor processing. Peripherals like the &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; and &#039;&#039;&#039;Hardware FFT&#039;&#039;&#039; accelerator (available on select TC2xx variants) further boost real-time performance for handling high-frequency events (e.g. engine ignition timing, motor control PWM, radar signal analysis) without overloading the CPU. Despite the performance, the TC2xx was designed with efficiency in mind; Infineon managed to double the performance over the prior generation (TC1xx AUDO) while keeping power consumption at comparable levels. The MCUs also support various low-power modes and a standby controller to minimize energy usage when parts of the system are idle.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Power and Integration:&#039;&#039;&#039; As a system-on-chip for vehicles, AURIX TC2xx integrates a wide range of &#039;&#039;&#039;communication interfaces&#039;&#039;&#039; and analog/digital peripherals. Common features include multiple CAN bus controllers (often with CAN FD support), LIN/UART, SPI and I²C channels, FlexRay communication in high-end models, and even Ethernet (in variants aimed at gateway or ADAS roles). High-resolution &#039;&#039;&#039;ADC units&#039;&#039;&#039; (with shared and redundant channels) allow precise sensor measurements for engine or chassis control. There are also specialized modules like delta-sigma ADCs and SENT interfaces for automotive sensor inputs. This rich peripheral set reduces the need for external components, helping to lower the overall system Bill of Materials. The TC2xx devices operate over a broad temperature range (typically –40 °C to +150 °C), meeting the demands of under-the-hood automotive environments. They run from a single supply (with internal regulators), simplifying designs, and support both 5 V and 3.3 V systems for compatibility with a variety of sensors and actuators. Combined with its safety and security features, the AURIX’s high integration makes it a one-chip solution for many complex embedded applications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
The Infineon AURIX TC2xx family is primarily targeted at the &#039;&#039;&#039;automotive industry&#039;&#039;&#039;, especially domains requiring high reliability and real-time control. Its initial use cases were in &#039;&#039;&#039;powertrain&#039;&#039;&#039; and engine management systems – for example, controlling combustion engines, managing fuel injection and ignition, and coordinating electric motor and battery systems in hybrid or electric vehicles. The multi-core AURIX can run multiple control algorithms in parallel (e.g. for an engine’s cylinders, transmission and motor inverter concurrently), which is valuable in modern electrified powertrains. Beyond engines, AURIX TC2xx MCUs are used in &#039;&#039;&#039;chassis and safety systems&#039;&#039;&#039;: they can serve as the central controller for &#039;&#039;&#039;anti-lock braking systems (ABS)&#039;&#039;&#039; and stability control, &#039;&#039;&#039;airbag control units&#039;&#039;&#039;, &#039;&#039;&#039;electric power steering (EPS)&#039;&#039;&#039; systems, and suspension controllers. Advanced Driver Assistance Systems (&#039;&#039;&#039;ADAS&#039;&#039;&#039;) and autonomous driving modules in earlier generations of vehicles have also employed AURIX for tasks such as sensor fusion, radar signal processing, and acting as a safety supervisor for driving assistance features&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. For example, a radar unit for adaptive cruise control might use an AURIX to perform real-time signal processing (using its DSP capabilities and HFFT) and make high-level decisions, all within an ASIL-D safe environment.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot;&amp;gt;https://resources.tasking.com/sites/default/files/2021-02/Take%20Advantage%20of%20Infineon%20AURIX%20TC3xx%20Family%20With%20the%20Right%20Compiler_WEB.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to its safety certification and robust design, the AURIX TC2xx has seen adoption in any application that cannot tolerate failure. This includes &#039;&#039;&#039;industrial automation and robotics&#039;&#039;&#039;, where the MCU’s reliability and support for functional safety (IEC 61508) are attractive. In industrial motor drives or robotics controllers, an AURIX might handle precise motor control algorithms and system monitoring. Other use cases outside pure automotive include &#039;&#039;&#039;commercial vehicles and transportation&#039;&#039;&#039; (trucks, agricultural and construction machinery), which have similar safety and durability requirements. The AURIX’s extensive communication interfaces also make it suitable as a gateway or central node in complex networks – for instance, acting as a domain controller in modern automotive E/E architectures to coordinate data between powertrain, body, and ADAS subsystems. Some &#039;&#039;&#039;electric vehicle (EV)&#039;&#039;&#039; platforms use AURIX MCUs in battery management systems and inverter controls, leveraging its calculation power for battery algorithms and its safety for monitoring cell health. In summary, the TC2xx family finds use in scenarios that demand &#039;&#039;&#039;real-time performance with high safety integrity&#039;&#039;&#039;, predominantly in automotive (engine, transmission, chassis, safety, ADAS) but also in high-end industrial embedded systems.&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==emmtrix Tools for AURIX TC2xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is Infineon Associated Partner, has over 10 years of experience working with Infineon and their &#039;&#039;&#039;AURIX™ microcontroller family&#039;&#039;&#039; and has been collaborating for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX TC2xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ TC2xx / [[Infineon AURIX TC3xx|TC3xx]]/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[Infineon AURIX TC4x]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&lt;br /&gt;
* [https://www.infineon.com/dgdl/Infineon-TC29x_B-step-UM-v01_03-EN.pdf?fileId=5546d46269bda8df0169ca1bdee424a2 TC29x B-Step User Manual]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2643</id>
		<title>Infineon AURIX TC2xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC2xx&amp;diff=2643"/>
		<updated>2025-03-27T12:55:53Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: /* Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Infineon AURIX TC2xx&#039;&#039;&#039; is a family of 32-bit automotive microcontrollers developed by Infineon Technologies. &#039;&#039;AURIX&#039;&#039; stands for &#039;&#039;“Automotive Realtime Integrated Next Generation Architecture”&#039;&#039;, reflecting its design for real-time, safety-critical automotive applications&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. The TC2xx series (first-generation AURIX) is based on a multicore architecture featuring up to three independent 32-bit &#039;&#039;&#039;TriCore&#039;&#039;&#039; processor cores. Introduced around 2012, the AURIX TC2xx marked Infineon’s transition to a multicore microcontroller platform (fabricated in 65 nm technology) after earlier single-core TriCore generations. It was designed from the ground up to meet stringent automotive safety requirements (ISO 26262) and to provide higher performance and integration for applications like engine management, chassis control, and driver assistance systems.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot;&amp;gt;Optimized for Success - EE Times Europe https://www.eetimes.eu/optimized-for-success/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The AURIX TC2xx family’s design philosophy is to combine &#039;&#039;&#039;safety&#039;&#039;&#039;, &#039;&#039;&#039;security&#039;&#039;&#039;, and &#039;&#039;&#039;performance&#039;&#039;&#039; in one scalable MCU platform. It achieves high functional safety compliance (up to &#039;&#039;&#039;ASIL-D&#039;&#039;&#039;, the highest automotive safety integrity level) with less development effort compared to traditional dual-controller lockstep systems&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. Infineon claims that using AURIX can cut safety-related development time by ~30% versus classical lockstep architectures, thanks to its built-in fault detection and monitoring hardware. At the same time, the TC2xx provides significant performance headroom – roughly 50% to 100% higher computational performance compared to its predecessors – while maintaining power consumption similar to previous single-core designs. To address emerging automotive security needs, the AURIX MCUs also integrate a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) on-chip, which protects against IP theft, fraud, and tampering. This combination of features makes the AURIX TC2xx a popular choice for consolidating various automotive control functions (powertrain, safety, body, etc.) onto one platform, without sacrificing reliability or efficiency.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC2xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Architecture==&lt;br /&gt;
The AURIX TC2xx is built on Infineon’s &#039;&#039;&#039;TriCore&#039;&#039;&#039; architecture, which uniquely unifies traits of a RISC processor, a microcontroller, and a DSP (digital signal processor) into one core design. Each TriCore CPU in the TC2xx is a 32-bit superscalar processor that supports both 32-bit and 16-bit instruction formats (the latter for code size efficiency). The TriCore instruction set architecture includes typical RISC features (load/store architecture, 4 GB address space) and DSP capabilities (such as multiply-accumulate instructions and bit manipulation) in a single core. The cores also have an optional floating-point unit (FPU) and support SIMD (single-instruction multiple-data) operations for signal processing acceleration. The maximum core frequency in the TC2xx family is 300 MHz, and devices achieve about 1.7–2.4 DMIPS/MHz per core, providing robust real-time performance.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In terms of core configuration, high-end AURIX TC2xx models implement three main TriCore CPUs, which can be run in parallel or in redundant (lockstep) pairs for safety. Some variants include a redundant checker core that shadows a primary core to detect calculation errors (a technique to meet SIL/ASIL safety goals). The multicore architecture is supported by a layered memory system: each TriCore has tightly coupled local memory for fast instruction and data access, and they share access to large on-chip Flash and RAM via an internal bus matrix. Memory options in the TC2xx range from about &#039;&#039;&#039;0.5 MB up to 8 MB of on-chip Flash&#039;&#039;&#039;, and from ~50 KB up to 2.7 MB of SRAM, depending on the specific device. This on-chip memory (with ECC protection on memories for safety) allows real-time code execution and data storage without external memory in most use cases. For peripherals and I/O, the AURIX architecture includes a rich set of on-chip modules connected via internal buses, such as analog-to-digital converters, timer units, communication interfaces, and direct memory access (DMA) controllers. AURIX TC2xx MCUs typically provide interfaces like multiple CAN/CAN-FD channels, LIN/UART, SPI, I²C, Ethernet (on higher-end models), and automotive-specific buses (e.g. FlexRay on some variants), making the chip a self-contained controller for complex automotive networks.&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot;&amp;gt;Infineon TriCore - Wikipedia https://en.wikipedia.org/wiki/Infineon_TriCore&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; is a notable part of the AURIX TC2xx architecture. It is a sophisticated timer/co-processor integrated on-chip to handle complex timing, PWM generation, input capture, and other signal conditioning tasks across more than 200 channels. There are also specialized accelerators and co-processors on certain TC2xx devices, such as a &#039;&#039;&#039;Hardware Fast Fourier Transform (HFFT)&#039;&#039;&#039; unit for signal processing and a &#039;&#039;&#039;Parallel Pixel Processor&#039;&#039;&#039; for simple video or sensor data processing. These dedicated engines offload the TriCore CPUs for specific high-load tasks (e.g. radar signal FFTs or encoder signal processing), improving overall throughput in automotive applications. The AURIX architecture uses a single-power supply (5V or 3.3V) design and includes an on-chip voltage regulator (EVR), simplifying power management. The MCUs are offered in a variety of package types (from compact QFP-64 up to large BGA-516) to accommodate different I/O needs. Overall, the TC2xx architecture is highly integrated and optimized for real-time, combining multiple CPU cores with ample flash memory, SRAM, and peripherals on one chip to serve as a &#039;&#039;&#039;central control unit&#039;&#039;&#039; in vehicles.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Aurix Unleashed - RS Components https://docs.rs-online.com/0f3f/0900766b815c315c.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Key Features==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Safety Mechanisms:&#039;&#039;&#039; The AURIX TC2xx was developed via an ISO 26262-compliant process and includes multiple hardware mechanisms to achieve &#039;&#039;&#039;functional safety up to ASIL-D&#039;&#039;&#039;. Notably, it supports &#039;&#039;lockstep&#039;&#039; operation, where one or two of the TriCore CPUs can run in redundant lockstep mode with another core to detect discrepancies (faults) cycle-by-cycle. A Safety Management Unit (&#039;&#039;&#039;SMU&#039;&#039;&#039;) is built in to monitor critical system parameters and handle faults. The architecture employs memory protection units and safe internal communication buses to isolate and supervise different software domains. Other safety features include &#039;&#039;&#039;error-correcting code (ECC)&#039;&#039;&#039; on flash and RAM, redundant peripherals (for example, duplicated ADC channels), watchdog timers, clock and voltage monitors, and self-test routines. These features allow developers to more easily implement safety-critical functions and meet standards like IEC 61508 (SIL-3) or ISO 26262 (ASIL-D) using a single AURIX MCU, whereas achieving the same on a traditional single-core MCU might require additional external safety ICs or companion processors.&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Security Functions:&#039;&#039;&#039; Infineon integrated a dedicated Hardware Security Module (&#039;&#039;&#039;HSM&#039;&#039;&#039;) into the AURIX TC2xx family to address automotive cybersecurity requirements. This HSM is essentially an on-chip co-processor (with its own CPU and flash) that handles cryptographic operations and secure key storage isolated from the main cores. It follows the EVITA (E-safety Vehicle Intrusion Protected Applications) guidelines for automotive security. The HSM enables features like secure boot, encryption/decryption, authentication, and detection of software tampering. By having a built-in “embedded smart card” for security, the AURIX can implement anti-theft, anti-cloning, and secure onboard communication measures without needing an external security chip. This integration is a key differentiator, as it helps protect vehicle functions (e.g. immobilizers, firmware updates, V2X communication) against hacking and unauthorized modifications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Performance and DSP Capability:&#039;&#039;&#039; Each TriCore CPU in the TC2xx is capable of up to 300 MHz operation, and combined the multicore setup offers considerable processing power for an MCU (Infineon cites up to ~1.8 GFLOPS of DSP throughput for the highest models). The TriCore design delivers around &#039;&#039;&#039;1.7–2.4 DMIPS/MHz&#039;&#039;&#039; per core, meaning a triple-core AURIX at max frequency can exceed 2000 DMIPS of total throughput. The inclusion of DSP instructions and dedicated accelerators enables the AURIX to handle computationally intensive tasks (like control algorithms, filtering operations, or even rudimentary neural networks) that previously might require a separate DSP or FPGA. A built-in &#039;&#039;&#039;Floating Point Unit&#039;&#039;&#039; on each core supports single-precision (and optional double-precision in some cases) arithmetic, beneficial for model-based control algorithms and automotive sensor processing. Peripherals like the &#039;&#039;&#039;Generic Timer Module (GTM)&#039;&#039;&#039; and &#039;&#039;&#039;Hardware FFT&#039;&#039;&#039; accelerator (available on select TC2xx variants) further boost real-time performance for handling high-frequency events (e.g. engine ignition timing, motor control PWM, radar signal analysis) without overloading the CPU. Despite the performance, the TC2xx was designed with efficiency in mind; Infineon managed to double the performance over the prior generation (TC1xx AUDO) while keeping power consumption at comparable levels. The MCUs also support various low-power modes and a standby controller to minimize energy usage when parts of the system are idle.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Power and Integration:&#039;&#039;&#039; As a system-on-chip for vehicles, AURIX TC2xx integrates a wide range of &#039;&#039;&#039;communication interfaces&#039;&#039;&#039; and analog/digital peripherals. Common features include multiple CAN bus controllers (often with CAN FD support), LIN/UART, SPI and I²C channels, FlexRay communication in high-end models, and even Ethernet (in variants aimed at gateway or ADAS roles). High-resolution &#039;&#039;&#039;ADC units&#039;&#039;&#039; (with shared and redundant channels) allow precise sensor measurements for engine or chassis control. There are also specialized modules like delta-sigma ADCs and SENT interfaces for automotive sensor inputs. This rich peripheral set reduces the need for external components, helping to lower the overall system Bill of Materials. The TC2xx devices operate over a broad temperature range (typically –40 °C to +150 °C), meeting the demands of under-the-hood automotive environments. They run from a single supply (with internal regulators), simplifying designs, and support both 5 V and 3.3 V systems for compatibility with a variety of sensors and actuators. Combined with its safety and security features, the AURIX’s high integration makes it a one-chip solution for many complex embedded applications.&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1490396573&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref957370148&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
The Infineon AURIX TC2xx family is primarily targeted at the &#039;&#039;&#039;automotive industry&#039;&#039;&#039;, especially domains requiring high reliability and real-time control. Its initial use cases were in &#039;&#039;&#039;powertrain&#039;&#039;&#039; and engine management systems – for example, controlling combustion engines, managing fuel injection and ignition, and coordinating electric motor and battery systems in hybrid or electric vehicles. The multi-core AURIX can run multiple control algorithms in parallel (e.g. for an engine’s cylinders, transmission and motor inverter concurrently), which is valuable in modern electrified powertrains. Beyond engines, AURIX TC2xx MCUs are used in &#039;&#039;&#039;chassis and safety systems&#039;&#039;&#039;: they can serve as the central controller for &#039;&#039;&#039;anti-lock braking systems (ABS)&#039;&#039;&#039; and stability control, &#039;&#039;&#039;airbag control units&#039;&#039;&#039;, &#039;&#039;&#039;electric power steering (EPS)&#039;&#039;&#039; systems, and suspension controllers. Advanced Driver Assistance Systems (&#039;&#039;&#039;ADAS&#039;&#039;&#039;) and autonomous driving modules in earlier generations of vehicles have also employed AURIX for tasks such as sensor fusion, radar signal processing, and acting as a safety supervisor for driving assistance features&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;. For example, a radar unit for adaptive cruise control might use an AURIX to perform real-time signal processing (using its DSP capabilities and HFFT) and make high-level decisions, all within an ASIL-D safe environment.&amp;lt;ref name=&amp;quot;ref572781451&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot;&amp;gt;https://resources.tasking.com/sites/default/files/2021-02/Take%20Advantage%20of%20Infineon%20AURIX%20TC3xx%20Family%20With%20the%20Right%20Compiler_WEB.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to its safety certification and robust design, the AURIX TC2xx has seen adoption in any application that cannot tolerate failure. This includes &#039;&#039;&#039;industrial automation and robotics&#039;&#039;&#039;, where the MCU’s reliability and support for functional safety (IEC 61508) are attractive. In industrial motor drives or robotics controllers, an AURIX might handle precise motor control algorithms and system monitoring. Other use cases outside pure automotive include &#039;&#039;&#039;commercial vehicles and transportation&#039;&#039;&#039; (trucks, agricultural and construction machinery), which have similar safety and durability requirements. The AURIX’s extensive communication interfaces also make it suitable as a gateway or central node in complex networks – for instance, acting as a domain controller in modern automotive E/E architectures to coordinate data between powertrain, body, and ADAS subsystems. Some &#039;&#039;&#039;electric vehicle (EV)&#039;&#039;&#039; platforms use AURIX MCUs in battery management systems and inverter controls, leveraging its calculation power for battery algorithms and its safety for monitoring cell health. In summary, the TC2xx family finds use in scenarios that demand &#039;&#039;&#039;real-time performance with high safety integrity&#039;&#039;&#039;, predominantly in automotive (engine, transmission, chassis, safety, ADAS) but also in high-end industrial embedded systems.&amp;lt;ref name=&amp;quot;ref71179009&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1228701036&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==emmtrix Tools for AURIX TC3xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is Infineon Associated Partner, has over 10 years of experience working with Infineon and their &#039;&#039;&#039;AURIX™ microcontroller family&#039;&#039;&#039; and has been collaborating for the past five years.|alt=emmtrix Associated Partner]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX TC3xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[Infineon AURIX TC4x]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/&lt;br /&gt;
* [https://www.infineon.com/dgdl/Infineon-TC29x_B-step-UM-v01_03-EN.pdf?fileId=5546d46269bda8df0169ca1bdee424a2 TC29x B-Step User Manual]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Performance_Estimator&amp;diff=2635</id>
		<title>emmtrix Performance Estimator</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Performance_Estimator&amp;diff=2635"/>
		<updated>2025-03-26T09:02:34Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: /* Processor Pipeline: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.emmtrix.com/tools/emmtrix-performance-estimator emmtrix Performance Estimator (ePE)] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / [https://emmtrix.com/wiki/Infineon_AURIX_TC3xx TC3xx]/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems.&lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models.&lt;br /&gt;
&lt;br /&gt;
=== Estimation Methods ===&lt;br /&gt;
In general, the execution time of a task or block can be modelled as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;t&amp;lt;sub&amp;gt;exec&amp;lt;/sub&amp;gt; = execution_frequency&amp;lt;sub&amp;gt;block&amp;lt;/sub&amp;gt;* single_duration&amp;lt;sub&amp;gt;block&amp;lt;/sub&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The C code based static code analysis derives the execution frequency by analyzing loop boundaries using constant folding. For the duration, each instruction in the code is modeled as the number of cycles of an abstract hardware model of the processor, and then summed.&lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels:&lt;br /&gt;
*analysis of C code&lt;br /&gt;
*generically compiler-optimized code&lt;br /&gt;
*assembly code from the target compiler.&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
==== Static Code Analysis: ====&lt;br /&gt;
[[File:Static Code Analysis.jpg|frameless|800x800px]]&lt;br /&gt;
&lt;br /&gt;
==== Processor Pipeline: ====&lt;br /&gt;
[[File:ePE Processor Pipeline.png|frameless|950x950px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-performance-estimator emmtrix Performance Estimator (ePE)] supports different ways to acquire the duration of the tasks of an application. These methods vary in accuracy and additional software or hardware requirements. Static code analysis provides basic information without the need for hardware or special software and may thus be seamlessly incorporated into early stages of the Software Development Life Cycle (SDLC). More accurate numbers can be collected with interfaces to simulators or the hardware. Depending on the requirements, the methods can be combined as desired.&lt;br /&gt;
&lt;br /&gt;
Addressing performance issues at the onset of the SDLC is not only proactive but also cost-efficient. Early estimation and intervention, as suggested by the below graph, can drastically reduce the complexities and expenses associated with fixing defects post-deployment. Although early estimates may not be as precise as measurements taken during later stages, they serve as a crucial checkpoint to prevent potential timing issues from escalating. This preemptive approach aligns with the principle that the cost to repair defects increases exponentially as they progress through the SDLC, as shown by the sharp rise in cost depicted in the graph. Hence, initial performance estimations are a strategic investment, minimizing the risk of facing a steep climb in remediation costs and efforts at later stages.&lt;br /&gt;
[[File:DefectDetectionandRemediation.webp|center|frameless|800x800px|Cost of Defect Remediation across the Software Development Life Cycle]]&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Performance_Estimator&amp;diff=2634</id>
		<title>emmtrix Performance Estimator</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Performance_Estimator&amp;diff=2634"/>
		<updated>2025-03-26T09:01:57Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.emmtrix.com/tools/emmtrix-performance-estimator emmtrix Performance Estimator (ePE)] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / [https://emmtrix.com/wiki/Infineon_AURIX_TC3xx TC3xx]/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems.&lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models.&lt;br /&gt;
&lt;br /&gt;
=== Estimation Methods ===&lt;br /&gt;
In general, the execution time of a task or block can be modelled as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;t&amp;lt;sub&amp;gt;exec&amp;lt;/sub&amp;gt; = execution_frequency&amp;lt;sub&amp;gt;block&amp;lt;/sub&amp;gt;* single_duration&amp;lt;sub&amp;gt;block&amp;lt;/sub&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The C code based static code analysis derives the execution frequency by analyzing loop boundaries using constant folding. For the duration, each instruction in the code is modeled as the number of cycles of an abstract hardware model of the processor, and then summed.&lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels:&lt;br /&gt;
*analysis of C code&lt;br /&gt;
*generically compiler-optimized code&lt;br /&gt;
*assembly code from the target compiler.&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
==== Static Code Analysis: ====&lt;br /&gt;
[[File:Static Code Analysis.jpg|frameless|800x800px]]&lt;br /&gt;
&lt;br /&gt;
==== Processor Pipeline: ====&lt;br /&gt;
[[File:ePE Processor Pipeline.png|frameless|950x950px]]&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-performance-estimator emmtrix Performance Estimator (ePE)] supports different ways to acquire the duration of the tasks of an application. These methods vary in accuracy and additional software or hardware requirements. Static code analysis provides basic information without the need for hardware or special software and may thus be seamlessly incorporated into early stages of the Software Development Life Cycle (SDLC). More accurate numbers can be collected with interfaces to simulators or the hardware. Depending on the requirements, the methods can be combined as desired.&lt;br /&gt;
&lt;br /&gt;
Addressing performance issues at the onset of the SDLC is not only proactive but also cost-efficient. Early estimation and intervention, as suggested by the below graph, can drastically reduce the complexities and expenses associated with fixing defects post-deployment. Although early estimates may not be as precise as measurements taken during later stages, they serve as a crucial checkpoint to prevent potential timing issues from escalating. This preemptive approach aligns with the principle that the cost to repair defects increases exponentially as they progress through the SDLC, as shown by the sharp rise in cost depicted in the graph. Hence, initial performance estimations are a strategic investment, minimizing the risk of facing a steep climb in remediation costs and efforts at later stages.&lt;br /&gt;
[[File:DefectDetectionandRemediation.webp|center|frameless|800x800px|Cost of Defect Remediation across the Software Development Life Cycle]]&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=File:Static_Code_Analysis.jpg&amp;diff=2633</id>
		<title>File:Static Code Analysis.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=File:Static_Code_Analysis.jpg&amp;diff=2633"/>
		<updated>2025-03-26T08:52:06Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=File:ePE_Processor_Pipeline.png&amp;diff=2632</id>
		<title>File:ePE Processor Pipeline.png</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=File:ePE_Processor_Pipeline.png&amp;diff=2632"/>
		<updated>2025-03-26T08:51:24Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2610</id>
		<title>Infineon AURIX TC4x</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2610"/>
		<updated>2025-03-24T11:02:11Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: /* emmtrix Performance Estimator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Infineon Aurix TC4x.webp|right|frameless]]&lt;br /&gt;
The TC4x is Infineon&#039;s latest generation of AURIX™ microcontrollers, designed for advanced automotive applications, including eMobility, Advanced Driver Assistance Systems (ADAS), and automotive E/E (Electric/Electronic) architectures. These microcontrollers are built on a 28 nm process and feature the [[TriCore Instruction Set Architecture|TriCore™ 1.8 instruction set architecture]], which includes up to six cores running at speeds up to 500 MHz. This architecture is optimized for high-performance and real-time applications.&lt;br /&gt;
&lt;br /&gt;
== Key Features ==&lt;br /&gt;
* &#039;&#039;&#039;High Performance and Scalability&#039;&#039;&#039;: Equipped with a Parallel Processing Unit (PPU), Data Routing Engine (DRE), and other accelerators to enhance AI capabilities and real-time processing.&lt;br /&gt;
* &#039;&#039;&#039;Extensive Connectivity&#039;&#039;&#039;: Supports high-speed communication interfaces such as 5 Gbps Ethernet, PCIe, CAN-XL, and 10BASE-T1S Ethernet, providing flexibility and performance for various automotive applications.&lt;br /&gt;
* &#039;&#039;&#039;Enhanced Security&#039;&#039;&#039;: Compliant with ISO 21434, the TC4x includes advanced cybersecurity modules and supports safe, over-the-air (SOTA) updates with zero downtime.&lt;br /&gt;
* &#039;&#039;&#039;Memory and Storage&#039;&#039;&#039;: Features up to 25 MB of on-chip flash memory, allowing for complex software applications and data storage.&lt;br /&gt;
* &#039;&#039;&#039;Real-Time Control&#039;&#039;&#039;: Advanced timers and ADCs (Analog-to-Digital Converters) improve control loops for electric motors and power conversion tasks.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
[[File:Infineon TC4x Architecture.png|thumb|Infineon TC4x architecture|494x494px]]&lt;br /&gt;
&lt;br /&gt;
=== System Architecture ===&lt;br /&gt;
&lt;br /&gt;
=== TC 1.8P Processor Core (CPU0 ... CPU5) ===&lt;br /&gt;
&lt;br /&gt;
=== Parallel Processing Unit (PPU) ===&lt;br /&gt;
The PPU is an implementation of the &#039;&#039;&#039;DesignWare ARC EV71 Processor&#039;&#039;&#039;. The length of the vector registers is flexible and depends on the version. Commercially, 128 or 256 bit vector registers are available. In a pre-series stepping even 512 bit was used.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
* eMobility&lt;br /&gt;
* ADAS&lt;br /&gt;
* Automotive E/E architectures&lt;br /&gt;
* Affordable artificial intelligence (AI) applications&lt;br /&gt;
&lt;br /&gt;
== emmtrix Tools for AURIX TC4x ==&lt;br /&gt;
emmtrix offers several tools for the Infineon AURIX TC4x architecture:&lt;br /&gt;
&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer] for vectorizing C code for the Infineon PPU. emmtrix was working together with Infineon already during develop of the TC4x architecture for supporting the PPU and received one of the first series A test boards.&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-performance-estimatorator emmtrix Performance Estimator] for estimating the performance of C code written for the Tricore CPUs.&lt;br /&gt;
&lt;br /&gt;
[[File:Infineon Board.png|thumb|Infineon Development Board (AURIX™ TC4x Communication Board)]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Code Vectorizer ===&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer (eCV)] simplifies programming the Parallel Processing Unit (PPU) on Infineon’s &#039;&#039;&#039;AURIX™ TC4x microcontrollers&#039;&#039;&#039;, enabling significant acceleration of data-parallel applications like sensor fusion or AI inference. By leveraging the PPU, these tasks can be accelerated by factors &amp;gt;10, unlocking the full potential of hardware capabilities.&lt;br /&gt;
&lt;br /&gt;
eCV automates the vectorization process, transforming sequential C code into optimized vectorized code tailored to the &#039;&#039;&#039;AURIX™ TC4x architecture&#039;&#039;&#039;. This includes efficient handling of memory layouts and advanced loop transformations. Developers can simulate and test functionality even without access to target hardware, reducing development time and effort.&lt;br /&gt;
&lt;br /&gt;
With support for &#039;&#039;&#039;Simulink® models, ONNX-based AI workflows,&#039;&#039;&#039; and detailed performance insights through integrated simulators, eCV minimizes the need for manual optimization while maximizing hardware performance.[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is Infineon Associated Partnership, has over 10 years of experience working with Infineon and their &#039;&#039;&#039;AURIX™ microcontroller family&#039;&#039;&#039; and has been collaborating for the past five years.]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / [[Infineon AURIX TC3xx|TC3xx]]/ TC4x microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc4x/&lt;br /&gt;
&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2609</id>
		<title>Infineon AURIX TC4x</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2609"/>
		<updated>2025-03-24T10:27:42Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: /* emmtrix Code Vectorizer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Infineon Aurix TC4x.webp|right|frameless]]&lt;br /&gt;
The TC4x is Infineon&#039;s latest generation of AURIX™ microcontrollers, designed for advanced automotive applications, including eMobility, Advanced Driver Assistance Systems (ADAS), and automotive E/E (Electric/Electronic) architectures. These microcontrollers are built on a 28 nm process and feature the [[TriCore Instruction Set Architecture|TriCore™ 1.8 instruction set architecture]], which includes up to six cores running at speeds up to 500 MHz. This architecture is optimized for high-performance and real-time applications.&lt;br /&gt;
&lt;br /&gt;
== Key Features ==&lt;br /&gt;
* &#039;&#039;&#039;High Performance and Scalability&#039;&#039;&#039;: Equipped with a Parallel Processing Unit (PPU), Data Routing Engine (DRE), and other accelerators to enhance AI capabilities and real-time processing.&lt;br /&gt;
* &#039;&#039;&#039;Extensive Connectivity&#039;&#039;&#039;: Supports high-speed communication interfaces such as 5 Gbps Ethernet, PCIe, CAN-XL, and 10BASE-T1S Ethernet, providing flexibility and performance for various automotive applications.&lt;br /&gt;
* &#039;&#039;&#039;Enhanced Security&#039;&#039;&#039;: Compliant with ISO 21434, the TC4x includes advanced cybersecurity modules and supports safe, over-the-air (SOTA) updates with zero downtime.&lt;br /&gt;
* &#039;&#039;&#039;Memory and Storage&#039;&#039;&#039;: Features up to 25 MB of on-chip flash memory, allowing for complex software applications and data storage.&lt;br /&gt;
* &#039;&#039;&#039;Real-Time Control&#039;&#039;&#039;: Advanced timers and ADCs (Analog-to-Digital Converters) improve control loops for electric motors and power conversion tasks.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
[[File:Infineon TC4x Architecture.png|thumb|Infineon TC4x architecture|494x494px]]&lt;br /&gt;
&lt;br /&gt;
=== System Architecture ===&lt;br /&gt;
&lt;br /&gt;
=== TC 1.8P Processor Core (CPU0 ... CPU5) ===&lt;br /&gt;
&lt;br /&gt;
=== Parallel Processing Unit (PPU) ===&lt;br /&gt;
The PPU is an implementation of the &#039;&#039;&#039;DesignWare ARC EV71 Processor&#039;&#039;&#039;. The length of the vector registers is flexible and depends on the version. Commercially, 128 or 256 bit vector registers are available. In a pre-series stepping even 512 bit was used.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
* eMobility&lt;br /&gt;
* ADAS&lt;br /&gt;
* Automotive E/E architectures&lt;br /&gt;
* Affordable artificial intelligence (AI) applications&lt;br /&gt;
&lt;br /&gt;
== emmtrix Tools for AURIX TC4x ==&lt;br /&gt;
emmtrix offers several tools for the Infineon AURIX TC4x architecture:&lt;br /&gt;
&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer] for vectorizing C code for the Infineon PPU. emmtrix was working together with Infineon already during develop of the TC4x architecture for supporting the PPU and received one of the first series A test boards.&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-performance-estimatorator emmtrix Performance Estimator] for estimating the performance of C code written for the Tricore CPUs.&lt;br /&gt;
&lt;br /&gt;
[[File:Infineon Board.png|thumb|Infineon Development Board (AURIX™ TC4x Communication Board)]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Code Vectorizer ===&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer (eCV)] simplifies programming the Parallel Processing Unit (PPU) on Infineon’s &#039;&#039;&#039;AURIX™ TC4x microcontrollers&#039;&#039;&#039;, enabling significant acceleration of data-parallel applications like sensor fusion or AI inference. By leveraging the PPU, these tasks can be accelerated by factors &amp;gt;10, unlocking the full potential of hardware capabilities.&lt;br /&gt;
&lt;br /&gt;
eCV automates the vectorization process, transforming sequential C code into optimized vectorized code tailored to the &#039;&#039;&#039;AURIX™ TC4x architecture&#039;&#039;&#039;. This includes efficient handling of memory layouts and advanced loop transformations. Developers can simulate and test functionality even without access to target hardware, reducing development time and effort.&lt;br /&gt;
&lt;br /&gt;
With support for &#039;&#039;&#039;Simulink® models, ONNX-based AI workflows,&#039;&#039;&#039; and detailed performance insights through integrated simulators, eCV minimizes the need for manual optimization while maximizing hardware performance.[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is Infineon Associated Partnership, has over 10 years of experience working with Infineon and their &#039;&#039;&#039;AURIX™ microcontroller family&#039;&#039;&#039; and has been collaborating for the past five years.]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc4x/&lt;br /&gt;
&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=File:Infineon_Board.png&amp;diff=2608</id>
		<title>File:Infineon Board.png</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=File:Infineon_Board.png&amp;diff=2608"/>
		<updated>2025-03-24T10:23:55Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2607</id>
		<title>Infineon AURIX TC4x</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2607"/>
		<updated>2025-03-24T10:11:42Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: /* emmtrix Tools for AURIX TC4x */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Infineon Aurix TC4x.webp|right|frameless]]&lt;br /&gt;
The TC4x is Infineon&#039;s latest generation of AURIX™ microcontrollers, designed for advanced automotive applications, including eMobility, Advanced Driver Assistance Systems (ADAS), and automotive E/E (Electric/Electronic) architectures. These microcontrollers are built on a 28 nm process and feature the [[TriCore Instruction Set Architecture|TriCore™ 1.8 instruction set architecture]], which includes up to six cores running at speeds up to 500 MHz. This architecture is optimized for high-performance and real-time applications.&lt;br /&gt;
&lt;br /&gt;
== Key Features ==&lt;br /&gt;
* &#039;&#039;&#039;High Performance and Scalability&#039;&#039;&#039;: Equipped with a Parallel Processing Unit (PPU), Data Routing Engine (DRE), and other accelerators to enhance AI capabilities and real-time processing.&lt;br /&gt;
* &#039;&#039;&#039;Extensive Connectivity&#039;&#039;&#039;: Supports high-speed communication interfaces such as 5 Gbps Ethernet, PCIe, CAN-XL, and 10BASE-T1S Ethernet, providing flexibility and performance for various automotive applications.&lt;br /&gt;
* &#039;&#039;&#039;Enhanced Security&#039;&#039;&#039;: Compliant with ISO 21434, the TC4x includes advanced cybersecurity modules and supports safe, over-the-air (SOTA) updates with zero downtime.&lt;br /&gt;
* &#039;&#039;&#039;Memory and Storage&#039;&#039;&#039;: Features up to 25 MB of on-chip flash memory, allowing for complex software applications and data storage.&lt;br /&gt;
* &#039;&#039;&#039;Real-Time Control&#039;&#039;&#039;: Advanced timers and ADCs (Analog-to-Digital Converters) improve control loops for electric motors and power conversion tasks.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
[[File:Infineon TC4x Architecture.png|thumb|Infineon TC4x architecture|494x494px]]&lt;br /&gt;
&lt;br /&gt;
=== System Architecture ===&lt;br /&gt;
&lt;br /&gt;
=== TC 1.8P Processor Core (CPU0 ... CPU5) ===&lt;br /&gt;
&lt;br /&gt;
=== Parallel Processing Unit (PPU) ===&lt;br /&gt;
The PPU is an implementation of the &#039;&#039;&#039;DesignWare ARC EV71 Processor&#039;&#039;&#039;. The length of the vector registers is flexible and depends on the version. Commercially, 128 or 256 bit vector registers are available. In a pre-series stepping even 512 bit was used.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
* eMobility&lt;br /&gt;
* ADAS&lt;br /&gt;
* Automotive E/E architectures&lt;br /&gt;
* Affordable artificial intelligence (AI) applications&lt;br /&gt;
&lt;br /&gt;
== emmtrix Tools for AURIX TC4x ==&lt;br /&gt;
emmtrix offers several tools for the Infineon AURIX TC4x architecture:&lt;br /&gt;
&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer] for vectorizing C code for the Infineon PPU. emmtrix was working together with Infineon already during develop of the TC4x architecture for supporting the PPU and received one of the first series A test boards.&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-performance-estimatorator emmtrix Performance Estimator] for estimating the performance of C code written for the Tricore CPUs.&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Code Vectorizer ===&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer (eCV)] simplifies programming the Parallel Processing Unit (PPU) on Infineon’s &#039;&#039;&#039;AURIX™ TC4x microcontrollers&#039;&#039;&#039;, enabling significant acceleration of data-parallel applications like sensor fusion or AI inference. By leveraging the PPU, these tasks can be accelerated by factors &amp;gt;10, unlocking the full potential of hardware capabilities.&lt;br /&gt;
&lt;br /&gt;
eCV automates the vectorization process, transforming sequential C code into optimized vectorized code tailored to the &#039;&#039;&#039;AURIX™ TC4x architecture&#039;&#039;&#039;. This includes efficient handling of memory layouts and advanced loop transformations. Developers can simulate and test functionality even without access to target hardware, reducing development time and effort.&lt;br /&gt;
&lt;br /&gt;
With support for &#039;&#039;&#039;Simulink® models, ONNX-based AI workflows,&#039;&#039;&#039; and detailed performance insights through integrated simulators, eCV minimizes the need for manual optimization while maximizing hardware performance.[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is Infineon Associated Partnership, has over 10 years of experience working with Infineon and their &#039;&#039;&#039;AURIX™ microcontroller family&#039;&#039;&#039; and has been collaborating for the past five years.]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc4x/&lt;br /&gt;
&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2606</id>
		<title>Infineon AURIX TC4x</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2606"/>
		<updated>2025-03-24T10:06:27Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: /* emmtrix Tools for AURIX TC4x */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Infineon Aurix TC4x.webp|right|frameless]]&lt;br /&gt;
The TC4x is Infineon&#039;s latest generation of AURIX™ microcontrollers, designed for advanced automotive applications, including eMobility, Advanced Driver Assistance Systems (ADAS), and automotive E/E (Electric/Electronic) architectures. These microcontrollers are built on a 28 nm process and feature the [[TriCore Instruction Set Architecture|TriCore™ 1.8 instruction set architecture]], which includes up to six cores running at speeds up to 500 MHz. This architecture is optimized for high-performance and real-time applications.&lt;br /&gt;
&lt;br /&gt;
== Key Features ==&lt;br /&gt;
* &#039;&#039;&#039;High Performance and Scalability&#039;&#039;&#039;: Equipped with a Parallel Processing Unit (PPU), Data Routing Engine (DRE), and other accelerators to enhance AI capabilities and real-time processing.&lt;br /&gt;
* &#039;&#039;&#039;Extensive Connectivity&#039;&#039;&#039;: Supports high-speed communication interfaces such as 5 Gbps Ethernet, PCIe, CAN-XL, and 10BASE-T1S Ethernet, providing flexibility and performance for various automotive applications.&lt;br /&gt;
* &#039;&#039;&#039;Enhanced Security&#039;&#039;&#039;: Compliant with ISO 21434, the TC4x includes advanced cybersecurity modules and supports safe, over-the-air (SOTA) updates with zero downtime.&lt;br /&gt;
* &#039;&#039;&#039;Memory and Storage&#039;&#039;&#039;: Features up to 25 MB of on-chip flash memory, allowing for complex software applications and data storage.&lt;br /&gt;
* &#039;&#039;&#039;Real-Time Control&#039;&#039;&#039;: Advanced timers and ADCs (Analog-to-Digital Converters) improve control loops for electric motors and power conversion tasks.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
[[File:Infineon TC4x Architecture.png|thumb|Infineon TC4x architecture|494x494px]]&lt;br /&gt;
&lt;br /&gt;
=== System Architecture ===&lt;br /&gt;
&lt;br /&gt;
=== TC 1.8P Processor Core (CPU0 ... CPU5) ===&lt;br /&gt;
&lt;br /&gt;
=== Parallel Processing Unit (PPU) ===&lt;br /&gt;
The PPU is an implementation of the &#039;&#039;&#039;DesignWare ARC EV71 Processor&#039;&#039;&#039;. The length of the vector registers is flexible and depends on the version. Commercially, 128 or 256 bit vector registers are available. In a pre-series stepping even 512 bit was used.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
* eMobility&lt;br /&gt;
* ADAS&lt;br /&gt;
* Automotive E/E architectures&lt;br /&gt;
* Affordable artificial intelligence (AI) applications&lt;br /&gt;
&lt;br /&gt;
== emmtrix Tools for AURIX TC4x ==&lt;br /&gt;
emmtrix offers several tools for the Infineon AURIX TC4x architecture:&lt;br /&gt;
&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer] for vectorizing C code for the Infineon PPU. emmtrix was working together with Infineon already during develop of the TC4x architecture for supporting the PPU and received one of the first series A test boards.&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-performance-estimatorator emmtrix Performance Estimator] for estimating the performance of C code written for the Tricore CPUs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is Infineon Associated Partnership, has over 10 years of experience working with Infineon and their &#039;&#039;&#039;AURIX™ microcontroller family&#039;&#039;&#039; and has been collaborating for the past five years.]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX TC3xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc4x/&lt;br /&gt;
&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2571</id>
		<title>Infineon AURIX TC3xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2571"/>
		<updated>2025-03-20T12:54:10Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
[[File:Infineon TC3xx Architecture.webp|center|frameless|844x844px]]&lt;br /&gt;
&lt;br /&gt;
=== On-Chip System Connectivity and Bridges ===&lt;br /&gt;
[[File:TC3xx On-Chip System Connectivity.png|thumb|SRI Domains]]&lt;br /&gt;
The AURIX™ TC3xx Platform has three independent on-chip connectivity resources: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System Resource Interconnect Fabric (SRI Fabric)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other high bandwidth requestors to high bandwidth memories and other resources for instruction fetches and data accesses. A key component of the fabric is the SRI crossbar, which connects all the agents in one SRI domain. The SRI crossbar carries the transactions between the SRI Masters and SRI Slaves of the domain. The SRI crossbar supports parallel transactions between different SRI Master and SRI Slave agents. In addition to the parallelism of concurrent requests, it also supports pipelined requests from an SRI Master to a SRI Slave.&lt;br /&gt;
* &#039;&#039;&#039;System Peripheral Bus (SPB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other SPB masters to the medium and low bandwidth peripherals. SPB masters do not directly connect to the SRI Fabric, and will access SRI attached resources via a SFI_F2S Bridge.&lt;br /&gt;
* &#039;&#039;&#039;Back Bone Bus (BBB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and SPB masters with ADAS resources. SRI Masters do not directly connect to the BBB, but access BBB attached resources via a SFI_S2F Bridge. SPB masters also do not directly connect to the BBB, but access BBB attached resources via bridging over the SRI Fabric.&lt;br /&gt;
&lt;br /&gt;
=== CPU Resource Access Times ===&lt;br /&gt;
These tables describe the CPU access times to various resources in CPU clock cycles for the AURIX™ TC3xx Platform. In the case of load or fetch accesses, the access times are the minimum number of CPU stall cycles to complete the access. If there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes. &lt;br /&gt;
&lt;br /&gt;
For write access, the access times are the maximum for a sequence of such access (non-conflicting). In many cases for a singleton access, or a short sequence, write buffering reduces the stall effect seen by a CPU, sometimes to 0. However, as with loads and fetches, if there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes.&lt;br /&gt;
&lt;br /&gt;
==== Access latency for global resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! CPU stall cycles&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| Data read from System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |The final number of stall cycles will depend&amp;lt;br&amp;gt;on the real number of WS generated by the target resource.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;9 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |When SFI_S2F is connected to XBar2 (TC39x and TC37xED)&amp;lt;br&amp;gt;there is an additional latency due to access going through an S2S.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;5 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;6 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;3 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Module Wait State&#039;&#039;&#039;: The number of wait states for read and for write accesses is &amp;gt;= 1 and depends on the accessed module and its configuration.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU Accesses: Stall cycles for local and SRI resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! Local CPU !! Local SRI !! Remote SRI Domain&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DSPR || 0 || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DLMU || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DLMU || 2 || 5, {{rev|3|with Pipelining}}|| 5, 4&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DLMU || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to PSPR || See local SRI column || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PFlash || 5 + PWS || 10 + PWS || 13 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer miss) || 2 + PWS || 9 + PWS || 12 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer hit) || 3 || 6 || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to LMU || n.a. || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DFlash || n.a. || 5 + 3*(3 + DCWS) || 8 + 3*(3 + DCWS)&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC39x, TC37xED) || n.a. || n.a. || 14, {{rev|15|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC39x, TC37xED) || n.a. || n.a. || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC35x, TC33xED) || n.a. || 11, {{rev|12|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC35x, TC33xED) || n.a. || 9 || n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from DAM || n.a. || 10 || 13&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to DAM || n.a. || 7 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;Remote SRI Domain&#039;&#039;&#039;: Only applies to products with SRI extenders. Additional latency due to access going through an S2S&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;DCWS&#039;&#039;&#039;: Configured DFlash Corrected Wait States (Includes cycles for DFlash access cycles and ECC correction latency)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Subsystem (CPU0 ... CPU5) ==&lt;br /&gt;
[[File:TC3xx Processor Core, Local Memory and Connectivity.png|alt=TC3xx Processor Core, Local Memory and Connectivity|thumb|Processor Core, Local Memory and Connectivity]]The Infineon AURIX TC3xx features up to 6 processor cores implementing the [[Tricore TC1.6.2 Instruction Set Architecture|TC1.6.2 instruction set architecture]]. The following section focuses on the microarchitectural details of the CPU subsystem. For more information about the ISA, please take a look at the [[Tricore Instruction Set Architecture|TC1.6.2 article]].&lt;br /&gt;
&lt;br /&gt;
The processor core connects to the following memories and bus interfaces (where implemented):&lt;br /&gt;
*Program Scratch-Pad SRAM (PSPR)&lt;br /&gt;
*Data Scratch-Pad SRAM (DSPR)&lt;br /&gt;
*Program Cache (PCache)&lt;br /&gt;
*Data Cache (DCache)&lt;br /&gt;
*Local Memory Unit (DLMU)&lt;br /&gt;
*Local Pflash bank (LPB)&lt;br /&gt;
*SRI slave interface (x2)&lt;br /&gt;
*SRI master Interface&lt;br /&gt;
*SPB master interface&lt;br /&gt;
&lt;br /&gt;
=== TC1.6.2P Implementation Features ===&lt;br /&gt;
*Most instructions executed in 1 cycle&lt;br /&gt;
*Branch instructions in 1, 2 or 3 cycles (using dynamic branch prediction)&lt;br /&gt;
*Wide memory interface for fast context switch&lt;br /&gt;
* Automatic context save-on-entry and restore-on-exit for: subroutine, interrupt, trap&lt;br /&gt;
*Six memory protection register sets&lt;br /&gt;
*Dual instruction issuing (in parallel into Integer Pipeline and Load/Store Pipeline)&lt;br /&gt;
*Third pipeline for loop instruction only (zero overhead loop)&lt;br /&gt;
*Single precision Floating Point Unit (IEEE-754 Compatible)&lt;br /&gt;
*Dedicated Integer divide unit&lt;br /&gt;
*18 data memory protection ranges, 10 code memory protection ranges arranged in 6 sets&lt;br /&gt;
&lt;br /&gt;
=== Pipeline ===&lt;br /&gt;
&lt;br /&gt;
=== Instruction Timing ===&lt;br /&gt;
&lt;br /&gt;
== Platform Devices ==&lt;br /&gt;
The following table shows a feature overview of the AURIX™ TC3xx Platform family focusing on memory and number of cores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Feature&lt;br /&gt;
!TC33x&lt;br /&gt;
!TC33xEXT&lt;br /&gt;
!TC35x&lt;br /&gt;
!TC36x&lt;br /&gt;
!TC37x&lt;br /&gt;
!TC37xEXT&lt;br /&gt;
!TC38x&lt;br /&gt;
!TC39x&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |CPUs&lt;br /&gt;
|Cores / Checker Cores&lt;br /&gt;
|1 / 1&lt;br /&gt;
|2 / 1&lt;br /&gt;
|3 / 2&lt;br /&gt;
|2 / 2&lt;br /&gt;
|3 / 2&lt;br /&gt;
|3 / 3&lt;br /&gt;
|4 / 2&lt;br /&gt;
|6 / 4&lt;br /&gt;
|-&lt;br /&gt;
|Max. Freq.&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Cache per CPU &lt;br /&gt;
|Program [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |32&lt;br /&gt;
|-&lt;br /&gt;
|Data [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |SRAM per CPU&lt;br /&gt;
|PSPR [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|32|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|DSPR [KB]&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|192|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|-&lt;br /&gt;
|DLMU [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|8|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |SRAM global&lt;br /&gt;
|LMU [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|512&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|128&lt;br /&gt;
|768&lt;br /&gt;
|-&lt;br /&gt;
|DAM [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|32&lt;br /&gt;
| -&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Extension Memory (EMEM)&lt;br /&gt;
|TCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XTM [KB]&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Program Flash&lt;br /&gt;
|Size [MB]&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|10&lt;br /&gt;
|10&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|Banks [MB]&lt;br /&gt;
|1 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 3&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|5 x 3, 1 x 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Data Flash&lt;br /&gt;
|DF0 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|256&lt;br /&gt;
|512&lt;br /&gt;
|512&lt;br /&gt;
|1024&lt;br /&gt;
|-&lt;br /&gt;
|DF1 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |DMA&lt;br /&gt;
|Channels&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
|Move Engines&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Resource Partitions&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
The AURIX TC3xx family is a series of high-performance microcontrollers widely used in automotive and industrial applications. Compilers for the AURIX TC3xx are crucial for developers aiming to optimize performance, reliability, and safety in their applications. One significant aspect of the compiler landscape for AURIX TC3xx is the limited direct support from mainline open-source compilers such as GCC or LLVM/Clang. The primary reason for this is the stringent requirements for functional safety in automotive and industrial applications, which demand specialized features and compliance with safety standards that are often not met by general-purpose open-source compilers.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Compilers ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Tasking&#039;&#039;&#039;: Tasking compilers are renowned for their robust support for automotive applications, offering advanced debugging capabilities and optimization techniques tailored for the AURIX architecture. They provide extensive code optimization, comprehensive debugging tools, and strong support for safety standards such as ISO 26262, making them ideal for developing high-performance, reliable, and safe applications.&lt;br /&gt;
# &#039;&#039;&#039;HighTec&#039;&#039;&#039;: The HighTec compiler is a popular choice, known for its Eclipse-based development environment and strong multicore support. HighTec provides both GCC and LLVM-based ports of open-source compilers tailored specifically for the AURIX TC3xx family. These compilers offer efficient parallel execution, advanced code analysis, and an integrated development environment, ensuring robust performance and compliance with safety standards.&lt;br /&gt;
# &#039;&#039;&#039;Green Hills Software&#039;&#039;&#039;: Green Hills Software provides a highly optimized toolchain aimed at safety-critical applications, focusing on high performance and strict compliance with automotive standards. Their compiler offers superior optimization, extensive safety features, and a proprietary IDE with specialized tools for automotive development, ensuring developers can meet the stringent demands of functional safety.&lt;br /&gt;
&lt;br /&gt;
=== GCC for AURIX ===&lt;br /&gt;
&lt;br /&gt;
While mainline GCC does not directly support the AURIX TC3xx family, there is an unofficial GCC version available for AURIX. Due to the GNU General Public License (GPL), the source code from HighTec was retrieved and, along with binary versions, published on GitHub:&lt;br /&gt;
&lt;br /&gt;
*GCC 4.9.4/Binutils 2.20/Newlib 1.18 for Tricore Aurix [[https://github.com/volumit/package_494 Source]] [[https://github.com/volumit/tricore_gcc494_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc494_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GCC 9.4.0/Binutils 2.20/Newlib 1.18 for Tricore Aurix [[https://github.com/volumit/package_940 Source]] [[https://github.com/volumit/tricore_gcc940_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc940_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GDB 10.0.50 for Tricore Aurix [[https://github.com/volumit/gdb-tricore Source]]&lt;br /&gt;
==emmtrix Tools for AURIX TC3xx==&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX TC3xx architecture:&lt;br /&gt;
*[https://www.emmtrix.com/tools/emmtrix-performance-estimatorator emmtrix Performance Estimator] for estimating the performance of C code written for the Tricore CPUs.&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-performance-estimator emmtrix Performance Estimator (ePE)] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models.&lt;br /&gt;
&lt;br /&gt;
emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ TC2xx / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems.&lt;br /&gt;
&lt;br /&gt;
We provide our tools with all required services (training, consulting, customization).&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
=== Associated Partnership ===&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|left|thumb|204x204px|Infineon Associated Partnership]]&lt;br /&gt;
emmtrix Technologies has over 10 years of experience working with Infineon and their &#039;&#039;&#039;AURIX™ microcontroller family&#039;&#039;&#039; and has been collaborating for the past five years.&lt;br /&gt;
&lt;br /&gt;
Our tools enable precise performance estimation, automated vectorization, and multi-core optimization, including support for the latest &#039;&#039;&#039;AURIX™ TC4x&#039;&#039;&#039; generation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC4x]]&lt;br /&gt;
*[[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&lt;br /&gt;
*[https://documentation.infineon.com/aurixtc3xx/docs/qmd1702366622648 AURIX TC3xx user manuals]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d3605221d96 AURIX™ TC3xx User Manual Part-1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d35f8541d94 AURIX™ TC3xx User Manual Part-2]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd AURIX™ TC3xx Architecture vol 1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 AURIX™ TC3xx Architecture vol 2]&lt;br /&gt;
&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2570</id>
		<title>Infineon AURIX TC3xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2570"/>
		<updated>2025-03-20T12:53:40Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
[[File:Infineon TC3xx Architecture.webp|center|frameless|844x844px]]&lt;br /&gt;
&lt;br /&gt;
=== On-Chip System Connectivity and Bridges ===&lt;br /&gt;
[[File:TC3xx On-Chip System Connectivity.png|thumb|SRI Domains]]&lt;br /&gt;
The AURIX™ TC3xx Platform has three independent on-chip connectivity resources: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System Resource Interconnect Fabric (SRI Fabric)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other high bandwidth requestors to high bandwidth memories and other resources for instruction fetches and data accesses. A key component of the fabric is the SRI crossbar, which connects all the agents in one SRI domain. The SRI crossbar carries the transactions between the SRI Masters and SRI Slaves of the domain. The SRI crossbar supports parallel transactions between different SRI Master and SRI Slave agents. In addition to the parallelism of concurrent requests, it also supports pipelined requests from an SRI Master to a SRI Slave.&lt;br /&gt;
* &#039;&#039;&#039;System Peripheral Bus (SPB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other SPB masters to the medium and low bandwidth peripherals. SPB masters do not directly connect to the SRI Fabric, and will access SRI attached resources via a SFI_F2S Bridge.&lt;br /&gt;
* &#039;&#039;&#039;Back Bone Bus (BBB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and SPB masters with ADAS resources. SRI Masters do not directly connect to the BBB, but access BBB attached resources via a SFI_S2F Bridge. SPB masters also do not directly connect to the BBB, but access BBB attached resources via bridging over the SRI Fabric.&lt;br /&gt;
&lt;br /&gt;
=== CPU Resource Access Times ===&lt;br /&gt;
These tables describe the CPU access times to various resources in CPU clock cycles for the AURIX™ TC3xx Platform. In the case of load or fetch accesses, the access times are the minimum number of CPU stall cycles to complete the access. If there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes. &lt;br /&gt;
&lt;br /&gt;
For write access, the access times are the maximum for a sequence of such access (non-conflicting). In many cases for a singleton access, or a short sequence, write buffering reduces the stall effect seen by a CPU, sometimes to 0. However, as with loads and fetches, if there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes.&lt;br /&gt;
&lt;br /&gt;
==== Access latency for global resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! CPU stall cycles&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| Data read from System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |The final number of stall cycles will depend&amp;lt;br&amp;gt;on the real number of WS generated by the target resource.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;9 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |When SFI_S2F is connected to XBar2 (TC39x and TC37xED)&amp;lt;br&amp;gt;there is an additional latency due to access going through an S2S.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;5 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;6 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;3 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Module Wait State&#039;&#039;&#039;: The number of wait states for read and for write accesses is &amp;gt;= 1 and depends on the accessed module and its configuration.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU Accesses: Stall cycles for local and SRI resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! Local CPU !! Local SRI !! Remote SRI Domain&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DSPR || 0 || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DLMU || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DLMU || 2 || 5, {{rev|3|with Pipelining}}|| 5, 4&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DLMU || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to PSPR || See local SRI column || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PFlash || 5 + PWS || 10 + PWS || 13 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer miss) || 2 + PWS || 9 + PWS || 12 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer hit) || 3 || 6 || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to LMU || n.a. || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DFlash || n.a. || 5 + 3*(3 + DCWS) || 8 + 3*(3 + DCWS)&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC39x, TC37xED) || n.a. || n.a. || 14, {{rev|15|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC39x, TC37xED) || n.a. || n.a. || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC35x, TC33xED) || n.a. || 11, {{rev|12|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC35x, TC33xED) || n.a. || 9 || n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from DAM || n.a. || 10 || 13&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to DAM || n.a. || 7 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;Remote SRI Domain&#039;&#039;&#039;: Only applies to products with SRI extenders. Additional latency due to access going through an S2S&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;DCWS&#039;&#039;&#039;: Configured DFlash Corrected Wait States (Includes cycles for DFlash access cycles and ECC correction latency)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Subsystem (CPU0 ... CPU5) ==&lt;br /&gt;
[[File:TC3xx Processor Core, Local Memory and Connectivity.png|alt=TC3xx Processor Core, Local Memory and Connectivity|thumb|Processor Core, Local Memory and Connectivity]]The Infineon AURIX TC3xx features up to 6 processor cores implementing the [[Tricore TC1.6.2 Instruction Set Architecture|TC1.6.2 instruction set architecture]]. The following section focuses on the microarchitectural details of the CPU subsystem. For more information about the ISA, please take a look at the [[Tricore Instruction Set Architecture|TC1.6.2 article]].&lt;br /&gt;
&lt;br /&gt;
The processor core connects to the following memories and bus interfaces (where implemented):&lt;br /&gt;
*Program Scratch-Pad SRAM (PSPR)&lt;br /&gt;
*Data Scratch-Pad SRAM (DSPR)&lt;br /&gt;
*Program Cache (PCache)&lt;br /&gt;
*Data Cache (DCache)&lt;br /&gt;
*Local Memory Unit (DLMU)&lt;br /&gt;
*Local Pflash bank (LPB)&lt;br /&gt;
*SRI slave interface (x2)&lt;br /&gt;
*SRI master Interface&lt;br /&gt;
*SPB master interface&lt;br /&gt;
&lt;br /&gt;
=== TC1.6.2P Implementation Features ===&lt;br /&gt;
*Most instructions executed in 1 cycle&lt;br /&gt;
*Branch instructions in 1, 2 or 3 cycles (using dynamic branch prediction)&lt;br /&gt;
*Wide memory interface for fast context switch&lt;br /&gt;
* Automatic context save-on-entry and restore-on-exit for: subroutine, interrupt, trap&lt;br /&gt;
*Six memory protection register sets&lt;br /&gt;
*Dual instruction issuing (in parallel into Integer Pipeline and Load/Store Pipeline)&lt;br /&gt;
*Third pipeline for loop instruction only (zero overhead loop)&lt;br /&gt;
*Single precision Floating Point Unit (IEEE-754 Compatible)&lt;br /&gt;
*Dedicated Integer divide unit&lt;br /&gt;
*18 data memory protection ranges, 10 code memory protection ranges arranged in 6 sets&lt;br /&gt;
&lt;br /&gt;
=== Pipeline ===&lt;br /&gt;
&lt;br /&gt;
=== Instruction Timing ===&lt;br /&gt;
&lt;br /&gt;
== Platform Devices ==&lt;br /&gt;
The following table shows a feature overview of the AURIX™ TC3xx Platform family focusing on memory and number of cores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Feature&lt;br /&gt;
!TC33x&lt;br /&gt;
!TC33xEXT&lt;br /&gt;
!TC35x&lt;br /&gt;
!TC36x&lt;br /&gt;
!TC37x&lt;br /&gt;
!TC37xEXT&lt;br /&gt;
!TC38x&lt;br /&gt;
!TC39x&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |CPUs&lt;br /&gt;
|Cores / Checker Cores&lt;br /&gt;
|1 / 1&lt;br /&gt;
|2 / 1&lt;br /&gt;
|3 / 2&lt;br /&gt;
|2 / 2&lt;br /&gt;
|3 / 2&lt;br /&gt;
|3 / 3&lt;br /&gt;
|4 / 2&lt;br /&gt;
|6 / 4&lt;br /&gt;
|-&lt;br /&gt;
|Max. Freq.&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Cache per CPU &lt;br /&gt;
|Program [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |32&lt;br /&gt;
|-&lt;br /&gt;
|Data [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |SRAM per CPU&lt;br /&gt;
|PSPR [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|32|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|DSPR [KB]&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|192|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|-&lt;br /&gt;
|DLMU [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|8|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |SRAM global&lt;br /&gt;
|LMU [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|512&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|128&lt;br /&gt;
|768&lt;br /&gt;
|-&lt;br /&gt;
|DAM [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|32&lt;br /&gt;
| -&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Extension Memory (EMEM)&lt;br /&gt;
|TCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XTM [KB]&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Program Flash&lt;br /&gt;
|Size [MB]&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|10&lt;br /&gt;
|10&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|Banks [MB]&lt;br /&gt;
|1 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 3&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|5 x 3, 1 x 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Data Flash&lt;br /&gt;
|DF0 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|256&lt;br /&gt;
|512&lt;br /&gt;
|512&lt;br /&gt;
|1024&lt;br /&gt;
|-&lt;br /&gt;
|DF1 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |DMA&lt;br /&gt;
|Channels&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
|Move Engines&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Resource Partitions&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
The AURIX TC3xx family is a series of high-performance microcontrollers widely used in automotive and industrial applications. Compilers for the AURIX TC3xx are crucial for developers aiming to optimize performance, reliability, and safety in their applications. One significant aspect of the compiler landscape for AURIX TC3xx is the limited direct support from mainline open-source compilers such as GCC or LLVM/Clang. The primary reason for this is the stringent requirements for functional safety in automotive and industrial applications, which demand specialized features and compliance with safety standards that are often not met by general-purpose open-source compilers.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Compilers ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Tasking&#039;&#039;&#039;: Tasking compilers are renowned for their robust support for automotive applications, offering advanced debugging capabilities and optimization techniques tailored for the AURIX architecture. They provide extensive code optimization, comprehensive debugging tools, and strong support for safety standards such as ISO 26262, making them ideal for developing high-performance, reliable, and safe applications.&lt;br /&gt;
# &#039;&#039;&#039;HighTec&#039;&#039;&#039;: The HighTec compiler is a popular choice, known for its Eclipse-based development environment and strong multicore support. HighTec provides both GCC and LLVM-based ports of open-source compilers tailored specifically for the AURIX TC3xx family. These compilers offer efficient parallel execution, advanced code analysis, and an integrated development environment, ensuring robust performance and compliance with safety standards.&lt;br /&gt;
# &#039;&#039;&#039;Green Hills Software&#039;&#039;&#039;: Green Hills Software provides a highly optimized toolchain aimed at safety-critical applications, focusing on high performance and strict compliance with automotive standards. Their compiler offers superior optimization, extensive safety features, and a proprietary IDE with specialized tools for automotive development, ensuring developers can meet the stringent demands of functional safety.&lt;br /&gt;
&lt;br /&gt;
=== GCC for AURIX ===&lt;br /&gt;
&lt;br /&gt;
While mainline GCC does not directly support the AURIX TC3xx family, there is an unofficial GCC version available for AURIX. Due to the GNU General Public License (GPL), the source code from HighTec was retrieved and, along with binary versions, published on GitHub:&lt;br /&gt;
&lt;br /&gt;
*GCC 4.9.4/Binutils 2.20/Newlib 1.18 for Tricore Aurix [[https://github.com/volumit/package_494 Source]] [[https://github.com/volumit/tricore_gcc494_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc494_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GCC 9.4.0/Binutils 2.20/Newlib 1.18 for Tricore Aurix [[https://github.com/volumit/package_940 Source]] [[https://github.com/volumit/tricore_gcc940_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc940_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GDB 10.0.50 for Tricore Aurix [[https://github.com/volumit/gdb-tricore Source]]&lt;br /&gt;
==emmtrix Tools for AURIX TC3xx==&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX TC3xx architecture:&lt;br /&gt;
*[https://www.emmtrix.com/tools/emmtrix-performance-estimatorator emmtrix Performance Estimator] for estimating the performance of C code written for the Tricore CPUs.&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-performance-estimator emmtrix Performance Estimator (ePE)] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models.&lt;br /&gt;
&lt;br /&gt;
emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ TC2xx / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems.&lt;br /&gt;
&lt;br /&gt;
We provide our tools with all required services (training, consulting, customization).&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
=== Associated Partnership ===&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|left|thumb|204x204px|Infineon Associated Partnership]]&lt;br /&gt;
emmtrix Technologies has over 10 years of experience working with Infineon and their &#039;&#039;&#039;AURIX™ microcontroller family&#039;&#039;&#039; and has been collaborating for the past five years.&lt;br /&gt;
&lt;br /&gt;
Our tools enable precise performance estimation, automated vectorization, and multi-core optimization, including support for the latest &#039;&#039;&#039;AURIX™ TC4x&#039;&#039;&#039; generation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC4x]]&lt;br /&gt;
*[[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&lt;br /&gt;
*[https://documentation.infineon.com/aurixtc3xx/docs/qmd1702366622648 AURIX TC3xx user manuals]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d3605221d96 AURIX™ TC3xx User Manual Part-1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d35f8541d94 AURIX™ TC3xx User Manual Part-2]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd AURIX™ TC3xx Architecture vol 1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 AURIX™ TC3xx Architecture vol 2]&lt;br /&gt;
&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=File:lowres-Signet_Associated_Partner_EN.eps.png&amp;diff=2569</id>
		<title>File:lowres-Signet Associated Partner EN.eps.png</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=File:lowres-Signet_Associated_Partner_EN.eps.png&amp;diff=2569"/>
		<updated>2025-03-20T12:17:55Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2568</id>
		<title>Infineon AURIX TC3xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2568"/>
		<updated>2025-03-20T12:16:34Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
[[File:Infineon TC3xx Architecture.webp|center|frameless|844x844px]]&lt;br /&gt;
&lt;br /&gt;
=== On-Chip System Connectivity and Bridges ===&lt;br /&gt;
[[File:TC3xx On-Chip System Connectivity.png|thumb|SRI Domains]]&lt;br /&gt;
The AURIX™ TC3xx Platform has three independent on-chip connectivity resources: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System Resource Interconnect Fabric (SRI Fabric)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other high bandwidth requestors to high bandwidth memories and other resources for instruction fetches and data accesses. A key component of the fabric is the SRI crossbar, which connects all the agents in one SRI domain. The SRI crossbar carries the transactions between the SRI Masters and SRI Slaves of the domain. The SRI crossbar supports parallel transactions between different SRI Master and SRI Slave agents. In addition to the parallelism of concurrent requests, it also supports pipelined requests from an SRI Master to a SRI Slave.&lt;br /&gt;
* &#039;&#039;&#039;System Peripheral Bus (SPB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other SPB masters to the medium and low bandwidth peripherals. SPB masters do not directly connect to the SRI Fabric, and will access SRI attached resources via a SFI_F2S Bridge.&lt;br /&gt;
* &#039;&#039;&#039;Back Bone Bus (BBB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and SPB masters with ADAS resources. SRI Masters do not directly connect to the BBB, but access BBB attached resources via a SFI_S2F Bridge. SPB masters also do not directly connect to the BBB, but access BBB attached resources via bridging over the SRI Fabric.&lt;br /&gt;
&lt;br /&gt;
=== CPU Resource Access Times ===&lt;br /&gt;
These tables describe the CPU access times to various resources in CPU clock cycles for the AURIX™ TC3xx Platform. In the case of load or fetch accesses, the access times are the minimum number of CPU stall cycles to complete the access. If there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes. &lt;br /&gt;
&lt;br /&gt;
For write access, the access times are the maximum for a sequence of such access (non-conflicting). In many cases for a singleton access, or a short sequence, write buffering reduces the stall effect seen by a CPU, sometimes to 0. However, as with loads and fetches, if there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes.&lt;br /&gt;
&lt;br /&gt;
==== Access latency for global resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! CPU stall cycles&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| Data read from System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |The final number of stall cycles will depend&amp;lt;br&amp;gt;on the real number of WS generated by the target resource.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;9 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |When SFI_S2F is connected to XBar2 (TC39x and TC37xED)&amp;lt;br&amp;gt;there is an additional latency due to access going through an S2S.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;5 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;6 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;3 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Module Wait State&#039;&#039;&#039;: The number of wait states for read and for write accesses is &amp;gt;= 1 and depends on the accessed module and its configuration.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU Accesses: Stall cycles for local and SRI resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! Local CPU !! Local SRI !! Remote SRI Domain&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DSPR || 0 || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DLMU || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DLMU || 2 || 5, {{rev|3|with Pipelining}}|| 5, 4&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DLMU || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to PSPR || See local SRI column || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PFlash || 5 + PWS || 10 + PWS || 13 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer miss) || 2 + PWS || 9 + PWS || 12 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer hit) || 3 || 6 || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to LMU || n.a. || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DFlash || n.a. || 5 + 3*(3 + DCWS) || 8 + 3*(3 + DCWS)&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC39x, TC37xED) || n.a. || n.a. || 14, {{rev|15|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC39x, TC37xED) || n.a. || n.a. || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC35x, TC33xED) || n.a. || 11, {{rev|12|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC35x, TC33xED) || n.a. || 9 || n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from DAM || n.a. || 10 || 13&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to DAM || n.a. || 7 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;Remote SRI Domain&#039;&#039;&#039;: Only applies to products with SRI extenders. Additional latency due to access going through an S2S&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;DCWS&#039;&#039;&#039;: Configured DFlash Corrected Wait States (Includes cycles for DFlash access cycles and ECC correction latency)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Subsystem (CPU0 ... CPU5) ==&lt;br /&gt;
[[File:TC3xx Processor Core, Local Memory and Connectivity.png|alt=TC3xx Processor Core, Local Memory and Connectivity|thumb|Processor Core, Local Memory and Connectivity]]The Infineon AURIX TC3xx features up to 6 processor cores implementing the [[Tricore TC1.6.2 Instruction Set Architecture|TC1.6.2 instruction set architecture]]. The following section focuses on the microarchitectural details of the CPU subsystem. For more information about the ISA, please take a look at the [[Tricore Instruction Set Architecture|TC1.6.2 article]].&lt;br /&gt;
&lt;br /&gt;
The processor core connects to the following memories and bus interfaces (where implemented):&lt;br /&gt;
*Program Scratch-Pad SRAM (PSPR)&lt;br /&gt;
*Data Scratch-Pad SRAM (DSPR)&lt;br /&gt;
*Program Cache (PCache)&lt;br /&gt;
*Data Cache (DCache)&lt;br /&gt;
*Local Memory Unit (DLMU)&lt;br /&gt;
*Local Pflash bank (LPB)&lt;br /&gt;
*SRI slave interface (x2)&lt;br /&gt;
*SRI master Interface&lt;br /&gt;
*SPB master interface&lt;br /&gt;
&lt;br /&gt;
=== TC1.6.2P Implementation Features ===&lt;br /&gt;
*Most instructions executed in 1 cycle&lt;br /&gt;
*Branch instructions in 1, 2 or 3 cycles (using dynamic branch prediction)&lt;br /&gt;
*Wide memory interface for fast context switch&lt;br /&gt;
* Automatic context save-on-entry and restore-on-exit for: subroutine, interrupt, trap&lt;br /&gt;
*Six memory protection register sets&lt;br /&gt;
*Dual instruction issuing (in parallel into Integer Pipeline and Load/Store Pipeline)&lt;br /&gt;
*Third pipeline for loop instruction only (zero overhead loop)&lt;br /&gt;
*Single precision Floating Point Unit (IEEE-754 Compatible)&lt;br /&gt;
*Dedicated Integer divide unit&lt;br /&gt;
*18 data memory protection ranges, 10 code memory protection ranges arranged in 6 sets&lt;br /&gt;
&lt;br /&gt;
=== Pipeline ===&lt;br /&gt;
&lt;br /&gt;
=== Instruction Timing ===&lt;br /&gt;
&lt;br /&gt;
== Platform Devices ==&lt;br /&gt;
The following table shows a feature overview of the AURIX™ TC3xx Platform family focusing on memory and number of cores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Feature&lt;br /&gt;
!TC33x&lt;br /&gt;
!TC33xEXT&lt;br /&gt;
!TC35x&lt;br /&gt;
!TC36x&lt;br /&gt;
!TC37x&lt;br /&gt;
!TC37xEXT&lt;br /&gt;
!TC38x&lt;br /&gt;
!TC39x&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |CPUs&lt;br /&gt;
|Cores / Checker Cores&lt;br /&gt;
|1 / 1&lt;br /&gt;
|2 / 1&lt;br /&gt;
|3 / 2&lt;br /&gt;
|2 / 2&lt;br /&gt;
|3 / 2&lt;br /&gt;
|3 / 3&lt;br /&gt;
|4 / 2&lt;br /&gt;
|6 / 4&lt;br /&gt;
|-&lt;br /&gt;
|Max. Freq.&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Cache per CPU &lt;br /&gt;
|Program [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |32&lt;br /&gt;
|-&lt;br /&gt;
|Data [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |SRAM per CPU&lt;br /&gt;
|PSPR [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|32|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|DSPR [KB]&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|192|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|-&lt;br /&gt;
|DLMU [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|8|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |SRAM global&lt;br /&gt;
|LMU [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|512&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|128&lt;br /&gt;
|768&lt;br /&gt;
|-&lt;br /&gt;
|DAM [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|32&lt;br /&gt;
| -&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Extension Memory (EMEM)&lt;br /&gt;
|TCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XTM [KB]&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Program Flash&lt;br /&gt;
|Size [MB]&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|10&lt;br /&gt;
|10&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|Banks [MB]&lt;br /&gt;
|1 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 3&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|5 x 3, 1 x 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Data Flash&lt;br /&gt;
|DF0 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|256&lt;br /&gt;
|512&lt;br /&gt;
|512&lt;br /&gt;
|1024&lt;br /&gt;
|-&lt;br /&gt;
|DF1 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |DMA&lt;br /&gt;
|Channels&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
|Move Engines&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Resource Partitions&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
The AURIX TC3xx family is a series of high-performance microcontrollers widely used in automotive and industrial applications. Compilers for the AURIX TC3xx are crucial for developers aiming to optimize performance, reliability, and safety in their applications. One significant aspect of the compiler landscape for AURIX TC3xx is the limited direct support from mainline open-source compilers such as GCC or LLVM/Clang. The primary reason for this is the stringent requirements for functional safety in automotive and industrial applications, which demand specialized features and compliance with safety standards that are often not met by general-purpose open-source compilers.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Compilers ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Tasking&#039;&#039;&#039;: Tasking compilers are renowned for their robust support for automotive applications, offering advanced debugging capabilities and optimization techniques tailored for the AURIX architecture. They provide extensive code optimization, comprehensive debugging tools, and strong support for safety standards such as ISO 26262, making them ideal for developing high-performance, reliable, and safe applications.&lt;br /&gt;
# &#039;&#039;&#039;HighTec&#039;&#039;&#039;: The HighTec compiler is a popular choice, known for its Eclipse-based development environment and strong multicore support. HighTec provides both GCC and LLVM-based ports of open-source compilers tailored specifically for the AURIX TC3xx family. These compilers offer efficient parallel execution, advanced code analysis, and an integrated development environment, ensuring robust performance and compliance with safety standards.&lt;br /&gt;
# &#039;&#039;&#039;Green Hills Software&#039;&#039;&#039;: Green Hills Software provides a highly optimized toolchain aimed at safety-critical applications, focusing on high performance and strict compliance with automotive standards. Their compiler offers superior optimization, extensive safety features, and a proprietary IDE with specialized tools for automotive development, ensuring developers can meet the stringent demands of functional safety.&lt;br /&gt;
&lt;br /&gt;
=== GCC for AURIX ===&lt;br /&gt;
&lt;br /&gt;
While mainline GCC does not directly support the AURIX TC3xx family, there is an unofficial GCC version available for AURIX. Due to the GNU General Public License (GPL), the source code from HighTec was retrieved and, along with binary versions, published on GitHub:&lt;br /&gt;
&lt;br /&gt;
*GCC 4.9.4/Binutils 2.20/Newlib 1.18 for Tricore Aurix [[https://github.com/volumit/package_494 Source]] [[https://github.com/volumit/tricore_gcc494_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc494_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GCC 9.4.0/Binutils 2.20/Newlib 1.18 for Tricore Aurix [[https://github.com/volumit/package_940 Source]] [[https://github.com/volumit/tricore_gcc940_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc940_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GDB 10.0.50 for Tricore Aurix [[https://github.com/volumit/gdb-tricore Source]]&lt;br /&gt;
==emmtrix Tools for AURIX TC3xx==&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX TC3xx architecture:&lt;br /&gt;
*[https://www.emmtrix.com/tools/emmtrix-performance-estimatorator emmtrix Performance Estimator] for estimating the performance of C code written for the Tricore CPUs.&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-performance-estimator emmtrix Performance Estimator (ePE)] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models.&lt;br /&gt;
&lt;br /&gt;
emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ TC2xx / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems.&lt;br /&gt;
&lt;br /&gt;
We provide our tools with all required services (training, consulting, customization).&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
=== Associated Partnership ===&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC4x]]&lt;br /&gt;
*[[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&lt;br /&gt;
*[https://documentation.infineon.com/aurixtc3xx/docs/qmd1702366622648 AURIX TC3xx user manuals]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d3605221d96 AURIX™ TC3xx User Manual Part-1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d35f8541d94 AURIX™ TC3xx User Manual Part-2]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd AURIX™ TC3xx Architecture vol 1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 AURIX™ TC3xx Architecture vol 2]&lt;br /&gt;
&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Loop_Invariant_Code_Motion&amp;diff=2466</id>
		<title>Loop Invariant Code Motion</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Loop_Invariant_Code_Motion&amp;diff=2466"/>
		<updated>2025-02-17T10:06:49Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: Created page with &amp;quot;Loop invariant code motion is an optimization technique that moves computations outside of a loop if they do not depend on the loop iterator. By extracting such invariant expressions, this transformation reduces redundant calculations and improves runtime efficiency. It minimizes unnecessary operations within loops, leading to faster execution and better performance. This technique is particularly useful in optimizing complex loops, reducing computation overhead, and ena...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Loop invariant code motion is an optimization technique that moves computations outside of a loop if they do not depend on the loop iterator. By extracting such invariant expressions, this transformation reduces redundant calculations and improves runtime efficiency. It minimizes unnecessary operations within loops, leading to faster execution and better performance. This technique is particularly useful in optimizing complex loops, reducing computation overhead, and enabling further compiler optimizations.&lt;br /&gt;
==Loop Invariant Code Motion Transformation in emmtrix Studio==&lt;br /&gt;
emmtrix Studio implements loop invariant code motion using #pragma directives or via the GUI. Loop invariant code motion is a transformation that moves code that is invariant from the loop iterator in front of the loop.&lt;br /&gt;
===Typical Usage and Benefits===&lt;br /&gt;
Loop invariant code motion is typically used to improve the runtime of an application by moving loop invariant parts out of loops in order to reduce the number of times they are executed.&lt;br /&gt;
===Example===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code tests loop invariant code motion transformation applied to a for loop: */   &lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    #pragma EMX_TRANSFORMATION LoopInvariantCodeMotion&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10; ++i) {&lt;br /&gt;
        int inv = 10;&lt;br /&gt;
        int inv2 = inv * inv;&lt;br /&gt;
        printf(” % d\ n”, inv2);&lt;br /&gt;
    }&lt;br /&gt;
    return 0&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The generated code: */&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    int inv = 10;&lt;br /&gt;
    int inv2 = inv * inv;&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10; ++i) {&lt;br /&gt;
        printf(” % d\ n”, inv2);&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
Following parameters can be set (each description is followed by keyword in pragma-syntax and default value):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Id&lt;br /&gt;
!Default Value&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;subExprs&amp;lt;/code&amp;gt;&lt;br /&gt;
|false&lt;br /&gt;
|&#039;&#039;&#039;Move sub-expressions by creating temporary variables&#039;&#039;&#039; - move expressions that require the insertion of temporary variables in order to make the code more efficient&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;reorderInvExprs&amp;lt;/code&amp;gt;&lt;br /&gt;
|false&lt;br /&gt;
|&#039;&#039;&#039;Reorder invariant expressions by applying the commutative and associative laws&#039;&#039;&#039; - enables reordering of moved expressions that allows more optimizations for better efficiency&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xpectedMovedExpr&amp;lt;/code&amp;gt;&lt;br /&gt;
| -1&lt;br /&gt;
|&#039;&#039;&#039;Expected moved expressions&#039;&#039;&#039;  - can be used for testing purposes by inserting the number of expected moved expressions. Creates an error if the numbers differ, does nothing when set to -1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Note ===&lt;br /&gt;
&lt;br /&gt;
* To move functions from math.h, use the [[Idiom Recognizer|idiom recognizer]] transformation to identify the functions and apply the code sinking transformation afterwards.&lt;br /&gt;
&lt;br /&gt;
[[Category:Code Transformation]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=While_To_For&amp;diff=2465</id>
		<title>While To For</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=While_To_For&amp;diff=2465"/>
		<updated>2025-02-17T09:49:06Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: Created page with &amp;quot;The while-to-for transformation converts a selected while loop into an equivalent for loop while preserving the original loop semantics. This conversion improves code consistency and enables further compiler optimizations that specifically target for-loop structures. By restructuring loops in a standardized format, this transformation facilitates better loop analysis, enhances readability, and increases the potential for optimizations such as loop unrolling or vectorizat...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The while-to-for transformation converts a selected while loop into an equivalent for loop while preserving the original loop semantics. This conversion improves code consistency and enables further compiler optimizations that specifically target for-loop structures. By restructuring loops in a standardized format, this transformation facilitates better loop analysis, enhances readability, and increases the potential for optimizations such as loop unrolling or vectorization.&lt;br /&gt;
==While-to-for Transformation in emmtrix Studio==&lt;br /&gt;
emmtrix Studio implements while-to-for using #pragma directives or via the GUI. While-to-for is a transformation that replaces selected while block with a for block of the same semantics.&lt;br /&gt;
===Typical Usage and Benefits===&lt;br /&gt;
While-ro-for is typically used to allow other for-loop-based transformations and analysis to be performed.&lt;br /&gt;
===Example===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code tests while-to-for transformation applied to a for loop: */   &lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    int sum = 0;&lt;br /&gt;
    int i = 0;&lt;br /&gt;
    #pragma EMX_TRANSFORMATION WhileToFor&lt;br /&gt;
    while (i &amp;lt; 10) {&lt;br /&gt;
        sum += i;&lt;br /&gt;
        i++;&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The generated code:*/&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    int sum = 0;&lt;br /&gt;
    int i;&lt;br /&gt;
    for (i = 0; i &amp;lt; 10; i = i + 1) {&lt;br /&gt;
        sum += i;&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Code Transformation]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Loop_Interchange_Transformation&amp;diff=2464</id>
		<title>Loop Interchange Transformation</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Loop_Interchange_Transformation&amp;diff=2464"/>
		<updated>2025-02-17T09:41:37Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: Created page with &amp;quot;Loop interchange is an optimization technique that swaps the order of nested loops, making the inner loop the outer loop and vice versa. This transformation can improve data locality, optimize memory access patterns, and expose opportunities for parallelization and vectorization. By reordering loops, loop interchange can enhance cache efficiency and reduce execution time, especially in matrix operations or scenarios where data access patterns impact performance. It is pa...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Loop interchange is an optimization technique that swaps the order of nested loops, making the inner loop the outer loop and vice versa. This transformation can improve data locality, optimize memory access patterns, and expose opportunities for parallelization and vectorization. By reordering loops, loop interchange can enhance cache efficiency and reduce execution time, especially in matrix operations or scenarios where data access patterns impact performance. It is particularly useful in optimizing code for modern processors and parallel computing architectures.&lt;br /&gt;
==Loop Interchange Transformation in emmtrix Studio==&lt;br /&gt;
emmtrix Studio implements loop interchange using #pragma directives or via the GUI. Loop interchange is a transformation that swaps two nested loops with each other, so that the inner loop becomes the outer one and vice versa.&lt;br /&gt;
===Typical Usage and Benefits===&lt;br /&gt;
Loop interchange is used to change granularity of the outer loops which has parallelization implications. Another important application of loop interchange is in scenarios in which vectorization possibilities could be exposed. By interchanging the loops some previously scattered data elements could now be localized.&lt;br /&gt;
===Example===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code tests loop interchange transformation applied to a for loop: */   &lt;br /&gt;
&lt;br /&gt;
#define N 5&lt;br /&gt;
int main(void) {&lt;br /&gt;
    int i1, i2;&lt;br /&gt;
    int a[N][N] = { 0 };&lt;br /&gt;
    #pragma EMX_TRANSFORMATION LoopInterchange&lt;br /&gt;
    for (i1 = 0; i1 &amp;lt; N; i1++) {&lt;br /&gt;
        for (i2 = 0; i2 &amp;lt; N; i2++) {&lt;br /&gt;
            a[i1][i2] = a[i1][i2] + 5;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The generated code:*/&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
int i1 ;&lt;br /&gt;
int i2 ;&lt;br /&gt;
int a [5][5] = {0};&lt;br /&gt;
for (i2 = 0; i2 &amp;lt; 5; i2 = i2 + 1) {&lt;br /&gt;
for (i1 = 0; i1 &amp;lt; 5; i1 = i1 + 1) {&lt;br /&gt;
a[i1 ][ i2 ] = a[i1 ][ i2 ] + 5;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Code Transformation]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Loop_Unrolling_Transformation&amp;diff=2463</id>
		<title>Loop Unrolling Transformation</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Loop_Unrolling_Transformation&amp;diff=2463"/>
		<updated>2025-02-17T09:33:09Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Loop unrolling is an optimization technique that reduces the number of iterations in a loop by expanding its body to process multiple elements per iteration. This transformation decreases loop overhead, improves execution efficiency, and can enhance opportunities for parallelization. By reducing control flow instructions, loop unrolling minimizes branching and increases instruction-level parallelism, making it particularly useful for performance-critical applications. While it can lead to larger code size, the trade-off often results in significant runtime improvements.&lt;br /&gt;
==Loop Unrolling Transformation in emmtrix Studio==&lt;br /&gt;
emmtrix Studio implements loop unrolling using #pragma directives or via the GUI. Unrolling will reduce the iteration count and increase the body of the loop, processing statements from multiple iteration steps in a single iteration.&lt;br /&gt;
===Typical Usage and Benefits===&lt;br /&gt;
Loop unrolling is used to reduce the overhead of the loops and to exploit parallelization on coarser parts.&lt;br /&gt;
===Example===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code tests loop unroll transformation applied to a for loop: */   &lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    int i;&lt;br /&gt;
    int a[4];&lt;br /&gt;
    #pragma EMX_TRANSFORMATION LoopUnroll { ”unrollfactor”: 4}&lt;br /&gt;
    for (i = 0; i &amp;lt; 4; i++) {&lt;br /&gt;
        a[i] = i;&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The generated code includes all four iterations of the loop transformed into four separate statements.&lt;br /&gt;
 * The loop unrolling is full and the loop is removed.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    int i;&lt;br /&gt;
    int a[4];&lt;br /&gt;
    i = 0;&lt;br /&gt;
    {&lt;br /&gt;
        a[i] = i;&lt;br /&gt;
    } {&lt;br /&gt;
        a[i + 1 * 1] = i + 1 * 1;&lt;br /&gt;
    } {&lt;br /&gt;
        a[i + 1 * 2] = i + 1 * 2;&lt;br /&gt;
    } {&lt;br /&gt;
        a[i + 1 * 3] = i + 1 * 3;&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
Following parameters can be set (each description is followed by keyword in pragma-syntax and default value):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Id&lt;br /&gt;
!Default Value&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;unrollfactor&amp;lt;/code&amp;gt;&lt;br /&gt;
|max_unrollfactor&lt;br /&gt;
|&#039;&#039;&#039;Unroll factor&#039;&#039;&#039; - divide iteration count &amp;amp; multiply iterating variable. If equal to total number of iterations, loop-construct will be removed from code. If not integer divisor of total number of iterations, additional loop&lt;br /&gt;
processing last iterations will be added&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Code Transformation]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Loop_Fission&amp;diff=2462</id>
		<title>Loop Fission</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Loop_Fission&amp;diff=2462"/>
		<updated>2025-02-17T09:32:29Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Loop fission, also known as loop distribution, is an optimization technique that splits a single loop into multiple loops over the same iteration range, with each handling a subset of the original loop’s operations. This transformation improves data locality, enhances cache efficiency, and enables better parallelization by reducing dependencies within a loop body. By breaking down complex loops, loop fission can optimize memory access patterns and improve overall program performance while preserving the original computation logic.&lt;br /&gt;
==Loop Fission Transformation in emmtrix Studio==&lt;br /&gt;
emmtrix Studio implements loop fission using #pragma directives or via the GUI. Loop fission is a transformation that breaks a loop into multiple loops over the same index range with each taking only a part of the original loop’s body.&lt;br /&gt;
===Typical Usage and Benefits===&lt;br /&gt;
Loop fission is used to achieve better utilization of locality of reference by breaking down a large loop body into smaller ones.&lt;br /&gt;
===Example===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code tests loop fission transformation applied to a for loop: */   &lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    int i, j;&lt;br /&gt;
    int a[10], b, c, d;&lt;br /&gt;
    #pragma EMX_TRANSFORMATION LoopFission&lt;br /&gt;
    for (i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
        d = 0;&lt;br /&gt;
        a[i] = i * i;&lt;br /&gt;
        c = 9;&lt;br /&gt;
        b = i;&lt;br /&gt;
        b = 8 + i * b;&lt;br /&gt;
        if (a[i] &amp;gt; 50) {&lt;br /&gt;
            c = c + a[i];&lt;br /&gt;
            printf(”Inside&lt;br /&gt;
                if, a[ % d] = % d and c = % d\ n”, i, a[i], c);&lt;br /&gt;
        } else {&lt;br /&gt;
            printf(”Inside&lt;br /&gt;
                else, c = % d\ n”, c);&lt;br /&gt;
            printf(”Inside&lt;br /&gt;
                else, a[ % d] = % d\ n”, i, a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The generated code has multiple loops, each loop containing groups of statements from the old loop&lt;br /&gt;
that have dependencies on one another: */&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    int i;&lt;br /&gt;
    int j;&lt;br /&gt;
    int a[10];&lt;br /&gt;
    int b;&lt;br /&gt;
    int c;&lt;br /&gt;
    int d;&lt;br /&gt;
    {&lt;br /&gt;
        for (i = 0; i &amp;lt; 10; i = i + 1) {&lt;br /&gt;
            d = 0;&lt;br /&gt;
        }&lt;br /&gt;
        for (i = 0; i &amp;lt; 10; i = i + 1) {&lt;br /&gt;
            a[i] = i * i;&lt;br /&gt;
            c = 9;&lt;br /&gt;
            if (a[i] &amp;gt; 50) {&lt;br /&gt;
                c = c + a[i];&lt;br /&gt;
                printf(”Inside&lt;br /&gt;
                    if, a[ % d] = % d and c = % d\ n”, i, a[i], c);&lt;br /&gt;
            } else {&lt;br /&gt;
                printf(”Inside&lt;br /&gt;
                    else, c = % d\ n”, c);&lt;br /&gt;
                printf(”Inside&lt;br /&gt;
                    else, a[ % d] = % d\ n”, i, a[i]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        for (i = 0; i &amp;lt; 10; i = i + 1) {&lt;br /&gt;
            b = i;&lt;br /&gt;
            b = 8 + i * b;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Code Transformation]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Loop_If-Split&amp;diff=2461</id>
		<title>Loop If-Split</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Loop_If-Split&amp;diff=2461"/>
		<updated>2025-02-17T09:31:44Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: Created page with &amp;quot;If-split is an optimization technique that restructures loop-nested if-else statements by transforming them into separate independent loops. This transformation simplifies control flow, making data dependency analysis more efficient and increasing the potential for parallel execution. By eliminating branching within a loop, if-split enhances performance, particularly in scenarios where different execution paths can be processed independently. This technique is especially...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If-split is an optimization technique that restructures loop-nested if-else statements by transforming them into separate independent loops. This transformation simplifies control flow, making data dependency analysis more efficient and increasing the potential for parallel execution. By eliminating branching within a loop, if-split enhances performance, particularly in scenarios where different execution paths can be processed independently. This technique is especially useful in optimizing loops for better hardware utilization and improved computational efficiency.&lt;br /&gt;
==Loop If-Split Transformation in emmtrix Studio==&lt;br /&gt;
emmtrix Studio implements loop if-split using #pragma directives or via the GUI. If-split is a transformation that splits loop-nested if-else statements into independent loops. The transformation can be applied only on if-else statements with different paths.&lt;br /&gt;
===Typical Usage and Benefits===&lt;br /&gt;
If-split is used to simplify data dependency analysis by generating less complex control-flow graphs. If-split increases potential for parallel execution.&lt;br /&gt;
===Example===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code tests loop if-split transformation applied to a for loop: */   &lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main(void) {&lt;br /&gt;
    #pragma EMX_TRANSFORMATION IfSplit&lt;br /&gt;
    for (j = 0; j &amp;lt; 8; j++) {&lt;br /&gt;
        if (j &amp;lt; 4) {&lt;br /&gt;
            suma += a[j];&lt;br /&gt;
        } else {&lt;br /&gt;
            sumb += b[j];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The generated code includes two loops, one separate loop for each of the original loop body state-&lt;br /&gt;
ments: */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    for (j = 0; j &amp;lt; 4; j = j + 1) {&lt;br /&gt;
        {&lt;br /&gt;
            suma = suma + a[j];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    for (j = 4; j &amp;lt; 8; j = j + 1) {&lt;br /&gt;
        {&lt;br /&gt;
            sumb = sumb + b[j];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Code Transformation]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Loop_Fission&amp;diff=2460</id>
		<title>Loop Fission</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Loop_Fission&amp;diff=2460"/>
		<updated>2025-02-17T09:22:34Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Loop fission, also known as loop distribution, is an optimization technique that splits a single loop into multiple loops over the same iteration range, with each handling a subset of the original loop’s operations. This transformation improves data locality, enhances cache efficiency, and enables better parallelization by reducing dependencies within a loop body. By breaking down complex loops, loop fission can optimize memory access patterns and improve overall program performance while preserving the original computation logic.&lt;br /&gt;
==Loop Fission Transformation in emmtrix Studio==&lt;br /&gt;
emmtrix Studio implements loop fission using #pragma directives or via the GUI. Loop fission is a transformation that breaks a loop into multiple loops over the same index range with each taking only a part of the original loop’s body.&lt;br /&gt;
===Typical Usage and Benefits===&lt;br /&gt;
Loop fission is used to achieve better utilization of locality of reference by breaking down a large loop body into smaller ones.&lt;br /&gt;
===Example===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code tests LoopUnroll transformation applied to a for loop: */   &lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    int i, j;&lt;br /&gt;
    int a[10], b, c, d;&lt;br /&gt;
    #pragma EMX_TRANSFORMATION LoopFission&lt;br /&gt;
    for (i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
        d = 0;&lt;br /&gt;
        a[i] = i * i;&lt;br /&gt;
        c = 9;&lt;br /&gt;
        b = i;&lt;br /&gt;
        b = 8 + i * b;&lt;br /&gt;
        if (a[i] &amp;gt; 50) {&lt;br /&gt;
            c = c + a[i];&lt;br /&gt;
            printf(”Inside&lt;br /&gt;
                if, a[ % d] = % d and c = % d\ n”, i, a[i], c);&lt;br /&gt;
        } else {&lt;br /&gt;
            printf(”Inside&lt;br /&gt;
                else, c = % d\ n”, c);&lt;br /&gt;
            printf(”Inside&lt;br /&gt;
                else, a[ % d] = % d\ n”, i, a[i]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The generated code has multiple loops, each loop containing groups of statements from the old loop&lt;br /&gt;
that have dependencies on one another: */&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    int i;&lt;br /&gt;
    int j;&lt;br /&gt;
    int a[10];&lt;br /&gt;
    int b;&lt;br /&gt;
    int c;&lt;br /&gt;
    int d;&lt;br /&gt;
    {&lt;br /&gt;
        for (i = 0; i &amp;lt; 10; i = i + 1) {&lt;br /&gt;
            d = 0;&lt;br /&gt;
        }&lt;br /&gt;
        for (i = 0; i &amp;lt; 10; i = i + 1) {&lt;br /&gt;
            a[i] = i * i;&lt;br /&gt;
            c = 9;&lt;br /&gt;
            if (a[i] &amp;gt; 50) {&lt;br /&gt;
                c = c + a[i];&lt;br /&gt;
                printf(”Inside&lt;br /&gt;
                    if, a[ % d] = % d and c = % d\ n”, i, a[i], c);&lt;br /&gt;
            } else {&lt;br /&gt;
                printf(”Inside&lt;br /&gt;
                    else, c = % d\ n”, c);&lt;br /&gt;
                printf(”Inside&lt;br /&gt;
                    else, a[ % d] = % d\ n”, i, a[i]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        for (i = 0; i &amp;lt; 10; i = i + 1) {&lt;br /&gt;
            b = i;&lt;br /&gt;
            b = 8 + i * b;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Code Transformation]]&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Loop_Fission&amp;diff=2459</id>
		<title>Loop Fission</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Loop_Fission&amp;diff=2459"/>
		<updated>2025-02-17T09:15:23Z</updated>

		<summary type="html">&lt;p&gt;Mira.steinmetz: Created page with &amp;quot;Loop unrolling is an optimization technique that reduces the number of iterations in a loop by expanding its body to process multiple elements per iteration. This transformation decreases loop overhead, improves execution efficiency, and can enhance opportunities for parallelization. By reducing control flow instructions, loop unrolling minimizes branching and increases instruction-level parallelism, making it particularly useful for performance-critical applications. Wh...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Loop unrolling is an optimization technique that reduces the number of iterations in a loop by expanding its body to process multiple elements per iteration. This transformation decreases loop overhead, improves execution efficiency, and can enhance opportunities for parallelization. By reducing control flow instructions, loop unrolling minimizes branching and increases instruction-level parallelism, making it particularly useful for performance-critical applications. While it can lead to larger code size, the trade-off often results in significant runtime improvements.&lt;br /&gt;
==Loop Unrolling Transformation in emmtrix Studio==&lt;br /&gt;
emmtrix Studio implements loop unrolling using #pragma directives or via the GUI. Unrolling will reduce the iteration count and increase the body of the loop, processing statements from multiple iteration steps in a single iteration.&lt;br /&gt;
===Typical Usage and Benefits===&lt;br /&gt;
Loop unrolling is used to reduce the overhead of the loops and to exploit parallelization on coarser parts.&lt;br /&gt;
===Example===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code tests LoopUnroll transformation applied to a for loop: */   &lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    int i;&lt;br /&gt;
    int a[4];&lt;br /&gt;
    #pragma EMX_TRANSFORMATION LoopUnroll { ”unrollfactor”: 4}&lt;br /&gt;
    for (i = 0; i &amp;lt; 4; i++) {&lt;br /&gt;
        a[i] = i;&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The generated code includes all four iterations of the loop transformed into four separate statements.&lt;br /&gt;
 * The loop unrolling is full and the loop is removed.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    int i;&lt;br /&gt;
    int a[4];&lt;br /&gt;
    i = 0;&lt;br /&gt;
    {&lt;br /&gt;
        a[i] = i;&lt;br /&gt;
    } {&lt;br /&gt;
        a[i + 1 * 1] = i + 1 * 1;&lt;br /&gt;
    } {&lt;br /&gt;
        a[i + 1 * 2] = i + 1 * 2;&lt;br /&gt;
    } {&lt;br /&gt;
        a[i + 1 * 3] = i + 1 * 3;&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
Following parameters can be set (each description is followed by keyword in pragma-syntax and default value):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Id&lt;br /&gt;
!Default Value&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;unrollfactor&amp;lt;/code&amp;gt;&lt;br /&gt;
|max_unrollfactor&lt;br /&gt;
|&#039;&#039;&#039;Unroll factor&#039;&#039;&#039; - divide iteration count &amp;amp; multiply iterating variable. If equal to total number of iterations, loop-construct will be removed from code. If not integer divisor of total number of iterations, additional loop&lt;br /&gt;
processing last iterations will be added&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mira.steinmetz</name></author>
	</entry>
</feed>