cell

Any of keys under cells can be omitted from cell entries by instead specifying them in the settings.cell_defaults. CharLib automatically merges any key-value pairs from settings.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 from cell_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 or int

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 or int

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 or int

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 or int

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 or int

simulation_timestep

The simulation timestep. The unit is specified by settings.units.time.

type:

float or int

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 or int