Communications of the ACM
Introduction to VLSI Systems
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
LUSTRE: a declarative language for real-time programming
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Systems semantics: principles, applications, and implementation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Representational and Denotational Semantics of Digital Systems
IEEE Transactions on Computers
Formal specification and verification of hardware: a comparative case study
DAC '88 Proceedings of the 25th ACM/IEEE Design Automation Conference
A functional language for description and design of digital systems: sequential constructs
DAC '85 Proceedings of the 22nd ACM/IEEE Design Automation Conference
Functional Design Using Behavioural and Structural Components
FMCAD '02 Proceedings of the 4th International Conference on Formal Methods in Computer-Aided Design
A Statically Allocated Parallel Functional Language
ICALP '00 Proceedings of the 27th International Colloquium on Automata, Languages and Programming
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
A Higher-Level Language for Hardware Synthesis
CHARME '01 Proceedings of the 11th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods
Hardware Synthesis Using SAFL and Application to Processor Design
CHARME '01 Proceedings of the 11th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods
A Multi-Level Transformation Approach to HW/SW Codesign: A Case Study
CODES '96 Proceedings of the 4th International Workshop on Hardware/Software Co-Design
Parallel algorithms development for programmable logic devices
Advances in Engineering Software
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
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
Parallel algorithms development for programmable devices with application from cryptography
International Journal of Parallel Programming
Automatic Formal Synthesis of Hardware from Higher Order Logic
Electronic Notes in Theoretical Computer Science (ENTCS)
IFL'09 Proceedings of the 21st international conference on Implementation and application of functional languages
A calculus for hardware description*
Journal of Functional Programming
Deriving an efficient FPGA implementation of a low density parity check forward error corrector
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
TFP'10 Proceedings of the 11th international conference on Trends in functional programming
Obsidian: a domain specific embedded language for parallel programming of graphics processors
IFL'08 Proceedings of the 20th international conference on Implementation and application of functional languages
Coquet: a coq library for verifying hardware
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
Handshaking in kansas lava using patch logic
PADL'12 Proceedings of the 14th international conference on Practical Aspects of Declarative Languages
Describing and optimising reversible logic using a functional language
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
Hardware design with generalized arrows
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
Synchronous digital circuits as functional programs
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
In this paper, we present a VLSI design language &mgr;FP, which is a variant of Backus' FP [Backus 78, 81]. &mgr;FP differs from conventional VLSI design languages in that it can describe both the semantics (or behaviour) of a circuit and its layout (or floorplan) [Sheeran 83]. We chose to base our design language on FP for several reasons. Functional programs are easier to write and to reason about than imperative ones. We hope to bring some of these benefits to IC design. FP, in particular, is designed to allow the programmer to reason about his or her programs by manipulating the programs themselves. Likewise, in &mgr;FP, programs (or circuit descriptions) are just expressions “made” from a small number of primitive functions and combining forms (functionals that map functions into functions). These functions and combining forms (CFs) were chosen because they have nice algebraic properties. Thus, circuit descriptions are concise and can be easily manipulated using the algebraic laws of the language. Also, each CF has a simple geometric interpretation, so that every &mgr;FP expression has an associated floorplan. This interpretation exists because &mgr;FP expressions represent functions rather than objects, allowing us to associate a function with each section of the floorplan. Most VLSI design languages are designed either for layout description or for behavioural specification. &mgr;FP, with its dual interpretation, allows the designer to consider the effect on the final layout of a particular design decision or to manipulate the layout while keeping the semantics constant. In the following sections, we show how &mgr;FP is constructed from FP by the addition of a single combining form &mgr;, which encapsulates a very simple notion of “state”.