Bringing FPGA Development To The Masses

The Field Programmable Gate Array (FPGA) is one of the most exciting tools in the modern hacker’s arsenal. If you can master the FPGA, you can create hardware devices that not only morph and change based on your current needs, but can power through repetitive tasks at phenomenal rates. The only problem is, working with FPGAs can be a bit intimidating for newbies. One could argue that the technology is waiting on its “Arduino” moment; the introduction of a cheap development board coupled with easy to use software that brings FPGA hacking into the mainstream.

If everything goes according to plan, the wait might soon be over. [Ryan Jacobs] believes his project WebFPGA is the easiest and fastest way to get your hands dirty with this incredible technology. Outwardly the hardware could pass for an Arduino Nano clone, with a bunch of GPIO pins and a couple of LEDs on a small breadboard-friendly PCB. Certainly a no-frills presentation. It’s the software side is where things get interesting: all you need to develop for this FPGA is a modern web browser.

Currently Chrome, Opera, and Edge are supported, even if they’re running on relatively low-end computers. [Ryan] says this makes it much easier and cheaper to roll out FPGA classes in schools, as students can do everything with their existing Chromebooks. As the video after the break shows, you can even get away with using a sufficiently powerful smartphone to do some FPGA hacking on the go.

So what’s the trick? Essentially the heavy-lifting is done remotely: all of the synthesis is performed in their cloud backend, with the final bitstream delivered to the user for installation through WebUSB. If you’re more comfortable on the command line, [Ryan] says they’re currently working on tools which will allow you to perform all the necessary interactions with their cloud service without the browser.

The more critical Hackaday reader will likely be concerned about lock-in. What happens if you buy one of these development boards without a license for the service, or worse, what happens if WebFPGA goes belly-up down the road? To that end, [Ryan] makes it clear that their hardware is completely compatible with existing offline FPGA development tools such as the open source IceStorm.

We’ve seen considerable interest in low-cost FPGA development platforms, with readers perhaps recalling the excitement surrounding the fire sale of the Pano Logic thin clients. Despite efforts to make developing for these systems even easier, it’s hard to imagine the bar getting much lower than what WebFPGA is shooting for. Their Kickstarter campaign is close to crossing the finish line, and we’re very interested to see where the product goes from here.

55 thoughts on “Bringing FPGA Development To The Masses

  1. ” The only problem is, working with FPGAs can be a bit intimidating for newbies. One could argue that the technology is waiting on its “Arduino” moment; the introduction of a cheap development board coupled with easy to use software that brings FPGA hacking into the mainstream.”

    Not so much hardware, as adjusting one’s thinking.

    1. Yeah, it requires a different mindset apart from sequential thinking. The concurrency of FPGAs make them fantastic devices but also challenging for even seasoned software people IMO (to bolster your point).

    2. FPGA projects aren’t low effort copy/paste job. It requires reading specs to understand what’s needed by each of the blocks and might need your own customization or glue logic. The iteration loop of trial and error s much longer, so you want to design up front as much as you can and make sure things would work by doing a lot of simulation with the needed testbench. Debugging is hard as there are no visibility into internal circuit.

      tl;dr Completely opposite to the Arduino mindset.

  2. Am I the only one who is sick to death of “cloud” development environments? If you can’t use it 100% off-grid (no cloud environment, no phone home remote license check) then you don’t really have the capability but merely rent it.

    Plus, for FPGAs it is even more important to control the configuration of the tools (down to logging the random seeds used for any Monte Carlo / nondeterministic algorithm used in the fitting pass, etc.) so a cloud based service that may make changes at any point is a really bad idea. (One would hope they let you select any given version they have ever hosted and log said version information in the projects so opening an old project will by default build it with the exact toolchain and configuration you used before lest you get non-reproducable builds.

    Of course the board is compatible with an offline toolchain, nobody builds a new toolchain just for their cloud service. I feel like this whole “cloud everything” is a just a regression to the bad old days of the mainframe where control of people’s data as well as ownership of the computing resources to process those data were centralized and the resulting power wielded by a select few.

    Back then there were not PCs at the edge; the decentralization and democratization of computing was nothing short of revolutionary. It is sad to see how willing people are to throw all those gains away (and cramming all manner of applications through ghastly browser-based interfaces to boot).

    In other words “Get off my lawn!”

      1. +1
        It’s evil, it’s bad, it’s stupid, it’s proprietary garbage and maybe unreliable. I would not use this. FOSS on my local machine is the good stuff. I don’t care if compiling (or whatever it’s called for FPGA) takes longer than in the “cloud” (and i doubt it would take much longer on a decent computer. Cloud computing has a cost too).

      2. I can see one good reason for having things in the browser, that’s cross platform use, as the likes of firefox and chrome exist for every OS, including mobile and ARM based alongside normal linux and standard windows and mac. But any decent civilised person wishing to produce software like this should ensure that “running in the browser” means user opens a local html file which calls local resources on their hard-drive and executes in the browser from there. This still lets the developer avoid having to produce different binaries for each OS and take advantage of the widespreds of the same browsers, but without the extrememly dangerous and sinister business of making the user reliant on your unreliable/untrustworthy servers and/or their unreliable/untrustworthy ISP (in this context I mean internet service provider, when talking about little devices like this it can mean in-system programming but that latter tends to be something under your own control which is usually reliable and definitely trustworthy).

    1. I think this is also a symptom of the clash between corporate IP policy and the GPL. They probably use some GPL code in their product, don’t want to release a compliant product to the public. So they use the cloud loophole to keep everything proprietary a instead.

    2. I was going to say, I stopped reading when I read “Web”. Even though I’m part of it, I find myself hating the software industry more and more with each passing day. I’m at the point of considering going back to school to escape the stupidity of this industry.

    3. At least in this case they’ve made it clear that the hardware is also directly supportable with the IceStorm toolchain.

      I dislike “cloud IDEs” less when the hardware manufacturer points towards FOSS local alternatives.

    4. I’m the co-author and this is a bit of a rant… but all of this negativity on Hackaday is extremely frustrating and I want to make some clarifications.

      Obviously, there is support for the product or else I wouldn’t have been funded. Trust me, I’m not throwing the cloud at the problem for the sake of it or depriving freedom. The cloud literally makes sense for this use case — there was a computationally and space intensive piece of software that didn’t support all platforms… and now I have the ability to fix that.

      I’m really just trying to broaden the FPGA audience. The minuscule demographic interested in FPGAs is minuscule for a reason. Both the proprietary and FOSS toolchains are painfully cumbersome for people who want to tinker around with FPGAs for the first time — either students or hobbyists. In the same way that the Arduino IDE can hardly compare to Atmel’s official IDE, our Web IDE cannot be held to the same standards as a 25 GB Xilinx/Lattice/Altera install. But for beginners, they’re perfect. They’re quick; they’re easy; they’re welcoming.

      There is an argument against embedded hobbyists picking up an FPGA board. Like you said, they can’t write bulletproof HDL without proper stimulus, simulation, and specific tooling. But the same goes for Arduino code — most companies wouldn’t hire or trust someone who just picked up an Arduino and is writing embedded code for the first time. But that shouldn’t mean that they can’t use it for their personal projects or for the thrill of learning. I know software and HDL is definitely not apples to apples, but you’d be surprised at what people can figure out when they’re given something to work with.

      If my peers who are familiar with Arduinos want to get started with FPGAs… it’s really difficult for them. I can’t tell them to go ahead and install Yosys, Nextpnr, and IceStorm because they literally don’t know how to work a command-line interface, let alone have a working *nix environment set up. And installing Xilinx/Altera/Lattice IDEs is terribly time-consuming and doesn’t work for all operating systems equally — no MacOS support either.

      In the end, this is a product that scales with the user. Do you know iCECube or IceStorm and want to run everything offline? Great! Do that. No clue what an FPGA is but have a curious and willing mind? Great! I’ll show you how to run 30 PWMs at once! — without installing any software. I’m opening doors, not closing them, and I wish people would see that. I really believe that FPGAs and specialized hardware is the most viable way to sidestep Moore’s Law.

    1. Personally, I’m a fan of mid-range courgette computers.

      Black Beauty is a good one. Or if you want something more exotic there’s spherical designs such as Tondo di Piacenza (green), or Golden Griller (yellow).

  3. Completely agree.

    It’s not “get off my lawn” to want to keep control. To make people look “old” is part of marketing, so companies can better push their current business model.

    To take control from you is exactly the point of the cloud, it makes more money, if you are dependent. It’s ironic how MS was criticized for the vendor lock-in strategy, then companies used Linux to do the same in even bigger. The very operating system that was meant to give you fine-grained control and freedom.

    1. “To take control from you is exactly the point of the cloud…”

      Only for those rolling in their victimhood. It’s like saying the point of nails is to poke holes in people. Clouds are tools, and they don’t fit every problem. But when they do, they’re handy.

    1. This! This is what we need more of. Not IDEs and not yet another board with only how to blink and led for instructions. We need more fully laid out tutorials. This is what I would put money towards.

      Any one know of an effort like this in english?

  4. Regarding my previous comment, I was talking about the cloud in general. I still think this is an interesting project, especially since it can be used offline, as well.

  5. I just didn’t need an FPGA yet, and I really prefer the Espressif ecosystem anyway WPA2 protected Wifi is the ultimate feature. If I had to switch I’d probably go for STM and their good PWM. But I’m no expert, just someone who loves fun.

  6. “Currently Chrome, Opera, and Edge are supported”
    “the heavy-lifting is done remotely: all of the synthesis is performed in their cloud backend”

    Are they intentionally trying to scare people away?

  7. The “Arduino moment” also depends on a actual use case many people need. For the Arduino it was various common automation tasks.
    Most use cases were you think you’ll want an fpga, let’s say lots and lots of fast PWM pins can actually be done with say a bunch of stm32f103.
    So only when the level of parallelism becomes so large that this approach becomes impractical the fpga can shine.
    I just can’t think of a task approachable to hobbiests that has this requirement.

  8. eww, cloud server. Hard pass unless there’s a way to use the tools locally. A command-line interface to their cloud server doesn’t cut it. Anything they could make useless by turning off their servers is not going to be used by me.

  9. Let’s be clear that FPGAs aren’t used for the same purposes by everybody; this is not likely to be a unit for implementing a full RISC-V processor, but could certainly replace a bunch of discrete logic, and would do well as (for example) interface logic to Arduino-like MCUs (i.e. FIFO, etc.).

    The web download seems to be just a gimmick, but it *does* let a person do work anywhere or move from computer to computer easily on simpler projects.

    What’s really needed (and probably exists, but isn’t really linked to the popular boards) is a primer on what the tools need. Pin-binding constraint files are an afterthought, sample code works like magic because there are no comments, and so on. An iterative, approach to build something step-by-step (with visible progress) would be a greater benefit for most people than a web-synthesis mechanism.

  10. Like others already said : we do not need more fpga boards without documentation/tutorials.

    What is needed is good documentation, that explains what the fpga can do, for what it can be used, and how the basic things get implemented.

    It´s like saying an AVR has 3 16-bit timers. Very good, but for what they can be used ? What I can do with them ? And with good examples, not just some “to count things”-kind answers ..

  11. FPGA and CPLD’s are a dead end if you’re looking for open development options. There are no open bitstreams and any attempt to reverse-engineer one (and create your own open toolchain) will result in a cease-and-desist letter from the lawyers of Xilinx, Lattice, Intel, etc. China is the only place where this can (and does) happen. FPGA companies and their software tool providers are the worst-of-the worst of silicon valley.

    Languages, like Verilog, VHDL, System C/Verilog, e, etc) are open, but that’s where it stops. You cannot synthesize. All tooling/software is proprietary. FPGA’s are/were a great idea but the closed silicon-valley software model kills open-source dead.

      1. Elliot, you’ve got to be joking. https://github.com/FPGAwars/apio#supported-boards
        An open source toolchain that works with only ONE Lattice chip? iCE40 and what what else? And since 11/2016? That’s simply not significant enough or going anywhere. But I’m caught up. Thanks.

        All of Altera, Xilinx, and the other Lattice chips that are commonly used everywhere else leave a lot of work to do. At the rate the project is going, we can estimate completion around the year 2525, perhaps.

        I’ll even thrown in one for you to speed up the effort:
        https://github.com/JohnDMcMaster/project2064
        https://github.com/shirriff/xc2064
        It’s still work in progress ;-)

        OK, that’s all of two…. Nothing’s changed. Reverse engineer the bitstream and get handed a C&D.

        1. No joke. And the Lattice UP5K family is also supported now under Icestorm. Lattice ECP5 support is new as of last year. If you haven’t checked those out, they’re significantly beefier than the ice40s. If a free and powerful flow matters to you, you have some decent choices right now.

          Ken and John’s work is great, but they’re aiming at keeping historical chips viable.

          Still, you’re nowhere near caught up yet. The cutting edge right now is work on the Artix 7. https://symbiflow.github.io/#xray

          If you’re interested in hacking, hit up the symbiflow folks. It’s not prime-time yet, but they’ll be done with Artix 7 before 2025, much less 2525.

          They are working entirely cleanroom, and haven’t received a cease-and-desist, contrary to your assertions. Can you show me the case where a C&D has been issued?

        2. Anyway, if you had come here saying “Altera and Xilinx are aggressively opposed to open source and use their monopolies over their respective toolchains to lock engineers in” I would have completely agreed with you.

          However, you came in with “nobody’s doing anything and nothing can be done” which is a) defeatist and b) wrong.

          1. Hmm. OK then, yes, somebody did something. But really.. One ICE40 Chip? An Artix7 before 2025?? The result is the same, and it’s reality. Nothing can be reasonably done and will not (except in China). There are too many legal and technical barriers. Yes, IceStorm is a good effort (like fpgatools, desist, and all the other open attempts that came before it), but FPGA’s are as closed as closed can be, and whatever (very slow) efforts made to crack them open will be met with the most serious opposition to the point of not being worth the effort at all. You’re better off making your own competitor silicon with free tools and languages, etc to support it and dump the ancient FPGA / HDL / RTL mindset altogether. Someone (likely in China) will indeed do this, for sure by 2025. I’m just sayin, you’re (IceStorm folk or anyone else) going to hit roadblock after roadblock and not get anywhere. But carry on if you must, and let’s see how it all ends up. Defeatist, yes. And we’ll do a progress check in 2025 about right and wrong.

        3. Have there been any performance benchmarks showing side by side of various design with vendor vs open source tool chains? i.e. resource utilization, max frequency, power, place & route time?

          No clear benefits for the end users who want real life results. It is a hardware platform, not a political platform.

          The vendor have an interest in not allowing for reverse engineering bitstream – keeping trade secret designs IP safe. That’s why there are encryption options. Haven’t looked at Lattice as they are seen as CPLD vendor going into small scale FPGA.

    1. “There are no open bitstreams and any attempt to reverse-engineer one (and create your own open toolchain) will result in a cease-and-desist letter from the lawyers of Xilinx, Lattice, Intel, etc. China is the only place where this can (and does) happen. FPGA companies and their software tool providers are the worst-of-the worst of silicon valley.”

      Someone obviously did not bother at all to read the entire article (which references IceStorm) nor have they bothered to read any past HaD article discussing the IceStorm toolchain.

      1. IceStorm supporting only one chip is the tiny exception to the HUGE rule of everything else not being open. Not to diminish the idea, but there’s a monumental effort needed to support anything mainstream. Heck, just pick the two most popular selling cheap FPGA’s on ebay and try to reverse engineer those. Isn’t going to happen.

  12. Quoted from https://www.kickstarter.com/projects/ryanmjacobs/webfpga-rapid-fpga-development-system/posts/2558341,

    “All backers will receive a lifetime membership to our site. We already have the necessary on-premise server capacity to support our backers — we are not renting cloud servers. There are (and will probably always will be) many comments naysaying the web framework. You. Don’t. Have. To. Use. It. You can use Lattice’s free iCECube IDE or the IceStorm flow.

    Feel free to back the project just for the hardware. It’s quality hardware that is reasonably priced. $29 for a US-developed and supported FPGA board is a steal. And it has an on-board RGB LED.

    That being said, I don’t want to detract from our Web IDE. I have extreme faith in it’s ability and use case. It’s perfect for beginners and intermediate users. The fact that you can pick up an FPGA board and start programming it in less than a minute still blows my mind. I really believe we are breaking new ground here.

    If we ever stop hosting our backend, we will open source our server code. Additionally, I plan on creating a self-hosted FOSS IceStorm server flow for people to run if they so desire. Our flashing utility is already open-source and published.”

  13. Bought into that fantasy which says that your all your efforts at the keyboard makes you a hardware designer, have you?

    The root word of FPGA is gate . An FPGA is hardware–an ARRAY of GATES. The only difference between a Gate Array and an FPGA is that a gate array must be mask-programmed at the semiconductor foundry–and that the gate array is much cheaper (but must be purchased in quantities of at least 10K-50K, minimum).
    The only good designers of FPGA-based systems are people who have a solid background and training in designing digital systems comprised of gates and flip-flops.
    If you can not design a synchronous digital system using gates and flip-flops, there is no amount of software which will magically turn you into a hardware designer.
    Don’t believe it? Try applying for a job as designer of gate arrays (it’s a hardware design job, folks), when your only qualifications are writing software. Unless you’re a masochist, don’t waste your time. Or theirs.

  14. It reminds me papilio duo board which embedded a Spartan Xilinix FPGA and an Arduino.everything was configurable/programmable using Arduino like environment and it was compatible with all Arduino hat

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.