No new verilog this week because I'm still working through tutorials trying to get better and got distracted by some games. Here's their info:
Automated builds and tests are a key way to make sure that new additions to your code base in one spot haven't broken your designs in other spots. And for FPGA designs, where each tweak of the code might be slowly decreasing the likelihood that timing will be met, having nightly history tracking the percentage successful can make it easier to track down the bit of code that drove your clock rate into the mud. It can also be nice to schedule a handful of builds -- I always hope that this last timing failure was a fluke, and if I build 4 more I can see if I pass timing 80% of the time or only 20% of the time.
Most FPGA tools are no good. One of the often presumed reasons for this is that the people using the tools, while writing something that looks like software, aren't really software experts. This feels like a pretty facile argument because the people using photoshop aren't necessarily software experts, nor the people using Audacity to edit audio aren't software experts, yet their software is good. And there's open source versions of all of these tools as well. Which might point to the other reason FPGA software can be so terrible -- because the silicon itself is closed source, it's difficult to reverse engineer it to write open source software to synthesis and place and route to a specific chip. That part of the problem has been solved for one chip family though...
Every time I try to install gtkwave on a Windows machine, i spend hours trying to get it to compile like the main website recommends, then I try to install the binaries the main website links to but that I don't think work, then I eventually find a stack overflow question pointing to the hidden location on source forge where those binaries are. So as a reminder instead, here's where you find the binaries for gtkwave.
And as you'd expect, to get it on linux, just try your local varient of
sudo apt-get install gtkwave
Amazon's developer preview of EC2 instances with FPGAs attached that are user programmable is making everyone very excited. It's still pretty early so a lot of the articles are speculation, though I also see people like Jan Gray starting to try to target their Phalanx processor to run in an FPGA Instance. It also means that all the other competitors in this space (Microsoft's catapult, Intel
What's it take to build a True FPGA as a service
This article from The Next Platform laments that you still have to use VHDL or Verilog to use the Amazon provided tools instead of a openCL or something else more software developer friendly. They congratulate Amazon's partner's take on FPGA acceleration by abstracting away the interface to the real physical hardware. From my point of view, it's a little confusing to say think that you can on the one hand optimize for ultimate performance, but on the other hand abstract away the interface to the thing actually giving you the better performance. It feels like just wishing that CPU clock frequencies would keep increasing instead of having to do all this hard work of parallel programming (in CPU cores, or FPGA processing units). The article does admit later on that the openCL tooling and features "don't provide the same level of performance." It is true that giving up some maximal performance for better usability can be a worthwhile compromise, but seems short-sited to me in a technology that is evolving so often that the abstractions keep melting away while the underlying design strategies still work.
Microsoft's Production Configurable Cloud
A lot of cloud compute details in the presentation that could benefit from hearing the speaker / seeing more text. But as they talk about the history of their internally used FPGA systems, the come up with a solution that has enough benefits that they can start talking about using Hardware as a Service (HaaS), but there's even less details about what's really going on since they aren't yet offering this to customers and only using it internally. It appears that they're re configuring an application portion of their Smart NIC FPGAs, but they only talk about how using this reconfigured application only takes c++ knowledge.
IntelFPGA (the rebranding of Altera) doesn't seem to have anything in particular to announce or show off though there's also still excitement in the air for their CPU and FPGA in the same fabric, especially related to the communication protocols between the two which if low latency enough could help shrink the switching time between an FPGA focussed and CPU focussed compute task.
http://cryptopals.com is a set of 'fun' problems to work through if you're interested in cryptography. This seems like it'd be another set of interesting problems to try in hardware. Too bad I'm so slow...
It'll clearly be a while til I get around to writing about Vivado HLS, but you should read Adam Taylor's great tutorial on Vivado HLS in his microZed Chronicles. In 144 he goes into the low level basics of how to do what where in the Xilinx tool suite for a simple C adder. In 145 he goes into some of the details skimmed over in the previous example. In 146 he discusses diving into using video library IP. More are on the way, so keep an eye out for them. And obviously since he's at number 146, there's a big back log you can go through if you want to get more guidance from Adam.
While FPGAs are what I do, they aren't always the right answer for your problems. In fact, they're still pretty niche so they are rarely the right answer for your problem. Dave Vandenbout advocates that new digital designers focus on microcontrollers, which surprised me some. But, microcontrollers are cheap to buy, don't suck much power, and have become relatively easy to program. All the arduino and raspberry pi tools and add-ons out there show that it's relatively easy to get into. So why go with an FPGA at all then?
Well here's some options then. There's a really good intro to FPGAs for engineers in episode 103 of the Engineering Commons podcast. Dave Vandenbout, who's been doing digital design about as long as digital design has existed talks succinctly about the history of digital design, and what sorts of things someone interested in doing that as a career should look into. He's much more keen on knowing a lot about microcontrollers than I am, but they certainly do have the benefit of being very available for self-education.
To track down the name and episode of that podcast I google searched "FPGA podcast" , and got a lot of other results that a) look good and b) made me wonder why I hadn't ever actually searched that before. So check those out too I guess.
Open Source software is pretty easy to track down on the web, but open source hardware designs are a little trickier. Especially since it's not clear when you say "open source hardware" if you want a board layout, an FPGA design, mechanical drawings, or something else entirely. Let's presume if you're reading this you're interested in the HDL source code of a useful IP component.
As I'm going through trying to figure out the right way to draw diagrams for some of the problems, I keep coming across a ton of different tools in search results, each saying VHDL and Verilog are old and busted, and here's the hot new tool to use instead.