Working with Data Types - 2024.1 English

Vitis Model Composer User Guide (UG1483)

Document ID
Release Date
2024.1 English
Data types supported by HLS library blocks include the following:
Table 1. Model Composer Data Types
Name Description
double Double-precision floating point
single Single-precision floating point
half* Half-precision floating point
int8 Signed 8-bit integer
uint8 Unsigned 8-bit integer
int16 Signed 16-bit integer
uint16 Unsigned 16-bit integer
int32 Signed 32-bit integer
uint32 Unsigned 32-bit integer
fixed* Signed and unsigned fixed point
boolean For this data type, Simulink represents real, nonzero numeric values as TRUE (1)
Important: Data types marked with '*' are specific to Model Composer HLS Library, and are not naturally supported by Simulink. While Simulink does support fixed point data types, you must have the Fixed-Point Designerâ„¢ product installed and licensed. In addition, the fixed point data type supported by Vitis Model Composer is not compatible with the fixed point data type supported by Simulink although it uses a similar notation.
Notice in the preceding table there are some data types that are supported by Model Composer HLS Library that are not supported by default in Simulink. If you connect blocks from the HLS library, with fixed or half data types, to Simulink native blocks, you will see an error when running simulation in Simulink, or when using the Update Diagram command, or pressing Ctrl+D.
RelationalOperator does not accept signals of data type 'x_sfix16'. 
'ConstRE_or_IMpartBug/Relational Operator' only accepts numeric and enumerated data types.

This error indicates that Simulink could not cast the signal value from the Model Composer fixed data type to a double precision floating point data type.

In cases of mismatched data types, Model Composer recommends that you use a Data Type Conversion block to specify the behavior of the model, and indicate the conversion of one data type to another. The Data Type Conversion block (DTC) is found in the HLS Library under the Signal Attributes library.

Figure 1. Data Type Conversion Block Generated by Your Tool
The DTC block lets you specify the Output data type, while the input data type is automatically determined by the signal connected to the input port. Using the DTC block, you can convert from single precision floating point to double precision for example, or from double precision to single precision.
Important: You must exercise caution when casting from a higher precision data type to a lower precision data type, as loss of precision can lead to rounding or truncation and loss of data can occur.