object ExpandWhens extends Transform with Pass
Expand Whens
This pass does the following things: $ - Remove last connect semantics $ - Remove conditional blocks $ - Eliminate concept of scoping $ - Consolidate attaches
- Source
- ExpandWhens.scala
- Note
Assumes bulk connects and isInvalids have been expanded
,Assumes all references are declared
- Alphabetic
- By Inheritance
- ExpandWhens
- Pass
- Transform
- TransformLike
- LazyLogging
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
type
Defaults = Seq[Map[WrappedExpression, Expression]]
List of all netlists of each declared scope, ordered from closest to farthest
List of all netlists of each declared scope, ordered from closest to farthest
- Note
Note immutable.Map because conversion from mutable.LinkedHashMap to mutable.Map is VERY slow
-
class
InfoMap extends HashMap[String, Info]
Collects Info data serialized names for nodes, aggregating into MultiInfo when necessary
-
type
Netlist = LinkedHashMap[WrappedExpression, Expression]
Maps a reference to whatever connects to it.
Maps a reference to whatever connects to it. Used to resolve last connect semantics
-
type
NodeMap = HashMap[MemoizedHash[Expression], String]
Maps an expression to a declared node name.
Maps an expression to a declared node name. Used to memoize predicates
-
type
Simlist = ArrayBuffer[Statement]
Contains all simulation constructs
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
execute(state: CircuitState): CircuitState
Perform the transform, encode renaming with RenameMap, and can delete annotations Called by runTransform.
Perform the transform, encode renaming with RenameMap, and can delete annotations Called by runTransform.
- state
Input Firrtl AST
- returns
A transformed Firrtl AST
-
def
expandWhens(m: Module): (Netlist, Simlist, Seq[Attach], Statement, InfoMap)
Expands a module's when statements
Expands a module's when statements
- m
Module to expand
- Note
Netlist maps a reference to whatever connects to it
,Simlist contains all simulation constructs in m
,Seq[Attach] contains all Attach statements (unsimplified)
,Statement contains all declarations in the module (including DefNode's)
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
inputForm: CircuitForm
The firrtl.CircuitForm that this transform requires to operate on
The firrtl.CircuitForm that this transform requires to operate on
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
val
logger: Logger
- Definition Classes
- LazyLogging
-
def
name: String
A convenience function useful for debugging and error messages
A convenience function useful for debugging and error messages
- Definition Classes
- Transform → TransformLike
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
outputForm: CircuitForm
The firrtl.CircuitForm that this transform outputs
The firrtl.CircuitForm that this transform outputs
-
def
run(c: Circuit): Circuit
Returns circuit with when and last connection semantics resolved
Returns circuit with when and last connection semantics resolved
- Definition Classes
- ExpandWhens → Pass
-
final
def
runTransform(state: CircuitState): CircuitState
Perform the transform and update annotations.
Perform the transform and update annotations.
- state
Input Firrtl AST
- returns
A transformed Firrtl AST
- Definition Classes
- Transform
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
transform(state: CircuitState): CircuitState
A mathematical transform on some type
A mathematical transform on some type
- returns
an output object of the same type
- Definition Classes
- Transform → TransformLike
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
Deprecated Value Members
-
final
def
getMyAnnotations(state: CircuitState): Seq[Annotation]
Convenience method to get annotations relevant to this Transform
Convenience method to get annotations relevant to this Transform
- state
The CircuitState form which to extract annotations
- returns
A collection of annotations
- Definition Classes
- Transform
- Annotations
- @deprecated
- Deprecated
(Since version 1.1) Just collect the actual Annotation types the transform wants
This is the documentation for Firrtl.