Digital logic circuit rendering engine.
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.
- 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.
npm install logidromYou 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);| Symbol | Gate |
|---|---|
& |
AND |
~& |
NAND |
| |
OR |
~| |
NOR |
^ |
XOR |
~^ |
XNOR |
= |
BUF / Input |
~ |
INV / NOT |
+ |
Adder / Add |
- |
Subtractor / Sub |
* |
Multiplier / Mul |
? |
MUX (multiplexer) |
$dff |
D flip-flop |
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));- Node.js (v18+)
- npm
git clone https://github.com/drom/logidrom.git
cd logidrom
npm installnpm testnpm run prepublishThis will generate build/logidrom.js.
MIT License. See LICENSE.md for details.