This is a WIP Beta version. All content is subject to change.
Welcome to CIRCA’s documentation!¶
CIRCA is a framework for the automatic generation of approximate circuits. CIRCA is designed to be a flexible yet consistent framework in which the processing tasks in an approximation process are clearly separated from each other. In this way, CIRCA provides a general and modular design, facilitates the implementation of new functionality, and fosters comparative studies as well as the evaluation of new techniques against existing ones.
CIRCA comprises of three stages: the input stage, the QUAES stage, and the output stage. The input and the output stage frame the QUAES stage - the main approximation process - to ensure compatibility to tools invoked before or after the approximation process. An interface for external tools provides compatibility to other tools during the approximation process, e.g. Yosys.
The QUAES stage targets search-based approximation processes. Thus, we modeled the approximation process as an iterative search problem. The QUAES stage, i.e., the approximation process itself, comprises four processing blocks: Quality Assurance, Approximation, Estimation, and Search Space Exploration. Each block fulfills one specific task and is communicating with other blocks via well-defined interfaces. The employed functionality of each stage or block during an approximation process is configured using a configuration file. The configuration file allows the swift exchange of functionality and enables the comparison of different approximation techniques, search methods, or validation techniques against each other, encouraging the Approximate Computing community to compare their approaches fairly against each other.
- Getting Started with CIRCA
- User Guide
- Basic usage
- Configuring CIRCA
- Built-in component implementations
- Example configuration
- Developer Guide
- Important data structures and classes
- Exchangeable components
- Extensible components
- External programs and frameworks
- CIRCA Source Code
- base package
- ext_tools package
- runtime package
- stages package
- utils package