BlockWerk Guides

Working with Subsystems

Subsystems let you group related blocks into a single named component. They keep large diagrams manageable by hiding internal complexity behind a clean interface.

Creating a Subsystem

  1. Select the blocks you want to group (rubber-band drag or Ctrl+Click).
  2. Right-click the selection and choose Group into Subsystem.
  3. The selected blocks move inside the new subsystem, and a single Subsystem block appears in their place on the parent canvas.

Defining the Interface

The external ports of a subsystem are defined by two special blocks placed inside it:

  • InPort: Each InPort becomes one input port on the Subsystem block. The signal name you set on the InPort block appears as the port label.
  • OutPort: Each OutPort becomes one output port. Signals flow from the internal diagram out to the parent canvas.

Add more InPort or OutPort blocks inside the subsystem to add ports to the Subsystem block.

Entering a Subsystem

Double-click a Subsystem block to open its internal canvas. The breadcrumb bar at the top shows where you are:

Root > MySubsystem

You can build the internal diagram exactly like the root canvas — add blocks, draw connections, and even nest further subsystems inside.

Navigating Back

  • Press Backspace to go up one level.
  • Click any segment in the breadcrumb bar to jump directly to that level.

Nested Subsystems

Subsystems can contain other subsystems. There is no hard limit on nesting depth, though very deep hierarchies can be harder to navigate. Use descriptive names at each level.

Tips for Clean Subsystems

  • Give InPort and OutPort blocks descriptive signal names — they appear as port labels on the parent canvas.
  • Keep each subsystem focused on a single responsibility (e.g. Controller, Plant, Observer).
  • Use Auto-layout inside the subsystem to keep the internal diagram tidy.
Tip: The Demo tab on the Subsystem block's manual page shows an animated walkthrough of how signals flow in and out of a subsystem.

See Also

  • InPort: Defines an input port of a subsystem.
  • OutPort: Defines an output port of a subsystem.

Simulate in BlockWerk

Interactive sandbox directly in your browser — zero installation, WASM-powered.

Simulate in BlockWerk →