Abstract
This article describes FSMLanguage, a domain-specific language for HW/SW co-design targeting platform FPGAs. Modern platform FPGAs provide a wealth of configurable logic in addition to embedded processors, distributed RAM blocks, and DSP slices in order to help facilitate building HW/SW co-designed systems. A technical challenge in building such systems is that the practice of designing software and hardware requires different areas of expertise and different description domains, i.e. languages and vocabulary. FSMLanguage attempts to unify these domains by defining a way to describe HW/SW co-designed systems in terms of sets of finite-state machines – a concept that is reasonably familiar to both software programmers and hardware designers. FSMLanguage is a domain-specific language for describing the functionality of a finite-state machine in such a way that its implementation can be re-targeted to software or hardware in an efficient manner. The efficiency is achieved by exploiting the resources found within modern platform FPGAs – namely the distributed RAM blocks, soft-core processors, and the ability to construct dedicated communication channels between FSMs in the reconfigurable fabric. The language and its compiler promote uniformity in the description of a HW/SW co-designed system, which allows a system designer to make partitioning and implementation strategy decisions later in the design cycle.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Xilinx: Programmable logic devices, http://www.xilinx.com/ (last accessed March 25, 2009)
Lee, D., Yannakakis, M.: Principles and Methods of Testing Finite-State Machines – A Survey. Proceedings of the IEEE 84(8), 1090–1123 (1996)
Sgroi, M., Lavagno, L., Sangiovanni-Vincentelli, A.: Formal Models for Embedded System Design. IEEE Design & Test 17(2), 14–27 (2000)
Chiodo, M., Giusto, P., Hsieh, H., Jurecska, A., Lavagno, L., Sangiovanni-Vincentelli, A.: A Formal Methodology for Hardware/Software Codesign of Embedded Systems. IEEE Micro. 14, 26–36 (1994)
Jerraya, A.A., Wolf, W.: Hardware/Software Interface Codesign for Embedded Systems. IEEE Computer 38(2), 63–69 (2005)
http://www.systemc.org (SystemC Last accessed March 25, 2009)
Edwards, S.A.: The Challenges of Synthesizing Hardware from C-Like Languages. IEEE Design and Test of Computers 23(5), 375–386 (2006)
http://www.impulsec.com (ImpulseC Last accessed March 25, 2009)
http://www.celoxica.com (Celoxica Last accessed March 25, 2009)
Landin, P.J.: The Next 700 Programming Languages. Communications of the ACM 9(3), 157–166 (1966)
Mernik, M., Heering, J., Sloane, A.M.: When and How to Develop Domain-Specific Languages. ACM Computing Surveys 37(4), 316–344 (2005)
Spinellis, D.: Notable Design Patterns for Domain-Specific Languages. Journal of Systems and Software 56(1), 91–99 (2001)
Harel, D.: Statecharts: A Visual Formalism for Complex Systems. Science of Compututer Programming 8(3), 231–274 (1987)
Wagner, F., Wagner, T., Wolstenholme, P.: Closing the Gap Between Software Modelling and Code. In: IEEE International Conference on the Engineering of Computer-Based Systems, vol. 0, pp. 52 (2004)
Abdel-Hamid, A., Zaki, M., Tahar, S.: A Tool Converting Finite-State Machine to VHDL. In: Canadian Conference on Electrical and Computer Engineering, May 2004, vol. 4, pp. 1907–1910 (2004)
http://www.stateworks.com/active/download/TN2-WhatIsStateWORKS.pdf : What is StateWorks? StateWorks Technical Document
Wagner, F.: VFSM Executable Specification. In: CompEuro 1992. ’Computer Systems and Software Engineering’, Proceedings, May 1992, pp. 226–231 (1992)
Barnett, M., Börger, E., Gurevich, Y., Schulte, W., Veanes, M.: Using Abstract State Machines at Microsoft: A Case Study. In: Gurevich, Y., Kutter, P.W., Odersky, M., Thiele, L. (eds.) ASM 2000. LNCS, vol. 1912, pp. 367–379. Springer, Heidelberg (2000)
Glsser, U., Gurevich, Y., Veanes, M.: High-Level Executable Specification of the Universal Plug and Play Architecture. In: Hawaii International Conference on System Sciences, vol. 9, p. 283 (2002)
http://www.xilinx.com/itp/xilinx10/books/docs/xst/xst.pdf: Xilinx XST User Guide - Finite State Machine HDL Coding Techniques, pp. 239–245 (last accessed March 25, 2009)
http://www.altera.com/literature/hb/qts/qts_qii51007.pdf: Altera Quartus II Handbook – Recommended HDL Coding Styles, ch. 6, pp. 51–57 (last accessed March 25, 2009)
Hoare, C.A.R.: Communicating Sequential Processes. Communications of the ACM 21(8), 666–677 (1978)
http://www.xilinx.com/support/documentation/ip_documentation/fsl_v20.pdf: FSL Bus Product Specification. Fast Simplex Link (FSL) Bus (v2.11a) Data Sheet
http://www.haskell.org (Haskell Community Website Last accessed March 25, 2009)
http://legacy.cs.uu.nl/daan/parsec.html (Parsec, A Monadic Parser Library For Haskell Last accessed March 25, 2009)
http://www.graphviz.org/ (Graphviz - DOT and DOTTY Last accessed March 25, 2009)
Ertl, M.A., Gregg, D.: The Behavior of Efficient Virtual Machine Interpreters on Modern Architectures. In: Sakellariou, R., Keane, J.A., Gurd, J.R., Freeman, L. (eds.) Euro-Par 2001. LNCS, vol. 2150, pp. 403–412. Springer, Heidelberg (2001)
http://www.xilinx.com/support/documentation/sw_manuals/mb_ref_guide.pdf: MicroBlaze Processor Reference Guide. Xilinx Datasheet
Greaves, D., Singh, S.: Exploiting System-Level Concurrency Abstractions for Hardware Descriptions. ACM Transactions on Reconfigurable Technology and Systems 5(N), 1–29 (2008)
Lickly, B., Liu, I., Kim, S., Patel, H.D., Edwards, S.A., Lee, E.A.: Predictable Programming on a Precision Timed Architecture. In: Proceedings of International Conference on Compilers, Architecture, and Synthesis from Embedded Systems (October 2008)
Andrews, D., Sass, R., Anderson, E., Agron, J., Peck, W., Stevens, J., Baijot, F., Komp, E.: Achieving Programming Model Abstractions For Reconfigurable Computing. IEEE Transactions on Very Large Scale Integration (VLSI) Systems 16(1), 34–44 (2008)
Agron, J., Peck, W., Anderson, E., Andrews, D., Komp, E., Sass, R., Baijot, F., Stevens, J.: Run-Time Services for Hybrid CPU/FPGA Systems On Chip. In: Proceedings of the 27th IEEE International Real-Time Systems Symposium (RTSS) (December 2006)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 IFIP International Federation for Information Processing
About this paper
Cite this paper
Agron, J. (2009). Domain-Specific Language for HW/SW Co-design for FPGAs. In: Taha, W.M. (eds) Domain-Specific Languages. DSL 2009. Lecture Notes in Computer Science, vol 5658. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-03034-5_13
Download citation
DOI: https://doi.org/10.1007/978-3-642-03034-5_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-03033-8
Online ISBN: 978-3-642-03034-5
eBook Packages: Computer ScienceComputer Science (R0)