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
| Type | Description | Example |
|---|---|---|
scalar | Single value | 3.14159 |
vector | 1D array | [1, 2, 3, 4, 5] |
matrix | 2D array | Image data, spectrogram |
tensor | N-D array | Video (frames, height, width, channels) |
Data Flow
Execution Model
- Discrete-time: Models advance sample by sample on a simulation clock
- Push-based: Data flows from sources to sinks
- 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
- Block System — Detailed block documentation
- API Reference — Programmatic access
Help us improve
Found an issue or have a suggestion?