cell
- Any of keys under
cells
can be omitted from cell entries by instead specifying them in thesettings.cell_defaults
. CharLib automatically merges any key-value pairs fromsettings.cell_defaults
to each cell entry when characterizing the cell. If a key appears in a cell’s entry, and in
cell_defaults
, the value in the cell entry overrides the value fromcell_defaults
.
- Required keywords:
netlist, models, inputs, outputs, functions, slews, loads, simulation_timestep
- Allowed keywords:
area, clock, clock_skew, flops, footprint, functions, hold_time_range, inputs, loads, models, netlist, outputs, plots, reset, set, setup_time_range, simulation_timestep, slews
area
The physical area occupied by the cell layout, specified in um^2
.
- type:
float
orint
- default:
0
clock
The clock pin name and edge direction. The format is: <edge_direction> <clock_pin_name>
, where edge_direction
can be one of: posedge
or negedge
. E.g. posedge CLK
or negedge CKB
.
- type:
string
- pattern:
^(posedge|negedge) [a-zA-Z0-9_]+
clock_skew
The slew rate to use for the clock signal in simulation. For sequential cells only. Unit is specified by settings.units.time
.
- type:
float
orint
flops
A list of storage element names. These are the names of flip-flops that Charlib puts under ff
keyword in the generated liberty file
- type:
array
Every element of flops is:
- type:
string
footprint
Footprint of the cell as placed into the liberty file.
- type:
string
functions
A list of verilog functions describing each output as logical function of inputs. Shall be in the same order as outputs
- type:
array
Every element of functions is:
- type:
string
hold_time_range
A list of margins to be used when characterizing hold time.
- type:
array
Every element of hold_time_range is:
- type:
float
orint
inputs
A list of input pin names as they appear in the cell netlist.
- type:
array
Every element of inputs is:
- type:
string
loads
A list of output capacitive loads to characterize. Unit is specified by settings.units.capacitive_load
.
- type:
array
Every element of loads is:
- type:
float
orint
models
- A list of paths to the spice models for transistors used in this cell’s netlist. If omitted, CharLib assumes each cell has no dependencies.
Using the syntax
path/to/file
will result in.include path/to/file
in SPICE simulations.Using the syntax
path/to/dir
will allow CharLib to search the directory for subcircuits used in a particular cell and include them using.include path/to/dir/file
.Using the syntax
path/to/file section
will result in.lib path/to/file section
in SPICE simulations.
- type:
array
Every element of models is:
- type:
string
netlist
The path to the spice file containing the netlist for this cell.
- type:
string
outputs
A list of output pin names as they appear in the cell netlist.
- type:
array
Every element of outputs is:
- type:
string
plots
A string, or list of strings specifying which plots to show for this cell.
May satisfy any of the following definitions:
0
- const:
all
1
- const:
none
2
- type:
array
Every element of 2 is:
Allowed values:
io
delay
energy
reset
The asynchronous reset pin name, and edge direction. For sequential cells only. If omitted, CharLib assumes the cell does not have a reset pin. The format is <edge_direction> <pin_name>
. Where edge_direction
can be one of: posedge
or negedge
. E.g. posedge AR
defines active high reset pin.
- type:
string
- pattern:
^(posedge|negedge) [a-zA-Z0-9_]+
set
The asynchronous set pin name, and edge direction. For sequential cells only. If omitted, CharLib assumes the cell does not have a set pin. The format is <edge_direction> <pin_name>
, where edge_direction
can be one of: posedge
or negedge
. E.g. negedge AS
defines active low set pin.
- type:
string
- pattern:
^(posedge|negedge) [a-zA-Z0-9_]+
setup_time_range
A list of margins to be used when characterizing setup time.
- type:
array
Every element of setup_time_range is:
- type:
float
orint
simulation_timestep
The simulation timestep. The unit is specified by settings.units.time
.
- type:
float
orint
slews
A list of input pin slew rates to characterize. Unit is specified by settings.units.time
.
- type:
array
Every element of slews is:
- type:
float
orint