Summary of Schematic Editor Operations
ISSIE features developed over several years to help you create readable schematics very quickly.
Keys below are given for Windows and Linux. On macOS
Ctrlis usuallyCmd, and a few chords differ. The authoritative list for your platform is generated from the code: press Info → Keyboard Shortcuts. The same actions are also on the Edit and View menus, and on the right-click menus, each labelled with its key.
Placing and editing components
Feature |
How |
Explanation |
|---|---|---|
Place a component |
Click it in the Catalogue, then click the canvas — or drag it straight from the Catalogue and drop it where you want it |
While you drag, a ghost of the real symbol follows the cursor. A drop onto space already occupied by another symbol is refused rather than overlapping them |
Component tooltips |
Hover any Catalogue entry, or any field label in Properties |
Every component explains what it is for, and every field explains what it sets, and gives you immediate explanatory error feedback |
Find a component |
Type in the Catalogue's search box |
Matches the explanations as well as the names, so "subtract" finds the N bits XOR. Sections holding a match open themselves |
Size-to-fit |
|
Most often used keyboard shortcut: zooms and centres the schematic so it all fits on screen |
Zoom the canvas |
|
|
Pan the canvas |
|
|
Rotate and flip components |
|
Also on the Edit menu and on a component's right-click menu |
Undo / redo |
|
|
Copy / paste |
|
Duplicates keep the label with an incremented number. Works across sheets |
Paste as array |
on-screen button or |
Quickly create horizontal or vertical copies of any selected circuitry |
Move a component's label |
Drag the label; |
|
Change port location on custom components |
Use Move ports on the component's right-click menu and drag ports to rearrange |
Custom components can have a lot of ports; move them to make a readable symbol |
Resize a custom component |
Use Resize symbol on its right-click menu and drag a corner, or set |
Auto-sizing keeps port legends from overlapping; override it when you want a particular shape |
Change anything about a component |
Select it and use the Properties tab |
Labels, bus widths, number of gate inputs, MUX input order, optional adder/counter ports, memory contents, Verilog source |
Align / distribute |
|
Same-type components in the selection are aligned or evenly spaced; other types are left alone |
Rotate or scale a block |
Drag a selection rectangle, then use the handles on the selection box |
|
Snapping |
Automatic while dragging |
A symbol sticks to the edges of other symbols, and to the positions that make its wires straight |
Wires and connections
Feature |
How |
Explanation |
|---|---|---|
Auto-routing with fixed segments |
Automatic |
Issie will nearly always route and separate all schematic connections neatly with no manual routing required. Any wire segment can be manually dragged to a desired position and "fixed", with other segments and wires auto-routed around it |
Unfix a wire |
Right-click the wire → Unfix Wire |
Returns a hand-routed wire to auto-routing |
Separate manual routing / redraw all |
Edit menu |
Applies the auto-routing and separation to everything, or keeps manual routing |
and spreads it out evenly |
| Wire type | View → Wire Type | Jump, Radiussed or Modern wires. Purely a display choice — choose what you prefer |
| Wire arrows | View → Toggle Wire Arrows | Show the direction of signals at wire end-points |
| Net labels | Catalogue → Input / Output → Net Label | Every net label with the same name is one net, joined without wires. Use for long connections and high fan-out. Exactly one label in a same-name set must be driven - all other labels follow it |
| Terminate an unused output | Not Connected component, or a Viewer | Issie will otherwise report the dangling output — and offer to insert the Not Connected for you |
Sheets, hierarchy and the project
Feature |
How |
Explanation |
|---|---|---|
Custom components |
Catalogue → |
Any design sheet can be placed in another sheet, any number of times |
Design hierarchy tree |
The Sheet menu |
The whole project drawn as a tree with connector lines, showing which sheet contains which. The same tree appears in the waveform simulator |
Sheet right-click menu |
Right-click a sheet in that tree |
Rename, Duplicate, Delete, Save as library component, Write design as Verilog — and Set as top only where two designs share a sheet and disagree about its parameter values, which is the one case where the choice settles anything |
Add a description to a sheet |
De-select everything, open Properties, click |
The description appears against the sheet as an ⓘ button, and is shown in Properties wherever the sheet is used as a custom component |
Sheet parameters |
Properties with nothing selected → |
Named integer parameters, used in arithmetic expressions for bus widths and constants. Each instance of the sheet supplies its own values. Memory address and word widths are not yet parameterisable. See Parameter System |
Component libraries |
Catalogue → |
Ready-made parameterised components. Choosing one copies its sheet into your project and asks for its parameter values, so it stays an ordinary editable sheet |
Array components |
Catalogue → |
Advanced feature. Write a design sheet that is copied as an array component. Special components create carry chains, multiplexed or concatenated outputs, etc. The equivalent of a Verilog for loop. |
Export a library |
Right-click a library in Catalogue → |
Copies it to a folder you choose, as a subdirectory named after the library — created if it is not there, brought up to date if it is. What lands is the library: a component you have since deleted goes from the copy too |
Create or use a library |
|
A folder of |
Import a sheet |
|
Copy a sheet, or set of sheets, in from another project |
Project browser |
|
An in-app file browser: the projects inside a folder are listed and can be opened with the arrow keys and |
Automatic backups |
Automatic |
Every sheet is continuously snapshotted into a |
Simulation, appearance and help
Feature |
How |
Explanation |
|---|---|---|
Step simulation |
|
Set inputs and read outputs immediately. |
Truth table for combinational logic |
|
For a full sheet, or for just the components you select. Reduce it with input constraints, hidden columns, redundancy removal, or algebraic inputs |
Waveform simulation |
|
See Features for what it can do |
Add waveforms from the schematic |
Right-click a component while a wave simulation is running → Add waveforms to viewer |
|
Read a value off the schematic |
Rest the mouse on a wire while either simulator is running |
The value that wire carries appears beside the pointer — at the waveform cursor's cycle, or at the step simulator's current clock tick — in that simulator's radix. Nothing is shown for a wire on a sheet the simulation holds more than one copy of, since there would be no single answer |
Themes |
|
|
Grid |
|
|
Right-click context menus |
Right-click a component, a custom component, a wire, the canvas, a sheet in the tree, or the project path |
Each offers exactly the actions that apply there, labelled with their shortcuts |
Keyboard shortcuts |
Info → Keyboard Shortcuts |
Generated from the same table the app dispatches keys with, for your platform, so it is always correct |
Errors |
Automatic |
Every error names what is wrong and how to correct it, highlights the components and connections responsible on the canvas, and where the fix is unambiguous offers a button that applies it and restarts the simulation |
Why the wire display types look different
Wires can be drawn as radial, modern or old-style jump; switching between them at any time changes nothing about the design. Radial is usually the most readable: a bend is drawn as a small quadrant, which distinguishes a wire crossing another from a wire joining it, so connectivity can be followed by eye. A bend is squared off only where the straight run beside it is too short to fit the radius.
How wires are routed and then separated across the sheet — and why a segment has a signed length and no position — is described in How a wire gets its shape.
Why symbols are the size they are
A custom component is sized from its ports: its height comes from whichever of the left and right
edges carries more ports, and its width from the longest port labels on the top and bottom edges
together with the component's own label. Ports on one edge are always equally spaced. This is what
keeps port legends from overlapping as you move ports between edges. Use Resize symbol on the
right-click menu, or the Width Scale and Height Scale fields in Properties, to override it.