# Broccoli Development Environment The following tools are available:
go - architectural and behavioral simulation
haystack - formal synthesis of self-timed circuits
act - circuit design and digital simulation
prspice - configure digital/analog circuit co-simulation
Xyce - analog circuit simulation
gaw - analog waveform viewer
klayout - circuit layout
magic - circuit layout
OpenROAD - physical design
Semiconductor PDKs are in /opt/cad/conf
Packages may be installed with 'sudo apt install '
Other usages of sudo are disabled
## Setup Download the Skywater 130nm PDK and configuration files, and extract them to your home directory: ``` wget https://broccoli-hosting.s3.us-east-2.amazonaws.com/sky130.tar.gz mkdir ~/tech; tar -xzvf sky130.tar.gz -C ~/tech ``` Pull the docker image for the broccoli command line interface, and configure it. ``` docker pull broccolimicro/broccoli-cli:latest git clone https://git.broccolimicro.io/Broccoli/broccoli-cli.git source broccoli-cli/bcli-develop.sh export BCLI_TECH="$HOME/tech" ``` ## Runtime Boot up the development environment in docker ``` bcli up ``` Open up a shell inside the development environment. Here you will have access to all of the necessary tools. ``` bcli ``` Your home directory will be mounted at ``` /host ``` Many of the installed tools may be found at ``` /opt ``` Finally, vim is fully set up for both golang and act. ``` vim file.act ``` When you are done, you can shut down the development environment. ``` bcli down ``` ## Troubleshooting This script runs the docker container with the following commands: ``` # This produces a list of groups and their gids like so: # 1000 nbingham # 138 docker # ... MEMBERS="$(groups | sed 's/ /\n/g' | xargs -I{} getent group {} | sed 's/\([^:]*\):[^:]*:\([^:]*\):.*/\2 \1/g')" docker run --rm -d --net=host \ -v $HOME:/host \ -v "${BCLI_TECH:-/opt/tech}:/opt/cad/conf" \ --name "bcli-$USER" \ -h "bcli-$USER" \ -e USER=$USER \ -e USER_ID=$(id -u) \ -e GROUP_ID=$(id -g) \ -e DISPLAY=$DISPLAY \ -e MEMBERS="$MEMBERS" \ -v "/tmp/.X11-unix:/tmp/.X11-unix:rw" \ broccolimicro/broccoli-cli:latest > /dev/null ``` There are multiple versions of docker, the one that seems to work best for this is `docker.io`. `docker-ce` seems to have trouble writing files in the container. ``` sudo apt install docker.io ``` If graphical tools (such as magic and gaw) fail to launch, you may need to install ```xhost``` on your local machine, and grant docker permission to access your X server. ``` xhost +local:docker ```