Visible to Intel only — GUID: zcd1508549436855
Ixiasoft
Visible to Intel only — GUID: zcd1508549436855
Ixiasoft
9. Datatype Best Practices
After you optimize the algorithm bottlenecks of your design, you can fine-tune some datatypes in your component by using arbitrary precision datatypes to shrink data widths, which reduces FPGA area utilization. The Intel® HLS Compiler Pro Edition provides debug functionality so that you can easily detect overflows in arbitrary precision datatypes.
Because C++ automatically promotes smaller datatypes such as short or char to 32 bits for operations such as addition or bit-shifting, you must use the arbitrary precision datatypes if you want to create narrow datapaths in your component.
Tutorials Demonstrating Datatype Best Practices
The Intel® HLS Compiler Pro Edition comes with a number of tutorials that illustrate important Intel® HLS Compiler concepts and demonstrate good coding practices.
Tutorial | Description |
---|---|
You can find these tutorials in the following location on your Intel® Quartus® Prime system: |
|
best_practices/ac_datatypes | Demonstrates the effect of using ac_int datatype instead of int datatype. |
ac_datatypes/ac_fixed_constructor | Demonstrates the use of the ac_fixed constructor where you can get a better QoR by using minor variations in coding style. |
ac_datatypes/ac_int_basic_ops | Demonstrates the operators available for the ac_int class. |
ac_datatypes/ac_int_overflow | Demonstrates the usage of the DEBUG_AC_INT_WARNING and DEBUG_AC_INT_ERROR keywords to help detect overflow during emulation runtime. |
best_practices/single_vs_double_precision_math | Demonstrates the effect of using single precision literals and functions instead of double precision literals and functions. |
ac_datatypes/ ac_fixed_constructor | Demonstrates the use of the ac_fixed math library functions. |
hls_float/ 1_reduced_double | Demonstrates how your applications can benefit from changing the underlying type from double to hls_float<11,44> (reduced double). |
hls_float/ 2_explicit_arithmetic | Demonstrates how to use explicit versions of hls_float binary operations to perform floating-point arithmetic operations based on your needs. |
hls_float/ 3_conversions | Demonstrates when conversions appear in designs that use the hls_float data type and how to take advantage of different conversion modes to generate compile-type constants using hls_float types. |