Awesome
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