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 |
Externí odkaz: |