CIRCA is an open-source framework for the automatic generation of approximate circuits. Designed to be flexible yet consistent, CIRCA clearly separates the different tasks required for a circuit approximation process from each other. 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 allows for the implementation of iterative, search-based approximation processes and comprises three stages: the input stage, the QUAES stage, and the output stage. The QUAES stage forms the core of CIRCA and bundles four important processing blocks: Quality Assurance, Approximation, Estimation, and Search Space Exploration. Each block fulfills one specific task and communicates with the other blocks via well-defined interfaces.
CIRCA includes input and the output stages that frame the QUAES stage and ensure the compatibility to external tools invoked before or after the approximation process, for example to identify subcircuit candidates for approximation or synthesize approximated circuits to different target technologies.
CIRCA is highly parametrizable via a configuration file that determines the employed functionality of each stage and block. This configurability allows for the swift exchange of functionality such as approximation techniques, search methods, or validation techniques. By its configurability and modular structure, the framework supports trying out new ideas in Approximate Computing and conducting comparative experiments.