XSCHEM SKY130 INTEGRATION
+
+ To use Xschem with the Google-Skywater 130nm process (here: Sky130) The following items must be followed: +
+-
+
- Install XSchem. Follow the Manual Install instructions + +
- Install the Magic VLSI layout editor. Instructions here. + +
- Install Open_Pdks
+ that will provide among other things all the sky130 PDK data, including standard
+ cells, SPICE models, layout data, timing information, design rules and also the Xschem symbols of available
+ silicon primitive devices and the set of locic standard cells built on top of these primitive devices.
+ Instructions are here.
+ Please ensure sufficient disk space is available (Open_pdks uses several GB, a lot of space can be recovered + after installation by removing the source files if needed). Also keep in mind that the installation takes + considerable time. + The following steps are needed:
++## fetch the repository with git: +git clone git://opencircuitdesign.com/open_pdks +cd open_pdks +## configure the build, a --prefix option can be given to install in a different place, +## by default after installation a /usr/local/share/pdk directory is created if no --prefix is provided. +## Below line for example requests installation in my home directory (/home/schippes/share/pdk) +## ./configure --enable-sky130-pdk --prefix=/home/schippes +## Do the following steps one at a time and ensure no errors are reported after each step. +./configure --enable-sky130-pdk +make +make install
+
+
+ - At this point the complete PDK has been installed in /usr/local/share/pdk (or
+ <prefix>/share/pdk if --prefix was provided).
+ Xschem libraries also have been installed and are located under + <prefix>/share/pdk/sky130A/libs.tech/xschem/ or + <prefix>/share/pdk/sky130B/libs.tech/xschem/.
+ the sky130B directory contains the ReRAM Sky130 process option in addition + to all Sky130A devices. +
+ - After completing the above steps you can do a test run of xschem and use the Sky130 devices.
+ You need to create a new empty drectory, copy the provided xschemrc
+ (<prefix>/share/pdk/sky130B/libs.tech/xschem/xschemrc) into it and run xschem:
++mkdir test_xschem_sky130 +cd test_xschem_sky130 +cp /usr/local/share/pdk/sky130B/libs.tech/xschem/xschemrc . +xschem +
+
+ - If all went well the following welcome page will be shown. The page contains some example
+ circuits on the left and shows all the available silicon devices on the right.
+ You can descend into the example circuits on the left by clicking the symbols (they will turn to grey
+ meaning they are selected) and press the e key or by menu Edit->Push schematic.
+ You can return to the parent level by pressing Ctrl-e or by menu Edit->Pop.
+

+ You can disable the welcome page by commenting the following line in the xschemrc file:
++set XSCHEM_START_WINDOW {sky130_tests/top.sch}+
+
+
PDK_ROOT and PDK environment variables
++ Xschem (via the xschemrc file) looks for a PDK_ROOT environment variable that points to the installed pdk to use. + This is expecially useful if multiple or different versions of the pdk are installed. + If the pdk is installed in /usr/local/share/pdk PDK_ROOT should be set to /usr/local/share/pdk. + For Sky130 another variable PDK tells the process variant to use (currently sky130A) + or sky130B). If PDK is unset the default sky130A will be used. + If no PDK_ROOT variable is defined xschem will look into the following locations and pick the first existing found + in the order listed below: +
+-
+
- /usr/share/pdk +
- /usr/local/share/pdk +
- ~/share/pdk +
+ If no pdk is found a warning message is displayed on the xschem launching terminal. +
+ +Simulating a circuit with sky130 devices
+
+ The best way to quickly set up a simulation with Xschem is to look at some of the provided examples.
+ If you descend into the test_inv component you see a working circuit ready for simulation.
+ 
+ One line is needed in the spice netlist to load the spice models:
+
+.lib /usr/local/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice tt+
+ The exact path depends on the install location of the pdk as explained above. + In the picture above the TT_MODELS component takes care of generating the .lib line in the netlist. + the tt at the end of the .lib line is the process corner (tt = typical n, typical p transistors). + You can change the corner to ss, sf, fs, ff to verify your design across process variations. +
+
+ You see in the circuit a COMMANDS2 component. This component allows to enter text to specify the simulation to run,
+ giving simulator commands and options.
+ You place this component by pressing the Insert or i key, browsing into the standard xschem
+ devices directory and placing code_shown.sym or code.sym into the schematic.
+ 
+ Once placed in the schematic, you may click the component, press q to edit its attributes, set the
+ Edit attr. listbox on the right to value and enter the simulator commands to run the simulation.
+ You can give a reference name to this component by setting the Edit attr. listbox to name and give it
+ a name that will be diplayed in the schematic. (COMMANDS2 in the example).
+ 
+
+ Note in above commands a write test_inv_ngspice.raw command. This example runs simulation with both + Xyce and ngspice so the output raw file is differentiated. If you just plan to use one simulator a good suggestion is + to write a raw file with the same name as the circuit, so write test_inv.raw. +
+
+ If you select the TT_MODELS component and press q you see the reference to the PDK top library SPICE file.
+ The path is specified using TCL variables that have been generated by xschem when the pdk installation was looked up.
+ This allows to have portable schematics, no absolute path is hardcoded in the schematic files.
+ 
+ If everything is set up correctly pressing the Netlist button or hitting the n key will produce
+ a spice netlist of the circuit. The netlist location is by default set to your home directory:
+ ~/.xschem/simulations
+
+
+schippes@mazinga:~/x/test_open_pdks$ ls -ltr ~/.xschem/simulations/ +... +... +-rw-r--r-- 1 schippes schippes 3266 ott 18 15:26 test_inv.spice
+
+ You can then simulate the circuit. Select the simulator to use by clicking menu
+ Simulation->Configure simulators and tools and selecting (for this example) ngspice
+ 
+ Press the Simulation button and see the ngspice running in a terminal:
+ 
+
+ The default terminal used by xschem to run the simulator is xterm. I strongly suggest you to install xterm
+ (on ubuntu/debian Linux: sudo apt install xterm) since it is a very small package and is not a broken terminal
+ like most Gnome/KDE/LXDE stuff. You can however use any terminal editor by specifying the one to use in your xschemrc.
+ If not specified xschem defaults to xterm
+
+ ## set terminal xterm
+ set terminal gnome-terminal
+
+
+ After completing simulation you can add into the schematic a graph (Simulation->Add waveform graph)
+ and a waveform reload launcher (Simulation->Add waveform reload launcher).
+ The launcher has a tclcommand attribute that loads the simulator data file (test_inv.raw) and
+ specifies the type of analysis (op, dc, ac, tran)
+ 
+ See the manual for details
+ 
+
+ + +
