Day 3: Model-Based Design with Simulink: Code Gen and V&V

Code Generation and Targeting - Pete Szpak

Maximizing Component Reuse in Code Generation - Xiaocang Lin

  • Improving encapsulation in generated code

    • Minimize public interface dependecny (R2017a)

    • Keep local function truly local (R2017b)

      • Eliminates name collisions

      • cset: Preserve static keyword in function declarations

  • Simulink Library -> Reusable Code Parts

    • Reuse a function within a model (since 2002)

    • Reuse a function across multiple models (since R2012b)

Responding to the Ever-Increasing Demands on Code Efficiency - Partha Biswas

  • Traditional MBD Workflow in pure control applications

    • RAM and Data minimization/efficiency is critical

  • Increasing design complexity (i.e. vision application domain)

    • High demand for performance

      • Zero tolerance for unnecessary copies

    • Tareting heterogeneous platforms

      • Leverage concurrency

  • Improvements

    • No unnecessary data copies for bus element assignment (R2017a)

      • TODO: Investigate

    • Favor buffer reuse in a chain of blocks (R2017b)

      • 11% RAM reduction

    • RAM and Data Copy Reduction (R2017b)

      • Reusable CSC

      • Inout arguments in MATLAB/Simulink function & MATLAB system blocks

    • Exploiting parallelism

      • Data-level parallelism

      • Task-level parallelism

Reusing Generated Code Across MATLAB Releases - Jon Fielder

  • Addressing the challenge of manual code integration

    • Difficulties

      • Duplicate utilities across releases

      • Non-functional changes

      • Perhaps a large number of utilities to handle

    • Approaches

      • Reduce number of utilities generated (R2016b)

    • Automatically integrate shared code (R2016b)

      • Associate model components with existing shared code

    • Automatically integrate model code (R2016b)

      • Directly import model code and shared code

        • Utilizes SIL and PIL using the previously generated and verified code

          • As far back as R2010a

      • Cross-relese system simulation

    • Generate efficient integrated code (R2016b)

      • Call to the previous releases are fully inline, without wrapper code

    • Easily reuse model reference components

      • Import model refreence component (R2017a)

      • Import model reference hierearchy (R2017b)

Real-Time Simulation and Testing - Marc Schafer

  • Simulink Desktop Real-Time integration to ThingSpeak (R2017b)

  • Logging improvements (R2017b)

    • Works just like you would for desktop simulations

  • Simulink Test and Simulink Real-Time can interoperate

  • Baseline Real-Time Target Machine (R2017a)

  • Mission: If you know how to use Simulink, you know how to use Simulink Real-Time

Advances in C++ Code Generation - Pengcheng Wu

  • An object-oriented, C++ code realization is more natural sometimes

  • Separation of concerns

    • Publish-Subscribe

    • Discovery

    • Communication

    • Quality of Service

  • Since R2016a, more production code use-cases

  • Multi-instantiable Simulink Functions: Natural way to map models to classes (R2017b)

    • Can utilizie dot notation, similar to C++ code

Advances in HDL Code Generation - Kiran Kintali

  • Advanced algorithms require hardware acceleartion

  • FPGA/SoC are key to meet the growing performance needs

  • HDL Code Generation workflows help manage complexity

  • Hardships of fixed-point conversion (with high dynamic range math models)

    • New support for floating-point and fixed-point algorithms

      • Directly target floating-point on the hardware

        • Misconception that fixed-point is always more efficient than floating-point

  • Math more accessible for FPGA

    • Single (R2016a)

    • Double (R2017b)

Generating GPU Code for Acceleration - Girish Venkataramani

  • New Product in R2017b

    • GPU Coder

      • Take MATLAB and generate CUDA code for NVIDIA GPUs

      • Accelerated implementation of parallel algorithms on GPUs

        • Neural Networks

          • Deep Neural Network

        • Image processing and computer vision

        • Signal processing and communications

Autonomous Systems Design - Don Orofino

  • Robotic Autonmous Systems are a MEGATREND

    • Fixed-location robotics (eg, robotic arm)

    • Wheeled vehicles

    • UAV/Drone/Quadcopters

  • Automated driving is a high priority for TMW

    • Directing all possible development teams to this area

Delivering Autonomous Systems using Model-Based Design - David Koh

  • Need to combine many diverse technologies

  • Managing complexity is a key to developing autonomous systems

    • High-level abstraction using MATLAB, Simulink, & Stateflow

    • Parallel Simulations (R2017a)

      • parsim

        • Multicore

        • Data center on the cloud

    • Code generation

      • C/C++/HDL/PLC generators

    • GPU Coder (R2017b)

      • Translate MATLAB to optimized CUDA

    • Closed-loop testing & real time hardware-in-the-loop

      • Vehicle blockset toolbox (R2017b)

Automated Driving - Witek Jachimczyk

  • Automated Driving System Toolbox (R2017a)

    • Emphasis on perception and algorithm validation

      • Vehicle detection with distance estimation using a monocular camera

        • Parabolic lane boundary model

        • Bird's eye projection

      • Ground Truth Labeler

        • API for custom automation algorithm

  • Direction

    • Simulink support for tracking and sensor fusion (R2017b)

Deep Learning and Computer Vision for Environment Perception - Birju Patel

  • Deep Learning Algorithms

    • R2016a

      • Neural Network Toolbox

      • Computer Vision System Toolbox

    • R2017a

      • Computer vision System Toolbox

        • Train faster R-CNN Dector

      • Automated Driving System Toolbox

    • R2017b

      • Computer Vision System Toolbox

        • Semantic Segmentation

      • Automated Driving System Toolbox

        • Labeling Training Data

  • Deployment

    • Code generation

      • GPU (R2017b)

Sensor Fusion and Tracking - Vincent Pellissier

  • Fuse detections with multi-object tracker (R2017a)

    • Vision & radar

      • Fused detector

      • Fused tracker

  • Synthesize scenario to test tracker (R2017a)

  • Sensor fusion in Simulink (R2017b)

    • Adaptive cruise control example will be shipped

Localization, Mapping, and Planning - Remo Pillat

  • Robotics System Toolbox

    • Plan manpulator motion (R2017a)

    • UAV localization & Control (R2017a)

Replay Simulation of Recorded Sensor Data - David Koh

  • Why?

    • To develop robust algorithms, need lots of real-world data collected under varying conditions

  • Robotics System Toolbox

Test and Verification - Bill Aldrich

  • New interface

    • Bring in requirements into MATLAB

    • Tracing is simplified

    • RMI will still be available

    • Bi-directional linking with DOORS isn't initially supported

Use Quality Measures to Improve Your Design - Sai Avula

  • Access Model Quality Metrics Dashboard (R2017b)

  • Clone detection (R2017b)

    • Cloned component

      • Subsystem that matches any other subsystem in the model hierarchy

      • Convert all cloned components to library link subsystem

      • Size of generated code was reduced by 50% in one industry test model

Author Tests with Spreadsheets - Khoo Yit Phang

  • Leverages Simulink Test

    • Excel file are input and baseline options (R2017b)

      • Supports boolean, enumeration, and numeric data types

      • Utilize multiple sheets to define multiple tests

      • Test results can be captured effortlessly to Excel files

Eliminate Defects Using Regression Testing - A. Abhishek

  • Use Simulink Project impact analysis to identify tests to be re-run

  • Focus on sandbox testing

    • Local machine testing

    • Simulink Test Manager

      • Run tests, fetch results

  • Model coverage

Address Missing Coverage - Anjali Joshi

  • Simulink Design Verifier

    • Detect dead logic

      • Newly integrated in coverage results explorer (R2017a)

      • Fix design to eliminate dead logic

      • Add justification for dead logic

      • Automatically add tests for missing coverage (R2017a)

  • Coverage Results Explorer (R2016b)

    • TODO: Investigate

Test Across Releases - Gregg Smith

  • Approaches

    • Use SIL replacement blocks to host older code in newer release (R2017b)

    • crossReleaseExport()

    • crossReleaseImport()

  • Test Manager (R2017b)

    • Multi-release testing

      • Automatically spawns older releases of MATLAB and tests on those

Breakout Sessions

Streamlining Certification Workflows with Model-Based Designa - Eric Dillaber

  • Model Advisor

    • Modeling Standard Checks

      • Security (eg, CERT-C) added

    • Design error detection is now exposed in Model Advisor (R2017a)

  • Code coverage

    • Bill recommends running code coverage in SIL mode, then running PIL mode with code coverage disabled

      • Code coverage instruments the code

  • Qual/Cert Kit Updates

    • R2017a

      • Qualification of

        • Simulink Design Error Detection

        • Polyspace Report

        • Simulink Block Execution Coverage

    • R2017b

      • Qualification of

        • New MathWorks High-Integrity Guideline Checks

        • MAAB Guideline Checks

        • MISRA Checks

      • Improvements to Simulink Coverage Qual kit

      • Guidance on Qaulifying Custom Checks

      • Menu Access to Kit artifacts, trace matrix and tests

Customizing Embedded Coder to Generate Perfect Code for Your Environment - Xiaocang Lin

Last updated