2021-11-15 09:34:52 -06:00
|
|
|
#### 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)
|
2022-11-11 11:21:24 -06:00
|
|
|
# append XSCHEM_LIBRARY_PATH :/mnt/sda7/home/schippes/pdks/sky130A/libs.tech/xschem
|
2021-11-15 09:34:52 -06:00
|
|
|
#### 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
|
2022-11-11 11:21:24 -06:00
|
|
|
|
|
|
|
###########################################################################
|
|
|
|
#### 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 {}
|
2021-11-15 09:34:52 -06:00
|
|
|
|
|
|
|
###########################################################################
|
|
|
|
#### 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
|
|
|
|
|
2022-11-11 11:21:24 -06:00
|
|
|
#### 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
|
|
|
|
|
2021-11-15 09:34:52 -06:00
|
|
|
#### 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}
|
|
|
|
|
2022-11-11 11:21:24 -06:00
|
|
|
###########################################################################
|
|
|
|
#### 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
|
2021-11-15 09:34:52 -06:00
|
|
|
|
|
|
|
###########################################################################
|
|
|
|
#### 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
|
2022-11-11 11:21:24 -06:00
|
|
|
|
2021-11-15 09:34:52 -06:00
|
|
|
###########################################################################
|
|
|
|
#### XSCHEM TOOLBAR
|
|
|
|
###########################################################################
|
|
|
|
#### default: not enabled.
|
2022-11-11 11:21:24 -06:00
|
|
|
set toolbar_visible 1
|
2021-11-15 09:34:52 -06:00
|
|
|
# set toolbar_horiz 1
|
|
|
|
|
2022-11-11 11:21:24 -06:00
|
|
|
###########################################################################
|
|
|
|
#### 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
|
|
|
|
|
2021-11-15 09:34:52 -06:00
|
|
|
###########################################################################
|
|
|
|
#### SKYWATER PDK SPECIFIC VARIABLES
|
|
|
|
###########################################################################
|
|
|
|
|
2022-11-11 11:21:24 -06:00
|
|
|
## 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
|
|
|
|
|