High level hardware description languages offer design ease with some size overhead
Low-level optimizations in high-level HDLs: Is there a benefit?
Hardware Architecture
Summary
This paper looks into whether using simpler, high-level programming languages to design computer chips leads to bigger chip sizes compared to using detailed low-level coding tricks. The authors built a small chip component in many ways using a functional programming language for hardware called Clash, and also compared it to a traditional language called Verilog. They found that using Clash’s advanced programming features doesn’t make chips much bigger, which means you can design efficiently at a high level. However, Clash designs still tend to be larger than highly optimized Verilog designs, showing there’s some unavoidable size cost.
What this means in practice
- •For hardware engineers: Use high-level HDL features to speed up design without greatly increasing chip size for certain circuit components.
- •For functional programmers designing hardware: Employ functional HDLs like Clash to write clear hardware code while managing area overhead compared to low-level languages.
Authors
Oliver Keszocze, Tjark Petersen, Arved Friedemann, Matthias Bo Stuart
Abstract
This paper explores the applicability of functional programming to the design of Application-specific Integrated Circuits (ASICs). We investigate the impact of designing ASICs using high-level, abstract Hardware Description Language (HDL) features versus employing low-level optimizations on the area of the synthesized circuits. The aim is to determine whether using low-level optimizations is beneficial and, if so, whether it is worth the added implementation effort. To carry out the investigation, we implement an unsigned bit-serial multiply-accumulate (MAC) unit in 16 different configurations using the functional HDL Clash. We make use of both low-level bit-manipulation techniques as well as Clash's high-level constructs for circuit design. The experimental evaluation shows that some high-level constructs of Clash have negligible influence on the resulting circuit size, suggesting that using the full power of functional programming is a viable approach to hardware design. To evaluate the impact of the used HDL itself, we also implemented versions of the MAC in Verilog. The experiments clearly show that there seems to be an inherent overhead in using Clash compared to Verilog code written by a seasoned engineer.