clash-ghc v1.0.0 Release Notes

Release Date: 2019-09-03 // over 4 years ago
    • 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 <https://clash-lang.org/blog/0005-synthesis-domain/>__ 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

    • ๐Ÿ›  Fixes issues:

    • #316 <https://github.com/clash-lang/clash-compiler/issues/316>__

    • #319 <https://github.com/clash-lang/clash-compiler/issues/319>__

    • #323 <https://github.com/clash-lang/clash-compiler/issues/323>__

    • #324 <https://github.com/clash-lang/clash-compiler/issues/324>__

    • #329 <https://github.com/clash-lang/clash-compiler/issues/329>__

    • #331 <https://github.com/clash-lang/clash-compiler/issues/331>__

    • #332 <https://github.com/clash-lang/clash-compiler/issues/332>__

    • #335 <https://github.com/clash-lang/clash-compiler/issues/335>__

    • #348 <https://github.com/clash-lang/clash-compiler/issues/348>__

    • #349 <https://github.com/clash-lang/clash-compiler/issues/349>__

    • #350 <https://github.com/clash-lang/clash-compiler/issues/350>__

    • #351 <https://github.com/clash-lang/clash-compiler/issues/351>__

    • #352 <https://github.com/clash-lang/clash-compiler/issues/352>__

    • #353 <https://github.com/clash-lang/clash-compiler/issues/353>__

    • #358 <https://github.com/clash-lang/clash-compiler/issues/358>__

    • #359 <https://github.com/clash-lang/clash-compiler/issues/359>__

    • #363 <https://github.com/clash-lang/clash-compiler/issues/363>__

    • #364 <https://github.com/clash-lang/clash-compiler/issues/364>__

    • #365 <https://github.com/clash-lang/clash-compiler/issues/365>__

    • #371 <https://github.com/clash-lang/clash-compiler/issues/371>__

    • #372 <https://github.com/clash-lang/clash-compiler/issues/372>__

    • #373 <https://github.com/clash-lang/clash-compiler/issues/373>__

    • #378 <https://github.com/clash-lang/clash-compiler/issues/378>__

    • #380 <https://github.com/clash-lang/clash-compiler/issues/380>__

    • #381 <https://github.com/clash-lang/clash-compiler/issues/381>__

    • #382 <https://github.com/clash-lang/clash-compiler/issues/382>__

    • #383 <https://github.com/clash-lang/clash-compiler/issues/383>__

    • #387 <https://github.com/clash-lang/clash-compiler/issues/387>__

    • #393 <https://github.com/clash-lang/clash-compiler/issues/393>__

    • #396 <https://github.com/clash-lang/clash-compiler/issues/396>__

    • #398 <https://github.com/clash-lang/clash-compiler/issues/398>__

    • #399 <https://github.com/clash-lang/clash-compiler/issues/399>__

    • #401 <https://github.com/clash-lang/clash-compiler/issues/401>__

    • #403 <https://github.com/clash-lang/clash-compiler/issues/403>__

    • #407 <https://github.com/clash-lang/clash-compiler/issues/407>__

    • #412 <https://github.com/clash-lang/clash-compiler/issues/412>__

    • #413 <https://github.com/clash-lang/clash-compiler/issues/413>__

    • #420 <https://github.com/clash-lang/clash-compiler/issues/420>__

    • #422 <https://github.com/clash-lang/clash-compiler/issues/422>__

    • #423 <https://github.com/clash-lang/clash-compiler/issues/423>__

    • #424 <https://github.com/clash-lang/clash-compiler/issues/424>__

    • #438 <https://github.com/clash-lang/clash-compiler/issues/438>__

    • #450 <https://github.com/clash-lang/clash-compiler/issues/450>__

    • #452 <https://github.com/clash-lang/clash-compiler/issues/452>__

    • #455 <https://github.com/clash-lang/clash-compiler/issues/455>__

    • #460 <https://github.com/clash-lang/clash-compiler/issues/460>__

    • #461 <https://github.com/clash-lang/clash-compiler/issues/461>__

    • #463 <https://github.com/clash-lang/clash-compiler/issues/463>__

    • #468 <https://github.com/clash-lang/clash-compiler/issues/468>__

    • #475 <https://github.com/clash-lang/clash-compiler/issues/475>__

    • #476 <https://github.com/clash-lang/clash-compiler/issues/476>__

    • #500 <https://github.com/clash-lang/clash-compiler/issues/500>__

    • #507 <https://github.com/clash-lang/clash-compiler/issues/507>__

    • #512 <https://github.com/clash-lang/clash-compiler/issues/512>__

    • #516 <https://github.com/clash-lang/clash-compiler/issues/516>__

    • #517 <https://github.com/clash-lang/clash-compiler/issues/517>__

    • #526 <https://github.com/clash-lang/clash-compiler/issues/526>__

    • #556 <https://github.com/clash-lang/clash-compiler/issues/556>__

    • #560 <https://github.com/clash-lang/clash-compiler/issues/560>__

    • #566 <https://github.com/clash-lang/clash-compiler/issues/566>__

    • #567 <https://github.com/clash-lang/clash-compiler/issues/567>__

    • #569 <https://github.com/clash-lang/clash-compiler/issues/569>__

    • #573 <https://github.com/clash-lang/clash-compiler/issues/573>__

    • #575 <https://github.com/clash-lang/clash-compiler/issues/575>__

    • #581 <https://github.com/clash-lang/clash-compiler/issues/581>__

    • #582 <https://github.com/clash-lang/clash-compiler/issues/582>__

    • #586 <https://github.com/clash-lang/clash-compiler/issues/586>__

    • #588 <https://github.com/clash-lang/clash-compiler/issues/588>__

    • #591 <https://github.com/clash-lang/clash-compiler/issues/591>__

    • #596 <https://github.com/clash-lang/clash-compiler/issues/596>__

    • #601 <https://github.com/clash-lang/clash-compiler/issues/601>__

    • #607 <https://github.com/clash-lang/clash-compiler/issues/607>__

    • #629 <https://github.com/clash-lang/clash-compiler/issues/629>__

    • #637 <https://github.com/clash-lang/clash-compiler/issues/637>__

    • #644 <https://github.com/clash-lang/clash-compiler/issues/644>__

    • #647 <https://github.com/clash-lang/clash-compiler/issues/647>__

    • #661 <https://github.com/clash-lang/clash-compiler/issues/661>__

    • #668 <https://github.com/clash-lang/clash-compiler/issues/668>__

    • #677 <https://github.com/clash-lang/clash-compiler/issues/677>__

    • #678 <https://github.com/clash-lang/clash-compiler/issues/678>__

    • #682 <https://github.com/clash-lang/clash-compiler/issues/682>__

    • #691 <https://github.com/clash-lang/clash-compiler/issues/691>__

    • #703 <https://github.com/clash-lang/clash-compiler/issues/703>__

    • #713 <https://github.com/clash-lang/clash-compiler/issues/713>__

    • #715 <https://github.com/clash-lang/clash-compiler/issues/715>__

    • #727 <https://github.com/clash-lang/clash-compiler/issues/727>__

    • #730 <https://github.com/clash-lang/clash-compiler/issues/730>__

    • #736 <https://github.com/clash-lang/clash-compiler/issues/736>__

    • #738 <https://github.com/clash-lang/clash-compiler/issues/738>__