When hardware designers hear about a new language their heart sinks. We already have Verilog, SystemVerilog and VHDL. And if you go up a level, we have C, C++ and SystemC. Isn’t that enough? However, if you tell a software engineer about a new language they are interested, there are hundreds of programming language and hundreds of thousands of “little languages” that a particular piece of software reads and executes. In SoC design, it turns out that moving up a level from RTL generally does not mean going to one of the C-like languages but doing IP assembly instead.
But there is a paradigm shift going on in design, especially for FPGA but in ASIC too. When the era of schematic-based design came to an end to be replaced with RTL Synthesis, by and large it was not the guys who had used schematics all their lives who suddenly learned RTL. They had enough of a problem with their schematics on a screen rather than paper. Instead, new young Turks who had learned Verilog in school drove the transition. In the same way, software engineers want to be able to design chips with all the hardware stuff taken care of by the tools. In fact this is a trend. Whereas in the past hardware guys didn’t try and write embedded software, and embedded software guys didn’t do hardware, increasingly there are engineers that do both hardware and software design. A survey by EEtimes a couple of years ago shows the figures clearly.
But there is a big problem, the languages the hardware guys use are no good for software engineers. The RTL level languages are too close to the hardware. The C level languages either are not inherently concurrent or get concurrency by unwieldy libraries. They are just unnatural from anyone outside the EDA microcosm. Neither RTL nor C/C++ are really acceptable to a software engineer compared to creating a new language.
Synflow is a company based in France that has done just that. They have created a language Cx targeted at bringing hardware design within reach of any software developer.
The goals of the language are:
- C-like syntax and structures
- Cycle-accurate behavior
- Strong bit-accurate typing
- Fast learning curve
- Design and verification
Of course a language on its own is not much use. It needs a development environment and, for code that is ultimately going to be implemented in hardware, the code generation (RTL generation) needs to be really first rate. Ease of use is never a substitute for optimal design. The development environment, ngDesign, contains a lot of technology:
- Cx editor
- FSM view and design view
- Git version control system
- Project manager
- Sanity checkers
- Clock domain crossing (CDC) checkers
- HDL code-generators
- Simulator
The various sanity checks, such as CDC checking or unconnected port checking, are done on the fly as the code is created. The output HDL is truly portable and can be used with any tool flow (EDA or FPGA). It is vendor-neutral, readable VHDL and Verilog that honors the usual coding style rules. What does the language look like? Well, you can’t tell much about a language by just looking at it rather than using it, but like this:
Recently Synflow put some information about Cx up on Hacker News (if you are not a software engineer you have probably never heard of it, but it is run by Y-combinator that you probably have heard of). The hits on their website went up by a couple of orders of magnitude from a handful a day to hundreds. As I said earlier, software engineers are open to a new powerful language in a way that hardware design engineers are not. They know that learning a new language is trivial and if it helps them get a job done better than another language then that is the way to go.
So is anybody using it? They have users in all parts of the world: USA, Europe, Canada, Japan, China. They are doing all sorts of designs, both control and datapath oriented, and getting results comparable from hand-crafted RTL.
Here is a comment from an engineer at one of the biggest semiconductor companies who has been evaluating Cx:I am a strong believer in constrained language definition over the use of general
purpose languages with target libraries.
The tools are are available for evaluation from the company’s website and are now shipping to paying customers.
Synflow’s website is here.
Also Read: CDN is Live in Silicon Valley!
Share this post via:
Build a 100% Python-based Design environment for Large SoC Designs