updating for dockerhub
This commit is contained in:
parent
cde5bdacf0
commit
d5db3d1785
27
README.md
27
README.md
@ -7,7 +7,9 @@ act - circuit design and digital simulation<br>
|
||||
prspice - configure digital/analog circuit co-simulation<br>
|
||||
Xyce - analog circuit simulation<br>
|
||||
gaw - analog waveform viewer<br>
|
||||
klayout - circuit layout<br>
|
||||
magic - circuit layout<br>
|
||||
OpenROAD - physical design<br>
|
||||
|
||||
Semiconductor PDKs are in /opt/cad/conf<br>
|
||||
Packages may be installed with 'sudo apt install <package>'<br>
|
||||
@ -22,7 +24,7 @@ mkdir ~/tech; tar -xzvf sky130.tar.gz -C ~/tech
|
||||
```
|
||||
Pull the docker image for the broccoli command line interface, and configure it.
|
||||
```
|
||||
docker pull public.ecr.aws/l5h5o6z4/broccoli-cli:latest
|
||||
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"
|
||||
@ -57,6 +59,29 @@ 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
|
||||
|
@ -1,49 +1,48 @@
|
||||
bcli() {
|
||||
if [ "$1" = "up" ]; then
|
||||
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" public.ecr.aws/l5h5o6z4/broccoli-cli:latest > /dev/null
|
||||
#docker run --rm -d -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 -v "/tmp/.X11-unix:/tmp/.X11-unix:rw" ${BCLI_IMAGE:-public.ecr.aws/l5h5o6z4/broccoli-cli:latest} > /dev/null
|
||||
echo "bcli-$USER started"
|
||||
elif [ "$1" = "down" ]; then
|
||||
docker stop "bcli-$USER" > /dev/null
|
||||
echo "bcli-$USER stopped"
|
||||
if [ "$1" = "up" ]; then
|
||||
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
|
||||
echo "bcli-$USER started"
|
||||
elif [ "$1" = "down" ]; then
|
||||
docker stop "bcli-$USER" > /dev/null
|
||||
echo "bcli-$USER stopped"
|
||||
#legacy, or if server files change faster than a new download
|
||||
elif [ "$1" = "mount" ]; then
|
||||
if [ -z "$BROCCOLI_USER" ]; then
|
||||
echo "Please set the BROCCOLI_USER environment variable for ssh access."
|
||||
elif [ "$1" = "mount" ]; then
|
||||
if [ -z "$2" ]; then
|
||||
echo "expected an ssh path to a tech directory (user@server:path/to/tech)."
|
||||
else
|
||||
mkdir -p $HOME/tech
|
||||
sshfs $2 $HOME/tech/
|
||||
fi
|
||||
elif [ "$1" = "unmount" ]; then
|
||||
shift
|
||||
if [ "$1" = "-f" ]; then
|
||||
pkill -KILL sshfs
|
||||
fusermount -u $HOME/tech
|
||||
else
|
||||
umount $HOME/tech
|
||||
fi
|
||||
rmdir $HOME/tech
|
||||
elif [ "$#" -eq 0 ]; then
|
||||
WD="/host"
|
||||
if [[ "$PWD" = "$HOME/"* ]]; then
|
||||
WD="/host${PWD#$HOME}"
|
||||
fi
|
||||
XAUTH_TOKEN="$(xauth list | sed 's/^[^:]*/localhost/g' | sed 's/localhost: /localhost:0 /g')"
|
||||
docker exec -u $(id -u) -e XAUTH_TOKEN="$XAUTH_TOKEN" -it "bcli-$USER" /bin/bash -c "echo \"$XAUTH_TOKEN\" | xargs -n 3 xauth add"
|
||||
docker exec -u $(id -u) -w $WD -e DISPLAY=$DISPLAY -it "bcli-$USER" /bin/bash
|
||||
else
|
||||
mkdir -p $HOME/tech
|
||||
sshfs $BROCCOLI_USER@broccolimicro.io:/opt/tech $HOME/tech/
|
||||
fi
|
||||
elif [ "$1" = "unmount" ]; then
|
||||
shift
|
||||
if [ "$1" = "-f" ]; then
|
||||
pkill -KILL sshfs
|
||||
fusermount -u $HOME/tech
|
||||
else
|
||||
umount $HOME/tech
|
||||
fi
|
||||
rmdir $HOME/tech
|
||||
elif [ "$#" -eq 0 ]; then
|
||||
WD="/host"
|
||||
if [[ "$PWD" = "$HOME/"* ]]; then
|
||||
WD="/host${PWD#$HOME}"
|
||||
fi
|
||||
XAUTH_TOKEN="$(xauth list | sed 's/^[^:]*/localhost/g' | sed 's/localhost: /localhost:0 /g')"
|
||||
docker exec -u $(id -u) -e XAUTH_TOKEN="$XAUTH_TOKEN" -it "bcli-$USER" /bin/bash -c "echo \"$XAUTH_TOKEN\" | xargs -n 3 xauth add"
|
||||
docker exec -u $(id -u) -w $WD -e DISPLAY=$DISPLAY -it "bcli-$USER" /bin/bash
|
||||
else
|
||||
if [ "$1" != "--help" ]; then
|
||||
echo "error: unrecognized command '$1'"
|
||||
echo ""
|
||||
fi
|
||||
if [ "$1" != "--help" ]; then
|
||||
echo "error: unrecognized command '$1'"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo "usage: bcli <command>"
|
||||
echo "If command is empty, then start a terminal logged into the toolset."
|
||||
echo " up - launch the toolset"
|
||||
echo " down - shutdown the toolset"
|
||||
echo " mount - legacy command; mount the technology files from broccolimicro.io"
|
||||
echo " unmount - legacy command; unmount the technology files"
|
||||
echo " -f - legacy option; force the unmount if the connection has been broken"
|
||||
fi
|
||||
echo "usage: bcli <command>"
|
||||
echo "If command is empty, then start a terminal logged into the toolset."
|
||||
echo " up - launch the toolset"
|
||||
echo " down - shutdown the toolset"
|
||||
echo " mount - legacy command; mount the technology files from broccolimicro.io"
|
||||
echo " unmount - legacy command; unmount the technology files"
|
||||
echo " -f - legacy option; force the unmount if the connection has been broken"
|
||||
fi
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user