2022-09-18 15:28:51 -04:00
|
|
|
# syntax = docker/dockerfile:1.0-experimental
|
|
|
|
|
|
|
|
FROM ubuntu:latest
|
2022-09-18 07:48:56 -04:00
|
|
|
|
|
|
|
RUN apt-get update
|
|
|
|
|
|
|
|
RUN mkdir toolsrc
|
|
|
|
RUN mkdir /opt/cad
|
|
|
|
|
2022-10-02 11:14:58 -04:00
|
|
|
WORKDIR /toolsrc
|
|
|
|
RUN apt-get -y install wget make gcc g++
|
|
|
|
RUN wget https://download.open-mpi.org/release/hwloc/v2.8/hwloc-2.8.0.tar.gz
|
|
|
|
RUN tar -xzvf hwloc-2.8.0.tar.gz
|
|
|
|
WORKDIR hwloc-2.8.0
|
|
|
|
RUN ./configure
|
|
|
|
RUN make
|
|
|
|
RUN make install
|
|
|
|
|
2022-09-18 07:48:56 -04:00
|
|
|
# Xyce and Trilinos takes the longest to execute, in the interest of caching, this should go first.
|
|
|
|
# install Trilinos
|
|
|
|
WORKDIR /toolsrc
|
|
|
|
# basic dependencies
|
|
|
|
RUN apt-get install -y gcc g++ gfortran make cmake flex libfl-dev libfftw3-dev libsuitesparse-dev libblas-dev liblapack-dev libtool
|
|
|
|
# building from git repo dependencies
|
|
|
|
RUN apt-get install -y autoconf automake git
|
|
|
|
# parallel dependencies
|
2022-10-02 11:14:58 -04:00
|
|
|
RUN apt-get install -y libhwloc15 libopenmpi-dev openmpi-bin openmpi-common
|
2022-09-18 07:48:56 -04:00
|
|
|
|
|
|
|
RUN git clone https://github.com/trilinos/Trilinos.git
|
|
|
|
WORKDIR Trilinos
|
|
|
|
RUN git checkout tags/trilinos-release-12-12-1
|
|
|
|
RUN mkdir build
|
|
|
|
RUN mkdir /opt/trilinos
|
|
|
|
WORKDIR build
|
|
|
|
ADD trilinos/reconfigure .
|
|
|
|
RUN ./reconfigure
|
|
|
|
RUN make
|
|
|
|
RUN make install
|
|
|
|
|
|
|
|
# install Xyce
|
|
|
|
WORKDIR /toolsrc
|
|
|
|
RUN apt-get install -y bison
|
|
|
|
RUN git clone https://github.com/Xyce/Xyce.git
|
|
|
|
WORKDIR Xyce
|
|
|
|
RUN ./bootstrap
|
|
|
|
RUN mkdir build
|
|
|
|
WORKDIR build
|
|
|
|
RUN ../configure ARCHDIR=/opt/trilinos --enable-mpi --disable-verbose_linear --disable-verbose_nonlinear --disable-verbose_time --enable-shared --enable-xyce-shareable CC=mpicc CXX=mpicxx F77=mpifort CXXFLAGS="-O1 -fno-inline -std=c++11 -I/usr/lib/x86_64-linux-gnu/openmpi/include"
|
|
|
|
RUN make
|
|
|
|
RUN make install
|
|
|
|
|
|
|
|
# install ACT
|
|
|
|
WORKDIR /toolsrc
|
|
|
|
RUN apt-get install -y libedit-dev zlib1g-dev m4 git gcc g++ make
|
|
|
|
RUN git clone https://github.com/asyncvlsi/act.git
|
|
|
|
WORKDIR act
|
|
|
|
ENV ACT_HOME=/opt/cad
|
|
|
|
ENV VLSI_TOOLS_SRC=/toolsrc/act
|
|
|
|
RUN ./configure $ACT_HOME
|
|
|
|
RUN ./build
|
|
|
|
RUN make install
|
|
|
|
|
|
|
|
# install Haystack
|
|
|
|
WORKDIR /toolsrc
|
|
|
|
RUN git clone https://github.com/nbingham1/haystack.git
|
|
|
|
WORKDIR haystack
|
|
|
|
RUN git submodule update --init --recursive
|
|
|
|
WORKDIR lib
|
|
|
|
RUN make
|
|
|
|
WORKDIR ../bin
|
|
|
|
RUN make
|
|
|
|
RUN cp hseplot/plot /opt/cad/bin
|
|
|
|
RUN cp hsesim/hsesim /opt/cad/bin
|
|
|
|
RUN cp hseenc/hseenc /opt/cad/bin
|
|
|
|
|
|
|
|
# install ACT-06
|
2022-09-18 15:28:51 -04:00
|
|
|
RUN apt-get install -y libedit-dev zlib1g-dev m4 git gcc g++ make
|
2022-09-18 14:06:48 -04:00
|
|
|
WORKDIR /toolsrc
|
2022-09-18 15:28:51 -04:00
|
|
|
RUN --mount=type=secret,id=user --mount=type=secret,id=token git clone https://$(cat /run/secrets/user):$(cat /run/secrets/token)@git.broccolimicro.io/Broccoli/act-06.git
|
2022-09-18 14:06:48 -04:00
|
|
|
WORKDIR act-06
|
2022-09-18 23:42:35 -04:00
|
|
|
RUN XYCE_INSTALL="/usr/local" make
|
|
|
|
RUN cp prsim/prsim chan.py measure.py sim2vcd.py tlint/tlint spi2act/spi2act.py v2act/v2act /opt/cad/bin
|
|
|
|
|
2022-09-24 18:31:12 -04:00
|
|
|
# install go
|
|
|
|
WORKDIR /toolsrc
|
|
|
|
RUN apt-get -y install wget
|
|
|
|
RUN /usr/bin/wget https://go.dev/dl/go1.19.1.linux-amd64.tar.gz
|
|
|
|
RUN tar -C /opt -xzf go1.19.1.linux-amd64.tar.gz
|
|
|
|
|
|
|
|
# install python
|
|
|
|
RUN apt-get install -y python3 pip
|
|
|
|
|
|
|
|
# install editors
|
|
|
|
WORKDIR "/"
|
|
|
|
ADD home template
|
2022-09-26 10:33:59 -04:00
|
|
|
RUN apt-get install -y vim
|
2022-09-24 18:31:12 -04:00
|
|
|
RUN mkdir -p /template/.vim/pack/plugins/start
|
|
|
|
RUN git clone https://github.com/fatih/vim-go.git /template/.vim/pack/plugins/start/vim-go
|
|
|
|
RUN git clone https://tpope.io/vim/fugitive.git /template/.vim/pack/plugins/start/fugitive
|
|
|
|
RUN git clone https://github.com/preservim/nerdtree.git /template/.vim/pack/plugins/start/nerdtree
|
|
|
|
|
2022-09-26 10:33:59 -04:00
|
|
|
# install gaw
|
2022-10-02 11:14:58 -04:00
|
|
|
RUN apt-get update --fix-missing; DEBIAN_FRONTEND=noninteractive apt-get install -y libgtk-3-dev libcanberra-gtk3-module
|
2022-09-26 10:33:59 -04:00
|
|
|
WORKDIR /toolsrc
|
|
|
|
RUN --mount=type=secret,id=user --mount=type=secret,id=token git clone https://$(cat /run/secrets/user):$(cat /run/secrets/token)@git.broccolimicro.io/Broccoli/waveview.git
|
|
|
|
WORKDIR waveview
|
|
|
|
RUN ./configure
|
|
|
|
RUN make
|
|
|
|
RUN make install
|
|
|
|
|
2022-10-02 11:14:58 -04:00
|
|
|
# install gtkwave
|
|
|
|
RUN apt-get update --fix-missing; DEBIAN_FRONTEND=noninteractive apt-get install -y gtkwave
|
|
|
|
|
2022-09-26 10:33:59 -04:00
|
|
|
# install magic layout tool
|
|
|
|
WORKDIR /toolsrc
|
|
|
|
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y tcsh m4 csh libx11-dev tcl-dev tk-dev libcairo2-dev mesa-common-dev libglu1-mesa-dev libncurses-dev
|
|
|
|
RUN git clone https://github.com/RTimothyEdwards/magic.git
|
|
|
|
WORKDIR magic
|
|
|
|
RUN ./configure
|
|
|
|
RUN make
|
|
|
|
RUN make install
|
|
|
|
|
|
|
|
# install prspice
|
|
|
|
WORKDIR /toolsrc
|
|
|
|
RUN git clone https://github.com/nbingham1/prspice.git
|
|
|
|
WORKDIR prspice
|
|
|
|
RUN git checkout xyce
|
|
|
|
RUN make
|
|
|
|
RUN cp prdbase prspice /opt/cad/bin
|
|
|
|
|
|
|
|
# install pr
|
|
|
|
WORKDIR /toolsrc
|
|
|
|
RUN --mount=type=secret,id=user --mount=type=secret,id=token git clone https://$(cat /run/secrets/user):$(cat /run/secrets/token)@git.broccolimicro.io/Broccoli/pr.git
|
|
|
|
RUN cp pr/* /opt/cad/bin
|
|
|
|
|
|
|
|
# install OpenRoad
|
|
|
|
#WORKDIR /toolsrc
|
|
|
|
#RUN git clone https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts.git
|
|
|
|
#WORKDIR OpenROAD-flow-scripts
|
|
|
|
|
2022-09-24 18:31:12 -04:00
|
|
|
# Clean up source code folder
|
2022-09-26 10:33:59 -04:00
|
|
|
#RUN rm -rf /toolsrc
|
2022-09-24 18:31:12 -04:00
|
|
|
|
|
|
|
# Connect user home directory of host machine
|
|
|
|
RUN mkdir "/host"
|
|
|
|
WORKDIR "/host"
|
2022-10-02 11:14:58 -04:00
|
|
|
RUN rm -rf /opt/cad/conf
|
|
|
|
RUN ln -s "/host/tech" "/opt/cad/conf"
|
2022-09-24 18:31:12 -04:00
|
|
|
|
|
|
|
ENV USER "bcli"
|
|
|
|
ENV USER_ID "1000"
|
|
|
|
ENV GROUP_ID "1000"
|
|
|
|
|
|
|
|
CMD exec /bin/bash -c "/usr/sbin/groupadd -g $GROUP_ID $USER; \
|
|
|
|
/usr/sbin/useradd -u $USER_ID -g $USER $USER; \
|
|
|
|
cp -r /template /home/$USER; \
|
|
|
|
chown -R $USER:$USER /home/$USER; \
|
|
|
|
trap : TERM INT; sleep infinity & wait"
|