Mapping of Different Rounding and Overflow Methods from MATLAB to HLS - MATLAB & Simulink (original) (raw)

The specified fixed-point data types in MATLABĀ® code are converted to High-Level Synthesis (HLS) fixed-point data types during code generation.

The tables show the mapping of different MATLAB fixed-point rounding and overflow methods to their equivalent HLS methods.

Rounding Methods

MATLAB Fixed-Point Rounding Methods Description Equivalent HLS Fixed-Point Rounding Methods
Nearest (default for MATLAB) Rounds to the nearest representable number. SC_RND
Zero Rounds to the nearest representable number in the direction of zero. SC_TRN_ZERO
Floor Rounds to the nearest representable number in the direction of negative infinity.Equivalent to two's complement truncation. SC_TRN (default for HLS)
Round Rounds to the nearest representable number. SC_RND_INF
Convergent Rounds to the nearest representable number. SC_RND_CONV

Note

The ceiling rounding method is not supported for HLS code generation.

Overflow Methods

MATLAB Fixed-Point Overflow Methods Description Equivalent HLS Fixed-Point Overflow Methods
Saturate (default for MATLAB) Saturate to maximum or minimum value of the fixed-point range on overflow. SC_SAT
Wrap Wrap on overflow. This mode is also known as two's complement overflow. SC_WRAP (default for HLS)

The rounding and overflow methods are represented as typecasts on expressions in the generated HLS code.

For example, consider the MATLAB function exampleFun and the generated HLS code to understand the conversion of rounding and overflow methods.

MATLAB Code

function y = exampleFun(a, b) y = fi(a + b, 1, 5, 2, fimath('RoundingMethod','Nearest','OverflowAction','Saturate')); end

Generated HLS Code

class exampleFunClass { public: sc_fixed<5,3> exampleFun(sc_fixed<7,3> a, sc_fixed<7,3> b) { return (sc_fixed<5,3,SC_RND,SC_SAT>)((sc_fixed<8,4>)a + (sc_fixed<8,4>)b); } };