Fixed-Point Designer

Model and optimize fixed-point and floating-point algorithms


Fixed-Point Designer™ provides data types and tools for developing fixed-point and single-precision algorithms to optimize performance on embedded hardware. Fixed-Point Designer analyzes your design and proposes data types and attributes such as word length and scaling. You can specify detailed data attributes such as rounding mode and overflow action, and mix single-precision and fixed-point data. You can perform bit-true simulations to observe the impact of limited range and precision without implementing the design on hardware.

Fixed-Point Designer lets you convert double-precision algorithms to single precision or fixed point. You can create and optimize data types that meet numerical accuracy requirements and target hardware constraints. You can determine the range requirements of your design via mathematical analysis or instrumented simulation. Fixed-Point Designer provides apps and tools that guide you through the data conversion process and enable you to compare fixed-point results with floating-point baselines.

Fixed-Point Designer supports C, HDL, and PLC code generation.

Get Started:

Data Type Exploration

Explore floating-point and fixed-point data types to analyze the tradeoff on numerical precision.

Fixed-Point Specification

Specify the fixed-point properties of your design with application-specific word lengths, binary-point scaling, arbitrary slope and bias scaling, and control details such as rounding and overflow modes.

Specifying a fixed-point data type and all its properties, such as rounding mode.

Floating-Point Simulation

Emulate target hardware behavior for denormal floating-point numbers, such as flush-to-zero, in simulation and code generation. Simulate limited-precision floating-point with fp16 half-precision data type in MATLAB®.

Instrumentation and Visualization

Collect simulation data and statistics through automatic model-wide instrumentation. Use visualizations to explore and analyze your designs.

Visualizing signal ranges and the histogram data.

Derived Range Analysis

Derive signal ranges based on mathematical analysis of your design and determine the worst-case ranges or edge cases, without having to create fully exhaustive simulation test benches. Using derived ranges, you can make sure your design prevents or handles all possible overflows.

Deriving ranges using design ranges.

Automated Data Typing

Quantize and optimize your designs using fixed-point and floating-point data types.

Fixed-Point Quantization

Explore different fixed-point data types and their quantization effects on numerical behavior of your system with a guided workflow. Observe the dynamic range of variables in your design and ensure that the algorithm behaves consistently in floating-point and fixed-point representation after conversion.

Converting a floating-point model using the Fixed-Point Tool.

Floating-Point Quantization

Automatically convert a design from double precision to single precision and analyze the effects of limited-precision floating-point representation and quantization in single precision.

Automatic conversion using the Single Precision Converter.

Data Type Optimization

Automatically iterate through various fixed-point configurations to choose the optimal heterogenous data types while meeting tolerance constraints on the numerical behavior of your system. The optimization seeks to minimize the total bit-width using fixed-point data types for an efficient design.

Embedded Implementation

Explore the implementation tradeoffs and optimize your designs with embedded efficient algorithms.

Function Approximation and Lookup Table Compression

Approximate mathematically complex functions, such as sqrt, exp, or complex subsystems, with an optimal lookup table. Compress existing lookup tables memory usage by reducing the data points and data types.

Generate Bit-True Code

Ensure bit-true agreement across Model-Based Design from simulation to code generation, including acceleration as well as processor-in-the-loop and software-in-the-loop simulations. Analysis and verification of a fixed-point algorithm are based on bit-true representations.

Verifying bit-true behavior of the generated code in a simulator.

HDL Optimized Matrix Blocks

Simulink® blocks that model design patterns for systems of linear equations and core matrix operations, such as QR decomposition, for hardware-efficient implementation on FPGAs.

Library block that provides HDL optimized design pattern for QR decomposition.

Testing and Debugging

Analyze, test, and debug numerical behavior of your algorithms.

Overflow and Precision Loss Detection

Quickly identify, trace, and debug the sources of overflow, precision loss, and wasted range or precision, and compare it against ideal floating-point behavior. Bit-true agreement maximizes many benefits of Model-Based Design, such as the ability to discover issues early in the workflow.

Tracing the root cause of an overflow.

Test Numerical Edge Cases

Generate numerically rich fixed-point and floating-point values to test edge cases, such as values close to boundaries and denormal numbers, for numerical consistency of your algorithms. Generate a combination of signals of varying dimensions or complexity, and integer, floating-point, or fixed-point data types.

Generating test data with data generator APIs.

Latest Features

Fixed-Point Tool

Propose data types based on multiple simulation scenarios in the Fixed-Point Tool

Restore Point

Restore model to original design

Lookup Table Optimization

Allow off-curve table values in optimized lookup tables

Data Type Optimization

Specify multiple simulation scenarios for data type optimization

Limited Precision Machine Learning

Quantize and generate fixed-point C/C++ code for a trained SVM model

Test Bit Patterns

Generate simulation inputs to test the full operating bit range for your design

Half-Precision Data Type

Design and simulate half-precision systems in MATLAB

See the release notes for details on any of these features and corresponding functions.