Within the fixed-point conversion report, you have the option to highlight MATLAB® code that results in double, single, or expensive fixed-point operations. Consider enabling these checks when trying to achieve a strict single, or fixed-point design.
These checks are disabled by default.
On the Convert to Fixed Point page, to open the
Settings dialog box, click the
Settings arrow .
Under Plotting and Reporting, set Highlight
potential data type issues to Yes
.
When conversion is complete, open the fixed-point conversion report to view the highlighting. Click View report in the Type Validation Output tab.
Create a fixed-point code configuration object:
cfg = coder.config('fixpt');
Set the HighlightPotentialDataTypeIssues
property
of the configuration object to true
.
cfg.HighlightPotentialDataTypeIssues = true;
When trying to achieve a strict-single or fixed-point design, manual inspection of code can be time-consuming and error prone. This check highlights all expressions that result in a double operation.
For a strict-single precision design, specify a standard math library
that supports single-precision implementations. To change the library for a project,
during the Generate Code step, in the project settings dialog box, on the
Custom Code tab, set the Standard math
library to C99 (ISO)
.
This check highlights all expressions that result in a single operation.
The expensive fixed-point operations check identifies optimization opportunities for fixed-point code. It highlights expressions in the MATLAB code that require cumbersome multiplication or division, expensive rounding, expensive comparison, or multiword operations. For more information on optimizing generated fixed-point code, see Tips for Making Generated Code More Efficient (Fixed-Point Designer).
Cumbersome operations most often occur due to insufficient range of output. Avoid inputs to a multiply or divide operation that has word lengths larger than the base integer type of your processor. Operations with larger word lengths can be handled in software, but this approach requires much more code and is much slower.
Traditional handwritten code, especially for control applications,
almost always uses "no
effort" rounding. For example, for unsigned integers and two's complement
signed integers, shifting right and dropping the bits is equivalent
to rounding to floor. To get results comparable to, or better than,
what you expect from traditional handwritten code, use the floor
rounding
method. This check identifies expensive rounding operations in multiplication
and division.
Comparison operations generate extra code when a casting operation is required to do the comparison. For example, when comparing an unsigned integer to a signed integer, one of the inputs must first be cast to the signedness of the other before the comparison operation can be performed. Consider optimizing the data types of the input arguments so that a cast is not required in the generated code.
Multiword operations can be inefficient on hardware. When an
operation has an input or output data type larger than the largest
word size of your processor, the generated code contains multiword
operations. You can avoid multiword operations in the generated code
by specifying local fimath
properties for variables.
You can also manually specify input and output word lengths of operations
that generate multiword code.