the state of the system, should not be modified before all dependencies have been resolved
the state of the system, should not be modified before all dependencies have been resolved
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
a LoFirrtl expression to evaluate
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
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
the name of the assignable thing
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 to mask
how many bits to keep
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
name of register
new concrete value for register
shifts number left
shifts number left
number to shift
how many bits to shift
shifts number right
shifts number right
number to shift
how many bits to shift
This is the evaluation engine for the FirrtlTerp it requires the previousState of the system