======================= Exchangeable components ======================= * :ref:`dev_guide_input` * :ref:`dev_guide_qa` * **Estimation component** * :ref:`dev_guide_search` * :ref:`dev_guide_output` .. image:: ../images/components/component_overview_estimation.png :alt: Estimation component overview .. _dev_guide_estimation: Estimation component ==================== .. note:: The Estimation component is not customizable yet. The *Estimation* component is used by the framework to generate statistics of the circuits generated during the approximation process. Statistics of interest are, for example, *area*, *delay*, *power*, *energy*, and *error*. These statistics can either be directly used or incorporated into a heuristic to compare circuits with each other. This information can then guide the search to improve the target metric. CIRCA currently invokes ABC's *if* command to synthesize a circuit and to obtain estimations about *area*, *delay*, and *power dissipation due to switching*. Functions ========= .. .. todo:: Add links to function documentations ``estimateCircuitStats(nodes: List): None`` ------------------------------------------------- This method implements the main functionality of the *Estimation* stage. It is called each time the approximation stage yields another set of approximated circuits. As for all stages, the circuits are represented by their ``Node``\ s, hence the parameter of the method is a list of ``Node`` instances. Every ``Node`` has a parameter called ``stats`` which contains a dictionary. Initially, this dictionary is empty, and it is this method's task to fill in useful statistics in the form of key-value entries like ``"statName": statValue`` where ``statName`` is one of the supported metrics and ``statValue`` is its value of type ``float``, or ``None`` if no value for this metric was found. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :ref:`Back to the Developer Guide `