These images are coloured GREEN in the Graphs.
Ready-to-use images are provided for each tool, which contain the tool and the dependencies for it to run successfully.
These are typically named
Since all the images in each collection are based on the same root image, pulling multiple images involves retrieving a few additional layers only. Therefore, this is the recommended approach for CI or other environments with limited resources.
gh:marph91/icestick-remote: the CI workflow for synthesis uses this approach.
Those projects use a partial Makefile such as the following, for optionally wrapping regular tool calls:
CONTAINER_ENGINE ?= docker PWD = $(shell pwd) CONTAINER_ARGS = run --rm -v $(PWD):/wrk -w /wrk GHDL = $(CONTAINER_ENGINE) $(CONTAINER_ARGS) gcr.io/hdl-containers/ghdl/yosys ghdl YOSYS = $(CONTAINER_ENGINE) $(CONTAINER_ARGS) gcr.io/hdl-containers/ghdl/yosys yosys NEXTPNR = $(CONTAINER_ENGINE) $(CONTAINER_ARGS) gcr.io/hdl-containers/nextpnr/ice40 nextpnr-ice40 ICEPACK = $(CONTAINER_ENGINE) $(CONTAINER_ARGS) gcr.io/hdl-containers/icestorm icepack
There are several EDA tooling management projects which allow wrapping the execution of commands on containers. Any of them can be used with the containers provided in this repository.
EDA²’s Docker abstraction¶
Layer CLITool of EDA² (see Electronic Design Automation Abstraction (EDA²) Documentation and The pyEDAA.CLITool Documentation), provides
Docker.py to be combined with any
of the tools supported in the same repository.
Edalize (see Welcome to Edalize’s documentation!) provides
EDALIZE_LAUNCHER, which allows overriding each command:
el_docker is a built-in launcher for Docker.
PyFPGA’s OpenFlow (see PyFPGA Documentation and gh:PyFPGA/openflow) allows running tools in containers, similarly to
In fact, OpenFlow can be used along with Edalize’s
EDALIZE_LAUNCHER environment variable.