sylefeb / fpga-binutils Goto Github PK
View Code? Open in Web Editor NEWCompilation framework for FPGA tools
License: GNU General Public License v3.0
Compilation framework for FPGA tools
License: GNU General Public License v3.0
Hi @sylefeb!
Are you aware of the mingw-w64-*-eda
tool groups in upstream MSYS2 repositories? That one is available for all environments (MINGW32, MINGW64, CLANG32, CLANG64 and UCRT64). See the list of tools currently available on MINGW64: https://packages.msys2.org/group/mingw-w64-x86_64-eda
# pacman -S mingw-w64-x86_64-eda
:: There are 22 members in group mingw-w64-x86_64-eda:
:: Repository mingw64
1) mingw-w64-x86_64-dfu-util 2) mingw-w64-x86_64-ecpprog 3) mingw-w64-x86_64-fritzing
4) mingw-w64-x86_64-ghdl-llvm 5) mingw-w64-x86_64-gtkwave 6) mingw-w64-x86_64-icesprog
7) mingw-w64-x86_64-icestorm 8) mingw-w64-x86_64-iverilog 9) mingw-w64-x86_64-kicad
10) mingw-w64-x86_64-kicad-footprints 11) mingw-w64-x86_64-kicad-meta 12) mingw-w64-x86_64-kicad-packages3D
13) mingw-w64-x86_64-kicad-symbols 14) mingw-w64-x86_64-kicad-templates 15) mingw-w64-x86_64-nextpnr
16) mingw-w64-x86_64-ngspice 17) mingw-w64-x86_64-openFPGALoader 18) mingw-w64-x86_64-prjtrellis
19) mingw-w64-x86_64-scopehal-apps 20) mingw-w64-x86_64-serial-studio 21) mingw-w64-x86_64-verilator
22) mingw-w64-x86_64-yosys
Enter a selection (default=all):
The recipes for those tools are maintained in msys2/MINGW-packages. As soon as a PR is merged there, packages are built. Within a few hours/days, maintainers sign them and upload them to the server. Meanwhile, it's possible to use GitHub Releases as a mirror for pacman.
Currently, I take care of maintaining most of those EDA tooling recipes. I created hdl/MINGW-packages for keeping track (find the bigger picture in hdl/packages). So, it's not a fork, but a repo for documentation and for testing/CI. See hdl.github.io/MINGW-packages. Naturally, any help would be really welcome.
To name a few examples, those packages are used in the CI workflows of Fomu workshop (https://github.com/im-tomu/fomu-workshop/actions/runs/1002654445) or NEORV32 (https://github.com/stnolting/neorv32/actions/runs/993317180). That is done through Action setup-msys2:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: >
make
mingw-w64-x86_64-icestorm
mingw-w64-x86_64-yosys
mingw-w64-x86_64-nextpnr
NOTE: GHDL is a dependency of Yosys, so that mixed-language (VHDL and Verilog) designs are supported by default.
You will find that the use case of NEORV32 is quite similar to this one. The riscv toolchain with multilib is available on MSYS2 already: mingw-w64-x86_64-riscv64-unknown-elf-gcc. As a matter of that, MSYS2 is the main environment I use for synthesis and simulation using open source tooling.
Overall, it seems there are three tools missing for your bundle: fujprog, silice and xray. The other 12 are upstreamed in MSYS2 already. Hence, I want to propose joining forces in hdl/MINGW-packages. Let's collaborate for having PKGBUILD recipes written for those three tools.
Even if any of them cannot be upstreamed, we can use the same recipes for generating zst
packages, which can then be used for creating an standalone zipfile. That approach is used in gtkwave/gtkwave and ghdl/ghdl. Since you wrote the list of "extra" DLLs in https://github.com/sylefeb/fpga-binutils/blob/master/mingw32/compile_all.sh, it would be straightforward to mimick the solution in https://github.com/gtkwave/gtkwave/blob/master/MSYS2/standalone_pkg.sh. See an example CI run: https://github.com/gtkwave/gtkwave/runs/2985868198?check_suite_focus=true. The corresponding artifacts (zst packages and standalone tarballs) are uploaded to a "nightly" release: https://github.com/gtkwave/gtkwave/releases.
Last, but not least, the PKGBUILD recipes in msys2/MINGW-packages are pinned to a version or an specific commit. However, minimal modifications are required in order to have them build the master branch. That is used for testing Verilator, Icarus Verilog, OpenFPGALoader, Serial-Studio...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.