Types and associated type families for hardware simulation and synthesis

Autor: Ed Komp, Andrew Farmer, Tristan Bull, Garrin Kimmell, Andy Gill
Rok vydání: 2012
Předmět:
Zdroj: Higher-Order and Symbolic Computation. 25:255-274
ISSN: 1573-0557
1388-3690
DOI: 10.1007/s10990-013-9098-7
Popis: In this article we overview the design and implementation of the second generation of Kansas Lava. Driven by the needs and experiences of implementing telemetry decoders and other circuits, we have made a number of 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 and sequential circuits, and enabled signals. We introduce these abstractions, as well as our abstractions for reading and writing memory. Internally, we found the need to represent unknown values inside our circuits, so we made aggressive use of associated type families to lift our values to allow unknowns, 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. Finally, when connecting Kansas Lava to the real world, the standardized idiom of using named input and output ports is provided by Kansas Lava using a new monad, called Fabric. We present the design of this Fabric monad, and illustrate its use in a small but complete example.
Databáze: OpenAIRE