Graphical block modeling
A canvas with block diagram symbols (ANSI/IEEE 91 logic gates, summing circle, gain), editable wire routes and reusable subsystems.
- Subsystems with instances, each with its own state
- Local signals, input references, probes and terminators
- Copy, paste, group, resize, zoom and a diagram map
State machines
A graphical editor for states and transitions with synchronous automata semantics: strong and weak transitions, actions, forks, restart and resume.
- At most one transition per step
- Unreachable states detected automatically
Simulation and test scenarios
A built-in reference simulator: run step by step or live, and write test scenarios with oracles, row by row.
- Expected values for outputs and probes
- Typed literals: 3, true, [1, 2], {x: 1}
Continuous verification
There is no "verify" button: types, causality, combinational cycles and recursion are checked as you edit, with marks right on the diagram.
- Diagnostics panel with filters and an explanation of every code
- Quick fixes when the correction is obvious
Range analysis
Sound interval analysis for integers: points out operations that may overflow, divisors that may be zero and shifts out of range, even through Unit Delay feedback loops.
C99 code generation
One .c/.h pair per subsystem, only <stdint.h> and <stdbool.h>, no compiler extensions and no timestamps.
- Code preview and export
- Subsystems implemented in C by the integrator
Activation and iterators
Activate If and Activate When blocks, instances with restart and every, and the map, fold, mapfold and forward iterators.
Modular, Git-friendly projects
A .boldproj project plus one .bold file per library. UTF-8 JSON with canonical key order: the same model always saves the same text, and diffs stay readable.
- Import other projects as read-only libraries
Strong types, no surprises
bool, char, int8–int64, uint8–uint64, float32, float64, arrays, structures, enumerations and global constants. Operations never mix types: only Numeric Cast converts.