Layout#

Layout driven flow#

You can import the PDK and layout any of the standard cells

import gdsfactory as gf
import sky130.components as sc
import sky130.tech as st
2024-05-04 23:24:01.790 | INFO     | gdsfactory.pdk:register_cells_yaml:405 - Registered cell 'sample'
c = sc.sky130_fd_sc_hd__a2111o_1()
c
2024-05-04 23:24:01.803 | WARNING  | sky130.components:sky130_fd_sc_hd__a2111o_1:59 - UserWarning: decorator is deprecated and will be removed soon. import_gds
2024-05-04 23:24:01.810 | WARNING  | gdsfactory.klive:show:49 - UserWarning: Could not connect to klive server. Is klayout open and klive plugin installed?
sky130_fd_sc_hd__a2111o_1: uid db2a02ec, ports ['VGND', 'VPWR'], references [], 98 polygons
../_images/8fde5eb90363114c2a8ff051d1a3152c246e34aee640952b85fbcf622cc2aa4e.png
scene = c.to_3d()
scene.show()

TODO: add Parametric cells natively into gdsfactory sky130 pdk.

c = gf.Component()
g1 = c << sc.sky130_fd_sc_hd__a2111o_1()
g2 = c << sc.sky130_fd_sc_hd__a311oi_4()
g2.move((15, 10))
c
2024-05-04 23:24:02.883 | WARNING  | sky130.components:sky130_fd_sc_hd__a311oi_4:809 - UserWarning: decorator is deprecated and will be removed soon. import_gds
2024-05-04 23:24:02.887 | WARNING  | gdsfactory.show:show:47 - UserWarning: Unnamed cells, 1 in 'Unnamed_f56efae1'
2024-05-04 23:24:02.889 | WARNING  | gdsfactory.klive:show:49 - UserWarning: Could not connect to klive server. Is klayout open and klive plugin installed?
2024-05-04 23:24:02.974 | WARNING  | gdsfactory.component:plot_klayout:1645 - UserWarning: Unnamed cells, 1 in 'Unnamed_f56efae1'
Unnamed_f56efae1: uid f56efae1, ports [], references ['sky130_fd_sc_hd__a2111o_1_1', 'sky130_fd_sc_hd__a311oi_4_1'], 0 polygons
../_images/3a4d43f155bb6ddd4ec604b54382fffb4fcf9607e1c3809effe6f979f629316b.png
c = gf.Component("demo_connect")
g1 = c << sc.sky130_fd_sc_hd__a2111o_1()
g2 = c << sc.sky130_fd_sc_hd__a311oi_4()
g2.move((15, 10))
route = gf.routing.get_route_electrical(
    g1.ports["VPWR"], g2.ports["VPWR"], cross_section=st.xs_metal1
)
c.add(route.references)
c
demo_connect: uid e20c4f39, ports [], references ['sky130_fd_sc_hd__a2111o_1_1', 'sky130_fd_sc_hd__a311oi_4_1', 'wire_corner_1', 'straight_1', 'straight_2'], 0 polygons
../_images/7af037ba860f78490804382fd994080154588fd43fbc75767b121f60219f9ffd.png
scene = c.to_3d()
scene.show()

Netlist driven flow#

For netlist driven flow you can define circuits for place and route. You have two options:

  1. in python

  2. in YAML

Spice simulations#

You can use PySpice for running simulations.

gdsfactory can extract the netlist and simulate the circuit.

TODO: add some relevant examples.