├── .gitattributes ├── .gitignore ├── AUTHORS ├── LICENSE ├── build.sh ├── docs ├── CODE_OF_CONDUCT.md ├── README.md ├── assets │ ├── dl-1.jpg │ ├── dl-2.jpg │ ├── install-0.jpg │ ├── install-1.jpg │ ├── install-2.jpg │ ├── install-3.jpg │ ├── install-4.jpg │ ├── install-5.jpg │ ├── install-6.jpg │ ├── install-7.jpg │ ├── placeholder.png │ └── quartus-prime.png ├── manifest.json ├── programmer-download-install.md ├── programmer-remote-jtag.md └── programmer-tool.md ├── examples ├── release-mist.yml ├── release.yml └── test-build.yml ├── quartus-base ├── Dockerfile └── libs │ ├── libpng12-0_1.2.54-1ubuntu1.1_amd64.deb │ └── libpng12-0_1.2.54-1ubuntu1.1_i386.deb ├── quartus13.0 ├── local │ ├── Dockerfile │ └── files │ │ └── file.lst └── remote │ └── Dockerfile ├── quartus13.1 ├── local │ ├── Dockerfile │ └── files │ │ └── file.lst └── remote │ └── Dockerfile ├── quartus17.0 ├── local │ ├── Dockerfile │ └── files │ │ └── file.lst └── remote │ └── Dockerfile ├── quartus17.1 ├── local │ ├── Dockerfile │ └── files │ │ └── file.lst └── remote │ └── Dockerfile ├── quartus18.1 ├── local │ ├── Dockerfile │ └── files │ │ └── file.lst └── remote │ └── Dockerfile ├── quartus19.1 ├── local │ ├── Dockerfile │ └── files │ │ └── file.lst └── remote │ └── Dockerfile ├── quartus20.1 ├── local │ ├── Dockerfile │ └── files │ │ └── file.lst └── remote │ └── Dockerfile ├── quartus21.1 ├── local │ ├── Dockerfile │ └── files │ │ └── file.lst └── remote │ └── Dockerfile ├── quartus22.1 ├── local │ ├── Dockerfile │ └── files │ │ └── file.lst └── remote │ └── Dockerfile └── quartus23.1 ├── local ├── Dockerfile └── files │ └── file.lst └── remote └── Dockerfile /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # SPDX-License-Identifier: CC0-1.0 3 | # SPDX-FileType: OTHER 4 | # SPDX-FileCopyrightText: (c) 2021-2022, The Raetro authors and contributors 5 | ############################################################################### 6 | # This file can be copied and used freely without restrictions. 7 | # Please note that the actual code of MiMiC is covered by the GNU 8 | # General Public License and is *not* in the public domain. 9 | ############################################################################### 10 | # attribute # Checkin behavior # Checkout behavior 11 | ############################################################################### 12 | # text # Normalized to LF # Convert to native line endings 13 | # [text] eol=crlf # Normalized to LF # Convert to CRLF 14 | # [text] eol=lf # Normalized to LF # Convert to LF 15 | # -text or binary # No conversion # No conversion 16 | # text=auto # Like "text" if text file according to git, otherwise, like "binary" 17 | # unspecified # Fall back to core.autocrlf setting of local environment 18 | ############################################################################### 19 | # core.autocrlf 20 | # false: same as binary 21 | # true: same as eol=crlf 22 | # input: same as eol=lf 23 | ############################################################################### 24 | # Set default behavior to automatically normalize line endings. 25 | ############################################################################### 26 | * text=auto 27 | ############################################################################### 28 | ###### Git 29 | ############################################################################### 30 | .gitattributes text 31 | .gitconfig text 32 | .gitignore text 33 | .gitmodules text 34 | ############################################################################### 35 | ##### Windows 36 | ############################################################################### 37 | *.bat text eol=crlf 38 | *.ps1 text eol=crlf 39 | *.dll binary 40 | *.exe binary 41 | ############################################################################### 42 | ##### Linux 43 | ############################################################################### 44 | *.sh eol=lf 45 | *.so binary 46 | ############################################################################### 47 | ##### Global 48 | ############################################################################### 49 | # Docker 50 | ############################################################################### 51 | *.dockerignore text 52 | Dockerfile text 53 | ############################################################################### 54 | # Documentation 55 | ############################################################################### 56 | *.ipynb text 57 | *.markdown text 58 | *.md text 59 | *.mdown text 60 | *.mdtext text 61 | *.mdtxt text 62 | *.mdwn text 63 | *.mkd text 64 | *.mkdn text 65 | *.txt text 66 | *COPYRIGHT* text 67 | *README* text 68 | AUTHORS text 69 | CHANGELOG text 70 | CHANGES text 71 | CONTRIBUTING text 72 | COPYING text 73 | copyright text 74 | INSTALL text 75 | license text 76 | LICENSE text 77 | NEWS text 78 | readme text 79 | TODO text 80 | ############################################################################### 81 | # Configuration 82 | ############################################################################### 83 | *.bowerrc text 84 | *.cfg eol=lf 85 | *.cnf text 86 | *.conf text 87 | *.config eol=lf 88 | *.json eol=lf 89 | *.conf eol=lf 90 | *.config eol=lf 91 | *.env eol=lf 92 | *.ini eol=lf 93 | *.toml eol=lf 94 | *.npmignore text 95 | *.xml eol=lf 96 | *.yaml eol=lf 97 | *.yml eol=lf 98 | .clang-format text 99 | .browserslistrc text 100 | .editorconfig text 101 | .slugignore text 102 | browserslist text 103 | Makefile text 104 | makefile text 105 | Procfile text 106 | ############################################################################### 107 | # Linters 108 | ############################################################################### 109 | .csslintrc text 110 | .eslintrc text 111 | .htmlhintrc text 112 | .jscsrc text 113 | .jshintignore text 114 | .jshintrc text 115 | .stylelintrc text 116 | ############################################################################### 117 | # Video 118 | ############################################################################### 119 | *.3gp binary 120 | *.3gpp binary 121 | *.as binary 122 | *.asf binary 123 | *.asx binary 124 | *.fla binary 125 | *.flv binary 126 | *.m4v binary 127 | *.mng binary 128 | *.mov binary 129 | *.mp4 binary 130 | *.mpeg binary 131 | *.mpg binary 132 | *.ogv binary 133 | *.swc binary 134 | *.swf binary 135 | *.webm binary 136 | ############################################################################### 137 | # Audio 138 | ############################################################################### 139 | *.kar binary 140 | *.m4a binary 141 | *.mid binary 142 | *.midi binary 143 | *.mp3 binary 144 | *.ogg binary 145 | *.ra binary 146 | ############################################################################### 147 | # Graphics 148 | ############################################################################### 149 | *.ai binary 150 | *.bmp binary 151 | *.eps binary 152 | *.gif binary 153 | *.ico binary 154 | *.jng binary 155 | *.jp2 binary 156 | *.jpeg binary 157 | *.jpg binary 158 | *.jpx binary 159 | *.jxr binary 160 | *.pdf binary 161 | *.png binary 162 | *.psb binary 163 | *.psd binary 164 | *.svg text 165 | *.svgz binary 166 | *.tif binary 167 | *.tiff binary 168 | *.wbmp binary 169 | *.webp binary 170 | ############################################################################### 171 | # Archives 172 | ############################################################################### 173 | *.7z binary 174 | *.gz binary 175 | *.jar binary 176 | *.rae binary 177 | *.rar binary 178 | *.tar binary 179 | *.zip binary 180 | ############################################################################### 181 | # Fonts 182 | ############################################################################### 183 | *.eot binary 184 | *.otf binary 185 | *.ttf binary 186 | *.woff binary 187 | *.woff2 binary 188 | ############################################################################### 189 | # Executables 190 | ############################################################################### 191 | *.pyc binary 192 | ############################################################################### 193 | # Objects 194 | ############################################################################### 195 | *.o binary 196 | ############################################################################### 197 | ##### IDE/Editor 198 | ############################################################################### 199 | # Visual Studio 200 | *.csproj text eol=crlf 201 | *.dbproj text eol=crlf 202 | *.filters text eol=crlf 203 | *.fsproj text eol=crlf 204 | *.lsproj text eol=crlf 205 | *.modelproj text eol=crlf 206 | *.props text eol=crlf 207 | *.sln text eol=crlf 208 | *.sqlproj text eol=crlf 209 | *.vbproj text eol=crlf 210 | *.vcproj text eol=crlf 211 | *.vcxitems text eol=crlf 212 | *.vcxproj text eol=crlf 213 | *.wixproj text eol=crlf 214 | *.wmaproj text eol=crlf 215 | *.xproj text eol=crlf 216 | ############################################################################### 217 | # Eclipse 218 | ############################################################################### 219 | *.classpath text 220 | *.prefs 221 | *.project text 222 | ############################################################################### 223 | ##### Languages 224 | ############################################################################### 225 | # C/C++ 226 | ############################################################################### 227 | *.a binary 228 | *.app binary 229 | *.c eol=lf 230 | *.c++ eol=lf 231 | *.cc eol=lf 232 | *.cpp eol=lf 233 | *.cxx eol=lf 234 | *.dylib binary 235 | *.gch binary 236 | *.h eol=lf 237 | *.h++ eol=lf 238 | *.hh eol=lf 239 | *.hpp eol=lf 240 | *.la binary 241 | *.lai binary 242 | *.lib binary 243 | *.lo binary 244 | *.obj binary 245 | *.out binary 246 | *.pch binary 247 | *.slo binary 248 | ############################################################################### 249 | # Misc 250 | ############################################################################### 251 | *.css text 252 | *.html text diff=html 253 | *.js eol=lf 254 | *.json eol=lf 255 | *.jsx eol=lf 256 | *.php text diff=php 257 | *.pl eol=lf 258 | *.py text diff=python 259 | *.rb text diff=ruby 260 | *.sql text 261 | *.vue eol=lf 262 | 263 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: CC0-1.0 3 | # SPDX-FileType: OTHER 4 | # SPDX-FileCopyrightText: (c) 2021-2022, The Raetro authors and contributors 5 | ################################################################################ 6 | # intermediate build files 7 | *.bgn 8 | *.bit 9 | *.bld 10 | *.cmd_log 11 | *.drc 12 | *.ll 13 | *.lso 14 | *.msd 15 | *.msk 16 | *.ncd 17 | *.ngc 18 | *.ngd 19 | *.ngr 20 | *.pad 21 | *.par 22 | *.pcf 23 | *.prj 24 | *.ptwx 25 | *.rbb 26 | *.rbd 27 | *.stx 28 | *.syr 29 | *.twr 30 | *.twx 31 | *.unroutes 32 | *.ut 33 | *.xpi 34 | *.xst 35 | *_bitgen.xwbt 36 | *_envsettings.html 37 | *_map.map 38 | *_map.mrp 39 | *_map.ngm 40 | *_map.xrpt 41 | *_ngdbuild.xrpt 42 | *_pad.csv 43 | *_pad.txt 44 | *_par.xrpt 45 | *_summary.html 46 | *_summary.xml 47 | *_usage.xml 48 | *_xst.xrpt 49 | 50 | # iMPACT generated files 51 | _impactbatch.log 52 | impact.xsl 53 | impact_impact.xwbt 54 | ise_impact.cmd 55 | webtalk_impact.xml 56 | 57 | # Core Generator generated files 58 | xaw2verilog.log 59 | 60 | # project-wide generated files 61 | *.gise 62 | par_usage_statistics.html 63 | usage_statistics_webtalk.html 64 | webtalk.log 65 | webtalk_pn.xml 66 | 67 | # generated folders 68 | iseconfig/ 69 | xlnx_auto_0_xdb/ 70 | xst/ 71 | _ngo/ 72 | _xmsgs/ 73 | 74 | ### Diff template 75 | *.patch 76 | *.diff 77 | 78 | ### GitBook template 79 | # Node rules: 80 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 81 | .grunt 82 | 83 | ## Dependency directory 84 | ## Commenting this out is preferred by some people, see 85 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git 86 | node_modules 87 | 88 | # Book build output 89 | _book 90 | 91 | # eBook build output 92 | *.epub 93 | *.mobi 94 | *.pdf 95 | 96 | ### Backup template 97 | *.bak 98 | *.gho 99 | *.ori 100 | *.orig 101 | *.tmp 102 | 103 | ### Vim template 104 | # Swap 105 | [._t]*.s[a-v][a-z] 106 | !*.svg # comment out if you don't need vector files 107 | [._t]*.sw[a-p] 108 | [._t]s[a-rt-v][a-z] 109 | [._t]ss[a-gi-z] 110 | [._t]sw[a-p] 111 | 112 | # Session 113 | Session.vim 114 | Sessionx.vim 115 | 116 | # Temporary 117 | .netrwhist 118 | *~ 119 | # Auto-generated tag files 120 | tags 121 | # Persistent undo 122 | [._t]*.un~ 123 | 124 | ### C++ template 125 | # Prerequisites 126 | *.d 127 | 128 | # Compiled Object files 129 | *.slo 130 | *.lo 131 | *.o 132 | *.obj 133 | 134 | # Precompiled Headers 135 | *.gch 136 | *.pch 137 | 138 | # Compiled Dynamic libraries 139 | *.dylib 140 | *.dll 141 | 142 | # Fortran module files 143 | *.mod 144 | *.smod 145 | 146 | # Compiled Static libraries 147 | *.lai 148 | *.la 149 | *.a 150 | *.lib 151 | 152 | # Executables 153 | *.exe 154 | *.out 155 | *.app 156 | 157 | ### C template 158 | # Prerequisites 159 | *.d 160 | 161 | # Object files 162 | *.o 163 | *.ko 164 | *.obj 165 | *.elf 166 | 167 | # Linker output 168 | *.ilk 169 | *.map 170 | *.exp 171 | 172 | # Precompiled Headers 173 | *.gch 174 | *.pch 175 | 176 | # Libraries 177 | *.lib 178 | *.a 179 | *.la 180 | *.lo 181 | 182 | # Shared objects (inc. Windows DLLs) 183 | *.dll 184 | *.so 185 | *.so.* 186 | *.dylib 187 | 188 | # Executables 189 | *.exe 190 | *.out 191 | *.app 192 | *.i*86 193 | *.x86_64 194 | *.hex 195 | 196 | # Debug files 197 | *.dSYM/ 198 | *.su 199 | *.idb 200 | *.pdb 201 | 202 | # Kernel Module Compile Results 203 | *.mod* 204 | *.cmd 205 | .tmp_versions/ 206 | modules.order 207 | Module.symvers 208 | Mkfile.old 209 | dkms.conf 210 | 211 | ### NetBeans template 212 | **/nbproject/private/ 213 | **/nbproject/Makefile-*.mk 214 | **/nbproject/Package-*.bash 215 | build/ 216 | nbbuild/ 217 | dist/ 218 | nbdist/ 219 | .nb-gradle/ 220 | 221 | ### AtmelStudio template 222 | ## Ignore Atmel Studio temporary files and build results 223 | # https://www.microchip.com/mplab/avr-support/atmel-studio-7 224 | 225 | # Atmel Studio is powered by an older version of Visual Studio, 226 | # so most of the project and solution files are the same as VS files, 227 | # only prefixed by an `at`. 228 | 229 | #Build Directories 230 | [Dd]ebug/ 231 | [Rr]elease/ 232 | 233 | #Build Results 234 | *.o 235 | *.d 236 | *.eep 237 | *.elf 238 | *.hex 239 | *.map 240 | *.srec 241 | 242 | #User Specific Files 243 | *.atsuo 244 | 245 | ### Windows template 246 | # Windows thumbnail cache files 247 | Thumbs.db 248 | Thumbs.db:encryptable 249 | ehthumbs.db 250 | ehthumbs_vista.db 251 | 252 | # Dump file 253 | *.stackdump 254 | 255 | # Folder config file 256 | [Dd]esktop.ini 257 | 258 | # Recycle Bin used on file shares 259 | $RECYCLE.BIN/ 260 | 261 | # Windows Installer files 262 | *.cab 263 | *.msi 264 | *.msix 265 | *.msm 266 | *.msp 267 | 268 | # Windows shortcuts 269 | *.lnk 270 | 271 | ### JetBrains template 272 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 273 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 274 | 275 | # User-specific stuff 276 | .idea/**/workspace.xml 277 | .idea/**/tasks.xml 278 | .idea/**/usage.statistics.xml 279 | .idea/**/dictionaries 280 | .idea/**/shelf 281 | 282 | # Generated files 283 | .idea/**/contentModel.xml 284 | 285 | # Sensitive or high-churn files 286 | .idea/**/dataSources/ 287 | .idea/**/dataSources.ids 288 | .idea/**/dataSources.local.xml 289 | .idea/**/sqlDataSources.xml 290 | .idea/**/dynamic.xml 291 | .idea/**/uiDesigner.xml 292 | .idea/**/dbnavigator.xml 293 | 294 | # Gradle 295 | .idea/**/gradle.xml 296 | .idea/**/libraries 297 | 298 | # Gradle and Maven with auto-import 299 | # When using Gradle or Maven with auto-import, you should exclude module files, 300 | # since they will be recreated, and may cause churn. Uncomment if using 301 | # auto-import. 302 | # .idea/artifacts 303 | # .idea/compiler.xml 304 | # .idea/jarRepositories.xml 305 | # .idea/modules.xml 306 | # .idea/*.iml 307 | # .idea/modules 308 | # *.iml 309 | # *.ipr 310 | 311 | # CMake 312 | cmake-build-*/ 313 | 314 | # Mongo Explorer plugin 315 | .idea/**/mongoSettings.xml 316 | 317 | # File-based project format 318 | *.iws 319 | 320 | # IntelliJ 321 | out/ 322 | 323 | # mpeltonen/sbt-idea plugin 324 | .idea_modules/ 325 | 326 | # JIRA plugin 327 | atlassian-ide-plugin.xml 328 | 329 | # Cursive Clojure plugin 330 | .idea/replstate.xml 331 | 332 | # Crashlytics plugin (for Android Studio and IntelliJ) 333 | com_crashlytics_export_strings.xml 334 | crashlytics.properties 335 | crashlytics-build.properties 336 | fabric.properties 337 | 338 | # Editor-based Rest Client 339 | .idea/httpRequests 340 | 341 | # Android studio 3.1+ serialized cache file 342 | .idea/caches/build_file_checksums.ser 343 | 344 | ### VisualStudioCode template 345 | .vscode/* 346 | *.code-workspace 347 | 348 | # Local History for Visual Studio Code 349 | .history/ 350 | 351 | ### SublimeText template 352 | # Cache files for Sublime Text 353 | *.tmlanguage.cache 354 | *.tmPreferences.cache 355 | *.stTheme.cache 356 | 357 | # Workspace files are user-specific 358 | *.sublime-workspace 359 | 360 | # Project files should be checked into the repository, unless a significant 361 | # proportion of contributors will probably not be using Sublime Text 362 | # *.sublime-project 363 | 364 | # SFTP configuration file 365 | sftp-config.json 366 | sftp-config-alt*.json 367 | 368 | # Package control specific files 369 | Package Control.last-run 370 | Package Control.ca-list 371 | Package Control.ca-bundle 372 | Package Control.system-ca-bundle 373 | Package Control.cache/ 374 | Package Control.ca-certs/ 375 | Package Control.merged-ca-bundle 376 | Package Control.user-ca-bundle 377 | oscrypto-ca-bundle.crt 378 | bh_unicode_properties.cache 379 | 380 | # Sublime-github package stores a github token in this file 381 | # https://packagecontrol.io/packages/sublime-github 382 | GitHub.sublime-settings 383 | 384 | ### NotepadPP template 385 | # Notepad++ backups # 386 | *.bak 387 | 388 | ### macOS template 389 | # General 390 | .DS_Store 391 | .AppleDouble 392 | .LSOverride 393 | 394 | # Icon must end with two \r 395 | Icon 396 | 397 | # Thumbnails 398 | ._t* 399 | 400 | # Files that might appear in the root of a volume 401 | .DocumentRevisions-V100 402 | .fseventsd 403 | .Spotlight-V100 404 | .TemporaryItems 405 | .Trashes 406 | .VolumeIcon.icns 407 | .com.apple.timemachine.donotpresent 408 | 409 | # Directories potentially created on remote AFP share 410 | .AppleDB 411 | .AppleDesktop 412 | Network Trash Folder 413 | Temporary Items 414 | .apdisk 415 | 416 | ### PuTTY template 417 | # Private key 418 | *.ppk 419 | 420 | .idea 421 | .vscode 422 | _TMP 423 | 424 | *.qdz 425 | *.run 426 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | ##################################################################### 2 | # SPDX-License-Identifier: CC0-1.0 3 | # SPDX-FileType: OTHER 4 | # SPDX-FileCopyrightText: (c) 2021-2022, The authors and contributors on this file 5 | ##################################################################### 6 | # Names should be added to this file as: 7 | # Name or Organization 8 | # 9 | # SIG: 10 | # Core Team Members 11 | # Current project authors, maintainers and contributors. 12 | ##################################################################### 13 | Marcus Andrade 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Marcus Andrade 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ################################################################################ 4 | # Set variables 5 | ################################################################################ 6 | TAG_NAME="${TAG_NAME:=raetro/quartus}" 7 | GIT_TAG_NAME="${GIT_TAG_NAME:=ghcr.io/raetro/quartus}" 8 | VERSION= 9 | BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") 10 | INTEL_CDN=https://downloads.intel.com/akdlm/software/acdsinst 11 | declare -a fileArray 12 | 13 | ################################################################################ 14 | # Display Help 15 | ################################################################################ 16 | usage() { 17 | echo "Quartus Prime Lite Container Builder." 18 | echo 19 | echo "Usage: build.sh [-v] [OPTION...]" 20 | echo " -v Quartus version to build." 21 | echo " [13.0, 13.1, 17.0, 17.1, 18.1, 19.1, 20.1, 21.1, 22.1, 23.1]" 22 | echo 23 | echo " Main modes of operation:" 24 | echo " -b Build container using remote files." 25 | echo " -p Publish container to registry." 26 | echo " -g Publish container to GitHub registry." 27 | echo " -d Download files for local build." 28 | echo " -l Build container using local files." 29 | echo " -c Check local files integrity." 30 | echo " -o Build Base OS." 31 | echo 32 | echo " eg. build.sh -v23.1 -b" 33 | echo " build.sh -vbase -o" 34 | echo 35 | } 36 | 37 | ################################################################################ 38 | # Check for if command has 2 parameters 39 | ################################################################################ 40 | if [ $# -ne 2 ]; then 41 | usage 42 | exit 1 43 | fi 44 | 45 | ################################################################################ 46 | # Main functions 47 | ################################################################################ 48 | 49 | # Check if a version was provided 50 | checkVersion(){ 51 | # Check Version 52 | if [ -z "$VERSION" ]; then 53 | echo "No version specified." 54 | exit 1 55 | fi 56 | } 57 | 58 | # Download files from Intel CDN 59 | getfile(){ 60 | echo "-> Downloading file from Intel CDN..." 61 | wget -qc --show-progress "$1" -O "$2" 62 | echo "Done." 63 | } 64 | 65 | # Build container using remote files..." 66 | build() { 67 | checkVersion 68 | BUILD_PATH="quartus${VERSION}/remote" 69 | echo "Building container using remote files..." 70 | docker build --build-arg BUILD_VERSION="${VERSION}" --build-arg BUILD_DATE="${BUILD_DATE}" -t "${TAG_NAME}":"${VERSION}" --force-rm --compress "${BUILD_PATH}" 71 | echo "Done." 72 | } 73 | 74 | # Build container using local files. 75 | build_local() { 76 | checkVersion 77 | BUILD_PATH="quartus${VERSION}/local" 78 | echo "Building container using local files..." 79 | docker build --build-arg BUILD_VERSION="${VERSION}" --build-arg BUILD_DATE="${BUILD_DATE}" -t "${TAG_NAME}":"${VERSION}" --force-rm --compress "${BUILD_PATH}" 80 | echo "Done." 81 | } 82 | 83 | # Build container using local files. 84 | build_base() { 85 | checkVersion 86 | BUILD_PATH="quartus-base" 87 | echo "Building container using local files..." 88 | docker build --build-arg BUILD_VERSION="base" --build-arg BUILD_DATE="${BUILD_DATE}" -t "${TAG_NAME}:base" --force-rm --compress "${BUILD_PATH}" 89 | echo "Done." 90 | } 91 | 92 | # Check the hash of the files 93 | check_hash() { 94 | checkVersion 95 | HASHFILE_PATH="${PWD}/quartus${VERSION}/local/files/" 96 | echo "Checking files integrity..." 97 | pushd "${HASHFILE_PATH}" > /dev/null || exit 98 | sha1sum -c "file.lst" 99 | popd > /dev/null || exit 100 | echo "Done." 101 | } 102 | 103 | # Create a variant of the container with the specified version. 104 | tag_variation() { 105 | docker tag "${1}:${VERSION}" "${1}:${2}" 106 | docker push "${1}:${2}" 107 | } 108 | 109 | # Publish Container to Registry 110 | publish() { 111 | checkVersion 112 | echo "Publishing container..." 113 | docker push "${TAG_NAME}":"${VERSION}" 114 | if [ "${VERSION}" = "13.0" ]; then 115 | tag_variation "${TAG_NAME}" "13.0sp1" 116 | elif [ "${VERSION}" = "13.1" ]; then 117 | tag_variation "${TAG_NAME}" "mc" 118 | tag_variation "${TAG_NAME}" "mc2" 119 | tag_variation "${TAG_NAME}" "mcp" 120 | tag_variation "${TAG_NAME}" "mist" 121 | tag_variation "${TAG_NAME}" "neptuno" 122 | tag_variation "${TAG_NAME}" "sidi" 123 | tag_variation "${TAG_NAME}" "tc64v1" 124 | tag_variation "${TAG_NAME}" "uareloaded" 125 | elif [ "${VERSION}" = "17.0" ]; then 126 | tag_variation "${TAG_NAME}" "mister" 127 | elif [ "${VERSION}" = "17.1" ]; then 128 | tag_variation "${TAG_NAME}" "mimic" 129 | tag_variation "${TAG_NAME}" "atlas" 130 | elif [ "${VERSION}" = "18.1" ]; then 131 | tag_variation "${TAG_NAME}" "tc64v2" 132 | tag_variation "${TAG_NAME}" "pocket" 133 | elif [ "${VERSION}" = "21.1" ]; then 134 | tag_variation "${TAG_NAME}" "21.1.1" 135 | elif [ "${VERSION}" = "22.1" ]; then 136 | tag_variation "${TAG_NAME}" "22.1.1" 137 | elif [ "${VERSION}" = "23.1" ]; then 138 | tag_variation "${TAG_NAME}" "23.1" 139 | fi 140 | echo "Done." 141 | } 142 | 143 | # Publish Container to GitHub Registry 144 | publish_to_github() { 145 | checkVersion 146 | docker tag "${TAG_NAME}:${VERSION}" "${GIT_TAG_NAME}:${VERSION}" 147 | docker push "${GIT_TAG_NAME}:${VERSION}" 148 | echo "Publishing container to GitHub..." 149 | if [ "${VERSION}" = "13.0" ]; then 150 | tag_variation "${TAG_NAME}" "13.0sp1" 151 | elif [ "${VERSION}" = "13.1" ]; then 152 | tag_variation "${GIT_TAG_NAME}" "mc" 153 | tag_variation "${GIT_TAG_NAME}" "mc2" 154 | tag_variation "${GIT_TAG_NAME}" "mcp" 155 | tag_variation "${GIT_TAG_NAME}" "mist" 156 | tag_variation "${GIT_TAG_NAME}" "neptuno" 157 | tag_variation "${GIT_TAG_NAME}" "sidi" 158 | tag_variation "${GIT_TAG_NAME}" "tc64v1" 159 | tag_variation "${GIT_TAG_NAME}" "uareloaded" 160 | elif [ "${VERSION}" = "17.0" ]; then 161 | tag_variation "${GIT_TAG_NAME}" "mister" 162 | elif [ "${VERSION}" = "17.1" ]; then 163 | tag_variation "${GIT_TAG_NAME}" "mimic" 164 | tag_variation "${GIT_TAG_NAME}" "atlas" 165 | elif [ "${VERSION}" = "18.1" ]; then 166 | tag_variation "${GIT_TAG_NAME}" "tc64v2" 167 | tag_variation "${GIT_TAG_NAME}" "pocket" 168 | elif [ "${VERSION}" = "21.1" ]; then 169 | tag_variation "${GIT_TAG_NAME}" "21.1.1" 170 | elif [ "${VERSION}" = "22.1" ]; then 171 | tag_variation "${GIT_TAG_NAME}" "22.1.1" 172 | elif [ "${VERSION}" = "23.1" ]; then 173 | tag_variation "${GIT_TAG_NAME}" "23.1" 174 | fi 175 | echo "Done." 176 | } 177 | 178 | # Download the software from Intel CDN 179 | download() { 180 | checkVersion 181 | echo "Starting download..." 182 | case $VERSION in 183 | "13.0") 184 | echo "Downloading v13.0.1.232sp1..." 185 | fileArray[0]="13.0sp1/232/ib_installers/QuartusSetupWeb-13.0.1.232.run" 186 | fileArray[1]="13.0sp1/232/ib_installers/cyclone_web-13.0.1.232.qdz" 187 | ;; 188 | "13.1") 189 | echo "Downloading v13.1.0.162" 190 | fileArray[0]="13.1/162/ib_installers/QuartusSetupWeb-13.1.0.162.run" 191 | fileArray[1]="13.1/162/ib_installers/cyclone_web-13.1.0.162.qdz" 192 | fileArray[2]="13.1/162/ib_installers/cyclonev-13.1.0.162.qdz" 193 | fileArray[2]="13.1.4/182/update/QuartusSetup-13.1.4.182.run" 194 | ;; 195 | "17.0") 196 | echo "Downloading v17.0.2.602" 197 | fileArray[0]="17.0std/595/ib_installers/QuartusLiteSetup-17.0.0.595-linux.run" 198 | fileArray[1]="17.0std/595/ib_installers/cyclone-17.0.0.595.qdz" 199 | fileArray[2]="17.0std/595/ib_installers/cyclonev-17.0.0.595.qdz" 200 | fileArray[3]="17.0std/595/ib_installers/cyclone10lp-17.0.0.595.qdz" 201 | fileArray[4]="17.0std/595/ib_installers/max10-17.0.0.595.qdz" 202 | fileArray[5]="17.0std.2/602/update/QuartusSetup-17.0.2.602-linux.run" 203 | ;; 204 | "17.1") 205 | echo "Downloading v17.1.1.593" 206 | fileArray[0]="17.1std/590/ib_installers/QuartusLiteSetup-17.1.0.590-linux.run" 207 | fileArray[1]="17.1std/590/ib_installers/cyclone-17.1.0.590.qdz" 208 | fileArray[2]="17.1std/590/ib_installers/cyclonev-17.1.0.590.qdz" 209 | fileArray[3]="17.1std/590/ib_installers/cyclone10lp-17.1.0.590.qdz" 210 | fileArray[4]="17.1std/590/ib_installers/max10-17.1.0.590.qdz" 211 | fileArray[5]="17.1std.1/593/update/QuartusSetup-17.1.1.593-linux.run" 212 | ;; 213 | "18.1") 214 | echo "Downloading v18.1.1.646" 215 | fileArray[0]="18.1std/625/ib_installers/QuartusLiteSetup-18.1.0.625-linux.run" 216 | fileArray[1]="18.1std/625/ib_installers/cyclone-18.1.0.625.qdz" 217 | fileArray[2]="18.1std/625/ib_installers/cyclonev-18.1.0.625.qdz" 218 | fileArray[3]="18.1std/625/ib_installers/cyclone10lp-18.1.0.625.qdz" 219 | fileArray[4]="18.1std/625/ib_installers/max10-18.1.0.625.qdz" 220 | fileArray[5]="18.1std.1/646/update/QuartusSetup-18.1.1.646-linux.run" 221 | ;; 222 | "19.1") 223 | echo "Downloading v19.1.0.670" 224 | fileArray[0]="19.1std/670/ib_installers/QuartusLiteSetup-19.1.0.670-linux.run" 225 | fileArray[1]="19.1std/670/ib_installers/cyclone-19.1.0.670.qdz" 226 | fileArray[2]="19.1std/670/ib_installers/cyclonev-19.1.0.670.qdz" 227 | fileArray[3]="19.1std/670/ib_installers/cyclone10lp-19.1.0.670.qdz" 228 | fileArray[4]="19.1std/670/ib_installers/max10-19.1.0.670.qdz" 229 | ;; 230 | "20.1") 231 | echo "Downloading v20.1.0.711" 232 | fileArray[0]="20.1std/711/ib_installers/QuartusLiteSetup-20.1.0.711-linux.run" 233 | fileArray[1]="20.1std/711/ib_installers/cyclone-20.1.0.711.qdz" 234 | fileArray[2]="20.1std/711/ib_installers/cyclonev-20.1.0.711.qdz" 235 | fileArray[3]="20.1std/711/ib_installers/cyclone10lp-20.1.0.711.qdz" 236 | fileArray[4]="20.1std/711/ib_installers/max10-20.1.0.711.qdz" 237 | ;; 238 | "21.1") 239 | echo "Downloading v21.1.1.850" 240 | fileArray[0]="21.1std.1/850/ib_installers/QuartusLiteSetup-21.1.1.850-linux.run" 241 | fileArray[1]="21.1std.1/850/ib_installers/cyclone-21.1.1.850.qdz" 242 | fileArray[2]="21.1std.1/850/ib_installers/cyclone10lp-21.1.1.850.qdz" 243 | fileArray[3]="21.1std.1/850/ib_installers/cyclonev-21.1.1.850.qdz" 244 | fileArray[4]="21.1std.1/850/ib_installers/max10-21.1.1.850.qdz" 245 | ;; 246 | "22.1") 247 | echo "Downloading v22.1std.2.922" 248 | fileArray[0]="22.1std.2/922/ib_installers/QuartusLiteSetup-22.1std.2.922-linux.run" 249 | fileArray[1]="22.1std.2/922/ib_installers/cyclone-22.1std.2.922.qdz" 250 | fileArray[2]="22.1std.2/922/ib_installers/cyclone10lp-22.1std.2.922.qdz" 251 | fileArray[3]="22.1std.2/922/ib_installers/cyclonev-22.1std.2.922.qdz" 252 | fileArray[4]="22.1std.2/922/ib_installers/max10-22.1std.2.922.qdz" 253 | ;; 254 | "23.1") 255 | echo "Downloading v23.1std.991" 256 | fileArray[0]="23.1std/991/ib_installers/QuartusLiteSetup-23.1std.0.991-linux.run" 257 | fileArray[1]="23.1std/991/ib_installers/cyclone-23.1std.0.991.qdz" 258 | fileArray[2]="23.1std/991/ib_installers/cyclone10lp-23.1std.0.991.qdz" 259 | fileArray[3]="23.1std/991/ib_installers/cyclonev-23.1std.0.991.qdz" 260 | fileArray[4]="23.1std/991/ib_installers/max10-23.1std.0.991.qdz" 261 | ;; 262 | *) # Invalid option 263 | echo "Error: Invalid Version" 264 | exit 265 | ;; 266 | esac 267 | if (( ${#fileArray[@]} )); then 268 | # Download the files 269 | for i in "${fileArray[@]}" 270 | do : 271 | echo "Checking file status for ${i##*/}..." 272 | if [ -f "quartus${VERSION}/local/files/${i##*/}" ]; then 273 | echo "-> Files already exists." 274 | while read LINE; do 275 | if [[ $LINE == *"${i##*/}"* ]]; then 276 | echo "-> Checking Integrity" 277 | pushd "quartus${VERSION}/local/files" > /dev/null || exit 278 | hash_res=$(echo "${LINE}" | sha1sum -c -) 279 | popd > /dev/null || exit 280 | if [[ $hash_res == *": OK"* ]]; then 281 | echo "[+] Integrity Check Passed" 282 | else 283 | echo "[-] Integrity Check Failed" 284 | getfile "${INTEL_CDN}/${i}" "quartus${VERSION}/local/files/${i##*/}" 285 | fi 286 | fi 287 | done < "quartus${VERSION}/local/files/file.lst" 288 | else 289 | getfile "${INTEL_CDN}/${i}" "quartus${VERSION}/local/files/${i##*/}" 290 | fi 291 | done 292 | else 293 | echo "Oops, something went wrong..." 294 | fi 295 | echo "Operation Complete." 296 | } 297 | 298 | ################################################################################ 299 | # Process the input options. Add options as needed. 300 | ################################################################################ 301 | # Get the options 302 | while getopts ":lcpogdbv:h:" option; do 303 | case $option in 304 | v) # Set the Version 305 | VERSION=$OPTARG ;; 306 | d) # Download Quartus Lite files 307 | download 308 | exit 309 | ;; 310 | b) # Build the Container with Remote Files 311 | build 312 | exit 313 | ;; 314 | l) # Build the Container with Local Files 315 | build_local 316 | exit 317 | ;; 318 | c) # Check local file hashes 319 | check_hash 320 | exit 321 | ;; 322 | p) # Push the Container to the Registry 323 | publish 324 | exit 325 | ;; 326 | g) # Push the Container to the GitHub Registry 327 | publish_to_github 328 | exit 329 | ;; 330 | o) # Build Base OS Image 331 | build_base 332 | exit 333 | ;; 334 | *) # Invalid option 335 | echo "Error: Invalid option" 336 | exit 337 | ;; 338 | esac 339 | done 340 | 341 | 342 | -------------------------------------------------------------------------------- /docs/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code Of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and leaders pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level or type of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | Note, however, that religion, political party, or other ideological affiliation provide no exemptions for the behavior we outline as unacceptable in this Code of Conduct. 7 | 8 | ## Our Standards 9 | 10 | We are committed to providing a friendly, safe and welcoming environment for all. 11 | 12 | Examples of behavior that contributes to creating a positive environment include: 13 | 14 | - Be kind and courteous to others 15 | - Using welcoming and inclusive language 16 | - Being respectful of differing viewpoints and experiences 17 | - Collaborating with other community members 18 | - Gracefully accepting constructive criticism 19 | - Focusing on what is best for the community 20 | - Showing empathy towards other community members 21 | 22 | Examples of unacceptable behavior by participants include: 23 | 24 | - The use of sexualized language or imagery and sexual attention or advances 25 | - The use of inappropriate images, including in a community member's avatar 26 | - The use of inappropriate language, including in a community member's nickname 27 | - Any spamming, flaming, baiting or other attention-stealing behavior 28 | - Excessive or unwelcome helping; answering outside the scope of the question asked 29 | - Trolling, insulting/derogatory comments, and personal or political attacks 30 | - Public or private harassment 31 | - Publishing others' private information, such as a physical or electronic address, without explicit permission 32 | - Other conduct which could reasonably be considered inappropriate 33 | 34 | The goal of the standards and moderation guidelines outlined here is to build and maintain a respectful community. We ask that you don’t just aim to be "technically unimpeachable", but rather try to be your best self. 35 | 36 | We value many things beyond technical expertise, including collaboration and supporting others within our community. Providing a positive experience for other community members can have a much more significant impact than simply providing the correct answer. 37 | 38 | ## Our Responsibilities 39 | 40 | Project leaders are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 41 | 42 | Project leaders respect all people who contribute through reporting issues, posting feature requests, updating documentation, metadata, artwork, manuals, videos, submitting pull requests or patches, and other activities. But also have the right and responsibility to remove, edit, or reject messages, comments, commits, code, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any community member for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 43 | 44 | ## Scope 45 | 46 | This Code of Conduct and the enforcement policies listed above apply to all Rætro Community venues. This includes but is not limited to any community spaces (both public and private), the entire Rætro Discord server, and all Rætro associated GitHub repositories. Examples of Rætro Community spaces include but are not limited to meet-ups, audio chats on the Rætro Discord, or interaction at a conference. 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. As a community member, you are representing our community, and are expected to behave accordingly. 49 | 50 | ## Enforcement 51 | 52 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at or contact [community@raetro.org][conduct-email]. 53 | All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. 54 | The project team is obligated to maintain confidentiality with regard to the reporter of an incident. 55 | Further details of specific enforcement policies may be posted separately. 56 | 57 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 58 | 59 | ## Attribution 60 | 61 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html, and the Rust Code of Conduct, available at https://www.rust-lang.org/en-US/conduct.html and the Adafruit Community Code of Conduct, available at https://github.com/adafruit/Adafruit_Community_Code_of_Conduct. 62 | 63 | [homepage]: https://www.contributor-covenant.org 64 | [conduct-email]: mailto:community@raetro.org 65 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Intel Quartus Prime Synthesis Engine for Docker 2 | 3 | ![QuartusDocker](https://github.com/raetro/sdk-docker-fpga/blob/master/docs/assets/quartus-prime.png?raw=true) 4 | 5 | ## What is Quartus? 6 | 7 | [Intel® Quartus® Prime] is programmable logic device design software for analysis and synthesis of HDL designs, enabling developers to compile their designs, perform timing analysis, examine RTL diagrams, simulate a design's reaction to different stimuli, and configure the target device with the programmer. 8 | 9 | Quartus Prime includes an implementation of VHDL and Verilog for hardware description, visual editing of logic circuits, and vector waveform simulation. 10 | 11 | ## Quick reference 12 | 13 | - Where to get help: [Rætro Discord] or [GitHub discussions]. 14 | - GitHub repo: [raetro/sdk-docker-fpga] 15 | - Where to file issues: [https://github.com/raetro/sdk-docker-fpga/issues] 16 | 17 | ## What's in this image? 18 | 19 | Quartus® Lite Edition for Intel's low-cost FPGA devices families. 20 | 21 | These images are built from official installation files provided by Intel (specifically, [FPGA Software Download Center]). 22 | 23 | ## Supported tags, hardware and respective `Dockerfile` links 24 | - Cyclone® II, III, IV 25 | - [`13.0`, `13.0sp1`](https://github.com/raetro/sdk-docker-fpga/tree/master/quartus13.0sp1) v13.0.1.232 (sp1) 26 | - Cyclone® III, IV, V 27 | - [`13.1`](https://github.com/raetro/sdk-docker-fpga/tree/master/quartus13.1) v13.1.4.182 28 | - Cyclone® IV, V, 10LP and MAX® 10 29 | - [`17.0`](https://github.com/raetro/sdk-docker-fpga/tree/master/quartus17.0) v17.0.2.602 30 | - [`17.1`](https://github.com/raetro/sdk-docker-fpga/tree/master/quartus17.1) v17.1.1.593 31 | - [`18.1`](https://github.com/raetro/sdk-docker-fpga/tree/master/quartus18.1) v18.1.1.646 32 | - [`19.1`](https://github.com/raetro/sdk-docker-fpga/tree/master/quartus19.1) v19.1.0.670 33 | - [`20.1`](https://github.com/raetro/sdk-docker-fpga/tree/master/quartus20.1) v20.1.0.711 34 | - [`21.1`, `21.1.1`](https://github.com/raetro/sdk-docker-fpga/tree/master/quartus21.1) v21.1.1.850 35 | - [`22.1`, `22.1.2`](https://github.com/raetro/sdk-docker-fpga/tree/master/quartus22.1) v22.1std.2.922 36 | - [`23.1`](https://github.com/raetro/sdk-docker-fpga/tree/master/quartus23.1) v23.1std.0.991 37 | 38 | ### Supported tag alias for specific FPGA projects 39 | 40 | | Project | Version | Alias | Architecture | Model | 41 | |---------------------------|---------|--------------|---------------|-----------------| 42 | | **MiMiC NSX** | `17.1` | `mimic` | Various | Various | 43 | | **Analogue Pocket** | `18.1` | `pocket` | Cyclone V | 5CEBA4F23C8 | 44 | | **Atlas** | `17.1` | `atlas` | Cyclone 10 LP | 10CL025YU256C8G | 45 | | **MiST** | `13.1` | `mist` | Cyclone III | EP3C25E144C8 | 46 | | **MiSTer** | `17.0` | `mister` | Cyclone V SE | 5CSEBA6U23I7 | 47 | | **MultiCore** | `13.1` | `mc` | Cyclone IV E | EP4CE10E22C8 | 48 | | **MultiCore2** | `13.1` | `mc2` | Cyclone IV E | EP4CE22F17C8 | 49 | | **MultiCore2 Plus** | `13.1` | `mcp` | Cyclone IV E | EP4CE55F23C8 | 50 | | **NeptUNO** | `13.1` | `neptuno` | Cyclone IV E | EP4CE55F23C8 | 51 | | **SiDi** | `13.1` | `sidi` | Cyclone IV E | EP4CE22F17C8 | 52 | | **Turbo Chameleon 64 v1** | `13.1` | `tc64v1` | Cyclone III | EP3C25E144C8 | 53 | | **Turbo Chameleon 64 v2** | `18.1` | `tc64v2` | Cyclone 10 LP | 10CL025YU256C8G | 54 | | **Unamiga Reloaded** | `13.1` | `uareloaded` | Cyclone IV E | EP4CE55F23C8 | 55 | 56 | > MiMiC Supported Boards: DE10-Nano, SoCKit, Deca, C10LP-RefKit, CYC1000, Chameleon96. 57 | 58 | Usage: `docker run -it --rm raetro/quartus:`. E.g.: `docker run -it --rm raetro/quartus:mimic` 59 | 60 | ## How to use this image 61 | 62 | The images are published on the [Docker Hub] as `raetro/quartus:` and [GitHub Container Registry] as `ghcr.io/raetro/quartus:`. 63 | 64 | While the images works fine on desktops, the primary purpose is to be used in a continuous integration and continuous deployment (CI/CD) pipeline. 65 | 66 | ### GitHub actions workflow 67 | 68 | #### Running compilation flow 69 | 70 | ```yml 71 | name: Test Build 72 | 73 | on: 74 | push: 75 | branches: 76 | - main 77 | paths-ignore: 78 | - '**.md' 79 | pull_request: 80 | branches: 81 | - main 82 | paths-ignore: 83 | - '**.md' 84 | 85 | jobs: 86 | synthesis: 87 | runs-on: ubuntu-latest 88 | container: raetro/quartus:17.1 89 | steps: 90 | # 1 - Checkout repository 91 | - name: Checkout repository 92 | uses: actions/checkout@v2 93 | # 2 - RTL synthesis 94 | - name: Run compilation flow 95 | run: quartus_sh --flow compile my_project.qpf 96 | # 3 - Upload artifacts 97 | - name: Upload artifacts 98 | uses: actions/upload-artifact@v3 99 | with: 100 | name: OutputFiles.zip 101 | path: output_files/ 102 | ``` 103 | 104 | For more examples and full workflow look inside the [examples] folder 105 | 106 | ### Desktop 107 | 108 | #### Install the image 109 | 110 | ```bash 111 | docker pull raetro/quartus: #DockerHub 112 | # or 113 | docker pull ghcr.io/raetro/quartus: #GitHub Packages 114 | ``` 115 | 116 | #### Run the image 117 | 118 | ```bash 119 | docker run -it --rm -v /path/to/project:/build raetro/quartus: #DockerHub 120 | # or 121 | docker run -it --rm -v /path/to/project:/build ghcr.io/raetro/quartus: #GitHub Packages 122 | ``` 123 | > Docker will automatically download the image if it's not present locally 124 | 125 | #### Run a complete compilation flow 126 | 127 | Use the `quartus_sh` executable with the `--flow` option to perform a complete compilation flow with a single command. 128 | 129 | ##### Linux/Mac Terminal 130 | 131 | ```bash 132 | docker run -it --rm -v $(pwd):/build raetro/quartus:17.1 quartus_sh --flow compile my_project.qpf 133 | ``` 134 | 135 | ##### Windows 136 | 137 | Windows Command Line (`cmd`) 138 | 139 | ```cmd 140 | docker run -it --rm -v %cd%:/build raetro/quartus:17.1 quartus_sh --flow compile my_project.qpf 141 | ``` 142 | 143 | Windows PowerShell/WSL (Debian/Ubuntu) 144 | 145 | ```powershell 146 | docker run -it --rm -v ${pwd}:/build raetro/quartus:17.1 quartus_sh --flow compile my_project.qpf 147 | ``` 148 | 149 | > WSL Users: Make sure to enable WSL Integration on Docker Desktop at `Settings > Resources > WSL Integration` 150 | 151 | Where: 152 | 153 | - `docker run` spins up the container from the image 154 | - `-it` specifies that you want an interactive TTY 155 | - `--rm` tells it to remove this temporary image when it exits 156 | - `-v ` mounts a volume on the current directory and `:/build` within the container 157 | - `raetro/quartus:17.1` is our Docker Image and 158 | - `quartus_sh --flow compile my_project.qpf` perform a complete compilation flow. 159 | 160 | Your project will be synthesized inside the container and exit when it finishes, the output files will be placed in the project directory. 161 | 162 | > **Note**: The `--flow` option supports the smart recompile feature and efficiently sets command-line arguments for each executable in the flow. 163 | > You can resume an interrupted compilation with the `-resume` argument of the `--flow` option. 164 | 165 | ##### Quick Pro Tip 166 | 167 | Add an `alias` to your profile: 168 | 169 | Mac: `nano ~/.bash_profile` 170 | Linux: `nano ~/.bashrc` or `nano ~/.profile` 171 | 172 | ```bash 173 | alias qdc='f(){ docker run -it --rm -v "$(pwd)":/build raetro/quartus:17.1 "$@"; unset -f f; }; f' 174 | ``` 175 | 176 | Windows PowerShell: `${Home}\Documents\WindowsPowerShell\Profile.ps1` 177 | 178 | ```powershell 179 | Function _qdc { docker run -it --rm -v ${pwd}:/build raetro/quartus:17.1 @Args } 180 | Set-Alias -Name qdc -Value _qdc 181 | ``` 182 | 183 | From now on you can simply type `qdc` to log into the container on the current folder, 184 | or just `qdc quartus_sh --flow compile my_project.qpf` to compile your source code. 185 | 186 | ## Environment Variables 187 | 188 | - `GITHUB_TOKEN`: The GitHub token to use with [GitHub CLI]. 189 | - `JTAG_SERVER`: JTAG Server `Name/IP address` (eg: host running jtagd/jtagserver). 190 | - `JTAG_PASSWD`: JTAG Server `Password`. 191 | - `LM_LICENSE_FILE`: Specifies the location of a license file. **Note:** Separate multiple license servers and node locking license files with ":" 192 | 193 | ### Using Docker CLI 194 | 195 | ```bash 196 | docker run -it -rm \ 197 | -e JTAG_SERVER=192.168.1.10 \ 198 | -e JTAG_PASSWD=1234 \ 199 | -e GITHUB_TOKEN= \ 200 | -e LM_LICENSE_FILE=/opt/license.dat \ 201 | -v /path/to/license.dat:/opt/license.dat:ro 202 | -v ${pwd}:/build \ 203 | raetro/quartus:17.1 204 | ``` 205 | 206 | ## Programming the FPGA 207 | 208 | - [Download and Install Quartus Prime Programmer] 209 | - [How to use the Quartus Programmer Tool] 210 | - [Remote JTAG Server] 211 | 212 | ## Building locally 213 | 214 | If you want to make local modifications to these images for development purposes or just to customize the logic: 215 | 216 | ```bash 217 | git clone https://github.com/raetro/sdk-docker-fpga.git 218 | cd sdk-docker-fpga 219 | ./build.sh -v17.1 -b 220 | # or if you wanna change the base image 221 | ./build.sh -vbase -o 222 | ``` 223 | 224 | ### build.sh 225 | 226 | ```bash 227 | Quartus Prime Lite Container Builder. 228 | 229 | Usage: build.sh [-v] [OPTION...] 230 | 231 | -v Quartus version to build. 232 | [13.0, 13.1, 17.0, 17.1, 18.1, 19.1, 20.1, 21.1] 233 | 234 | Main modes of operation: 235 | -b Build container using remote files. 236 | -p Publish container to registry. 237 | -g Publish container to GitHub registry. 238 | -d Download files for local build. 239 | -l Build container using local files. 240 | -c Check local files integrity. 241 | -o Build Base OS. 242 | 243 | eg. build.sh -v21.1 -b 244 | build.sh -vbase -o 245 | ``` 246 | 247 | #### Usage examples 248 | 249 | ```bash 250 | ./build.sh -v17.1 -b # Build container using remote files. 251 | ./build.sh -v17.1 -p # Publish container to registry. 252 | ./build.sh -v17.1 -g # Publish container to GitHub registry. 253 | ./build.sh -v17.1 -d # Download files for local build. 254 | ./build.sh -v17.1 -c # Check local files integrity. 255 | ./build.sh -v17.1 -l # Build container using local files. 256 | ./build.sh -vbase -o # Build Base OS container. 257 | ``` 258 | 259 | ## Creating an Image Variant 260 | 261 | The Quartus images come in many versions, each designed for a specific use case. 262 | 263 | If you need to install any additional packages beyond what comes with the image, you can do so by expanding the container. 264 | 265 | For example, if you need to install the `verilator` utility, you can do so by creating a new `Dockerfile` for your project. 266 | 267 | ```dockerfile 268 | FROM raetro/quartus:17.1 269 | 270 | RUN apt-get update && \ 271 | apt-get install -y --no-install-recommends verilator \ 272 | autoconf g++ flex bison ccache libgoogle-perftools-dev \ 273 | numactl perl-doc libfl-dev zlibc zlib1g zlib1g-dev && \ 274 | rm -rf /var/lib/apt/lists/* \ 275 | 276 | CMD [ "/bin/bash" ] 277 | ``` 278 | 279 | Then, run the commands to build and run the Docker image: 280 | 281 | ```bash 282 | docker build -t quartus-verilator . 283 | docker run -it --rm quartus-verilator 284 | ``` 285 | 286 | ## What's in the Box 287 | 288 | ![What's in the Box](https://media.giphy.com/media/3otPoPkqjANWVH4SUE/giphy.gif) 289 | 290 | - Base image: Debian Stretch (Slim) 291 | - Installed Packages: [Container Manifest](https://github.com/raetro/sdk-docker-fpga/blob/master/docs/manifest.json) 292 | - GitHub CLI: [2.14.2](https://github.com/cli/cli) 293 | - CHANGELOG Generator: [0.15.1](https://github.com/git-chglog/git-chglog) 294 | 295 | ## Further Reading 296 | 297 | - [Intel® FPGA Software Installation and Licensing Manual] 298 | 299 | ## Intel Legal Notice 300 | 301 | Intel® Quartus® Prime Software - Copyright © Intel Corporation. All rights reserved. 302 | 303 | Altera, Avalon, Cyclone, Intel, the Intel logo, MAX, Nios, Quartus are trademarks of Intel Corporation or its subsidiaries. 304 | 305 | Your use of Intel Corporation's design tools, logic functions and other software and tools, and its AMPP partner logic functions, 306 | and any output files from any of the foregoing (including device programming or simulation files), and any associated documentation or 307 | information are expressly subject to the terms and conditions of the Intel Program License Subscription Agreement, the Intel Quartus 308 | Prime License Agreement, the Intel FPGA IP License Agreement, or other applicable license agreement, including, without limitation, 309 | that your use is for the sole purpose of programming logic devices manufactured by Intel and sold by Intel or its authorized distributors. 310 | Please refer to the applicable agreement for further details. 311 | 312 | ### FPGA Software License Subscription Agreements 313 | 314 | - [Intel® Quartus® Prime Design Software (includes Intel® FPGA IP) License Agreements] 315 | 316 | ## License 317 | 318 | This work is licensed under multiple licenses. 319 | 320 | * All original source code is licensed under [MIT-license] unless implicit indicated. 321 | * All documentation is licensed under [Creative Commons Attribution Share Alike 4.0 International] Public License. 322 | * Some configuration and data files are licensed under [Creative Commons Zero v1.0 Universal]. 323 | 324 | The Rætro authors and contributors or any of its maintainers are in no way associated with or endorsed by Intel® or any other company not implicit indicated. 325 | All other brands or product names are the property of their respective holders. 326 | 327 | As with all Docker images, these likely also contain other software which may be under other licenses 328 | (such as Bash, etc. from the base distribution, along with any direct or indirect dependencies of the primary software being contained). 329 | 330 | As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image 331 | complies with any relevant licenses for all software contained within. 332 | 333 | [MIT-license]: https://spdx.org/licenses/MIT.html 334 | [Creative Commons Attribution Share Alike 4.0 International]: https://spdx.org/licenses/CC-BY-SA-4.0.html 335 | [Creative Commons Zero v1.0 Universal]: https://spdx.org/licenses/CC0-1.0.html 336 | 337 | [FPGA Software Download Center]:https://www.intel.com/content/www/us/en/collections/products/fpga/software/downloads.html 338 | [Intel® Quartus® Prime]: https://www.intel.com/content/www/us/en/products/details/fpga/development-tools/quartus-prime.html 339 | [Intel® Quartus® Prime Design Software (includes Intel® FPGA IP) License Agreements]: https://downloadmirror.intel.com/648211/qii_lic.zip 340 | [Intel® FPGA Software Installation and Licensing Manual]: https://www.intel.com/content/www/us/en/docs/programmable/683472/22-2/introduction-to-fpga-software-installation.html 341 | [GitHub CLI]: https://cli.github.com/ 342 | 343 | [Rætro Discord]: https://chat.raetro.org 344 | [GitHub discussions]: https://github.com/raetro/sdk-docker-fpga/discussions 345 | [raetro/sdk-docker-fpga]: https://github.com/raetro/sdk-docker-fpga 346 | [https://github.com/raetro/sdk-docker-fpga/issues]: https://github.com/raetro/sdk-docker-fpga/issues 347 | 348 | [Docker Hub]: https://hub.docker.com/r/raetro/quartus/tags/ 349 | [GitHub Container Registry]: https://github.com/orgs/raetro/packages/container/package/quartus 350 | [examples]: https://github.com/raetro/sdk-docker-fpga/blob/master/examples 351 | [Download and Install Quartus Prime Programmer]: https://github.com/raetro/sdk-docker-fpga/blob/master/docs/programmer-download-install.md 352 | [How to use the Quartus Programmer Tool]: https://github.com/raetro/sdk-docker-fpga/blob/master/docs/programmer-tool.md 353 | [Remote JTAG Server]: https://github.com/raetro/sdk-docker-fpga/blob/master/docs/programmer-remote-jtag.md 354 | -------------------------------------------------------------------------------- /docs/assets/dl-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/dl-1.jpg -------------------------------------------------------------------------------- /docs/assets/dl-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/dl-2.jpg -------------------------------------------------------------------------------- /docs/assets/install-0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/install-0.jpg -------------------------------------------------------------------------------- /docs/assets/install-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/install-1.jpg -------------------------------------------------------------------------------- /docs/assets/install-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/install-2.jpg -------------------------------------------------------------------------------- /docs/assets/install-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/install-3.jpg -------------------------------------------------------------------------------- /docs/assets/install-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/install-4.jpg -------------------------------------------------------------------------------- /docs/assets/install-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/install-5.jpg -------------------------------------------------------------------------------- /docs/assets/install-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/install-6.jpg -------------------------------------------------------------------------------- /docs/assets/install-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/install-7.jpg -------------------------------------------------------------------------------- /docs/assets/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/placeholder.png -------------------------------------------------------------------------------- /docs/assets/quartus-prime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/docs/assets/quartus-prime.png -------------------------------------------------------------------------------- /docs/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "packages": [ 3 | { 4 | "adduser": "3.115" 5 | }, 6 | { 7 | "apt": "1.4.11" 8 | }, 9 | { 10 | "base-files": "9.9+deb9u13" 11 | }, 12 | { 13 | "base-passwd": "3.5.43" 14 | }, 15 | { 16 | "bash": "4.4-5" 17 | }, 18 | { 19 | "bc": "1.06.95-9+b3" 20 | }, 21 | { 22 | "bsdutils": "1:2.29.2-1+deb9u1" 23 | }, 24 | { 25 | "ca-certificates": "20200601~deb9u2" 26 | }, 27 | { 28 | "coreutils": "8.26-3" 29 | }, 30 | { 31 | "curl": "7.52.1-5+deb9u16" 32 | }, 33 | { 34 | "dash": "0.5.8-2.4" 35 | }, 36 | { 37 | "debconf": "1.5.61" 38 | }, 39 | { 40 | "debian-archive-keyring": "2017.5+deb9u2" 41 | }, 42 | { 43 | "debianutils": "4.8.1.1" 44 | }, 45 | { 46 | "dh-python": "2.20170125" 47 | }, 48 | { 49 | "diffutils": "1:3.5-3" 50 | }, 51 | { 52 | "dpkg": "1.18.26" 53 | }, 54 | { 55 | "e2fslibs": "1.43.4-2+deb9u2" 56 | }, 57 | { 58 | "e2fsprogs": "1.43.4-2+deb9u2" 59 | }, 60 | { 61 | "expect": "5.45-7+deb9u1" 62 | }, 63 | { 64 | "file": "1:5.30-1+deb9u3" 65 | }, 66 | { 67 | "findutils": "4.6.0+git+20161106-2" 68 | }, 69 | { 70 | "gcc-6-base": "6.3.0-18+deb9u1" 71 | }, 72 | { 73 | "gh": "2.14.2" 74 | }, 75 | { 76 | "git": "1:2.11.0-3+deb9u7" 77 | }, 78 | { 79 | "git-man": "1:2.11.0-3+deb9u7" 80 | }, 81 | { 82 | "gpgv": "2.1.18-8~deb9u4" 83 | }, 84 | { 85 | "grep": "2.27-2" 86 | }, 87 | { 88 | "gzip": "1.6-5+deb9u1" 89 | }, 90 | { 91 | "hostname": "3.18+b1" 92 | }, 93 | { 94 | "init-system-helpers": "1.48" 95 | }, 96 | { 97 | "iputils-ping": "3:20161105-1" 98 | }, 99 | { 100 | "less": "481-2.1" 101 | }, 102 | { 103 | "libacl1": "2.2.52-3+b1" 104 | }, 105 | { 106 | "libapt-pkg5.0": "1.4.11" 107 | }, 108 | { 109 | "libattr1": "1:2.4.47-2+b2" 110 | }, 111 | { 112 | "libaudit-common": "1:2.6.7-2" 113 | }, 114 | { 115 | "libaudit1": "1:2.6.7-2" 116 | }, 117 | { 118 | "libblkid1": "2.29.2-1+deb9u1" 119 | }, 120 | { 121 | "libbz2-1.0": "1.0.6-8.1" 122 | }, 123 | { 124 | "libc-bin": "2.24-11+deb9u4" 125 | }, 126 | { 127 | "libc-l10n": "2.24-11+deb9u4" 128 | }, 129 | { 130 | "libc6": "2.24-11+deb9u4" 131 | }, 132 | { 133 | "libcap-ng0": "0.7.7-3+b1" 134 | }, 135 | { 136 | "libcap2": "1:2.25-1" 137 | }, 138 | { 139 | "libcomerr2": "1.43.4-2+deb9u2" 140 | }, 141 | { 142 | "libcurl3": "7.52.1-5+deb9u16" 143 | }, 144 | { 145 | "libcurl3-gnutls": "7.52.1-5+deb9u16" 146 | }, 147 | { 148 | "libdb5.3": "5.3.28-12+deb9u1" 149 | }, 150 | { 151 | "libdebconfclient0": "0.227" 152 | }, 153 | { 154 | "liberror-perl": "0.17024-1" 155 | }, 156 | { 157 | "libexpat1": "2.2.0-2+deb9u5" 158 | }, 159 | { 160 | "libfdisk1": "2.29.2-1+deb9u1" 161 | }, 162 | { 163 | "libffi6": "3.2.1-6" 164 | }, 165 | { 166 | "libgcc1": "1:6.3.0-18+deb9u1" 167 | }, 168 | { 169 | "libgcrypt20": "1.7.6-2+deb9u4" 170 | }, 171 | { 172 | "libgdbm3": "1.8.3-14" 173 | }, 174 | { 175 | "libglib2.0-0": "2.50.3-2+deb9u3" 176 | }, 177 | { 178 | "libgmp10": "2:6.1.2+dfsg-1+deb9u1" 179 | }, 180 | { 181 | "libgnutls30": "3.5.8-5+deb9u6" 182 | }, 183 | { 184 | "libgpg-error0": "1.26-2" 185 | }, 186 | { 187 | "libgssapi-krb5-2": "1.15-1+deb9u3" 188 | }, 189 | { 190 | "libhogweed4": "3.3-1+deb9u1" 191 | }, 192 | { 193 | "libidn11": "1.33-1+deb9u1" 194 | }, 195 | { 196 | "libidn2-0": "0.16-1+deb9u1" 197 | }, 198 | { 199 | "libk5crypto3": "1.15-1+deb9u3" 200 | }, 201 | { 202 | "libkeyutils1": "1.5.9-9" 203 | }, 204 | { 205 | "libkrb5-3": "1.15-1+deb9u3" 206 | }, 207 | { 208 | "libkrb5support0": "1.15-1+deb9u3" 209 | }, 210 | { 211 | "libldap-2.4-2": "2.4.44+dfsg-5+deb9u9" 212 | }, 213 | { 214 | "libldap-common": "2.4.44+dfsg-5+deb9u9" 215 | }, 216 | { 217 | "liblz4-1": "0.0~r131-2+deb9u1" 218 | }, 219 | { 220 | "liblzma5": "5.2.2-1.2+deb9u1" 221 | }, 222 | { 223 | "liblzo2-2": "2.08-1.2+b2" 224 | }, 225 | { 226 | "libmagic-mgc": "1:5.30-1+deb9u3" 227 | }, 228 | { 229 | "libmagic1": "1:5.30-1+deb9u3" 230 | }, 231 | { 232 | "libmount1": "2.29.2-1+deb9u1" 233 | }, 234 | { 235 | "libmpdec2": "2.4.2-1" 236 | }, 237 | { 238 | "libncursesw5": "6.0+20161126-1+deb9u2" 239 | }, 240 | { 241 | "libnettle6": "3.3-1+deb9u1" 242 | }, 243 | { 244 | "libnghttp2-14": "1.18.1-1+deb9u2" 245 | }, 246 | { 247 | "libp11-kit0": "0.23.3-2+deb9u1" 248 | }, 249 | { 250 | "libpam-modules": "1.1.8-3.6" 251 | }, 252 | { 253 | "libpam-modules-bin": "1.1.8-3.6" 254 | }, 255 | { 256 | "libpam-runtime": "1.1.8-3.6" 257 | }, 258 | { 259 | "libpam0g": "1.1.8-3.6" 260 | }, 261 | { 262 | "libpcre3": "2:8.39-3" 263 | }, 264 | { 265 | "libperl5.24": "5.24.1-3+deb9u7" 266 | }, 267 | { 268 | "libpopt0": "1.16-10+b2" 269 | }, 270 | { 271 | "libpsl5": "0.17.0-3" 272 | }, 273 | { 274 | "libpython3-stdlib": "3.5.3-1" 275 | }, 276 | { 277 | "libpython3.5-minimal": "3.5.3-1+deb9u5" 278 | }, 279 | { 280 | "libpython3.5-stdlib": "3.5.3-1+deb9u5" 281 | }, 282 | { 283 | "libreadline7": "7.0-3" 284 | }, 285 | { 286 | "librtmp1": "2.4+20151223.gitfa8646d.1-1+b1" 287 | }, 288 | { 289 | "libsasl2-2": "2.1.27~101-g0780600+dfsg-3+deb9u2" 290 | }, 291 | { 292 | "libsasl2-modules-db": "2.1.27~101-g0780600+dfsg-3+deb9u2" 293 | }, 294 | { 295 | "libselinux1": "2.6-3+b3" 296 | }, 297 | { 298 | "libsemanage-common": "2.6-2" 299 | }, 300 | { 301 | "libsemanage1": "2.6-2" 302 | }, 303 | { 304 | "libsepol1": "2.6-2" 305 | }, 306 | { 307 | "libsmartcols1": "2.29.2-1+deb9u1" 308 | }, 309 | { 310 | "libsqlite3-0": "3.16.2-5+deb9u3" 311 | }, 312 | { 313 | "libss2": "1.43.4-2+deb9u2" 314 | }, 315 | { 316 | "libssh2-1": "1.7.0-1+deb9u2" 317 | }, 318 | { 319 | "libssl1.0.2": "1.0.2u-1~deb9u7" 320 | }, 321 | { 322 | "libssl1.1": "1.1.0l-1~deb9u6" 323 | }, 324 | { 325 | "libstdc++6": "6.3.0-18+deb9u1" 326 | }, 327 | { 328 | "libsystemd0": "232-25+deb9u14" 329 | }, 330 | { 331 | "libtasn1-6": "4.10-1.1+deb9u1" 332 | }, 333 | { 334 | "libtcl8.6": "8.6.6+dfsg-1+b1" 335 | }, 336 | { 337 | "libtcmalloc-minimal4": "2.5-2.2" 338 | }, 339 | { 340 | "libtinfo5": "6.0+20161126-1+deb9u2" 341 | }, 342 | { 343 | "libudev1": "232-25+deb9u14" 344 | }, 345 | { 346 | "libunistring0": "0.9.6+really0.9.3-0.1" 347 | }, 348 | { 349 | "libustr-1.0-1": "1.0.4-6" 350 | }, 351 | { 352 | "libuuid1": "2.29.2-1+deb9u1" 353 | }, 354 | { 355 | "locales": "2.24-11+deb9u4" 356 | }, 357 | { 358 | "login": "1:4.4-4.1+deb9u1" 359 | }, 360 | { 361 | "lsb-base": "9.20161125" 362 | }, 363 | { 364 | "make": "4.1-9.1" 365 | }, 366 | { 367 | "mawk": "1.3.3-17+b3" 368 | }, 369 | { 370 | "mime-support": "3.60" 371 | }, 372 | { 373 | "mount": "2.29.2-1+deb9u1" 374 | }, 375 | { 376 | "multiarch-support": "2.24-11+deb9u4" 377 | }, 378 | { 379 | "nano": "2.7.4-1" 380 | }, 381 | { 382 | "ncurses-base": "6.0+20161126-1+deb9u2" 383 | }, 384 | { 385 | "ncurses-bin": "6.0+20161126-1+deb9u2" 386 | }, 387 | { 388 | "net-tools": "1.60+git20161116.90da8a0-1" 389 | }, 390 | { 391 | "openssl": "1.1.0l-1~deb9u6" 392 | }, 393 | { 394 | "passwd": "1:4.4-4.1+deb9u1" 395 | }, 396 | { 397 | "perl": "5.24.1-3+deb9u7" 398 | }, 399 | { 400 | "perl-base": "5.24.1-3+deb9u7" 401 | }, 402 | { 403 | "perl-modules-5.24": "5.24.1-3+deb9u7" 404 | }, 405 | { 406 | "python-pip-whl": "9.0.1-2+deb9u2" 407 | }, 408 | { 409 | "python3": "3.5.3-1" 410 | }, 411 | { 412 | "python3-minimal": "3.5.3-1" 413 | }, 414 | { 415 | "python3-pip": "9.0.1-2+deb9u2" 416 | }, 417 | { 418 | "python3.5": "3.5.3-1+deb9u5" 419 | }, 420 | { 421 | "python3.5-minimal": "3.5.3-1+deb9u5" 422 | }, 423 | { 424 | "readline-common": "7.0-3" 425 | }, 426 | { 427 | "rsync": "3.1.2-1+deb9u3" 428 | }, 429 | { 430 | "sed": "4.4-1" 431 | }, 432 | { 433 | "sensible-utils": "0.0.9+deb9u1" 434 | }, 435 | { 436 | "squashfs-tools": "1:4.3-3+deb9u3" 437 | }, 438 | { 439 | "sudo": "1.8.19p1-2.1+deb9u3" 440 | }, 441 | { 442 | "sysvinit-utils": "2.88dsf-59.9" 443 | }, 444 | { 445 | "tar": "1.29b-1.1+deb9u1" 446 | }, 447 | { 448 | "tcl": "8.6.0+9" 449 | }, 450 | { 451 | "tcl-expect": "5.45-7+deb9u1" 452 | }, 453 | { 454 | "tcl8.6": "8.6.6+dfsg-1+b1" 455 | }, 456 | { 457 | "tree": "1.7.0-5" 458 | }, 459 | { 460 | "tzdata": "2021a-0+deb9u4" 461 | }, 462 | { 463 | "unzip": "6.0-21+deb9u2" 464 | }, 465 | { 466 | "util-linux": "2.29.2-1+deb9u1" 467 | }, 468 | { 469 | "wget": "1.18-5+deb9u3" 470 | }, 471 | { 472 | "zlib1g": "1:1.2.8.dfsg-5+deb9u1" 473 | } 474 | ] 475 | } 476 | -------------------------------------------------------------------------------- /docs/programmer-download-install.md: -------------------------------------------------------------------------------- 1 | # Download and install Quartus Programmer 2 | 3 | ## Overview 4 | 5 | If you only want to configure the FPGA code but not edit the design, 6 | then can follow the guide to download and install Quartus Programmer. 7 | 8 | ## Download 9 | 10 | 1. Go to Intel [FPGA Software Download Center]. 11 | 12 | 2. Select the `Intel® FPGA Programming Software` on the sidebar. 13 | 14 | ![step-2-and-3](assets/dl-1.jpg) 15 | 16 | 3. Download the latest version available for your OS (Windows or Linux). 17 | 18 | 4. Click on `Additional Software` 19 | 20 | ![step-4-and-5](assets/dl-2.jpg) 21 | 22 | 5. And finally under `Intel® Quartus® Prime Programmer and Tools ` click `Download QuartusProgrammerSetup-21.1.1.850-windows.exe`. 23 | 24 | ## Install 25 | 26 | 1. Open the downloaded file and confirm the 27 | 28 | 2. Execute the Setup file to start installation. 29 | 30 | ![step-](assets/install-0.jpg) 31 | 32 | > **Note:** Quartus needs to have administrator rights in order to install, click **"Yes"** to continue. 33 | 34 | 3. Start the installation. 35 | 36 | ![step-](assets/install-1.jpg) 37 | 38 | 4. Choose installation path. 39 | 40 | ![step-](assets/install-2.jpg) 41 | 42 | 5. Completed the installation, and leave `Launch USB Blaster II driver Installation` and `Launch Programmer` selected. 43 | 44 | ![step-](assets/install-3.jpg) 45 | 46 | 6. Start the driver installation. 47 | 48 | ![step-](assets/install-4.jpg) 49 | 50 | 7. Confirm the driver installation. 51 | 52 | ![step-](assets/install-5.jpg) 53 | 54 | 8. Complete the installation. 55 | 56 | ![step-](assets/install-6.jpg) 57 | 58 | 9. Quartus Prime Programmer is now installed and ready to use. 59 | 60 | ![step-](assets/install-7.jpg) 61 | 62 | ## How to use the Quartus Programmer Tool 63 | 64 | - [How to use the Quartus Programmer Tool](programmer-tool.md) 65 | 66 | 67 | [FPGA Software Download Center]: https://www.intel.com/content/www/us/en/collections/products/fpga/software/downloads.html 68 | -------------------------------------------------------------------------------- /docs/programmer-remote-jtag.md: -------------------------------------------------------------------------------- 1 | # Remote FPGA JTAG programming 2 | 3 | ## Overview 4 | 5 | The Remote JTAG Server is part of the Quartus Programmer tools. 6 | 7 | It is easy to program a local device in the Quartus with USB Blaster. 8 | In the case of remote network access, it is possible to run jtagd and jtagconfig on a different server and client machine and accomplish programming via SSH tunnel on the network. In practice, this is a simple, cheap alternative to Ethernet Blaster. 9 | 10 | In this example the Altera USB Blaster programmer is connected to the SRV host, and the Quartus II development environment runs on the CLNT machine. Both nodes run Linux operating system. 11 | 12 | ## Prerequisites 13 | 14 | - The FPGA connected to the host computer via a USB cable. 15 | - [Quartus Programmer Tool](programmer-download-install.md) installed. 16 | - Network connection to the Server host (LAN/VLAN). 17 | 18 | ## Steps 19 | 20 | 1. Run the Quartus Programmer 21 | 22 | ![](assets/placeholder.png) 23 | 24 | 2. Select menu Edit > Hardware Setup... 25 | 26 | ![](assets/placeholder.png) 27 | 28 | 3. In the Hardware Setup dialogue, click the JTAG Settings tab 29 | 30 | ![](assets/placeholder.png) 31 | 32 | 4. Click the button Configure Local JTAG Server 33 | 34 | ![](assets/placeholder.png) 35 | 36 | 5. Make sure Enable Remote Clients to Connect to Local JTAG Server is checked 37 | 38 | ![](assets/placeholder.png) 39 | 40 | 6. Enter and confirm a password, and click OK 41 | 42 | ![](assets/placeholder.png) 43 | 44 | 7. Close down the dialogue boxes 45 | 46 | ![](assets/placeholder.png) 47 | 48 | 49 | ### Local Machine and Docker 50 | 51 | ``` 52 | ---------------------------------------------------------- 53 | | FPGA <<== USB ==>> Host <<== Virtual Network ==>> Docker | 54 | ---------------------------------------------------------- 55 | ``` 56 | 57 | ### Over the Network 58 | 59 | ``` 60 | ------------------------------ -------------------- 61 | | FPGA <<== USB ==>>> SRV host | <<== Network ==>> | CLNT host: Quartus | 62 | ------------------------------ -------------------- 63 | ``` 64 | 65 | ```bash 66 | user@HOST:~$ docker run -it --rm raetro/quartus:17.1 67 | root@95fe49e3c0ec:/build$ jtagconfig 68 | No JTAG hardware available 69 | root@95fe49e3c0ec:/build$ jtagconfig --addserver 192.168.1.19 1234 70 | root@95fe49e3c0ec:/build$ jtagconfig 71 | 1) DE-SoC on 192.168.1.19 [USB-1] 72 | 4BA00477 SOCVHPS 73 | 02D020DD 5CSEBA6(.|ES)/5CSEMA6/.. 74 | ``` 75 | -------------------------------------------------------------------------------- /docs/programmer-tool.md: -------------------------------------------------------------------------------- 1 | # How to use the Quartus Programmer Tool 2 | 3 | ## Overview 4 | 5 | This guide demonstrates how to program the FPGA by using the Quartus Programmer tool. 6 | 7 | > Make sure it's [already installed for your system](programmer-download-install.md). 8 | 9 | The instructions are for the Cyclone V SoC Development kit, but a similar flow can also be used for other boards. 10 | 11 | > Note: Before re-programming the FPGA fabric, make sure that the FPGA2HPS bridges (f2sdram, axi) are disabled, and that there is no software on HPS that may access the FPGA. 12 | > This includes shutting down applications that access soft IP and also unloading any soft IP Linux kernel modules. 13 | > Failure to do so will cause the system to behave in a non-deterministic way and most likely it will crash. 14 | 15 | ## Prerequisites 16 | 17 | ## Steps 18 | 19 | 1. Start the Quartus Programmer Tool 20 | 21 | ![](assets/placeholder.png) 22 | 23 | 2. In Quartus Programmer, click the Hardware Setup button. This will open the Hardware Setup window. 24 | 25 | ![](assets/placeholder.png) 26 | 27 | 3. In the Hardware Setup window Select the USB Blaster device instance in the window that appears, by double-clicking it then click Close 28 | 29 | ![](assets/placeholder.png) 30 | 31 | 4. In Quartus Programmer, click the Autodetect button. This will open the Select Device window. 32 | 33 | ![](assets/placeholder.png) 34 | 35 | 5. Select the device and click OK to close the window. 36 | 37 | ![](assets/placeholder.png) 38 | 39 | 6. In Quartus Programmer select the line showing the FPGA device. 40 | 41 | ![](assets/placeholder.png) 42 | 43 | 7. Right-click the line with the FPGA device and select Change File from the menu. 44 | 45 | ![](assets/placeholder.png) 46 | 47 | 8. Browse to `/path/to/your/project/output_files/.sof` and click Open 48 | 49 | ![](assets/placeholder.png) 50 | 51 | 9. Check the Program/Configure checkbox . 52 | 53 | ![](assets/placeholder.png) 54 | 55 | 10. Click the Start button. This will configure the FPGA. 56 | 57 | ![](assets/placeholder.png) 58 | 59 | 11. The top right corner will display the status of the operation. 60 | 61 | ![](assets/placeholder.png) 62 | -------------------------------------------------------------------------------- /examples/release-mist.yml: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: CC0-1.0 3 | # SPDX-FileType: OTHER 4 | # SPDX-FileCopyrightText: (c) 2021-2022, The Raetro authors and contributors 5 | ################################################################################ 6 | name: Compile New Core for MiST 7 | ################################################################################ 8 | on: 9 | push: 10 | # Sequence of patterns matched against refs/tags 11 | tags: 12 | - '*' # Trigger only on tags. i.e. 211231 13 | ################################################################################ 14 | jobs: 15 | synthesis: 16 | runs-on: ubuntu-latest 17 | ############################################################################ 18 | env: 19 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 20 | ############################################################################ 21 | steps: 22 | ########################################################################## 23 | ## 1 - Checkout repository 24 | ########################################################################## 25 | - name: Checkout repository 26 | uses: actions/checkout@v3 27 | with: 28 | submodules: recursive # Required to fetch the mist-modules 29 | ########################################################################## 30 | ## 2 - RTL synthesis 31 | ########################################################################## 32 | - name: Run compilation flow 33 | run: docker run --rm -v ${{ github.workspace }}:/build raetro/quartus:13.1 quartus_sh --flow compile menu.qpf 34 | ########################################################################## 35 | ## 3 - Get current version for tagging binary 36 | ########################################################################## 37 | - name: Get the version 38 | id: version 39 | run: echo ::set-output name=version::${GITHUB_REF#refs/tags/} # Get the version from the tag 40 | #run: echo "::set-output name=version::$(date +'%Y%m%d')" # Use date as version 41 | ########################################################################## 42 | ## 4 - Upload artifacts 43 | ########################################################################## 44 | - name: Upload artifacts 45 | uses: actions/upload-artifact@v3 46 | with: 47 | name: OutputFiles_${{ steps.version.outputs.version }} 48 | path: output_files/ 49 | retention-days: 14 50 | ########################################################################## 51 | ## 5 - Create tag with version and SHA256 checksum 52 | ########################################################################## 53 | - name: Create a copy and tag with version 54 | run: | 55 | mkdir -p release 56 | cp output_files/menu.rbf release/menu_${{ steps.version.outputs.version }}.rbf 57 | sha256sum output_files/menu.rbf > release/menu_${{ steps.version.outputs.version }}.rbf.sha256 58 | ########################################################################## 59 | ## 6 - Create a new GitHub release and upload the distribution artifacts 60 | ########################################################################## 61 | - name: Create a new GitHub release 62 | uses: softprops/action-gh-release@v0.1.14 63 | if: startsWith(github.ref, 'refs/tags/') 64 | with: 65 | files: | 66 | output_files/menu.sof 67 | release/menu_${{ steps.version.outputs.version }}.rbf 68 | release/menu_${{ steps.version.outputs.version }}.rbf.sha256 69 | ########################################################################## 70 | ## 7 - Don't ever commit binary files to Git! 71 | ## "Source files" It easily lets you see textual changes. 72 | ## But this function is useless for binary data also 73 | ## Git doesn't compress binary files, and because repos have all the 74 | ## history, committing binary files means permanent bloat. 75 | ## But if this is what you want to do. Here's how to do it. 76 | ########################################################################## 77 | #- name: Commit Binary to Repository (aka. the MiST(er) way) 78 | # run: | 79 | # git fetch 80 | # git checkout -b master 81 | # git config user.name github-actions 82 | # git config user.email github-actions@github.com 83 | # git add release/menu_${{ steps.version.outputs.version }}.rbf 84 | # git commit -m "Release ${{ steps.version.outputs.version }}" 85 | # git push origin master 86 | -------------------------------------------------------------------------------- /examples/release.yml: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: CC0-1.0 3 | # SPDX-FileType: OTHER 4 | # SPDX-FileCopyrightText: (c) 2021-2022, The Raetro authors and contributors 5 | ################################################################################ 6 | name: Create New Core Release 7 | ################################################################################ 8 | on: 9 | push: 10 | # Sequence of patterns matched against refs/tags 11 | tags: 12 | - 'v*' # Trigger only when tag matches v*, i.e. v1.0, v21.12.31, v211231 13 | ################################################################################ 14 | jobs: 15 | synthesis: 16 | runs-on: ubuntu-latest 17 | container: ghcr.io/raetro/quartus:17.1 # Use GitHub Container Registry 18 | #container: raetro/quartus:17.1 # Use DockerHub 19 | ############################################################################ 20 | env: 21 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 22 | ############################################################################ 23 | steps: 24 | ########################################################################## 25 | ## 1 - Checkout repository 26 | ########################################################################## 27 | - name: Checkout repository 28 | uses: actions/checkout@v3 29 | ########################################################################## 30 | ## 2 - RTL synthesis 31 | ########################################################################## 32 | - name: Run compilation flow 33 | run: quartus_sh --flow compile my_project.qpf 34 | ########################################################################## 35 | ## 3 - Get current version for tagging binary 36 | ########################################################################## 37 | - name: Get the version 38 | id: version 39 | run: echo ::set-output name=version::${GITHUB_REF#refs/tags/} # Get the version from the tag 40 | #run: echo "::set-output name=version::$(date +'%Y%m%d')" # Use date as version 41 | ########################################################################## 42 | ## 4 - Upload artifacts 43 | ########################################################################## 44 | - name: Upload artifacts 45 | uses: actions/upload-artifact@v3 46 | with: 47 | name: OutputFiles_${{ steps.version.outputs.version }} 48 | path: output_files/ 49 | retention-days: 14 50 | ########################################################################## 51 | ## 5 - Create tag with version and SHA256 checksum 52 | ########################################################################## 53 | - name: Copy, tag with version and create SHA256 checksum 54 | run: | 55 | mkdir -p releases 56 | cp output_files/my_project.rbf releases/my_project_${{ steps.version.outputs.version }}.rbf 57 | ( cd output_files && sha256sum my_project.rbf > ../releases/my_project_${{ steps.version.outputs.version }}.rbf.sha256 ) 58 | ########################################################################## 59 | ## 6 - Create a new GitHub release and upload the distribution artifacts 60 | ########################################################################## 61 | - name: Create a new GitHub release 62 | uses: softprops/action-gh-release@v0.1.14 63 | if: startsWith(github.ref, 'refs/tags/') 64 | with: 65 | files: | 66 | releases/my_project_${{ steps.version.outputs.version }}.rbf 67 | releases/my_project_${{ steps.version.outputs.version }}.rbf.sha256 68 | ########################################################################## 69 | ## 7 - Don't ever commit binary files to Git! But if this is what you want to do. 70 | ########################################################################## 71 | #- name: Commit Binary to Repository (aka. the MiST(er) way) 72 | # run: | 73 | # git fetch 74 | # git checkout -b master 75 | # git config user.name github-actions 76 | # git config user.email github-actions@github.com 77 | # git add releases/my_project_${{ steps.version.outputs.version }}.rbf 78 | # git commit -m "Release ${{ steps.version.outputs.version }}" 79 | # git push origin master 80 | -------------------------------------------------------------------------------- /examples/test-build.yml: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: CC0-1.0 3 | # SPDX-FileType: OTHER 4 | # SPDX-FileCopyrightText: (c) 2021-2022, The Raetro authors and contributors 5 | ################################################################################ 6 | name: Test Build 7 | ################################################################################ 8 | on: 9 | push: 10 | branches: 11 | - main 12 | paths-ignore: 13 | - '**.md' 14 | pull_request: 15 | branches: 16 | - main 17 | paths-ignore: 18 | - '**.md' 19 | ################################################################################ 20 | jobs: 21 | synthesis: 22 | runs-on: ubuntu-latest 23 | container: raetro/quartus:17.1 24 | ############################################################################ 25 | steps: 26 | ########################################################################## 27 | # 1 - Checkout repository 28 | ########################################################################## 29 | - name: Checkout repository 30 | uses: actions/checkout@v2 31 | ########################################################################## 32 | # 2 - RTL synthesis 33 | ########################################################################## 34 | - name: Run compilation flow 35 | run: quartus_sh --flow compile my_project.qpf 36 | ########################################################################## 37 | # 3 - Upload artifacts 38 | ########################################################################## 39 | - name: Upload artifacts 40 | uses: actions/upload-artifact@v3 41 | with: 42 | name: OutputFiles 43 | path: output_files/ 44 | -------------------------------------------------------------------------------- /quartus-base/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | FROM debian:stretch-slim 8 | 9 | ENV DEBIAN_FRONTEND=noninteractive 10 | 11 | # Bash Settings 12 | RUN { \ 13 | echo "export HISTTIMEFORMAT='%d/%m/%y %T '"; \ 14 | echo "export PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[0;33m\]\h\[\e[0m\]:\[\e[0;35m\]\w\[\e[0m\]\$ '"; \ 15 | echo "alias l='ls -CF'"; \ 16 | echo "alias la='ls -A'"; \ 17 | echo "alias ll='ls -lah'"; \ 18 | echo "alias ls='ls -F --color=auto'"; \ 19 | echo "alias lt='ls --human-readable --size -1 -S --classify'"; \ 20 | echo "alias count='find . -type f | wc -l'"; \ 21 | echo "alias cpv='rsync -ah --info=progress2'"; \ 22 | echo "alias update='apt-get -y update && apt-get -y upgrade'"; \ 23 | echo "alias meminfo='free -m -l -t'"; \ 24 | echo "alias psmem='ps auxf | sort -nr -k 4'"; \ 25 | echo "alias wget='wget -c'"; \ 26 | echo "alias gsmu='git submodule update --init --recursive'"; \ 27 | echo "alias gfc='quartus_sh --flow compile'"; \ 28 | } | tee -a ~/.bashrc 29 | 30 | # Quartus JTAG entrypoint 31 | RUN { \ 32 | echo '#!/bin/sh -e'; \ 33 | echo ''; \ 34 | echo 'if [ -n "$GITHUB_TOKEN" ] ; then'; \ 35 | echo ' gh auth setup-git'; \ 36 | echo 'fi'; \ 37 | echo ''; \ 38 | echo 'if [ -n "$JTAG_SERVER" -a -n "$JTAG_PASSWD" ] ; then'; \ 39 | echo ' jtagconfig --addserver "$JTAG_SERVER" "$JTAG_PASSWD"'; \ 40 | echo 'fi'; \ 41 | echo ''; \ 42 | echo 'exec "$@"'; \ 43 | echo ''; \ 44 | } | tee /usr/bin/quartus-entrypoint && chmod a+x /usr/bin/quartus-entrypoint 45 | 46 | # Add i386 to enable the installation of multiarch binaries (x86-32) 47 | RUN dpkg --add-architecture i386 48 | 49 | # Update the image OS 50 | RUN apt-get update && \ 51 | apt-get upgrade -y && \ 52 | apt-get install -y --no-install-recommends \ 53 | bc \ 54 | ca-certificates \ 55 | curl \ 56 | expect \ 57 | file \ 58 | git \ 59 | iputils-ping \ 60 | jq \ 61 | less \ 62 | lib32ncurses5-dev \ 63 | lib32z1 \ 64 | libc6:i386 \ 65 | libfontconfig1 \ 66 | libglib2.0-0 \ 67 | liblzma-dev \ 68 | libncurses5:i386 \ 69 | libqt5xml5 \ 70 | libsm6 \ 71 | libsm6:i386 \ 72 | libssl-dev \ 73 | libstdc++6:i386 \ 74 | libtcmalloc-minimal4 \ 75 | libxext6:i386 \ 76 | libxft2:i386 \ 77 | libxrender1 \ 78 | libzmq3-dev \ 79 | locales \ 80 | make \ 81 | nano \ 82 | net-tools \ 83 | openjdk-8-jdk \ 84 | pkg-config \ 85 | python3-pip \ 86 | rsync \ 87 | sed \ 88 | squashfs-tools \ 89 | sudo \ 90 | tar \ 91 | tcl \ 92 | tree \ 93 | udev \ 94 | unixodbc-dev \ 95 | unzip \ 96 | usbutils \ 97 | wget \ 98 | xauth \ 99 | xvfb \ 100 | xz-utils && \ 101 | rm -r /var/lib/apt/lists/* 102 | 103 | # Set System Locales 104 | RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen 105 | ENV LANG=en_US.UTF-8 106 | ENV LANGUAGE=en_US:en 107 | ENV LC_ALL=en_US.UTF-8 108 | 109 | # Change the working directory 110 | WORKDIR /tmp 111 | 112 | # Copy libpng, Github CLI and Changelog generator 113 | ARG GH_VERSION="2.14.2" 114 | ARG CHGLOG_VERSION="0.15.1" 115 | ADD libs/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb . 116 | ADD libs/libpng12-0_1.2.54-1ubuntu1.1_i386.deb . 117 | ADD https://github.com/cli/cli/releases/download/v${GH_VERSION}/gh_${GH_VERSION}_linux_amd64.deb . 118 | ADD https://github.com/git-chglog/git-chglog/releases/download/v${CHGLOG_VERSION}/git-chglog_${CHGLOG_VERSION}_linux_amd64.tar.gz . 119 | 120 | # Install libpng, Github CLI and Changelog generator 121 | RUN dpkg -i libpng12-0_1.2.54-1ubuntu1.1_amd64.deb \ 122 | libpng12-0_1.2.54-1ubuntu1.1_i386.deb \ 123 | gh_${GH_VERSION}_linux_amd64.deb 124 | 125 | RUN tar -zxf git-chglog_${CHGLOG_VERSION}_linux_amd64.tar.gz && \ 126 | chmod a+x git-chglog && \ 127 | mv git-chglog /usr/bin/git-chglog && \ 128 | rm -rf /tmp/* 129 | 130 | # Set main Quartus variables 131 | ENV QUARTUS_PATH=/opt/intelFPGA 132 | 133 | # Set Quartus environment variables 134 | ENV QUARTUS_ROOTDIR=${QUARTUS_PATH}/quartus 135 | ENV SOPC_KIT_NIOS2=${QUARTUS_PATH}/nios2eds 136 | ENV PATH=${QUARTUS_ROOTDIR}/bin/:${QUARTUS_ROOTDIR}/linux64/gnu/:${QUARTUS_ROOTDIR}/sopc_builder/bin/:$PATH 137 | ENV PATH=${SOPC_KIT_NIOS2}/:${SOPC_KIT_NIOS2}/bin/:${SOPC_KIT_NIOS2}/bin/gnu/H-x86_64-pc-linux-gnu/bin/:${SOPC_KIT_NIOS2}/sdk2/bin/:$PATH 138 | 139 | # Where we will store our data 140 | VOLUME /build 141 | 142 | # Quartus uses the current working directory 143 | WORKDIR /build 144 | 145 | # Expose default JTAG server port 146 | EXPOSE 1309/tcp 147 | EXPOSE 1309/udp 148 | 149 | # Metadata Params 150 | ARG BUILD_DATE 151 | ARG BUILD_VERSION 152 | 153 | # Metadata 154 | LABEL \ 155 | org.opencontainers.image.vendor="Raetro.org" \ 156 | org.opencontainers.image.title="raetro/quartus" \ 157 | org.opencontainers.image.description="Base OS for Quartus Prime Synthesis Engine" \ 158 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 159 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 160 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 161 | org.opencontainers.image.created=$BUILD_DATE \ 162 | org.opencontainers.image.version=$BUILD_VERSION 163 | 164 | ENTRYPOINT ["quartus-entrypoint"] 165 | 166 | CMD ["/bin/bash"] 167 | -------------------------------------------------------------------------------- /quartus-base/libs/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/quartus-base/libs/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb -------------------------------------------------------------------------------- /quartus-base/libs/libpng12-0_1.2.54-1ubuntu1.1_i386.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raetro/sdk-docker-fpga/5a562985726cbe68a2015797ad1a959f0b9380af/quartus-base/libs/libpng12-0_1.2.54-1ubuntu1.1_i386.deb -------------------------------------------------------------------------------- /quartus13.0/local/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Add Quartus installation files 14 | ADD files/cyclone_web-13.0.1.232.qdz . 15 | ADD files/QuartusSetupWeb-13.0.1.232.run . 16 | 17 | # Install Quartus and remove uninstaller 18 | RUN chmod a+x QuartusSetupWeb-13.0.1.232.run && \ 19 | ./QuartusSetupWeb-13.0.1.232.run --mode unattended --installdir /opt/intelFPGA && \ 20 | rm -rf /opt/intelFPGA/uninstall/ 21 | 22 | ################################################################################ 23 | 24 | # Create clean distribution image 25 | FROM raetro/quartus:base 26 | 27 | # Copy out Quartus instalation files to the image 28 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 29 | 30 | # Metadata Params 31 | ARG BUILD_DATE 32 | ARG BUILD_VERSION 33 | 34 | # Metadata 35 | LABEL \ 36 | org.opencontainers.image.vendor="Raetro.org" \ 37 | org.opencontainers.image.title="raetro/quartus" \ 38 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 39 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 40 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 41 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 42 | org.opencontainers.image.created=$BUILD_DATE \ 43 | org.opencontainers.image.version=$BUILD_VERSION 44 | -------------------------------------------------------------------------------- /quartus13.0/local/files/file.lst: -------------------------------------------------------------------------------- 1 | 882b19a8ffee1edd133693ff422a3f6c5a615589 cyclone_web-13.0.1.232.qdz 2 | 1418b2971aa44686c5d11b6c8ef81eee137379e8 QuartusSetupWeb-13.0.1.232.run 3 | -------------------------------------------------------------------------------- /quartus13.0/remote/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Intel CDN URL 14 | ARG INTEL_CDN="https://downloads.intel.com/akdlm/software/acdsinst" 15 | 16 | # Add Quartus installation files 17 | ADD ${INTEL_CDN}/13.0sp1/232/ib_installers/QuartusSetupWeb-13.0.1.232.run . 18 | ADD ${INTEL_CDN}/13.0sp1/232/ib_installers/cyclone_web-13.0.1.232.qdz . 19 | 20 | # Install Quartus and remove uninstaller 21 | RUN chmod a+x QuartusSetupWeb-13.0.1.232.run && \ 22 | ./QuartusSetupWeb-13.0.1.232.run --mode unattended --installdir /opt/intelFPGA && \ 23 | rm -rf /opt/intelFPGA/uninstall/ 24 | 25 | ################################################################################ 26 | 27 | # Create clean distribution image 28 | FROM raetro/quartus:base 29 | 30 | # Copy out Quartus instalation files to the image 31 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 32 | 33 | # Metadata Params 34 | ARG BUILD_DATE 35 | ARG BUILD_VERSION 36 | 37 | # Metadata 38 | LABEL \ 39 | org.opencontainers.image.vendor="Raetro.org" \ 40 | org.opencontainers.image.title="raetro/quartus" \ 41 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 42 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 43 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 44 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 45 | org.opencontainers.image.created=$BUILD_DATE \ 46 | org.opencontainers.image.version=$BUILD_VERSION 47 | -------------------------------------------------------------------------------- /quartus13.1/local/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Add Quartus installation files 14 | ADD files/cyclone_web-13.1.0.162.qdz . 15 | ADD files/cyclonev-13.1.0.162.qdz . 16 | ADD files/QuartusSetupWeb-13.1.0.162.run . 17 | ADD files/QuartusSetup-13.1.4.182.run . 18 | 19 | # Install Quartus and remove uninstaller 20 | RUN chmod a+x QuartusSetupWeb-13.1.0.162.run && \ 21 | chmod a+x QuartusSetup-13.1.4.182.run && \ 22 | ./QuartusSetupWeb-13.1.0.162.run --mode unattended --installdir /opt/intelFPGA && \ 23 | ./QuartusSetup-13.1.4.182.run --mode unattended --installdir /opt/intelFPGA && \ 24 | rm -rf /opt/intelFPGA/uninstall/ 25 | 26 | ################################################################################ 27 | 28 | # Create clean distribution image 29 | FROM raetro/quartus:base 30 | 31 | # Copy out Quartus instalation files to the image 32 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 33 | 34 | # Metadata Params 35 | ARG BUILD_DATE 36 | ARG BUILD_VERSION 37 | 38 | # Metadata 39 | LABEL \ 40 | org.opencontainers.image.vendor="Raetro.org" \ 41 | org.opencontainers.image.title="raetro/quartus" \ 42 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 43 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 44 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 45 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 46 | org.opencontainers.image.created=$BUILD_DATE \ 47 | org.opencontainers.image.version=$BUILD_VERSION 48 | -------------------------------------------------------------------------------- /quartus13.1/local/files/file.lst: -------------------------------------------------------------------------------- 1 | 83a5cc8d8d65198bb7830ed22f39cda86a709446 cyclone_web-13.1.0.162.qdz 2 | 42effa35fed2df509420193d49a2057df65e9379 cyclonev-13.1.0.162.qdz 3 | b682b90db473b971bdcbe10c185ea72ee8598eef QuartusSetupWeb-13.1.0.162.run 4 | c4275f0621ae55c5139e7c7b8bbdeace9d07c910 QuartusSetup-13.1.4.182.run 5 | -------------------------------------------------------------------------------- /quartus13.1/remote/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Intel CDN URL 14 | ARG INTEL_CDN="https://downloads.intel.com/akdlm/software/acdsinst" 15 | 16 | # Add Quartus installation files 17 | ADD ${INTEL_CDN}/13.1/162/ib_installers/QuartusSetupWeb-13.1.0.162.run . 18 | ADD ${INTEL_CDN}/13.1/162/ib_installers/cyclone_web-13.1.0.162.qdz . 19 | ADD ${INTEL_CDN}/13.1/162/ib_installers/cyclonev-13.1.0.162.qdz . 20 | ADD ${INTEL_CDN}/13.1.4/182/update/QuartusSetup-13.1.4.182.run . 21 | 22 | # Install Quartus and remove uninstaller 23 | RUN chmod a+x QuartusSetupWeb-13.1.0.162.run && \ 24 | chmod a+x QuartusSetup-13.1.4.182.run && \ 25 | ./QuartusSetupWeb-13.1.0.162.run --mode unattended --installdir /opt/intelFPGA && \ 26 | ./QuartusSetup-13.1.4.182.run --mode unattended --installdir /opt/intelFPGA && \ 27 | rm -rf /opt/intelFPGA/uninstall/ 28 | 29 | ################################################################################ 30 | 31 | # Create clean distribution image 32 | FROM raetro/quartus:base 33 | 34 | # Copy out Quartus instalation files to the image 35 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 36 | 37 | # Metadata Params 38 | ARG BUILD_DATE 39 | ARG BUILD_VERSION 40 | 41 | # Metadata 42 | LABEL \ 43 | org.opencontainers.image.vendor="Raetro.org" \ 44 | org.opencontainers.image.title="raetro/quartus" \ 45 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 46 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 47 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 48 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 49 | org.opencontainers.image.created=$BUILD_DATE \ 50 | org.opencontainers.image.version=$BUILD_VERSION 51 | -------------------------------------------------------------------------------- /quartus17.0/local/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Add Quartus installation files 14 | ADD files/cyclone-17.0.0.595.qdz . 15 | ADD files/cyclone10lp-17.0.0.595.qdz . 16 | ADD files/cyclonev-17.0.0.595.qdz . 17 | ADD files/max10-17.0.0.595.qdz . 18 | ADD files/QuartusLiteSetup-17.0.0.595-linux.run . 19 | ADD files/QuartusSetup-17.0.2.602-linux.run . 20 | 21 | # Fix file permissions 22 | RUN chmod a+x QuartusLiteSetup-17.0.0.595-linux.run && \ 23 | chmod a+x QuartusSetup-17.0.2.602-linux.run && \ 24 | ./QuartusLiteSetup-17.0.0.595-linux.run --mode unattended --installdir /opt/intelFPGA && \ 25 | rm -rf /opt/intelFPGA/uninstall/ 26 | 27 | ################################################################################ 28 | 29 | # Create clean distribution image 30 | FROM raetro/quartus:base 31 | 32 | # Copy out Quartus instalation files to the image 33 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 34 | 35 | # Load the library from the host system. 36 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 37 | 38 | # Metadata Params 39 | ARG BUILD_DATE 40 | ARG BUILD_VERSION 41 | 42 | # Metadata 43 | LABEL \ 44 | org.opencontainers.image.vendor="Raetro.org" \ 45 | org.opencontainers.image.title="raetro/quartus" \ 46 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 47 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 48 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 49 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 50 | org.opencontainers.image.created=$BUILD_DATE \ 51 | org.opencontainers.image.version=$BUILD_VERSION 52 | -------------------------------------------------------------------------------- /quartus17.0/local/files/file.lst: -------------------------------------------------------------------------------- 1 | 684b95768d50be2753f95b8091598421d3c6ead7 cyclone-17.0.0.595.qdz 2 | 2918eb8d950bb3af57c572ad74ed146cb95ad980 cyclone10lp-17.0.0.595.qdz 3 | 2198dedb99866f38d43ff6c029d4bd668e2bbb59 cyclonev-17.0.0.595.qdz 4 | bb9bdf902b3c181c46fe52821e6da63d323ada3d max10-17.0.0.595.qdz 5 | 99ccfb15962febceba64de2dc9b28c47e5a3b8df QuartusLiteSetup-17.0.0.595-linux.run 6 | cdc0389947ba6d3fb3206ac9840549c9fb38b093 QuartusSetup-17.0.2.602-linux.run 7 | -------------------------------------------------------------------------------- /quartus17.0/remote/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Intel CDN URL 14 | ARG INTEL_CDN="https://downloads.intel.com/akdlm/software/acdsinst" 15 | 16 | # Add Quartus installation files 17 | ADD ${INTEL_CDN}/17.0std/595/ib_installers/cyclone-17.0.0.595.qdz . 18 | ADD ${INTEL_CDN}/17.0std/595/ib_installers/cyclone10lp-17.0.0.595.qdz . 19 | ADD ${INTEL_CDN}/17.0std/595/ib_installers/cyclonev-17.0.0.595.qdz . 20 | ADD ${INTEL_CDN}/17.0std/595/ib_installers/max10-17.0.0.595.qdz . 21 | ADD ${INTEL_CDN}/17.0std/595/ib_installers/QuartusLiteSetup-17.0.0.595-linux.run . 22 | ADD ${INTEL_CDN}/17.0std.2/602/update/QuartusSetup-17.0.2.602-linux.run . 23 | 24 | # Fix file permissions 25 | RUN chmod a+x QuartusLiteSetup-17.0.0.595-linux.run && \ 26 | chmod a+x QuartusSetup-17.0.2.602-linux.run && \ 27 | ./QuartusLiteSetup-17.0.0.595-linux.run --mode unattended --installdir /opt/intelFPGA && \ 28 | rm -rf /opt/intelFPGA/uninstall/ 29 | 30 | ################################################################################ 31 | 32 | # Create clean distribution image 33 | FROM raetro/quartus:base 34 | 35 | # Copy out Quartus instalation files to the image 36 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 37 | 38 | # Load the library from the host system. 39 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 40 | 41 | # Metadata Params 42 | ARG BUILD_DATE 43 | ARG BUILD_VERSION 44 | 45 | # Metadata 46 | LABEL \ 47 | org.opencontainers.image.vendor="Raetro.org" \ 48 | org.opencontainers.image.title="raetro/quartus" \ 49 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 50 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 51 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 52 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 53 | org.opencontainers.image.created=$BUILD_DATE \ 54 | org.opencontainers.image.version=$BUILD_VERSION 55 | -------------------------------------------------------------------------------- /quartus17.1/local/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Add Quartus installation files 14 | ADD files/cyclone-17.1.0.590.qdz . 15 | ADD files/cyclonev-17.1.0.590.qdz . 16 | ADD files/cyclone10lp-17.1.0.590.qdz . 17 | ADD files/max10-17.1.0.590.qdz . 18 | ADD files/QuartusLiteSetup-17.1.0.590-linux.run . 19 | ADD files/QuartusSetup-17.1.1.593-linux.run . 20 | 21 | # Fix file permissions 22 | RUN chmod a+x QuartusSetup-17.1.1.593-linux.run && \ 23 | chmod a+x QuartusLiteSetup-17.1.0.590-linux.run && \ 24 | ./QuartusLiteSetup-17.1.0.590-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 25 | rm -rf /opt/intelFPGA/uninstall/ 26 | 27 | ################################################################################ 28 | 29 | # Create clean distribution image 30 | FROM raetro/quartus:base 31 | 32 | # Copy out Quartus instalation files to the image 33 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 34 | 35 | # Load the library from the host system. 36 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 37 | 38 | # Metadata Params 39 | ARG BUILD_DATE 40 | ARG BUILD_VERSION 41 | 42 | # Metadata 43 | LABEL \ 44 | org.opencontainers.image.vendor="Raetro.org" \ 45 | org.opencontainers.image.title="raetro/quartus" \ 46 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 47 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 48 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 49 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 50 | org.opencontainers.image.created=$BUILD_DATE \ 51 | org.opencontainers.image.version=$BUILD_VERSION 52 | -------------------------------------------------------------------------------- /quartus17.1/local/files/file.lst: -------------------------------------------------------------------------------- 1 | ad13e0f22371f850768a2d38abb123fcf95f59e4 cyclone-17.1.0.590.qdz 2 | 8750e1597fdb3696cc58b273031df3d163f2d30e cyclone10lp-17.1.0.590.qdz 3 | 392eebbc61e041be7abd1034de16323a414428e7 cyclonev-17.1.0.590.qdz 4 | fdf2e0306b5adc6d8e2e2acf65962ae1d8b36d32 max10-17.1.0.590.qdz 5 | 2b84182836aad9eefe0c8dcd92d052c9778ce887 QuartusLiteSetup-17.1.0.590-linux.run 6 | 786e18d810a7f0f69eb30785f36344241a4fe5ff QuartusSetup-17.1.1.593-linux.run 7 | -------------------------------------------------------------------------------- /quartus17.1/remote/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Intel CDN URL 14 | ARG INTEL_CDN="https://downloads.intel.com/akdlm/software/acdsinst" 15 | 16 | # Add Quartus installation files 17 | ADD ${INTEL_CDN}/17.1std/590/ib_installers/cyclone-17.1.0.590.qdz . 18 | ADD ${INTEL_CDN}/17.1std/590/ib_installers/cyclonev-17.1.0.590.qdz . 19 | ADD ${INTEL_CDN}/17.1std/590/ib_installers/cyclone10lp-17.1.0.590.qdz . 20 | ADD ${INTEL_CDN}/17.1std/590/ib_installers/max10-17.1.0.590.qdz . 21 | ADD ${INTEL_CDN}/17.1std/590/ib_installers/QuartusLiteSetup-17.1.0.590-linux.run . 22 | ADD ${INTEL_CDN}/17.1std.1/593/update/QuartusSetup-17.1.1.593-linux.run . 23 | 24 | # Fix file permissions 25 | RUN chmod a+x QuartusSetup-17.1.1.593-linux.run && \ 26 | chmod a+x QuartusLiteSetup-17.1.0.590-linux.run && \ 27 | ./QuartusLiteSetup-17.1.0.590-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 28 | rm -rf /opt/intelFPGA/uninstall/ 29 | 30 | ################################################################################ 31 | 32 | # Create clean distribution image 33 | FROM raetro/quartus:base 34 | 35 | # Copy out Quartus instalation files to the image 36 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 37 | 38 | # Load the library from the host system. 39 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 40 | 41 | # Metadata Params 42 | ARG BUILD_DATE 43 | ARG BUILD_VERSION 44 | 45 | # Metadata 46 | LABEL \ 47 | org.opencontainers.image.vendor="Raetro.org" \ 48 | org.opencontainers.image.title="raetro/quartus" \ 49 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 50 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 51 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 52 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 53 | org.opencontainers.image.created=$BUILD_DATE \ 54 | org.opencontainers.image.version=$BUILD_VERSION 55 | -------------------------------------------------------------------------------- /quartus18.1/local/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Add Quartus installation files 14 | ADD files/cyclone-18.1.0.625.qdz . 15 | ADD files/cyclone10lp-18.1.0.625.qdz . 16 | ADD files/cyclonev-18.1.0.625.qdz . 17 | ADD files/max10-18.1.0.625.qdz . 18 | ADD files/QuartusLiteSetup-18.1.0.625-linux.run . 19 | ADD files/QuartusSetup-18.1.1.646-linux.run . 20 | 21 | # Fix file permissions 22 | RUN chmod a+x QuartusSetup-18.1.1.646-linux.run && \ 23 | chmod a+x QuartusLiteSetup-18.1.0.625-linux.run && \ 24 | ./QuartusLiteSetup-18.1.0.625-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 25 | rm -rf /opt/intelFPGA/uninstall/ 26 | 27 | ################################################################################ 28 | 29 | # Create clean distribution image 30 | FROM raetro/quartus:base 31 | 32 | # Copy out Quartus instalation files to the image 33 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 34 | 35 | # Load the library from the host system. 36 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 37 | 38 | # Metadata Params 39 | ARG BUILD_DATE 40 | ARG BUILD_VERSION 41 | 42 | # Metadata 43 | LABEL \ 44 | org.opencontainers.image.vendor="Raetro.org" \ 45 | org.opencontainers.image.title="raetro/quartus" \ 46 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 47 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 48 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 49 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 50 | org.opencontainers.image.created=$BUILD_DATE \ 51 | org.opencontainers.image.version=$BUILD_VERSION 52 | -------------------------------------------------------------------------------- /quartus18.1/local/files/file.lst: -------------------------------------------------------------------------------- 1 | 0063923ed4b3e12f706a5fb95ddce71fbb89d833 cyclone-18.1.0.625.qdz 2 | ecbc942162e4aee221359da8fe63d61f6264b816 cyclone10lp-18.1.0.625.qdz 3 | be21e885ffd70321d926dbe269ee8c2ef7ad615e cyclonev-18.1.0.625.qdz 4 | f50890ec55a0a4e23a89c721d0f90794ac300c66 max10-18.1.0.625.qdz 5 | 3cc0e856c0c203ed47d6eaca05a85c2f29b7bd01 QuartusLiteSetup-18.1.0.625-linux.run 6 | d5d69bbf0de659fc7fa63f66a7715f26d288c35c QuartusSetup-18.1.1.646-linux.run 7 | -------------------------------------------------------------------------------- /quartus18.1/remote/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Intel CDN URL 14 | ARG INTEL_CDN="https://downloads.intel.com/akdlm/software/acdsinst" 15 | 16 | # Add Quartus installation files 17 | ADD ${INTEL_CDN}/18.1std/625/ib_installers/cyclone-18.1.0.625.qdz . 18 | ADD ${INTEL_CDN}/18.1std/625/ib_installers/cyclone10lp-18.1.0.625.qdz . 19 | ADD ${INTEL_CDN}/18.1std/625/ib_installers/cyclonev-18.1.0.625.qdz . 20 | ADD ${INTEL_CDN}/18.1std/625/ib_installers/max10-18.1.0.625.qdz . 21 | ADD ${INTEL_CDN}/18.1std/625/ib_installers/QuartusLiteSetup-18.1.0.625-linux.run . 22 | ADD ${INTEL_CDN}/18.1std.1/646/update/QuartusSetup-18.1.1.646-linux.run . 23 | 24 | # Fix file permissions 25 | RUN chmod a+x QuartusSetup-18.1.1.646-linux.run && \ 26 | chmod a+x QuartusLiteSetup-18.1.0.625-linux.run && \ 27 | ./QuartusLiteSetup-18.1.0.625-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 28 | rm -rf /opt/intelFPGA/uninstall/ 29 | 30 | ################################################################################ 31 | 32 | # Create clean distribution image 33 | FROM raetro/quartus:base 34 | 35 | # Copy out Quartus instalation files to the image 36 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 37 | 38 | # Load the library from the host system. 39 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 40 | 41 | # Metadata Params 42 | ARG BUILD_DATE 43 | ARG BUILD_VERSION 44 | 45 | # Metadata 46 | LABEL \ 47 | org.opencontainers.image.vendor="Raetro.org" \ 48 | org.opencontainers.image.title="raetro/quartus" \ 49 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 50 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 51 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 52 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 53 | org.opencontainers.image.created=$BUILD_DATE \ 54 | org.opencontainers.image.version=$BUILD_VERSION 55 | -------------------------------------------------------------------------------- /quartus19.1/local/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Add Quartus installation files 14 | ADD files/cyclone-19.1.0.670.qdz . 15 | ADD files/cyclone10lp-19.1.0.670.qdz . 16 | ADD files/cyclonev-19.1.0.670.qdz . 17 | ADD files/max10-19.1.0.670.qdz . 18 | ADD files/QuartusLiteSetup-19.1.0.670-linux.run . 19 | 20 | # Fix file permissions 21 | RUN chmod a+x QuartusLiteSetup-19.1.0.670-linux.run && \ 22 | ./QuartusLiteSetup-19.1.0.670-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 23 | rm -rf /opt/intelFPGA/uninstall/ 24 | 25 | ################################################################################ 26 | 27 | # Create clean distribution image 28 | FROM raetro/quartus:base 29 | 30 | # Copy out Quartus instalation files to the image 31 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 32 | 33 | # Load the library from the host system. 34 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 35 | 36 | # Metadata Params 37 | ARG BUILD_DATE 38 | ARG BUILD_VERSION 39 | 40 | # Metadata 41 | LABEL \ 42 | org.opencontainers.image.vendor="Raetro.org" \ 43 | org.opencontainers.image.title="raetro/quartus" \ 44 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 45 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 46 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 47 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 48 | org.opencontainers.image.created=$BUILD_DATE \ 49 | org.opencontainers.image.version=$BUILD_VERSION 50 | -------------------------------------------------------------------------------- /quartus19.1/local/files/file.lst: -------------------------------------------------------------------------------- 1 | 8ec1a1aff0374be90371121eff351ca4ec17ea3c cyclone-19.1.0.670.qdz 2 | b2622b757b842d83890a7e1c1fee65448cc76d8f cyclone10lp-19.1.0.670.qdz 3 | a618a94985875978f5b19aad64cfa78c60c33370 cyclonev-19.1.0.670.qdz 4 | cd99cd6e153867499e6a460d89661940f59ac60a max10-19.1.0.670.qdz 5 | ea512441cd6658c3e0225c85ccc09417110ab572 QuartusLiteSetup-19.1.0.670-linux.run 6 | -------------------------------------------------------------------------------- /quartus19.1/remote/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Intel CDN URL 14 | ARG INTEL_CDN="https://downloads.intel.com/akdlm/software/acdsinst" 15 | 16 | # Add Quartus installation files 17 | ADD ${INTEL_CDN}/19.1std/670/ib_installers/cyclone-19.1.0.670.qdz . 18 | ADD ${INTEL_CDN}/19.1std/670/ib_installers/cyclonev-19.1.0.670.qdz . 19 | ADD ${INTEL_CDN}/19.1std/670/ib_installers/cyclone10lp-19.1.0.670.qdz . 20 | ADD ${INTEL_CDN}/19.1std/670/ib_installers/max10-19.1.0.670.qdz . 21 | ADD ${INTEL_CDN}/19.1std/670/ib_installers/QuartusLiteSetup-19.1.0.670-linux.run . 22 | 23 | # Fix file permissions 24 | RUN chmod a+x QuartusLiteSetup-19.1.0.670-linux.run && \ 25 | ./QuartusLiteSetup-19.1.0.670-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 26 | rm -rf /opt/intelFPGA/uninstall/ 27 | 28 | ################################################################################ 29 | 30 | # Create clean distribution image 31 | FROM raetro/quartus:base 32 | 33 | # Copy out Quartus instalation files to the image 34 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 35 | 36 | # Load the library from the host system. 37 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 38 | 39 | # Metadata Params 40 | ARG BUILD_DATE 41 | ARG BUILD_VERSION 42 | 43 | # Metadata 44 | LABEL \ 45 | org.opencontainers.image.vendor="Raetro.org" \ 46 | org.opencontainers.image.title="raetro/quartus" \ 47 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 48 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 49 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 50 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 51 | org.opencontainers.image.created=$BUILD_DATE \ 52 | org.opencontainers.image.version=$BUILD_VERSION 53 | -------------------------------------------------------------------------------- /quartus20.1/local/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Add Quartus installation files 14 | ADD files/cyclone-20.1.0.711.qdz . 15 | ADD files/cyclone10lp-20.1.0.711.qdz . 16 | ADD files/cyclonev-20.1.0.711.qdz . 17 | ADD files/max10-20.1.0.711.qdz . 18 | ADD files/QuartusLiteSetup-20.1.0.711-linux.run . 19 | 20 | # Fix file permissions 21 | RUN chmod a+x QuartusLiteSetup-20.1.0.711-linux.run && \ 22 | ./QuartusLiteSetup-20.1.0.711-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 23 | rm -rf /opt/intelFPGA/uninstall/ 24 | 25 | ################################################################################ 26 | 27 | # Create clean distribution image 28 | FROM raetro/quartus:base 29 | 30 | # Copy out Quartus instalation files to the image 31 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 32 | 33 | # Load the library from the host system. 34 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 35 | 36 | # Metadata Params 37 | ARG BUILD_DATE 38 | ARG BUILD_VERSION 39 | 40 | # Metadata 41 | LABEL \ 42 | org.opencontainers.image.vendor="Raetro.org" \ 43 | org.opencontainers.image.title="raetro/quartus" \ 44 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 45 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 46 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 47 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 48 | org.opencontainers.image.created=$BUILD_DATE \ 49 | org.opencontainers.image.version=$BUILD_VERSION 50 | -------------------------------------------------------------------------------- /quartus20.1/local/files/file.lst: -------------------------------------------------------------------------------- 1 | 5cfa211a9797425e8a5126f4b1a97174bd6bf823 cyclone-20.1.0.711.qdz 2 | bb5dd920fcae208dae2de283f32ca18963c26abb cyclone10lp-20.1.0.711.qdz 3 | c4ee3fa13f1dfbd3d95c8baa9fece7b864ef5d2c cyclonev-20.1.0.711.qdz 4 | 00c4f06f1112e644efaf13018643619bc0b08cb4 max10-20.1.0.711.qdz 5 | 00a2909e7cf0e174a5528d110608348174aac9b3 QuartusLiteSetup-20.1.0.711-linux.run 6 | -------------------------------------------------------------------------------- /quartus20.1/remote/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Intel CDN URL 14 | ARG INTEL_CDN="https://downloads.intel.com/akdlm/software/acdsinst" 15 | 16 | # Add Quartus installation files 17 | ADD ${INTEL_CDN}/20.1std/711/ib_installers/cyclone-20.1.0.711.qdz . 18 | ADD ${INTEL_CDN}/20.1std/711/ib_installers/cyclone10lp-20.1.0.711.qdz . 19 | ADD ${INTEL_CDN}/20.1std/711/ib_installers/cyclonev-20.1.0.711.qdz . 20 | ADD ${INTEL_CDN}/20.1std/711/ib_installers/max10-20.1.0.711.qdz . 21 | ADD ${INTEL_CDN}/20.1std/711/ib_installers/QuartusLiteSetup-20.1.0.711-linux.run . 22 | 23 | # Fix file permissions 24 | RUN chmod a+x QuartusLiteSetup-20.1.0.711-linux.run && \ 25 | ./QuartusLiteSetup-20.1.0.711-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 26 | rm -rf /opt/intelFPGA/uninstall/ 27 | 28 | ################################################################################ 29 | 30 | # Create clean distribution image 31 | FROM raetro/quartus:base 32 | 33 | # Copy out Quartus instalation files to the image 34 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 35 | 36 | # Load the library from the host system. 37 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 38 | 39 | # Metadata Params 40 | ARG BUILD_DATE 41 | ARG BUILD_VERSION 42 | 43 | # Metadata 44 | LABEL \ 45 | org.opencontainers.image.vendor="Raetro.org" \ 46 | org.opencontainers.image.title="raetro/quartus" \ 47 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 48 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 49 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 50 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 51 | org.opencontainers.image.created=$BUILD_DATE \ 52 | org.opencontainers.image.version=$BUILD_VERSION 53 | -------------------------------------------------------------------------------- /quartus21.1/local/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Add Quartus installation files 14 | ADD files/cyclone-21.1.1.850.qdz . 15 | ADD files/cyclone10lp-21.1.1.850.qdz . 16 | ADD files/cyclonev-21.1.1.850.qdz . 17 | ADD files/max10-21.1.1.850.qdz . 18 | ADD files/QuartusLiteSetup-21.1.1.850-linux.run . 19 | 20 | # Fix file permissions 21 | RUN chmod a+x QuartusLiteSetup-21.1.1.850-linux.run && \ 22 | ./QuartusLiteSetup-21.1.1.850-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 23 | rm -rf /opt/intelFPGA/uninstall/ 24 | 25 | ################################################################################ 26 | 27 | # Create clean distribution image 28 | FROM raetro/quartus:base 29 | 30 | # Copy out Quartus instalation files to the image 31 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 32 | 33 | # Load the library from the host system. 34 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 35 | 36 | # Metadata Params 37 | ARG BUILD_DATE 38 | ARG BUILD_VERSION 39 | 40 | # Metadata 41 | LABEL \ 42 | org.opencontainers.image.vendor="Raetro.org" \ 43 | org.opencontainers.image.title="raetro/quartus" \ 44 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 45 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 46 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 47 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 48 | org.opencontainers.image.created=$BUILD_DATE \ 49 | org.opencontainers.image.version=$BUILD_VERSION 50 | -------------------------------------------------------------------------------- /quartus21.1/local/files/file.lst: -------------------------------------------------------------------------------- 1 | 0da78d840eaba15e23486e983b8dce4a7bf24bf7 cyclone-21.1.1.850.qdz 2 | 7dcb21cb70fafe142afd261ea766700248aba657 cyclone10lp-21.1.1.850.qdz 3 | 467123b7bd5e6907beb7d6b1e073ed7bad3e5e94 cyclonev-21.1.1.850.qdz 4 | 52361585ed0f224281f17c07ae9b93466d38c6a5 max10-21.1.1.850.qdz 5 | 6b25e8c62535d0ac02a1075b3dd334d2b04394aa QuartusLiteSetup-21.1.1.850-linux.run 6 | -------------------------------------------------------------------------------- /quartus21.1/remote/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Intel CDN URL 14 | ARG INTEL_CDN="https://downloads.intel.com/akdlm/software/acdsinst" 15 | 16 | # Add Quartus installation files 17 | ADD ${INTEL_CDN}/21.1std.1/850/ib_installers/cyclone-21.1.1.850.qdz . 18 | ADD ${INTEL_CDN}/21.1std.1/850/ib_installers/cyclone10lp-21.1.1.850.qdz . 19 | ADD ${INTEL_CDN}/21.1std.1/850/ib_installers/cyclonev-21.1.1.850.qdz . 20 | ADD ${INTEL_CDN}/21.1std.1/850/ib_installers/max10-21.1.1.850.qdz . 21 | ADD ${INTEL_CDN}/21.1std.1/850/ib_installers/QuartusLiteSetup-21.1.1.850-linux.run . 22 | 23 | # Fix file permissions 24 | RUN chmod a+x QuartusLiteSetup-21.1.1.850-linux.run && \ 25 | ./QuartusLiteSetup-21.1.1.850-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 26 | rm -rf /opt/intelFPGA/uninstall/ 27 | 28 | ################################################################################ 29 | 30 | # Create clean distribution image 31 | FROM raetro/quartus:base 32 | 33 | # Copy out Quartus instalation files to the image 34 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 35 | 36 | # Load the library from the host system. 37 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 38 | 39 | # Metadata Params 40 | ARG BUILD_DATE 41 | ARG BUILD_VERSION 42 | 43 | # Metadata 44 | LABEL \ 45 | org.opencontainers.image.vendor="Raetro.org" \ 46 | org.opencontainers.image.title="raetro/quartus" \ 47 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 48 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 49 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 50 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 51 | org.opencontainers.image.created=$BUILD_DATE \ 52 | org.opencontainers.image.version=$BUILD_VERSION 53 | -------------------------------------------------------------------------------- /quartus22.1/local/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Add Quartus installation files 14 | ADD files/cyclone-22.1std.2.922.qdz . 15 | ADD files/cyclone10lp-22.1std.2.922.qdz . 16 | ADD files/cyclonev-22.1std.2.922.qdz . 17 | ADD files/max10-22.1std.2.922.qdz . 18 | ADD files/QuartusLiteSetup-22.1std.2.922-linux.run . 19 | 20 | # Fix file permissions 21 | RUN chmod a+x QuartusLiteSetup-22.1std.2.922-linux.run && \ 22 | ./QuartusLiteSetup-22.1std.2.922-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 23 | rm -rf /opt/intelFPGA/uninstall/ 24 | 25 | ################################################################################ 26 | 27 | # Create clean distribution image 28 | FROM raetro/quartus:base 29 | 30 | # Copy out Quartus instalation files to the image 31 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 32 | 33 | # Load the library from the host system. 34 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4 35 | 36 | # Metadata Params 37 | ARG BUILD_DATE 38 | ARG BUILD_VERSION 39 | 40 | # Metadata 41 | LABEL \ 42 | org.opencontainers.image.vendor="Raetro.org" \ 43 | org.opencontainers.image.title="raetro/quartus" \ 44 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 45 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 46 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 47 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 48 | org.opencontainers.image.created=$BUILD_DATE \ 49 | org.opencontainers.image.version=$BUILD_VERSION 50 | -------------------------------------------------------------------------------- /quartus22.1/local/files/file.lst: -------------------------------------------------------------------------------- 1 | 97163542d8dd846703fc1912ea0c844bc9359a2e cyclone-22.1std.2.922.qdz 2 | ac867a27c654c3a057bb6377fd2b63dcc227394d cyclone10lp-22.1std.2.922.qdz 3 | 07bde3cd02e18f4f1288051e9c1391f5570f6d3e cyclonev-22.1std.2.922.qdz 4 | fe7e189417f4c28adbdb88407396c66804af4dd4 max10-22.1std.2.922.qdz 5 | 9fbb3a3721c3cb94706c2d9532a8213f120f5c56 QuartusLiteSetup-22.1std.2.922-linux.run 6 | -------------------------------------------------------------------------------- /quartus22.1/remote/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Intel CDN URL 14 | ARG INTEL_CDN="https://downloads.intel.com/akdlm/software/acdsinst" 15 | 16 | # Add Quartus installation files 17 | ADD ${INTEL_CDN}/22.1std.2/922/ib_installers/cyclone-22.1std.2.922.qdz . 18 | ADD ${INTEL_CDN}/22.1std.2/922/ib_installers/cyclone10lp-22.1std.2.922.qdz . 19 | ADD ${INTEL_CDN}/22.1std.2/922/ib_installers/cyclonev-22.1std.2.922.qdz . 20 | ADD ${INTEL_CDN}/22.1std.2/922/ib_installers/max10-22.1std.2.922.qdz . 21 | ADD ${INTEL_CDN}/22.1std.2/922/ib_installers/QuartusLiteSetup-22.1std.2.922-linux.run . 22 | 23 | # Fix file permissions 24 | RUN chmod a+x QuartusLiteSetup-22.1std.2.922-linux.run && \ 25 | ./QuartusLiteSetup-22.1std.2.922-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 26 | rm -rf /opt/intelFPGA/uninstall/ 27 | 28 | ################################################################################ 29 | 30 | # Create clean distribution image 31 | FROM raetro/quartus:base 32 | 33 | # Copy out Quartus instalation files to the image 34 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 35 | 36 | # Load the library from the host system. 37 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4 38 | 39 | # Metadata Params 40 | ARG BUILD_DATE 41 | ARG BUILD_VERSION 42 | 43 | # Metadata 44 | LABEL \ 45 | org.opencontainers.image.vendor="Raetro.org" \ 46 | org.opencontainers.image.title="raetro/quartus" \ 47 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 48 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 49 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 50 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 51 | org.opencontainers.image.created=$BUILD_DATE \ 52 | org.opencontainers.image.version=$BUILD_VERSION 53 | -------------------------------------------------------------------------------- /quartus23.1/local/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Add Quartus installation files 14 | ADD files/cyclone-23.1std.0.991.qdz . 15 | ADD files/cyclone10lp-23.1std.0.991.qdz . 16 | ADD files/cyclonev-23.1std.0.991.qdz . 17 | ADD files/max10-23.1std.0.991.qdz . 18 | ADD files/QuartusLiteSetup-23.1std.0.991-linux.run . 19 | 20 | # Fix file permissions 21 | RUN chmod a+x QuartusLiteSetup-23.1std.0.991-linux.run && \ 22 | ./QuartusLiteSetup-23.1std.0.991-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 23 | rm -rf /opt/intelFPGA/uninstall/ 24 | 25 | ################################################################################ 26 | 27 | # Create clean distribution image 28 | FROM raetro/quartus:base 29 | 30 | # Copy out Quartus instalation files to the image 31 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 32 | 33 | # Load the library from the host system. 34 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4 35 | 36 | # Metadata Params 37 | ARG BUILD_DATE 38 | ARG BUILD_VERSION 39 | 40 | # Metadata 41 | LABEL \ 42 | org.opencontainers.image.vendor="Raetro.org" \ 43 | org.opencontainers.image.title="raetro/quartus" \ 44 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 45 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 46 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 47 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 48 | org.opencontainers.image.created=$BUILD_DATE \ 49 | org.opencontainers.image.version=$BUILD_VERSION 50 | -------------------------------------------------------------------------------- /quartus23.1/local/files/file.lst: -------------------------------------------------------------------------------- 1 | c1c433474329664fd3041914e7e94648fab06062 cyclone-23.1std.0.991.qdz 2 | 72b1b9a18dc28f26604522d3b3e14e29ecdfdb4c cyclone10lp-23.1std.0.991.qdz 3 | 8c08c3c2f8c54ef756ebf1a04f8da74f748009bb cyclonev-23.1std.0.991.qdz 4 | 80109b586c8a8a4b68b319accb03ede4ef39a0a0 max10-23.1std.0.991.qdz 5 | 7f8cc416092710c47270ef1550a0d0bc2bfb7a10 QuartusLiteSetup-23.1std.0.991-linux.run 6 | -------------------------------------------------------------------------------- /quartus23.1/remote/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # SPDX-License-Identifier: MIT 3 | # SPDX-FileType: SOURCE 4 | # SPDX-FileCopyrightText: (c) 2022, Marcus Andrade 5 | ################################################################################ 6 | 7 | # Install Quartus on a separated layer of the Docker image to shrink the image size. 8 | FROM raetro/quartus:base as install 9 | 10 | # Change the working directory 11 | WORKDIR /tmp 12 | 13 | # Intel CDN URL 14 | ARG INTEL_CDN="https://downloads.intel.com/akdlm/software/acdsinst" 15 | 16 | # Add Quartus installation files 17 | ADD ${INTEL_CDN}/23.1std/991/ib_installers/cyclone-23.1std.0.991.qdz . 18 | ADD ${INTEL_CDN}/23.1std/991/ib_installers/cyclone10lp-23.1std.0.991.qdz . 19 | ADD ${INTEL_CDN}/23.1std/991/ib_installers/cyclonev-23.1std.0.991.qdz . 20 | ADD ${INTEL_CDN}/23.1std/991/ib_installers/max10-23.1std.0.991.qdz . 21 | ADD ${INTEL_CDN}/23.1std/991/ib_installers/QuartusLiteSetup-23.1std.0.991-linux.run . 22 | 23 | # Fix file permissions 24 | RUN chmod a+x QuartusLiteSetup-23.1std.0.991-linux.run && \ 25 | ./QuartusLiteSetup-23.1std.0.991-linux.run --mode unattended --accept_eula 1 --installdir /opt/intelFPGA && \ 26 | rm -rf /opt/intelFPGA/uninstall/ 27 | 28 | ################################################################################ 29 | 30 | # Create clean distribution image 31 | FROM raetro/quartus:base 32 | 33 | # Copy out Quartus instalation files to the image 34 | COPY --from=install /opt/intelFPGA/ /opt/intelFPGA/ 35 | 36 | # Load the library from the host system. 37 | ENV LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4 38 | 39 | # Metadata Params 40 | ARG BUILD_DATE 41 | ARG BUILD_VERSION 42 | 43 | # Metadata 44 | LABEL \ 45 | org.opencontainers.image.vendor="Raetro.org" \ 46 | org.opencontainers.image.title="raetro/quartus" \ 47 | org.opencontainers.image.description="Intel Quartus Prime Synthesis Engine" \ 48 | org.opencontainers.image.authors="sigs+fpga@raetro.org" \ 49 | org.opencontainers.image.url="https://github.com/raetro/sdk-docker-fpga" \ 50 | org.opencontainers.image.source="https://github.com/raetro/sdk-docker-fpga.git" \ 51 | org.opencontainers.image.created=$BUILD_DATE \ 52 | org.opencontainers.image.version=$BUILD_VERSION 53 | --------------------------------------------------------------------------------