#---------------------------------------------------------------------
# 1) must set the variable PDK_ROOT
#---------------------------------------------------------------------

puts stdout "Sourcing design .magicrc for technology sky130A ..."

#---------------------------------------------------------------------

# Put grid on 0.005 pitch.  This is important, as some commands don't
# rescale the grid automatically (such as lef read?).

set scalefac [tech lambda]
if {[lindex $scalefac 1] < 2} {
    scalegrid 1 2
}
#---------------------------------------------------------------------
#
# Allow override of DRC on/off from environment variable DRC
#
#---------------------------------------------------------------------
if {[catch {set DRC $env(DRC)}]} {
    # default value
    	drc  off
} else {
	drc style drc(full)
	drc euclidean on
	sdrc $DRC
}
#
#---------------------------------------------------------------------
# Allow override of PDK path from environment variable PDKPATH
#
if {[catch {set PDKPATH $env(PDKPATH)}]} {
    set PDKPATH "$::env(PDK_ROOT)/sky130A"
}
#---------------------------------------------------------------------
# loading technology
tech load $PDKPATH/libs.tech/magic/current/sky130A.tech

#---------------------------------------------------------------------
# load device generator
source $PDKPATH/libs.tech/magic/current/sky130A.tcl

#---------------------------------------------------------------------
# load bind keys (optional)
# source $PDKPATH/libs.tech/magic/current/sky130A-BindKeys

#---------------------------------------------------------------------
# set units to lambda grid 
snap lambda

#---------------------------------------------------------------------

# set sky130 standard power, ground, and substrate names
set VDD VPWR
set GND VGND
set SUB VSUBS

#---------------------------------------------------------------------

# Allow override of type of magic library views used, "mag" or "maglef",
# from environment variable MAGTYPE. Deafault value is MAGTYPE=maglef

if {[catch {set MAGTYPE $env(MAGTYPE)}]} {
   set MAGTYPE maglef
}

path search [concat "../$MAGTYPE" [path search]]

#---------------------------------------------------------------------

# add path to reference cells
if {[file isdir ${PDKPATH}/libs.ref/${MAGTYPE}]} {
    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_pr
    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_io
    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hd
    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hdll
    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hs
    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hvl
    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_lp
    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_ls
    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_ms
    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_osu_sc
} else {
    addpath ${PDKPATH}/libs.ref/sky130_fd_pr/${MAGTYPE}
    addpath ${PDKPATH}/libs.ref/sky130_fd_io/${MAGTYPE}
    addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hd/${MAGTYPE}
    addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hdll/${MAGTYPE}
    addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hs/${MAGTYPE}
    addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hvl/${MAGTYPE}
    addpath ${PDKPATH}/libs.ref/sky130_fd_sc_lp/${MAGTYPE}
    addpath ${PDKPATH}/libs.ref/sky130_fd_sc_ls/${MAGTYPE}
    addpath ${PDKPATH}/libs.ref/sky130_fd_sc_ms/${MAGTYPE}
    addpath ${PDKPATH}/libs.ref/sky130_osu_sc/${MAGTYPE}
}

# add path to GDS cells

    addpath ../gds

# add path to IP from catalog.  This procedure defined in the PDK script.
catch {magic::query_mylib_ip}
# add path to local IP from user design space.  Defined in the PDK script.
catch {magic::query_my_projects}
