This is an old revision of the document!
xcell: A cell library characterizer
xcell
is a cell library characterizer. It takes in a configuration file (xcell.conf
) and an ACT file that is used to provide the list of cells to be characterized, and runs a large number of SPICE simulations to generate timing and energy tables in the .lib
file format.
Cell definitions
Cells are defined in ACT using defcell
. The ports to cells should only use bool
ean variables, and direction flags should be specified so that tools know which ports correspond to inputs v/s outputs. The following is an example of a buffer cell:
defcell BUFX2 (bool? A; bool! Y) { bool _Y; prs { A => _Y- _Y => Y- } sizing { _Y{-1}; Y{-2} } }
The name of the cell is BUFX2
, with an input signal A
and
an output signal Y
. Internally, the cell also has signal _Y
but
this is not exposed via its port list. The circuit is specified using the production rule syntax, and includes a sizing body that is used to compute the transistor sizes for the circuit.
xcell
can characterize cells that are comprised of combinational gates. It can also characterize cells that include state-holding gates in a limited way. The restriction on state-holding cells is: (i) every input to a state-holding production rule in the cell is combinationally determined from the primary inputs to the cell; (ii) the output of the state-holding gate and/or its inverted version is a primary output of the cell. For these types of cells, xcell
can automatically compute timing arcs that need to be characterized. Characterization entails computing a trajectory, which is a sequence of input changes that includes the timing arc to be characterized (details available).
For more complex cells, the user must specify the characterization trajectory in the xcell.conf
configuration file.
Configuration file
Typically the configuration file is found in the directory where xcell
is to be run, and is named xcell.conf
. This uses the standard ACT configuration file syntax.