SPRUIG6L January   2018  – March 2025

 

  1.   1
  2.   C7000 Host Emulation
  3. About This Document
    1. 1.1 Related Documentation
    2. 1.2 Disclaimer
    3. 1.3 Trademarks
  4. Getting Started with Host Emulation
    1. 2.1 System Requirements
    2. 2.2 Installation Instructions
    3. 2.3 Host Emulation Library Versions
    4. 2.4 Summary of Differences: Host Emulation Coding vs. Native C7000 Coding
  5. General Coding Requirements
    1. 3.1 Required Header Files
    2. 3.2 Package Dependencies
    3. 3.3 Example Program
  6. Intrinsics
    1. 4.1 OpenCL-Like Intrinsics
    2. 4.2 Streaming Address Generator Intrinsics
    3. 4.3 C6000 Legacy Intrinsics
    4. 4.4 Memory System Intrinsics
  7. TI Vector Types
    1. 5.1 Constructors
    2. 5.2 Accessors
    3. 5.3 Vector Operators
    4. 5.4 Print Debug Function
  8. Streaming Engine and Streaming Address Generator
  9. Lookup Table and Histogram Interface
    1. 7.1 Lookup Table and Histogram Data
  10. C6000 Migration
    1. 8.1 __float2_t Legacy Data Type
  11. Matrix Multiply Accelerator (MMA) Interface
  12. 10Compiler Errors and Warnings
    1. 10.1 Key Terms Found in Compiler Errors and Warnings
    2. 10.2 Host Emulation Specific Syntax
  13. 11Revision History
  14.   36

Package Dependencies

Programs written for C7000 Host Emulation must use the C++14 language due to the underlying implementation, which relies heavily on C++14 constructs and features.

Depending on the compiler, a special flag to enable C++14 support may be required in the compilation command.

While not mandated, it is highly encouraged that you use standard integer types (such as int32_t ) when programming using C7000 Host Emulation. Usage of built-in data types may compile and run, but these results cannot be guaranteed to be correct on all platforms. Using standard integer types in place of the corresponding built-in type will achieve correct results and will have no effect on the ability to transition the program to the C7000 compiler.

Use of C7000 compiler attributes and directives will create undefined warnings when using Host Emulation. This behavior is expected and cannot be remedied. If these attributes and directives are required for the program to run on a target chip, the warnings can typically be suppressed on the Host Emulation compiler.

The C7000 Host Emulation package does not emulate C7000 compiler pragmas. As a result, C7000 compiler pragmas will have no effect when used in code run with C7000 Host Emulation.

A list of C7000 compiler symbols that are defined automatically when using Host Emulation is provided in Table 3-2.

Table 3-2 C7000 Preprocessor Symbols
Defined Preprocessor Symbols Description
__C7000__ Defined if compiled for the C7000 target or any type of C7000 Host Emulation.
__C7100__ Defined if compiled for C7100 Host Emulation.
__C7120__ Defined if compiled for C7120 Host Emulation.
__C7504__ Defined if compiled for C7504 Host Emulation.
__C7524__ Defined if compiled for C7524 Host Emulation.
__C7X_HOSTEM__ Defined if compiled for Host Emulation. This is not defined when the target compiler (cl7x) is used.
__C7X_MMA__ Defined by default.
__C7X_MMA_1__ Defined if compiled for Host Emulation with MMA 1 support.
__C7X_MMA_2__ Defined if compiled for Host Emulation with MMA 2 support.
__C7X_MMA_2_256__ Defined if compiled for Host Emulation with MMA 2_256 support.
__C7X_MMA_2_256F__ Defined if compiled for Host Emulation with MMA 2_256F support.
__C7X_NUM_SE__ Defined to the number of Streaming Engines that are available. Currently always 2.
__C7X_NUM_SA__ Defined to the number of Streaming Address Generators that are available. Currently always 4.
__little_endian__ Defined by default.