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>
__