class AnalyzeCircuit extends Transform
AnalyzeCircuit Transform
Walks firrtl.ir.Circuit, and records the number of muxes and instances it finds, per module.
While the Firrtl parser emits a bare form of the IR (located in firrtl.ir._), it is often useful to have more information in these case classes. To do this, the Firrtl compiler has mirror "working" classes for the following IR nodes (which contain additional fields):
- DefInstance -> WDefInstance
- SubAccess -> WSubAccess
- SubIndex -> WSubIndex
- SubField -> WSubField
- Reference -> WRef
Take a look at ToWorkingIR in src/main/scala/firrtl/passes/Passes.scala to see how Firrtl IR nodes are replaced with working IR nodes.
Future lessons will explain the WIR's additional fields. For now, it is enough to know that the transform ResolveAndCheck populates these fields, and checks the legality of the circuit. If your transform is creating new WIR nodes, use the following "unknown" values in the WIR node, and then call ResolveAndCheck at the end of your transform:
- Kind -> ExpKind
- Gender -> UNKNOWNGENDER
- Type -> UnknownType
The following CircuitForms require WIR instead of IR nodes:
- HighForm
- MidForm
- LowForm
See the following links for more detailed explanations: IR vs Working IR
- TODO(izraelevitz)
- Alphabetic
- By Inheritance
- AnalyzeCircuit
- Transform
- LazyLogging
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new AnalyzeCircuit()
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[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
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
- Definition Classes
- AnalyzeCircuit → Transform
-
def
finalize(): Unit
- Attributes
- protected[java.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: LowForm.type
The firrtl.CircuitForm that this transform requires to operate on
The firrtl.CircuitForm that this transform requires to operate on
- Definition Classes
- AnalyzeCircuit → Transform
-
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
-
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: LowForm.type
The firrtl.CircuitForm that this transform outputs
The firrtl.CircuitForm that this transform outputs
- Definition Classes
- AnalyzeCircuit → Transform
-
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
-
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
- @native() @throws( ... )
- def walkExpression(ledger: Ledger)(e: Expression): Expression
- def walkModule(ledger: Ledger)(m: DefModule): DefModule
- def walkStatement(ledger: Ledger)(s: Statement): Statement
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.