Changelog History
Page 2
-
v0.99.1 Changes
May 12, 2018- Allow
~NAME[N]
tag inside~GENSYM[X]
- ๐ Support HDL record selector generation
#313 <https://github.com/clash-lang/clash-compiler/pull/313>
__ - ๐
InlinePrimitive
support: specify HDL primitives inline with Haskell code - ๐ Support for
ghc-typelits-natnormalise-0.6.1
-
Lift
instances forTopEntity
andPortName
- ๐
InlinePrimitive
support: specify HDL primitives inline with Haskell code
- Allow
-
v0.99 Changes
March 31, 2018- New features:
- Major API overhaul: check the migration guide at the end of
Clash.Tutorial
New features:
- Explicit clock and reset arguments
- Rename
CLaSH
toClash
- Implicit/\
Hidden
clock and reset arguments using a combination ofreflection
andImplicitParams
. - Large overhaul of
TopEntity
annotations - PLL and other clock sources can now be instantiated using regular
functions:
Clash.Intel.ClockGen
andClash.Xilinx.ClockGen
. - DDR registers:
- Generic/ASIC:
Clash.Explicit.DDR
- Intel:
Clash.Intel.DDR
- Xilinx:
Clash.Intel.Xilinx
Bit
is now anewtype
instead of atype
synonym and will be mapped to a HDL scalar instead of an array of one (e.gstd_logic
instead ofstd_logic_vector(0 downto 0)
)Hierarchies with multiple synthesisable boundaries by allowing more than one function in scope to have a
Synthesize
annotation.- Local caching of functions with a
Synthesize
annotation
- Local caching of functions with a
Bit
type is mapped to a HDL scalar type (e.g.std_logic
in VHDL)Improved name preservation
Zero-bit values are filtered out of the generated HDL
Improved compile-time computation
๐ Many bug fixes
Older versions
Check out: * https://github.com/clash-lang/clash-compiler/blob/3649a2962415ea8ca2d6f7f5e673b4c14de26b4f/clash-prelude/CHANGELOG.md * https://github.com/clash-lang/clash-compiler/blob/3649a2962415ea8ca2d6f7f5e673b4c14de26b4f/clash-lib/CHANGELOG.md * https://github.com/clash-lang/clash-compiler/blob/3649a2962415ea8ca2d6f7f5e673b4c14de26b4f/clash-ghc/CHANGELOG.md
-
v0.7.2 Changes
April 25, 2017 -
v0.7.1 Changes
April 11, 2017- ๐ New features:
- Support distribution of primitive templates with Cabal/Hackage packages commit
- Find memory data files and primitive files relative to import dirs (
-i<DIR>
) - Add 'clashi' program and 'clash-ghc' package #208, thanks to @thoughtpolice
- ๐ Fixes bugs:
case (EmptyCase ty) of ty' { ... }
->EmptyCase ty'
#198BitVector.split#
apply the correct type arguments- SystemVerilog: Incorrect unsigned->signed wrap-around and conversion
- SystemVerilog: Use unpacked array syntax in array literals
- SystemVerilog: Add braces when converting unpacked to packed arrays
- SystemVerilog: Fixed
rotateLeftS
systemverilog template - SystemVerilog: Do not generate null-slices
- Verilog: Incorrect unsigned->signed wrap-around and conversion
- VHDL: resize
Integer
multiplication result
- ๐ New features:
-
v0.7 Changes
January 16, 2017- ๐ New features:
CLaSH.XException
: a module defining an exception representing uninitialised values. Additionally adds theShowX
class which has methods that prints values as "X" where they would normally raise anXException
exception.- Add
BNat
(and supporting functions) toCLaSH.Promoted.Nat
: base-2 encoded natural numbers. - Add
divSNat
andlogBaseSNat
toCLaSH.Promoted.Nat
: division and logarithm for singleton natural numbers. - Add
predUNat
andsubUNat
toCLaSH.Promoted.Nat
: predecessor and subtraction for unary-encoded natural numbers. - Add
dtfold
toCLaSH.Sized.Vector
: a dependently-typed tree-fold overVec
. - Add the perfect-depth binary trees module
CLaSH.Sized.RTree
- Synthesisable definitions of
countLeadingZeros
andcountTrailingZeros
for:BitVector
,Signed
,Unsigned
, andFixed
- Add the
(:::)
type alias inCLaSH.NamedTypes
which allows you to annotate types with documentation
- ๐ Changes:
asyncRam
,blockRam
,blockRamFile
have aMaybe (addr,a)
as write input instead of three separateBool
,addr
, anda
inputs.asyncFIFOSynchronizer
has aMaybe a
as write-request instead of a separateBool
anda
inputbundle'
andunbundle'
are removed;bundle
now has typeUnbundled' clk a -> Signal' clk a
,unbundle
now has typeSignal' clk a -> Unbundled' clk a
subSNat
now has the typeSNat (a+b) -> SNat b -> SNat a
(where it used to beSNat a -> SNat b -> SNat (a-b)
)- Renamed
multUNat
tomulUNat
to be in sync withmulSNat
andmulBNat
. - The function argument of
vfold
inCLaSH.Sized.Vector
is now(forall l . SNat l -> a -> Vec l b -> Vec (l + 1) b)
(where it used to be(forall l . a -> Vec l b -> Vec (l + 1) b)
) Cons
constructor ofVec
is no longer visible;(:>)
and(:<)
are now listed as constructors ofVec
- Simulation speed improvements for numeric types
- ๐ New features:
-
v0.6.24 Changes
October 17, 2016 -
v0.6.22 Changes
August 03, 2016- ๐ Fixes bugs:
- Bug in DEC transformation overwrites case-alternatives
- Bug in DEC transformation creates non-representable let-binders
- VHDL: Incorrect primitive for
Integer
sltInteger#
andgeInteger#
- (System)Verilog: Fix primitive for CLaSH.Sized.Internal.Signed.mod# and GHC.Type.Integer.modInteger #164
- ๐ Fixes bugs:
-
v0.6.20 Changes
July 15, 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' > 2MACHINE_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)
- ๐ New features:
-
v0.6.19 Changes
June 09, 2016- ๐ Fixes bugs:
Eq
instance ofVec
sometimes not synthesisable- VHDL: Converting product types to std_logic_vector fails when the
clash-hdlsyn Vivado
flag is enabled
- ๐ Fixes bugs: