Embedding generated code
Fuel innovation by seamlessly integrating exploration with hardware implementation. Capture ideas in MATLAB and Simulink and transition easily from model to C, Cuda, HDL, or PLC code. We build robust models and generate efficient code, meeting performance & certification needs.
On-target rapid prototyping
We swiftly translate your concepts into live hardware demos, from model building to code generation. From signal processing to image processing and or embedded controls, we've got you covered. Prototype on budget-friendly targets like Raspberry Pi or Arduino®, and transition to production seamlessly.
For mobile devices like Apple or Android, we prototype and deploy generated code into your custom app and access on-board sensors like the video camera and accelerometer for comprehensive functionality.
Performance optimization
When your MATLAB/Simulink model is no longer just an executable specification, but becomes the source of your embedded production code, non-functional requirements like memory usage and execution speed become the highest priority.
We have extensive experience with improving execution speed while reducing the memory load of generated code, by optimizing the models without compromising functional features. Enhancing the architecture, instrumenting the model, or even allowing generation of hardware-specific code from generic blocks: we improve performance by numbers of magnitude. For example, we have helped Septentrio to level-up the performance of their AiRx2 OEM, a GNSS+SBAS receiver for precision aviation applications - check the reference story on the MathWorks website.
Integration with existing software
Integrate generated code into your application as a static- or dynamic library and run on your laptop, mobile, or embedded system. Use platform-specific libraries for maximum performance (i.e. LAPACK, FFTW or your own optimized libraries). Or generate source code for optimal readability and portability.
Adopting a code generation-based design approach requires meticulous integration of generated and existing code, aligning data, datatypes, and function prototypes. We ensure optimal performance within resource constraints and provide monitoring and tuning interfaces as needed. We expedite your journey, offering one-time integrations or fully customized building procedures. Leveraging existing Coder features and adding customizations where necessary, our approach ensures seamless integration:
- Integration of the generated-code interface
- Verification of availability of data-types and methods
- Optimization for processor speed and memory limitations
- Introduction of appropriate numerical representations (floating or fixed point)
- Incorporation of real-time data management like buffering, streaming, and pipelining
Certification & code readability
We offer support for full traceability and readability between models and generated code equivalents, by configuring correct code-generation environments, applying suitable modeling approaches, naming conventions and including review-automation of models and code.
For instance, we assisted a customer obtaining DO-178B certification for a GNSS-based precision-aviation landing system application. We used a model-based-design approach with MATLAB & Simulink to trace requirements, simulate the design, and to generate source code. As a result, the design-tests were reused in the generated C source code and key SOI-1 certification milestones were achieved.