#----------------------------------------------------------------------
# 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}
set XSCHEM_SKY130_SCRIPTS_PATH ${DESIGN_PATH}/xschem/scripts

# NOTE: You need update this to point to your xschem symbols,
#       or place the symbols in this location:
append XSCHEM_LIBRARY_PATH :${DESIGN_PATH}/xschem/symbols

#----------------------------------------------------------------------
# window to open on startup: xschem_start_window
#----------------------------------------------------------------------
# set XSCHEM_START_WINDOW ${DESIGN_PATH}/user_analog_project_wrapper.sch
set XSCHEM_START_WINDOW ${DESIGN_PATH}/top/xschem_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 dark_colors { 
"#ffffff" "#268BD2" 
"#aaaaaa" "#222222" 
"#229900" "#bb2200" 
"#00ccee" "#ff0000" 
"#888800" "#00aaaa"
"#880088" "#00ff00" 
"#0000cc" "#666600" 
"#557755" "#aa2222" 
"#7ccc40" "#00ffcc" 
"#ce0097" "#d2d46b"
"#ef6158" "#fdb200" }

set light_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
