Categories Electronics

Instalación del PDK Skywater130

Introducción

En el mundo de los semiconductores, un PDK (Process Design Kit) es un conjunto de herramientas y archivos que proporcionan información detallada sobre un proceso de fabricación en específico. Es utilizado por los diseñadores de Circuitos Integrados (IC – Integrated Circuits) para desarrollar circuitos nanométricos de manera eficiente y precisa.

Un PDK contiene varios elementos esenciales, como: reglas de diseño (design rules), modelos de dispositivos, celdas estándar (standar cells), bibliotecas de diseño, capas de layout (layers), archivos para DRC (Design Rule Check) y LVS (Layout vs Schematic).

El PDK Skywater130 es una opción código abierto desarrollado por SkyWater Technology en colaboración con Google. Es el primer PDK completamente abierto disponible para la comunidad de diseño de circuitos integrados.

Entre sus características principales tenemos:

  • Proceso de fabricación de 130nm.
  • Completamente de código abierto.
  • Incluye modelos y compatibilidad con herramientas para diseño VLSI (por ejemplo, Magic, KLayout, OpenROAD, Xschem y Ngspice).
  • Soporte de Google

A continuación describo el proceso de instalación que yo utilicé, actualizado a Febrero 2025. Se tomó como referencia la información contenida en las referencias listadas al final, recomiendo ampliamente darles un vistazo antes de proceder.

Descargo de responsabilidad (o sea, Disclaimer):

  • Para seguir este tutorial se da por sentado que el usuario tiene conocimientos básicos de Linux
  • La instalación se realizó en una computadora con Ubuntu 22.04; sin embargo, la instalación podría diferir para otras distribuciones de Linux.
  • Se proporciona este tutorial “as is”. Significa que no puedo asegurar que funcione para ti, ni tampoco me hago responsable por cualquier daño que pudiera causar a tus archivos o equipo.

Instalación de Herramientas

Inicialmente es conveniente realizar la instalación de las dependencias necesarias para las herramientas. Para ello ejecuta lo siguiente en la terminal:

> sudo apt update
> sudo apt upgrade
> sudo apt install -y nautilus gedit x11-apps build-essential flex bison m4 tcsh csh libx11-dev tcl-dev tk-dev libcairo2 libcairo2-dev libx11-6 libxcb1 libx11-xcb-dev libxrender1 libxrender-dev libxpm4 libxpm-dev libncurses-dev blt freeglut3-dev mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev tcl-tclreadline libgtk-3-dev tcl8.6 tcl8.6-dev tk8.6 tk8.6-dev gawk graphicsmagick vim-gtk3 libxaw7 libxaw7-dev fontconfig libxft-dev libxft2 libxmu6 libxext-dev libxext6 libxrender1 libxrender-dev libtool readline-common libreadline-dev gawk autoconf libtool automake adms gettext ruby ruby-dev libgit2-dev qtbase5-dev qt5-qmake python3-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5multimedia5-plugins libqt5multimedia5 libqt5xmlpatterns5-dev python3-pyqt5 qtcreator pyqt5-dev-tools qttools5-* libqt5svg5-dev gcc g++ gfortran make cmake bison flex libfl-dev libfftw3-dev libsuitesparse-dev libblas-dev liblapack-dev libtool autoconf automake libopenmpi-dev openmpi-bin python3-pip python3-venv python3-virtualenv python3-numpy rustc libprotobuf-dev protobuf-compiler libopenmpi-dev gnat clang libc++-dev libc++abi-dev gperf liblzma-dev libgtk2.0-dev swig libboost-all-dev libllvm-ocaml-dev llvm llvm-dev llvm-runtime clang-tools libclang-dev libclang1 clang-format lldb lld lyx


Para mantener organizada la instalación, todas las herramientas se descargarán en una carpeta aparte (~/sky130repo) y posteriormente se instalarán en la carpeta /tools.

Hecho esto, se clonara el PDK en la carpeta ~/sky130repo y se instalará en la carpeta ~/share/pdk.

  • Instalar MAGIC
> git clone https://github.com/RTimothyEdwards/magic magic-git
> cd magic-git
> ./configure --prefix=/tools/magic
> make
> sudo make install
> cd ..
  • Instalar XSCHEM
> git clone https://github.com/StefanSchippers/xschem.git xschem-git
> cd xschem-git
> ./configure --prefix=/tools/xschem
> make
> sudo make install
> cd ..
  • Instalar NGSPICE

Descarga la version de NGSPICE para Linux desde el siguiente link: https://sourceforge.net/projects/ngspice/

Extrae el contenido y copia el folder en la carpeta ~/sky130repo. Posteriormente realiza la instalación:

> ./configure --prefix=/tools/ngspice
> make
> sudo make install
> cd ..
  • Instalar NETGEN
> git clone git://opencircuitdesign.com/netgen netgen-git
> cd netgen-git
> ./configure --prefix=/tools/netgen
> make
> sudo make install
> cd ..
  • Instalar GAW

Descarga desde el link: https://github.com/StefanSchippers/xschem-gaw

Extrae el folder y cópialo a la carpeta ~/sky130repo. Aplica cd para entrar en el folder y ejecuta lo siguiente:

> ./configure --prefix=/tools/gaw
> make
> sudo make install
> cd ..

Si el método previo falla, prueba ejecutar lo siguiente:

> aclocal
> autoconfirm
> autoheader
> automake --add-missing
> ./configure
> make
> sudo make install

Si obtienes el siguiente tipo de error:

*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version 0.20 but the autoconf macros are from gettext version 0.19

significa que hay una discrepancia entre la versión esperada de gettext y la instalada en tu sistema. Para corregirlo edita el archivo Makefile.in.in en la carpeta po (po/Makefile.in.in) y localiza la línea que contiene la variable GETTEXT_MACRO_VERSION y cambia su valor (0.19 o 0.18 ) por “0.20”. Una vez modificada debería verse de la siguiente manera:

GETTEXT_MACRO_VERSION = 0.20

Posteriormente, vuelve a hacer el configure y make:

> aclocal && automake --add-missing && autoconf
> ./configure
> make
> sudo make install
  • Instalar KLAYOUT

Para instalar esta herramienta no se utiliza configure & make. Para instalar ejecuta lo siguiente en la terminal:

> git clone https://github/KLayout/klayout.git klayout-git
> cd klayout-git
> sudo ./build.sh -prefix=/tools/klayout
> cd ..
  • Instalar GHDL

Para instalar ejecuta lo siguiente en terminal:

> cd /mnt/f/sky130repo
> git clone https://github.com/ghdl/ghdl ghdl-git
> cd ghdl-git
> ./configure --prefix=/tools/ghdl
> make
> sudo make install
> cd ..
  • Instalar GTKVIEW

Primero instala libbz2m. Para ello, ejecuta desde la terminal:

sudo apt install libbz2-dev

Posteriormente, descarga el “GTK3 source code” desde el siguiente link: https://gtkwave.sourceforge.net/, extrae y copia el folder a la carpeta sky130repo. Para realizar la instalación, ejecuta lo siguiente desde terminal:

> cd gtkwave-git
> ./configure --prefix=/tools/gtkwave
> make
> sudo make install
> cd ..
  • Instalar ICARUS VERILOG

Para instalar, ejecuta lo siguiente en la terminal:

> git clone https://github.com/steveicarus/iverilog.git iverilog-git
> cd iverilog-git
> sh autoconf.sh
> ./configure --prefix=/tools/iverilog
> make
> sudo make install
> cd ..
  • Instalar YOSYS

Para instalar, ejecuta lo siguiente en la terminal:

> git clone https://github.com/YosysHQ/yosys.git yosys-git
> cd yosys-git
> gedit makefile

Edita el archivo Makefile, y cambia el valor de la variable PREFIX en la línea 65 (el número de línea puede cambiar):

PREFIX = /tools/yosys

Hecho lo anterior, ejecuta:

> git submodule update --init
> make
> sudo make install
> cd ..

Añadir las herramientas instaladas al Shell

Este paso es necesario para que las herramientas se puedan lanzar desde terminal. Se recomienda buscar y confirmar la ubicación de los archivos ejecutables de cada una de las herramientas y agregar esa ubicación al PATH.

> sudo chmod u+rx /tools
> chmod u+rx ~/.bashrc
> echo "export PATH=/tools/klayout:/tools/magic/bin:/tools/netgen/bin:/tools/ngspice/bin:/tools/xschem/bin:/tools/gaw/bin:/tools/ghdl/bin/:/tools/gtkwave/bin/:/tools/iverilog/bin:/tools/yosys/bin:$PATH" >> ~/.bashrc
> sed -i 's/\r//' ~/.bashrc

Posteriormente reinicia el equipo y lanza desde la terminal cada una de las herramientas para verificar que fueron instaladas adecuadamente.

Instalación del PDK Skywater130

La instalación se realizó con las instrucciones de Stephan Schipss, para más información se sugiere visitar su sitio: https://xschem.sourceforge.io/stefan/xschem_man/tutorial_xschem_sky130.html

Para iniciar, clona el repositorio en el folder sky130repo:

> git clone git://opencircuitdesign.com/open_pdks
> cd open_pdks
> ./configure --enable-sky130-pdk --prefix=/home/sfz
> make
> sudo make install

Posteriomente, se agregan nuevas variables de estado. Aqui el valor de la variable “PDK” puede ser sky130A o sky130B, depende si se busca usar los modelos de RRAM. En este ejemplo utilizamos sky130B:

> sudo chmod u+rx /openpdk
> echo "export PDK_ROOT=/openpdk/share/pdk/" >> ~/.bashrc
> echo "export PDK=sky130B" >> ~/.bashrc
> sed -i 's/\r//' ~/.bashrc
> . ~/.bashrc

Se recomienda crear “carpetas de trabajo” (working directories) para mantener los archivos ordenados a medida que trabajamos con esta tecnología:

> cd $
> mkdir workingdir_sky130
> cd workingdir_sky130
> mkdir layout
> mkdir schematic
> mkdir verilog

Posteriormente, se crea en la carpeta schematic un clon del archivo ejecutable de la tecnología:

> cd schematic
> echo 'source /home/sfz/share/pdk/sky130B/libs.tech/xschem/xschemrc' > ./xschemrc

Por último, ejecuta XSCHEM

> xschem

Esto debería lanzar XSCHEM con la página de inicio del PDK Skywater 130:

REFERENCIAS

  1. https://positivefb.com/skywater-130nm-installation/
  2. https://xschem.sourceforge.io/stefan/xschem_man/tutorial_xschem_sky130.html

Prev Sunrise seen through a bus window

Leave a Reply

Your email address will not be published. Required fields are marked *