mirror of
https://github.com/verilator/verilator.git
synced 2025-01-06 06:37:45 +00:00
.. | ||
hooks | ||
Dockerfile | ||
README.adoc | ||
verilator-docker | ||
verilator-wrap.sh |
= Docker Container as Verilator executable This allows you to run Verilator easily as a docker image, e.g.: docker run -ti verilator/verilator:latest --version This is in particular useful to compare against older version or to check when an issue was introduced. You will need to give it access to your files as a volume and fix the user rights: .... docker run -ti -v ${PWD}:/work --user $(id -u):$(id -g) verilator/verilator:latest --cc test.v .... The caveat is that it can only access files below the current directory then, a workaround is to adopt the volume and set `-workdir`. There is a convenience script in this folder that wraps around the docker calls: $ verilator-docker 3.922 --version Verilator 3.922 2018-03-17 rev UNKNOWN_REV Finally, you can also work in the container by setting the entrypoint (don't forget to mount a volume if you want your work persistent): docker run -ti --entrypoint /bin/bash verilator/verilator:latest The other files in this folder all for building the containers and to store in them. You could use it to build Verilator at a specific commit: docker build --build-arg SOURCE_COMMIT=<commit> . == Internals The Dockerfile is pretty straight-forward, it builds Verilator and removes the tree after that to reduce the image size. It sets a wrapper script (`verilator-wrap.sh`) as entrypoint. This script calls Verilator but also copies the verilated runtime files to the `obj_dir` or the `-Mdir` respectively. This allows the user to build the C++ output with the matching runtime files. The wrapper patches the generated Makefile accordingly. There is also a hook defined that is run by docker hub via automated builds.