Jump to content

Atom (programming language)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Tomahawkins (talk | contribs) at 23:24, 9 December 2009. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Atom
Paradigmfunctional, synchronous, reactive
Designed byThomas Hawkins
First appeared2007
Typing disciplinestatic, strong, inferred
OSportable
LicenseBSD3
Websitehttp://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 operation. 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, was released as open-source in its new form.[4]

Overview

Examples

Limitations

References

  1. ^ ANN: Atom - Yet another Haskell HDL
  2. ^ a b c Synthesis of Operation-Centric Hardware Descriptions. James C. Hoe and Arvind. International Conference on Computer Aided Design (ICCAD), November 2000.
  3. ^ Controlling Hybrid Vehicles with Haskell.
  4. ^ ANN: atom-0.0.2