Class

firrtl_interpreter

LoFirrtlExpressionEvaluator

Related Doc: package firrtl_interpreter

Permalink

class LoFirrtlExpressionEvaluator extends SimpleLogger

This is the evaluation engine for the FirrtlTerp it requires the previousState of the system

Source
LoFirrtlExpressionEvaluator.scala
Linear Supertypes
SimpleLogger, AnyRef, Any
Type Hierarchy
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. LoFirrtlExpressionEvaluator
  2. SimpleLogger
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new LoFirrtlExpressionEvaluator(dependencyGraph: DependencyGraph, circuitState: CircuitState)

    Permalink

    circuitState

    the state of the system, should not be modified before all dependencies have been resolved

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. var allowCombinationalLoops: Boolean

    Permalink
  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. def binaryBitWise(opCode: PrimOp, args: Seq[Expression], tpe: Type): Concrete

    Permalink
  7. def bitOps(opCode: PrimOp, args: Seq[Expression], parameters: Seq[BigInt], tpe: Type): Concrete

    Permalink
  8. def bitSelectOp(opCode: PrimOp, args: Seq[Expression], parameters: Seq[BigInt], tpe: Type): Concrete

    Permalink
  9. def castingOp(opCode: PrimOp, args: Seq[Expression], tpe: Type): Concrete

    Permalink
  10. def checkPrints(): Unit

    Permalink
  11. def checkStops(): Option[Int]

    Permalink
  12. val circuitState: CircuitState

    Permalink

    the state of the system, should not be modified before all dependencies have been resolved

  13. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate() @throws( ... )
  14. def comparisonOp(opCode: PrimOp, args: Seq[Expression], tpe: Type): Concrete

    Permalink
  15. var defaultKeysToResolve: Array[String]

    Permalink
  16. val dependencyGraph: DependencyGraph

    Permalink
  17. def dynamicBitOps(opCode: PrimOp, args: Seq[Expression], parameters: Seq[BigInt], tpe: Type): Concrete

    Permalink
  18. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  19. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  20. def evaluate(expression: Expression, leftHandSideOption: Option[String] = None): Concrete

    Permalink

    evaluate expression, if this expression references an ephemeral value (wire or node) that has not been evaluated yet, recursively evaluate that reference first.

    evaluate expression, if this expression references an ephemeral value (wire or node) that has not been evaluated yet, recursively evaluate that reference first. LoFirrtl guarantees that there will be no loops here

    expression

    a LoFirrtl expression to evaluate

    returns

    the resulting Concrete Note: OpCodes here are double matched, once in main loop herein, then again in function suitable for that family of opCodes, it makes the code cleaner, I think, but may ultimately need to be inlined for performance

  21. var evaluateAll: Boolean

    Permalink
  22. val evaluationStack: ExpressionExecutionStack

    Permalink
  23. var exceptionCaught: Boolean

    Permalink
  24. def executeFormattedPrint(formatString: String, allArgs: Seq[Any]): String

    Permalink
  25. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
    Annotations
    @HotSpotIntrinsicCandidate()
  26. def getValue(key: String): Concrete

    Permalink

    get the value from the current circuit state, if it is dependent on something else we haven't computed yet.

    get the value from the current circuit state, if it is dependent on something else we haven't computed yet. resolve this new dependency first then pull it's value from the current state

    key

    the name of the assignable thing

  27. def getWidth(tpe: Type): IntWidth

    Permalink
  28. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
    Annotations
    @HotSpotIntrinsicCandidate()
  29. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  30. var keyOrderInitialized: Boolean

    Permalink
  31. def log(message: ⇒ String): Unit

    Permalink
  32. def makeSIntValue(value: BigInt, intWidth: IntWidth): SIntLiteral

    Permalink
  33. def makeUIntValue(value: BigInt, intWidth: IntWidth): UIntLiteral

    Permalink
  34. def mask(number: BigInt, size: BigInt): BigInt

    Permalink

    mask off bits above size in a BigInt, uses modulo, constructing the modulo base on the size working around BigInt's shift by int requirement

    mask off bits above size in a BigInt, uses modulo, constructing the modulo base on the size working around BigInt's shift by int requirement

    number

    number to mask

    size

    how many bits to keep

  35. def mathPrimitive(opCode: PrimOp, args: Seq[Expression], tpe: Type): Concrete

    Permalink
  36. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  37. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate()
  38. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate()
  39. def oneArgOps(opCode: PrimOp, args: Seq[Expression], parameters: Seq[BigInt], tpe: Type): Concrete

    Permalink
  40. val orderedKeysToResolve: ArrayBuffer[String]

    Permalink
  41. def paddingOp(opCode: PrimOp, args: Seq[Expression], parameters: Seq[BigInt], tpe: Type): Concrete

    Permalink
  42. def resolveDependencies(specificDependencies: Iterable[String]): Unit

    Permalink
  43. def resolveRegister(key: String): Concrete

    Permalink

    when resolving registers dependency, consider the resetCondition to be the dependency if appropriate

    when resolving registers dependency, consider the resetCondition to be the dependency if appropriate

    key

    name of register

    returns

    new concrete value for register

  44. def setVerbose(value: Boolean = true): Unit

    Permalink
    Definition Classes
    SimpleLogger
  45. def shiftLeft(number: BigInt, size: BigInt): BigInt

    Permalink

    shifts number left

    shifts number left

    number

    number to shift

    size

    how many bits to shift

  46. def shiftRight(number: BigInt, size: BigInt): BigInt

    Permalink

    shifts number right

    shifts number right

    number

    number to shift

    size

    how many bits to shift

  47. def showStack(): Unit

    Permalink
  48. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  49. val timer: Timer

    Permalink
  50. var toResolve: HashSet[String]

    Permalink
  51. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  52. var useTopologicalSortedKeys: Boolean

    Permalink
  53. var verbose: Boolean

    Permalink
    Definition Classes
    SimpleLogger
  54. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  55. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  56. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Deprecated Value Members

  1. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @Deprecated @deprecated @throws( classOf[java.lang.Throwable] )
    Deprecated

    (Since version ) see corresponding Javadoc for more information.

Inherited from SimpleLogger

Inherited from AnyRef

Inherited from Any

Ungrouped