Abstract
Functional programming techniques have been used to describe synchronous digital circuits since the early 1980s. Here we survey the systems and formal underpinnings that constitute this tradition. We situate these techniques with respect to other formal methods for hardware design and discuss the work yet to be done.
- Abbott, M., Altenkirch, T., and Ghani, N. 2005. Containers: Constructing strictly positive types. Theor. Comput. Sci. 342, 1, 3--27. Google ScholarDigital Library
- Abel, A. 2010. MiniAgda: Integrating sized and dependent types. In Proceedings of the Workshop on Partiality and Recursion in Interactive Theorem Provers (PAR'10), A. Bove, E. Komendantskaya, and M. Niqui, Eds. EPTCS, vol. 43, 14--28.Google ScholarCross Ref
- André, C. and Peraldi-Frati, M.-A. 2000. Behavioral specification of a circuit using SyncCharts: A case study. In Proceedings of the 26th EUROMICRO 2000 Conference, Informatics: Inventing the Future (EUROMICRO'00). IEEE Computer Society, Washington, DC, 1091.Google ScholarCross Ref
- Arvind and Nikhil, R. S. 2008. Hands-on introduction to Bluespec System Verilog (BSV) (abstract). In Proceedings of 6th ACM/IEEE International Conference on Formal Methods and Models for Co-Design (MEMOCODE'08). IEEE Computer Society, Washington, DC, 205--206.Google Scholar
- Axelsson, E. 2003. Description and Analysis of Multipliers Using Lava. M.S. thesis, Chalmers University of Technology.Google Scholar
- Axelsson, E., Claessen, K., and Sheeran, M. 2005. Wired: Wire-aware circuit design. In Proceedings of the 13th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods (CHARME'05), D. Borrione and W. J. Paul, Eds. LNCS, vol. 3725. Springer, Berlin, 5--19. Google ScholarDigital Library
- Axelsson, E., Claessen, K., Sheeran, M., Svenningsson, J., Engdal, D., and Persson, A. 2010. The design and implementation of Feldspar - an embedded language for digital signal processing. In Selected Papers from the 22nd International Symposium on Implementation and Application of Functional Languages (IFL'10), J. Hage and M. T. Morazán, Eds. LNCS, vol. 6647. Springer, Berlin, 121--136. Google ScholarDigital Library
- Backus, J. W. 1978. Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Commun. ACM 21, 8, 613--641. Google ScholarDigital Library
- Barthe, G., Frade, M. J., Giménez, E., Pinto, L., and Uustalu, T. 2004. Type-based termination of recursive definitions. Math. Struct. Comput. Sci. 14, 1, 97--141. Google ScholarDigital Library
- Benveniste, A., Caspi, P., Edwards, S. A., Halbwachs, N., Le Guernic, P., and de Simone, R. 2003. The synchronous languages 12 years later. Proc. IEEE 91, 1, 64--83.Google ScholarCross Ref
- Berry, G. 1989. Real time programming: Special purpose or general purpose languages? In Proceedings of the IFIP 11th World Computer Congress (Information Processing'89), G. Ritter, Ed. North-Holland/IFIP, Amsterdam, 11--17.Google Scholar
- Berry, G. 1999. The Esterel v5 language primer. Draft book.Google Scholar
- Bertot, Y. and Komendantskaya, E. 2008. Using structural recursion for corecursion. In Revised Selected Papers from the International Conference on Types for Proofs and Programs (TYPES'08), S. Berardi, F. Damiani, and U. de'Liguoro, Eds. LNCS, vol. 5497. Springer, Berlin, 220--236. Google ScholarDigital Library
- Bird, R. S. 1987. An introduction to the theory of lists. In Logic of Programming and Calculi of Discrete Design, M. Broy, Ed. Springer, Berlin, 3--42. Google ScholarDigital Library
- Bjesse, P., Claessen, K., Sheeran, M., and Singh, S. 1998. Lava: Hardware design in Haskell. In Proceedings of the 3rd ACM SIGPLAN International Conference on Functional Programming (ICFP'98). ACM, New York. Google ScholarDigital Library
- Bose, B. and Johnson, S. D. 1993. DDD-FM9001: Derivation of a verified microprocessor. In Proceedings of the IFIP WG 10.5 Advanced Research Working Conference Correct Hardware Design and Verification Methods (CHARME'93), G. J. Milne and L. Pierre, Eds. LNCS, vol. 683. Springer, Berlin, 191--202. Google ScholarDigital Library
- Boulton, R. J., Gordon, A. D., Gordon, M. J. C., Harrison, J., Herbert, J., and Van Tassel, J. 1992. Experience with embedding hardware description languages in HOL. In Proceedings of the IFIP TC10/WG 10.2 International Conference on Theorem Provers in Circuit Design: Theory, Practice and Experience (TPCD'92), V. Stavridou, T. F. Melham, and R. T. Boute, Eds. IFIP Transactions, vol. A-10. North-Holland, Amsterdam, 129--156. Google ScholarDigital Library
- Bourdoncle, F. and Merz, S. 1997. Type-checking higher-order polymorphic multi-methods. In Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'97), P. Lee, F. Henglein, and N. D. Jones, Eds. ACM, New York, 302--315. Google ScholarDigital Library
- Braibant, T. 2011. Coquet: A Coq library for verifying hardware. In Proceedings of the 1st International Conference on Certified Programs and Proofs (CPP'11), J.-P. Jouannaud and Z. Shao, Eds. LNCS, vol. 7086. Springer, Berlin, 330--345. Google ScholarDigital Library
- Brookes, S. D. 1993. Historical introduction to “Concrete Domains” by G. Kahn and G. D. Plotkin. Theor. Comput. Sci. 121, 1--2, 179--186. Google ScholarDigital Library
- Brooks Jr., F. P. 1995. The Mythical Man-Month—Essays on Software Engineering, 2nd ed. Addison-Wesley, Reading, MA. Google ScholarDigital Library
- Browning, S. and Weaver, P. 2010. Designing tunable, verifiable cryptographic hardware using Cryptol. In Design and Verification of Microprocessor Systems for High-Assurance Applications, D. S. Hardin, Ed. Springer, Berlin.Google Scholar
- Broy, M. and Stølen, K. 2001. Specification and Development of Interactive Systems: FOCUS on Streams, Interfaces, and Refinement. Monographs in Computer Science. Springer, Berlin. Google ScholarDigital Library
- Brzozowski, J. A. and Seger, C.-J. 1995. Asynchronous Circuits. Springer, Berlin.Google Scholar
- Burch, J. R., Dill, D. L., Wolf, E., and De Micheli, G. 1993. Modeling hierarchical combinational circuits. In Proceedings of the 1993 IEEE/ACM International Conference on Computer-Aided Design (ICCAD'93), M. R. Lightner and J. A. G. Jess, Eds. IEEE Computer Society, Washington, DC, 612--617. Google ScholarDigital Library
- Burstall, R. M. and Darlington, J. 1977. A transformation system for developing recursive programs. J. ACM 24, 1, 44--67. Google ScholarDigital Library
- Camilleri, A., Gordon, M., and Melham, T. 1986. Hardware verification using higher-order logic. Tech. rep. 91, Computer Laboratory, University of Cambridge.Google Scholar
- Cardelli, L. 1982. An Algebraic Approach to Hardware Description and Verification. Ph.D. thesis, University of Edinburgh.Google Scholar
- Cardelli, L. and Plotkin, G. D. 1981. An algebraic approach to VLSI design. In VLSI, J. P. Gray, Ed. Academic Press, New York.Google Scholar
- Cardoso, J. M. P., Diniz, P. C., and Weinhardt, M. 2010. Compiling for reconfigurable computing: A survey. ACM Comput. Surv. 42, 4. Google ScholarDigital Library
- Carette, J., Kiselyov, O., and Shan, C. 2009. Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages. J. Funct. Program. 19, 5, 509--543. Google ScholarDigital Library
- Caspi, P. 1992. Clocks in dataflow languages. Theor. Comput. Sci. 94, 1, 125--140. Google ScholarDigital Library
- Caspi, P. and Pouzet, M. 1998. A co-iterative characterization of synchronous stream functions. Elec. Notes Theor. Comput. Sci. 11, 1--21.Google ScholarDigital Library
- Chakravarty, M. M. T., Keller, G., Lee, S., McDonell, T. L., and Grover, V. 2011. Accelerating Haskell array codes with multicore GPUs. In Proceedings of the Workshop on Declarative Aspects of Multicore Programming (DAMP'11), M. Carro and J. H. Reppy, Eds. ACM, New York, 3--14. Google ScholarDigital Library
- Chakravarty, M. M. T., Keller, G., Peyton Jones, S., and Marlow, S. 2005. Associated types with class. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'05). ACM, New York. Google ScholarDigital Library
- Claessen, K. 2001. Embedded Languages for Describing and Verifying Hardware. Ph.D. thesis, Chalmers University of Technology.Google Scholar
- Claessen, K. 2003. Safety property verification of cyclic synchronous circuits. In Proceedings of Workshop on Synchronous Languages Applications and Programs (SLAP'03). Elsevier, Amsterdam.Google Scholar
- Claessen, K., Sheeran, M., and Singh, S. 2003. Using Lava to design and verify recursive and periodic sorters. Int. J. Software Tools Technol. Transfer 4, 3, 349--358.Google ScholarCross Ref
- Clarke, E., Grumberg, O., and Peled, D. 1999. Model Checking. MIT Press, Cambridge, MA. Google ScholarDigital Library
- Colaço, J.-L., Girault, A., Hamon, G., and Pouzet, M. 2004. Towards a higher-order synchronous dataflow language. In EMSOFT, G. C. Buttazzo, Ed. ACM, New York. Google ScholarDigital Library
- Coquand, T. 1993. Infinite objects in type theory. In Proceedings of the International Workshop on Types for Proofs and Programs (TYPES'93), H. Barendregt and T. Nipkow, Eds. LNCS, vol. 806. Springer, Berlin, 62--78. Google ScholarDigital Library
- Danielsson, N. A., Hughes, J., Jansson, P., and Gibbons, J. 2006. Fast and loose reasoning is morally correct. In Proceedings of the 33rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'06), J. G. Morrisett and S. Peyton Jones, Eds. ACM, New York, 206--217. Google ScholarDigital Library
- Day, N. A., Aagaard, M., and Cook, B. 2000. Combining stream-based and state-based verification techniques. In Proceedings of the 3rd International Conference on Formal Methods in Computer-Aided Design (FMCAD'00), W. A. Hunt Jr. and S. D. Johnson, Eds. LNCS, vol. 1954. Springer, Berlin, 126--142. Google ScholarDigital Library
- de Roever, W.-P. and Engelhardt, K. 1998. Data Refinement: Model-Oriented Proof Methods and their Comparison. Number 47 in Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, Cambridge, U.K. Google ScholarDigital Library
- Diatchki, I. S., Jones, M. P., and Leslie, R. 2005. High-level views on low-level representations. In Proceedings of the 10th ACM SIGPLAN International Conference on Functional Programming (ICFP'05), O. Danvy and B. C. Pierce, Eds. ACM, New York, 168--179. Google ScholarDigital Library
- Erkök, L. 2002. Value Recursion in Monadic Computations. Ph.D. thesis, OGI School of Science and Engineering, OHSU, Portland, Oregon.Google Scholar
- Fox, A. C. J., Gordon, M. J. C., and Myreen, M. O. 2010. Specification and verification of ARM hardware and software. In Design and Verification of Microprocessor Systems for High-Assurance Applications, D. S. Hardin, Ed. Springer, Berlin.Google Scholar
- Frankau, S. and Mycroft, A. 2003. Stream processing hardware from functional language specifications. In Proceedings of the 36th Hawaii International Conference on System Sciences (HICSS'03). IEEE Computer Society, Washington, DC, 278. Google ScholarDigital Library
- Friedman, D. P. and Wise, D. S. 1976. CONS should not evaluate its arguments. In Proceedings of the 3rd International Colloquium on Automata, Languages and Programming (ICALP'76). Edinburgh University Press, Edinburgh, UK, 257--284.Google Scholar
- Gammie, P. 2011. Short note: Strict unwraps make worker/wrapper fusion totally correct. J. Funct. Program. 21, 2, 209--213.Google ScholarCross Ref
- Ghica, D. R. 2007. Geometry of synthesis: A structured approach to VLSI design. In Proceedings of the 34th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'07), M. Hofmann and M. Felleisen, Eds. ACM, New York, 363--375. Google ScholarDigital Library
- Ghica, D. R., Smith, A., and Singh, S. 2011. Geometry of synthesis IV: Compiling affine recursion into static hardware. In Proceedings of the International Conference on Functional Programming (ICFP'11), M. M. T. Chakravarty, Z. Hu, and O. Danvy, Eds. ACM, New York, 221--233. Google ScholarDigital Library
- Gill, A. 2009. Type-safe observable sharing in Haskell. In Proceedings of the 2nd ACM SIGPLAN Symposium on Haskell (Haskell'09), S. Weirich, Ed. ACM, New York. Google ScholarDigital Library
- Gill, A. and Farmer, A. 2011. Deriving an efficient FPGA implementation of a low density parity check forward error corrector. In Proceedings of the International Conference on Functional Programming (ICFP'11), M. M. T. Chakravarty, Z. Hu, and O. Danvy, Eds. ACM, New York, 209--220. Google ScholarDigital Library
- Gill, A. and Hutton, G. 2009. The worker/wrapper transformation. J. Funct. Program. 19, 2, 227--251. Google ScholarDigital Library
- Gillenwater, J., Malecha, G., Salama, C., Zhu, A. Y., Taha, W., Grundy, J., and O'Leary, J. 2010. Synthesizable high level hardware descriptions. New Generation Comput. 28, 4, 339--369. Google ScholarDigital Library
- Gordon, M. J. C. 1995. The semantic challenge of Verilog HDL. In Proceedings of the 10th IEEE Symposium on Logic in Computer Science (LICS'95). IEEE Computer Society, Washington, DC, 136--145. Google ScholarDigital Library
- Greibach, S. 1975. Theory of Program Structures: Schemes, Semantics, Verification. LNCS, vol. 36. Springer, Berlin. Google ScholarDigital Library
- Grov, G. and Michaelson, G. 2010. Hume box calculus: Robust system development through software transformation. Higher-Order and Symbolic Comput. 23, 2, 191--226. Google ScholarDigital Library
- Grundy, J., Melham, T. F., and O'Leary, J. W. 2006. A reflective functional language for hardware design and theorem proving. J. Funct. Program. 16, 2, 157--196. Google ScholarDigital Library
- Gunter, C. A. 1992. Semantics of Programming Languages: Structures and Techniques. MIT Press, Cambridge, MA. Google ScholarDigital Library
- Halbwachs, N., Caspi, P., Raymond, P., and Pilaud, D. 1991. The synchronous dataflow programming language Lustre. Proc. IEEE 79, 9, 1305--1320.Google ScholarCross Ref
- Halbwachs, N., Lagnier, F., and Raymond, P. 1993. Synchronous observers and the verification of reactive systems. In Algebraic Methodology and Software Technology (AMAST'93), M. Nivat, C. Rattray, T. Rus, and G. Scollo, Eds. Workshops in Computing. Springer, Berlin, 83--96. Google ScholarDigital Library
- Hamon, G. 2006. Synchronous dataflow pattern matching. Elec. Notes Theor. Comput. Sci. 153, 4, 37--54. Google ScholarDigital Library
- Hanna, F. K. 2000. Reasoning about analog-level implementations of digital systems. Formal Methods Syst. Des. 16, 2, 127--158. Google ScholarDigital Library
- Harel, D. 2009. Statecharts in the making: A personal account. Commun. ACM 52, 3, 67--75. Google ScholarDigital Library
- Harrison, W. L., Procter, A. M., Agron, J., Kimmell, G., and Allwein, G. 2009. Model-driven engineering from modular monadic semantics: Implementation techniques targeting hardware and software. In Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages (DSL'09), W. Taha, Ed. LNCS, vol. 5658. Springer, Berlin. Google ScholarDigital Library
- Henderson, P. 1982. Functional geometry. In Proceedings of the 1982 ACM Symposium on LISP and Functional Programming (LFP'82). ACM, New York, 179--187. Google ScholarDigital Library
- Hinze, R. and James, D. W. H. 2011. Proving the unique fixed-point principle correct: an adventure with category theory. In Proceedings of the International Conference on Functional Programming (ICFP'11), M. M. T. Chakravarty, Z. Hu, and O. Danvy, Eds. ACM, New York, NY, 359--371. Google ScholarDigital Library
- Hudak, P. 1996. Building domain-specific embedded languages. ACM Comput. Surv. 28, 4es, 196. Google ScholarDigital Library
- Hughes, J. 1983. The Design and Implementation of Programming Languages. Ph.D. thesis, Programming Research Group, Oxford University.Google Scholar
- Hughes, J. 1989. Why functional programming matters. Comput. J. 32, 2, 98--107. Google ScholarDigital Library
- Hughes, J. 2000. Generalising monads to arrows. Sci. Comput. Program. 37, 67--111. Google ScholarDigital Library
- Hughes, J., Pareto, L., and Sabry, A. 1996. Proving the correctness of reactive systems using sized types. In Proceedings of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'96). ACM, New York, 410--423. Google ScholarDigital Library
- Hunt Jr., W. A., Swords, S., Davis, J., and Slobodova, A. 2010. Use of formal verification at Centaur Technology. In Design and Verification of Microprocessor Systems for High-Assurance Applications, D. S. Hardin, Ed. Springer, Berlin.Google Scholar
- Jantsch, A. and Sander, I. 2005. Models of computation and languages for embedded system design. IEE Proc. Comput. Digital Tech. 152, 2, 114--129.Google ScholarCross Ref
- Johnson, S. D. 1983. Synthesis of Digital Designs from Recursion Equations. ACM Distinguished Dissertation Series. MIT Press, Cambridge, MA. Google ScholarDigital Library
- Johnson, S. D. 2001. View from the fringe of the fringe. In Proceedings of the 11th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods (CHARME'01), T. Margaria and T. F. Melham, Eds. LNCS, vol. 2144. Springer, Berlin, 1--12. Google ScholarDigital Library
- Johnson, S. D. and Bose, B. 1997. DDD: A system for mechanized digital design derivation. Tech. rep. 323, Indiana University.Google Scholar
- Jones, G. and Sheeran, M. 1993. Designing arithmetic circuits by refinement in Ruby. In Proceedings of the 2nd International Conference on Mathematics of Program Construction (MPC'93). Springer, Berlin, 208--232. Google ScholarDigital Library
- Jones, M. P. 2000. Type classes with functional dependencies. In Proceedings of the 9th European Symposium on Programming (ESOP'00), G. Smolka, Ed. LNCS, vol. 1782. Springer, Berlin, 230--244. Google ScholarDigital Library
- Kaes, S. 1988. Parametric overloading in polymorphic programming languages. In Proceedings of the 2nd European Symposium on Programming (ESOP'88), H. Ganzinger, Ed. LNCS, vol. 300. Springer, Berlin, 131--144. Google ScholarDigital Library
- Kahn, G. 1974. The semantics of a simple language for parallel programming. In Proceedings of IFIP Congress 1974 (Information Processing'74), J. L. Rosenfeld, Ed. North-Holland, Amsterdam.Google Scholar
- Keller, G., Chakravarty, M. M. T., Leshchinskiy, R., Peyton Jones, S., and Lippmeier, B. 2010. Regular, shape-polymorphic, parallel arrays in Haskell. In ICFP, P. Hudak and S. Weirich, Eds. ACM, New York, 261--272. Google ScholarDigital Library
- Kiselyov, O. 2011. Implementing explicit and finding implicit sharing in embedded DSLs. In Proceedings of the IFIP Working Conference on Domain-Specific Languages (DSL'11), O. Danvy and C.-C. Shan, Eds. EPTCS, vol. 66, 210--225.Google ScholarCross Ref
- Kiselyov, O., Swadi, K. N., and Taha, W. 2004. A methodology for generating verified combinatorial circuits. In Proceedings of the International Conference on Embedded Software (EMSOFT'04), G. C. Buttazzo, Ed. ACM, New York. Google ScholarDigital Library
- Kloos, C. D. 1987. Semantics of Digital Circuits. LNCS, vol. 285. Springer, Berlin. Google ScholarDigital Library
- Landin, P. J. 1966. The next 700 programming languages. Commun. ACM 9, 3, 157--166. Google ScholarDigital Library
- Launchbury, J., Lewis, J. R., and Cook, B. 1999. On embedding a microarchitectural design language within Haskell. In Proceedings of the 4th International Conference on Functional Programming (ICFP'99). ACM, New York, 60--69. Google ScholarDigital Library
- Lewis, J. R., Launchbury, J., Meijer, E., and Shields, M. 2000. Implicit parameters: Dynamic scoping with static types. In Proceedings of the 27th ACM SIGPLAN-SIGACT on Principles of Programming Languages (POPL'00). ACM, New York, 108--118. Google ScholarDigital Library
- Malik, S. 1993. Analysis of cyclic combinational circuits. In Proceedings of the 1993 IEEE/ACM International Conference on Computer-Aided Design (ICCAD'93). IEEE Computer Society, Washington, DC, 618--625. Google ScholarDigital Library
- Manna, Z. 1974. Introduction to Mathematical Theory of Computation. McGraw-Hill, New York. Google ScholarDigital Library
- Manna, Z. and Pnueli, A. 1992. The Temporal Logic of Reactive and Concurrent Systems. Springer, Berlin. Google ScholarDigital Library
- Maraninchi, F. and Halbwachs, N. 1996. Compositional semantics of non-deterministic synchronous languages. In Proceedings of the 6th European Symposium on Programming (ESOP'96), H. R. Nielson, Ed. LNCS, vol. 1058. Springer, Berlin, 235--249. Google ScholarDigital Library
- Maraninchi, F. and Rémond, Y. 2001. Argos: An automaton-based synchronous language. Comput. Lang. 27, 1/3, 61--92. Google ScholarDigital Library
- Matthews, J. 1999. Recursive function definition over coinductive types. In Proceedings of the 12th International Conference on Theorem Proving in Higher Order Logics (TPHOLs'99), Y. Bertot, G. Dowek, A. Hirschowitz, C. Paulin, and L. Théry, Eds. LNCS, vol. 1690. Springer, Berlin, 73--90. Google ScholarDigital Library
- Matthews, J. 2000. Algebraic Specification and Verification of Processor Microarchitectures. Ph.D. thesis, Oregon Graduate Institute of Science and Technology. Google ScholarDigital Library
- Matthews, J., Cook, B., and Launchbury, J. 1998. Microprocessor specification in Hawk. In Proceedings of the 1998 International Conference on Computer Languages (ICCL'98). IEEE Computer Society, Washington, DC, 90. Google ScholarDigital Library
- McBride, C. and Paterson, R. 2008. Applicative programming with effects. J. Funct. Program. 18, 1, 1--13. Google ScholarDigital Library
- McEvoy, K. and Tucker, J. V. 1990. Theoretical foundations of hardware design. Number 10 in Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, Cambridge, UK, Chapter 1. Google ScholarDigital Library
- Mead, C. and Conway, L. 1980. Introduction to VLSI systems. Addison-Wesley, Reading, MA. Google ScholarDigital Library
- Meertens, L. G. L. T. 1986. Algorithmics. In Towards programming as a mathematical activity. Mathematics and Computer Science, CWI monographs, vol. 1. North-Holland, 289--334.Google Scholar
- Megacz, A. 2011. Hardware design with generalized arrows. In Proceedings of the 23rd International Symposium on the Implementation and Application of Functional Languages (IFL'11), A. Gill and J. Hage, Eds. LNCS, vol. 7257. Springer, Berlin, 164--180. Google ScholarDigital Library
- Meijer, E., Fokkinga, M. M., and Paterson, R. 1991. Functional programming with bananas, lenses, envelopes and barbed wire. In Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture (FPCA'91), J. Hughes, Ed. LNCS, vol. 523. Springer, Berlin, 124--144. Google ScholarDigital Library
- Mendler, M., Shiple, T. R., and Berry, G. 2012. Constructive Boolean circuits and the exactness of timed ternary simulation. Formal Methods Syst. Des.i. 40, 3, 283--329. Google ScholarDigital Library
- Mernik, M., Heering, J., and Sloane, A. M. 2005. When and how to develop domain-specific languages. ACM Comput. Surv. 37, 4, 316--344. Google ScholarDigital Library
- Milne, G. J. 1985. CIRCAL and the representation of communication, concurrency, and time. ACM Trans. Program. Lang. Syst. 7, 2, 270--298. Google ScholarDigital Library
- Milne, G. J. 2006. Modelling dynamically changing hardware structure. Elec. Notes Theor. Comput. Sci. 162, 249--254.Google ScholarCross Ref
- Milner, R. 1983. Calculi for synchrony and asynchrony. Theor. Comput. Sci. 25, 267--310.Google ScholarCross Ref
- Milner, R. 1989. Communication and Concurrency. Prentice-Hall, Englewood Cliffs, NJ. Google ScholarDigital Library
- Möller, B. and Tucker, J. V., Eds. 1998. Prospects for Hardware Foundations, ESPRIT Working Group 8533, NADA - New Hardware Design Methods, Survey Chapters. LNCS, vol. 1546. Springer, Berlin.Google Scholar
- Moran, A. K. 1998. Call-by-Name, Call-by-Need and McCarthy's Amb. Ph.D. thesis, Department of Computing Science, Chalmers University of Technology.Google Scholar
- Mycroft, A. and Sharp, R. 2003. Higher-level techniques for hardware description and synthesis. Int. J. Software Tools Technol. Transfer 4, 3, 271--297.Google ScholarCross Ref
- Naylor, M. and Runciman, C. 2009. Expressible sharing for functional circuit description. Higher-Order Symb. Comput. 22, 1, 67--80. Google ScholarDigital Library
- Naylor, M. and Runciman, C. 2012. The Reduceron reconfigured and re-evaluated. J. Funct. Program. 22, 4--5, 574--613. Google ScholarDigital Library
- Neiroukh, O., Edwards, S. A., and Song, X. 2008. Transforming cyclic circuits into acyclic equivalents. IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 27, 10, 1775--1787. Google ScholarDigital Library
- Nikhil, R. S. 2011. Abstraction in hardware system design. Commun. ACM 54, 10, 36--44. Google ScholarDigital Library
- Nipkow, T., Paulson, L. C., and Wenzel, M. 2002. Isabelle/HOL—A Proof Assistant for Higher-Order Logic. LNCS, vol. 2283. Springer, Berlin. Google ScholarDigital Library
- O'Donnell, J. 1987. Hardware description with recursion equations. In Proceedings of the IFIP 8th International Symposium on Computer Hardware Description Languages and Their Applications.Google Scholar
- O'Donnell, J. 1992. Generating netlists from executable circuit specifications. In Proceedings of the 1992 Glasgow Workshop on Functional Programming (Functional Programming'92), J. Launchbury and P. M. Sansom, Eds. Workshops in Computing. Springer, Berlin, 178--194. Google ScholarDigital Library
- O'Donnell, J. 1995. From transistors to computer architecture: Teaching functional circuit specification in Hydra. In Proceedings of 1st International Symposium on Functional Programming Languages in Education (FPLE'95), P. H. Hartel and M. J. Plasmeijer, Eds. LNCS, vol. 1022. Springer, Berlin, 195--214. Google ScholarDigital Library
- O'Donnell, J. 2003. Embedding a hardware description language in template Haskell. In Domain-Specific Program Generation, C. Lengauer, D. S. Batory, C. Consel, and M. Odersky, Eds. LNCS, vol. 3016. Springer, Berlin, 143--164.Google Scholar
- O'Donnell, J. and Rünger, G. 2004. Derivation of a logarithmic time carry lookahead addition circuit. J. Funct. Program. 14, 6, 697--713. Google ScholarDigital Library
- Park, S. and Im, H. 2011. A calculus for hardware description. J. Funct. Program. 21, 1, 21--58. Google ScholarDigital Library
- Paterson, R. 2001. A new notation for Arrows. In Proceedings of the 6th ACM SIGPLAN International Conference on Functional Programming (ICFP'01). ACM, New York, NY, 229--240. Google ScholarDigital Library
- Paterson, R. 2003. Arrows and Computation. In The Fun of Programming, J. Gibbons and O. de Moor, Eds. Cornerstones in Computing. Palgrave Macmillan, New York, 201--222.Google Scholar
- Paulin-Mohring, C. 1995. Circuits as streams in Coq: Verification of a sequential multiplier. In International Workshop on Types for Proofs and Programs (TYPES'95), S. Berardi and M. Coppo, Eds. LNCS, vol. 1158. Springer, Berlin, 216--230. Google ScholarDigital Library
- Peyton Jones, S. 1987. The Implementation of Functional Programming Languages. Prentice-Hall, Englewood Cliffs, NJ. Google ScholarDigital Library
- Peyton Jones, S., Ed. 2003. Haskell 98 Language and Libraries: the Revised Report. Cambridge University Press, Cambridge, U.K.Google Scholar
- Peyton Jones, S., Vytiniotis, D., Weirich, S., and Shields, M. 2007. Practical type inference for arbitrary-rank types. J. Funct. Program. 17, 1, 1--82. Google ScholarDigital Library
- Plotkin, G. D. 1977. LCF considered as a programming language. Theor. Comput. Sci. 5, 223--255.Google ScholarCross Ref
- Potop-Butucaru, D., Edwards, S. A., and Berry, G. 2007. Compiling Esterel. Springer, Berlin. Google ScholarDigital Library
- Riedel, M. D. and Bruck, J. 2003. The synthesis of cyclic combinational circuits. In Proceedings of the 40th Design Automation Conference (DAC'03). ACM, New York, 163--168. Google ScholarDigital Library
- Rocheteau, F. and Halbwachs, N. 1991. POLLUX: A Lustre based hardware design environment. In Algorithms and Parallel VLSI Architectures, P. Quinton and Y. Robert, Eds. Elsevier, Amsterdam, 335--346. Google ScholarDigital Library
- Seger, C.-J. H., Jones, R. B., O'Leary, J. W., Melham, T. F., Aagaard, M., Barrett, C., and Syme, D. 2005. An industrially effective environment for formal hardware verification. IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 24, 9, 1381--1405. Google ScholarDigital Library
- Selinger, P. 2011. A survey of graphical languages for monoidal categories. In New Structures for Physics, B. Coecke, Ed. Lecture Notes in Physics, vol. 813. Springer, Berlin.Google Scholar
- Sharp, R. and Rasmussen, O. 1997. The T-Ruby design system. Formal Methods in System Design 11, 3, 239--264. Google ScholarDigital Library
- Sheard, T. 2007. Types and hardware description languages. In Hardware Design and Functional Languages, A. Martin, C. Seger, and M. Sheeran, Eds.Google Scholar
- Sheard, T. and Peyton Jones, S. 2002. Template metaprogramming for Haskell. In Proceedings of the 2002 Haskell Workshop (Haskell 2002), M. M. T. Chakravarty, Ed. ACM, New York, 1--16. Google ScholarDigital Library
- Sheeran, M. 1984. μFP, a language for VLSI design. In Proceedings of the 1984 ACM Symposium on LISP and Functional Programming (LFP'84). ACM, New York, 104--112. Google ScholarDigital Library
- Sheeran, M. 1990. Describing and reasoning about circuits using relations. Number 10 in Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, Cambridge, UK, Chapter 6.Google Scholar
- Sheeran, M. 2005. Hardware design and functional programming: a perfect match. J. Universal Comput. Sci. 11, 7, 1135--1158.Google Scholar
- Sheeran, M. 2011. Functional and dynamic programming in the design of parallel prefix networks. J. Funct. Program. 21, 1, 59--114. Google ScholarDigital Library
- Shiple, T. R., Berry, G., and Touati, H. 1996. Constructive analysis of cyclic circuits. In Proceedings of the 1996 European Conference on Design and Test (EDTC'96). IEEE Computer Society, Washington, DC. Google ScholarDigital Library
- Singh, S. 2004. Designing reconfigurable systems in Lava. In Proceedings of the 17th International Conference on VLSI Design (VLSI Design'04). IEEE Computer Society, Washington, DC, 299--306. Google ScholarDigital Library
- Singh, S. 2007. New parallel programming techniques for hardware design. In Proceedings of the IFIP WG 10.5 International Conference on Very Large Scale Integration of System-on-Chip (IFIP VLSI-SoC'07). IEEE, Los Alamitos, CA, 163--167.Google Scholar
- Singh, S. 2011. The RLOC is dead -- long live the RLOC. In Proceedings of the ACM/SIGDA 19th International Symposium on Field Programmable Gate Arrays (FPGA'11), J. Wawrzynek and K. Compton, Eds. ACM, New York, 185--188. Google ScholarDigital Library
- Singh, S. and James-Roxby, P. 2001. Lava and JBits: From HDL to bitstream in seconds. In Proceedings of the the 9th IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM'01). IEEE Computer Society, Washington, DC, 91--100. Google ScholarDigital Library
- Stavridou, V. 1993. Formal Methods in Circuit Design. Number 37 in Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, Cambridge, U.K. Google ScholarDigital Library
- Stavridou, V. 1994. Gordon's computer: A hardware verification case study in OBJ3. Formal Methods Syst. Des. 4, 3, 265--310. Google ScholarDigital Library
- Sweeney, T. 2009. The end of the GPU roadmap. Keynote at High Performance Graphics.Google Scholar
- Taha, W. 2000. A sound reduction semantics for untyped CBN multi-stage computation. or, the theory of MetaML is non-trivial (extended abstract). In Proceedings of the 2000 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation (PEPM'00). ACM, New York, 34--43. Google ScholarDigital Library
- Veldhuizen, T. L. 2004. Active Libraries and Universal Languages. Ph.D. thesis, Indiana University Computer Science. Google ScholarDigital Library
- Vuillemin, J. 1994. On circuits and numbers. IEEE Trans. Comput. 43, 8, 868--879. Google ScholarDigital Library
- Wadler, P. 1990. Deforestation: Transforming programs to eliminate trees. Theor. Comput. Sci. 73, 2, 231--248. Google ScholarDigital Library
- Wadler, P. 1997. How to declare an imperative. ACM Comput. Surv. 29, 3, 240--263. Google ScholarDigital Library
- Wadler, P. and Blott, S. 1989. How to make ad-hoc polymorphism less ad-hoc. In Proceedings of the 16th ACM Symposium on Principles of Programming Languages (POPL'89). ACM, New York, 60--76. Google ScholarDigital Library
- Wand, M. 1982. Deriving target code as a representation of continuation semantics. ACM Trans. Program. Lang. Syst. 4, 3, 496--517. Google ScholarDigital Library
- Winskel, G. 1986. Lectures on models and logic of MOS circuits. In Logic of Programming and Calculi of Discrete Design, M. Broy, Ed. NATO ASI Series F, vol. 36. Springer, Berlin. Google ScholarDigital Library
- Winskel, G. 1993. The Formal Semantics of Programming Languages. MIT Press, Cambridge, MA. Google ScholarDigital Library
Index Terms
- Synchronous digital circuits as functional programs
Recommendations
Specification of synchronous sequential circuits using SDL and ObjectGEODE
Specification and Description Language (SDL) is a standardised formal description technique for telecommunications software. ObjectGEODE is a commercial toolset which supports software design using SDL. This article presents a way of using SDL and ...
Synchronous Handshake Circuits
ASYNC '01: Proceedings of the 7th International Symposium on Asynchronous Circuits and SystemsWe present the synchronous implementation of hand-shake circuits as an extra feature in the otherwise asynchronous design flow based on Tangram. This synchronous option can be used in the mapping onto FPGAs or as a fall-back option to provide a circuit ...
Optimization of synchronous circuits
Logic Synthesis and VerificationWe study techniques for optimizing synchronous sequential circuits. These techniques use either state-based or structural gate-level models. We survey recent advances in state-based techniques focusing on the computation of the flexibility in ...
Comments