Docker development environments for integrated circuits design.
Go to file
2023-10-14 19:39:40 -03:00
.gitea Fix space separation for parameters 2023-10-14 17:33:06 -03:00
base Remove password, Remove sslOnly, Add DiD, Add motd 2023-10-10 14:53:09 -03:00
compose Add compose example 2023-09-28 23:38:55 -03:00
include Fix space separation for parameters 2023-10-14 17:33:06 -03:00
scripts Fix scripts 2023-10-14 19:36:13 -03:00
stacks Merge main changes 2023-10-14 19:39:40 -03:00
.gitattributes Merge main changes 2023-10-14 19:39:40 -03:00
compile.bat changed analog-tools to chipathon-tools. Using heavy container 2023-09-29 16:04:17 -03:00
LICENSE Initial commit 2023-08-07 06:36:35 +00:00
README.md Merge main changes 2023-10-14 19:39:40 -03:00
run.bat changed analog-tools to chipathon-tools. Using heavy container 2023-09-29 16:04:17 -03:00
run.ps1 Fix space separation for parameters 2023-10-14 17:33:06 -03:00
run.sh changed analog-tools to chipathon-tools. Using heavy container 2023-09-29 16:04:17 -03:00

Table of Contents

License: MIT

OSIC Stacks

Open Source Integrated Circuits Docker Stacks

screenshot

Highlights

  • Intended for ease to use, have your tools integrate tightly with your PDK.
  • IC design tools evolve quickly, a rolling release distribution allows you to have the latest version of your tool set.
  • Docker images can be heavy, thus these images are distributed in stacks, choose the best fit for your task.
  • Flexible, these containers doesn't restrict you to extend your development environment, feel free to install your own packages.
  • Choose between running your applications in a custom linux environment in your web browser or natively in your current desktop environment.

Stacks

  • analog-xk: Analog workflow using XSchem & KLayout
  • analog-xm: Analog workflow using XSchem & Magic
  • analog-heavy: Workflow with all the analog tools
  • digital-ator: Digital workflow using Verilator & Yosys
  • digital-icarus: Digital workflow using Icarus & Yosys
  • digital-heavy: Workflow with all the digital tools
  • heavy: Workflow with all the previous tools

Flavors: Web / Desktop | Docker image list

Usage

Follow these 3 steps to get your container ready.

1. Starting a container

There are two ways to start your container. You can choose (a) to start your container in your actual desktop environment and launch the applications from your integrated terminal or (b) you can launch a whole linux desktop environment that can be accessed through a web browser.

Before following the next steps make sure you have docker running.

1a. Starting a container in your desktop with native graphics output

Scripts are provided for creating the containers in both Windows and Linux. These scripts automate the binding of graphics environment variables to the container in order to enable graphics inside the docker container.

Windows

Execute the next script in powershell and follow the container initialization prompt.

& ([scriptblock]::Create((irm https://git.1159.cl/Mario1159/osic-stacks/raw/branch/main/run.ps1))) -pull -download

This script will run the container inside WSL and bind the enviroments variables for WSLg. Also, it will download itself so it will exists locally.

Linux

Execute the next docker command in your terminal replacing <container_name> by any name and <stack> by an stack from the previous stack list.

docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name <container_name> git.1159.cl/mario1159/<stack>-desktop

For Wayland compositors make sure you have XWayland installed

macOS / OS X

Install Xquartz and run the linux previous command.

1b. Starting a container with a Web VNC client

If you prefer running the container in your web browser instead of in your integrated terminal, you can select the web flavor of any stack. In this case, it is not necessary to bind extra environment variables for enabling native graphics output.

docker run -d --security-opt seccomp=unconfined -p 8444:8444 --name <container_name> git.1159.cl/mario1159/<stack>-web

This can also be deployed from a docker compose file, an example is provided here.

2. Connecting to the container

2a. Desktop

Connect to your container with the using the name specified in the previous step.

docker exec -it <container_name> bash

2b. Web

Access from the web to the VNC client at https://localhost:8444.

The default username is designer and the password is password.

3. Configure Volare

Choose a PDK variant from the following list to install.

PDK Technology PDK Variant
sky130 sky130A
sky130B
gf180mcu gf180mcuA
gf180mcuB
gf180mcuC

To automatically download and configure the latest version of the PDK to this date, run volare_set_latest replacing <pdk_variant> for a PDK variant from the list.

volare_set_latest <pdk_variant>

To manually set any version of the PDK, set the PDK environment variable, list the available PDKs and choose one to install replacing <pdk_variant> and <pdk_tech> correspondingly by one of the PDKs listed above.

echo 'export PDK=<pdk_variant>' >> ~/.bashrc
source ~/.bashrc
volare ls-remote --pdk <pdk_tech>
volare enable --pdk <pdk_tech> <version_id>

After you have set up the PDK, you can finally start developing your own designs!

Installing additional packages

For the arch based images you can install packages from the official arch repository using pacman.

pacman -S <package_name>

or you can also install packages from the AUR using paru.

paru <package_name>

Updating the image

To update to the latest image version, first make sure you have all your important data linked by a volume or backed up in an external storage, all your files outside any linked volume will be lost.

After you backed your data, stop the container, delete it, pull the latest image and finally start the container again as the first step of the usage section.

docker stop <container_name>
docker rm <container_name>
docker pull <image>
docker run -d --security-opt seccomp=unconfined -p 8444:8444 -v <path_to_volume>:/home/designer/shared --name <container_name> <image-web>

Container names can be seen with docker ps -a

Custom Images

For creating an image with your own pre-installed set of packages for your team you can create your own docker image extending the stacks, just as the stacks extend the base image. For reference check the stacks dockerfiles in the stack folder.

The following sections will get you to build and test any of the included stacks or your own custom image.

Build

Choose a singular stack image to build using docker for the desktop or the web client and replace the <stack> placeholder. Keep in mind that following steps are intended to be run from the repository root path.

Desktop build

Build the base image and then the stack image.

docker build --no-cache -t osicstacks-base-desktop -f base/desktop.Dockerfile .
docker build --no-cache --build-arg BASE_IMG=osicstacks-base-desktop --target <stack>-desktop -t <tag> -f stacks/<stack>.Dockerfile .

Web build

For the web client build the web client base image the required desktop image as well.

docker build --no-cache -t osicstacks-base-desktop -f base/desktop.Dockerfile .
docker build --no-cache -t osicstacks-base-web -f base/web.Dockerfile .
docker build --no-cache --build-arg BASE_IMG=osicstacks-base-web --target <stack>-web -t <tag> -f stacks/<stack>.Dockerfile .

Local Run

Images can be tested and runned in the following way.

Windows

powershell.exe -ExecutionPolicy Bypass run.ps1

Linux

docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name <container_name> <tag>