Skip to content
🔁 elastic circuit toolchain
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
docs
img
lib
rtl
src
test
.gitignore
.npmignore
.travis.yml
LICENSE
README.md
package.json

README.md

Travis Status NPM version 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

You can’t perform that action at this time.