IT researchers working at the University of Twente have developed a programming language making the massive costs associated with designing hardware more manageable. Chip manufacturers have been using the same chip design techniques for twenty years now. The current process calls for extensive testing after each design step - a massively expensive state of affairs. The newly developed, so-called functional programming language makes it possible to prove, in advance, that a design transformation is a hundred per cent error-free.
"While a software developer is able to fix a programming error by developing and distributing a patch, a single flaw in chip design means that all products containing the chip need to be recalled," Christiaan Baaij, doctorate candidate, explains. In 2011, such a design flaw ended up costing Intel a full billion dollars.
"Clearly, the design process of chips to be used in hardware requires extensive and repeated testing. Such testing is expensive, but is at this moment still absolutely necessary. A company like NVidia nowadays incurs over a billion dollars in design expenses annually."
In his doctoral thesis, Baaij describes the world-wide production of microchips through the years. In 1985, Intel launched the 386 processor, which had 275,000 transistors. Now, in 2015, NVidia's very largest chip contains more than 7,000,000,000 transistors. An astonishing production performance: in just thirty years, the transistor count of a chip has ballooned from less than a million to multiple billions. Sadly, design productivity did not keep the same pace. Chip designers have been using the same chip design techniques for twenty years now.
Functional programming language
The researchers developed a modern, so-called functional programming language for hardware design. The use of functional programming languages allows them to formally prove the correctness of design transformations.
These transformations make the chip work faster. The researchers are able to prove that the transformation does not alter the chip's behaviour. This means that, in contrast to traditional methods, it is not necessary to verify and re-verify everything for each step of the design process. In turn, this means that these modern programming languages allow for keeping the complexity - and the cost - of chip design more manageable.
One important element of this research involves the CλaSH compiler, which transforms hardware descriptions as written in the Haskell functional language into a lower-level description. Standard software is then able to create a chip from this description. Baaij's work concerns the development of this compiler, allowing for the automatic generation of the hardware from an abstract description.
Large corporate sector interest
The department has already presented its work to the corporate sector, which is showing a great deal of interest. The Dutch Functional Programming Day, which was held at the University of Twente on 9 January 2015 and was organized by researcher Jan Kuper, was attended both by a sizeable number of scientists and by a great many corporate sector representatives. Collaboration projects have already been started up with Incas³ and the Netherlands Organization for Applied Scientific Research, while the High performance computing center Stuttgart (HLRS) is very interested in the work.
Still, Baaij does notice some reluctance amidst all the interest. "Many companies are none too happy about having to re-train their staff and about having to face other continuity challenges. Functional programming is not part of the standard curriculum. I am becoming more hopeful, though. Apple released its 'Swift' language recently, a functional language for app development. Knowing Apple, they will really start pushing the language in the near future. This hopefully means we will soon have an army of programmers familiar with functional languages, allowing chip manufacturers to also make the switch."
The functional programming language was developed within the Computer Architecture for Embedded Systems (CAES, Professor Gerard Smit) department of the University of Twente's CTIT research institute. Lecturer Jan Kuper, who also serves as a teacher for the UT's Computer Science bachelor's and the Embedded Systems master's programmes, leads the research.
Christiaan Baaij's doctoral research within this department focused on the compiler transforming the Haskell description into a low-level description. Baaij will defend his doctoral thesis, Digital Circuits in CλaSH - Functional Specifications and Type-Directed Synthesis, on 23 January 2015.
The work is partially funded by the European Commission under contract numbers ICT—248465 S(o)OS and ICT—610686 POLCA.