Simulink
Simulink is a MATLAB-based graphical programming environment and block diagram tool for modeling, simulating, and analyzing multidomain dynamical systems.[1] Developed by MathWorks, it enables engineers and scientists to design complex systems visually using drag-and-drop blocks representing mathematical models, without writing traditional code.[2] Introduced in 1992 as a companion product to MATLAB version 4, Simulink supports Model-Based Design, a methodology that facilitates the entire development lifecycle from requirements analysis to implementation and verification.[3] It integrates seamlessly with MATLAB for data analysis, algorithm development, and visualization, leveraging MATLAB's numerical computing capabilities to solve ordinary differential equations and perform simulations.[1] Key features include multidomain simulation across disciplines like electrical, mechanical, and control systems; automatic code generation in languages such as C, C++, and HDL for deployment on hardware; and support for hardware-in-the-loop testing and rapid prototyping.[2] Widely adopted in industries including aerospace, automotive, and robotics, Simulink is used for applications such as control system design, signal processing, predictive maintenance, and fault detection in embedded systems.[1] Its block-based interface promotes traceability and collaboration through a digital thread connecting models to requirements and tests, enabling agile development with automated verification and continuous integration.[1] As of the R2025b release in September 2025, Simulink includes enhancements for real-time simulation and integration with AI and machine learning workflows, alongside support for cloud deployment.[4]Introduction
Definition and Purpose
Simulink is a MATLAB-based graphical programming environment designed for modeling, simulating, and analyzing multidomain dynamical systems through the use of block diagrams.[1] It enables engineers and scientists to represent complex systems visually, integrating components such as signals, blocks, and connections to mimic real-world behaviors without requiring traditional text-based coding.[5] The core purpose of Simulink is to facilitate model-based design, a workflow that spans from initial conceptual modeling to simulation, verification, and ultimately deployment of systems on hardware.[6] This approach allows for rapid prototyping and iterative refinement, reducing development time by up to 50% or more in many applications by automating code generation and testing processes.[6] Developed by MathWorks, Simulink complements MATLAB's numerical computing capabilities by providing an intuitive, visual interface for system-level design and analysis.[1] Key concepts in Simulink include its support for multidomain systems, encompassing continuous-time, discrete-time, and hybrid models within a single framework.[7] It integrates advanced simulation solvers that numerically solve ordinary differential equations (ODEs) underlying these systems, ensuring accurate representation of dynamic behaviors such as stability and response times.[8] This multidomain capability makes Simulink particularly suited for applications in control systems, signal processing, and embedded software development.[2]Relation to MATLAB
Simulink operates as a graphical extension embedded within the MATLAB environment, allowing users to build, simulate, and analyze block diagram models directly from the MATLAB interface. Models in Simulink can be executed programmatically using MATLAB commands, such as thesim function, which enables automated simulation workflows and batch processing from scripts or the MATLAB Command Window.[9] Data exchange between Simulink and MATLAB occurs seamlessly through workspace variables, where input parameters can be imported from the base MATLAB workspace or a dedicated model workspace, and simulation outputs can be exported back for further processing or analysis.[10] This integration facilitates direct manipulation of model variables via MATLAB scripts, supporting iterative design and optimization tasks.[11]
A key aspect of this relationship is the incorporation of MATLAB code into Simulink models through specialized blocks. The MATLAB Function block allows users to embed custom MATLAB algorithms directly into the graphical model, executing them during simulation as native Simulink components.[12] Similarly, S-functions provide a flexible mechanism to define custom blocks using MATLAB code, enabling the integration of complex, user-defined computations while leveraging Simulink's simulation engine for execution.[13] These features allow developers to combine MATLAB's textual programming capabilities with Simulink's visual modeling, creating reusable and extensible components without leaving the MATLAB ecosystem.[14]
Simulink further benefits from MATLAB's extensive toolbox ecosystem, particularly in numerical computation and data presentation. For simulations, Simulink employs MATLAB's suite of ordinary differential equation (ODE) solvers, such as ode45 and ode15s, which handle the integration of model dynamics with high accuracy and efficiency.[8] Visualization tools in Simulink, including the Simulation Data Inspector and Scope blocks, draw on MATLAB's plotting functions to generate figures, time-series plots, and interactive displays of simulation results.[15] This shared infrastructure ensures consistency in data handling and analysis across both environments.
At its core, Simulink's execution depends on the MATLAB computational engine, which processes block algorithms, solver iterations, and data flows during model runs. This reliance enables hybrid workflows where graphical models can be scripted, parameterized, and automated using MATLAB, bridging intuitive diagramming with programmatic control for advanced engineering applications.[1]
History
Development Origins
Simulink's development began in the late 1980s at MathWorks, driven by the need for a graphical interface to facilitate simulation of control systems as MATLAB's adoption expanded among engineers and scientists following its initial commercial release in 1984.[3] This period marked a shift toward visual modeling tools in response to the increasing complexity of dynamical systems analysis in engineering fields.[16] The initiative was spearheaded by a development team led by Jack Little, a control engineer with training from Stanford and MIT, who built upon the foundational work of Cleve Moler in creating MATLAB as a matrix laboratory for numerical computing.[17] Little's background in control systems engineering positioned him to address gaps in MATLAB's text-based approach, drawing inspiration from established block diagram methodologies prevalent in control theory and simulation software of the era.[3] At its core, the motivation stemmed from MATLAB's limitations in handling intricate simulations of ordinary differential equations (ODEs) and multidomain systems through scripting alone, necessitating a more intuitive, drag-and-drop environment for model construction and execution.[3] Simulink was thus conceptualized as an integrated companion to MATLAB, leveraging its numerical solvers for ODE-based dynamic modeling while introducing a block diagram paradigm to streamline the design and testing of control algorithms.[18] Early prototypes focused on this synergy, enabling engineers to visualize and iterate on system behaviors without extensive coding.Major Milestones
Simulink was first released in 1992 as part of MATLAB 4.0, having been renamed from its original working title "Simulab" prior to launch.[19] During the 1990s, Simulink expanded its capabilities with the introduction of Stateflow in 1997, enabling graphical modeling of state machines and finite state machines integrated with Simulink block diagrams.[20] Support for real-time simulation was also added in the mid-1990s through the Real-Time Workshop, allowing models to execute in real time on target hardware.[20] In the 2000s, Simulink advanced automatic code generation with enhancements to the Real-Time Workshop Embedded Coder, which was renamed Embedded Coder in 2011 to reflect its focus on production-quality embedded systems code (while Real-Time Workshop was renamed Simulink Coder).[20] Multidomain modeling saw significant improvements with the launch of Simscape in 2008, facilitating the simulation of physical systems across electrical, mechanical, hydraulic, and other domains using a unified physical network approach.[21] From the 2010s onward, Simulink transitioned to the .slx file format in 2012, replacing the legacy .mdl format with a more efficient, XML-based structure that supports better version control and data integrity.[22] Cloud-based access was introduced via Simulink Online in 2019, enabling model building and simulation directly in web browsers without local installation. Recent releases have integrated AI and machine learning capabilities, such as blocks for importing and simulating deep neural networks within Simulink models, starting prominently in R2020a.[23] Continuing this trend, R2025b introduced MATLAB Copilot, an AI-powered assistant for generating and debugging Simulink models.[24] A key partnership milestone occurred in the early 2000s with dSPACE, building on their 1992 cooperation, to enhance hardware-in-the-loop (HIL) testing integration, allowing Simulink models to interface seamlessly with dSPACE real-time systems for ECU validation.[25]Core Components
Block Diagram Environment
Simulink's block diagram environment provides a graphical interface for constructing and simulating dynamic systems through a drag-and-drop paradigm. The core of this environment is a modeling canvas where users can place blocks representing system components and connect them using lines that denote signal flows. This canvas supports intuitive interactions, such as selecting and positioning blocks via mouse operations, and drawing connections to define how data propagates between components.[26] The environment integrates a Library Browser, which presents a tree-structured view of available Simulink libraries, allowing users to browse, search, and drag blocks directly onto the canvas for model assembly. This browser facilitates efficient block selection by supporting keyword searches and categorization into domains like sources, sinks, and math operations.[27] The environment employs hierarchical modeling paradigms to manage complexity, enabling users to encapsulate groups of blocks into subsystems that function as single, reusable units. Subsystems allow for nested structures, where double-clicking a subsystem opens its internal diagram, promoting modularity and abstraction in large-scale models. Masking further enhances this by overlaying a customizable interface on subsystems, hiding internal details while exposing parameters and ports for simplified interaction and parameterization. Simulink supports modeling of continuous-time systems via differential equations, discrete-time systems through difference equations, and event-based systems that respond to discrete events, accommodating a range of dynamic behaviors within the same framework.[26][28] Central to the workflow is model compilation, where Simulink analyzes the block diagram to resolve dependencies, propagate signal attributes, and prepare the model for simulation. Users select solvers during configuration, such as ode45 for variable-step, nonstiff ordinary differential equation integration, which adapts step sizes based on error estimates to balance accuracy and efficiency. Execution diagnostics provide tools for monitoring simulation progress, including error detection for issues like algebraic loops or solver inconsistencies, and visualization of signal values during runtime to aid debugging.[8][29][30] At its foundation, the block diagram environment operates on signal flow semantics, wherein individual blocks encapsulate mathematical functions or operations, and connections establish directed data dependencies that dictate execution order. Signals, represented as lines, carry scalar, vector, or multidimensional data without implying physical wiring, ensuring that the diagram models abstract mathematical relationships rather than hardware layouts. This semantic model enables deterministic simulation by computing block outputs sequentially based on input signals and internal states.[31][26]Libraries and Blocks
Simulink organizes its modeling components into libraries, which are collections of pre-built blocks accessible through the Library Browser. These blocks represent fundamental elements such as signal generators, mathematical operators, and dynamic system components, enabling users to construct block diagrams for simulation. The base Simulink installation includes a wide array of these blocks, categorized by function to facilitate model assembly.[32] Core libraries encompass essential categories for general-purpose modeling. The Sources library provides blocks for generating input signals, such as the Sine Wave block, which produces sinusoidal waveforms, and the Constant block, which outputs fixed values. Sinks libraries include blocks like the Scope for visualizing signals over time and the To Workspace block for exporting data to the MATLAB workspace. Math Operations libraries feature blocks for arithmetic computations, including the Sum block for addition or subtraction and the Gain block for scaling signals by a constant factor. Continuous libraries support modeling of continuous-time systems with blocks like the Integrator, which computes the integral of an input signal, and the Derivative block for differentiation. Discrete libraries handle sampled-data systems, exemplified by the Unit Delay block, which shifts signals by one time step, and the Discrete Transfer Fcn block for implementing z-domain transfer functions. Additional core categories include Logic and Bit Operations, with blocks such as the Logical Operator for Boolean functions, and Signal Routing, featuring the Mux block for combining signals into vectors.[32][33][34][35] Domain-specific libraries extend Simulink's capabilities through dedicated toolboxes, addressing specialized engineering needs. The Signal Processing library, part of the DSP System Toolbox, offers blocks for filtering and spectral analysis, such as the FIR Filter block for finite impulse response filtering. The Control System library, from the Control System Toolbox, includes blocks like the PID Controller for feedback control implementation and the Transfer Fcn block for linear system representation. For physical modeling, Simscape provides multidomain libraries that simulate real-world interactions using physical networks rather than signal flows; examples include the Electrical library's Resistor and Inductor blocks for circuit elements, and the Multibody library's Rigid Body and Joint blocks for mechanical dynamics. These libraries model components like springs, valves, and motors, allowing seamless integration of physical effects into Simulink models.[36] Simulink supports the creation of custom blocks to meet unique modeling requirements, enhancing reusability and modularity. Users can define custom blocks as subsystems, which group existing blocks into hierarchical units, or via MATLAB Function blocks that embed algorithmic code directly into the model. For instance, a custom Gain block might use a subsystem with a Math Operations Gain block, where the gain parameter is set as a tunable variable from the MATLAB workspace, allowing runtime adjustments without recompilation. S-Function blocks enable advanced customization by interfacing with C, C++, or MATLAB code for specialized behavior. Custom blocks can be compiled into user libraries for sharing across models or teams.[37][38][39] The extensibility of Simulink libraries via toolboxes further broadens their application; for example, the Communications Toolbox adds blocks for modulation and error correction in wireless systems, while the Robotics System Toolbox provides blocks for kinematics and sensor fusion in robotic models. This modular structure ensures that base Simulink's core blocks form the foundation, with domain-specific extensions tailoring the environment to fields like aerospace, automotive, and biomedical engineering.Modeling and Simulation
Building Models
Building models in Simulink begins with defining the system's requirements, such as specifying inputs, outputs, and desired dynamic behavior, to ensure the model accurately represents the intended design.[40] Users then open a new model file in the Simulink Editor by selecting a blank template and saving it with a.slx extension, providing a canvas for assembling the block diagram.[40]
The core process involves selecting appropriate blocks from the Simulink Library Browser, which categorizes blocks by function such as sources, sinks, and math operations.[41] Blocks are dragged onto the model canvas, and signals are connected by drawing lines from output ports to input ports, forming the data flow paths that define the system's structure.[40] Parameters are configured by double-clicking individual blocks; for instance, discrete blocks like the Zero-Order Hold require setting a sample time parameter, such as 0.1 seconds, to specify the rate of signal processing.[40] This step-by-step assembly allows progression from basic open-loop systems to complex interconnected models, with signal naming and port alignments ensuring clear connectivity.[40]
Best practices emphasize modular design to manage complexity, achieved by grouping related blocks into subsystems, which encapsulate functionality and promote reusability across models.[41] Annotations enhance documentation by adding text notes, equations, or images directly on the canvas via the annotation palette, helping to explain model elements and maintain traceability.[42] For design exploration, variant modeling uses variant subsystems or choices to represent multiple alternatives within a single model, enabling conditional activation based on parameters without duplicating content.[43]
Error handling is facilitated by the Model Advisor, a tool accessed from the Modeling tab that performs automated checks for consistency issues like unit mismatches and model referencing errors, as well as performance optimizations such as efficient bus usage.[44] Debugging supports iterative refinement through breakpoints, set via the Debug tab in the Simulink Editor to pause execution at specific blocks or signals, allowing inspection of intermediate values during development.[45]
As of R2025a, MATLAB Copilot provides AI-assisted support for writing code related to model building. In R2025b, the Python Code Block allows direct integration of Python scripts into models for enhanced flexibility.[46][4]
A representative example is a simple feedback control loop, consisting of a plant block (modeling the physical system dynamics), a controller block (such as a PID controller adjusting based on error), and a scope block to visualize outputs, connected in a closed loop where the plant's output feeds back to the controller input.[47] This configuration demonstrates basic signal routing for stability analysis, with blocks selected from libraries like Continuous and Discrete for the plant and controller components.[41]
Simulation Techniques
Simulink employs numerical solvers to integrate ordinary differential equations (ODEs) of the form \frac{dy}{dt} = f(t, y), where y represents the state variables and f(t, y) defines the system dynamics.[48] These solvers discretize time and approximate solutions iteratively, enabling the simulation of continuous, discrete, and hybrid systems. Solvers are categorized as fixed-step or variable-step, with the choice depending on the need for consistent time steps in real-time applications versus adaptive accuracy for non-real-time analysis.[8] Fixed-step solvers maintain a constant time step throughout the simulation, which is essential for code generation and real-time execution to ensure deterministic behavior. For instance, the ode4 solver implements a fourth-order Runge-Kutta method, providing a balance of accuracy and computational efficiency for non-stiff systems.[48] In contrast, variable-step solvers adjust the step size dynamically based on error estimates to optimize speed and precision; the ode45 solver, based on a fifth-order Runge-Kutta scheme with fourth-order error control, is a default choice for most non-stiff problems due to its robustness.[48] For stiff systems—characterized by rapid transients or widely varying time scales—explicit solvers like ode45 may become inefficient or unstable, necessitating implicit methods such as ode15s, which solve algebraic equations at each step to handle stiffness effectively.[49] Simulation in Simulink operates in several modes to balance speed, interactivity, and accuracy. The normal mode executes the model interpretively, allowing full access to blocks during simulation for debugging but at the cost of slower performance.[50] Accelerator mode compiles the model into C code, accelerating execution by avoiding interpretation while preserving most interactive features, making it suitable for iterative design workflows.[51] For even greater speed, rapid accelerator mode generates an executable binary, significantly reducing run times for large models—often by factors of 10 or more compared to normal mode—but limiting real-time interaction during simulation. As of R2025a, Fast Restart enhances rapid accelerator mode by allowing quicker restarts for multiple simulations without rebuilding the executable.[52][46] Real-time simulations, required for hardware-in-the-loop testing, utilize Simulink Real-Time, which deploys models to dedicated target hardware for synchronized execution with physical systems.[53] In R2025a, the Variable-Step Local Solver was introduced for referenced models, enabling independent variable-step solving to improve accuracy and efficiency. Additionally, Flexible Operating Point allows simulations to restart from operating points even after model changes. In R2025b, local solvers for model references further enhance simulation of hierarchical models.[46][4] Post-simulation analysis relies on tools for data capture and examination. Signal logging automatically records selected signals during simulation without modifying the model, storing time-series data in a workspace-accessible format for subsequent review.[54] The Simulation Data Inspector facilitates data inspection by enabling visualization, comparison across runs, and signal alignment, supporting tasks like tolerance-based equivalence checks.[55] As of R2025b, the Simulink Scope features an improved UI with multithreaded performance and better integration with the Simulation Data Inspector.[4] For frequency-domain analysis, linearization tools approximate nonlinear models as linear time-invariant systems at specific operating points, yielding state-space representations suitable for Bode plots, stability margins, and controller design.[56] This process involves perturbing the model around an equilibrium and computing Jacobians block-by-block, enabling insights into dynamic behavior without full nonlinear resimulations.[57]Applications
Engineering Fields
Simulink plays a pivotal role in various engineering disciplines by enabling the modeling, simulation, and analysis of dynamic systems through its block-based environment. In control systems engineering, it facilitates the design and tuning of controllers such as proportional-integral-derivative (PID) systems, where engineers can implement and test feedback loops for stability and performance. For instance, PID controllers in Simulink are used to regulate processes by adjusting gains interactively during simulation, allowing rapid iteration without hardware prototyping.[58] State-space modeling in Simulink further supports advanced control design, representing systems with matrices for state variables, inputs, and outputs, which is essential for multivariable systems. This approach is particularly applied in aerospace for aircraft stability analysis, where Simulink models simulate nonlinear dynamics and static stability derivatives to evaluate flight control responses.[59] In automotive engineering, state-space representations model vehicle dynamics, such as suspension feedback loops, to optimize handling and safety under varying conditions. In signal processing, Simulink provides specialized blocksets from the DSP System Toolbox for designing and simulating digital signal processing algorithms. Engineers use these blocks to implement filtering operations, such as finite impulse response (FIR) or infinite impulse response (IIR) filters, to remove noise or extract features from signals in real-time simulations. For communications applications, the fast Fourier transform (FFT) block in Simulink computes frequency-domain representations efficiently, enabling analysis of spectrum characteristics for modulation schemes or channel equalization. This is demonstrated in models where input signals undergo FFT processing to visualize power spectral densities, aiding in the design of wireless communication systems.[60][61] Mechatronics engineering leverages Simulink's integration with Simscape for multidomain physical modeling, combining mechanical, electrical, hydraulic, and electronic components into cohesive simulations. Simscape allows engineers to build models of physical systems using domain-specific libraries, such as electrical circuits coupled with mechanical actuators for robotics applications. In robotics, this integration simulates hydraulic systems for joint actuation or electronic controls for sensor feedback, enabling the analysis of energy efficiency and dynamic interactions without physical prototypes. For example, a robotic arm model might connect hydraulic cylinders via Simscape Fluids blocks to electrical drivers, predicting motion trajectories and control stability.[62][63] Simulink's widespread adoption underscores its impact, with 82% of Fortune 500 companies using MATLAB and Simulink for engineering simulations, including aircraft stability models in aerospace design workflows.[64]Industry Uses
In the automotive sector, Simulink is widely deployed for developing advanced driver-assistance systems (ADAS) and engine control strategies. For instance, Ford Motor Company utilizes Simulink within Model-Based Design workflows to analyze ADAS feature usage, generate scenarios for testing perception and planning algorithms, and simulate vehicle dynamics for safer autonomous driving functions.[65] Similarly, engineers at BMW apply Simulink for modeling hybrid powertrains, including range extender engines in vehicles like the i3, to optimize control algorithms and validate fuel efficiency under varying operating conditions.[66] Aerospace applications leverage Simulink for designing and verifying flight control systems and mission-critical simulations. Boeing employs Simulink to model guidance, navigation, and control (GN&C) systems, as demonstrated in the development of the X-40A spaceplane, where engineers simulated unpowered runway landings, integrated sensor data, and generated deployable code to ensure precise trajectory control without pilot intervention.[67] NASA integrates Simulink for rover simulations, notably in the Mars Exploration Rover (MER) mission during the 2000s extending into the 2010s, where it facilitated multibody dynamics modeling for entry, descent, and landing (EDL) phases, including transverse impulse rocket system (TIRS) tuning and descent image motion estimation (DIMES) algorithm testing to handle Martian atmospheric variability.[68] In healthcare, Simulink supports biomedical signal processing and device prototyping, such as ECG analysis for patient monitoring. Developers use Simulink to build deep learning models for classifying ECG signals, enabling real-time arrhythmia detection and integration with hardware for wearable devices compliant with medical standards.[69] For pharmaceutical processes, Simulink enables dynamic simulations of biomanufacturing workflows, including continuous chromatography and perfusion bioreactors, to optimize yield and scalability while reducing experimental costs in drug production.[70] Additionally, in electric vehicle (EV) development, Simulink is instrumental for battery management systems (BMS), with models simulating state-of-charge estimation and thermal management for high-voltage packs to enhance safety and range prediction.[71]Integration and Extensions
With MATLAB
Simulink integrates seamlessly with MATLAB to enable bidirectional data flow between models and the MATLAB workspace, facilitating the exchange of signals and simulation outputs. Simulation results from Simulink can be exported to the MATLAB workspace using the To Workspace block, which logs connected input data—such as signals, buses, or arrays—directly into the base workspace for further processing.[72] Conversely, MATLAB workspace variables can be imported into Simulink models as input signals via the From Workspace block, which reads time-based data from workspace arrays or structures and outputs them as signals or nonvirtual buses during simulation.[73] This bidirectional exchange supports iterative workflows where data generated in one environment informs the other, enhancing model validation and refinement without manual file handling.[74] MATLAB scripts provide powerful automation capabilities for managing Simulink models, allowing users to parameterize, batch-run, and optimize simulations programmatically. Thesim command executes individual or multiple simulations of a Simulink model, accepting a model name or a Simulink.SimulationInput object to specify parameters, initial conditions, and solver settings, which enables scripting for parameter sweeps or sensitivity analyses.[75] For batch processing, the batchsim function offloads simulations to a compute cluster, returning results as a Simulink.Simulation.Job object for asynchronous monitoring and retrieval, ideal for large-scale parameter studies.[76] Optimization workflows can leverage these scripts in conjunction with MATLAB's Optimization Toolbox to iteratively adjust model parameters, such as tuning controller gains, by evaluating simulation outputs against objectives like minimizing error metrics.[77]
Post-simulation analysis pipelines in MATLAB extend Simulink's capabilities by processing exported data with specialized functions for deeper insights. For instance, frequency-domain analysis can apply the fft function to logged time-series signals from the workspace to compute spectra and identify resonances or noise characteristics in dynamic systems.[72] Stability assessments often utilize the Control System Toolbox to evaluate exported linear models or responses, computing gain and phase margins or pole locations to verify closed-loop performance against design criteria.[78] These pipelines support automated reporting and visualization, such as plotting Bode diagrams from simulation data, streamlining the transition from modeling to verification.[79]
A key feature for algorithmic extensions is the MATLAB Function block, which embeds custom MATLAB code directly within Simulink models to implement user-defined functions without requiring external scripts. This block accepts input signals, executes MATLAB algorithms—such as numerical computations or conditional logic—and outputs results as signals, supporting data types like scalars, vectors, and matrices while inheriting sample times from the model.[38] It enables reuse of existing MATLAB algorithms in graphical models, facilitates code generation for deployment, and integrates seamlessly with Simulink's solver framework for real-time or event-driven execution.[12]
Add-on Products
MathWorks provides over 20 official add-on products that extend Simulink's core functionality for specialized modeling, simulation, and deployment tasks across various engineering domains. These add-ons are licensed and priced separately from the base Simulink product, allowing users to select capabilities tailored to their needs.[80][81] Stateflow is a key add-on for designing and simulating state machines and control logic in event-driven and hybrid systems, where continuous and discrete behaviors interact. It offers a graphical language featuring state transition diagrams, flow charts, state transition tables, and truth tables to model complex decision-making processes, such as supervisory control and fault management in embedded applications.[82] Simscape enables multidomain physical modeling by allowing users to represent systems in mechanical, thermal, electrical, hydraulic, and other physical domains directly within the Simulink environment. Users build models using physical components connected via physical signals, facilitating accurate simulation of interactions like energy flow and motion without deriving custom equations. For example, it supports modeling of electromechanical actuators or thermal management systems in automotive designs.[62] Simulink Real-Time facilitates hardware-in-the-loop (HIL) testing and rapid control prototyping by compiling Simulink models into real-time executables that run on dedicated target hardware. This add-on streamlines the transition from desktop simulation to real-world validation, supporting applications like motor control and autonomous systems testing with minimal code changes.[53] Among other notable add-ons, SimEvents specializes in discrete-event simulation for systems involving queues, stochastic processes, and resource scheduling, such as manufacturing lines or communication networks, by modeling entity flows and event timings. Embedded Coder builds on Simulink's code generation to produce compact, efficient, and MISRA-compliant C/C++ code optimized for embedded processors in production environments, ensuring traceability and performance for safety-critical applications like avionics.[83][84]Code Generation and Deployment
Automatic Code Generation
Simulink enables automatic code generation from graphical block diagrams, allowing engineers to produce deployable software without manual coding. This capability is primarily facilitated by Embedded Coder, which extends Simulink Coder to generate optimized C and C++ code suitable for embedded processors and real-time systems.[85] For hardware description languages, HDL Coder produces synthesizable VHDL or Verilog code from the same models, supporting FPGA and ASIC implementations.[86] These tools automate the translation of Simulink models into production-ready code, reducing development time and errors associated with hand-written implementations.[84] Key features include fixed-point data type conversion and optimization tailored for resource-constrained embedded targets. The Fixed-Point Tool in Simulink automates the conversion of floating-point models to fixed-point arithmetic by analyzing simulation ranges and proposing data types that minimize overflow and precision loss while improving execution efficiency.[87] Embedded Coder applies advanced optimizations, such as inlining, dead code elimination, and memory management, to generate compact and efficient code that meets timing and footprint requirements for microcontrollers.[88] Additionally, it ensures compliance with safety-critical standards like MISRA C, which enforces coding rules to enhance code reliability in automotive and aerospace applications; generated code can be verified against MISRA C:2012 or MISRA C:2023 guidelines using integrated checks and reports.[89][90] The code generation workflow emphasizes verification and traceability to maintain model integrity. Before generation, models undergo verification using the Simulink Model Advisor to check for compatibility, adherence to modeling standards, and potential issues like algebraic loops or unsupported blocks.[91] Once verified, code is generated with full traceability, providing bidirectional links between model elements (e.g., blocks and signals) and corresponding code artifacts, such as functions and variables; this is documented in traceability reports that facilitate auditing and debugging.[92] For safety-critical systems, Embedded Coder supports ISO 26262 compliance, the automotive functional safety standard, by qualifying the toolchain for ASIL levels up to D and generating certifiable production code for microcontrollers used in electronic control units.[93][94] This process ensures that the deployed code faithfully implements the model behavior while meeting regulatory requirements.Hardware Integration
Simulink enables the deployment of models to physical hardware for real-time testing and operation, bridging the gap between simulation and actual system performance. This process supports various integration methods, including hardware-in-the-loop (HIL) simulation, which connects Simulink models to real hardware components like sensors and actuators via dedicated target machines, allowing engineers to test control algorithms under realistic conditions without risking full system deployment.[53] HIL testing with Speedgoat hardware, for instance, facilitates rapid control prototyping and closed-loop validation by executing models on real-time targets that interface directly with physical devices.[95] Complementing HIL, software-in-the-loop (SIL) simulation verifies the numerical accuracy of generated code by compiling and running it as a separate process on the host computer, enabling early detection of implementation errors before hardware involvement.[96] For direct real-time execution on embedded targets, Simulink provides support packages for devices such as Arduino and Raspberry Pi, allowing automated build, deployment, and monitoring of models with features like Connected I/O for hardware communication during simulation and external mode for runtime parameter tuning.[97][98] Key tools include Simulink Real-Time, which evolved from xPC Target and supports deployment to Speedgoat systems for deterministic real-time execution, and the HDL Workflow Advisor for FPGA integration, guiding the generation of hardware description language (HDL) code from Simulink models to synthesize and deploy on field-programmable gate arrays (FPGAs).[53][99] Validation in hardware integration relies on model-based testing cycles that compare responses from simulations, SIL, and actual hardware runs to ensure equivalence and reliability.[100] These cycles incorporate processor-in-the-loop (PIL) testing for target-specific execution and HIL for physical feedback, quantifying discrepancies in timing, accuracy, and behavior to refine models iteratively.[101] A prominent example is autonomous vehicle prototyping, where Simulink models integrate sensors like cameras and lidar with electronic control units (ECUs), enabling HIL testing on Speedgoat platforms to simulate driving scenarios and flash updated code to hardware for validation of perception and control algorithms.[102][103]Release History
Version Timeline
Simulink's version timeline is closely aligned with MATLAB releases, with Simulink evolving alongside its parent product since its introduction. The software has undergone over 40 major versions by 2025, reflecting biannual updates that incorporate enhancements in modeling, simulation, and deployment capabilities. Early versions focused on basic block diagram simulation for dynamic systems, with gradual expansions in platform compatibility and file handling. Key milestones include shifts in supported operating systems and the adoption of modern file formats for improved interoperability and version control.| Version | Release Date | MATLAB Alignment | Key Platform and Format Notes |
|---|---|---|---|
| 1.0 | 1992 | MATLAB 4.0 | Initial release; supported Unix and DOS platforms.[3] |
| - | 1994 | MATLAB 4.2 (approx.) | Added support for Windows 3.1. |
| - | 2004 | R14 | Introduced support for macOS.[104] |
| 4.0 | 2004 | R14 | Expanded cross-platform compatibility including Windows, Linux/Unix, and Mac.[104] |
| 7.10 | March 2010 | R2010a | Last version supporting 32-bit macOS; continued support for Windows, Linux, and 64-bit Mac.[104] |
| - | 2012 | R2012a | Introduced .slx file format as XML-based alternative to legacy .mdl for better data integrity and collaboration.[22] |
| - | 2019 | R2019b | Added cloud access via MATLAB Online for browser-based Simulink usage. |
| 25.1 | May 2025 | R2025a | Enhanced simulation tools and AI integration; full support for Windows, Linux, and macOS, including native Apple Silicon (since R2023b).[104] |
| 25.2 | September 2025 | R2025b | Latest release (as of November 2025); focused on quality and stability improvements.[105] |