Monday, February 23, 2015

Why Open Source Has Not Taken Over EDA


We all know that in the world of general software Open Source has all but won. Linux is everywhere. Nearly all programming languages are Open Source (meaning their compilers/interpreters). IDE's, build tools, revision control, syntax highlighters, refactoring tools, you name it, if it's a development tool it's Open Source. Major infrastructure is Open Source too. I mentioned the Linux operating system, but all the major applications are Open Source too: web servers, databases, queueing systems, messaging systems, load balancing, caching systems, GUI frameworks, encryption, authentication, email servers, instant messaging servers, blog engines, you name it.

In the world of Electronic Design Automation (EDA), Open Source has not won. We do now develop on Linux and we use a lot of ancillary tools from the software world that are Open Source such as scripting languages, text editors, databases, web frameworks, build systems, and so forth, but our core tools are still very much closed source and commercial, namely simulation and synthesis tools.

Why haven't those tools followed the same trend that the general software world has seen? Why don't we have a solid Open Source simulator that every one in the industry rallies around, similar to the way gcc is the defacto standard C compiler? Every time I have posed this question there are a few answers that always come up. One is that our industry is small. There are far more software developers, the argument goes, and so the likelihood of a Linus Torvalds or Richard Stallman like leader emerging is small. Another answer is that we aren't software developers. Our primary skill is designing circuits, not software, therefore we just don't have the skills or drive to write our own tools like software developers have done.

While the logic in those answers seems sound, I don't believe they are the primary reason we still lack quality Open Source tools. There have been hobbyists like Linus and RMS that have started Open Source EDA tool projects that are probably at least as functional and easy to use as early versions of Linux or gcc were, but people just haven't flocked to them. Yes, the number of EDA people that are capable of writing a synthesis tool is small, but how many software developers really have the chops to write operating systems or compilers? Also not very many. There are far more consumers than producers of general Open Source software. I don't believe that's the reason there isn't any successful Open Source EDA tools.

I believe the real reason we don't have Open Source tools is because we haven't had an oppressive monopoly in EDA like Microsoft was in its day. Microsoft was so good at locking people in to their proprietary tools and crushing competition that the only answer was to not play their game. You had two choices, go the Microsoft route or go Open Source. We in the EDA world, on the other hand, actually have a (somewhat) functioning capitalist software economy. There are three (three! not just two like Coke and Pepsi) big EDA companies that sell competing software (these companies are lovingly referred to as, "the big three"). Unlike the days of Microsoft, these companies actually have to listen to their customers[1] and compete on the merits and price of their products[2]. Since we have been able to play the big three against each other and generally get at least the bare minimum of what we need, there hasn't been a strong need for a linux or gcc like project to set us free.

Hooray for capitalism! Yet somehow I'm not satisfied. I am very pro capitalism in general, don't get me wrong. I think my dissatisfaction comes from the fact that I am even more pro freedom, and EDA tools are not Free. They are not Open Source. I'm not free to dig into the code if I desire to. I'm not even free to use the tools as I chose. They are offered under onerous license agreements that don't even allow us to publish performance numbers or talk about their costs publicly[3]. When they don't perform or I encounter bugs, my only recourse is beg for mercy from the vendor or embark on the onerous task of switching vendors (just because it's possible doesn't mean it's easy). If it were open source there would be mailing lists and forums where not just the vendors customer support people participated, but other tool users and the tool developers themselves would be available to collaborate with on solutions.

This would sound like an outrageous and silly utopian dream if it wasn't already working in the software world. It's not just young single dudes living in their parents basement or slumming it in graduate cubicles at MIT anymore either. Red Hat Software is a publicly traded company making 11% profit margin on about $1.8 billion in revenue, which puts it right in among the Big Three. There are plenty of other businesses that make real profits doing various combinations of producing, supporting, and providing services based on Open Source software. It can be done. In fact I'm pretty sure if one of the Big Three even released just their simulator as Open Source they would quickly grab all of the market share for simulators and a whole lot of new customers for their other tools. They would also make the world a much better place for all of EDA.

Footnotes

1. Well, at least their biggest customers.

2. Well, not publicly, because their license agreements don't allow us to publish their tools' merits or prices.

3. See footnote above.

4 comments:

ericsfraga said...

Very interesting set of observations. It is pretty much the same in the process industries: a number of "big" companies dominate the simulation software realm and none provides open source software.

I think it's a case of the size of the community (or various communities, as you allude to).

Bryan said...

Looks like this guy might disagree with me. I think his platform argument is the one that is the most pertinent here:

http://www.forbes.com/sites/danwoods/2015/04/28/will-there-ever-be-another-red-hat/

Jamey Hicks said...


Regarding the point about monopolies: remember that Linux initially only competed against the various Unix flavors. No monopoly there. You had a handful of companies independently developing operating systems that had to be fairly compatible. Pretty soon it was obvious that developing a Unix-like operating system from scratch did not give a competitive advantage. It was just a waste of money. Linux gave a way to share that cost among all the companies that needed it.

Open source succeeds commercially when it enables users of the open source software to reduce the cost for non-differentiating technology. Open source enables those companies to share the cost of development without having to pay out profits to investors.

Dan Wood said "The Open Source model captures less value than the proprietary model". By definition, Open Source does not capture value. How can you charge for it when you're giving it away? Red Hat makes money integrating and supporting collections of open source software packages, not for developing open source software. I agree that it's not the kind of business in which VCs these days would invest. It's more of a service business that requires scaling the workforce with the customer base, which in any case is not that large.

You can see this by looking at who funds Linux development. According to https://www.linux.com/infographic/25-years-linux-kernel-development, 5000 developers from 500 companies have contributed in the last 15 months. Funding for the contributions comes from Intel, independent or unknown, Red Hat, Linaro, Samsung, SUSE, IBM, etc. Intel, Samsung, IBM fund development because their products (CPUs, phones, mainframes) depend on Linux working well on their hardware. I look at Red Hat, Linaro, and SUSE as companies you to whom you outsource feature enhancement and maintenance of open source projects.

The fact that the EDA community is smaller suggests to me that it's even more important to share the cost of developing non-differentiating software, rather than paying for the same thing multiple times.

I keep saying "non-differentiating". I mean technologies that you need but which do not improve your profit margins.

What are the non-differentiating technologies used in chip design? In my opinion,
Verilog simulation, debug. Standards compliant verification tools. Synthesis, probably.
IP cores, especially for older technologies. In many cases CPUs (RISC-V). New HDLs (e.g., Chisel)

I'm sure many people would disagree with items on that list. And in any case, it depends on companies who use the technologies to put open source into use and to fund or contribute to its development.

One more thing that does not get discussed much when comparing open source to proprietary is the way it speeds up work. When you're checking out software and IP and you can find it in a search, download it, and try it out within minutes without having to wait for NDA and license agreement negotiations, it is a game changer.

Bryan said...

Great comment, thank you.