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 00:32, 5 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 May of the same year. Inspired by TRS [1] 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[1], 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[1].

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 [2], and in April 2009, Atom was released in open-source in its new form.[3]

Overview

Examples

Limitations

References

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