logidrom
v1.0.0
Published
Digital logic circuit rendering engine
Readme
logidrom
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 logidromUsage
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 |
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 installRunning Tests
npm testBuilding for Browser
npm run prepublishThis will generate build/logidrom.js.
License
MIT License. See LICENSE.md for details.
