ML for the working programmer (2nd ed.)
ML for the working programmer (2nd ed.)
Lava: hardware design in Haskell
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Synthesis and Optimization of Digital Circuits
Synthesis and Optimization of Digital Circuits
The Definition of Standard ML
A Statically Allocated Parallel Functional Language
ICALP '00 Proceedings of the 27th International Colloquium on Automata, Languages and Programming
Fast DES Implementation for FPGAs and Its Application to a Universal Key-Search Machine
SAC '98 Proceedings of the Selected Areas in Cryptography
Hardware/Software Co-Design Using Functional Languages
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
The Design and Verification of a Sorter Core
CHARME '01 Proceedings of the 11th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods
Generating Netlists from Executable Circuit Specifications
Proceedings of the 1992 Glasgow Workshop on Functional Programming
Monads for Functional Programming
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Observable Sharing for Functional Circuit Description
ASIAN '99 Proceedings of the 5th Asian Computing Science Conference on Advances in Computing Science
SAS '01 Proceedings of the 8th International Symposium on Static Analysis
muFP, a language for VLSI design
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Microprocessor Specification in Hawk
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
Designing combinational circuits with list homomorphisms
Journal of Computational Methods in Sciences and Engineering - Selected papers from the International Conference on Computer Science,Software Engineering, Information Technology, e-Business, and Applications, 2003
Type-safe observable sharing in Haskell
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Hi-index | 0.01 |
In previous work we have demonstrated how the functional language SAFL can be used as a behavioural hardware description language. Other work (such as 碌FP and Lava) has demonstrated that functional languages are apposite for structural hardware description.One of the strengths of systems such as VHDL and Verilog is their ability to mix structural- and behavioural-level primitives in a single specification. Motivated by this observation, we describe a unified framework in which a stratified functional language is used to specify hardware across different levels of abstraction: Lava-style structural expansion is used to generate acyclic combinatorial circuits; these combinatorial fragments are composed at the SAFL-level. We demonstrate the utility of this programming paradigm by means of a realistic case-study. Our tools have been used to specify, simulate and synthesise a DES encryption/ decryption circuit. Area-time performance figures are presented.Finally, we show how similar integration techniques can be used to embed languages such as Magma/Lava into industrial HDLs such as Verilog and VHDL. Our methodology offers significant advantages over the "Perlscript" technique so commonly employed in practice.