Logic
Place and route tools at some point need to deal with the logic behaviour of components (e.g. standard-cells). Especially when the netlist is changed to reach timing constraints the algorithm must somehow understand the logic behaviour of the circuit in order to preserve it. An other example is timing-analysis where delays of a gate depend on the values of other inputs. Somehow the time-analysis algorithm needs to be able to compute this values to choose good estimates of the delays.
There are different types of logic commonly used in EDA software:
- Two-valued logic (boolean logic) with values
LOW
andHIGH
. - Three-valued logic with values
LOW
,HIGH
andUNKNOWN
. - 4-valued logic (IEEE 1364), with values
LOW
,HIGH
,UNKNOWN
,HIGH_IMPEDANCE
- 5-valued logic (D-algebra), with values
0
,1
,D
,D'
,X
. - 9-valued logic (IEEE 1164, less likely to be used in physical synthesis)
An example for usage of a 5-valued logic are automated test-pattern generators (ATPG). The 'D-algorithm' uses the 'D-algebra' to understand how manufacturing errors can be detected in a circuit.
TBD
- To allow useful abstractions
libreda-logic
defines traits for dealing with logic.