Types and type families for hardware simulation and synthesis: the internals and externals of Kansas Lava

  • Authors:
  • Andy Gill;Tristan Bull;Andrew Farmer;Garrin Kimmell;Ed Komp

  • Affiliations:
  • Information Technology and Telecommunication Center, Department of Electrical Engineering and Computer Science, The University of Kansas, Lawrence, KS;Information Technology and Telecommunication Center, Department of Electrical Engineering and Computer Science, The University of Kansas, Lawrence, KS;Information Technology and Telecommunication Center, Department of Electrical Engineering and Computer Science, The University of Kansas, Lawrence, KS;Information Technology and Telecommunication Center, Department of Electrical Engineering and Computer Science, The University of Kansas, Lawrence, KS;Information Technology and Telecommunication Center, Department of Electrical Engineering and Computer Science, The University of Kansas, Lawrence, KS

  • Venue:
  • TFP'10 Proceedings of the 11th international conference on Trends in functional programming
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

In this paper, we overview the design and implementation of our latest version of Kansas Lava. Driven by needs and experiences of implementing telemetry circuits, we have made a number of recent improvements to both the external API and the internal representations used. We have retained our dual shallow/deep representation of signals in general, but now have a number of externally visible abstractions for combinatorial, sequential, and enabled signals. We introduce these abstractions, as well as our new abstractions for memory and memory updates. Internally, we found the need to represent unknown values inside our circuits, so we made aggressive use of type families to lift our values in a principled and regular way. We discuss this design decision, how it unfortunately complicates the internals of Kansas Lava, and how we mitigate this complexity.