Home

Awesome

NPM version Linux MacOS Windows TUTORIAL

REQuest ⇄ ACKnowledge

JavaScript Tool set to construct, transform and analyze digital circuits based on elastic transactional protocol and Request-Acknowledge handshake.

User describes circuit JavaScript API, add standard components from the library, or create new componets.

Several standard controllers provided.

User can transform constructed circuit by changing buffer capacity or performing other correct by construction transformations.

Usage

The package can be installed from npm:

npm i reqack

and imported into your JavaScript code:

const reqack = require('reqack');

A circuit can be constructed this way:

const g = reqack.circuit('circuit_name');

A node can be constructed by calling the circuit function. Optional node_label string will be used as standard or custom operation or as a root of a signal name.

const node1 = g('node_label');

A edge can be constructed by calling the node function. Optional argument is an Object with two major properties (width, capacity).

const edge1 = node1({width: 32, capacity: 1});

One node can be connected to another node by calling edge with a destination node.

edge1(node2); // -> edge1

Resulted Verilog RTL can be produced by calling

const verilogString = reqack.verilog(g, {});

SVG image can be rendered by calling

const svg = reqack.svg(g);

Testing

npm i
npm test

License

MIT LICENSE