Model-based design for embedded systems

Control models.
Running on the chip.

Visual modeling environment to generate deterministic C code for embedded controls.

Try Modeloop Free →

Open in your browser and start designing.

2 Code targets — C & Python
2 Editors — Diagram & MDL
3 Execution levels — MIL, SIL & PIL
2 Platforms — Web & Desktop

Create your algorithms

Design and test each component.

Modeloop provides the building blocks to create your algorithm and the harness to test atomic functions rapidly.

Workflow

From models to final firmware.

Design algorithms visually, review every change, test their behavior and deploy to your hardware.

01 · Design

Design your components.

Bring your architecture to life on a modern visual canvas. Build every software component by wiring blocks, state machines and calibration parameters

Start designing free

02 · Canvas & Text

Switch to text.

Prefer typing? Every component can be edited either graphically on the canvas or via text.

Read about MDL
main
A
Baseline8f2c1a7
speed_errorKp0.008×Ki0.002×∫Σraw_voltage
B
Working3 uncommitted changes
speed_errorKp0.010×Ki0.0025×∫Σraw_voltage
AddedRemovedBehavior changedLayout only

03 · Version Control

Review model changes

Make changes and review them. Modeloop separates behavior changes from layout-only edits to easily inspect model modifications

Explore version control

Requirements

System requirement
Requirement

04 · Requirements

Keep requirements with the model.

Capture model-scoped intent in a structured hierarchy. Save it as versionable format and exchange it with existing toolchains.

Manage requirements

05 · Test

Test before hardware.

Define model tests, run verification workflows and inspect results while the system is still easy to change.

Test your first model
Modeloop firmware being flashed over USB from a laptop to a microcontroller board

06 · Deploy

Deploy to hardware.

Connect board resources and peripherals to your components. Your firmware is now ready to be deployed.

Deploy your first model

Design the behavior.
Verify the result.

An illustrative example of a temperature filter.
From requirements to inspectable results.

Requirements

SF-01

Smooth every sample.

Every 10 ms, combine 20% of the new reading with 80% of the previous output.

SF-02

Start from a known state.

Initialize the filter memory to 20 °C. Restore that state on every reset.

α 0.2Ts 10 ms
y[k] = 0.2 x[k] + 0.8 y[k−1]

Model

Temperature filter: raw input multiplied by 0.2, plus the previous output multiplied by 0.8. Feedback through a unit delay initialized to 20 °C.

Generated code

SensorFilter.c

static float64_t state_previous = 20.0;

void SensorFilter_Filter_step(void)
{
    SensorFilter_Filter_filtered =
        0.2 * SensorFilter_Filter_raw + 0.8 * state_previous;

    state_previous = SensorFilter_Filter_filtered;
}

Unit tests

5 / 5 checks passed.

Executed tests of the generated sensor filter C; final sample in degrees Celsius
CaseExpected °CActual °C
Initial sample 20.0 20.0
Rising step 23.6 23.6
Falling step 18.0 18.0
Single impulse 21.6 21.6
Reset state 20.0 20.0
Absolute tolerance1e-9 °C

Simulation

Raw sensor Filtered
Simulated temperature filtering: raw and filtered signals A synthetic temperature signal steps from 20 to 25 °C at one second, with deterministic noise. The generated C filter reduces fluctuations and introduces a response lag. 301 samples at 10 ms. 2724 2118 01 23 s °C
Input 20 → 25 °C + noise

Previews are for illustrative purposes only.

Designed for
AutomotiveRoboticsIndustrial Automation

Start Designing Today

No install required. Open your browser and build your first system.

Want the native desktop app?

Join the waitlist for early desktop access

By joining, you ask us to manage your waitlist registration and referral progress under our Privacy Policy and Terms. Unrelated promotional or marketing email requires a separate opt-in.