Tutorial 8 · Design

Design Blocks

9 min read

What you'll learn

  • What a Design Block is and how it relates to a diagram version
  • How to generate a design block interface from one of your diagrams
  • How to control which ports are visible by default on instances
  • How to drop a design block into a parent diagram and wire to it
  • How to keep parent diagrams in sync when the source diagram changes

Prerequisites

  • Complete Tutorial 4: Make your First Diagram — you need at least one working diagram to package as a design block.
  • Complete Tutorial 7: Versioning — design blocks are pinned to a specific version of a source diagram, so understanding draft / snapshot / release matters.
  • It is helpful to have a second diagram open (or be ready to create one) so you can place the block somewhere.

Steps

1Understand what a Design Block is

A Design Block is a reusable subsystem that is tied to a specific version of a source diagram.

  • The inside of the block stays in its source diagram — devices, wires, harnesses, the works.
  • The outside is the interface: the ports and pins that the parent diagram can wire to. It's derived from the devices and connectors in the source diagram — each contributes the ports and pins that are still free (i.e. not already consumed by wiring inside the block).
  • In the Library sidebar, design blocks live in the top-level Design Blocks category, organized into a subfolder named after the source project. Each entry is labeled {diagram name} ({version name}).

This is different from a Group (visual container of items in one diagram) and different from a regular library Device (manually created part). Design blocks are the only library type generated from a diagram instead of created by hand.

2Generate a design block interface

  1. Open the source diagram and the version you want to package.
  2. Click empty canvas so the right pane shows Diagram Properties.
  3. Click the Design Block Interface button.

This opens the Design Block editor in a modal. The header reads Design Block with a cube icon, and the name field shows the diagram name with an italic From Version: {version name} suffix.

Screenshot

Design Block editor modal opened from a diagram showing the From Version label

3Configure the interface

The interface is auto-generated — you don't add ports manually. What you control is what's visible by default when someone drops the block into a parent diagram.

  1. Scroll to the Design Block Pinouts section to see the generated port and pin table. Port names, pin functions, and contact part numbers are read-only here (edit them in the source diagram if needed).
  2. Click the eye icon next to any port or pin row to toggle its default visibility. Hidden-by-default ports still exist — they just don't show on the instance until someone unhides them.
  3. Use the Show Internal Ports checkbox (yellow lightning-bolt icon, shown only when the block has any) at the bottom of the pinouts to reveal internal ports — ports whose pins are partly consumed by wiring inside the source diagram, so only their remaining free pins are exposed and the port is hidden by default. (Ports whose pins are used up entirely by internal wiring aren't surfaced at all, and flying-lead connections come through as ordinary pins on visible ports.)

The general rule: hide noisy internals (e.g. ground rails routed once at the top level) and show the connections your parent diagram will actually wire.

4Save the interface

At the bottom of the editor:

  1. Click Save Changes.
  2. If you want this design block accessible outside of the current project, the footer also shows Add to Library. Click it to add the design block to the Library sidebar. If the design block is only used within the current project, it can be dragged from the diagrams tab directly without needing to be added to the library

Screenshot

Design Block editor footer showing both Save Changes and the Add to Library button

5Place the design block in a parent diagram

Once the interface is saved and promoted, drop it into the diagram that should use it.

Path 1 — Library sidebar (most common).

  1. Open the parent diagram.
  2. In the Library sidebar, expand Design Blocks{Project Name}.
  3. Drag the design block row onto the canvas, or click it (with the diagram tab focused) to drop it at the canvas center.

Path 2 — Diagrams sidebar → Add Design Block to Diagram. Quick when you don't need to find the row in the Library tree.

  1. Make sure the parent diagram is the active tab.
  2. Right-click the source diagram in the Diagrams sidebar → Add Design Block to Diagram.
  3. If multiple versions exist, the Add Design Block to Diagram dialog opens. Pick a version and click Add Design Block to confirm.
  4. A toast confirms Design Block AddedAdded "{name}" to the diagram..

Some errors you might see if something is wrong:

  • No Active Diagram"Please open a diagram first, then try again."
  • Cannot Add"Cannot add a diagram as a design block to itself." (Self-reference is blocked.)
  • Harness editor can't accept library drags — "Can't drag library parts to harness view".

Path 3 — Drag a diagram row. Dragging the diagram itself out of the Diagrams sidebar onto a canvas triggers a placement dialog titled Add Design Block: "{diagramName}" with the same Add Design Block confirm button.

Screenshot

Library sidebar with the Design Blocks category expanded and a block being dragged onto the canvas

6Wire and tune the instance

Each placed instance is its own item with its own port visibility, reference name, and wiring.

  • Wire to it like any device — drag from pin handles on the exposed ports to pins on other devices.
  • Show/hide ports per instance in the right-pane Port Pinouts section using the eye icons. Tooltip toggles between Show port and Hide port. This is independent of the library default — different instances can expose different sets of ports.
  • Show internal ports for just this instance via the Show Internal Ports checkbox in the same property section (it appears only when the block has internal ports).

A placed design block is just a special device — it participates in BOMs, ERCs, nets, and harnesses the same way regular devices do.

7Jump into the source

You don't edit the internals from the parent diagram. To make changes, jump to the source.

  • Selected on canvas — click the Open Source Diagram button (arrow icon, tooltip Open Source Diagram) that appears on the block.
  • In the Properties pane — the Source Version row (combobox placeholder Select source diagram...) has the same Open Source Diagram icon next to it.
  • Per pin — right-click a pin row → Open Source Diagram and Trace Net to land on the corresponding internal pin or net.
  • From the library editor tab (if you opened the design block as a full tab rather than a modal) — click Open Diagram (tooltip Open Design Block ICD).

The source always opens at the pinned version, not "latest".

8Update parents after source changes

Design blocks do not auto-update placed instances.

  • When you edit the source diagram, the library interface for that version auto-rebuilds, but you'll need to pull in those changes into any/all parent diagrams manually. If there are pending changes, the Update from Library button glows orange.

  • Click Update from Library, review the Update from Library ({count}) modal, tick the changes you want, and click Apply Selected Changes. Untouched instances stay at the old interface.

  • To swap an instance to a different version of the source, select the instance, open Properties, and pick a different Source Version from the combobox. Artifact regenerates the library item for that version and triggers an Update from Library for any affected diagrams.

9Multiple instances and multiple diagrams

You can drop the same design block:

  • multiple times in the same parent diagram (each instance has its own reference name and wiring), and
  • in multiple parent diagrams.

All instances share the same library item (pinned to one source version). Editing the source and running Update from Library affects every parent diagram that references that block.

10Tracing nets across the boundary

Open the Nets pane in the parent diagram's left pane (Ctrl/Cmd+Shift+N). Tick Combine Design Block Internal Nets at the top to make net tracing follow connections through the block into the source diagram, so a net that starts in a parent and continues internally shows as one combined net. Leave it unchecked to treat the block as opaque.

11Current design block limitations

  • No expand-to-devices / ungroup. You can't "explode" a placed design block back into its individual devices and wires.
  • Interface is mostly read-only. You can't add, delete, or rename ports/pins in the design block editor — that has to happen in the source diagram.
  • Channels aren't part of a design block interface. Generation builds ports and pins only — channels defined on the source devices aren't exported into the block, and the design block editor hides the Channels section (isDesignBlock). Wire the parent to the block's exposed pins directly.
  • No Create New / Duplicate from the Library — design blocks can only be packaged from a source diagram; they can't be created from scratch in the Library.
  • Only one library editor at a time — the Design Block Interface button shows a toast "An item is already open in the library editor. Please close it first." if you forget to close the prior one.

To remove a design block instance from a diagram, select it and delete it like any other item. To remove the block from the Library entirely, right-click it in the Library → Delete Design Block → confirm. Deleting the source diagram or version does not auto-unlink existing instances.

Summary

You generated a design block interface from a specific diagram version, tuned which ports are visible by default, promoted it into the Design Blocks library category, dropped one or more instances into a parent diagram, wired them, jumped back to the source via Open Source Diagram, and used Update from Library to push interface changes into the parent. Design blocks are the bridge between a single working diagram and a library of reusable subsystems — a snapshot in time of one diagram version that other diagrams can compose.

What's next

Glow effect