Haskell to VHDL/Verilog/SystemVerilog compiler
OTHER License
Bot releases are hidden (Show)
Published by martijnbastiaan over 4 years ago
Bugfix release
Changed:
Added:
--vhdl
, --verilog
, or --systemverilog
NFDataX (Signal domain a)
Fixed:
caseCon
doesn't apply type-substitution correctly #1340
inlineCleanup
, introducing free variables #1337
iterate
and iterateI
can now be used in reset values #1240
Published by martijnbastiaan over 4 years ago
Bug fix release
Changed:
Signed 0
, Unsigned 0
, Index 1
, BitVector 0
as unit. In effect this means that 'minBound' and 'maxBound' return 0, whereas previously they might crash #1183
deepseqX
is now right-associativeAdded:
Clash.Sized.Vector.unfoldr
and Clash.Sized.Vector.unfoldrI
to construct vectors from a seed valueData.Monoid.{First,Last}
Fixed:
fromBNat (toBNat d5)
failed due to unsafeCoerce
coercing from Any
-fclash-hdlsyn Vivado
) generates illegal VHDL #1264
Published by martijnbastiaan over 4 years ago
As promised when releasing 1.0, we've tried our best to keep the API stable. We
think most designs will continue to compile with this new version, although special
care needs to be taken when using:
..inline blackboxes. Instead of taking a single HDL, inline primitives now
take multiple. For example, InlinePrimitive VHDL ".."
must now be written
as InlinePrimitive [VHDL] ".."
.
..the Enum
instance for BitVector
, Index
, Signed
, or Unsigned
, as
they now respect their maxBound
. See #1089.
On top of that, we've added a number of new features:
makeTopEntity
: Template Haskell function for generating TopEntity annotations. See the documentation on Haddock for more information.
Clash.Explicit.SimIO
: ((System)Verilog only) I/O actions that can be translated to HDL I/O. See the documentation on Haddock for more information.
Clash.Class.AutoReg
: A smart register that improves the chances of synthesis tools inferring clock-gated registers. See the documentation on Haddock for more information.
View all the changes in the CHANGELOG. Happy hacking!
Published by martijnbastiaan about 5 years ago
Bug fix release
Fixes issues:
BitVector 1
Small fixes without issue reports:
Published by christiaanb about 5 years ago
10 year anniversary release!
Clash.Tutorial
(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
clash-prelude
with -fmultiple-hidden
Published by christiaanb over 7 years ago
case (EmptyCase ty) of ty' { ... }
-> EmptyCase ty'
#198
BitVector.split#
apply the correct type argumentsrotateLeftS
systemverilog templateInteger
multiplication resultPublished by christiaanb almost 8 years ago
CLaSH.XException
: a module defining an exception representing uninitialised values. Additionally adds the ShowX
class which has methods that prints values as "X" where they would normally raise an XException
exception.BNat
(and supporting functions) to CLaSH.Promoted.Nat
: base-2 encoded natural numbers.divSNat
and logBaseSNat
to CLaSH.Promoted.Nat
: division and logarithm for singleton natural numbers.predUNat
and subUNat
to CLaSH.Promoted.Nat
: predecessor and subtraction for unary-encoded natural numbers.dtfold
to CLaSH.Sized.Vector
: a dependently-typed tree-fold over Vec
.CLaSH.Sized.RTree
countLeadingZeros
and countTrailingZeros
for: BitVector
, Signed
, Unsigned
, and Fixed
(:::)
type alias in CLaSH.NamedTypes
which allows you to annotate types with documentationasyncRam
, blockRam
, blockRamFile
have a Maybe (addr,a)
as write input instead of three separate Bool
, addr
, and a
inputs.asyncFIFOSynchronizer
has a Maybe a
as write-request instead of a separate Bool
and a
inputbundle'
and unbundle'
are removed; bundle
now has type Unbundled' clk a -> Signal' clk a
, unbundle
now has type Signal' clk a -> Unbundled' clk a
subSNat
now has the type SNat (a+b) -> SNat b -> SNat a
(where it used to be SNat a -> SNat b -> SNat (a-b)
)multUNat
to mulUNat
to be in sync with mulSNat
and mulBNat
.vfold
in CLaSH.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 of Vec
is no longer visible; (:>)
and (:<)
are now listed as constructors of Vec
Published by christiaanb about 8 years ago
Published by christiaanb about 8 years ago
Integer
s ltInteger#
and geInteger#
Published by christiaanb over 8 years ago
CLaSH.Sized.Internal.Unsigned.maxBound#
not evaluated at compile-time #155
CLaSH.Sized.Internal.Unsigned.minBound#
not evaluated at compile-time #157
Published by christiaanb over 8 years ago
Eq
instance of Vec
sometimes not synthesisableclash-hdlsyn Vivado
flag is enabledPublished by christiaanb over 8 years ago
zipWith (*)
)-clash-hdlsyn Xilinx
flag to generate HDL tweaked for Xilinx synthesis tools (both ISE and Vivado)Published by christiaanb over 8 years ago
Vec
literalsBitVector
s quot#
and rem#
Published by christiaanb over 8 years ago
Published by christiaanb over 8 years ago
-clash-hdlsyn Vivado
flag to generate HDL tweaked for Xilinx Vivado-clash-hdlsyn Vivado
flag in order to generate Xilinx Vivado specific HDL for which Vivado can infer block RAM.