Docker image for open source integrated circuit development.
This work is based on:
- Johannes Kepler University (JKU) Docker Image
- GoCD NGSpice Agents for CICD VLSI Verification
- Open Source Integrated Circuits Docker Stacks
| Tool | Description |
|---|---|
| ngspice | SPICE analog and mixed-signal simulator |
| xschem | Schematic Editor |
| magic | Layout editor with DRC/Extraction capabilities |
| klayout | Layout viewer and editor for GDS |
| netgen | Netlist Comparison |
| cvc | Circuit validity checker |
| cace | Circuit Characterization engine |
| gdsfactory | Python module for gds generation |
| glayout | Python module for pdk-agnostic layout automation |
| pygmid | Python module for systematic circuit sizing |
| openvaf | Verilog-A to OSDI compiler |
The image also contains sky130A, gf180mcuD and ihp-sg13g2 pdks, to change between pdks use the set_pdk command. i.e. set_pdk sky130A. IHP PDK requires the compilation of OSDI files, which is performed when starting a bash terminal. If the compilation fails, just open another bash terminal.
Versions and commits are specified on the Dockerfile.
Some of the tools are installed using terminal commands. Windows users should use Powershell.
Docker on Windows and Mac is installed with Docker Desktop. On Linux it requires a bunch of steps listed on this website.
IMPORTANT!! Docker Desktop should be running while using the environment, if not, the docker commands fails with a pipe error. The app can run on background without the window opened.
One of the ways in which docker container can be used is through Visual Studio Code and the devcontainer extension. VsCode website has an installer for the editor.
The extension can be installed with the extension explorer (Ctrl-Shift X), or with the following command:
code --install-extension ms-vscode-remote.remote-containersMost important tool on any project: Control version system. A powershell command to install it is provided.
winget install --id Git.Git -e --source wingetUse winget to install Make from the ezwinports project.
winget install ezwinports.makePrograms that uses graphical user interfaces (xschem, magic, ngspice plots, klayout) requires an X Server running on the host machine. Linux desktops already have one. Windows and Mac requires an external server.
To install vcxsrv goto releases page and install the 21.1.10 release (direct link to 21.1.10 the installer).
Since a component of 21.1.13 release is targeted as a virus we are not going to use that version.
IMPORTANT!!: Add installation directory to Path. This allows the use of vcxsrv from terminal.
- Open Control Panel and search for environment variables
- Select the option that modifies current account
- On User Variables, add the directory to
Pathuser variable. - Reopen each terminal to reload the path.
To clone the repo, use this command:
git clone --recurse --depth=1 https://github.com/ChipUSM/usm-vlsi-tools.gitInside it, there's a Makefile used as a command line interface (CLI) to run programs and start the environment.
make start: Starts a shell. More shells can be opened withxterm &make start-notebook: Start jupyter lab instance accesible from the browser. Multiple terminals could be open as tabs.make start-devcontainer: Open Visual Studio Code. Inside the editor click onreopen in containerbutton, orCtrl-Shift-Pand then search the command.
IMPORTANT!! Docker Desktop should be running while using the environment, if not, the docker commands fails with a pipe error. The app can run on background without the window opened.
This should work on Windows, Linux and Mac, but it's only tested on windows.
- Verify that Docker Desktop is running
- Open the directory
<PROJ>/shared_xserverwith Visual Studio Code. - Install Devcontainer extension if it's not installed
- Open the command palette (Use
Ctrl+Shift+P) and run the commandDev Containers: Reopen in Container..
# Open devcontainer
make start-devcontainerThis workflow allows the use of Visual Studio Code to interact with the container, use the git capabilities, install extensions and instantiate multiple terminals.
Note: PyCharm supports devcontainers, but it seems to have troubles with graphical user interfaces. VSCode is recommended until someone takes care of PyCharm support.
This workflow does not require the use of an external Xserver, since it uses the one provided on WSL Ubuntu distributions.
Not recommended. This option may have a lot of bugs related with implicit configurations.
- Verify that Docker Desktop is running
- Open the directory
<PROJ>/shared_wsl_xserverwith Visual Studio Code - Install Devcontainer extension if it's not installed and run the command
Dev Containers: Reopen in Container.. UseCtrl+Shift+Pto open Command Palette - This configuration requires to set the global variable
WSL_DISTRO, this requires restart the system to reload the environment variables. This is only required once
Suggestions for cleaner ways to use x11 capabilities of WSL are accepted. I have not figured out how to make windows reload those variables, so for now the only solution is to restart the system. There must be a better way

