york-lava-0.2: A library for digital circuit description.



York Lava is library for describing digital circuits. Descriptions can be simulated in Hugs or GHC, and converted to VHDL compatible with XST, the Xilinx Synthesis Tool. It is largely compatible with Chalmers Lava, but omits some features and offers a few new ones.

New features include:

  • Behavioural description, using Recipe.
  • Easy addition of new primitive components (makeComponent).
  • Primitives components with multiple outputs.
  • New primitive components, including RAMs and dual-port RAMs (ram and dualRam). Can be of any size and width; when synthesised, Xilinx Core Generator (.xco) files are produced.
  • Provides an explicit Netlist data structure, allowing custom backends to be added.
  • Sized vectors (Lava.Vector). For example, bit-vectors (Word) are an instance of the Num class.
  • A Lava.Prelude of commonly-used circuits.
  • Testing via QuickCheck and SmallCheck.
  • Smallish, self-contained code base.

Limitations include:

  • No model-checking backend; Chalmers Lava has many.
  • Long-running simulations consume memory rather quickly! Note however that you can also simulate circuits using the Xilinx simulator, via the VHDL backend.

See REDUCERON MEMO 23 - included in the package and available at http://www.cs.york.ac.uk/fp/reduceron/ - for a tutorial.


module Lava.Bit

module Lava.Vhdl