Fine-grained pulling¶
Note
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 REGISTRY_PREFIX/[ARCHITECTURE/][COLLECTION/]TOOL_NAME
.
Hint
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.
Makefiles¶
ghdl-yosys-blink: Makefile: an example showcasing how to use this fine-grained approach with a makefile. The same make based strategy is used in gh:antonblanchard/microwatt.
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
Python launchers¶
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’s Launcher¶
Edalize (see Welcome to Edalize’s documentation!) provides EDALIZE_LAUNCHER
, which allows overriding each command:
olofk/edalize: search?q=EDALIZE_LAUNCHER.
el_docker is a built-in launcher for Docker.
See also:
PyFPGA’s OpenFlow¶
PyFPGA’s OpenFlow (see PyFPGA’s documentation and gh:PyFPGA/openflow) allows running tools in containers, similarly to
el_docker
.
In fact, OpenFlow can be used along with Edalize’s EDALIZE_LAUNCHER
environment variable.