Logisim Tutorial

This tutorial walks you through installing, navigating, and troubleshooting Logisim Evolution — the circuit simulator used in all logic lab exercises. Read this before starting any lab.

NotePDF Version

This tutorial was originally created as a PDF. If you prefer a PDF version, you can download it here: Logisim Tutorial PDF.

Setting Up

1. Download Logisim Evolution

Go to the Logisim Evolution releases page and get the latest .jar file (not the .rpm, .msi, .dmg, or .deb — the plain .jar works on all platforms).

The Logisim Evolution releases page — the highlighted .jar file is the one you want.

2. Install Java 16 or Higher

Logisim Evolution requires Java 16 or higher to run. We recommend Adoptium OpenJDK 17.

  • Windows: Download and run the .msi installer.

    Adoptium OpenJDK download page for Windows — select the .msi installer.
  • macOS: Download and run the .pkg installer.

    Adoptium OpenJDK download page for macOS — select the .pkg installer.

3. Run Logisim

Once Java is installed, double-click the downloaded .jar file to launch Logisim Evolution. If your OS warns you about an unrecognized file, you can safely proceed — as long as the JAR came directly from the link above.


Component Library

Wiring

Found under the Wiring folder. The four most-used elements are:

The Wiring folder in the component library panel.

Splitter

Combines or splits wires. Wires in Logisim can represent multiple bits; a splitter lets you break a multi-bit wire into individual (or smaller) groups of bits, or merge them back together.

In multi-bit wires, the MSB (leftmost/highest-numbered bit) is always at the top.

Pin

Introduces inputs to your circuit. Click it with the finger pointer to toggle between 0 and 1. Pins can be configured as input or output pins.

Probe

Reads and displays the current value of any wire in your circuit. Works on multi-bit wires too — useful for debugging.

Tunnel

Creates a named “portal” so you can connect two distant points in the circuit without drawing a long wire. Two tunnels with the same name are electrically connected.

Common options (shown in the lower-left Properties panel when a component is selected):

  • Data Bits — controls how many bits wide the element’s input/output is.
  • Facing — rotates the element to make wiring more concise.

A sample circuit connecting an 8-bit input Pin to a Splitter, Probe, and Tunnel. Try replicating this!

Properties panel for the Pin component (left) and the Splitter component (centre) used in the sample circuit above.

Properties panel for the Tunnel “A” component — note the matching Label is what links two tunnels together.

Gates

Found under the Gates folder. Standard logic gates (NOT, Buffer, AND, OR, XOR, NAND, NOR, XNOR) are all available.

The Gates folder in the component library panel.

Key options per gate:

  • Data Bits — sets the bit width of the gate’s inputs and output.
  • Number of Inputs — sets how many inputs the gate has.

Three 8-bit input Pins connected to a 3-input AND gate, whose output feeds a NOT gate and a Probe.

Properties panel for the AND Gate used above — 8-bit wide, 3 inputs.

Properties panel for the NOT Gate used above — 8-bit wide.

Plexers

Found under the Plexers folder. Includes:

  • Multiplexer (MUX) — selects one of several inputs based on a select signal.
  • Demultiplexer — routes one input to one of several outputs.
  • Decoder — activates one output line based on a binary input.
  • Priority Encoder, Bit Selector

The Plexers folder, containing Multiplexer, Demultiplexer, Decoder, Priority Encoder, and Bit Selector.

For a multiplexer, the Select Bits option determines how many select lines there are, which in turn determines the number of data inputs (\(2^{\text{Select Bits}}\) inputs).

A 4-bit, 2-select-bit MUX choosing among four 4-bit inputs. With select = 01, the second input (0110) is forwarded to the output.

Properties panel for the Multiplexer above — 2 Select Bits give 4 data inputs, each 4 bits wide.

Arithmetic

Found under the Arithmetic folder. Includes ready-made blocks for:

  • Adder, Subtractor, Multiplier, Divider, Negator, Comparator

The Plexers and Arithmetic folders in the component library.

These are useful for higher-level designs without needing to build arithmetic from scratch.


Memory

Found under the Memory folder.

The Memory folder in the component library — Flip-Flops and Register.

Flip-Flops

D, T, J-K, and S-R flip-flops are available for 1-bit sequential storage. Each requires a 1-bit clock input.

Register

A multi-bit storage element — the most commonly used sequential block in these labs. It captures its input on every positive clock edge (when WE = 1). If WE = 0, it ignores the clock and holds its current value.

The WE (Write Enable) input defaults to 1 when left unconnected.

RAM / ROM

Addressable memory blocks. Both the number of address bits and data bits are configurable.

To preset memory contents: right-click the RAM/ROM block → Edit Contents… A hex editor will open. You can also Save the contents to a file and later Load Image… to restore them.

A 4-bit Register: after a positive clock edge, the output Q copies the input D. The clock pin is the triangle at the bottom.

A 256×16 ROM with preset values 0xADE1 and 0xB055 at addresses 0 and 1. The address input is set to 1, so the output shows 0xB055.

Right-clicking a RAM/ROM block reveals Edit Contents, Load Image, and Save Image options.

The hex editor window for entering ROM/RAM contents. Use Save to export to a file; Load Image to restore later.

Input/Output

Found under the Input/Output folder. Includes displays, keyboards, buttons, LED arrays, and more. Try connecting logic to these elements to see your circuits come to life.

A selection of Input/Output components: DIP switch bank, push button, 7-segment display, RGB display, and LED bar graph.

Debugging Common Problems

Logisim uses wire color to indicate the state of every connection. If a wire is not green or black, something is wrong — you cannot simulate correctly until all wires are green or black.

Wire Color Meaning How to Fix
Dark green 1-bit wire carrying value 0 ✓ Normal
Bright green 1-bit wire carrying value 1 ✓ Normal
Black Multi-bit wire ✓ Normal
Red (EEEE) Double-driver conflict — two outputs are trying to drive the same wire to different values Remove the extra connection; only one driver per wire
Blue (uuuu) Floating wire — nothing is driving this wire Connect an output pin, gate output, or input pin to this wire
Orange Width mismatch — wires of two different bit-widths are connected Make sure both sides of the connection have the same Data Bits setting; check tunnel widths too

Accessibility: If you have difficulty distinguishing these wire colors, you can customize them via File → Preferences → Simulation Tab.

Red Wires (Double Driver)

A wire can only carry one value (0 or 1) at a time. When two output ports or input pins are connected together — especially if they drive different values — Logisim shows a red wire. Fix this by ensuring only one driver feeds each wire.

Blue Wires (Floating)

A floating wire has no driver. Connect it to an output from a gate, block, register, or an input pin.

Orange Wires (Width Mismatch)

A black (multi-bit) wire cannot connect to a wire of a different width. Check that all connected elements have matching Data Bits settings, and that any tunnels carrying the signal also have the same width.

Wire color examples: green (normal 0/1), red (double-driver conflict), blue (floating), and orange (width mismatch between a 2-bit and 1-bit wire via MUX).