Skip to content

Netlist export

GDSFactory exports netlists in the form of gds-extracted netlist's and convert it to Spectre, Spice and Xyce simulator schematic file formats tHanks to the VLSIR library.

Simulator and Analysis Support

Each spice-class simulator includes its own netlist syntax and opinions about the specification for analyses. See

Analysis Spectre Xyce NgSpice
Op
Dc
Tran
Ac
Noise
Sweep
Monte Carlo
Custom
from io import StringIO

from gdsfactory.samples.demo.lvs import pads_correct

import gplugins.vlsir as gs
from gplugins.klayout.get_netlist import get_netlist
c = pads_correct()
c.plot()

png

gdspath = c.write_gds()

# get the netlist
kdbnetlist = get_netlist(gdspath)

# convert it to a VLSIR Package
pkg = gs.kdb_vlsir(kdbnetlist, domain="gplugins.klayout.example")
Wrote '/home/runner/work/gplugins/gplugins/gplugins/klayout/layers.lyp'
/home/runner/work/gplugins/gplugins/gplugins/klayout/d25/generic.lyd25
Wrote '/home/runner/work/gplugins/gplugins/gplugins/klayout/tech.lyt'

Spectre RF

out = StringIO()
gs.export_netlist(pkg, dest=out, fmt="spectre")
print(out.getvalue())
// `circuit.Package` `gplugins.klayout.example`
// Generated by `vlsirtools.SpectreNetlister`
//

subckt straight_gdsfactorypcomponentspwaveguidespstraight_L367_12efeeb9 
  + 1 
  + // No parameters


ends

subckt straight_gdsfactorypcomponentspwaveguidespstraight_L190_c5fd8eec 
  + 1 
  + // No parameters


ends

subckt straight_gdsfactorypcomponentspwaveguidespstraight_L3_N_51c3cb9c 
  + 1 
  + // No parameters


ends

subckt wire_corner_gdsfactorypcomponentspwaveguidespwire_CSmet_507ea7e9 
  + 1 
  + // No parameters


ends

subckt straight_gdsfactorypcomponentspwaveguidespstraight_L380_9b8fde9a 
  + 1 
  + // No parameters


ends

subckt taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921 
  + 1 
  + // No parameters


ends

subckt pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c 
  + 1 2 
  + // No parameters


ends

subckt pads_correct_Ppad_CSmetal3 
  + // No ports 
  + // No parameters

  1
  + // Ports: 
  + ( tl,tr tl )
  +  pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c 
  + // No parameters

  2
  + // Ports: 
  + ( tl,tr tr )
  +  pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c 
  + // No parameters

  3
  + // Ports: 
  + ( bl,br br )
  +  pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c 
  + // No parameters

  4
  + // Ports: 
  + ( bl,br bl )
  +  pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c 
  + // No parameters

  5
  + // Ports: 
  + ( tl,tr )
  +  taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921 
  + // No parameters

  6
  + // Ports: 
  + ( tl,tr )
  +  straight_gdsfactorypcomponentspwaveguidespstraight_L3_N_51c3cb9c 
  + // No parameters

  7
  + // Ports: 
  + ( tl,tr )
  +  wire_corner_gdsfactorypcomponentspwaveguidespwire_CSmet_507ea7e9 
  + // No parameters

  8
  + // Ports: 
  + ( tl,tr )
  +  straight_gdsfactorypcomponentspwaveguidespstraight_L190_c5fd8eec 
  + // No parameters

  9
  + // Ports: 
  + ( tl,tr )
  +  wire_corner_gdsfactorypcomponentspwaveguidespwire_CSmet_507ea7e9 
  + // No parameters

  10
  + // Ports: 
  + ( tl,tr )
  +  taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921 
  + // No parameters

  11
  + // Ports: 
  + ( tl,tr )
  +  straight_gdsfactorypcomponentspwaveguidespstraight_L367_12efeeb9 
  + // No parameters

  12
  + // Ports: 
  + ( bl,br )
  +  taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921 
  + // No parameters

  13
  + // Ports: 
  + ( bl,br )
  +  straight_gdsfactorypcomponentspwaveguidespstraight_L380_9b8fde9a 
  + // No parameters

  14
  + // Ports: 
  + ( bl,br )
  +  taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921 
  + // No parameters


ends

Xyce

out = StringIO()
gs.export_netlist(pkg, dest=out, fmt="xyce")
print(out.getvalue())
; `circuit.Package` `gplugins.klayout.example`
; Generated by `vlsirtools.XyceNetlister`
;

.SUBCKT straight_gdsfactorypcomponentspwaveguidespstraight_L367_12efeeb9
+ 1 
; No parameters

.ENDS

.SUBCKT straight_gdsfactorypcomponentspwaveguidespstraight_L190_c5fd8eec
+ 1 
; No parameters

.ENDS

.SUBCKT straight_gdsfactorypcomponentspwaveguidespstraight_L3_N_51c3cb9c
+ 1 
; No parameters

.ENDS

.SUBCKT wire_corner_gdsfactorypcomponentspwaveguidespwire_CSmet_507ea7e9
+ 1 
; No parameters

.ENDS

.SUBCKT straight_gdsfactorypcomponentspwaveguidespstraight_L380_9b8fde9a
+ 1 
; No parameters

.ENDS

.SUBCKT taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921
+ 1 
; No parameters

.ENDS

.SUBCKT pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c
+ 1 2 
; No parameters

.ENDS

.SUBCKT pads_correct_Ppad_CSmetal3
; No ports
; No parameters

x1
+ tl,tr tl 
+ pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c
+ ; No parameters

x2
+ tl,tr tr 
+ pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c
+ ; No parameters

x3
+ bl,br br 
+ pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c
+ ; No parameters

x4
+ bl,br bl 
+ pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c
+ ; No parameters

x5
+ tl,tr 
+ taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921
+ ; No parameters

x6
+ tl,tr 
+ straight_gdsfactorypcomponentspwaveguidespstraight_L3_N_51c3cb9c
+ ; No parameters

x7
+ tl,tr 
+ wire_corner_gdsfactorypcomponentspwaveguidespwire_CSmet_507ea7e9
+ ; No parameters

x8
+ tl,tr 
+ straight_gdsfactorypcomponentspwaveguidespstraight_L190_c5fd8eec
+ ; No parameters

x9
+ tl,tr 
+ wire_corner_gdsfactorypcomponentspwaveguidespwire_CSmet_507ea7e9
+ ; No parameters

x10
+ tl,tr 
+ taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921
+ ; No parameters

x11
+ tl,tr 
+ straight_gdsfactorypcomponentspwaveguidespstraight_L367_12efeeb9
+ ; No parameters

x12
+ bl,br 
+ taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921
+ ; No parameters

x13
+ bl,br 
+ straight_gdsfactorypcomponentspwaveguidespstraight_L380_9b8fde9a
+ ; No parameters

x14
+ bl,br 
+ taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921
+ ; No parameters

.ENDS

ngspice

out = StringIO()
gs.export_netlist(pkg, dest=out, fmt="spice")
print(out.getvalue())
* `circuit.Package` `gplugins.klayout.example`
* Generated by `vlsirtools.SpiceNetlister`
*

.SUBCKT straight_gdsfactorypcomponentspwaveguidespstraight_L367_12efeeb9
+ 1 
* No parameters

.ENDS

.SUBCKT straight_gdsfactorypcomponentspwaveguidespstraight_L190_c5fd8eec
+ 1 
* No parameters

.ENDS

.SUBCKT straight_gdsfactorypcomponentspwaveguidespstraight_L3_N_51c3cb9c
+ 1 
* No parameters

.ENDS

.SUBCKT wire_corner_gdsfactorypcomponentspwaveguidespwire_CSmet_507ea7e9
+ 1 
* No parameters

.ENDS

.SUBCKT straight_gdsfactorypcomponentspwaveguidespstraight_L380_9b8fde9a
+ 1 
* No parameters

.ENDS

.SUBCKT taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921
+ 1 
* No parameters

.ENDS

.SUBCKT pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c
+ 1 2 
* No parameters

.ENDS

.SUBCKT pads_correct_Ppad_CSmetal3
* No ports
* No parameters

x1
+ tl,tr tl 
+ pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c
* No parameters


x2
+ tl,tr tr 
+ pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c
* No parameters


x3
+ bl,br br 
+ pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c
* No parameters


x4
+ bl,br bl 
+ pad_gdsfactorypcomponentsppadsppad_S100_100_LMTOP_BLNon_457de54c
* No parameters


x5
+ tl,tr 
+ taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921
* No parameters


x6
+ tl,tr 
+ straight_gdsfactorypcomponentspwaveguidespstraight_L3_N_51c3cb9c
* No parameters


x7
+ tl,tr 
+ wire_corner_gdsfactorypcomponentspwaveguidespwire_CSmet_507ea7e9
* No parameters


x8
+ tl,tr 
+ straight_gdsfactorypcomponentspwaveguidespstraight_L190_c5fd8eec
* No parameters


x9
+ tl,tr 
+ wire_corner_gdsfactorypcomponentspwaveguidespwire_CSmet_507ea7e9
* No parameters


x10
+ tl,tr 
+ taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921
* No parameters


x11
+ tl,tr 
+ straight_gdsfactorypcomponentspwaveguidespstraight_L367_12efeeb9
* No parameters


x12
+ bl,br 
+ taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921
* No parameters


x13
+ bl,br 
+ straight_gdsfactorypcomponentspwaveguidespstraight_L380_9b8fde9a
* No parameters


x14
+ bl,br 
+ taper_gdsfactorypcomponentsptapersptaper_L10_W100_W10_L_e6a63921
* No parameters


.ENDS