From 6a56da651eb98272f70f3d3b7355221c790f6576 Mon Sep 17 00:00:00 2001 From: Christiaan Baaij Date: Mon, 25 Jan 2010 14:20:14 +0100 Subject: [PATCH] Started on introduction, which required additional references --- "c\316\273ash.bib" | 42 +++++++++++++++++++++++++++++++++++++++++ "c\316\273ash.tex" | 47 +++++++++++++++++++++++----------------------- 2 files changed, 66 insertions(+), 23 deletions(-) diff --git "a/c\316\273ash.bib" "b/c\316\273ash.bib" index 4b9471a..cc2b292 100644 --- "a/c\316\273ash.bib" +++ "b/c\316\273ash.bib" @@ -31,6 +31,16 @@ timestamp = {2010.01.20} } +@INPROCEEDINGS{Cardelli1981, + author = {Luca Cardelli and Gordon Plotkin}, + title = {{An Algebraic Approach to VLSI Design}}, + booktitle = {{Proceedings of the VLSI 81 International Conference}}, + year = {1981}, + pages = {173-182}, + owner = {darchon}, + timestamp = {2010.01.25} +} + @INPROCEEDINGS{Hawk2, author = {Byron Cook and John Launchbury and John Matthews}, title = {{Specifying superscalar microprocessors in Hawk}}, @@ -54,6 +64,22 @@ timestamp = {2010.01.21} } +@INPROCEEDINGS{DAISY, + author = {Johnson, Steven D.}, + title = {Applicative programming and digital design}, + booktitle = {POPL '84: Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on + Principles of programming languages}, + year = {1984}, + pages = {218--227}, + address = {New York, NY, USA}, + publisher = {ACM}, + doi = {http://doi.acm.org/10.1145/800017.800533}, + isbn = {0-89791-125-3}, + location = {Salt Lake City, Utah, United States}, + owner = {darchon}, + timestamp = {2010.01.25} +} + @INPROCEEDINGS{Ruby, author = {Jones, G. and Sheeran, M.}, title = {{Circuit Design in Ruby}}, @@ -151,6 +177,22 @@ timestamp = {2010.01.20} } +@INPROCEEDINGS{FHDL, + author = {Meshkinpour, F. and Ercegovac, M. D.}, + title = {A functional language for description and design of digital systems: + sequential constructs}, + booktitle = {DAC '85: Proceedings of the 22nd ACM/IEEE Design Automation Conference}, + year = {1985}, + pages = {238--244}, + address = {New York, NY, USA}, + publisher = {ACM}, + doi = {http://doi.acm.org/10.1145/317825.317865}, + isbn = {0-8186-0635-5}, + location = {Las Vegas, Nevada, United States}, + owner = {darchon}, + timestamp = {2010.01.25} +} + @INPROCEEDINGS{Hydra, author = {John O'Donnell}, title = {{From Transistors to Computer Architecture: Teaching Functional Circuit diff --git "a/c\316\273ash.tex" "b/c\316\273ash.tex" index 4c64208..6b50f7d 100644 --- "a/c\316\273ash.tex" +++ "b/c\316\273ash.tex" @@ -103,7 +103,7 @@ % *** CITATION PACKAGES *** % -%\usepackage{cite} +\usepackage{cite} % cite.sty was written by Donald Arseneau % V1.6 and later of IEEEtran pre-defines the format of the cite.sty package % \cite{} output to follow that of IEEE. Loading the cite package will @@ -360,28 +360,27 @@ % % paper title % can use linebreaks \\ within to get better formatting as desired -\title{Bare Demo of IEEEtran.cls for Conferences} +\title{Haskell as a Structural\\ Hardware Description Language} % author names and affiliations % use a multiple column layout for up to three different % affiliations -\author{\IEEEauthorblockN{Michael Shell} -\IEEEauthorblockA{School of Electrical and\\Computer Engineering\\ -Georgia Institute of Technology\\ -Atlanta, Georgia 30332--0250\\ -Email: http://www.michaelshell.org/contact.html} -\and -\IEEEauthorblockN{Homer Simpson} -\IEEEauthorblockA{Twentieth Century Fox\\ -Springfield, USA\\ -Email: homer@thesimpsons.com} -\and -\IEEEauthorblockN{James Kirk\\ and Montgomery Scott} -\IEEEauthorblockA{Starfleet Academy\\ -San Francisco, California 96678-2391\\ -Telephone: (800) 555--1212\\ -Fax: (888) 555--1212}} +\author{\IEEEauthorblockN{Christiaan P.R. Baaij, Matthijs Kooijman, Jan Kuper, Marco E.T. Gerards, Bert Molenkamp, Sabih H. Gerez} +\IEEEauthorblockA{University of Twente, Department of EEMCS\\ +P.O. Box 217, 7500 AE, Enschede, The Netherlands\\ +c.p.r.baaij@utwente.nl, matthijs@stdin.nl}} +% \and +% \IEEEauthorblockN{Homer Simpson} +% \IEEEauthorblockA{Twentieth Century Fox\\ +% Springfield, USA\\ +% Email: homer@thesimpsons.com} +% \and +% \IEEEauthorblockN{James Kirk\\ and Montgomery Scott} +% \IEEEauthorblockA{Starfleet Academy\\ +% San Francisco, California 96678-2391\\ +% Telephone: (800) 555--1212\\ +% Fax: (888) 555--1212}} % conference papers do not typically use \thanks and this command % is locked out in conference mode. If really needed, such as for @@ -445,10 +444,8 @@ The abstract goes here. \IEEEpeerreviewmaketitle - \section{Introduction} - -foo\par bar % Won't compile without at least two paragraphs. +Hardware description languages has allowed the productivity of hardware engineers to keep pace with the development of chip technology. Standard Hardware description languages, like VHDL and Verilog, allowed an engineer to describe circuits using a programming language. These standard languages are very good at describing detailed hardware properties such as timing behavior, but are generally cumbersome in expressing higher-level abstraction. These languages also tend to have a complex syntax and a lack of formal semantics. To overcome these complexities, and raise the abstraction level, a great number of approaches based on functional languages has been proposed \cite{T-Ruby,Hydra,HML2,Hawk1,Lava,ForSyDe1,Wired,reFLect}. The idea of using functional languages started in the early 1980s \cite{Cardelli1981,muFP,DAISY,FHDL}, a time which also saw the birth of the currently popular hardware description languages such as VHDL. \section{Hardware description in Haskell} @@ -711,14 +708,18 @@ foo\par bar % Won't compile without at least two paragraphs. foo\par bar \section{Related work} -Many functional hardware description languages have been developed over the years. Early work includes such languages as $\mu$FP~\cite{muFP}, an extension of Backus' FP language to synchronous streams, designed particularly for describing and reasoning about regular circuits. The Ruby~\cite{Ruby} language uses relations, instead of functions, to describe circuits, and has a particular focus on layout. HML~\cite{HML1} is a hardware modeling language based on the strict functional language ML, and has support for polymorphic types and higher-order functions. Published work suggests that there is no direct simulation support for HML, and that the translation to VHDL is only partial. +Many functional hardware description languages have been developed over the years. Early work includes such languages as $\mu$FP~\cite{muFP}, an extension of Backus' FP language to synchronous streams, designed particularly for describing and reasoning about regular circuits. The Ruby~\cite{Ruby} language uses relations, instead of functions, to describe circuits, and has a particular focus on layout. HML~\cite{HML2} is a hardware modeling language based on the strict functional language ML, and has support for polymorphic types and higher-order functions. Published work suggests that there is no direct simulation support for HML, and that the translation to VHDL is only partial. -Like this work, many functional hardware description languages have some sort of foundation in the functional programming language Haskell. Hawk~\cite{Hawk2} uses Haskell to describe system-level executable specifications used to model the behavior of superscalar microprocessors. Hawk specifications can be simulated, but there seems to be no support for automated circuit synthesis. The ForSyDe~\cite{ForSyDe} system uses Haskell to specify abstract system models, which can (manually) be transformed into an implementation model using semantic preserving transformations. ForSyDe has several simulation and synthesis backends, though synthesis is restricted to the synchronous subset of the ForSyDe language. +Like this work, many functional hardware description languages have some sort of foundation in the functional programming language Haskell. Hawk~\cite{Hawk1} uses Haskell to describe system-level executable specifications used to model the behavior of superscalar microprocessors. Hawk specifications can be simulated, but there seems to be no support for automated circuit synthesis. The ForSyDe~\cite{ForSyDe2} system uses Haskell to specify abstract system models, which can (manually) be transformed into an implementation model using semantic preserving transformations. ForSyDe has several simulation and synthesis backends, though synthesis is restricted to the synchronous subset of the ForSyDe language. Lava~\cite{Lava} is a hardware description language that focuses on the structural representation of hardware. Besides support for simulation and circuit synthesis, Lava descriptions can be interfaced with formal method tools for formal verification. Lava descriptions are actually circuit generators when viewed from a synthesis viewpoint, in that the language elements of Haskell, such as choice, can be used to guide the circuit generation. If a developer wants to insert a choice element inside an actual circuit he will have to specify this explicitly as a component. In this respect C$\lambda$aSH differs from Lava, in that all the choice elements, such as case-statements and patter matching, are synthesized to choice elements in the eventual circuit. As such, richer control structures can both be specified and synthesized in C$\lambda$aSH compared to any of the languages mentioned in this section. The merits of polymorphic typing, combined with higher-order functions, are now also recognized in the `main-stream' hardware description languages, exemplified by the new VHDL 2008 standard~\cite{VHDL2008}. VHDL-2008 has support to specify types as generics, thus allowing a developer to describe polymorphic components. Note that those types still require an explicit generic map, whereas type-inference and type-specialization are implicit in C$\lambda$aSH. +Wired~\cite{Wired},, T-Ruby~\cite{T-Ruby}, Hydra~\cite{Hydra}. + +A functional language designed specifically for hardware design is $re{\mathit{FL}}^{ect}$~\cite{reFLect}, which draws experience from earlier language called FL~\cite{FL} to la + % An example of a floating figure using the graphicx package. % Note that \label must occur AFTER (or within) \caption. % For figures, \caption should occur after the \includegraphics. -- 2.30.2