{"id":13584019,"url":"https://github.com/halfmanhalftaco/fpga-docker","last_synced_at":"2025-04-06T21:34:04.215Z","repository":{"id":201494590,"uuid":"164151365","full_name":"halfmanhalftaco/fpga-docker","owner":"halfmanhalftaco","description":"Tools for running FPGA vendor toolchains with Docker","archived":false,"fork":false,"pushed_at":"2023-04-30T01:52:00.000Z","size":33,"stargazers_count":70,"open_issues_count":9,"forks_count":14,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-08-02T15:54:31.159Z","etag":null,"topics":["altera","fpga","lattice","quartus","verilog","vhdl","xilinx"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/halfmanhalftaco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-01-04T20:22:02.000Z","updated_at":"2024-07-16T18:31:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"7ca661fb-e43c-47aa-bfc5-f64080245329","html_url":"https://github.com/halfmanhalftaco/fpga-docker","commit_stats":null,"previous_names":["halfmanhalftaco/fpga-docker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halfmanhalftaco%2Ffpga-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halfmanhalftaco%2Ffpga-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halfmanhalftaco%2Ffpga-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halfmanhalftaco%2Ffpga-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/halfmanhalftaco","download_url":"https://codeload.github.com/halfmanhalftaco/fpga-docker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223265127,"owners_count":17116298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["altera","fpga","lattice","quartus","verilog","vhdl","xilinx"],"created_at":"2024-08-01T15:03:57.761Z","updated_at":"2024-11-06T00:31:24.296Z","avatar_url":"https://github.com/halfmanhalftaco.png","language":"Makefile","funding_links":[],"categories":["Makefile"],"sub_categories":[],"readme":"FPGA for Docker\n---------------\n\nThis repository contains a series of tools to create sandboxed Docker\ncontainers for running various FPGA development tools on Linux.\n\nThe motivation for this project was to avoid having to install a bunch\nof system-wide dependencies since most of these tools require 32-bit\nlibraries to run.\n\n## Recent changes:\n\n* 2021-08-24\n  * Added more versions of Quartus\n  * Containers are more user-agnostic\n  * Enabled USB passthrough for major device type 189 (most JTAG adapters)\n* 2020-05-24\n  * An extensive revamp of the entire build system. \n  * Added Intel Quartus 19.1 and Xilinx ISE 14.7. \n  * X11 (mostly) works for local UNIX socket, SSH forwarding and remote\n    displays, with or without xauth cookies.  \n  * UID/GID other than 1000 supported (uses your current uid/gid).\n\n## Supported Tools\n\n- Intel Quartus Prime 20.1.1\n- Intel Quartus Prime 20.1\n- Intel Quartus Prime 19.1\n- Intel Quartus Prime 18.1\n- Intel Quartus Prime 18.0\n- Intel Quartus Prime 17.1\n- Intel Quartus Prime 17.0\n- Altera Quartus Prime 16.1\n- Altera Quartus Prime 16.0\n- Altera Quartus Prime 15.1\n- Altera Quartus II 15.0\n- Altera Quartus II 14.1\n- Altera Quartus II 14.0\n- Altera Quartus II 13.1\n- Altera Quartus II 13.0sp1\n- Xilinx ISE 14.7\n- Lattice iCEcube2 Sep_12_2017, Dec_10_2020\n\n## Requirements\n\n* Linux capable of running Docker\n* X11 server (local, network or SSH tunneled)\n\n## Usage\n\nEdit the top-level `Makefile` to control which containers will be built. A\ncommon base image will be built that each tool uses to reduce overall container\nsize and build time.\n\nRun `make` and all the desired containers will be built. Many of the tools will\ndownload their installers automatically but some require you to log in to the\nvendor's site and download manually (Xilinx ISE).\n\nIn the case of Lattice iCEcube2, the GUI installer must be used and will launch\nautomatically. Heed the directions printed to the console before it launches.\nAdditionally, a license file will need to be acquired separately from Lattice\nbefore building the container. Further instructions can be found in the\n`README.md` within that subdirectory. \n\nOnce the containers are built, you can run them with the `run-fpga` tool in the\ntop directory. A unique `home` directory for each tool is created and mounted\ninto the container along with a shared directory mounted to ~/shared so changes\nwill persist between runs and settings can be kept separate for each tool.  If\nyou want to control the location of the home directories or change other\noptions, see the `run-fpga` script. After exiting the tool, the container is\ndeleted (but not the image or home directory).\n\nNo user data is stored inside the container as long as you only manipulate data\nwithin the home directory. Any data not in your home directory will be lost\nafter closing the tool.\n\n\n## Caveats\n\n* Your user account must have full access to docker (e.g., a member of the\n  `docker` group)\n* To enhance performance, the docker option \"--ipc=host\" is enabled when using\n  a local UNIX socket connection to X11. Read the docker documentation for more\n  information on the security implications of this.\n* Quartus builds will use a large amount of disk space during builds, upwards\n  of 50GB.  The final containers are around 20GB each. Lattice\n  iCEcube2 is much smaller at about 1.5GB. To save space, all the tools use a \n  common base image with the OS and libraries, fonts, etc.\n* If you want to build the Xilinx ISE 14.7 container, you must have `qemu-nbd`\n  and the nbd kernel driver installed and root access via sudo. An alternate \n  method that uses much more disk space can be implemented, but would still \n  require root access to loop mount a filesystem image.\n* Outbound network connections are not restricted. If you want to apply specific \n  `iptables` rules to a container, either edit the `fpga` script in the\n  `fpga-base/\u003coperating system\u003e` (most use the centos6 flavor) directory or create \n  a script in `home/\u003ctool\u003e/.fpga-docker/startup.sh`. If you are using a local X11 \n  server via UNIX socket you can disable network entirely by adding `--network none`\n  to the `docker run` command at the end of the `run-fpga` script.\n\n\n## TODO\n\n* Add more Xilinx tools (Vivado)\n* Support command-line based workflows\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalfmanhalftaco%2Ffpga-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhalfmanhalftaco%2Ffpga-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalfmanhalftaco%2Ffpga-docker/lists"}