We finally realized that if we wanted our language, C~, to be widely adopted, the best way was to make the compiler open-source. I've been talking about disruptive innovation since I began writing this blog, and we created a disruptive technology, but we did not disrupt EDA's business model... until now.
Selling closed source software supporting a proprietary language (or worse, supporting a standard language in a proprietary way) is a thing of the past. Even Microsoft open sourced its compiler. Unless you're Apple of course; and even so, they are considering making their new language, Swift, open source.
I could list here all the advantages of open source, and especially in the context of compilers. We all know the pifalls of specifications and "implementation-dependent" behavior; having an open-source compiler makes it the de facto standard. But in our case it is more than that. The most perfect example I can think of is when Cadence sued Berkeley Design Automation (BDA). Cadence sued BDA basically because they had made a piece of software interoperable with Cadence's tool without having asked their consent. Huh!? And this is just one example of the kind of maneuvers that are going on daily in EDA. It's definitely more than time to change that!
What did we open source?
On June 13, 2014 we split our existing product ngDesign in two products: ngDesign (free and open source), and ngDesignPro (ngDesign + proprietary extensions). ngDesign is 100% open source, and is composed of the C~ compiler and IDE, and the VHDL code generator. For the moment, the only proprietary extension in ngDesignPro is the Verilog code generator.
The reason is that when targeting FPGAs, the target language is not really important, so VHDL or Verilog do not make much difference. From what we've seen, VHDL is actually favored for FPGA design, and in some cases required (e.g. aeronautics). And for ASIC design, Verilog is pretty much mandatory, so that gives big companies designing ASICs an incentive to use the "pro" version. We hope to extend ngDesignPro with tools that are only useful for ASIC design, like formal verification etc.
What is the status of the code?
Hmm it's in the middle of two releases, so it's basically broken. We invite you to follow our Github repository if you want to watch us work to fix the compiler and VHDL code generator!
After that, we'll try to follow the roadmap, with a focus on adding new synchronization types and making the language more expressive with dependency injection and task-oriented programming. The idea is that you will require a task, and call directly that task's methods, and the compiler will generate all connections and boilerplate code (writes and reads) that you currently have to write by hand...
We'll keep you posted!