PDK Tech Configuration Schema Reference
This document provides a complete reference for the PDK (Process Design Kit) technical configuration file. It outlines all available properties and their expected formats.
Reusable Definitions
These are common data structures that are used in multiple places throughout the schema.
lppAsStringOrStringTuple
Defines a layer-purpose pair (LPP). This can be specified in one of two ways:
A single
string
that refers to a named LPP defined in the top-levellpps
section.An
array
containing exactly two strings:[layer_name, purpose_name]
.
colorAsStringOrIntTriplet
Defines a color. This can be specified in one of two ways:
A
string
, which can be an HTML color name (e.g.,"blue"
) or a hex code (e.g.,"#FF5733"
). Here’s the full list of supported color names.An
array
containing exactly three integers (from 0 to 255) representing an RGB value (e.g.,[255, 87, 51]
).
Top-Level Configuration
version
The version of the PDK.
- Type:
string
- Required:
No
type
Type of library, will influence how the technology will be loaded.
- Type:
string
- Required:
No
- Default:
pdk
- Allowed Values:
pdk
,adk
,tdk
layers
The list of all available layers (ProcessLayer in IPKISS) in the PDK.
- Type:
Array of Objects
- Required:
No
The object properties are:
Property |
Type |
Required |
Description |
---|---|---|---|
|
String |
Yes |
The unique name of the layer. Case matters. |
|
Integer |
No |
The layer number. Will be auto-generated if absent. |
|
String |
No |
An optional description for the layer. |
|
Object |
No |
Ipkiss-specific properties. Contains an optional |
|
Object |
No |
A freeform key-value map for attaching custom data to the layer. |
purposes
A list of purpose definitions for the layers. The DRAWING
purpose is implicitly pre-defined.
- Type:
Array of Objects
- Required:
No
The object properties are:
Property |
Type |
Required |
Description |
---|---|---|---|
|
String |
Yes |
The name of the purpose (e.g., |
|
Integer |
No |
The purpose number. Will be auto-generated if absent. |
|
String |
No |
An optional description of the purpose. |
|
Object |
No |
Ipkiss-specific properties, such as a different |
|
Object |
No |
A freeform key-value map for attaching custom data to the purpose. |
lpps
Layer-purpose pair definitions (PPLayers in IPKISS). These are named shorthands that can be used elsewhere in the configuration. For all layers, an LPP of [layer_name, "DRAWING"]
is added implicitly.
- Type:
Array of Objects
- Required:
No
The object properties are:
Property |
Type |
Required |
Description |
---|---|---|---|
|
String |
Yes |
A unique name for the layer-purpose pair. |
|
Array of 2 Strings |
Yes |
The layer-purpose pair as |
|
String |
No |
An optional description of the LPP. |
|
Object |
No |
Ipkiss-specific properties, like a different |
|
Object |
No |
A freeform key-value map for attaching custom data to the LPP. |
gds
Configuration for GDS file export.
- Type:
Object
- Required:
No
gds.layer_table
An array mapping LPPs to GDS layer and datatype numbers.
- Type:
Array of Objects
- Required:
No
The object properties are:
Property |
Type |
Required |
Description |
---|---|---|---|
|
Yes |
The layer purpose pair to map. |
|
|
Array of 2 Integers |
Yes |
The GDS number as |
gds.export_options
A key-value map of options for the GDS export process.
- Type:
Object
- Required:
No
Property |
Type |
Default |
Description |
---|---|---|---|
|
Boolean |
|
Whether to cut paths. |
|
Boolean |
|
Whether to convert paths to boundaries. |
|
Array of lppAsStringOrStringTuple |
|
LPPs on which to apply the path-to-boundary filter. |
|
Array of lppAsStringOrStringTuple |
|
LPPs that are excluded from the path-to-boundary filter. |
|
Boolean |
|
Whether to cut boundaries. |
|
Boolean |
|
Whether to write empty cells. |
|
Boolean |
|
Whether to filter name errors. |
|
Integer |
|
Maximum length of GDSII stream names. |
|
Integer |
|
Maximum number of coordinates in GDSII paths. |
|
Integer |
|
Maximum length of GDSII paths. |
|
Integer |
|
Maximum number of vertices in GDSII boundaries. |
display
Display style configuration for visualization tools.
- Type:
Object
- Required:
No
display.lpps
An array defining display styles for individual LPPs.
- Type:
Object
- Required:
No
Property |
Type |
Required |
Description |
---|---|---|---|
|
Yes |
The LPP for which the display style is defined. |
|
|
Yes |
The fill color. |
|
|
Number (0-1) |
No |
The opacity. |
|
String |
No |
The fill pattern name. |
|
Number |
No |
The width of the layer’s edge. |
|
No |
The edge color. |
Predefined Fill Patterns**
The pattern
property accepts a string that corresponds to one of the predefined fill patterns. These patterns are used to control the visual appearance of layers in layout visualizations. Below is a list of the available pattern names:
220-5-cross-hatched
220-5-degree-down
220-5-degree-up
670-5-degree-down
670-5-degree-up
checkerboard-2px
coarsly-dotted
cross-hatched
dots-sparse
dots
dotted
filled
grid-dense
grid-sparse-thick
grid-sparse
grid-thick
grid
heavy-checkerboard
hollow-bubbles
hollow
horizontal-dense
horizontal-sparse-thick
horizontal-sparse
horizontal-thick
horizontal
left-hatched
lightly-cross-hatched
lightly-left-hatched
lightly-right-hatched
lines-diagonal-left
lines-diagonal-right
lines-horizontal-bold
lines-horizontal-dense
lines-horizontal
lines-vertical-bold
lines-vertical-dense
lines-vertical
minus
no-stipple
plus
pyramids
right-hatched
sine
solid-bubbles
solid
special-pattern-for-light-frame-dithering
special-pattern-for-light-heavy-dithering
strongly-cross-hatched-sparse
strongly-left-hatched-dense
strongly-left-hatched-sparse
strongly-right-hatched-dense
strongly-right-hatched-sparse
triangle
turned-pyramids
vertical-dense
vertical-sparse-thick
vertical-sparse
vertical-thick
vertical
zig-zag
display.custom_colors
A key-value map for defining custom named colors. The key is the color name and the value is a color definition colorAsStringOrIntTriplet.
- Type:
Object
- Required:
No
display.custom_patterns
An array of objects defining custom fill patterns, each with a name
(String) and lines
(Array of strings like ".*"
).
- Type:
Array of Objects
- Required:
No
settings
General PDK settings.
- Type:
Object
- Required:
No
settings.metrics
- Type:
Object
- Required:
No
Property |
Type |
Default |
Description |
---|---|---|---|
|
Number |
|
Unit of the GDSII file (e.g., 1e-6 for microns). |
|
Number |
|
Discretization grid of the GDSII file. |
|
Number |
|
Angle step used for discretization of bends (in degrees). |
settings.open_access
- Type:
Object
- Required:
No
Property |
Type |
Default |
Description |
---|---|---|---|
|
Number |
|
Base counter for open access layers |
waveguides
Default settings and parameters for waveguides and traces.
- Type:
Object
- Required:
No
Property |
Type |
Default |
Description |
---|---|---|---|
|
Number |
N/A |
Default wavelength used for waveguide models. |
|
Number |
N/A |
Default bend radius for waveguides. |
|
Number |
N/A |
Default width of the core of a wire waveguide. |
|
Number |
N/A |
Default width of the trench of a waveguide (from the side of the core to the end of the cladding). |
|
Number |
N/A |
Total width of the waveguide with cladding. Computed value: wg_wire_width + 2 * wg_trench_width |
|
Number |
N/A |
Default spacing between waveguides used in adapters. |
|
Number |
N/A |
Default spacing for directional couplers. Computed value: wg_wire_width + 0.18 |
|
Number |
N/A |
Default minimum length for any straight sections in a route. |
|
Number |
N/A |
Default length of a taper. |
|
Number |
N/A |
Default length of a taper. Computed value: short_transition_length |
|
Number |
N/A |
Default extension of the overlap for trench waveguides. |
|
Number |
N/A |
Default trench of the overlap for trench waveguides. |
|
Number |
N/A |
Default width of expanded waveguides. |
|
Number |
N/A |
Default length of an extended taper for extended waveguides. |
|
Number |
N/A |
Default length of an expanded straight waveguide. |
|
Number |
N/A |
Angle step for bends. |
|
Number |
N/A |
Default width of the slot for slotted waveguides. |
|
Number |
N/A |
Default width of the wire for slotted waveguides. |
|
Number |
N/A |
Default n_eff for waveguide models. |
|
Number |
N/A |
Default group index used for waveguide models. |
|
Number |
N/A |
Default loss per m in db used for waveguide models. |
|
String / Null |
N/A |
Default core layer used in waveguides. Reference to a layer name |
|
Number |
N/A |
Default bend radius for traces, used for auto-generated bends during routing. |
|
N/A |
Reference to a layer name. This layer is used for drawing the control shape. |
|
|
N/A |
Reference to a layer name. This layer is used as default for drawing trace shapes. |
|
|
Boolean |
|
If set to true, a control shape is drawn on top of the waveguide. This can be useful for debugging. |
picazzo
Settings specific to the Picazzo library for component generation.
- Type:
Object
- Required:
No
Property |
Type |
Description |
---|---|---|
|
Default layer for M1 guides. |
|
|
Default layer for M2 guides. |
|
|
Default layer for M12 vias. |
|
|
Default layer for text on a design. |
|
|
String |
Default process for waveguides (e.g., |
|
String |
Default process for rib waveguides. |
|
String |
Default process for fiber couplers. |
|
String |
Default process for modulators. |
picazzo.io_adapter
Settings for I/O fiber couplers adapters.
- Type:
Object
- Required:
No
Property |
Type |
Default |
Description |
---|---|---|---|
|
Number / Null |
|
Connection transition length for I/O fiber couplers. |
|
Number |
N/A |
Fanout length for I/O fiber couplers. |
|
Number / Null |
|
Fiber coupler transition length for I/O fiber couplers. |
|
Number |
N/A |
S-bend angle for I/O fiber couplers. |
picazzo.io_fibcoup
Settings for fiber couplers (curved and straight gratings).
- Type:
Object
- Required:
No
Property |
Type |
Description |
---|---|---|
|
Number |
Margin from grating for curved fiber coupler sockets. |
|
Number |
Angle span for curved fiber coupler gratings. |
|
Number |
Box width for curved fiber coupler gratings. |
|
Number |
Focal distance for curved fiber coupler gratings. |
|
Integer |
Number of lines for curved fiber coupler gratings. |
|
Number |
Period for curved fiber coupler gratings. |
|
Number |
Start radius for curved fiber coupler gratings. |
|
Number |
Socket length for curved fiber couplers. |
|
Array of Number |
Straight extension for curved fiber coupler sockets. |
|
Number |
Socket length for default fiber couplers. |
|
Number |
Box width for straight fiber coupler gratings. |
|
Number |
Line width for straight fiber coupler gratings. |
|
Integer |
Number of lines for straight fiber coupler gratings. |
|
Number |
Period for straight fiber coupler gratings. |
|
Number |
Socket length for straight fiber couplers. |
picazzo.modulators
Detailed parameters for phase shifters and modulators.
- Type:
Object
- Required:
No
Property |
Type |
Description |
---|---|---|
|
Number |
Bridge pitch for lateral PN phase shifters. |
|
Number |
Bridge width for lateral PN phase shifters. |
|
Number |
Junction offset for lateral PN phase shifters. |
|
Number |
N-region length for longitudinal PN phase shifters. |
|
Number |
N-region width for longitudinal PN phase shifters. |
|
Number |
P-region length for longitudinal PN phase shifters. |
|
Number |
P-region width for longitudinal PN phase shifters. |
|
Number |
Junction overlap for PN phase shifters. |
|
Number |
N+ extension for PN phase shifters. |
|
Number |
N+ offset for PN phase shifters. |
|
Number |
N+ width for PN phase shifters. |
|
Array of Number |
N-contact offsets for PN phase shifters. |
|
Number |
N-contact pitch for PN phase shifters. |
|
Number |
N-metal1 offset for PN phase shifters. |
|
Number |
N-metal1 width for PN phase shifters. |
|
Number |
N-silicide extension for PN phase shifters. |
|
Number |
N-silicide offset for PN phase shifters. |
|
Number |
N-silicide width for PN phase shifters. |
|
Number |
N-width for PN phase shifters. |
|
Number |
P+ extension for PN phase shifters. |
|
Number |
P+ offset for PN phase shifters. |
|
Number |
P+ width for PN phase shifters. |
|
Array of Number |
P-contact offsets for PN phase shifters. |
|
Number |
P-contact pitch for PN phase shifters. |
|
Number |
P-metal1 offset for PN phase shifters. |
|
Number |
P-metal1 width for PN phase shifters. |
|
Number |
P-silicide extension for PN phase shifters. |
|
Number |
P-silicide offset for PN phase shifters. |
|
Number |
P-silicide width for PN phase shifters. |
|
Number |
P-width for PN phase shifters. |
ports
Settings related to component ports.
- Type:
Object
- Required:
No
Property |
Type |
Description |
---|---|---|
|
Number |
Default length used for ports. |
|
Default LPP used for ports. |
blocks
Settings for block components like IOColumn.
- Type:
Object
- Required:
No
Property |
Type |
Description |
---|---|---|
|
Number |
Default vertical spacing between blocks. |
|
Number |
Default width of blocks. |