82      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~         ! " # $ % & ' ( ) * + , - . / 0 1 2 An untyped term.  !"#$%&A typed expression. '()*+,-./0123456789:;<=An untyped array. >?@A typed array. ABUntyped variables. CDEF-Variables updated by state transition rules. GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklThe type of a &. mnopqrstuvwxy True term. z False term. {Logical negation. | Logical AND. } Logical OR. ~"The conjunction of a E Bool list. "The disjunction of a E Bool list. 1True iff the predicate is true for all elements. 0True iff the predicate is true for any element. Equal.  Not equal.  Less than. Greater than. Less than or equal. Greater than or equal. $Returns the minimum of two numbers. *Returns the minimum of a list of numbers. $Returns the maximum of two numbers. *Returns the maximum of a list of numbers. Limits between min and max. JDivision. If both the dividend and divisor are constants, a compile-time M check is made for divide-by-zero. Otherwise, if the divisor ever evaluates  to 0E, a runtime exception will occur, even if the division occurs within  the scope of a cond or  that tests for 0 (because Atom generates , deterministic-time code, every branch of a cond or  is executed). JDivision, where the C code is instrumented with a runtime check to ensure  the divisor does not equal 0. If it is equal to 0, the 3rd argument is a  user-supplied non-zero divsor. HModulo. If both the dividend and modulus are constants, a compile-time M check is made for divide-by-zero. Otherwise, if the modulus ever evaluates  to 0E, a runtime exception will occur, even if the division occurs within  the scope of a cond or  that tests for 0 (because Atom generates , deterministic-time code, every branch of a cond or  is executed). IModulus, where the C code is instrumented with a runtime check to ensure  the modulus does not equal 0. If it is equal to 0, the 3rd argument is " a user-supplied non-zero divsor. Returns the value of a GF. <Conditional expression. Note, both branches are evaluated!  mux test onTrue onFalse Array index to variable. Array index to expression. +The list of UEs adjacent upstream of a UE. FThe list of all UVs that directly control the value of an expression. #All array indexing subexpressions. BConverts an typed expression (E a) to an untyped expression (UE). 34  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&<;:9876543210/.-,+*)('FG%$#"! BEDC@A=?> T_^]\[ZYXWVUHSRQPONMLKJIlwvutsrqponm`kjihgfedcba xyz{|}~   %$#"!  !"#$%&<;:9876543210/.-,+*)(''()*+,-./0123456789:;<=?>>?@AABEDCCDEFGGH SRQPONMLKJIIJKLMNOPQRST _^]\[ZYXWVUUVWXYZ[\]^_` kjihgfedcbaabcdefghijkl wvutsrqponmmnopqrstuvwxyz{|}~75The Atom monad holds variable and rule declarations. 5A hierarchical name. A name. 67@A Relation is used for relative performance constraints between Actions. < data Relation = Higher UID | Lower UID deriving (Show, Eq) TGiven a top level name and design, elaborates design and returns a design database. 83Checks that a rule will not be trivially disabled. 9yCheck that a variable is assigned more than once in a rule. Will eventually be replaced consistent assignment checking. $Generic local variable declaration. 'Generic external variable declaration. Generic array declaration. $Generic external array declaration. SAll the variables that directly and indirectly control the value of an expression. :(All primary expressions used in a rule. 111 >Topologically sorts a list of expressions and subexpressions. ; Number of UE's computed in rule.  <=>?@ABCD3A model of a scheduled program for model checking. E)Create a model from a scheduled program. *A list of assertions captured by a model. assertions :: Model -> [Name] 8Bounded model checking starting from the initial state. CboundedModelChecking :: Model -> Int -> Name -> IO (Maybe Witness) :K-induction model checking given a min and a max k-depth. 3kInduction :: Model -> Int -> Int -> Name -> IO () FIRuns a Yices program. Returns a list of variable values if satisfiable. * Assign an & to a GF. CThe Atom monad captures variable and transition rule declarations. ECreates a hierarchical node, where each node could be a atomic rule. YDefines the period of execution of sub rules as a factor of the base rate of the system. G Rule period is bound by the closest period assertion. For example: F period 10 $ period 2 a -- Rules in 'a' have a period of 2, not 10. 3Returns the execution period of the current scope. FDefines the earliest phase within the period at which the rule should  execute. The 1 must be at least zero and less than the current . (Returns the phase of the current scope. ,Returns the current atom hierarchical path. $Local boolean variable declaration. 'External boolean variable declaration. !Local int8 variable declaration. $External int8 variable declaration. "Local int16 variable declaration. %External int16 variable declaration. "Local int32 variable declaration. %External int32 variable declaration. "Local int64 variable declaration. %External int64 variable declaration. "Local word8 variable declaration. %External word8 variable declaration. #Local word16 variable declaration. &External word16 variable declaration. #Local word32 variable declaration. &External word32 variable declaration. #Local word64 variable declaration. &External word64 variable declaration. "Local float variable declaration. %External float variable declaration. #Local double variable declaration. &External double variable declaration. Declares an action. Declares a probe. 5Fetches all declared probes to current design point. Increments a NumE GF. Decrements a NumE GF. 8Adds an enabling condition to an atom subtree of rules. = This condition must be true before any rules in hierarchy  are allowed to execute. ,Reference to the 64-bit free running clock. DRule coverage information. (current coverage index, coverage data) nAssertion that checks an E Bool. Assertions are only checked if the containing rule is enabled and executed. RImplication assertions. Creates an implicit coverage point for the precondition. "Adds a functional coverage point.   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0*  A Timer. GCreates a new timer. 7Starts a Timer. A timer can be restarted at any time. Conditionally start a Timer. H when a timer has completed.  !One-shot on a rising transition.  "One-shot on a falling transition.  KDebounces a boolean given an on and off time (ticks) and an initial state.  L1-D lookup table. X values out of table range are clipped at end Y values. 6 Input table must be monotonically increasing in X.  Hysteresis returns H when the input exceeds max and I when  the input is less than min/. The state is held when the input is between  min and max.  hysteresis name min max input                !C code configuration parameters. EAlternative primary function name. Leave empty to use compile name. C type naming rules. kCustom C code to insert above and below, given assertion names, coverage names, and probe names and types. Enable rule coverage tracking. Enable assertion checking. OName of assertion function. Type: void assert(int, cType Bool, cType Word64); )Enable functional coverage accumulation. MName of coverage function. Type: void cover(int, cType Bool, cType Word64); FDefault C code configuration parameters (default function name, no pre/post code, ANSI C types). JANSI C type naming rules. C99 type naming rules. KLMNOPQRS  #Compiles an atom description to C.   Data constructor:Test !"#$%&'()*+,Running TestList TU-$Printing strings in C using printf. .Print integral values. /Print floating point values. V !"#$%&'()*+,-./ !"#$%&'()*+,-./ !"#$%&'()*!"#$%&'()*+,-./   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./ 0Invoke the atom compiler. W1=An example design that computes the greatest common divisor. 010101X  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMLNNOPQORRSTUVWXYZ[\]^_`abcdefghijJklmnopqrstuvwxyz{|}~      ! " # $ % % & ' ( ) * + , - . / 0 1 2 3 4 56789:;<=>??@ABCDEFG HIJHIKLMNOPQRSTU V W X YZ atom-0.1.2Language.Atom.LanguageLanguage.Atom.ExpressionsLanguage.Atom.ElaborationLanguage.Atom.AnalysisLanguage.Atom.SchedulingLanguage.Atom.VerificationLanguage.Atom.CommonLanguage.Atom.CodeLanguage.Atom.CompileLanguage.Atom.UnitLanguage.Atom.Example Language.Atom mtl-1.1.1.0Control.Monad.TransliftIO FloatingEOrdEEqE IntegralENumEExpreTypeconstant expressionvariablerawBitsTypeOftypeOfWidthwidthUEUB2DUB2FUD2BUF2BUMuxULtUEqUShiftUBWOrUBWAndUBWNotUAndUNotUModUDivUMulUSubUAddUCastUConstUVRefERetypeB2DB2FD2BF2BMuxLtEqShiftBWOrBWAndBWNotAndNotModDivMulSubAddCastConstVRefUAUAExternAUVUVExternUVArrayVVariableVDoubleVFloatVWord64VWord32VWord16VWord8VInt64VInt32VInt16VInt8VBool ExpressionEDoubleEFloatEWord64EWord32EWord16EWord8EInt64EInt32EInt16EInt8EBoolCDoubleCFloatCWord64CWord32CWord16CWord8CInt64CInt32CInt16CInt8CBoolTypeDoubleFloatWord64Word32Word16Word8Int64Int32Int16Int8Boolbytestruefalsenot_&&.||.and_or_all_any_imply==./=.<.>.<=.>=.min_minimum_max_maximum_limitdiv_div0_mod_mod0_valuemux!!. ueUpstream nearestUVs arrayIndicesueuvuboolunotuanduoruequmuxAtomRuleruleIdruleName ruleEnable ruleAssigns ruleActions rulePeriod rulePhase ruleAsserts ruleCoversAtomDBatomIdatomName atomNames atomEnableatomSubs atomPeriod atomPhase atomAssigns atomActions atomAsserts atomCoversGlobalgRuleIdgVarIdgArrayIdgVarsgArraysgProbesgPeriodgPhasePathNameUID buildAtomgetput elaboratevarvar'arrayarray'addNameallUVsallUEstoporuleComplexityScheduleschedulereportScheduleModelmodeltestAssign<==atomperiod getPeriodphasegetPhasepathboolbool'int8int8'int16int16'int32int32'int64int64'word8word8'word16word16'word32word32'word64word64'floatfloat'doubledouble'actionprobeprobesincrdecrcondclock nextCoverageassert assertImplycoverTimertimer startTimer startTimerIf timerDone oneShotRise oneShotFalldebounce lookupTable hysteresis RuleCoverageConfig cFuncNamecTypecCode cRuleCoveragecAssert cAssertNamecCover cCoverNamedefaultscTypesc99TypeswriteCcompileRandomrandomTestnamecycles testbenchmodulesincludesdeclCodeinitCodeloopCodeendCode defaultTestrunTests printStrLnprintIntegralEprintFloatingEcompileExampleexamplesigned reduceAndultelaborateRules reIdRules checkEnablecheckAssignConflicts fixedpointeUsage reportPeriod reportUsagetotalComplexityusageusage'split insertUsagerunYghc-primGHC.BoolTrueFalse showConstcodeUEcodeIfdeclUAdeclUV formatConst floatBits doubleBitscodeRulecodePeriodPhase reportResultrunTestrandom32 prePostCode