diff --git a/.github/workflows/impl.yml b/.github/workflows/impl.yml index 89f28dcf..f1df8fae 100644 --- a/.github/workflows/impl.yml +++ b/.github/workflows/impl.yml @@ -1,5 +1,6 @@ # Authors: # Unai Martinez-Corral +# Sebastian Birke # # Copyright 2019-2021 Unai Martinez-Corral # @@ -43,9 +44,21 @@ jobs: - run: echo "$(pwd)/.github/bin" >> $GITHUB_PATH - - run: dockerBuild impl impl + - run: dockerBuild impl:ecp5 impl ecp5 + - run: dockerBuild impl:ice40 impl ice40 + - run: dockerBuild impl:generic impl generic + - run: dockerBuild impl:icestorm impl icestorm + - run: dockerBuild impl:prjtrellis impl prjtrellis + - run: dockerBuild impl:pnr impl pnr + - run: dockerBuild impl impl - - run: dockerTest impl + - run: dockerTest impl:ecp5 impl--ecp5 + - run: dockerTest impl:ice40 impl--ice40 + - run: dockerTest impl:generic impl--generic + - run: dockerTest impl:icestorm impl--icestorm + - run: dockerTest impl:prjtrellis impl--prjtrellis + - run: dockerTest impl:pnr impl--pnr + - run: dockerTest impl impl - name: Login to DockerHub if: github.event_name != 'pull_request' && github.repository == 'hdl/containers' @@ -57,4 +70,10 @@ jobs: - if: github.event_name != 'pull_request' && github.repository == 'hdl/containers' run: >- dockerPush + impl:ecp5 + impl:ice40 + impl:generic + impl:icestorm + impl:prjtrellis + impl:pnr impl diff --git a/doc/index.adoc b/doc/index.adoc index 6a950ce3..3adc7a91 100644 --- a/doc/index.adoc +++ b/doc/index.adoc @@ -24,7 +24,14 @@ include::tools.adoc[] Images including multiple tools: -* **I**mplementation: https://hub.docker.com/r/hdlc/impl/tags[image:https://img.shields.io/docker/image-size/hdlc/impl?longCache=true&style=flat-square&label=hdlc%2Fimpl&logo=Docker&logoColor=fff[title='hdlc/impl:latest Docker image size']] +* **I**mplementation: +** https://hub.docker.com/r/hdlc/impl/tags[image:https://img.shields.io/docker/image-size/hdlc/impl/ecp5?longCache=true&style=flat-square&label=hdlc%2Fimpl:ecp5&logo=Docker&logoColor=fff[title='hdlc/impl:ecp5 Docker image size']] GHDL + Yosys + nextpnr-ecp5 +** https://hub.docker.com/r/hdlc/impl/tags[image:https://img.shields.io/docker/image-size/hdlc/impl/ice40?longCache=true&style=flat-square&label=hdlc%2Fimpl:ice40&logo=Docker&logoColor=fff[title='hdlc/impl:ice40 Docker image size']] GHDL + Yosys + nextpnr-ice40 +** https://hub.docker.com/r/hdlc/impl/tags[image:https://img.shields.io/docker/image-size/hdlc/impl/generic?longCache=true&style=flat-square&label=hdlc%2Fimpl:generic&logo=Docker&logoColor=fff[title='hdlc/impl:generic Docker image size']] GHDL + Yosys + nextpnr-generic +** https://hub.docker.com/r/hdlc/impl/tags[image:https://img.shields.io/docker/image-size/hdlc/impl/icestorm?longCache=true&style=flat-square&label=hdlc%2Fimpl:icestorm&logo=Docker&logoColor=fff[title='hdlc/impl:icestorm Docker image size']] impl:ice40 + icestorm +** https://hub.docker.com/r/hdlc/impl/tags[image:https://img.shields.io/docker/image-size/hdlc/impl/prjtrellis?longCache=true&style=flat-square&label=hdlc%2Fimpl:prjtrellis&logo=Docker&logoColor=fff[title='hdlc/impl:prjtrellis Docker image size']] impl:ecp5 + prjtrellis +** https://hub.docker.com/r/hdlc/impl/tags[image:https://img.shields.io/docker/image-size/hdlc/impl/pnr?longCache=true&style=flat-square&label=hdlc%2Fimpl:pnr&logo=Docker&logoColor=fff[title='hdlc/impl:pnr Docker image size']] GHDL + Yosys + nextpnr-ecp5 + nextpnr-ice40 + nextpnr-generic +** https://hub.docker.com/r/hdlc/impl/tags[image:https://img.shields.io/docker/image-size/hdlc/impl/latest?longCache=true&style=flat-square&label=hdlc%2Fimpl&logo=Docker&logoColor=fff[title='hdlc/impl:latest Docker image size']] impl:pnr + icestorm + prjtrellis * **F**ormal: ** https://hub.docker.com/r/hdlc/formal/tags[image:https://img.shields.io/docker/image-size/hdlc/formal/latest?longCache=true&style=flat-square&label=hdlc%2Fformal&logo=Docker&logoColor=fff[title='hdlc/formal:latest Docker image size']] all solvers depending on Python 3. ** https://hub.docker.com/r/hdlc/formal/tags[image:https://img.shields.io/docker/image-size/hdlc/formal/min?longCache=true&style=flat-square&label=hdlc%2Fformal:min&logo=Docker&logoColor=fff[title='hdlc/formal:min Docker image size']] Z3 only. diff --git a/doc/tools.yml b/doc/tools.yml index 9a74c7dd..d1814df4 100644 --- a/doc/tools.yml +++ b/doc/tools.yml @@ -93,6 +93,7 @@ icestorm: use: - 'icestorm' in: + - 'impl:icestorm' - 'impl' - 'prog' otherin: @@ -132,6 +133,7 @@ prjtrellis: use: - 'prjtrellis' in: + - 'impl:prjtrellis' - 'impl' otherin: - 'nextpnr:prjtrellis' diff --git a/impl.dockerfile b/impl.dockerfile index 24c268da..251cd95f 100644 --- a/impl.dockerfile +++ b/impl.dockerfile @@ -1,5 +1,6 @@ # Authors: # Unai Martinez-Corral +# Sebastian Birke # # Copyright 2019-2021 Unai Martinez-Corral # @@ -17,20 +18,60 @@ # # SPDX-License-Identifier: Apache-2.0 -FROM hdlc/nextpnr +FROM hdlc/ghdl:yosys AS base COPY --from=hdlc/pkg:ghdl-yosys-plugin /ghdl / COPY --from=hdlc/pkg:yosys /yosys / RUN apt-get update -qq \ && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ - libffi-dev \ - libgnat-8 \ - libreadline-dev \ - tcl-dev \ - graphviz \ - xdot \ + libboost-all-dev \ + libomp5-7 \ + make \ && apt-get autoclean && apt-get clean && apt-get -y autoremove \ - && rm -rf /var/lib/apt/lists \ - && yosys-config --exec mkdir -p --datdir/plugins \ - && yosys-config --exec ln -s /usr/local/lib/ghdl_yosys.so --datdir/plugins/ghdl.so + && rm -rf /var/lib/apt/lists + +#--- + +FROM base AS ecp5 + +COPY --from=hdlc/pkg:nextpnr-ecp5 /nextpnr-ecp5 / + +#--- + +FROM base AS ice40 + +COPY --from=hdlc/pkg:nextpnr-ice40 /nextpnr-ice40 / + +#--- + +FROM base AS generic + +COPY --from=hdlc/pkg:nextpnr-generic /nextpnr-generic / + +#--- + +FROM ice40 AS icestorm + +COPY --from=hdlc/pkg:icestorm /icestorm / + +#--- + +FROM ecp5 AS prjtrellis + +COPY --from=hdlc/pkg:prjtrellis /prjtrellis / + +#--- + +FROM base AS pnr + +COPY --from=hdlc/pkg:nextpnr-ecp5 /nextpnr-ecp5 / +COPY --from=hdlc/pkg:nextpnr-ice40 /nextpnr-ice40 / +COPY --from=hdlc/pkg:nextpnr-generic /nextpnr-generic / + +#--- + +FROM pnr AS latest + +COPY --from=hdlc/pkg:icestorm /icestorm / +COPY --from=hdlc/pkg:prjtrellis /prjtrellis / diff --git a/test/impl--ecp5.sh b/test/impl--ecp5.sh new file mode 100755 index 00000000..86a9235a --- /dev/null +++ b/test/impl--ecp5.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env sh + +# Authors: +# Unai Martinez-Corral +# Sebastian Birke +# +# Copyright 2020-2021 Unai Martinez-Corral +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +set -e + +cd $(dirname "$0") + +./ghdl.sh +./yosys.sh +./nextpnr--ecp5.sh diff --git a/test/impl--generic.sh b/test/impl--generic.sh new file mode 100755 index 00000000..8974c8d2 --- /dev/null +++ b/test/impl--generic.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env sh + +# Authors: +# Unai Martinez-Corral +# Sebastian Birke +# +# Copyright 2020-2021 Unai Martinez-Corral +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +set -e + +cd $(dirname "$0") + +./ghdl.sh +./yosys.sh +./nextpnr--generic.sh diff --git a/test/impl--ice40.sh b/test/impl--ice40.sh new file mode 100755 index 00000000..e4d7741d --- /dev/null +++ b/test/impl--ice40.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env sh + +# Authors: +# Unai Martinez-Corral +# Sebastian Birke +# +# Copyright 2020-2021 Unai Martinez-Corral +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +set -e + +cd $(dirname "$0") + +./ghdl.sh +./yosys.sh +./nextpnr--ice40.sh diff --git a/test/impl--icestorm.sh b/test/impl--icestorm.sh new file mode 100755 index 00000000..cef62e16 --- /dev/null +++ b/test/impl--icestorm.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env sh + +# Authors: +# Unai Martinez-Corral +# Sebastian Birke +# +# Copyright 2020-2021 Unai Martinez-Corral +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +set -e + +cd $(dirname "$0") + +./ghdl.sh +./yosys.sh + +./nextpnr--ice40.sh +./icestorm.sh diff --git a/test/impl--pnr.sh b/test/impl--pnr.sh new file mode 100755 index 00000000..7c768bf4 --- /dev/null +++ b/test/impl--pnr.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env sh + +# Authors: +# Unai Martinez-Corral +# Sebastian Birke +# +# Copyright 2020-2021 Unai Martinez-Corral +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +set -e + +cd $(dirname "$0") + +./ghdl.sh +./yosys.sh + +./nextpnr--ecp5.sh +./nextpnr--ice40.sh +./nextpnr--generic.sh diff --git a/test/impl--prjtrellis.sh b/test/impl--prjtrellis.sh new file mode 100755 index 00000000..169c79c4 --- /dev/null +++ b/test/impl--prjtrellis.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env sh + +# Authors: +# Unai Martinez-Corral +# Sebastian Birke +# +# Copyright 2020-2021 Unai Martinez-Corral +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +set -e + +cd $(dirname "$0") + +./ghdl.sh +./yosys.sh + +./nextpnr--ecp5.sh +./prjtrellis.sh diff --git a/test/impl.sh b/test/impl.sh index c56d2e7d..31dc5734 100755 --- a/test/impl.sh +++ b/test/impl.sh @@ -2,6 +2,7 @@ # Authors: # Unai Martinez-Corral +# Sebastian Birke # # Copyright 2020-2021 Unai Martinez-Corral # @@ -26,7 +27,12 @@ cd $(dirname "$0") ./_env.sh ./ghdl.sh -./nextpnr.sh ./yosys.sh -./_todo.sh +./nextpnr--ecp5.sh +./prjtrellis.sh + +./nextpnr--ice40.sh +./icestorm.sh + +./nextpnr--generic.sh