FPGA tooling is stuck in the dark ages. FPGA pipelines are windows-only, the development environment UIs look like a toddler was given access to VB6, and the licensing is crazy.
Lattice semiconductor will give a free licence for iceCube2 to a resident of the USA in less then 24 hours but will deliberate for weeks over giving one to someone in Australia (so you should just lie and say you live at the white house, that's what I did after three weeks of no response to my licence request).
Xilinx's free licence for ISE states that by using the free licence you agree to let ISE upload all your FPGA code to them and they get to use it for whatever they want. It actually states directly in the licence that if you don't like that you should install the software and then airgap the computer from the internet forever. Cheeky as hell in my opinion. I installed mine on a virtualbox machine and then removed the virtual network card.
The reality is, FPGA manufacture and tooling is stuck where 3d printing was a decade ago, but for slightly different reasons. Designing and manufacturing FPGAs is pretty high investment which is a major barrier to entry for competitors (the same way patents was for 3d printers). Since FPGAs are desirable for many high end tech companies, it's more profitable for Lattice/Xilinx/et al to charge a small number of companies a squillion dollars for high end development boards and commercial software licences than it is for them to lower the barriers of entry and sell to a wider audience.
I'd put a lot of support behind an open hardware FPGA design, even if it was rather shitty in performance, cost and/or features to the current top of the line FPGAs.
That being said, both Xilinx and Intel/Altera have both supported Linux for years, and the free versions of their software basically support all of their chips that don't cost several hundred dollars per chip. The licensing and such is pretty awful if you're a purist about these things, but they are giving you a fully fledged hardware design suite.
I think the main issue is that using FPGAs is actually doing hardware design, and most people don't want to do hardware design, they want an automagical way to make their software go faster. FPGAs are a great way to implement digital logic without having to incur the huge capital costs of taping out a chip, not a magical 'go faster' device for a random algorithm.
I've used it. It's at the "technically doesn't not work" stage. I take my hat off to them for the work already done, but it's night and day between icestorm and, say, arduino studio.
In fairness to them, they are fighting an uphill battle reverse engineering the chip, but as much respect as I have for their work, I don't believe there's a long term open source option in there. At some point Lattice will stop making the Ice40 FPGA line. When we reach that point, the icestorm team will have to reverse engineer a new chip, which is pretty close to starting from scratch.
Besides, I'd argue the biggest problem isn't even reversing the chips, but it's recreating all the useful middleware outside of the chip that will take a long time (e.g. ChipScope alternatives, interactive floorplanners, etc). A lot of this isn't even vendor-specific work, it's just a huge effort. On top of the effort of already writing synthesizers and routing descriptions for VTR...
If your pain point is a lack of a good IDE, then this isn't something any other suite of FPGA vendor tooling will fix. They all have terrible UX. And in my opinion, that responsibility lies in tooling around your text editor, anyway. It's going to happen sooner or later, as the difficult problem of linting and analysing RTL is already solved in the F/OSS world (Verilator). I've also seen some effort on Twitter of building an IDE around Yosys.
Yosys/Arachne/Icestorm are lacking in features compared to vendor suites (timing driven PnR, floorplanning, ...), but none of them really should be required for beginners. And the fact that the entire suite is cross platform and installable from a package manager more than makes up for those deficiencies for simple projects. All in all, the pipeline for running the fully open toolchain is still much less complex than today's average frontend project.
(disclaimer: working with authors of yosys&Icestorm, but speaking for myself)
What did you try and when, why does It not not technically work? I haven't tried myself, but i've seen a few little videos of people synthesising and running little things on the ice40 using all open source toolchain. One of them was a little open source CPU. I could understand "technically works but not practical for many things", but not work at all?
Half the time FPGA's come up, people ask "which FPGA can I get that has an integrated ARM core". So I suspect you may be on the money.
Never heard such ridiculous claim, that ISE with WebTalk enabled sends every piece of code back to Xilinx. And I was intern at Xilinx! You can always seem in WebTalk report what is leaving your computer. You also proposed usable solution for avoiding WebTalk.
The problem is that FPGAs will stay niche product and never became mainstream. What will you do as a hobbyist with some Ultrascale+ device? What can’t you do with 50$ SoC that you can do with FPGA in same price range? SDR is cool, for everything else development cycles are just too long or complex peripherals are needed. How many hobbyists can properly route 64 bit wide DDR3 interface?
Among other things...
Timing-accurate reproduction of vintage platforms, for maximum compatibility with original software and peripherals [1] [2] [3] [4]. Modern full-power desktop processors can do some of the earlier/slower ones, but virtually no SoC-type chips, even the ones in flagship smartphones, have the performance to keep up. The software architecture is like splitting the difference between an HDL simulator and a traditional computer/console emulator, so you can probably guess how slow it is.
Conversely, modern peripherals compatible with the original hardware ([5] [6]) can also benefit a great deal from FPGA, since many modern capabilities and densities are only available in chips with more complex interfaces than the flat system bus typically used by old-school expansion slots/ports. Because the host interfaces are parallel (and often directly driven by the timing of reads/writes on the system bus rather than dedicated handshake signals), the required timing is hard to consistently achieve by bit-banging the bus with any kind of microcontroller or SoC (the PRUs in a Sitara might be able to keep up with the raw interface, but are very limited in how much data they can fetch that fast).
[1] http://kevtris.org/Projects/console/index.html
[2] https://github.com/MiSTer-devel/Main_MiSTer/wiki
[3] http://www.fpgaarcade.com/core-status/
Well then buddy, jesus christ, email your former colleagues and get them to reword the installer for ISE. That's absolutely how it reads. I didn't make that shit up out of thin air, that's how I interpreted the license agreement on the ISE installer.
If the latter they're terrible at it and it's painfully obvious that the culture of the shop is not software-centric.
[edit] the hobbyist argument doesn't hold water. Software and normal computer manufacturers made the exact same argument in the 70's (why would anyone ever need a computer at home?).
If Xilinx opensourced their toolchain - or much better - OpenSourced their protocols, my bet is their chip sale volume would at least double in a year. In particular because folks would choose their H/W to avoid vendor lock-in.
My bet is they're so ashamed of the pile of spaghetti code they're peddling to their customer that they just can't OpenSource it for fear of losing face and reputation for ever.
LOL no. Everyone knows how this particular sausage is made. It's obvious we are talking of an organically growing decades old codebase. It won't surprise anyone.
To be more on topic, ever since I learned of the PicoEVB a few months ago, I am just giddy of the possibilities, it's amazing we finally got a mobile and PCIe connected FPGA. I wasn't even looking for one because I haven't thought it possible. We truly live in the future.
I've no idea what the code looks like but it's clear whatever code was there for ISE was replaced by a ground up rewrite when Vivado came along.
Open sourcing fpga tools won't make them better. Look at any of the gEDA offerings. Compare free verilog simulators like icarus with commercial ones like VCS - even the system verilog standard that was first released in 2005 is still not supported in icarus. If open source woukd work for EDA then why is there such a chasm here?
Benchmarks and business are won on speed and density (how much I can fit on a given part, and how fast it runs).
I can't think of many software projects that had active business competitors (taking sales away from them) that went open source.
I don't think code quality has anything to do with it.
But does anyone really use the GUI? I was always under the impression nobody, including Xilinx, really cared about the GUI because most commercial projects probably did things headless, invoking the toolchain directly. In other words, it wasn't really meant to be a full time development environment like an IDE.
Basically: synth_design; place_design; route_design; write_bitstream
What could be more straight forward and transparent than that?
Linux is fully supported on all tools from Xilinx (and I'm sure altera). Vivado is an amazing tool, and has a very intuitive UI, with great design visualizations and cross-pobing, ip-integrator, etc (ISE was replaced by it years ago, it more fits the VB6 style you referred to)
There are advanced tools like SDK for embedded SW development, HLS for auto C to RTL convrsion, and SDx for automatic HW/SW offload (SDx basically drives Vivado, HLS and SDK under the hood). The FPGA world has moved past the ASIC design world in terms of tool usability, and I speak from the experience of using both toolsets almost daily.
Take a look at the latest offerings, I think you'll be pleasantly surprised
It's worth noting that for learning/basic experimentation there's lots of even cheaper chinesium stuff available on ebay:
https://www.ebay.com/sch/i.html?_from=R40&_nkw=FPGA+board&_s...
[edit]: For those who want to try, while back I bought a couple of low-end boards from an ebay vendor called qmtech and very happy with them.
Odd, the list was put together by Joel...?
EDIT: Manual browsing missed XC7Z007S in the list, which is indeed targetable by WebPACK. List of dev boards is lengthy, but the principle takeaway is not to presume that a cheap dev board is targetable by a vendor's free development suite.
[1] https://www.xilinx.com/products/design-tools/vivado/vivado-w...
[1] I took a class on machining and realized I could pick up a copy of Solidworks for $50 in the bookstore.
It also shows up as an option when I create a new project in my installed copy.
However, the principle nevertheless stands and it would behoove anyone interested in tinkering with one of these boards to verify that the architecture is indeed targetable by its respective free tool offering.
A list like this should only include things that are in stock to ship when you order.
Just compare it with Beaglebone or Raspberry Pi dev tools. They are much better for any DIY home-automation or replica projects.
You are right about underlying architecture and synthesis engines being closed source, but that does not necessarily make a tool bad. There is a strong drive to have the tools confirm to industry standard interfaces for sharing of designs and IP now (IPXact, SDC-constraints, Oopen-CL/Open-CV, etc).
FPGAs are more difficult to use than Rpi / Beaglebone, but that's because HW design is very different. They can be used to run SW only stacks (e.g. linux), but that's somewhat missing the point as FPGAs are all about programmable hardware - creating custom accelerators, doing things you simply cannot do efficiently in SW. So low-frequency things like home basic automation might not be a good fit as that can be done in SW only.
The compile times are still in the order of hours, and there's no guarantee that you won't get to the end of your compile and find out either it didn't work, or it did something that you couldn't possibly have meant to happen. You don't know what went wrong because you've got a 27MB log file 97% of which is 'WARNING's.
Edit: I'm not sure that Lattice still sells these minimal development boards.
For compute heavy applications, GPU's usually offer more performance per watt and performance per $, especially if your application requires lots of add/subtract/multiply/floating point operations.
For large scale designs, low end ASIC's are surprisingly cheap (Starting from $10k), and by far beat an FPGA on perf per watt, and per $ with enough volume.
"I have a big state machine I need to run" is usually misleading. Usually your state machine isn't big enough to require an FPGA, and just converting it to a bunch of switch statements on a microcontroller will do the job just fine.
Microcontrollers usually get close to FPGA's on the "super accurate timing" front too - there are lots that can bit bang things into the hundreds of Mhz range with fancy serialization hardware.
A microcontroller is more flexible than a FPGA, but it lacks the ability to parallelize (as many) tasks as an FPGA. Hardware interrupts on a uC are definitely not free and can impact performance from the overhead associated with processing the interrupt, where an FPGA can process any interrupt for "free" without impacting the performance of any parallel module. Real time apps can be implemented on uC's and DSP's, but may not be able to meet them depending on the time constraints on your system.
FPGA's and GPU's were never meant to compete. GPU's will destroy an FPGA on any parallel data processing task, but that data needs to first be populated onto the GPU. A GPU's bottleneck is (usually) never it's processing speed, but it's data population (RAM) bandwidth. A GPU will never have direct access to hardware, where as an FPGA does. The overall speed of a GPU exceeds that of an FPGA for specialized parallel processing, but the latency of a GPU is larger.
The point is that FPGA's are specialized, and so are other co-processors/hardware. They should be used only when it makes sense to use them, and more ad-hoc or flexible solutions are not viable.
Yeah, I have no idea about FPGAs except that I once did a project that was reading data from one over SPI. I always thought the dev/hobbyist boards were much more expensive than that list says. But if you can get away with $150... and if the needed software doesn't cost $15000... I'd like to try :)
Interestingly I didn't see the Ultra96 board listed - http://zedboard.org/product/ultra96 - This is the next-gen Zynq, which has A53's plus a load more features, plus it part of the 96boards initiative. I had a chance to play with one briefly and was very impressed. It also can run the PYNQ environment, which combines the power of the FPGA with Python very seamlessly - so gives the possibility of custom built HW offload/processing and interfacing directly in python.
Ideally I'd love one with gigabit ethernet and a multicore arm that slots into a pcie slot and doesn't cost the earth but I'm probably dreaming...
I highly recommend against learning any of these with a complex board like the Zynq, and instead getting a simple iCE40-based FPGA and starting from blinking a few LEDs and writing an UART peripheral.