10 years going
10 year anniversary release!
- 10x - 50x faster compile times
- New features:
- API changes: check the migration guide at the end of
Clash.Tutorial
- All memory elements now have an (implicit) enable line; "Gated" clocks have
been removed as the clock wasn't actually gated, but implemented as an
enable line. - Circuit domains are now configurable in:
-
(old) The clock period
-
(new) Clock edge on which memory elements latch their inputs
(rising edge or falling edge) -
(new) Whether the reset port of a memory element is level sensitive
(asynchronous reset) or edge sensitive (synchronous reset) -
(new) Whether the reset port of a memory element is active-high or
active-low (negated reset) -
(new) Whether memory element power on in a configurable/defined state
(common on FPGAs) or in an undefined state (ASICs) -
See the blog post on this new feature
-
- Data types can now be given custom bit-representations: http://hackage.haskell.org/package/clash-prelude/docs/Clash-Annotations-BitRepresentation.html
- Annotate expressions with attributes that persist in the generated HDL,
e.g. synthesis directives: http://hackage.haskell.org/package/clash-prelude/docs/Clash-Annotations-SynthesisAttributes.html - Control (System)Verilog module instance, and VHDL entity instantiation names
in generated code: http://hackage.haskell.org/package/clash-prelude/docs/Clash-Magic.html - Much improved infrastructure for handling of unknown values: defined spine,
but unknown leafs: http://hackage.haskell.org/package/clash-prelude/docs/Clash-XException.html#t:NFDataX - Experimental: Multiple hidden clocks. Can be enabled by compiling
clash-prelude
with-fmultiple-hidden
- Experimental: Limited GADT support (pattern matching on vectors, or custom
GADTs as longs as their usage can be statically removed; no support of
recursive GADTs) - Experimental: Use regular Haskell functions to generate HDL black boxes for
primitives (in an addition to existing string templates for HDL black boxes)
See for example: http://hackage.haskell.org/package/clash-lib/docs/Clash-Primitives-Intel-ClockGen.html
- API changes: check the migration guide at the end of