#----------------------------------------------------------------------
# PATH DEFINITIONS
#----------------------------------------------------------------------
set DESIGN_PATH [exec pwd]
set PDK_PATH $env(SKY130_PDK_PATH)

#----------------------------------------------------------------------
# xschem system-wide design library paths: xschem_library_path
#----------------------------------------------------------------------
append XSCHEM_LIBRARY_PATH :${DESIGN_PATH}
append XSCHEM_LIBRARY_PATH :${DESIGN_PATH}/xschem/symbols
set XSCHEM_SKY130_SCRIPTS_PATH ${DESIGN_PATH}/xschem/scripts

#----------------------------------------------------------------------
# window to open on startup: xschem_start_window
#----------------------------------------------------------------------
set XSCHEM_START_WINDOW ${DESIGN_PATH}/top/top.sch

#----------------------------------------------------------------------
# DIRECTORY WHERE SIMULATIONS, NETLIST AND SIMULATOR OUTPUTS ARE PLACED
#----------------------------------------------------------------------
set netlist_dir ${DESIGN_PATH}/../sim

#----------------------------------------------------------------------
# change default [] with some other characters for bussed signals 
# in spice netlists (example: data[7] --> data<7>) 
# set bus_replacement_char {<>} 
#----------------------------------------------------------------------
set bus_replacement_char {__}

#----------------------------------------------------------------------
# some default behavior
#----------------------------------------------------------------------
set netlist_type spice
set hspice_netlist 1
set initial_geometry {1920x1080}
set persistent_command 1

#----------------------------------------------------------------------
# custom grid / snap value settings
#----------------------------------------------------------------------
set grid 20
set snap 10

#----------------------------------------------------------------------
# custom colors  may be defined here
#----------------------------------------------------------------------

set light_colors { 
"#eee4c2" "#268BD2" 
"#aaaaaa" "#222222" 
"#229900" "#bb2200" 
"#00ccee" "#ff0000" 
"#888800" "#00aaaa"
"#880088" "#00ff00" 
"#0000cc" "#666600" 
"#557755" "#aa2222" 
"#7ccc40" "#00ffcc" 
"#ce0097" "#d2d46b"
"#ef6158" "#fdb200" }

set dark_colors {
"#222222" "#00ccee" 
"#3f3f3f" "#cccccc" 
"#88dd00" "#bb2200" 
"#00ccee" "#ff0000" 
"#ffff00" "#ffffff"
"#ff00ff" "#00ff00" 
"#0000cc" "#aaaa00" 
"#aaccaa" "#ff7777" 
"#bfff81" "#00ffcc" 
"#ce0097" "#d2d46b"
"#ef6158" "#fdb200" }

#----------------------------------------------------------------------
# set custom colors for xschem libraries matching certain patterns
#----------------------------------------------------------------------
array unset dircolor
set dircolor(sky130_fd_pr$) blue
set dircolor(sky130_tests$) blue
set dircolor(xschem_sky130$) blue
set dircolor(xschem_library$) red
set dircolor(devices$) red

#----------------------------------------------------------------------
# keybindings
#----------------------------------------------------------------------

set replace_key(Key-a) m
set replace_key(Key-d) Delete
set replace_key(Key-i) Insert
set replace_key(Key-r) Control-e
set replace_key(Key-y) Control-c
set replace_key(Key-q) Shift-Q
set replace_key(Shift-Q) q
set replace_key(Key-l) Alt-Shift-L
set replace_key(Shift-L) Alt-l
set replace_key(Shift-L) Alt-l
set replace_key(Key-p) Control-w

#----------------------------------------------------------------------
# terminal
#----------------------------------------------------------------------
set terminal {gnome-terminal}

#----------------------------------------------------------------------
# editor
#----------------------------------------------------------------------
set editor { xterm -geometry 70x25 -e nvim }

#----------------------------------------------------------------------
# tcl files to load at startup
#----------------------------------------------------------------------
lappend tcl_files ${XSCHEM_SHAREDIR}/ngspice_backannotate.tcl
lappend tcl_files ${XSCHEM_SKY130_SCRIPTS_PATH}/sky130_models.tcl

#----------------------------------------------------------------------
# skywater pdk specific variables
#----------------------------------------------------------------------
set SKYWATER_MODELS ${PDK_PATH}/sky130_fd_pr_ngspice/latest
set SKYWATER_STDCELLS ${PDK_PATH}/sky130_fd_sc_hd/latest
