UNPKG

fcircuit-core

Version:

Core library for functional circuit modeling and simulation.

96 lines (61 loc) 1.84 kB
# FCircuit Core **fcircuit-core** is a JavaScript library for modeling **Function Element Circuits with delay**. It provides base classes and node implementations for building and simulating circuits such as fcircuit, IG, MIG, and AIG. --- ## Installation ```bash npm install fcircuit-core ``` --- ## Quick Start ```js import { Circuit, IG, MIG, AIG } from "fcircuit-core"; // Example: initialize a circuit const circuit = new Circuit(); circuit.parseCircuit(jsonData, 1); circuit.initializeCircuit(); circuit.simulateCircuit(); ``` --- ## API Overview ### Core Classes * **Circuit** base class for circuit modeling and simulation. Main methods include: * `validateCircuit(circuit, circuitNumber)` * `parseCircuit(jsonData, circuitNumber)` * `findAllRoots()` * `findAllPaths()` * `simulateCircuit(depthsDict)` * `calculateOutput()` * `calculateDelay(stateHistory)` * **IG** extends `Circuit`. Specialized logic for IG circuits. * **MIG** extends `IG`. Implements majority-inverter gates. * **AIG** extends `IG`. Implements AND-inverter gates. ### Node Classes * **Vertex** base node class. * **InputElement** input node. * **FunctionalElement** functional element, with methods: * `getInputValues(circuit)` * `computeFunction(circuit, inputValues)` Additional node types are available in: * `ig-nodes.js` (e.g., `ZeroElement`, `InvertElement`) * `mig-nodes.js` (e.g., `MajorityInvertElement`) * `aig-nodes.js` (e.g., `AndInvertElement`) --- ## Utilities * `generate-combinations.js` generates all binary vectors of a given length. --- ## Testing Run unit tests with: ```bash npm test ``` --- ## Project Structure * **src/core/** main circuit and node implementations * **src/utils/** helper utilities * **test/** unit tests --- ## License MIT ---