Core Concepts
Conceptsstable

Core Concepts

Understanding blocks, signals, data flow, and the SimFusion architecture

Core Concepts

Understanding the fundamental concepts behind SimFusion's visual programming model.

The Block Paradigm

SimFusion uses a dataflow programming model where computation is represented as a directed graph of connected blocks.

Types of Blocks

Source Blocks

Generate or import data into the system:

  • Signal generators (sine, square, noise)
  • File readers (CSV, JSON, Excel)
  • Live data streams (MQTT, IoT feeds)
  • Database connectors

Processing Blocks

Transform and analyze data:

  • Mathematical operations (add, multiply, FFT)
  • Filters (low-pass, high-pass, Butterworth)
  • Statistical analysis (mean, variance, correlation)
  • Machine learning inference

Sink Blocks

Output or visualize results:

  • Real-time plots and charts
  • File writers
  • Live data streams
  • Cloud exporters

Signals and Data

NDArray-First Design

SimFusion is built around N-dimensional arrays (tensors) as the primary data type:

# Example: 3-channel audio signal
shape: (3, 1024)  # (channels, samples)
dtype: float64

Data Types

TypeDescriptionExample
scalarSingle value3.14159
vector1D array[1, 2, 3, 4, 5]
matrix2D arrayImage data, spectrogram
tensorN-D arrayVideo (frames, height, width, channels)

Data Flow

Execution Model

  1. Discrete-time: Models advance sample by sample on a simulation clock
  2. Push-based: Data flows from sources to sinks
  3. Vectorized: Operations apply to entire arrays

Sample Rate and Timing

  • Each signal carries a sample rate metadata
  • Blocks can upsample, downsample, or resample
  • Real-time execution maintains timing constraints

Projects and Workspaces

Project Structure

MyProject/
├── model.sdl           # Main model file
├── blocks/
│   ├── custom_block.py
│   └── helpers.cpp
├── data/
│   └── input.csv
└── config.yaml

Project History

  • Track changes to models and custom blocks
  • Restore earlier snapshots of your project

Execution Modes

Simulation Mode

  • Run discrete-time simulations on virtual time
  • Fast-forward, pause, rewind
  • Ideal for development and testing

Debugging a Simulation

  • Set breakpoints at a time (in seconds) or at an exact sample
  • Inspect any block's buffers at the paused point
  • Every block is well documented — check its docs right from the project workspace

Further Reading

Help us improve

Found an issue or have a suggestion?