Datasheet Format¶
Note
Prior to June 2024 CACE used the datasheet version 4.0 text format. This format is now deprecated, please export your datasheet in the new YAML format.
The CACE datasheet contains the specification of your design and other important information. It acts as both documentation for the specifiaction but also as input for CACE.
The following sections describe the structure of the datasheet.
Metadata¶
Example entry:
name: ota-5t
description: A simple 5 transistor OTA
PDK: sky130A
cace_format: 5.0
name: <string>Name of the design (cell name)
description: <string>Description of the design
PDK: <string>Name of the PDK (no spaces)
cace_format: <string>Format version of the datasheet. Current version:
5.2.
Paths¶
The paths section is used to tell CACE where to find certain files of your design or where to generate files for simulation.
Example entry:
paths:
root: ..
schematic: xschem
layout: gds
netlist: netlist
documentation: doc
root: <path>This is the location of the project and the root of all the other paths in this dictionary. Normally it is set to
..to refer to the parent directory ofcace/.schematic: <path>Location of any schematics (xschem) and symbols for the design. The xschemrc should be located here.
magic: <path>(optional)Location of any layout in magic (.mag) format.
layout: <path>Location of any layout in GDS (.gds or .gds.gz) format. Note that any magic layout (if given) will be converted to GDS and saved here.
netlist: <path>Location of all SPICE netlists. This netlist is usually automatically generated by cace, with subdirectories for each netlist type according to the netlist source (see
--sourceoption): “schematic”, “layout” (for LVS), “pex” (C-parasitic extracted layout), and “rcx” (R-C-parasitic extracted layout).documentation: <path>Location for the auto-generated documentation of the design.
runs: <path>(optional)Location for the run directory.
Pins¶
The pins of the design, mainly used for documentation purposes. The names of the pins are checked against the schematic.
Example entry:
pins:
VDD:
description: Power supply
direction: inout
type: power
Vmin: 1.7
Vmax: 1.9
Imin: 0
Imax: 0.01
...
name: <string>The pin name. Must match the name on the schematic or netlist. Vectors should be indexed with “:” and will be expanded when needed. “b7:0” expands to “b7, b6, b5, …” while “b[7:0]” expands to “b[7], b[6], b[5], …” (Note that this is more flexible than the convention for condition names described below.)
description: <string>Text description of the pin. May contain spaces.
type: <string>The type may be one of “digital”, “signal”, “power”, or “ground”.
direction: <string>The direction may be one of “input”, “output”, or “inout”.
Vmin: <number>|<expression>The pin minimum voltage may be a value or may be referenced to another pin; and may be referenced to another pin with an offset (e.g., “vss - 0.3”).
Vmax: <number>|<expression>The pin maximum voltage may be a value or may be referenced to another pin; and may be referenced to another pin with an offset (e.g., “vdd + 0.3”).
Imin: <number>|<expression>The pin maximum sink current -a minimum value if specified as a negative current- may be a value or may be referenced to another pin; and may be referenced to another pin with an offset.
Imax: <number>|<expression>The pin maximum source current may be a value or may be referenced to another pin; and may be referenced to another pin with an offset.
Default Conditions¶
The default conditions under which to evaluate the parameters.
Example entry:
default_conditions:
corner:
display: Corner
description: The corner of the wafer
typical: tt
unit: V
...
name: <string>The name of the condition; this name is meaningful because it will match a variable name used in a schematic or netlist. The representation in the netlist is always ${
} to prevent accidental substitutions of matching strings. Any set of signals can be bundled, but the delimiters for the bundle must be brackets; e.g., b[7:0], with single bits called out as, e.g., b[0]. description: <string>A description of the condition.
display: <string>A short, typically one-word value to display for the condition.
unit: <string>The unit of measure used to display the condition value.
typical: <value>If present, the default typical value of the condition.
maximum: <value>If present, the default maximum value of the condition.
minimum: <value>If present, the default minimum value of the condition.
enumerate: <values>If present, instead of min/typ/max values, the values are enumerated from a space-separated list supplied in
(see above; long lists may be backslash-newline terminated). step: linear|logarithmicIf not present, then only values min/typ/max are evaluated. If present, then values are automatically enumerated from min to max inclusive either in linear (default) or logarithmic progression. If typ exists and is not in the enumeration, then it is evaluated in addition.
stepsize: <value>If not present, then a stepsize of 1 is assumed for linear enumeration or 2 for logarithmic enumeration. Otherwise, the enumeration steps by
additive values for linear enumeration or multiplicative values for logarithmic enumeration.
Parameters¶
Example entry:
parameters:
dc_params:
spec:
a0:
display: DC gain
description: The DC gain of the OTA
unit: V/V
minimum:
value: 50
typical:
value: any
maximum:
value: any
ugf:
display: Unity Gain Frequency
description: The unity gain frequency of the OTA
unit: Hz
minimum:
value: 1e6
typical:
value: any
maximum:
value: any
pm:
display: Phase Margin
description: The phase margin of the OTA
unit: °
minimum:
value: 60
typical:
value: any
maximum:
value: any
tool:
ngspice:
template: ac.sch
format: ascii
suffix: .data
variables: [a0, ugf, pm]
plot:
gain_vs_temperature:
type: xyplot
xaxis: temperature
yaxis: a0
phase_margin_vs_corner:
type: xyplot
xaxis: corner
yaxis: pm
conditions:
corner:
enumerate: [tt, ff, ss] # fs, sf
temperature:
minimum: -40
typical: 27
maximum: 130
description: <string>A global description of the parameter.
display: <string>A global short description to display for the parameter.
unit: <string>The global unit measurement of the parameter. Same format as “unit” for conditions.
spec: <dictionary>The target specification for the parameter (see below).
tool: <list>The tool which is used to run the parameter. It can either be a single name if the default settings are sufficient, or a dictionary with tool-specific settings.
conditions: <dictionary>All the conditions to be applied to the measurement of the parameter that are considered to be fixed with respect to the parameter result (see “variables” below).
variables: <list>Used for specifying
displayandunitattributes for results that are used for plotting.plot: <dictionary>Describes how to make data plots for the parameter (where result is plotted rather than generating a single set of min/typ/max values).
Conditions¶
Example entry:
conditions:
vdd:
typical: '1.8'
vcm:
typical: '0.9'
corner:
enumerate: [tt, ff, ss]
The “conditions” dictionary entries are the same as the
default_conditions dictionary, above. The default_conditions
dictionary is applied to every condition before adding or
overwriting with the specific conditions listed for the
parameter. Conditions are only meaningful when the
condition name exists as a placeholder in the template file.
Specification¶
Example entry:
spec:
area:
display: Area
description: Total circuit layout area
unit: µm²
maximum:
value: 600
width:
display: Width
description: Total circuit layout width
unit: µm
maximum:
value: any
The specification entry specifies the limits for results returned by the tool of the parameter. For example, if a tool returns area and width as a result, then the limits can be defined as seen above. Additionally, display, description and unit can be set per result and overwrite the global values.
minimum: value: <value>|any fail: <bool> calculation: <calculation> limit: <limit>
Specifies the target value for the parameter minimum value. If not specified, then no minimum is measured. If “any” is given as the value, then the minimum is measured but there is no target value. By default, the parameter is marked as failing if the measured value is out of spec. By setting
fail: false, it is not checked agains the limit. Ifcalculationandlimitis specified, then it overrides the default calculation and limit ofminimumandabove.typical: value: <value>|any fail: <bool> calculation: <calculation> limit: <limit>
Specifies the target value for the parameter typical value. If not specified, then no typical is measured. If “any” is given as the value, then the typical is measured but there is no target value. If “fail” is specified as “true”, then parameter is marked as failing if the measured value is out of spec (failing on a typical value is rarely if ever used). If
calculationandlimitis specified, then it overrides the default calculation and limit ofaverageandexact.maximum: value: <value>|any fail: <bool> calculation: <calculation> limit: <limit>
Specifies the target value for the parameter maximum value. If not specified, then no maximum is measured. If “any” is given as the value, then the maximum is measured but there is no target value. If “fail” is also specified as “true”, then parameter is marked as failing if the measured value is out of spec. If
calculationandlimitis specified, then it overrides the default calculation and limit ofmaximumandbelow.
Tool¶
For an overview of which tools are currently supported by CACE, please have a look at Supported Tools.
Example entry:
tool:
ngspice:
template: ac.sch
format: ascii
suffix: .data
variables: [a0, ugf, pm]
The toolname specififes which tool is used by CACE. Each tool may stay on its own or accept a range of arguments to change its behavior.
Variables¶
Example entry:
variables:
time:
display: Time
unit: ms
Vinp:
display: Vinp
unit: V
result:
display: Vout
unit: V
Variable entries are used for plotting to specify the display and unit entry of results.
display: <string>This value is text to display on the graph.
unit: <value>This is the unit that will be displayed after the display string.
Plots¶
Example entry:
plot:
transient:
suffix: .svg
xaxis: time
yaxis: [Vout, Vinp]
type: <string>(optional)The type of plot to make. If this record is missing from the dictionary, then plot type “xyplot” is assumed by default. Otherwise, the value should be one of “xyplot”, “histogram”, “semilogx”, “semilogy”, or “loglog”.
xaxis: <name>Variable to be plotted on the graph X axis.
yaxis: <name>|<list[name]>Variables to be plotted on the graph Y axis.
title: <string>(optional)A title for the graph.
limits: <false|true|auto>(optional)false- do not show limitstrue- always show limitsauto- show limits if they are in the yrangeThe default setting for
limitsis auto.
Plots are made from measured columnar data which may be from a “wrdata” command in ngspice or an “echo” statement directed to a file.