logisim-evolution/logisim-evolution

Overcome the 7bit limit of Combinational analysis

Open

#2.525 aberto em 15 de mar. de 2026

Ver no GitHub
 (2 comments) (0 reactions) (1 assignee)Java (505 forks)batch import
enhancementhelp wantedpri std

Métricas do repositório

Stars
 (3.695 stars)
Métricas de merge de PR
 (Mesclagem média 3d 18h) (47 fundiu PRs em 30d)

Description

I am currently developing a homebrew computer and identified a need for a more efficient way to simplify Sum of Products (SOP) expressions. While Logisim's built-in Combinational Analysis tool is powerful, it faces significant performance issues with higher bit counts—my project, for instance, requires truth tables with over 15 input bits, which often causes the standard tool to hang or take an impractical amount of time.

The Solution: Espresso Logic Minimizer To solve this, I integrated the Espresso logic minimizer into my workflow. Espresso is a world-class heuristic software used for reducing the complexity of digital logic circuits. Unlike the Quine-McCluskey algorithm—which I believe Logisim uses and which grows exponentially in complexity—Espresso uses advanced heuristics to find near-optimal solutions much faster, making it capable of handling dozens of inputs and outputs with ease.

How the Scripts Work I developed a Python-based pipeline to bridge the gap between Logisim and Espresso:

truth_table_to_pla.py: Converts a Logisim Truth Table into the standard PLA format.

Minimization: The Espresso executable processes the PLA file, performing the logic reduction.

pla_to_logisim_sop.py: Interprets the output and generates a .circ file containing the optimized logic.

The resulting circuit can then be easily brought into an existing project using Logisim's "Merge" tool. This allows for a seamless workflow where the complex, optimized logic replaces the original placeholder without manual rewiring.

Proposal I believe integrating this functionality would be a valuable addition to Logisim-Evolution, allowing users to design much more complex CPUs and controllers without hitting the current performance wall. To be clear, the goal is not to re-implement the Espresso algorithm from scratch within Logisim, but rather to enable Logisim to interface with it directly as an external minimizer. This would provide a seamless bridge between Logisim's UI and Espresso's powerful optimization engine.

I am interested in contributing by creating a dedicated branch to explore this integration, but I would first like to gather feedback from the community on this approach.

Note: A portion of this code was developed with the assistance of AI due to the limited time I have to work on the project

Guia do colaborador