DEV Community

Integrated Core Systems
Integrated Core Systems

Posted on

Building a Native C++ Engineering Computation Engine

At Integrated Core Systems, we have been developing ICore Blocks, a cross-platform engineering computation platform built around a native C++ computational engine.

The problem we wanted to address is the gap between engineering models and deployable software.

A typical workflow can look like:

Model → Simulation → Code Generation → Compilation → Hardware

We wanted the computational engine itself to participate in that entire workflow.

The computational engine

ICore Blocks uses a graph-based execution model where blocks represent computational operations and signals connect them into executable systems.

The current library contains more than 300 blocks covering:

• Control systems
• State-space models
• Transfer functions
• Signal processing
• Robotics
• System identification
• Machine learning
• Mathematical operations

The engine supports continuous and discrete systems, as well as multi-rate execution.

Beyond the desktop application

The desktop application is only one way of using ICore.

The underlying computational engine can also be accessed through a C++ SDK and operated through scripting and headless execution.

This allows the same computational infrastructure to be used inside engineering applications, automated testing systems, CI pipelines, or other software.

Code generation and verification

A major area of development has been generated-code verification.

Rather than treating code generation as:

Model → Source Code

ICore can perform:

Model → Generate → Compile → Execute → Compare

The generated implementation can therefore be executed and compared against the original simulation.

This creates a direct verification path between the engineering model and the generated implementation.

Deployment targets

ICore currently supports generation for:

• C
• C++
• Python
• MATLAB
• Java
• Rust
• VHDL
• Verilog
• SystemVerilog
• IEC 61131-3 Structured Text

The intention is to keep the computational model independent from the eventual deployment target.

Why build this?

Modern control and robotics engineers increasingly work across several domains at once.

A single project may involve numerical modelling, C++, embedded systems, FPGA development, robotics frameworks, automated testing, and hardware deployment.

At the same time, software engineers working in robotics and embedded systems often need access to control-system and numerical computing functionality.

ICore Blocks is intended to provide a computational layer connecting these areas.

More information:

https://systemsicore.com/

We are interested in feedback from developers and engineers working with numerical computing, control systems, robotics, embedded software, and industrial automation.

Top comments (0)