class AnalyzeCircuit extends Transform
AnalyzeCircuit Transform
Walks ir.Circuit, and records the number of muxes it finds, per module.
While some compiler frameworks operate on graphs, we represent a Firrtl circuit using a tree representation:
- A Firrtl Circuit contains a sequence of DefModules.
- A DefModule contains a sequence of Ports, and maybe a Statement.
- A Statement can contain other Statements, or Expressions.
- A Expression can contain other Expressions.
To visit all Firrtl IR nodes in a circuit, we write functions that recursively walk down this tree. To record statistics, we will pass along the Ledger class and use it when we come across a Mux.
See the following links for more detailed explanations: Firrtl's IR:
- https://github.com/ucb-bar/firrtl/wiki/Understanding-Firrtl-Intermediate-Representation Traversing a circuit:
- https://github.com/ucb-bar/firrtl/wiki/traversing-a-circuit for more Common Pass Idioms:
- https://github.com/ucb-bar/firrtl/wiki/Common-Pass-Idioms
- 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
- @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
-
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
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
def
inputForm: LowForm.type
The CircuitForm that this transform requires to operate on
The 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
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
def
outputForm: LowForm.type
The CircuitForm that this transform outputs
The 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
- @throws( ... )
- def walkExpression(ledger: Ledger)(e: Expression): Expression
- def walkModule(ledger: Ledger)(m: DefModule): DefModule
- def walkStatement(ledger: Ledger)(s: Statement): Statement
This is the documentation for Firrtl.