}}
'''Atom''' is a [[___domain-specific language]] (DSL) in [[Haskell (programming language)|Haskell]], for designing [[Real-time computing|real-time]] [[Embedded programming|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.<ref>[http://www.haskell.org/pipermail/haskell-cafe/2007-April/024090.html ANN: Atom - Yet another Haskell HDL]</ref>
Inspired by TRS <ref name="hoe1">[http://www.ece.cmu.edu/~jhoe/distribution/2000/iccad00.pdf Synthesis of Operation-Centric Hardware Descriptions].
James C. Hoe and Arvind. International Conference on Computer Aided Design (ICCAD), November 2000.</ref>
and [[Bluespec]], Atom compiled circuit descriptions, that were based on guarded atomic operations, or [[Term Rewriting System|conditional term rewriting]], into [[Verilog]] [[netlist]]s for simulation and [[logic synthesis]].
As a hardware compiler, Atom's primary objective was to maximize the number of operations, or rules, that can execute in a given clock cycle without violating the semantics of atomic operation.
By employing the properties of conflict-free and sequentially-composable rules,<ref name="hoe1"/> Atom reduced maximizing execution concurrency to a [[feedback arc set]] optimization of a rule-data dependency graph. This process was similar to [[James Hoe]]'s original algorithm.<ref name="hoe1" />
When Atom's author switched careers in late 2007 from logic design to [[Embedded systems|embedded software]] engineering, Atom was redesigned from an [[hardware description language|HDL]] to a [[___domain specific language]]
targeting [[Realtime computing|hard realtime]] embedded applications. As a result, Atom's compiler's primary objective changed from maximizing rule concurrency to balancing processing load and minimizing
[[Worst case execution time|worst case timing latency]]. In September 2008, Atom was presented at CUFP,<ref>[http://cufp.galois.com/2008/schedule.html Controlling Hybrid Vehicles with Haskell.]</ref>
and in April 2009, was released as open-source in its new form.<ref>[http://www.haskell.org/pipermail/haskell-cafe/2009-April/060602.html ANN: atom-0.0.2]</ref>
== Overview ==
|