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 (
- Primitives components with multiple outputs.
- New primitive components, including RAMs and dual-port RAMs
dualRam). Can be of any size and width; when synthesised, Xilinx Core Generator (.xco) files are produced.
- Provides an explicit
Netlistdata 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.
- 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.
REDUCERON MEMO 23 - included in the package and available at
http://www.cs.york.ac.uk/fp/reduceron/ - for a tutorial.