15 comments

[ 4.2 ms ] story [ 52.1 ms ] thread
What would folks recommend for a beginner (electronics and coding experience but new to fpga)? Prefer open source toolchain if possible. Not too expensive. Starter tutorials would be nice.
TinyFPGA BX ([1]) and nmigen/yosys as the fully open source toolchain for generating logic with Python and formally verifying it ([2], [3]). There is a good nMigen tutorial by Robert Baruch ([4]. [5]).

Alternatively, if you really want to try Verilog first (not a bad idea), I enjoyed reading a book "Designing Video Game Hardware in Verilog" ([6]).

1. https://tinyfpga.com/

2. https://m-labs.hk/gateware/nmigen/

3. http://www.clifford.at/yosys/

4. https://github.com/RobertBaruch/nmigen-tutorial

5. https://www.youtube.com/watch?v=85ZCTuekjGA&list=PLEeZWGE3Pw...

6. https://www.amazon.com/gp/product/1728619440/ref=ppx_yo_dt_b...

Worth knowing that are two "nmigen"s nowadays - the one originated in M-Labs and one under a project also called nmigen:

https://github.com/nmigen/nmigen

It's a fork, made for reasons, but more actively developed. whitequark (long time author/contributor) works on this fork, and no longer the M-Labs version.

Oh! I was not aware of that development. Yes, please, use the github version.
I went for a ULX3S to try and learn spinalHDL. I find it much easier to understand than vanilla verilog, however it still is a steep learning curve...
To iterate on what other people have been saying, nMigen is great! But I probably wouldn't learn it as my first intro to HDLs because in my opinion it's best thought of as a macro-generator for Verilog.

I'd first go through the HDLbits online tutorials for Verilog (https://hdlbits.01xz.net/wiki/Problem_sets). They're a nice interactive intro to Verilog (and HDLs in general) and can be simulated directly in your browser without having to download any software. Even if you only plan to write nMigen, learning Verilog will be helpful when you inevitably need to inspect the nMigen generated Verilog.

AFAIK the Lattice stuff is the only option if you want a full open source toolchain.
Two options, actually: Lattice and QuickLogic
I would say if you have the money for it, the Icebreaker FPGA dev board is really nice and integrates with the open source tools well. When prototyping I either use Verilog + Iverilog for simulation + yosys and icestrom tools for building, or more recently, I've been messing around with the active nmigen fork for python and doing design and simulation all in there which also links to the other tools for build as well. Honestly what software you like just depends on what you find best.
I recommend NMigen instead of verilog.

There's some good resources to look if you're trying to get into nmigen.

Here's a 6502 written in Nmigen.

https://github.com/mmagm/m6502

(comment deleted)
Anyone here worked with MIT licensed SymbiFlow or any of the QuickLogic EOS S3 FPGAs? https://learn.sparkfun.com/tutorials/quicklogic-thing-plus-e...
I have! SymbiFlow is very good for being a FOSS hardware toolchain, sometimes it has trouble with peculiar FPGA primitives but it's nothing you can't work around.

I've hacked around with my EOS S3 board less than my other boards (mostly because if I need a CPU I'll just add a VexRiscv soft-core in a regular FPGA), but I can definitely see it's use case if you'd like to accelerate sections of your software without building the entire design on an FPGA.

Try out Clash: https://github.com/clash-lang/clash-compiler

Honestly I think it's maybe the best way to write new digital circuits today. I tried nMigen but it doesn't seem suited to write local in at all. It's easy to connect things together but actually writing something is a PITA.