
Developing open-source FPGA tools - mr_golyadkin
https://twitter.com/TinyFPGA/status/1177940755530207232
======
DoingIsLearning
For those who are not familiar with silicon vendors' toolchain, it really is
very poor quality especially when they started pushing for GUI based
Graphical/System development.

Vendors make money selling silicon, they see the toolchain as a necessary
evil.

There are 2018 tools that are still unable to fully support VHDL-2008
standard. Many bugs reported years again remain open. And often the GUI
centric approach means you are left manually changing ad nauseam several GUI
fields and ticking boxes, until you eventually determine what is the tcl
'equivalent' to at least try to ease your pain (tcl scripting often is another
pain all together but arguably a lesser evil).

Also specifically with Xilinx they seem to have zero consideration for basic
version control and create/duplicate/modify an explosion of files and cached
versions of files.

Projects like GHDL and this are a breath of fresh are.

~~~
ur-whale
Xilinx's toolchain is the worst piece of software I've ever had to work with.

There are two things that amaze me:

1\. That the dumpster fire is actually capable at all to synthesize hardware
without exploding

2\. That their head of software still has a job.

~~~
cmrdporcupine
I'm using Vivado after having previously attempted Quartus and I can't
actually say it's any worse. I was able to eventually find my way around it
and in some ways it was more intuitive than Quartus.

I see the pile of ideas they're trying to glue together. But it really just
does get in the way more than anything else.

Now my process is: Verilator + CMake + CLion + SystemVerilog plugin for CLion
(excellent but $$$); then when it runs well in verilator I bring it over to
Vivado, fix any warnings it gripes about and try it on hardware.

~~~
cmrdporcupine
And I've just discovered fusesoc and this is 50x better...

------
hermitdev
I'm surprised no one has mentioned Icarus Verilog [0]. I used this extensively
when I was in college around 2002. Open source, used to only support FreeBSD
(my first BSD exposure), but is cross platform. It saved my ass, as I didnt
have to compete for limited lab time on the few Solaris boxes with the
proprietary tools we used in my VLSI class while studying EE.

I was sitting on my living room floor with my FreeBSD laptop punching out my
project while others were waiting in line at 2am for lab time.

Fun times.

Wrote all of the components for a basic 8-bit ALU while watching with Mothman
Propechies and sipping some Bourbon. Wrote a C++ program in that time, too, to
generate exhaustive tests for all components. Icarus was fucking awesome for
all this. As a commuter student my last 2 years, not having to hang out
waiting for time was awesome. I got a lot more sleep, and a lot more done.

I've not kept up with its development, but its apparently now cross platform
and still under active development. Any amateur interested in Verilog should
definitely give it a look.

[0] [http://iverilog.icarus.com](http://iverilog.icarus.com)

~~~
bsder
We used Icarus Verilog for a class at SDSU specifically so we weren't saddled
with crappy vendor tools.

It even worked on Windows.

And, come on, how can you argue with a coding team who will make you an
honorary "Steve"? (Inside joke: for a while it seemed like _everyone_ who
worked on Icarus Verilog was named "Steve" or some variant--so we started
joking that anyone not named Steve needed to get rechristened with a new
honorary first name.)

~~~
hermitdev
Back when I used Icarus, I dont think it worked on Windows. I'm pretty sure it
was the reason I got a cheap laptop off eBay to install FreeBSD on. This would
have been around 2002-2003. Regardless, it is an awesome tool and certainly
saved me a ton of time. I wish I could comment on its current state, but I
just havent used it since college.

Tangential, working on FreeBSD with Icarus is what caused me to
learn/love/prefer Vim. It was there. It worked, and I learned (some) of it's
quirks.

------
dkozel
This has been the most exciting software work I've seen in the last year.
David is doing fantastic work. If you haven't seen anything about the
development of these tools his talk at FOSDEM in February was quite good.

[https://archive.fosdem.org/2019/schedule/event/trellis_and_n...](https://archive.fosdem.org/2019/schedule/event/trellis_and_nextpnr/)

~~~
acathla
And you can become his patreon to support his fantastic work :
[https://www.patreon.com/fpga_dave](https://www.patreon.com/fpga_dave)

------
lukego
Dave is a hero for the work that he is doing here. I'm really pleased to see
that his Patreon is growing and reaching a non-trivial ("rent") level of
monthly funding. Great job everybody who is supporting him!

~~~
HNLurker2
Yeah it's a big job to tackle (open source software for fpga)

~~~
rvense
But the tools are improving quickly! Because of Dave and the general
community. It's really great to watch (and use!).

------
xvilka
And the repositories[1] themselves. You can also help them with the code - see
the bunch of ideas[2] for the project.

[1] [https://github.com/SymbiFlow](https://github.com/SymbiFlow)

[2]
[https://github.com/SymbiFlow/ideas/issues](https://github.com/SymbiFlow/ideas/issues)

------
gdsdfe
I think the best way to support this kind of effort is to have more people
know what FPGA is and what they can do with it ... So they can use the tools
and tinker with this stuff. So if you're into this space just write more
content : articles, how-to's, videos, tutorials etc.

~~~
ambrop7
Also, more SW programmers should be getting into this field, as by working in
SW first you realize all the things that need improvement in the FPGA world
(which the FPGA people didn't recognize, not knowing how SW is done in the
modern world, or got used to).

------
djhworld
What are people doing with FPGAs? I'd be really interested in understanding or
seeing some cool projects!

~~~
DoingIsLearning
Originally FPGA evolved from programmable logic devices. An EPROM is probably
the most widely used example of a PLD. Partially because of this there are a
lot of projects in SDRAM designs out there.

Usually if you need extremely fast i/o in the nanosecond order of magnitude
then FPGA designs are a common design choice. An example of this are GPON
network switches.

As mentioned in another comment video processing or any signal processing
where the algorithms benefit from high parallelization is also an application
where an FPGA would be a good fit.

The caveat though is that often FPGA/ASIC development is expensive and slow so
a recent trend is to have a System-On-Chip with an FPGA area and multicore
Microcontrollers. The idea with this is a hybrid design so that you can have
an RTOS dealing with functionality where speed is not as critical. And have a
custom design on an FPGA that is responsible for whatever bespoke application
you need and have some memory interface between the two.

~~~
segfaultbuserr
> _An EPROM is probably the most widely used example of a PLD._

Upvote for this. When I used to think about PROM, I think it as a medium of
data storage, or sometimes think it's a lookup table. But it's actually
simplest form of programmable logic device - a device that can transform x-bit
of arbitrary input signals to y-bit of arbitrary output signals, so you can
build any digital system that uses combinational logic in PROM (and RAM for
sequential logic), including a CPU. And since it's a PROM, you can reprogram
it to implement another different logic device, simply by burning a new truth
table.

After I realized this, the existence of reprogrammable hardware like FPGAs no
longer sounds like magic to me anymore. From this, you can also see that
computers with finite RAM and ROM is not a Turing machine, but a Finite State
Machine.

------
mkesper
More info on the patreon page:
[https://www.patreon.com/fpga_dave](https://www.patreon.com/fpga_dave)

------
rough-sea
I wish there was an open source FPGA silicon design.

~~~
sreevisakh
Open source silicon design itself is at its infancy. You may be interested in
this project: [https://libresilicon.com/](https://libresilicon.com/) . It has
a very interesting history. I really hope that someday, this will grow into a
room sized fab - like how 3D printing is progressing today.

