Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions src/glayout/blocks/ATLAS/current_mirror.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
from glayout.flow.placement.two_transistor_interdigitized import two_nfet_interdigitized, two_pfet_interdigitized
from glayout.flow.pdk.mappedpdk import MappedPDK
from glayout.flow.routing.c_route import c_route
from glayout.flow.routing.L_route import L_route
from glayout.flow.routing.straight_route import straight_route
from glayout.flow.spice.netlist import Netlist
from glayout.flow.pdk.sky130_mapped import sky130_mapped_pdk as sky130
from glayout.flow.primitives.fet import nmos, pmos
from glayout.flow.primitives.guardring import tapring
from glayout.flow.pdk.util.port_utils import add_ports_perimeter,rename_ports_by_orientation
from glayout.placement.two_transistor_interdigitized import two_nfet_interdigitized, two_pfet_interdigitized
from glayout.pdk.mappedpdk import MappedPDK
from glayout.routing.c_route import c_route
from glayout.routing.L_route import L_route
from glayout.routing.straight_route import straight_route
from glayout.spice.netlist import Netlist
from glayout.pdk.sky130_mapped import sky130_mapped_pdk as sky130
from glayout.primitives.fet import nmos, pmos
from glayout.primitives.guardring import tapring
from glayout.util.port_utils import add_ports_perimeter, rename_ports_by_orientation
from gdsfactory.component import Component
from gdsfactory.cell import cell
from glayout.flow.pdk.util.comp_utils import evaluate_bbox, prec_center, prec_ref_center, align_comp_to_port
from glayout.util.comp_utils import evaluate_bbox, prec_center, prec_ref_center, align_comp_to_port
from typing import Optional, Union
from glayout.flow.pdk.sky130_mapped import sky130_mapped_pdk
from glayout.flow.primitives.via_gen import via_stack
from glayout.pdk.sky130_mapped import sky130_mapped_pdk
from glayout.primitives.via_gen import via_stack
from gdsfactory.components import text_freetype, rectangle

try:
Expand Down
72 changes: 0 additions & 72 deletions src/glayout/blocks/ATLAS/debug_netlist.py

This file was deleted.

81 changes: 0 additions & 81 deletions src/glayout/blocks/ATLAS/debug_sample_11.py

This file was deleted.

26 changes: 13 additions & 13 deletions src/glayout/blocks/ATLAS/diff_pair.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,26 @@
from gdsfactory.components.rectangle import rectangle
from gdsfactory.routing.route_quad import route_quad
from gdsfactory.routing.route_sharp import route_sharp
from glayout.flow.pdk.mappedpdk import MappedPDK
from glayout.flow.pdk.util.comp_utils import align_comp_to_port, evaluate_bbox, movex, movey
from glayout.flow.pdk.util.port_utils import (
from glayout.pdk.mappedpdk import MappedPDK
from glayout.util.comp_utils import align_comp_to_port, evaluate_bbox, movex, movey
from glayout.util.port_utils import (
add_ports_perimeter,
get_orientation,
print_ports,
rename_ports_by_list,
rename_ports_by_orientation,
set_port_orientation,
)
from glayout.flow.pdk.util.snap_to_grid import component_snap_to_grid
from glayout.flow.placement.common_centroid_ab_ba import common_centroid_ab_ba
from glayout.flow.primitives.fet import nmos, pmos
from glayout.flow.primitives.guardring import tapring
from glayout.flow.primitives.via_gen import via_stack
from glayout.flow.routing.c_route import c_route
from glayout.flow.routing.smart_route import smart_route
from glayout.flow.routing.straight_route import straight_route
from glayout.flow.spice import Netlist
from glayout.flow.pdk.sky130_mapped import sky130_mapped_pdk
from glayout.util.snap_to_grid import component_snap_to_grid
from glayout.placement.common_centroid_ab_ba import common_centroid_ab_ba
from glayout.primitives.fet import nmos, pmos
from glayout.primitives.guardring import tapring
from glayout.primitives.via_gen import via_stack
from glayout.routing.c_route import c_route
from glayout.routing.smart_route import smart_route
from glayout.routing.straight_route import straight_route
from glayout.spice import Netlist
from glayout.pdk.sky130_mapped import sky130_mapped_pdk
from gdsfactory.components import text_freetype
try:
from evaluator_wrapper import run_evaluation
Expand Down
2 changes: 1 addition & 1 deletion src/glayout/blocks/ATLAS/evaluator_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from gdsfactory.typings import Component

from robust_verification import run_robust_verification
from glayout.flow.blocks.evaluator_box.physical_features import run_physical_feature_extraction
from glayout.blocks.evaluator_box.physical_features import run_physical_feature_extraction

def get_next_filename(base_name="evaluation", extension=".json"):
"""
Expand Down
34 changes: 18 additions & 16 deletions src/glayout/blocks/ATLAS/fvf.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
from glayout.flow.pdk.mappedpdk import MappedPDK
from glayout.flow.pdk.sky130_mapped import sky130_mapped_pdk
from glayout.pdk.mappedpdk import MappedPDK
from glayout.pdk.sky130_mapped import sky130_mapped_pdk
from gdsfactory.cell import cell
from gdsfactory.component import Component
from gdsfactory import Component
from glayout.flow.primitives.fet import nmos, pmos, multiplier
from glayout.flow.pdk.util.comp_utils import evaluate_bbox, prec_center, prec_ref_center, align_comp_to_port
from glayout.flow.pdk.util.snap_to_grid import component_snap_to_grid
from glayout.flow.pdk.util.port_utils import rename_ports_by_orientation
from glayout.flow.routing.straight_route import straight_route
from glayout.flow.routing.c_route import c_route
from glayout.flow.routing.L_route import L_route
from glayout.flow.primitives.guardring import tapring
from glayout.flow.pdk.util.port_utils import add_ports_perimeter
from glayout.flow.spice.netlist import Netlist
from glayout.flow.primitives.via_gen import via_stack
from glayout.primitives.fet import nmos, pmos, multiplier
from glayout.util.comp_utils import evaluate_bbox, prec_center, prec_ref_center, align_comp_to_port
from glayout.util.snap_to_grid import component_snap_to_grid
from glayout.util.port_utils import rename_ports_by_orientation
from glayout.routing.straight_route import straight_route
from glayout.routing.c_route import c_route
from glayout.routing.L_route import L_route
from glayout.primitives.guardring import tapring
from glayout.util.port_utils import add_ports_perimeter
from glayout.spice.netlist import Netlist
from glayout.primitives.via_gen import via_stack
from gdsfactory.components import text_freetype, rectangle
from evaluator_wrapper import run_evaluation # CUSTOM IMPLEMENTED EVAL BOX

def get_component_netlist(component):
"""Helper function to get netlist object from component info, compatible with all gdsfactory versions"""
from glayout.flow.spice.netlist import Netlist
from glayout.spice.netlist import Netlist

# Try to get stored object first (for older gdsfactory versions)
if 'netlist_obj' in component.info:
Expand Down Expand Up @@ -183,10 +183,12 @@ def flipped_voltage_follower(
component = component_snap_to_grid(rename_ports_by_orientation(top_level))
#component = rename_ports_by_orientation(top_level)

# Store netlist as string to avoid gymnasium info dict type restrictions
# Store netlist as string for LVS (avoids gymnasium info dict type restrictions)
# Compatible with both gdsfactory 7.7.0 and 7.16.0+ strict Pydantic validation
netlist_obj = fvf_netlist(fet_1, fet_2)
component.info['netlist'] = str(netlist_obj)
component.info['netlist'] = netlist_obj.generate_netlist()
# Store the Netlist object for hierarchical netlist building (used by lvcm.py etc.)
component.info['netlist_obj'] = netlist_obj
# Store serialized netlist data for reconstruction if needed
component.info['netlist_data'] = {
'circuit_name': netlist_obj.circuit_name,
Expand Down
36 changes: 19 additions & 17 deletions src/glayout/blocks/ATLAS/lvcm.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
from glayout.flow.pdk.mappedpdk import MappedPDK
from glayout.flow.pdk.sky130_mapped import sky130_mapped_pdk
from glayout.pdk.mappedpdk import MappedPDK
from glayout.pdk.sky130_mapped import sky130_mapped_pdk
from gdsfactory.component import Component
from gdsfactory.component_reference import ComponentReference
from gdsfactory.cell import cell
from gdsfactory import Component
from gdsfactory.components import text_freetype, rectangle
from glayout.flow.primitives.fet import nmos, pmos, multiplier
from glayout.flow.pdk.util.comp_utils import evaluate_bbox, prec_center, align_comp_to_port, prec_ref_center
from glayout.flow.pdk.util.snap_to_grid import component_snap_to_grid
from glayout.flow.pdk.util.port_utils import rename_ports_by_orientation
from glayout.flow.routing.straight_route import straight_route
from glayout.flow.routing.c_route import c_route
from glayout.flow.routing.L_route import L_route
from glayout.flow.primitives.guardring import tapring
from glayout.flow.pdk.util.port_utils import add_ports_perimeter
from glayout.flow.spice.netlist import Netlist
from glayout.flow.blocks.elementary.LHS.fvf import fvf_netlist, flipped_voltage_follower
from glayout.flow.primitives.via_gen import via_stack
from glayout.primitives.fet import nmos, pmos, multiplier
from glayout.util.comp_utils import evaluate_bbox, prec_center, align_comp_to_port, prec_ref_center
from glayout.util.snap_to_grid import component_snap_to_grid
from glayout.util.port_utils import rename_ports_by_orientation
from glayout.routing.straight_route import straight_route
from glayout.routing.c_route import c_route
from glayout.routing.L_route import L_route
from glayout.primitives.guardring import tapring
from glayout.util.port_utils import add_ports_perimeter
from glayout.spice.netlist import Netlist
from fvf import fvf_netlist, flipped_voltage_follower # Import from local ATLAS fvf.py
from glayout.primitives.via_gen import via_stack
from typing import Optional
from evaluator_wrapper import run_evaluation

Expand Down Expand Up @@ -67,8 +67,9 @@ def add_lvcm_labels(lvcm_in: Component,
def low_voltage_cmirr_netlist(bias_fvf: Component, cascode_fvf: Component, fet_1_ref: ComponentReference, fet_2_ref: ComponentReference, fet_3_ref: ComponentReference, fet_4_ref: ComponentReference) -> Netlist:

netlist = Netlist(circuit_name='Low_voltage_current_mirror', nodes=['IBIAS1', 'IBIAS2', 'GND', 'IOUT1', 'IOUT2'])
netlist.connect_netlist(bias_fvf.info['netlist'], [('VIN','IBIAS1'),('VBULK','GND'),('Ib','IBIAS1'),('VOUT','local_net_1')])
netlist.connect_netlist(cascode_fvf.info['netlist'], [('VIN','IBIAS1'),('VBULK','GND'),('Ib', 'IBIAS2'),('VOUT','local_net_2')])
# Use netlist_obj for hierarchical netlist building
netlist.connect_netlist(bias_fvf.info['netlist_obj'], [('VIN','IBIAS1'),('VBULK','GND'),('Ib','IBIAS1'),('VOUT','local_net_1')])
netlist.connect_netlist(cascode_fvf.info['netlist_obj'], [('VIN','IBIAS1'),('VBULK','GND'),('Ib', 'IBIAS2'),('VOUT','local_net_2')])
fet_1A_ref=netlist.connect_netlist(fet_2_ref.info['netlist'], [('D', 'IOUT1'),('G','IBIAS1'),('B','GND')])
fet_2A_ref=netlist.connect_netlist(fet_4_ref.info['netlist'], [('D', 'IOUT2'),('G','IBIAS1'),('B','GND')])
fet_1B_ref=netlist.connect_netlist(fet_1_ref.info['netlist'], [('G','IBIAS2'),('S', 'GND'),('B','GND')])
Expand Down Expand Up @@ -184,7 +185,8 @@ def low_voltage_cmirror(
top_level.add_ports(fet_4_ref.get_ports_list(), prefix="M_4_A_")

component = component_snap_to_grid(rename_ports_by_orientation(top_level))
component.info['netlist'] = low_voltage_cmirr_netlist(bias_fvf, cascode_fvf, fet_1_ref, fet_2_ref, fet_3_ref, fet_4_ref)
netlist_obj = low_voltage_cmirr_netlist(bias_fvf, cascode_fvf, fet_1_ref, fet_2_ref, fet_3_ref, fet_4_ref)
component.info['netlist'] = netlist_obj.generate_netlist()

return component

Expand Down
22 changes: 11 additions & 11 deletions src/glayout/blocks/ATLAS/opamp.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
from gdsfactory.read.import_gds import import_gds
from gdsfactory.components import text_freetype, rectangle
from glayout.flow.pdk.util.comp_utils import prec_array, movey, align_comp_to_port, prec_ref_center
from glayout.flow.pdk.util.port_utils import add_ports_perimeter, print_ports
from glayout.util.comp_utils import prec_array, movey, align_comp_to_port, prec_ref_center
from glayout.util.port_utils import add_ports_perimeter, print_ports
from gdsfactory.component import Component
from glayout.flow.pdk.mappedpdk import MappedPDK
from glayout.flow.blocks.composite.opamp.opamp import opamp
from glayout.flow.routing.L_route import L_route
from glayout.flow.routing.straight_route import straight_route
from glayout.flow.routing.c_route import c_route
from glayout.flow.primitives.via_gen import via_array
from glayout.pdk.mappedpdk import MappedPDK
from glayout.blocks.composite.opamp.opamp import opamp
from glayout.routing.L_route import L_route
from glayout.routing.straight_route import straight_route
from glayout.routing.c_route import c_route
from glayout.primitives.via_gen import via_array
from gdsfactory.cell import cell, clear_cache
from glayout.flow.pdk.sky130_mapped import sky130_mapped_pdk as pdk
from glayout.flow.pdk.util.snap_to_grid import component_snap_to_grid
from glayout.flow.pdk.util.component_array_create import write_component_matrix
from glayout.pdk.sky130_mapped import sky130_mapped_pdk as pdk
from glayout.util.snap_to_grid import component_snap_to_grid
from glayout.util.component_array_create import write_component_matrix
from evaluator_wrapper import run_evaluation
def sky130_add_opamp_2_labels(opamp_in: Component) -> Component:
"""adds opamp labels for extraction, without adding pads
Expand Down
Loading