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-level lpps 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

name

String

Yes

The unique name of the layer. Case matters.

number

Integer

No

The layer number. Will be auto-generated if absent.

doc

String

No

An optional description for the layer.

ipkiss

Object

No

Ipkiss-specific properties. Contains an optional name (String) if the Ipkiss process name is different. - This is meant for resolving bw incompatibilities

properties

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

name

String

Yes

The name of the purpose (e.g., DOC, Cladding).

number

Integer

No

The purpose number. Will be auto-generated if absent.

doc

String

No

An optional description of the purpose.

ipkiss

Object

No

Ipkiss-specific properties, such as a different name or an extension.

properties

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

name

String

Yes

A unique name for the layer-purpose pair.

lpp

Array of 2 Strings

Yes

The layer-purpose pair as [layer_name, purpose_name].

doc

String

No

An optional description of the LPP.

ipkiss

Object

No

Ipkiss-specific properties, like a different name or a tech_path.

properties

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

lpp

lppAsStringOrStringTuple

Yes

The layer purpose pair to map.

number

Array of 2 Integers

Yes

The GDS number as [layer_number, datatype].

gds.export_options

A key-value map of options for the GDS export process.

Type:

Object

Required:

No

Property

Type

Default

Description

cut_path

Boolean

true

Whether to cut paths.

path_to_boundary

Boolean

true

Whether to convert paths to boundaries.

path_to_boundary_layers

Array of lppAsStringOrStringTuple

[]

LPPs on which to apply the path-to-boundary filter.

path_to_boundary_exclude_layers

Array of lppAsStringOrStringTuple

[]

LPPs that are excluded from the path-to-boundary filter.

cut_boundary

Boolean

true

Whether to cut boundaries.

write_empty

Boolean

true

Whether to write empty cells.

name_error_filter

Boolean

false

Whether to filter name errors.

max_name_length

Integer

255

Maximum length of GDSII stream names.

max_coordinates

Integer

200

Maximum number of coordinates in GDSII paths.

max_path_length

Integer

100

Maximum length of GDSII paths.

max_vertex_count

Integer

4000

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

lpp

lppAsStringOrStringTuple

Yes

The LPP for which the display style is defined.

color

colorAsStringOrIntTriplet

Yes

The fill color.

alpha

Number (0-1)

No

The opacity.

pattern

String

No

The fill pattern name.

edge_width

Number

No

The width of the layer’s edge.

edge_color

colorAsStringOrIntTriplet

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

unit

Number

1e-6

Unit of the GDSII file (e.g., 1e-6 for microns).

grid

Number

1e-9

Discretization grid of the GDSII file.

angle_step

Number

1.0

Angle step used for discretization of bends (in degrees).

settings.open_access

Type:

Object

Required:

No

Property

Type

Default

Description

base_counter

Number

1000

Base counter for open access layers

waveguides

Default settings and parameters for waveguides and traces.

Type:

Object

Required:

No

Property

Type

Default

Description

default_wavelength

Number

N/A

Default wavelength used for waveguide models.

wg_bend_radius

Number

N/A

Default bend radius for waveguides.

wg_wire_width

Number

N/A

Default width of the core of a wire waveguide.

wg_trench_width

Number

N/A

Default width of the trench of a waveguide (from the side of the core to the end of the cladding).

wg_cladding_width

Number

N/A

Total width of the waveguide with cladding. Computed value: wg_wire_width + 2 * wg_trench_width

wg_spacing

Number

N/A

Default spacing between waveguides used in adapters.

wg_dc_spacing

Number

N/A

Default spacing for directional couplers. Computed value: wg_wire_width + 0.18

wg_short_straight

Number

N/A

Default minimum length for any straight sections in a route.

wg_short_transition_length

Number

N/A

Default length of a taper.

wg_short_taper_length

Number

N/A

Default length of a taper. Computed value: short_transition_length

wg_overlap_extension

Number

N/A

Default extension of the overlap for trench waveguides.

wg_overlap_trench

Number

N/A

Default trench of the overlap for trench waveguides.

wg_expanded_width

Number

N/A

Default width of expanded waveguides.

wg_expanded_taper_length

Number

N/A

Default length of an extended taper for extended waveguides.

wg_expanded_straight

Number

N/A

Default length of an expanded straight waveguide.

wg_angle_step

Number

N/A

Angle step for bends.

wg_slot_width

Number

N/A

Default width of the slot for slotted waveguides.

wg_slotted_wire_width

Number

N/A

Default width of the wire for slotted waveguides.

wg_defaults_n_eff

Number

N/A

Default n_eff for waveguide models.

wg_defaults_n_group

Number

N/A

Default group index used for waveguide models.

wg_defaults_loss_db_perm

Number

N/A

Default loss per m in db used for waveguide models.

wg_defaults_core_layer

String / Null

N/A

Default core layer used in waveguides. Reference to a layer name

trace_bend_radius

Number

N/A

Default bend radius for traces, used for auto-generated bends during routing.

trace_control_shape_layer

lppAsStringOrStringTuple

N/A

Reference to a layer name. This layer is used for drawing the control shape.

trace_default_layer

lppAsStringOrStringTuple

N/A

Reference to a layer name. This layer is used as default for drawing trace shapes.

trace_draw_control_shape

Boolean

false

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

metal1_layer

lppAsStringOrStringTuple

Default layer for M1 guides.

metal2_layer

lppAsStringOrStringTuple

Default layer for M2 guides.

via12_layer

lppAsStringOrStringTuple

Default layer for M12 vias.

wg_text

lppAsStringOrStringTuple

Default layer for text on a design.

wg_process

String

Default process for waveguides (e.g., "WG").

rwg_process

String

Default process for rib waveguides.

fc_process

String

Default process for fiber couplers.

sil_process

String

Default process for modulators.

picazzo.io_adapter

Settings for I/O fiber couplers adapters.

Type:

Object

Required:

No

Property

Type

Default

Description

iofibcoup_connect_transition_length

Number / Null

null

Connection transition length for I/O fiber couplers.

iofibcoup_fanout_length

Number

N/A

Fanout length for I/O fiber couplers.

iofibcoup_fiber_coupler_transition_length

Number / Null

null

Fiber coupler transition length for I/O fiber couplers.

iofibcoup_s_bend_angle

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

curved_socket_margin_from_grating

Number

Margin from grating for curved fiber coupler sockets.

curved_grating_angle_span

Number

Angle span for curved fiber coupler gratings.

curved_grating_box_width

Number

Box width for curved fiber coupler gratings.

curved_grating_focal_distance

Number

Focal distance for curved fiber coupler gratings.

curved_grating_n_o_lines

Integer

Number of lines for curved fiber coupler gratings.

curved_grating_period

Number

Period for curved fiber coupler gratings.

curved_grating_start_radius

Number

Start radius for curved fiber coupler gratings.

curved_socket_length

Number

Socket length for curved fiber couplers.

curved_socket_straight_extension

Array of Number

Straight extension for curved fiber coupler sockets.

default_socket_length

Number

Socket length for default fiber couplers.

straight_grating_box_width

Number

Box width for straight fiber coupler gratings.

straight_grating_line_width

Number

Line width for straight fiber coupler gratings.

straight_grating_n_o_lines

Integer

Number of lines for straight fiber coupler gratings.

straight_grating_period

Number

Period for straight fiber coupler gratings.

straight_socket_length

Number

Socket length for straight fiber couplers.

picazzo.modulators

Detailed parameters for phase shifters and modulators.

Type:

Object

Required:

No

Property

Type

Description

phaseshifter_latpn_bridge_pitch

Number

Bridge pitch for lateral PN phase shifters.

phaseshifter_latpn_bridge_width

Number

Bridge width for lateral PN phase shifters.

phaseshifter_latpn_junction_offset

Number

Junction offset for lateral PN phase shifters.

phaseshifter_longpn_n_length

Number

N-region length for longitudinal PN phase shifters.

phaseshifter_longpn_n_width

Number

N-region width for longitudinal PN phase shifters.

phaseshifter_longpn_p_length

Number

P-region length for longitudinal PN phase shifters.

phaseshifter_longpn_p_width

Number

P-region width for longitudinal PN phase shifters.

phaseshifter_pn_junction_overlap

Number

Junction overlap for PN phase shifters.

phaseshifter_pn_nplus_extension

Number

N+ extension for PN phase shifters.

phaseshifter_pn_nplus_offset

Number

N+ offset for PN phase shifters.

phaseshifter_pn_nplus_width

Number

N+ width for PN phase shifters.

phaseshifter_pn_n_cont_offsets

Array of Number

N-contact offsets for PN phase shifters.

phaseshiftern_pn_n_cont_pitch

Number

N-contact pitch for PN phase shifters.

phaseshifter_pn_n_metal1_offset

Number

N-metal1 offset for PN phase shifters.

phaseshifter_pn_n_metal1_width

Number

N-metal1 width for PN phase shifters.

phaseshifter_pn_n_sil_extension

Number

N-silicide extension for PN phase shifters.

phaseshifter_pn_n_sil_offset

Number

N-silicide offset for PN phase shifters.

phaseshifter_pn_n_sil_width

Number

N-silicide width for PN phase shifters.

phaseshifter_pn_n_width

Number

N-width for PN phase shifters.

phaseshifter_pn_pplus_extension

Number

P+ extension for PN phase shifters.

phaseshifter_pn_pplus_offset

Number

P+ offset for PN phase shifters.

phaseshifter_pn_pplus_width

Number

P+ width for PN phase shifters.

phaseshifter_pn_p_cont_offsets

Array of Number

P-contact offsets for PN phase shifters.

phaseshifter_pn_p_cont_pitch

Number

P-contact pitch for PN phase shifters.

phaseshifter_pn_p_metal1_offset

Number

P-metal1 offset for PN phase shifters.

phaseshifter_pn_p_metal1_width

Number

P-metal1 width for PN phase shifters.

phaseshifter_pn_p_sil_extension

Number

P-silicide extension for PN phase shifters.

phaseshifter_pn_p_sil_offset

Number

P-silicide offset for PN phase shifters.

phaseshifter_pn_p_sil_width

Number

P-silicide width for PN phase shifters.

phaseshifter_pn_p_width

Number

P-width for PN phase shifters.

ports

Settings related to component ports.

Type:

Object

Required:

No

Property

Type

Description

default_length

Number

Default length used for ports.

default_layer

lppAsStringOrStringTuple

Default LPP used for ports.

blocks

Settings for block components like IOColumn.

Type:

Object

Required:

No

Property

Type

Description

default_yspacing

Number

Default vertical spacing between blocks.

default_width

Number

Default width of blocks.