ghdl / docker

Scripts to build and use docker images including GHDL
40 stars 10 forks source link
actions ci dockerfiles ghdl gtkwave hardware icestorm nextpnr openocd pnr prjtrellis simulation synthesis testbench verilog vhdl vunit yosys

'base' workflow Status 'test' workflow Status 'bookworm' workflow Status

'vunit' workflow Status 'ext' workflow Status 'cosim' workflow Status 'mirror' workflow Status

This repository contains scripts and YAML workflows for GitHub Actions (GHA) to build and to deploy the container images that are used and/or published by the GHDL GitHub organization. All of them are pushed to hub.docker.com/u/ghdl.


ATTENTION: Some images related to synthesis and PnR were moved to hdl/containers and hub.docker.com/u/hdlc. See DEPRECATED.


Images for development (i.e., building and/or testing ghdl):

Ready-to-use images:

See USE_CASES.md if you are looking for usage examples from a user perspective.

GHA workflows

· base

Build and push all the ghdl/build:* and ghdl/run:* docker images. :

· test

Build and push almost all the ghdl/ghdl:* and ghdl/pkg:* images. A pair of images is created in one job for each combination of:

The procedure in each job is as follows:

NOTE: images with GCC backend include lcov for code coverage analysis.

· bookworm [scheduled daily]

Complement of ghdl.yml, to be run after each successful run of the main workflow in ghdl/ghdl. One job is scheduled for each combination of [ bookworm ] and [ mcode, llvm-14 , gcc-12.3.0 ].

· vunit [triggered after workflow 'bookworm']

Build and push all the ghdl/vunit:* images, which are based on the ones created in the 'bookworm' workflow.

· ext [triggered after workflow 'vunit']

Build and push all the ghdl/ext:* images:

· cosim

See ghdl/ghdl-cosim: docker and ghdl.github.io/ghdl-cosim/vhpidirect/examples/vffi_user.

NOTE: *-slim variants of matplotlib, octave and xyce images are provided too. Those are based on ghdl/cosim:py, instead of ghdl/cosim:vunit-cocotb.

Packaging

Multiple artifacts of GHDL are generated in these workflows. For example, each job in test.yml generates a tarball that is then installed in a ghdl/ghdl:* image, and the content is published in a ghdl/pkg:* image. These resources might be useful for users/developers who:

However, it is discouraged to use these pre-built artifacts to install GHDL on host systems.