Changelog for clash-ghc-0.99.3
Changelog for the clash-ghc package
0.99.3 July 28th 2018
- Fixes bugs:
- Evaluator recognizes
Bitliterals #329 - Use existential type-variables in context of GADT pattern match
- Do not create zero-bit temporary variables in generated HDL
- Use correct arguments in nested primitives #323
- Zero-constructor data type needs 0 bits #238
- Create empty component when result needs 0 bits
- Evaluator performs BigNat arithmetic
- Evaluator recognizes
0.99.1 May 12th 2018
- Allow
~NAME[N]tag inside~GENSYM[X] - Support HDL record selector generation #313
InlinePrimitivesupport: specify HDL primitives inline with Haskell code
0.99 March 31st 2018
- New features:
- Support for
clash-prelude-0.99:- Explicit clock and reset arguments
- Overhaul of
TopEntityannotations
- Hierarchies with multiple synthesisable boundaries by allowing more than one
function in scope to have a
Synthesizeannotation.- Local caching of functions with a
Synthesizeannotation
- Local caching of functions with a
Bittype is mapped to a HDL scalar type (e.g.std_logicin VHDL)- Improved name preservation
- Zero-bit values are filtered out of the generated HDL
- Improved compile-time computation
- Support for
- Many bug fixes
0.7.2
- New features:
- Sum-of-product types: unused bits now "don't-care" #212
- Fixes bugs:
- Eagerness bug in
regEn#104 (Thanks to @cbiffle)
- Eagerness bug in
0.7.1 April 11th 2017
- New features:
- Fixes bugs:
case (EmptyCase ty) of ty' { ... }->EmptyCase ty'#198BitVector.split#apply the correct type arguments
0.7.0.1 *January 17th 2017
- Fixes bugs:
- Include HsVersions.h in source distribution
0.7 January 16th 2017
- New features:
- Support for
clash-prelude0.11 - Primitive templates can include QSys files
- VHDL blackboxes: support additional libraries and uses keywords in generated VHDL
- Highly limited Float/Double support (literals and
Rationalconversion), hidden behind the-clash-float-supportflag.
- Support for
- Fixes bugs:
0.6.24 *October 17th 20168
- Call generatePrimMap after loadModules #175
- Fixes bugs:
- (System)Verilog: CLaSH.Sized.Vector.imap primitive gets indices in reverse order
- Template Haskell splices are run twice
- CLaSH errors out when observing the constructor for
Signal#174
0.6.23 August 18th 2015
- Fixes bugs:
0.6.22 August 3rd 2016
- Fixes bugs:
- Bug in DEC transformation overwrites case-alternatives
- Bug in DEC transformation creates non-representable let-binders
- VHDL: Incorrect primitive for
IntegersltInteger#andgeInteger# - (System)Verilog: Fix primitive for CLaSH.Sized.Internal.Signed.mod# and GHC.Type.Integer.modInteger #164
0.6.21 July 19th 2016
- Fixes bugs:
- Rounding error in
logBasecalculation - VHDL: Incorrect primitive for
Indexs*# - VHDL: Incorrect handling of
IndexsfromInteger#andmaxBound#primitives for values larger than 2^MACHINE_WIDTH
- Rounding error in
0.6.20 July 15th 2016
- New features:
- Better error location reporting
- Fixes bugs:
CLaSH.Sized.Internal.Unsigned.maxBound#not evaluated at compile-time #155CLaSH.Sized.Internal.Unsigned.minBound#not evaluated at compile-time #157- Values of type Index 'n', where 'n' > 2^MACHINE_WIDTH, incorrectly considered non-synthesisable due to overflow
- VHDL: Types in generated types.vhdl incorrectly sorted
- Casts of CLaSH numeric types result in incorrect VHDL/Verilog (Such casts are now reported as an error)
0.6.19 June 9th 2016
- Fixes bugs:
Eqinstance ofVecsometimes not synthesisable- VHDL: Converting product types to std_logic_vector fails when the
clash-hdlsyn Vivadoflag is enabled
0.6.18 June 7th 2016
- New features:
- DEC transformation also lifts HO-primitives applied to "interesting" primitives (i.e.
zipWith (*)) - New
-clash-hdlsyn Xilinxflag to generate HDL tweaked for Xilinx synthesis tools (both ISE and Vivado)
- DEC transformation also lifts HO-primitives applied to "interesting" primitives (i.e.
- Fixes bugs:
0.6.17 April 7th 2016
- New features:
- Up to 2x reduced compilation times when working with large
Vecliterals
- Up to 2x reduced compilation times when working with large
- Fixes bugs:
0.6.16 March 21st 2016
- New features:
- Also generate testbench for circuits without input ports #135
- Fixes bugs:
clockWizardbroken #49
0.6.15 March 15th 2016
- Fixes bugs:
- XST cannot finds "_types" package unless it is prefixed with "work." #133
0.6.14 March 15th 2016
- Fixes bugs:
- XST cannot finds "_types" package unless it is prefixed with "work." #133
0.6.13 March 14th 2016
- Fixes bugs:
- Not all lambda's in a function position removed
0.6.12 March 14th 2016
- Fixes bugs:
- Not all lambda's in a function position removed due to bad eta-expansion #132
0.6.11 March 11th 2016
- New features:
- Add support for HDL synthesis tool specific HDL generation:
- New
-clash-hdlsyn Vivadoflag to generate HDL tweaked for Xilinx Vivado
- New
- Preserve more Haskell names in generated HDL #128
- Add support for HDL synthesis tool specific HDL generation:
- Fixes bugs:
- VHDL: Vivado fails to infer block ram #127
- Users must use the
-clash-hdlsyn Vivadoflag in order to generate Xilinx Vivado specific HDL for which Vivado can infer block RAM.
- Users must use the
- VHDL: Vivado fails to infer block ram #127
0.6.10 February 10th 2016
- New features:
- hdl files can be written to a directory (set by the
-clash-hdldirflag) other than the current working directory #125. Also respects the-outputdirdirectory, unless:-clash-hdldiris set to a different directory.-hidir,-stubdir, and-dumbdirare not the same directory as-odir
- hdl files can be written to a directory (set by the
- Fixes bugs:
0.6.9 January 29th 2016
-
New features:
- Support for
Debug.Trace.trace, thanks to @ggreif
- Support for
-
Fixes bugs:
0.6.8 January 13th 2016
- New features:
- Support for Haskell's:
Char,Int8,Int16,Int32,Int64,Word,Word8,Word16,Word32,Word64. - Int/Word/Integer bitwidth for generated HDL is configurable using the
-clash-intwidth=Nflag, whereNcan be either 32 or 64.
- Support for Haskell's:
- Fixes bugs:
- Cannot reduce
case error ... of ...toerror ...#109
- Cannot reduce
0.6.7 December 21st 2015
- Support for
unbound-generics-0.3 - New features:
- Only look for 'topEntity' in the root module. #22
- Fixes bugs:
- Unhelpful error message when GHC is not in PATH #104
0.6.6 December 11th 2015
- New features:
- Remove all existing HDL files before generating new ones. This can be disabled by the
-clash-nocleanflag. #96 - Support for
clash-prelude0.10.4
- Remove all existing HDL files before generating new ones. This can be disabled by the
0.6.5 November 17th 2015
- Fixes bugs:
- Integer literals used as arguments not always properly annotated with their type.
- Verilog: Name collision in verilog code #93
- (System)Verilog: Integer literals missing "32'sd" prefix when used in assignments.
- VHDL: Integer literals should only be capped to 32-bit when used in assignments.
- Verilog: HO-primitives incorrect for nested vectors.
0.6.4 November 12th 2015
- Fixes bugs:
0.6.3 October 24th 2015
- New features:
- Improve DEC transformation: consider alternatives before the subject when checking for disjoint expressions.
- Fixes bugs:
- DEC: don't generate single-branch case-expressions #90
0.6.2 October 21st 2015
-
New features:
- Support
clash-prelude0.10.2
- Support
-
Fixes bugs:
0.6.1 October 16th 2015
-
New features:
-
Support for
clash-prelude0.10.1 -
Transformation that lifts applications of the same function out of alternatives of case-statements. e.g.
case x of A -> f 3 y B -> f x x C -> h xis transformed into:
let f_arg0 = case x of {A -> 3; B -> x} f_arg1 = case x of {A -> y; B -> x} f_out = f f_arg0 f_arg1 in case x of A -> f_out B -> f_out C -> h x
-
-
Fixes bugs:
0.6 October 3rd 2015
- New features:
- Support
clash-prelude-0.10 - Pattern matching on
CLaSH.Sized.Vector's:>is now supported - Unroll "definitions" of the following primitives:
fold,dfold,foldr
- Support
0.5.15 September 21st 2015
-
New features:
- Report simulation time in (System)Verilog assert messages
-
Fixes bugs:
- Performance bug: top-level definitions of type "Signal" erroneously inlined.
- Fix Index maxBound #79
0.5.14 September 14th 2015
-
New features:
- Completely unroll "definitions" of some higher-order primitives with non-representable argument or result vectors:
It is now possible to translate e.g.
f xs ys = zipWith ($) (map (+) xs) ys :: Vec 4 Int -> Vec 4 Int -> Vec 4 Int
- Completely unroll "definitions" of some higher-order primitives with non-representable argument or result vectors:
It is now possible to translate e.g.
-
Fixes bugs:
0.5.13 September 8th 2015
- Fixes bugs:
- Cannot translate GHC
MachLabelliteral - Maybe (Index n) not translatable to VHDL #75
- Cannot translate GHC
0.5.12 September 7th 2015
-
New features:
- Modest compilation time speed-up. Compilation time of the I2C module on my machine went down from 43s to 24s, and maximum memory usage went down from 840 MB to 700 MB.
-
Fixes bugs:
0.5.11 August 2nd 2015
- New features:
- Re-enable GHC's strictness analysis pass, which improves dead-code removal, which hopefully leads to smaller circuits.
0.5.10 July 9th 2015
- New features:
- Use new VHDL backend which outputs VHDL-93 instead of VHDL-2002: generated VHDL is now accepted by a larger number of tools.
- Treat all so-called bottom values (
error "FOO",let x = x in x, etc.) occuring in installed libraries asundefined. Before, there were (very) rare situations where we couldn't find the expressions belonging to a function and demanded a BlackBox, even though we knew the expression would be a bottom value. Now, we stop demanding a BlackBox for such a function and simply treat it asundefined, thus allowing a greater range of circuit descriptions that we can compile.
0.5.9 June 26th 2015
-
New features:
- Use new verilog backend which outputs Verilog-2001 instead of Verilog-2005: generated Verilog is now accepted by Altera/Quartus
-
Fixes bugs:
--systemverilogswitch incorrectly generates verilog code instead of systemverilog code
0.5.8 June 25th 2015
- New features:
- Support for copying string literals from Haskell to generated code
- Support
clash-prelude-0.9 - Size at below which functions are always inlined is configurable, run with
-clash-inline-below=Nto set the size limit toN
0.5.7 June 3rd 2015
- New features:
- New Verilog backend, run
:verilogin interactive mode, or--verilogfor batch mode - Generated component names are prefixed by the name of the module containing the
topEntity
- New Verilog backend, run
0.5.6 May 18th 2015
-
New features:
- Inlining limit is configurable, run with
-clash-inline-limit=Nto set the inlining limit toN - Specialisation limit is configurable, run with
clash-spec-limit=Nto set the inline limit toN - Debug level is configurable, run with
-clash-debug <LEVEL>where<LEVEL>can be:DebugNone, DebugFinal, DebugName, DebugApplied, DebugAll. Be default,clashruns withDebugNone.
- Inlining limit is configurable, run with
-
Fixes bugs:
- Extend evaluator for
GHC.Integer.Type.minusIntegerandCLaSH.Promoted.Nat.SNat.
- Extend evaluator for
0.5.5 May 5th 2015
- New features:
TopEntitywrappers are now specified asANNannotation pragmas #42
0.5.4 May 1st 2015
- New features:
- Generate wrappers around
topEntitythat have constant names and types
- Generate wrappers around
0.5.3 April 24th 2015
- Fixes bugs:
- Fix bug where not enough array type definitions were created by the VHDL backend
0.5.2 April 21st 2015
- Use latest ghc-typelits-natnormalise
0.5.1 April 20th 2015
- New features:
- GHC 7.10 support
- Update to clash-prelude 0.7.2
- Use http://hackage.haskell.org/package/ghc-typelits-natnormalise typechecker plugin for better type-level natural number handling
0.5 March 11th 2015
- New features:
- SystemVerilog backend. #45
0.4.1 February 4th 2015
- Include bug fixes from clash-lib 0.4.1
0.4 November 17th 2014
-
New features:
- Support for clash-prelude 0.6
-
Fixes bugs:
- clash-ghc ignores "-package-db" flag #35
0.3.3 August 12th 2014
- Fixes bugs:
- Compile with GHC 7.8.3 #31
0.3.2 June 5th 2014
- Fixes bugs:
0.3.1 May 15th 2014
-
New features:
-
Fixes bugs: