Atom (programming language)
![]() | The topic of this article may not meet Wikipedia's notability guidelines for products and services. (December 2009) |
Paradigm | functional, synchronous, reactive |
---|---|
Designed by | Thomas Hawkins |
First appeared | 2007 |
Typing discipline | static, strong, inferred |
OS | portable |
License | BSD3 |
Website | http://hackage.haskell.org/package/atom/ |
Influenced by | |
Bluespec, Confluence, Haskell |
Atom is a DSL in Haskell for designing hard realtime embedded software.
History
Originally intended as a high level hardware description language, Atom was created in early 2007 and released in open-source of April of the same year.[1] Inspired by TRS [2] and Bluespec, Atom compiled circuit descriptions based on guarded atomic operations, or conditional term rewriting, into Verilog netlists for simulation and logic synthesis. As a hardware compiler, Atom's primary objective was to maximize the number of operations, or rules, that could execute in a given clock cycle without violating the semantics of atomic operations. Based on the properties of conflict-free and sequentially-composable rules[2], Atom's author reduced maximizing execution concurrency to a feedback arc set optimization of a rule-data dependency graph -- a process similar, if not equivalent to James Hoe's original algorithm[2].
When Atom's author switched careers in late 2007 from logic design to embedded software engineering, Atom was redesign from an HDL to a domain specific language targeting hard realtime embedded applications. As a result, Atom's compiler's primary objective changed from maximizing rule concurrency to balancing processing load and minimizing worse case timing latency. In September 2008, Atom was presented at CUFP[3], and in April 2009, Atom was released in open-source in its new form.[4]
Overview
Examples
Limitations
References
- ^ ANN: Atom - Yet another Haskell HDL
- ^ a b c Synthesis of Operation-Centric Hardware Descriptions. James C. Hoe and Arvind. International Conference on Computer Aided Design (ICCAD), November 2000.
- ^ Controlling Hybrid Vehicles with Haskell.
- ^ [http://groups.google.com/group/haskell-cafe/browse_thread/thread/2750aee843870ca1/37f32c528d733429?hl=en&ie=UTF-8&q=haskell+atom+0.0#37f32c528d733429 ANN: atom-0.0.2]