An FPGA development workflow for FPGA programming without any dirty proprietary software has been a long-sought-after goal for lots of us free-software hackers. Clifford Wolf has finally made it happen, just in the last few months! His Project IceStorm uses his reverse-engineering of the Lattice FPGA bitstream format to process the output from arachne-pnr into a valid bitstream, then program that bitstream onto the device.
Apparently he had to write his own Verilog synthesis tools too; dunno if Icarus Verilog wasn’t good enough, or if he just did that for fun.
In reading more about this project (I just heard of it!), I realize that I didn’t give Mathias Lasser proper credit for his part of Project IceStorm.
Also! The FPGAs themselves are super cheap. Like US$1.53 at retail, although I think that one may not be supported by IceStorm yet. And the IceStorm and Arachne-pnr tools are super fast, with the subsecond compile times on this toy example that you would expect from decent software, while the Lattice tools are much slower. And IceStorm has successfully compiled a CPU and programmed it onto an FPGA, which you could consider either a proof of maturity of the software, or a waste of a perfectly good FPGA. Maybe this means the long-promised FPGA future of wonder can finally come to pass!
On reading further, he wrote Yosys (the Verilog synthesis tool) because nothing else out there, including Icarus Verilog, came close to what he needed. The Yosys manual says,
Unfortunately I don’t know what App. ?? is. Nothing promising appears in the table of contents or bibliography. It seems to have been the deleted Appendix E. There’s a hint early on, though:
The Icarus Verilog FAQ has a more complete entry about this:
Yosys itself looks very impressive indeed. An aside in appendix D: