#### xschemrc system configuration file #### values may be overridden by user's ~/.xschem/xschemrc configuration file #### or by project-local ./xschemrc ########################################################################### #### XSCHEM INSTALLATION DIRECTORY: XSCHEM_SHAREDIR ########################################################################### #### Normally there is no reason to set this variable if using standard #### installation. Location of files is set at compile time but may be overridden #### with following line: # set XSCHEM_SHAREDIR $env(HOME)/share/xschem ########################################################################### #### XSCHEM SYSTEM-WIDE DESIGN LIBRARY PATHS: XSCHEM_LIBRARY_PATH ########################################################################### #### If unset xschem starts with XSCHEM_LIBRARY_PATH set to the default, typically: # /home/schippes/.xschem/xschem_library # /home/schippes/share/xschem/xschem_library/devices # /home/schippes/share/doc/xschem/examples # /home/schippes/share/doc/xschem/ngspice # /home/schippes/share/doc/xschem/logic # /home/schippes/share/doc/xschem/xschem_simulator # /home/schippes/share/doc/xschem/binto7seg # /home/schippes/share/doc/xschem/pcb # /home/schippes/share/doc/xschem/rom8k #### Flush any previous definition set XSCHEM_LIBRARY_PATH {} #### include devices/*.sym append XSCHEM_LIBRARY_PATH ${XSCHEM_SHAREDIR}/xschem_library #### include skywater libraries. Here i use [pwd]. This works if i start xschem from here. append XSCHEM_LIBRARY_PATH :$env(PWD) # append XSCHEM_LIBRARY_PATH :/mnt/sda7/home/schippes/pdks/sky130A/libs.tech/xschem #### add ~/.xschem/xschem_library (USER_CONF_DIR is normally ~/.xschem) append XSCHEM_LIBRARY_PATH :$USER_CONF_DIR/xschem_library ########################################################################### #### SET CUSTOM COLORS FOR XSCHEM LIBRARIES MATCHING CERTAIN PATTERNS ########################################################################### #### each line contains a dircolor(pattern) followed by a color #### color can be an ordinary name (grey, brown, blue) or a hex code {#77aaff} #### hex code must be enclosed in braces 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 ########################################################################### #### WINDOW TO OPEN ON STARTUP: XSCHEM_START_WINDOW ########################################################################### #### Start without a design if no filename given on command line: #### To avoid absolute paths, use a path that is relative to one of the #### XSCHEM_LIBRARY_PATH directories. Default: empty set XSCHEM_START_WINDOW {sky130_tests/top.sch} ########################################################################### #### DIRECTORY WHERE SIMULATIONS, NETLIST AND SIMULATOR OUTPUTS ARE PLACED ########################################################################### #### If unset $USER_CONF_DIR/simulations is assumed (normally ~/.xschem/simulations) # set netlist_dir $env(HOME)/.xschem/simulations ########################################################################### #### NETLIST AND HIERARCHICAL PRINT EXCLUDE PATTERNS ########################################################################### #### xschem_libs is a list of patterns of cells to exclude from netlisting. #### Matching is done as regular expression on full cell path #### Example: #### set xschem_libs { {/cmoslib/} {/analoglib/.*pass} buffer } #### in this case all schematic cells of directory cmoslib and cells containing #### /analoglib/...pass and buffer will be excluded from netlisting #### default value: empty # set xschem_libs {} #### noprint_libs is a list with same rules as for xschem_libs. This #### variable controls hierarchical print #### default value: empty # set noprint_libs {} ########################################################################### #### CHANGE DEFAULT [] WITH SOME OTHER CHARACTERS FOR BUSSED SIGNALS #### IN SPICE NETLISTS (EXAMPLE: DATA[7] --> DATA<7>) ########################################################################### #### default: empty (use xschem default, [ ]) # set bus_replacement_char {<>} #### for XSPICE: replace square brackets as the are used for XSPICE vector nodes. # set bus_replacement_char {__} ########################################################################### #### SOME DEFAULT BEHAVIOR ########################################################################### #### Allowed values: spice, verilog, vhdl, tedax, default: spice # set netlist_type spice #### Some netlisting options (these are the defaults) # set verilog_2001 1 #### to use a fixed line with set change_lw to 0 and set some value to line_width #### these are the defaults # set line_width 0 # set change_lw 1 #### allow color postscript and svg exports. Default: 1, enable color # set color_ps 1 #### initial size of xschem window you can specify also position with (wxh+x+y) #### this is the default: # set initial_geometry {900x600} #### if set to 0, when zooming out allow the viewport do drift toward the mouse position, #### allowing to move away by zooming / unzooming with mouse wheel #### default setting: 0 # set unzoom_nodrift 0 #### if set to 1 allow to place multiple components with same name. #### Warning: this is normally not allowed in any simulation netlist. #### default: 0, do not allow place multiple elements with same name (refdes) # set disable_unique_names 0 #### if set to 1 continue drawing lines / wires after click #### default: 0 # set persistent_command 1 #### if set to 1 a wire is inserted when separating components that are #### connected by pins. Default: not enabled (0) # set connect_by_kissing 1 #### if set to 1 automatically join/trim wires while editing #### this may slow down on rally big designs. Can be disabled via menu #### default: 0 # set autotrim_wires 0 #### set widget scaling (mainly for font display), this is useful on 4K displays #### default: unset (tk uses its default) > 1.0 ==> bigger # set tk_scaling 1.7 #### disable some symbol layers. Default: none, all layers are visible. # set enable_layer(5) 0 ;# example to disable pin red boxes #### enable to scale grid point size as done with lines at close zoom, default: 0 # set big_grid_points 0 ########################################################################### #### EXPORT FORMAT TRANSLATORS, PNG AND PDF ########################################################################### #### command to translate xpm to png; (assumes command takes source #### and dest file as arguments, example: gm convert plot.xpm plot.png) #### default: {gm convert} # set to_png {gm convert} #### command to translate ps to pdf; (assumes command takes source #### and dest file as arguments, example: ps2pdf plot.ps plot.pdf) #### default: ps2pdf # set to_pdf ps2pdf set to_pdf {ps2pdf -dAutoRotatePages=/None} ########################################################################### #### UNDO: SAVE ON DISK OR KEEP IN MEMORY ########################################################################### #### Alloved: 'disk'or 'memory'. #### Saving undo on disk is safer but slower on extremely big schematics. #### In most cases you won't notice any delay. Undo on disk allows previous #### state recovery in case of crashes. In-memory undo is extremely fast #### but should a crash occur everything is lost. #### It is highly recommended to keep undo on disk. #### Default: disk # set undo_type disk ########################################################################### #### CUSTOM GRID / SNAP VALUE SETTINGS ########################################################################### #### Warning: changing these values will likely break compatibility #### with existing symbol libraries. Defaults: grid 20, snap 10. # set grid 20 # set snap 10 ########################################################################### #### CUSTOM COLORS MAY BE DEFINED HERE ########################################################################### # set cadlayers 22 # set light_colors { # "#ffffff" "#0044ee" "#aaaaaa" "#222222" "#229900" # "#bb2200" "#00ccee" "#ff0000" "#888800" "#00aaaa" # "#880088" "#00ff00" "#0000cc" "#666600" "#557755" # "#aa2222" "#7ccc40" "#00ffcc" "#ce0097" "#d2d46b" # "#ef6158" "#fdb200" } # set dark_colors { # "#000000" "#00ccee" "#3f3f3f" "#cccccc" "#88dd00" # "#bb2200" "#00ccee" "#ff0000" "#ffff00" "#ffffff" # "#ff00ff" "#00ff00" "#0000cc" "#aaaa00" "#aaccaa" # "#ff7777" "#bfff81" "#00ffcc" "#ce0097" "#d2d46b" # "#ef6158" "#fdb200" } ########################################################################### #### CAIRO STUFF ########################################################################### #### Scale all fonts by this number # set cairo_font_scale 1.0 #### default for following two is 0.85 (xscale) and 0.88 (yscale) to #### match cairo font spacing # set nocairo_font_xscale 1.0 #### set nocairo_font_yscale 1.0 #### Scale line spacing by this number # set cairo_font_line_spacing 1.0 #### Specify a font # set cairo_font_name {Sans-Serif} # set svg_font_name {Sans-Serif} #### Lift up text by some zoom-corrected pixels for #### better compatibility wrt no cairo version. #### Useful values in the range [-1, 3] # set cairo_vert_correct 0 # set nocairo_vert_correct 0 ########################################################################### #### KEYBINDINGS ########################################################################### #### General format for specifying a replacement for a keybind #### Replace Ctrl-d with Escape (so you wont kill the program) # set replace_key(Control-d) Escape #### swap w and W keybinds; Always specify Shift for capital letters # set replace_key(Shift-W) w # set replace_key(w) Shift-W ########################################################################### #### TERMINAL ########################################################################### #### default for linux: xterm # set terminal {xterm -geometry 100x35 -fn 9x15 -bg black -fg white -cr white -ms white } #### lxterminal is not OK since it will not inherit env vars: #### In order to reduce memory usage and increase the performance, all instances #### of the lxterminal are sharing a single process. LXTerminal is part of LXDE ########################################################################### #### EDITOR ########################################################################### #### editor must not detach from launching shell (-f mandatory for gvim) #### default for linux: gvim -f # set editor {gvim -f -geometry 90x28} # set editor { xterm -geometry 100x40 -e nano } # set editor { xterm -geometry 100x40 -e pico } #### For Windows # set editor {notepad.exe} ########################################################################### #### SHOW ERC INFO WINDOW (erc errors, warnings etc) ########################################################################### #### default: 0 (can be enabled by menu) # set show_infowindow 0 ########################################################################### #### TCP CONNECTION WITH GAW ########################################################################### #### set gaw address for socket connection: {host port} #### default: set to localhost, port 2020 # set gaw_tcp_address {localhost 2020} ########################################################################### #### XSCHEM LISTEN TO TCP PORT ########################################################################### #### set xschem listening port; default: not enabled # set xschem_listen_port 2021 ########################################################################### #### BESPICE WAVE SOCKET CONNECTION ########################################################################### #### set bespice wave listening port; default: not enabled set bespice_listen_port 2022 ########################################################################### #### TCL FILES TO LOAD AT STARTUP ########################################################################### #### list of tcl files to preload. # lappend tcl_files ${XSCHEM_SHAREDIR}/change_index.tcl lappend tcl_files ${XSCHEM_SHAREDIR}/ngspice_backannotate.tcl ########################################################################### #### XSCHEM TOOLBAR ########################################################################### #### default: not enabled. set toolbar_visible 1 # set toolbar_horiz 1 ########################################################################### #### TABBED WINDOWS ########################################################################### # default: not enabled. Interface can be changed runtime if only one window # or tab is open. set tabbed_interface 1 ########################################################################### #### CASE INSENSITIVE SYMBOL LOOKUP ########################################################################### ## this option might be useful on filesystems that are case insensitive and ## on designs ported from windows where case of file names does not matter. ## if this option is set symbol lookup will be case insensitive, ## so a symbol reference 'AMPLI.SYM' will match with 'ampli.sym' or ## Amply.sym on disk. File system must be case insensitive for this to work, ## like FAT32 or NTFS. ## Do not set this option if you don't know what you are doing. ## Default: not enabled (0) # set case_insensitive 1 ########################################################################### #### HIDE GRAPHS IF NO SPICE DATA LOADED ########################################################################### ## if enabled graphs will be hidden if no data is loaded. ## default: not enabled (0) # set hide_empty_graphs 0 ########################################################################### #### SHOW HIDDEN TEXTS ########################################################################### ## This option shows text objects even if they have attribute 'hide=true' set ## default: 0 (not set) # set show_hidden_texts 1 ########################################################################### #### LIVE BACKANNOTATION OF DATA AT CURSOR 2 (B) POSITION ########################################################################### ## if enabled will backannotate values in schematic at cursor 'b' position ## in graph. Default: not enabled (0) # set live_cursor2_backannotate 1 ########################################################################### #### SKYWATER PDK SPECIFIC VARIABLES ########################################################################### ## check if env var PDK_ROOT exists, and use it for building open_pdks paths if { [info exists env(PDK_ROOT)] && $env(PDK_ROOT) ne {} } { ## found variable, set tcl PDK_ROOT var if {![file isdir $env(PDK_ROOT)]} { puts stderr "Warning: PDK_ROOT environment variable is set but path not found on the system." } set PDK_ROOT $env(PDK_ROOT) } else { ## not existing or empty. puts stderr "Warning: PDK_ROOT env. var. not found or empty, trying to find an open_pdks install" if {[file isdir /usr/share/pdk]} {set PDK_ROOT /usr/share/pdk } elseif {[file isdir /usr/local/share/pdk]} {set PDK_ROOT /usr/local/share/pdk } elseif {[file isdir $env(HOME)/share/pdk]} {set PDK_ROOT $env(HOME)/share/pdk } else { puts stderr {No open_pdks installation found, set PDK_ROOT env. var. and restart xschem} } } if {[info exists PDK_ROOT]} { ## get process variant if {[info exists env(PDK)]} { set PDK $env(PDK) } else { set PDK sky130A } set SKYWATER_MODELS ${PDK_ROOT}/${PDK}/libs.tech/ngspice set SKYWATER_STDCELLS ${PDK_ROOT}/${PDK}/libs.ref/sky130_fd_sc_hd/spice puts stderr "open_pdks installation: using $PDK_ROOT" puts stderr "SKYWATER_MODELS: $SKYWATER_MODELS" puts stderr "SKYWATER_STDCELLS: $SKYWATER_STDCELLS" } # open_pdks specific: # Set variables after ${PDK_ROOT} is known # This overrides some of the variables set above. set XSCHEM_START_WINDOW ${PDK_ROOT}/${PDK}/libs.tech/xschem/sky130_tests/top.sch append XSCHEM_LIBRARY_PATH :${PDK_ROOT}/${PDK}/libs.tech/xschem