First steps with free FPGA toolchain and ULX3S board

So, this blog post first needs a bit of a background before jumping intro the technical parts (actually I am also writing before I’ve done anything with the ULX3S board). I have some experience with FPGAs, even my XXXZavrsni rad was an arbitrary function generator made in a xilinx spartan fpga with a microblaze soft core and a serial peripheral, decomposition of functions was done in a Matlab program.

But the thing is that was a really long time ago, about 6-7 years ago. And not to sound like an old fart, but it was a really different game back than. There was no way of running the tools in Linux. Tools were around ~20gb at least, which is a lot even today but then it was really a lot. The simulator that came with the tools was poor so you needed to use ModelSim tools for simulations. Installing the tools needed a few magic incantations so it was a pain just to get to writing VHDL.

A couple if years ago I saw a cool presentation about a FOSS toolchain for ice40 FPGAs. I haven’t even tried it then, I did not have a ice40 board, did not know verilog and too be honest I thought that writing a FOSS toolchain for FPGAs, especially with the amount of info that was not available from the manufacturers. But I kept following what is happening.

What I got from the presentations XXXX linkovi XXXX from this year’s CCC I thing they have proved me wrong. There are multiple routers, multiple supported FPGAs from different manufacturers and has been used now for pretty big projects.

I’ve managed to get a ULX3S board to test how the whole thing is actually working.

I am going to try to document as much as I can, the technical part and my thoughts during the whole exploration.

So, the first thing I did was to checkout the links inside RadionaOrg repo. I’ve found a blinky there so I started from there.

Considering the environment I did two things. First thing is I started doing everything not on my laptop but on the computer beneath my TV that is more beefy. The second thing is I