Skip to content

sw23/logidrom

 
 

Repository files navigation

logidrom

NPM Version Build Status

Digital logic circuit rendering engine.

Overview

logidrom is a JavaScript library designed to render digital logic circuits as high-quality SVG diagrams. It can be used both in Node.js and directly in the browser.

Features

  • Simple JSON API: Define your logic using a straightforward nested array structure.
  • Rich Component Library: Supports a wide range of standard logic gates (AND, OR, XOR, etc.) and complex components (DFFs, MUXs).
  • JavaScript to Logic: Can convert JavaScript expressions into logic diagrams using a built-in AST walker.
  • Customizable Styling: Diagrams are rendered as SVGs and can be styled with CSS.
  • High Performance: Optimized for fast rendering of large circuit diagrams.

Installation

npm install logidrom

Usage

Basic Logic Rendering

You can define a set of assignments where each assignment maps an output to a logic expression.

const logidrom = require('logidrom');
const onml = require('onml');

const source = {
  assign: [
    ['x', ['&', 'a', 'b']],         // x = a AND b
    ['y', ['~|', 'c', 'd', 'e']]   // y = NOR(c, d, e)
  ]
};

const svg = logidrom.renderAssign(0, source);
const svgString = onml.stringify(svg);

console.log(svgString);

Supported Gate Symbols

Symbol Gate
& AND
~& NAND
| OR
~| NOR
^ XOR
~^ XNOR
= BUF / Input
~ INV / NOT
+ Adder / Add
- Subtractor / Sub
* Multiplier / Mul
? MUX (multiplexer)
$dff D flip-flop

JavaScript Expression Rendering

logidrom can also take a JavaScript AST and render it as a logic circuit.

const esprima = require('esprima');
const logidrom = require('logidrom');
const onml = require('onml');

const code = 'x = (a & b) | (c ^ d);';
const ast = esprima.parse(code);

const svg = logidrom.r(ast, { index: 0 });
console.log(onml.stringify(svg));

Development

Prerequisites

  • Node.js (v18+)
  • npm

Setup

git clone https://github.com/drom/logidrom.git
cd logidrom
npm install

Running Tests

npm test

Building for Browser

npm run prepublish

This will generate build/logidrom.js.

License

MIT License. See LICENSE.md for details.

About

💡 Digital Circuit rendering engine

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • HTML 73.9%
  • JavaScript 25.3%
  • CSS 0.8%