Arithmetic circuits are some of the most common circuits, yet building generators for these circuits is usually both ad-hoc and error-prone. Often, generator designers do not directly use Register Transfer Languages, but instead use scripting languages (e.g., Perl) to generate RTL and overcome the limited expressivity of typical RTL languages. We present a new approach to generator construction, where the design language is natural and expressive, and designers are provided with special facilities to alleviate typical sources of errors. This builds on previous work, where designers write an incomplete design (a sketch) and provide a functional reference; a complete, correct design is then synthesized. Notably, we address scalability problems in the general case with an approach tailored specifically for arithmetic generators: satisfying values for the uncertainties inserted in the designs are discovered incrementally as the generator parameters grow the size of the generated circuits. This approach results in significantly reduced solution times, sometimes up to 25 times faster than the naı”ve strategy.
[1]
John Wawrzynek,et al.
Chisel: Constructing hardware in a Scala embedded language
,
2012,
DAC Design Automation Conference 2012.
[2]
Armando Solar-Lezama,et al.
Program synthesis by sketching
,
2008
.
[3]
Harold S. Stone,et al.
A Parallel Algorithm for the Efficient Solution of a General Class of Recurrence Equations
,
1973,
IEEE Transactions on Computers.
[4]
Ivo Bolsens,et al.
Proceedings of the conference on Design, Automation & Test in Europe
,
2000
.
[5]
H. T. Kung,et al.
A Regular Layout for Parallel Adders
,
1982,
IEEE Transactions on Computers.
[6]
David Novo,et al.
SKETCHILOG: Sketching combinational circuits
,
2014,
2014 Design, Automation & Test in Europe Conference & Exhibition (DATE).
[7]
Kenneth B. Kent,et al.
Odin II - An Open-Source Verilog HDL Synthesis Tool for CAD Research
,
2010,
2010 18th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines.