Technology#

The ihp.tech module defines the IHP SG13G2 130nm BiCMOS process technology for use with GDSFactory. It is exposed at the top level as ihp.tech and its key objects are re-exported by the PDK:

from ihp import LAYER, LAYER_STACK, LAYER_VIEWS, cross_sections
# or equivalently:
from ihp.tech import LAYER, LAYER_STACK, TECH

Layer Map#

LAYER is an instance of LayerMapIHP, a Pydantic model mapping every IHP SG13G2 GDS layer to its (layer, datatype) tuple. Access layers as attributes:

from ihp.tech import LAYER

LAYER.Metal1drawing   # (8, 0)
LAYER.TopMetal2drawing # (134, 0)
LAYER.Activdrawing     # (1, 0)
class ihp.tech.LayerMapIHP(value=<no_arg>, names=None, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: LayerMap

An enumeration.

ActivOPC: tuple[int, int] = 47
Activboundary: tuple[int, int] = 48
Activdrawing: tuple[int, int] = 1
Activfiller: tuple[int, int] = 49
ActiviOPC: tuple[int, int] = 50
Activlabel: tuple[int, int] = 51
Activlvs: tuple[int, int] = 52
Activmask: tuple[int, int] = 53
Activnet: tuple[int, int] = 54
Activnofill: tuple[int, int] = 55
Activnoqrc: tuple[int, int] = 56
Activpin: tuple[int, int] = 57
AlCuStopdrawing: tuple[int, int] = 58
AntMetal1drawing: tuple[int, int] = 59
AntMetal2drawing: tuple[int, int] = 60
AntVia1drawing: tuple[int, int] = 61
BackMetal1OPC: tuple[int, int] = 62
BackMetal1boundary: tuple[int, int] = 63
BackMetal1diffprb: tuple[int, int] = 64
BackMetal1drawing: tuple[int, int] = 13
BackMetal1filler: tuple[int, int] = 65
BackMetal1iprobe: tuple[int, int] = 66
BackMetal1label: tuple[int, int] = 67
BackMetal1mask: tuple[int, int] = 68
BackMetal1net: tuple[int, int] = 69
BackMetal1nofill: tuple[int, int] = 70
BackMetal1noqrc: tuple[int, int] = 71
BackMetal1pin: tuple[int, int] = 72
BackMetal1res: tuple[int, int] = 73
BackMetal1slit: tuple[int, int] = 74
BackMetal1text: tuple[int, int] = 75
BackPassivdrawing: tuple[int, int] = 17
BasPolyboundary: tuple[int, int] = 76
BasPolydrawing: tuple[int, int] = 77
BasPolylabel: tuple[int, int] = 78
BasPolynet: tuple[int, int] = 79
BasPolypin: tuple[int, int] = 80
BiWindOPC: tuple[int, int] = 81
BiWinddrawing: tuple[int, int] = 5
ColOpendrawing: tuple[int, int] = 46
ColWinddrawing: tuple[int, int] = 82
ContOPC: tuple[int, int] = 83
Contboundary: tuple[int, int] = 84
Contdrawing: tuple[int, int] = 9
Contnet: tuple[int, int] = 85
CtrGatdrawing: tuple[int, int] = 86
DeepCodrawing: tuple[int, int] = 87
DeepViadrawing: tuple[int, int] = 88
DevBondMetdrawing: tuple[int, int] = 89
DevBondViadrawing: tuple[int, int] = 90
DevTrenchdrawing: tuple[int, int] = 91
DigiBnddrawing: tuple[int, int] = 92
DigiBnddrawing0: tuple[int, int] = 93
DigiSubdrawing: tuple[int, int] = 94
EXTBlockdrawing: tuple[int, int] = 2
EdgeSealboundary: tuple[int, int] = 95
EdgeSealdrawing: tuple[int, int] = 96
EmPolydrawing: tuple[int, int] = 97
EmWiHV3drawing: tuple[int, int] = 98
EmWiHVdrawing: tuple[int, int] = 99
EmWind3drawing: tuple[int, int] = 100
EmWindOPC: tuple[int, int] = 101
EmWinddrawing: tuple[int, int] = 102
Exchange0drawing: tuple[int, int] = 103
Exchange0label: tuple[int, int] = 104
Exchange0pin: tuple[int, int] = 105
Exchange0text: tuple[int, int] = 106
Exchange1drawing: tuple[int, int] = 107
Exchange1label: tuple[int, int] = 108
Exchange1pin: tuple[int, int] = 109
Exchange1text: tuple[int, int] = 110
Exchange2drawing: tuple[int, int] = 111
Exchange2label: tuple[int, int] = 112
Exchange2pin: tuple[int, int] = 113
Exchange2text: tuple[int, int] = 114
Exchange3drawing: tuple[int, int] = 115
Exchange3label: tuple[int, int] = 116
Exchange3pin: tuple[int, int] = 117
Exchange3text: tuple[int, int] = 118
Exchange4drawing: tuple[int, int] = 119
Exchange4label: tuple[int, int] = 120
Exchange4pin: tuple[int, int] = 121
Exchange4text: tuple[int, int] = 122
FBEdrawing: tuple[int, int] = 123
FGEtchdrawing: tuple[int, int] = 124
FGImpdrawing: tuple[int, int] = 125
FLMdrawing: tuple[int, int] = 126
GatPolyOPC: tuple[int, int] = 127
GatPolyboundary: tuple[int, int] = 128
GatPolydrawing: tuple[int, int] = 8
GatPolyfiller: tuple[int, int] = 129
GatPolyiOPC: tuple[int, int] = 130
GatPolylabel: tuple[int, int] = 131
GatPolynet: tuple[int, int] = 132
GatPolynofill: tuple[int, int] = 133
GatPolynoqrc: tuple[int, int] = 134
GatPolypin: tuple[int, int] = 135
GraphBotdrawing: tuple[int, int] = 136
GraphContdrawing: tuple[int, int] = 137
GraphGatedrawing: tuple[int, int] = 138
GraphMet1LOPC: tuple[int, int] = 139
GraphMet1Ldrawing: tuple[int, int] = 45
GraphMet1Lfiller: tuple[int, int] = 140
GraphMet1Lnofill: tuple[int, int] = 141
GraphMet1Lslit: tuple[int, int] = 142
GraphMetal1OPC: tuple[int, int] = 143
GraphMetal1drawing: tuple[int, int] = 144
GraphMetal1filler: tuple[int, int] = 145
GraphMetal1nofill: tuple[int, int] = 146
GraphMetal1slit: tuple[int, int] = 147
GraphPaddrawing: tuple[int, int] = 148
GraphPasdrawing: tuple[int, int] = 149
GraphTopdrawing: tuple[int, int] = 150
HafniumOxdrawing: tuple[int, int] = 151
HeatResdrawing: tuple[int, int] = 152
HeatTransdrawing: tuple[int, int] = 153
ICdrawing: tuple[int, int] = 154
INDboundary: tuple[int, int] = 155
INDdrawing: tuple[int, int] = 20
INDpin: tuple[int, int] = 156
INDtext: tuple[int, int] = 157
INLDPWLdrawing: tuple[int, int] = 158
IntBondMetdrawing: tuple[int, int] = 159
IntBondViadrawing: tuple[int, int] = 160
LBEdrawing: tuple[int, int] = 161
MEMPADdrawing: tuple[int, int] = 162
MEMViadrawing: tuple[int, int] = 163
MIMboundary: tuple[int, int] = 164
MIMdrawing: tuple[int, int] = 11
MIMnet: tuple[int, int] = 165
MemCapdrawing: tuple[int, int] = 166
Metal1OPC: tuple[int, int] = 167
Metal1boundary: tuple[int, int] = 168
Metal1diffprb: tuple[int, int] = 169
Metal1drawing: tuple[int, int] = 170
Metal1filler: tuple[int, int] = 171
Metal1iprobe: tuple[int, int] = 172
Metal1label: tuple[int, int] = 173
Metal1mask: tuple[int, int] = 174
Metal1net: tuple[int, int] = 175
Metal1nofill: tuple[int, int] = 176
Metal1noqrc: tuple[int, int] = 177
Metal1pin: tuple[int, int] = 178
Metal1res: tuple[int, int] = 179
Metal1slit: tuple[int, int] = 180
Metal1text: tuple[int, int] = 181
Metal2OPC: tuple[int, int] = 182
Metal2boundary: tuple[int, int] = 183
Metal2diffprb: tuple[int, int] = 184
Metal2drawing: tuple[int, int] = 185
Metal2filler: tuple[int, int] = 186
Metal2iprobe: tuple[int, int] = 187
Metal2label: tuple[int, int] = 188
Metal2mask: tuple[int, int] = 189
Metal2net: tuple[int, int] = 190
Metal2nofill: tuple[int, int] = 191
Metal2noqrc: tuple[int, int] = 192
Metal2pin: tuple[int, int] = 193
Metal2res: tuple[int, int] = 194
Metal2slit: tuple[int, int] = 195
Metal2text: tuple[int, int] = 196
Metal3OPC: tuple[int, int] = 197
Metal3boundary: tuple[int, int] = 198
Metal3diffprb: tuple[int, int] = 199
Metal3drawing: tuple[int, int] = 200
Metal3filler: tuple[int, int] = 201
Metal3iprobe: tuple[int, int] = 202
Metal3label: tuple[int, int] = 203
Metal3mask: tuple[int, int] = 204
Metal3net: tuple[int, int] = 205
Metal3nofill: tuple[int, int] = 206
Metal3noqrc: tuple[int, int] = 207
Metal3pin: tuple[int, int] = 208
Metal3res: tuple[int, int] = 209
Metal3slit: tuple[int, int] = 210
Metal3text: tuple[int, int] = 211
Metal4OPC: tuple[int, int] = 212
Metal4boundary: tuple[int, int] = 213
Metal4diffprb: tuple[int, int] = 214
Metal4drawing: tuple[int, int] = 215
Metal4filler: tuple[int, int] = 216
Metal4iprobe: tuple[int, int] = 217
Metal4label: tuple[int, int] = 218
Metal4mask: tuple[int, int] = 219
Metal4net: tuple[int, int] = 220
Metal4nofill: tuple[int, int] = 221
Metal4noqrc: tuple[int, int] = 222
Metal4pin: tuple[int, int] = 223
Metal4res: tuple[int, int] = 224
Metal4slit: tuple[int, int] = 225
Metal4text: tuple[int, int] = 226
Metal5OPC: tuple[int, int] = 227
Metal5boundary: tuple[int, int] = 228
Metal5diffprb: tuple[int, int] = 229
Metal5drawing: tuple[int, int] = 32
Metal5filler: tuple[int, int] = 230
Metal5iprobe: tuple[int, int] = 231
Metal5label: tuple[int, int] = 232
Metal5mask: tuple[int, int] = 233
Metal5net: tuple[int, int] = 234
Metal5nofill: tuple[int, int] = 235
Metal5noqrc: tuple[int, int] = 236
Metal5pin: tuple[int, int] = 237
Metal5res: tuple[int, int] = 238
Metal5slit: tuple[int, int] = 239
Metal5text: tuple[int, int] = 240
NExtHVdrawing: tuple[int, int] = 241
NExtdrawing: tuple[int, int] = 242
NLDBdrawing: tuple[int, int] = 243
NLDDdrawing: tuple[int, int] = 244
NWellboundary: tuple[int, int] = 245
NWelldrawing: tuple[int, int] = 246
NWelllabel: tuple[int, int] = 247
NWellnet: tuple[int, int] = 248
NWellpin: tuple[int, int] = 249
NoDRCdrawing: tuple[int, int] = 250
NoMetFillerdrawing: tuple[int, int] = 251
NoRCXdrawing: tuple[int, int] = 252
NoRCXm1sub: tuple[int, int] = 253
NoRCXm2m3: tuple[int, int] = 254
NoRCXm2m4: tuple[int, int] = 255
NoRCXm2m5: tuple[int, int] = 256
NoRCXm2sub: tuple[int, int] = 257
NoRCXm2tm1: tuple[int, int] = 258
NoRCXm2tm2: tuple[int, int] = 259
NoRCXm3m4: tuple[int, int] = 260
NoRCXm3m5: tuple[int, int] = 261
NoRCXm3sub: tuple[int, int] = 262
NoRCXm3tm1: tuple[int, int] = 263
NoRCXm3tm2: tuple[int, int] = 264
NoRCXm4m5: tuple[int, int] = 265
NoRCXm4sub: tuple[int, int] = 266
NoRCXm4tm1: tuple[int, int] = 267
NoRCXm4tm2: tuple[int, int] = 268
NoRCXm5sub: tuple[int, int] = 269
NoRCXm5tm1: tuple[int, int] = 270
NoRCXm5tm2: tuple[int, int] = 271
NoRCXtm1sub: tuple[int, int] = 272
NoRCXtm1tm2: tuple[int, int] = 273
NoRCXtm2sub: tuple[int, int] = 274
PExtHVdrawing: tuple[int, int] = 275
PExtdrawing: tuple[int, int] = 276
PLDBdrawing: tuple[int, int] = 23
PLDDdrawing: tuple[int, int] = 277
PWellblock: tuple[int, int] = 278
PWellboundary: tuple[int, int] = 279
PWelldrawing: tuple[int, int] = 29
PWelllabel: tuple[int, int] = 280
PWellnet: tuple[int, int] = 281
PWellpin: tuple[int, int] = 282
Passivboundary: tuple[int, int] = 283
Passivdrawing: tuple[int, int] = 284
Passivlabel: tuple[int, int] = 285
Passivnet: tuple[int, int] = 286
Passivpdl: tuple[int, int] = 287
Passivpillar: tuple[int, int] = 288
Passivpin: tuple[int, int] = 289
Passivsbump: tuple[int, int] = 290
Polimidedrawing: tuple[int, int] = 291
Polimidelabel: tuple[int, int] = 292
Polimidenet: tuple[int, int] = 293
Polimidepin: tuple[int, int] = 294
PolyResboundary: tuple[int, int] = 295
PolyResdrawing: tuple[int, int] = 296
PolyReslabel: tuple[int, int] = 297
PolyResnet: tuple[int, int] = 298
PolyRespin: tuple[int, int] = 299
RESdrawing: tuple[int, int] = 15
RESlabel: tuple[int, int] = 300
RFMEMdrawing: tuple[int, int] = 301
RadHarddrawing: tuple[int, int] = 33
Recogdiffprb: tuple[int, int] = 302
Recogdiode: tuple[int, int] = 303
Recogdrawing: tuple[int, int] = 304
Recogesd: tuple[int, int] = 305
Recogiprobe: tuple[int, int] = 306
Recogmom: tuple[int, int] = 307
Recogotp: tuple[int, int] = 308
Recogpcm: tuple[int, int] = 309
Recogpdiode: tuple[int, int] = 310
Recogpillar: tuple[int, int] = 311
Recogpin: tuple[int, int] = 312
Recogsbump: tuple[int, int] = 313
Recogtsv: tuple[int, int] = 314
RedBuLaydrawing: tuple[int, int] = 315
Redistdrawing: tuple[int, int] = 316
SMOSdrawing: tuple[int, int] = 317
SNSArmsdrawing: tuple[int, int] = 318
SNSBotViadrawing: tuple[int, int] = 319
SNSCMOSViadrawing: tuple[int, int] = 320
SNSRingdrawing: tuple[int, int] = 321
SNSTopViadrawing: tuple[int, int] = 322
SRAMboundary: tuple[int, int] = 323
SRAMdrawing: tuple[int, int] = 18
SRAMlabel: tuple[int, int] = 324
SalBlockdrawing: tuple[int, int] = 325
Sensordrawing: tuple[int, int] = 326
SiGratingdrawing: tuple[int, int] = 327
SiNGratingdrawing: tuple[int, int] = 328
SiNWGdrawing: tuple[int, int] = 329
SiNWGfiller: tuple[int, int] = 330
SiNWGnofill: tuple[int, int] = 331
SiWGdrawing: tuple[int, int] = 332
SiWGfiller: tuple[int, int] = 333
SiWGnofill: tuple[int, int] = 334
Substratedrawing: tuple[int, int] = 26
Substratetext: tuple[int, int] = 335
TEXTdrawing: tuple[int, int] = 336
TRANSdrawing: tuple[int, int] = 19
ThickGateOxdrawing: tuple[int, int] = 27
ThinFilmResdrawing: tuple[int, int] = 337
TopMetal1boundary: tuple[int, int] = 338
TopMetal1diffprb: tuple[int, int] = 339
TopMetal1drawing: tuple[int, int] = 340
TopMetal1filler: tuple[int, int] = 341
TopMetal1iprobe: tuple[int, int] = 342
TopMetal1label: tuple[int, int] = 343
TopMetal1mask: tuple[int, int] = 344
TopMetal1net: tuple[int, int] = 345
TopMetal1nofill: tuple[int, int] = 346
TopMetal1noqrc: tuple[int, int] = 347
TopMetal1pin: tuple[int, int] = 348
TopMetal1res: tuple[int, int] = 349
TopMetal1slit: tuple[int, int] = 350
TopMetal1text: tuple[int, int] = 351
TopMetal2boundary: tuple[int, int] = 352
TopMetal2diffprb: tuple[int, int] = 353
TopMetal2drawing: tuple[int, int] = 354
TopMetal2filler: tuple[int, int] = 355
TopMetal2iprobe: tuple[int, int] = 356
TopMetal2label: tuple[int, int] = 357
TopMetal2mask: tuple[int, int] = 358
TopMetal2net: tuple[int, int] = 359
TopMetal2nofill: tuple[int, int] = 360
TopMetal2noqrc: tuple[int, int] = 361
TopMetal2pin: tuple[int, int] = 362
TopMetal2res: tuple[int, int] = 363
TopMetal2slit: tuple[int, int] = 364
TopMetal2text: tuple[int, int] = 365
TopVia1boundary: tuple[int, int] = 366
TopVia1drawing: tuple[int, int] = 367
TopVia1net: tuple[int, int] = 368
TopVia2boundary: tuple[int, int] = 369
TopVia2drawing: tuple[int, int] = 370
TopVia2net: tuple[int, int] = 371
Varicapdrawing: tuple[int, int] = 38
Via1boundary: tuple[int, int] = 372
Via1drawing: tuple[int, int] = 373
Via1net: tuple[int, int] = 374
Via2boundary: tuple[int, int] = 375
Via2drawing: tuple[int, int] = 376
Via2net: tuple[int, int] = 377
Via3boundary: tuple[int, int] = 378
Via3drawing: tuple[int, int] = 24
Via3net: tuple[int, int] = 379
Via4boundary: tuple[int, int] = 380
Via4drawing: tuple[int, int] = 35
Via4net: tuple[int, int] = 381
Vmimdrawing: tuple[int, int] = 382
dfpaddrawing: tuple[int, int] = 22
dfpadpillar: tuple[int, int] = 383
dfpadsbump: tuple[int, int] = 384
isoNWelldrawing: tuple[int, int] = 385
nBuLayCutdrawing: tuple[int, int] = 386
nBuLayblock: tuple[int, int] = 387
nBuLayboundary: tuple[int, int] = 388
nBuLaydrawing: tuple[int, int] = 389
nBuLaylabel: tuple[int, int] = 390
nBuLaynet: tuple[int, int] = 391
nBuLaypin: tuple[int, int] = 392
nSDblock: tuple[int, int] = 393
nSDdrawing: tuple[int, int] = 394
pSDdrawing: tuple[int, int] = 395
prBoundaryboundary: tuple[int, int] = 396
prBoundarydrawing: tuple[int, int] = 397
prBoundarylabel: tuple[int, int] = 398

Layer Stack#

LAYER_STACK provides a 3D representation of the metal/via stack for cross-sectional visualization and electromagnetic simulation (e.g. with Palace or MEEP). Thicknesses follow the IHP SG13 process specifications.

The stack includes: substrate, active silicon, poly gate, Metal1–Metal5, Via1–Via4, TopVia1, TopMetal1, TopVia2, and TopMetal2.

ihp.tech.get_layer_stack(thickness_gatpoly=0.16, thickness_cont=0.64, thickness_metal1=0.42, thickness_metal=0.49, thickness_via=0.54, thickness_topvia1=0.85, thickness_topmetal1=2.0, thickness_topvia2=2.8, thickness_topmetal2=3.0)[source]

Returns IHP PDK LayerStack for 3D visualization and simulation.

Layer thicknesses are based on the IHP SG13 process specifications. Reference: https://ihp-open-pdk-docs.readthedocs.io/en/latest/process_specs/01_01_main_process_cross_sec.html

Parameters:
  • thickness_gatepoly – Gate Oxide thickness in um (default: 0.16)

  • thickness_cont (float) – Activ-Metal1 Cont thickness in um (default: 0.64)

  • thickness_metal1 (float) – Metal1 layer thickness in um (default: 0.42).

  • thickness_metal (float) – Metal2-5 layer thickness in um (default: 0.49).

  • thickness_via (float) – Via1-4 layer thickness in um (default: 0.54).

  • thickness_topvia1 (float) – TopVia1 layer thickness in um (default: 0.85).

  • thickness_topmetal1 (float) – TopMetal1 layer thickness in um (default: 2.0).

  • thickness_topvia2 (float) – TopVia2 layer thickness in um (default: 2.8).

  • thickness_topmetal2 (float) – TopMetal2 layer thickness in um (default: 3.0).

  • thickness_gatpoly (float)

Returns:

LayerStack for IHP PDK with properly connected metal and via layers.

Return type:

LayerStack

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
PDK.activate()

fig = PDK.layer_stack.plot()

(Source code)

Technology Parameters#

TECH is an instance of TechIHP containing process design rules: grid size, minimum transistor dimensions, metal widths/spacings, resistor and capacitor parameters, and RF layout rules.

pydantic model ihp.tech.TechIHP[source]

Bases: BaseModel

IHP PDK Technology parameters.

Show JSON schema
{
   "title": "TechIHP",
   "description": "IHP PDK Technology parameters.",
   "type": "object",
   "properties": {
      "grid": {
         "default": 0.005,
         "title": "Grid",
         "type": "number"
      },
      "precision": {
         "default": 1e-09,
         "title": "Precision",
         "type": "number"
      },
      "nmos_min_width": {
         "default": 0.15,
         "title": "Nmos Min Width",
         "type": "number"
      },
      "nmos_min_length": {
         "default": 0.13,
         "title": "Nmos Min Length",
         "type": "number"
      },
      "pmos_min_width": {
         "default": 0.15,
         "title": "Pmos Min Width",
         "type": "number"
      },
      "pmos_min_length": {
         "default": 0.13,
         "title": "Pmos Min Length",
         "type": "number"
      },
      "cont_size": {
         "default": 0.16,
         "title": "Cont Size",
         "type": "number"
      },
      "cont_spacing": {
         "default": 0.18,
         "title": "Cont Spacing",
         "type": "number"
      },
      "cont_enc_active": {
         "default": 0.07,
         "title": "Cont Enc Active",
         "type": "number"
      },
      "cont_enc_poly": {
         "default": 0.07,
         "title": "Cont Enc Poly",
         "type": "number"
      },
      "cont_enc_metal": {
         "default": 0.06,
         "title": "Cont Enc Metal",
         "type": "number"
      },
      "cont_b1": {
         "default": 0.2,
         "title": "Cont B1",
         "type": "number"
      },
      "cont_b1_nr": {
         "default": 4.0,
         "title": "Cont B1 Nr",
         "type": "number"
      },
      "via1_size": {
         "default": 0.26,
         "title": "Via1 Size",
         "type": "number"
      },
      "via1_spacing": {
         "default": 0.36,
         "title": "Via1 Spacing",
         "type": "number"
      },
      "via1_enc_metal": {
         "default": 0.06,
         "title": "Via1 Enc Metal",
         "type": "number"
      },
      "metal1_width": {
         "default": 0.14,
         "title": "Metal1 Width",
         "type": "number"
      },
      "metal1_spacing": {
         "default": 0.14,
         "title": "Metal1 Spacing",
         "type": "number"
      },
      "metal2_width": {
         "default": 0.16,
         "title": "Metal2 Width",
         "type": "number"
      },
      "metal2_spacing": {
         "default": 0.16,
         "title": "Metal2 Spacing",
         "type": "number"
      },
      "metal3_width": {
         "default": 0.2,
         "title": "Metal3 Width",
         "type": "number"
      },
      "metal3_spacing": {
         "default": 0.2,
         "title": "Metal3 Spacing",
         "type": "number"
      },
      "metal4_width": {
         "default": 0.2,
         "title": "Metal4 Width",
         "type": "number"
      },
      "metal4_spacing": {
         "default": 0.2,
         "title": "Metal4 Spacing",
         "type": "number"
      },
      "metal5_width": {
         "default": 0.2,
         "title": "Metal5 Width",
         "type": "number"
      },
      "metal5_spacing": {
         "default": 0.2,
         "title": "Metal5 Spacing",
         "type": "number"
      },
      "topmetal1_width": {
         "default": 1.0,
         "title": "Topmetal1 Width",
         "type": "number"
      },
      "topmetal1_spacing": {
         "default": 1.0,
         "title": "Topmetal1 Spacing",
         "type": "number"
      },
      "topmetal2_width": {
         "default": 2.0,
         "title": "Topmetal2 Width",
         "type": "number"
      },
      "topmetal2_spacing": {
         "default": 2.0,
         "title": "Topmetal2 Spacing",
         "type": "number"
      },
      "rsil_sheet_res": {
         "default": 7.0,
         "title": "Rsil Sheet Res",
         "type": "number"
      },
      "rppd_sheet_res": {
         "default": 300.0,
         "title": "Rppd Sheet Res",
         "type": "number"
      },
      "rhigh_sheet_res": {
         "default": 1350.0,
         "title": "Rhigh Sheet Res",
         "type": "number"
      },
      "mim_min_size": {
         "default": 0.5,
         "title": "Mim Min Size",
         "type": "number"
      },
      "mim_cap_density": {
         "default": 1.5,
         "title": "Mim Cap Density",
         "type": "number"
      },
      "inductor_min_width": {
         "default": 2.0,
         "title": "Inductor Min Width",
         "type": "number"
      },
      "inductor_min_spacing": {
         "default": 2.1,
         "title": "Inductor Min Spacing",
         "type": "number"
      },
      "inductor_min_diameter": {
         "default": 15.0,
         "title": "Inductor Min Diameter",
         "type": "number"
      },
      "epsilon": {
         "default": 0.001,
         "title": "Epsilon",
         "type": "number"
      },
      "cont_gate_dist": {
         "default": 0.11,
         "title": "Cont Gate Dist",
         "type": "number"
      },
      "gatpoly_activ_over": {
         "default": 0.18,
         "title": "Gatpoly Activ Over",
         "type": "number"
      },
      "gat_d": {
         "default": 0.07,
         "title": "Gat D",
         "type": "number"
      },
      "psd_activ_over": {
         "default": 0.18,
         "title": "Psd Activ Over",
         "type": "number"
      },
      "psd_gate_over_lv": {
         "default": 0.3,
         "title": "Psd Gate Over Lv",
         "type": "number"
      },
      "pSD_a": {
         "default": 0.31,
         "title": "Psd A",
         "type": "number"
      },
      "psd_gate_over_hv": {
         "default": 0.4,
         "title": "Psd Gate Over Hv",
         "type": "number"
      },
      "nw_activ_over_lv": {
         "default": 0.31,
         "title": "Nw Activ Over Lv",
         "type": "number"
      },
      "nw_activ_over_hv": {
         "default": 0.62,
         "title": "Nw Activ Over Hv",
         "type": "number"
      },
      "tgo_activ": {
         "default": 0.27,
         "title": "Tgo Activ",
         "type": "number"
      },
      "tgo_gatpoly": {
         "default": 0.34,
         "title": "Tgo Gatpoly",
         "type": "number"
      },
      "m1_over": {
         "default": 0.0,
         "title": "M1 Over",
         "type": "number"
      },
      "m1_endcap": {
         "default": 0.05,
         "title": "M1 Endcap",
         "type": "number"
      },
      "via1_size_rf": {
         "default": 0.19,
         "title": "Via1 Size Rf",
         "type": "number"
      },
      "via1_spacing_narrow": {
         "default": 0.22,
         "title": "Via1 Spacing Narrow",
         "type": "number"
      },
      "via1_spacing_wide": {
         "default": 0.29,
         "title": "Via1 Spacing Wide",
         "type": "number"
      },
      "via1_width_threshold": {
         "default": 1.52,
         "title": "Via1 Width Threshold",
         "type": "number"
      },
      "via1_enc": {
         "default": 0.01,
         "title": "Via1 Enc",
         "type": "number"
      },
      "via1_endcap": {
         "default": 0.05,
         "title": "Via1 Endcap",
         "type": "number"
      },
      "rf_gate_ring_width": {
         "default": 0.3,
         "title": "Rf Gate Ring Width",
         "type": "number"
      },
      "rf_guard_ring_width": {
         "default": 0.32,
         "title": "Rf Guard Ring Width",
         "type": "number"
      },
      "rf_guard_ring_m1_width": {
         "default": 0.32,
         "title": "Rf Guard Ring M1 Width",
         "type": "number"
      },
      "rf_psd_ring_width": {
         "default": 0.38,
         "title": "Rf Psd Ring Width",
         "type": "number"
      },
      "rf_sd_metal_width_over": {
         "default": 0.14,
         "title": "Rf Sd Metal Width Over",
         "type": "number"
      },
      "rf_active_gate_dist_x": {
         "default": 0.13,
         "title": "Rf Active Gate Dist X",
         "type": "number"
      },
      "rf_active_gate_dist_x_wide": {
         "default": 0.17,
         "title": "Rf Active Gate Dist X Wide",
         "type": "number"
      },
      "rf_active_gate_dist_y": {
         "default": 0.235,
         "title": "Rf Active Gate Dist Y",
         "type": "number"
      },
      "rf_gate_guard_dist": {
         "default": 0.36,
         "title": "Rf Gate Guard Dist",
         "type": "number"
      },
      "rf_channel_dist_base": {
         "default": 0.38,
         "title": "Rf Channel Dist Base",
         "type": "number"
      },
      "rf_channel_dist_step": {
         "default": 0.03,
         "title": "Rf Channel Dist Step",
         "type": "number"
      },
      "rf_endpiece_base": {
         "default": 0.345,
         "title": "Rf Endpiece Base",
         "type": "number"
      },
      "rf_endpiece_step": {
         "default": 0.065,
         "title": "Rf Endpiece Step",
         "type": "number"
      },
      "rf_short_wide_adjust": {
         "default": 0.005,
         "title": "Rf Short Wide Adjust",
         "type": "number"
      },
      "rf_short_wide_l_threshold": {
         "default": 0.14,
         "title": "Rf Short Wide L Threshold",
         "type": "number"
      },
      "rf_short_wide_w_threshold": {
         "default": 1.0,
         "title": "Rf Short Wide W Threshold",
         "type": "number"
      },
      "rf_sd_margin_x": {
         "default": 0.05,
         "title": "Rf Sd Margin X",
         "type": "number"
      },
      "rf_sd_margin_y": {
         "default": 0.015,
         "title": "Rf Sd Margin Y",
         "type": "number"
      },
      "rf_sd_metal_adjust": {
         "default": 0.02,
         "title": "Rf Sd Metal Adjust",
         "type": "number"
      },
      "rf_sd_row_spacing": {
         "default": 0.13,
         "title": "Rf Sd Row Spacing",
         "type": "number"
      },
      "rf_gate_cont_offset": {
         "default": 0.02,
         "title": "Rf Gate Cont Offset",
         "type": "number"
      },
      "rf_gate_cont_margin_single": {
         "default": 0.075,
         "title": "Rf Gate Cont Margin Single",
         "type": "number"
      },
      "rf_gate_cont_margin_multi": {
         "default": 0.36,
         "title": "Rf Gate Cont Margin Multi",
         "type": "number"
      },
      "rf_guard_cont_offset_h": {
         "default": 0.08,
         "title": "Rf Guard Cont Offset H",
         "type": "number"
      },
      "rf_guard_cont_offset_v": {
         "default": 0.11,
         "title": "Rf Guard Cont Offset V",
         "type": "number"
      },
      "rf_psd_pmos_inset_x": {
         "default": 0.5,
         "title": "Rf Psd Pmos Inset X",
         "type": "number"
      },
      "rf_psd_pmos_inset_y": {
         "default": 0.6,
         "title": "Rf Psd Pmos Inset Y",
         "type": "number"
      },
      "rf_tgo_nmos": {
         "default": 0.35,
         "title": "Rf Tgo Nmos",
         "type": "number"
      },
      "rf_tgo_pmos": {
         "default": 0.31,
         "title": "Rf Tgo Pmos",
         "type": "number"
      },
      "rf_nw_pmos_hv": {
         "default": 0.35,
         "title": "Rf Nw Pmos Hv",
         "type": "number"
      },
      "rf_nw_pmos_lv": {
         "default": 0.31,
         "title": "Rf Nw Pmos Lv",
         "type": "number"
      },
      "rf_gate_pin_half_width": {
         "default": 0.1,
         "title": "Rf Gate Pin Half Width",
         "type": "number"
      },
      "nmos_max_width": {
         "default": 10.0,
         "title": "Nmos Max Width",
         "type": "number"
      },
      "nmos_max_length": {
         "default": 10.0,
         "title": "Nmos Max Length",
         "type": "number"
      },
      "nmos_max_nf": {
         "default": 100,
         "title": "Nmos Max Nf",
         "type": "integer"
      },
      "pmos_max_width": {
         "default": 10.0,
         "title": "Pmos Max Width",
         "type": "number"
      },
      "pmos_max_length": {
         "default": 10.0,
         "title": "Pmos Max Length",
         "type": "number"
      },
      "pmos_max_nf": {
         "default": 100,
         "title": "Pmos Max Nf",
         "type": "integer"
      },
      "nmos_hv_min_width": {
         "default": 0.3,
         "title": "Nmos Hv Min Width",
         "type": "number"
      },
      "nmos_hv_max_width": {
         "default": 10.0,
         "title": "Nmos Hv Max Width",
         "type": "number"
      },
      "nmos_hv_min_length": {
         "default": 0.45,
         "title": "Nmos Hv Min Length",
         "type": "number"
      },
      "nmos_hv_max_length": {
         "default": 10.0,
         "title": "Nmos Hv Max Length",
         "type": "number"
      },
      "nmos_hv_max_nf": {
         "default": 100,
         "title": "Nmos Hv Max Nf",
         "type": "integer"
      },
      "pmos_hv_min_width": {
         "default": 0.3,
         "title": "Pmos Hv Min Width",
         "type": "number"
      },
      "pmos_hv_max_width": {
         "default": 10.0,
         "title": "Pmos Hv Max Width",
         "type": "number"
      },
      "pmos_hv_min_length": {
         "default": 0.4,
         "title": "Pmos Hv Min Length",
         "type": "number"
      },
      "pmos_hv_max_length": {
         "default": 10.0,
         "title": "Pmos Hv Max Length",
         "type": "number"
      },
      "pmos_hv_max_nf": {
         "default": 100,
         "title": "Pmos Hv Max Nf",
         "type": "integer"
      },
      "rfnmos_min_width": {
         "default": 0.15,
         "title": "Rfnmos Min Width",
         "type": "number"
      },
      "rfnmos_max_width": {
         "default": 10.0,
         "title": "Rfnmos Max Width",
         "type": "number"
      },
      "rfnmos_min_length": {
         "default": 0.13,
         "title": "Rfnmos Min Length",
         "type": "number"
      },
      "rfnmos_max_length": {
         "default": 10.0,
         "title": "Rfnmos Max Length",
         "type": "number"
      },
      "rfnmos_max_nf": {
         "default": 40,
         "title": "Rfnmos Max Nf",
         "type": "integer"
      },
      "rfpmos_min_width": {
         "default": 0.15,
         "title": "Rfpmos Min Width",
         "type": "number"
      },
      "rfpmos_max_width": {
         "default": 10.0,
         "title": "Rfpmos Max Width",
         "type": "number"
      },
      "rfpmos_min_length": {
         "default": 0.13,
         "title": "Rfpmos Min Length",
         "type": "number"
      },
      "rfpmos_max_length": {
         "default": 10.0,
         "title": "Rfpmos Max Length",
         "type": "number"
      },
      "rfpmos_max_nf": {
         "default": 40,
         "title": "Rfpmos Max Nf",
         "type": "integer"
      },
      "rfnmos_hv_min_width": {
         "default": 0.33,
         "title": "Rfnmos Hv Min Width",
         "type": "number"
      },
      "rfnmos_hv_max_width": {
         "default": 10.0,
         "title": "Rfnmos Hv Max Width",
         "type": "number"
      },
      "rfnmos_hv_min_length": {
         "default": 0.45,
         "title": "Rfnmos Hv Min Length",
         "type": "number"
      },
      "rfnmos_hv_max_length": {
         "default": 10.0,
         "title": "Rfnmos Hv Max Length",
         "type": "number"
      },
      "rfnmos_hv_max_nf": {
         "default": 40,
         "title": "Rfnmos Hv Max Nf",
         "type": "integer"
      },
      "rfpmos_hv_min_width": {
         "default": 0.39,
         "title": "Rfpmos Hv Min Width",
         "type": "number"
      },
      "rfpmos_hv_max_width": {
         "default": 10.0,
         "title": "Rfpmos Hv Max Width",
         "type": "number"
      },
      "rfpmos_hv_min_length": {
         "default": 0.4,
         "title": "Rfpmos Hv Min Length",
         "type": "number"
      },
      "rfpmos_hv_max_length": {
         "default": 10.0,
         "title": "Rfpmos Hv Max Length",
         "type": "number"
      },
      "rfpmos_hv_max_nf": {
         "default": 40,
         "title": "Rfpmos Hv Max Nf",
         "type": "integer"
      },
      "npn_min_nx": {
         "default": 1,
         "title": "Npn Min Nx",
         "type": "integer"
      },
      "npn_max_nx": {
         "default": 10,
         "title": "Npn Max Nx",
         "type": "integer"
      },
      "pnp_min_length": {
         "default": 0.68,
         "title": "Pnp Min Length",
         "type": "number"
      },
      "pnp_max_length": {
         "default": 1000.0,
         "title": "Pnp Max Length",
         "type": "number"
      },
      "pnp_min_width": {
         "default": 0.3,
         "title": "Pnp Min Width",
         "type": "number"
      },
      "pnp_max_width": {
         "default": 2.0,
         "title": "Pnp Max Width",
         "type": "number"
      },
      "rsil_min_width": {
         "default": 0.5,
         "title": "Rsil Min Width",
         "type": "number"
      },
      "rsil_max_width": {
         "default": 1000.0,
         "title": "Rsil Max Width",
         "type": "number"
      },
      "rsil_min_length": {
         "default": 0.5,
         "title": "Rsil Min Length",
         "type": "number"
      },
      "rsil_max_length": {
         "default": 1000.0,
         "title": "Rsil Max Length",
         "type": "number"
      },
      "rppd_min_width": {
         "default": 0.5,
         "title": "Rppd Min Width",
         "type": "number"
      },
      "rppd_max_width": {
         "default": 1000.0,
         "title": "Rppd Max Width",
         "type": "number"
      },
      "rppd_min_length": {
         "default": 0.5,
         "title": "Rppd Min Length",
         "type": "number"
      },
      "rppd_max_length": {
         "default": 1000.0,
         "title": "Rppd Max Length",
         "type": "number"
      },
      "rhigh_min_width": {
         "default": 0.5,
         "title": "Rhigh Min Width",
         "type": "number"
      },
      "rhigh_max_width": {
         "default": 1000.0,
         "title": "Rhigh Max Width",
         "type": "number"
      },
      "rhigh_min_length": {
         "default": 0.96,
         "title": "Rhigh Min Length",
         "type": "number"
      },
      "rhigh_max_length": {
         "default": 1000.0,
         "title": "Rhigh Max Length",
         "type": "number"
      },
      "cmim_min_size": {
         "default": 1.14,
         "title": "Cmim Min Size",
         "type": "number"
      },
      "cmim_max_size": {
         "default": 1000.0,
         "title": "Cmim Max Size",
         "type": "number"
      },
      "rfcmim_min_size": {
         "default": 7.0,
         "title": "Rfcmim Min Size",
         "type": "number"
      },
      "rfcmim_max_size": {
         "default": 1000.0,
         "title": "Rfcmim Max Size",
         "type": "number"
      },
      "cmim_caspec": {
         "default": 1.5,
         "title": "Cmim Caspec",
         "type": "number"
      },
      "cmim_cpspec": {
         "default": 0.04,
         "title": "Cmim Cpspec",
         "type": "number"
      },
      "cmim_lwd": {
         "default": 0.01,
         "title": "Cmim Lwd",
         "type": "number"
      },
      "rfcmim_caspec": {
         "default": 1.5,
         "title": "Rfcmim Caspec",
         "type": "number"
      },
      "rfcmim_cpspec": {
         "default": 0.04,
         "title": "Rfcmim Cpspec",
         "type": "number"
      },
      "rfcmim_lwd": {
         "default": 0.01,
         "title": "Rfcmim Lwd",
         "type": "number"
      },
      "ptap1_min_size": {
         "default": 0.78,
         "title": "Ptap1 Min Size",
         "type": "number"
      },
      "ptap1_max_size": {
         "default": 10000000.0,
         "title": "Ptap1 Max Size",
         "type": "number"
      },
      "ntap1_min_size": {
         "default": 0.78,
         "title": "Ntap1 Min Size",
         "type": "number"
      },
      "ntap1_max_size": {
         "default": 10000.0,
         "title": "Ntap1 Max Size",
         "type": "number"
      },
      "dantenna_min_width": {
         "default": 0.48,
         "title": "Dantenna Min Width",
         "type": "number"
      },
      "dantenna_max_width": {
         "default": 1000.0,
         "title": "Dantenna Max Width",
         "type": "number"
      },
      "dantenna_min_length": {
         "default": 0.48,
         "title": "Dantenna Min Length",
         "type": "number"
      },
      "dantenna_max_length": {
         "default": 1000.0,
         "title": "Dantenna Max Length",
         "type": "number"
      },
      "dantenna_dov": {
         "default": 0.02,
         "title": "Dantenna Dov",
         "type": "number"
      },
      "dpantenna_min_width": {
         "default": 0.48,
         "title": "Dpantenna Min Width",
         "type": "number"
      },
      "dpantenna_max_width": {
         "default": 1000.0,
         "title": "Dpantenna Max Width",
         "type": "number"
      },
      "dpantenna_min_length": {
         "default": 0.48,
         "title": "Dpantenna Min Length",
         "type": "number"
      },
      "dpantenna_max_length": {
         "default": 1000.0,
         "title": "Dpantenna Max Length",
         "type": "number"
      },
      "dpantenna_dov": {
         "default": 0.02,
         "title": "Dpantenna Dov",
         "type": "number"
      },
      "sealring_min_width": {
         "default": 150.0,
         "title": "Sealring Min Width",
         "type": "number"
      },
      "sealring_max_width": {
         "default": 32000.0,
         "title": "Sealring Max Width",
         "type": "number"
      },
      "sealring_min_height": {
         "default": 150.0,
         "title": "Sealring Min Height",
         "type": "number"
      },
      "sealring_max_height": {
         "default": 25000.0,
         "title": "Sealring Max Height",
         "type": "number"
      }
   }
}

Fields:
  • cmim_caspec (float)

  • cmim_cpspec (float)

  • cmim_lwd (float)

  • cmim_max_size (float)

  • cmim_min_size (float)

  • cont_b1 (float)

  • cont_b1_nr (float)

  • cont_enc_active (float)

  • cont_enc_metal (float)

  • cont_enc_poly (float)

  • cont_gate_dist (float)

  • cont_size (float)

  • cont_spacing (float)

  • dantenna_dov (float)

  • dantenna_max_length (float)

  • dantenna_max_width (float)

  • dantenna_min_length (float)

  • dantenna_min_width (float)

  • dpantenna_dov (float)

  • dpantenna_max_length (float)

  • dpantenna_max_width (float)

  • dpantenna_min_length (float)

  • dpantenna_min_width (float)

  • epsilon (float)

  • gat_d (float)

  • gatpoly_activ_over (float)

  • grid (float)

  • inductor_min_diameter (float)

  • inductor_min_spacing (float)

  • inductor_min_width (float)

  • m1_endcap (float)

  • m1_over (float)

  • metal1_spacing (float)

  • metal1_width (float)

  • metal2_spacing (float)

  • metal2_width (float)

  • metal3_spacing (float)

  • metal3_width (float)

  • metal4_spacing (float)

  • metal4_width (float)

  • metal5_spacing (float)

  • metal5_width (float)

  • mim_cap_density (float)

  • mim_min_size (float)

  • nmos_hv_max_length (float)

  • nmos_hv_max_nf (int)

  • nmos_hv_max_width (float)

  • nmos_hv_min_length (float)

  • nmos_hv_min_width (float)

  • nmos_max_length (float)

  • nmos_max_nf (int)

  • nmos_max_width (float)

  • nmos_min_length (float)

  • nmos_min_width (float)

  • npn_max_nx (int)

  • npn_min_nx (int)

  • ntap1_max_size (float)

  • ntap1_min_size (float)

  • nw_activ_over_hv (float)

  • nw_activ_over_lv (float)

  • pSD_a (float)

  • pmos_hv_max_length (float)

  • pmos_hv_max_nf (int)

  • pmos_hv_max_width (float)

  • pmos_hv_min_length (float)

  • pmos_hv_min_width (float)

  • pmos_max_length (float)

  • pmos_max_nf (int)

  • pmos_max_width (float)

  • pmos_min_length (float)

  • pmos_min_width (float)

  • pnp_max_length (float)

  • pnp_max_width (float)

  • pnp_min_length (float)

  • pnp_min_width (float)

  • precision (float)

  • psd_activ_over (float)

  • psd_gate_over_hv (float)

  • psd_gate_over_lv (float)

  • ptap1_max_size (float)

  • ptap1_min_size (float)

  • rf_active_gate_dist_x (float)

  • rf_active_gate_dist_x_wide (float)

  • rf_active_gate_dist_y (float)

  • rf_channel_dist_base (float)

  • rf_channel_dist_step (float)

  • rf_endpiece_base (float)

  • rf_endpiece_step (float)

  • rf_gate_cont_margin_multi (float)

  • rf_gate_cont_margin_single (float)

  • rf_gate_cont_offset (float)

  • rf_gate_guard_dist (float)

  • rf_gate_pin_half_width (float)

  • rf_gate_ring_width (float)

  • rf_guard_cont_offset_h (float)

  • rf_guard_cont_offset_v (float)

  • rf_guard_ring_m1_width (float)

  • rf_guard_ring_width (float)

  • rf_nw_pmos_hv (float)

  • rf_nw_pmos_lv (float)

  • rf_psd_pmos_inset_x (float)

  • rf_psd_pmos_inset_y (float)

  • rf_psd_ring_width (float)

  • rf_sd_margin_x (float)

  • rf_sd_margin_y (float)

  • rf_sd_metal_adjust (float)

  • rf_sd_metal_width_over (float)

  • rf_sd_row_spacing (float)

  • rf_short_wide_adjust (float)

  • rf_short_wide_l_threshold (float)

  • rf_short_wide_w_threshold (float)

  • rf_tgo_nmos (float)

  • rf_tgo_pmos (float)

  • rfcmim_caspec (float)

  • rfcmim_cpspec (float)

  • rfcmim_lwd (float)

  • rfcmim_max_size (float)

  • rfcmim_min_size (float)

  • rfnmos_hv_max_length (float)

  • rfnmos_hv_max_nf (int)

  • rfnmos_hv_max_width (float)

  • rfnmos_hv_min_length (float)

  • rfnmos_hv_min_width (float)

  • rfnmos_max_length (float)

  • rfnmos_max_nf (int)

  • rfnmos_max_width (float)

  • rfnmos_min_length (float)

  • rfnmos_min_width (float)

  • rfpmos_hv_max_length (float)

  • rfpmos_hv_max_nf (int)

  • rfpmos_hv_max_width (float)

  • rfpmos_hv_min_length (float)

  • rfpmos_hv_min_width (float)

  • rfpmos_max_length (float)

  • rfpmos_max_nf (int)

  • rfpmos_max_width (float)

  • rfpmos_min_length (float)

  • rfpmos_min_width (float)

  • rhigh_max_length (float)

  • rhigh_max_width (float)

  • rhigh_min_length (float)

  • rhigh_min_width (float)

  • rhigh_sheet_res (float)

  • rppd_max_length (float)

  • rppd_max_width (float)

  • rppd_min_length (float)

  • rppd_min_width (float)

  • rppd_sheet_res (float)

  • rsil_max_length (float)

  • rsil_max_width (float)

  • rsil_min_length (float)

  • rsil_min_width (float)

  • rsil_sheet_res (float)

  • sealring_max_height (float)

  • sealring_max_width (float)

  • sealring_min_height (float)

  • sealring_min_width (float)

  • tgo_activ (float)

  • tgo_gatpoly (float)

  • topmetal1_spacing (float)

  • topmetal1_width (float)

  • topmetal2_spacing (float)

  • topmetal2_width (float)

  • via1_enc (float)

  • via1_enc_metal (float)

  • via1_endcap (float)

  • via1_size (float)

  • via1_size_rf (float)

  • via1_spacing (float)

  • via1_spacing_narrow (float)

  • via1_spacing_wide (float)

  • via1_width_threshold (float)

field cmim_caspec: float = 1.5
field cmim_cpspec: float = 0.04
field cmim_lwd: float = 0.01
field cmim_max_size: float = 1000.0
field cmim_min_size: float = 1.14
field cont_b1: float = 0.2
field cont_b1_nr: float = 4.0
field cont_enc_active: float = 0.07
field cont_enc_metal: float = 0.06
field cont_enc_poly: float = 0.07
field cont_gate_dist: float = 0.11
field cont_size: float = 0.16
field cont_spacing: float = 0.18
field dantenna_dov: float = 0.02
field dantenna_max_length: float = 1000.0
field dantenna_max_width: float = 1000.0
field dantenna_min_length: float = 0.48
field dantenna_min_width: float = 0.48
field dpantenna_dov: float = 0.02
field dpantenna_max_length: float = 1000.0
field dpantenna_max_width: float = 1000.0
field dpantenna_min_length: float = 0.48
field dpantenna_min_width: float = 0.48
field epsilon: float = 0.001
field gat_d: float = 0.07
field gatpoly_activ_over: float = 0.18
field grid: float = 0.005
field inductor_min_diameter: float = 15.0
field inductor_min_spacing: float = 2.1
field inductor_min_width: float = 2.0
field m1_endcap: float = 0.05
field m1_over: float = 0.0
field metal1_spacing: float = 0.14
field metal1_width: float = 0.14
field metal2_spacing: float = 0.16
field metal2_width: float = 0.16
field metal3_spacing: float = 0.2
field metal3_width: float = 0.2
field metal4_spacing: float = 0.2
field metal4_width: float = 0.2
field metal5_spacing: float = 0.2
field metal5_width: float = 0.2
field mim_cap_density: float = 1.5
field mim_min_size: float = 0.5
field nmos_hv_max_length: float = 10.0
field nmos_hv_max_nf: int = 100
field nmos_hv_max_width: float = 10.0
field nmos_hv_min_length: float = 0.45
field nmos_hv_min_width: float = 0.3
field nmos_max_length: float = 10.0
field nmos_max_nf: int = 100
field nmos_max_width: float = 10.0
field nmos_min_length: float = 0.13
field nmos_min_width: float = 0.15
field npn_max_nx: int = 10
field npn_min_nx: int = 1
field ntap1_max_size: float = 10000.0
field ntap1_min_size: float = 0.78
field nw_activ_over_hv: float = 0.62
field nw_activ_over_lv: float = 0.31
field pSD_a: float = 0.31
field pmos_hv_max_length: float = 10.0
field pmos_hv_max_nf: int = 100
field pmos_hv_max_width: float = 10.0
field pmos_hv_min_length: float = 0.4
field pmos_hv_min_width: float = 0.3
field pmos_max_length: float = 10.0
field pmos_max_nf: int = 100
field pmos_max_width: float = 10.0
field pmos_min_length: float = 0.13
field pmos_min_width: float = 0.15
field pnp_max_length: float = 1000.0
field pnp_max_width: float = 2.0
field pnp_min_length: float = 0.68
field pnp_min_width: float = 0.3
field precision: float = 1e-09
field psd_activ_over: float = 0.18
field psd_gate_over_hv: float = 0.4
field psd_gate_over_lv: float = 0.3
field ptap1_max_size: float = 10000000.0
field ptap1_min_size: float = 0.78
field rf_active_gate_dist_x: float = 0.13
field rf_active_gate_dist_x_wide: float = 0.17
field rf_active_gate_dist_y: float = 0.235
field rf_channel_dist_base: float = 0.38
field rf_channel_dist_step: float = 0.03
field rf_endpiece_base: float = 0.345
field rf_endpiece_step: float = 0.065
field rf_gate_cont_margin_multi: float = 0.36
field rf_gate_cont_margin_single: float = 0.075
field rf_gate_cont_offset: float = 0.02
field rf_gate_guard_dist: float = 0.36
field rf_gate_pin_half_width: float = 0.1
field rf_gate_ring_width: float = 0.3
field rf_guard_cont_offset_h: float = 0.08
field rf_guard_cont_offset_v: float = 0.11
field rf_guard_ring_m1_width: float = 0.32
field rf_guard_ring_width: float = 0.32
field rf_nw_pmos_hv: float = 0.35
field rf_nw_pmos_lv: float = 0.31
field rf_psd_pmos_inset_x: float = 0.5
field rf_psd_pmos_inset_y: float = 0.6
field rf_psd_ring_width: float = 0.38
field rf_sd_margin_x: float = 0.05
field rf_sd_margin_y: float = 0.015
field rf_sd_metal_adjust: float = 0.02
field rf_sd_metal_width_over: float = 0.14
field rf_sd_row_spacing: float = 0.13
field rf_short_wide_adjust: float = 0.005
field rf_short_wide_l_threshold: float = 0.14
field rf_short_wide_w_threshold: float = 1.0
field rf_tgo_nmos: float = 0.35
field rf_tgo_pmos: float = 0.31
field rfcmim_caspec: float = 1.5
field rfcmim_cpspec: float = 0.04
field rfcmim_lwd: float = 0.01
field rfcmim_max_size: float = 1000.0
field rfcmim_min_size: float = 7.0
field rfnmos_hv_max_length: float = 10.0
field rfnmos_hv_max_nf: int = 40
field rfnmos_hv_max_width: float = 10.0
field rfnmos_hv_min_length: float = 0.45
field rfnmos_hv_min_width: float = 0.33
field rfnmos_max_length: float = 10.0
field rfnmos_max_nf: int = 40
field rfnmos_max_width: float = 10.0
field rfnmos_min_length: float = 0.13
field rfnmos_min_width: float = 0.15
field rfpmos_hv_max_length: float = 10.0
field rfpmos_hv_max_nf: int = 40
field rfpmos_hv_max_width: float = 10.0
field rfpmos_hv_min_length: float = 0.4
field rfpmos_hv_min_width: float = 0.39
field rfpmos_max_length: float = 10.0
field rfpmos_max_nf: int = 40
field rfpmos_max_width: float = 10.0
field rfpmos_min_length: float = 0.13
field rfpmos_min_width: float = 0.15
field rhigh_max_length: float = 1000.0
field rhigh_max_width: float = 1000.0
field rhigh_min_length: float = 0.96
field rhigh_min_width: float = 0.5
field rhigh_sheet_res: float = 1350.0
field rppd_max_length: float = 1000.0
field rppd_max_width: float = 1000.0
field rppd_min_length: float = 0.5
field rppd_min_width: float = 0.5
field rppd_sheet_res: float = 300.0
field rsil_max_length: float = 1000.0
field rsil_max_width: float = 1000.0
field rsil_min_length: float = 0.5
field rsil_min_width: float = 0.5
field rsil_sheet_res: float = 7.0
field sealring_max_height: float = 25000.0
field sealring_max_width: float = 32000.0
field sealring_min_height: float = 150.0
field sealring_min_width: float = 150.0
field tgo_activ: float = 0.27
field tgo_gatpoly: float = 0.34
field topmetal1_spacing: float = 1.0
field topmetal1_width: float = 1.0
field topmetal2_spacing: float = 2.0
field topmetal2_width: float = 2.0
field via1_enc: float = 0.01
field via1_enc_metal: float = 0.06
field via1_endcap: float = 0.05
field via1_size: float = 0.26
field via1_size_rf: float = 0.19
field via1_spacing: float = 0.36
field via1_spacing_narrow: float = 0.22
field via1_spacing_wide: float = 0.29
field via1_width_threshold: float = 1.52

Cross-Sections#

Pre-defined cross-sections for electrical routing on each metal layer. All cross-sections use port_type="electrical".

Name

Layer

Default Width

metal1_routing

Metal1drawing (8, 0)

0.28 um

metal2_routing

Metal2drawing (10, 0)

0.32 um

metal3_routing

Metal3drawing (30, 0)

0.40 um

topmetal1_routing

TopMetal1drawing (126, 0)

1.0 um

topmetal2_routing

TopMetal2drawing (134, 0)

2.0 um

strip and metal_routing are aliases for topmetal2_routing.

ihp.tech.metal_routing(*, width=2.0, layer=<LayerMapIHP.TopMetal2drawing: 354>, radius=None, port_names=('e1', 'e2'), port_types=('electrical', 'electrical'), **kwargs)

Return Metal Strip cross_section.

Parameters:
  • width (float)

  • layer (tuple[int, int] | str | int | LayerEnum)

  • radius (float | None)

  • port_names (tuple[str, str])

  • port_types (tuple[str, str])

  • kwargs (Any)

Return type:

CrossSection

Routing Strategies#

The PDK registers these routing strategies for use with GDSFactory’s auto-routing:

Strategy

Description

route_bundle

Bundle routing with strip (TopMetal2) cross-section

route_bundle_rib

Bundle routing with rib cross-section

route_bundle_metal

Metal bundle routing with bends (bend_metal)

route_bundle_metal_corner

Metal bundle routing with 90-degree corners (wire_corner)

route_astar

A* pathfinding on TopMetal2 with euler bends

route_astar_metal

A* pathfinding on TopMetal2 with wire corners

Connectivity#

The PDK defines layer connectivity for LVS and routing:

Metal1  -- Via1    -- Metal2
Metal2  -- Via2    -- Metal3
Metal3  -- Via3    -- Metal4
Metal4  -- Via4    -- Metal5
Metal5  -- TopVia1 -- TopMetal1
TopMetal1 -- TopVia2 -- TopMetal2