Logimu: Circuit & logic gate simulator

Related tags

Utilities logimu
Overview

Logimu: Circuit & logic gate simulator

The main goal of Logimu is to simulate large circuits at a high speed.

Features

  • Live simulation
  • Embed other circuits in the form of ICs
  • Embedded tests in a LISP dialect

Building

To build Logimu, you will need a nightly Rust compiler. Follow the instructions here. Then, run this:

rustup toolchain add nightly

Then go the the directory and build with

cargo +nightly build --release

You can then run the project with cargo +nightly run --release or by running the binary in target/ directly.

Screenshot

GUI example

Comments
  • Direction of the components as a part of component configuration

    Direction of the components as a part of component configuration

    If the direction was a part of options as in Logisim, I'd say it'll improve UX. A handle near the component to rotate it will work nicely, too. Both can be mixed and help users grasp the logimu faster.

    opened by 6r1d 0
  • Simulator debugging + fix redundant program generation

    Simulator debugging + fix redundant program generation

    • When enabling simulator debugging, dirtied components are marked with a red dot.
    • The program was being regenerated even if the circuit did not change. An extra check to prevent this has been added.
    opened by Demindiro 0
  • Don't open /tmp/ok.logimu, implement

    Don't open /tmp/ok.logimu, implement "New"

    /tmp/ok.logimu was useful in very early versions but is no longer necessary or wanted.

    The "New" button was still unimplemented. It changes the current file path along with "Save as".

    opened by Demindiro 0
  • Fix incrementing input being clamped at max value

    Fix incrementing input being clamped at max value

    Clicking an input with the middle mouse button naively incremented the output. The output may overflow but got clamped by the I/O editor.

    This patchmakes the relevant code wrap the value around if it overflows.

    opened by Demindiro 0
  • Limit input and output range based on bit count

    Limit input and output range based on bit count

    Limits the range of possible input values to [0, (2^n)-1] where n is the bit width of the input. This only changes the behavior of the "Inputs & Outputs" gui dialog.

    Screenshots

    Previous behavior (allows any value, but applies a mask): before

    Modified behavior (limits the range, but the value is still masked): after

    Notes

    • If the value is guaranteed to never go out of range, applying a mask becomes redundant.
    • This range is meant to limit the possible bit sequences rather than values. E.g., say we have a 5 bit input. The allowed range then becomes 0..=31. This corresponds to all possible bit sequences of this input: 00000, ..., 11111. These bit sequences can, however, represent many different numerical ranges (or non at all), based on what encoding is used. ([0, 31] as unsigned integer, but [-16, 15] in two's complement) So in order to account for this in the future, it might be necessary to modify the range before setting it on the gui element.
    opened by jonatcln 0
  • Package requirements

    Package requirements

    Hello, I've tried to build fresh logimu in Docker and it failed several times until I installed some packages.

    I don't know Cargo well, but if it can detect the distro and recommend to install packages, that'd be great. Otherwise, those could be added in the README.md, so the whole build process is shortened with the length of packages to be installed.

    Anyway, there's my list for now:

    • pkg-config
    • libcairo-dev
    • libpango1.0-dev
    • libgtk-3-dev
    • libxcb-shape0
    • libxcb-xfixes0
    • libxcb-shape0-dev
    • libxcb-xfixes0-dev

    What is the preferable solution?

    opened by 6r1d 2
Releases(v0.1)
Owner
David Hoppenbrouwers
Not a duck, but I do quack from time to time.
David Hoppenbrouwers
Soufflé is a variant of Datalog for tool designers crafting analyses in Horn clauses. Soufflé synthesizes a native parallel C++ program from a logic specification.

Welcome! This is the official repository for the Soufflé language project. The Soufflé language is similar to Datalog (but has terms known as records)

The Soufflé Project 672 Dec 29, 2022
A Rust library that implements the main lightning logic of the lipa wallet app.

lipa-lightning-lib (3L) Warning This library is not production ready yet. Build Test Start Nigiri Bitcoin: nigiri start --ln The --ln flag is not stri

lipa 9 Dec 15, 2022
Propositional logic evaluator and rule-based pattern matcher

Plogic Propositional logic evaluator and pattern transformer written in Rust. Plogic evaluates logic expressions in a REPL (Read, Execute, Print, Loop

Jan 17 Nov 25, 2022
μLA: Micro Logic Analyzer for RP2040

μLA: Micro Logic Analyzer SUMP/OLS compatible logic analyzer firmware for RP2040 based boards. Features 16 channels 100 MHz sampling rate, 1 sample pe

Vitaly Domnikov 197 Apr 19, 2023
An n-tuple pendulum simulator in Rust + WebAssembly (and JavaScript)

An n-tuple pendulum simulator in Rust + WebAssembly (and JavaScript) Remaking this n-tuple pendulum simulator moving the math to Rust ?? and WebAssemb

Travis Taylor 27 Feb 19, 2022
Embedded-hal simulator.

hal-sim - embedded-hal Simulator (WIP - UNFINISHED) This crate simulates a small portion of the embedded-hal traits. Namely: GPIO ADC Additionally, it

null 6 Jan 29, 2023
Rusty Hell's Gate / Halo's Gate / Tartarus' Gate and FreshyCalls / SysWhispers1 / SysWhispers2 / SysWhispers3 Library

Hell's Gate / Halo's Gate / Tartarus' Gate and FreshyCalls / SysWhispers1 / SysWhispers2 / SysWhispers3 in Rust I named this project Mordor because He

null 133 Dec 26, 2022
Damavand is a quantum circuit simulator. It can run on laptops or High Performance Computing architectures, such CPU distributed architectures or multi GPU distributed architectures.

Damavand is a quantum circuit simulator. It can run on laptops or High Performance Computing architectures, such CPU distributed architectures or multi GPU distributed architectures.

MichelNowak 0 Mar 29, 2022
Damavand is a quantum circuit simulator. It can run on laptops or High Performance Computing architectures, such CPU distributed architectures or multi GPU distributed architectures.

Damavand is a code that simulates quantum circuits. In order to learn more about damavand, refer to the documentation. Development status Core feature

prevision.io 6 Mar 29, 2022
A mod loader for Baldur's Gate 3

Yet-Another-BG3-Mod-Loader This is a native mod loader for Baldur's Gate 3 The main features of this mod loader are: It does not modify any original g

Cherry 3 Oct 17, 2023
R1CS circuit for Falcon signature verification.

Falcon R1CS This crate generates the R1CS circuit for Falcon signature verifications. Performance The total #constraints for a single Falcon-512 signa

zhenfei 2 May 17, 2022
zkSnark circuit compiler

Quickstart ==> Get started here ℹ Important deprecation note The old circom compiler written in Javascript will be frozen, but it can still be downloa

iden3 679 Jan 9, 2023
Android / iOS app with shared Rust logic

Rust core for native Android and iOS apps [TODO iOS badge] This is an example that shows how to use a shared Rust core in native Android and iOS apps.

Ivan Schütz 193 Dec 5, 2022
A library in Rust for theorem proving with Intuitionistic Propositional Logic.

Prop Propositional logic with types in Rust. A library in Rust for theorem proving with Intuitionistic Propositional Logic. Supports theorem proving i

AdvancedResearch 48 Jan 3, 2023
The module graph logic for Deno CLI

deno_graph The module graph/dependency logic for the Deno CLI. This repository is a Rust crate which provides the foundational code to be able to buil

Deno Land 67 Dec 14, 2022
Soufflé is a variant of Datalog for tool designers crafting analyses in Horn clauses. Soufflé synthesizes a native parallel C++ program from a logic specification.

Welcome! This is the official repository for the Soufflé language project. The Soufflé language is similar to Datalog (but has terms known as records)

The Soufflé Project 672 Dec 29, 2022
Compiler for an "extended" version of the Mindustry logic language

Minblur Compiler Minblur is a compiler for a superset of "logic" programming language in the game Mindustry. It helps reduce code-duplication, making

Binder News 15 May 2, 2022
Android / iOS app with shared Rust logic

Rust core for native Android and iOS apps [TODO iOS badge] This is an example that shows how to use a shared Rust core in native Android and iOS apps.

null 193 Dec 5, 2022
Jsonptr - Data structures and logic for resolving, assigning, and deleting by JSON Pointers

jsonptr - JSON Pointers for Rust Data structures and logic for resolving, assigning, and deleting by JSON Pointers (RFC 6901). Usage Resolve JSON Poin

Chance 38 Aug 28, 2022
high (er) level language and compiler targeting the mindustry logic language

Copper Copper is a high level language and compiler that compiles to mindustry logic. The syntax is similar to rust, with some differences. (these wil

Rowan 2 Jun 27, 2022