Clean Up Your Circuits: Tunnels and Splitters in Logisim-evolution
Every beginner circuit looks fine until it grows: wires cross the whole canvas, the clock line snakes around three components, and moving one gate breaks five connections. Tunnels and Splitters (both in the Wiring library) fix this. They are the difference between a schematic you can read and one you abandon.
Tunnels: wireless wires with names
A Tunnel is a named connection point. Any two tunnels with the same label are connected, as if an invisible wire ran between them. Labels are case-sensitive.
- Place a Tunnel where a long wire starts (for example, at the Clock output). In its attributes, set Label to
clk. - Place another Tunnel at the destination (the Counter’s clock pin) and give it the same label
clk. - Delete the long wire between them. The circuit behaves exactly as before — verify by running the simulation.
Good candidates for tunnels: the clock, the global reset, and carry signals that jump between digits — the digital clock carry chain is a textbook case. Keep local, point-to-point wires as real wires; a schematic where everything is a tunnel is just as unreadable as spaghetti.
Splitters: break buses into wires (and back)
A Splitter converts between one multi-bit bus and several narrower wires. Its attributes control the mapping: Bit Width In (the bus side) and Fan Out (how many branches).
- Place a Splitter. Set Bit Width In to 8 and Fan Out to 8 — you now have one 8-bit bus on one side and eight 1-bit wires on the other.
- Wire an 8-bit Counter output into the bus side. Attach an LED to each 1-bit branch: you can watch individual bits toggle.
- Change Fan Out to 2: the splitter now produces two 4-bit nibbles — high and low half of the byte. The Bit x attributes decide which bus bits go to which branch.
Splitters also work in reverse: several narrow wires in, one bus out. That is how you assemble a 16-bit address from two 8-bit halves.
The mistakes everyone makes
- Typo in a label:
Clkandclkare different tunnels. A mislabeled tunnel silently disconnects — the wire just stops working with no error. When a tunnel-fed component goes dead, check the label spelling first. - Tunnels hide direction: nothing stops you from driving the same label from two outputs, which creates a conflict (shown in orange). One driver per label.
- Splitter bit order: branch 0 takes the lowest bits by default. If your nibbles come out swapped, check the Bit x attributes before rewiring everything.
Go further
Big designs are where this pays off: Building a Simple CPU routes buses between the datapath and the control unit almost entirely with tunnels and splitters. Rebuild one of your messy early circuits using tunnels for the clock and reset lines — you will feel the difference immediately.
