aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/transforms
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/transforms')
-rw-r--r--src/main/scala/firrtl/transforms/CombineCats.scala20
-rw-r--r--src/main/scala/firrtl/transforms/InlineBooleanExpressions.scala42
2 files changed, 39 insertions, 23 deletions
diff --git a/src/main/scala/firrtl/transforms/CombineCats.scala b/src/main/scala/firrtl/transforms/CombineCats.scala
index 3014d0e3..6d05698f 100644
--- a/src/main/scala/firrtl/transforms/CombineCats.scala
+++ b/src/main/scala/firrtl/transforms/CombineCats.scala
@@ -7,6 +7,7 @@ import firrtl.PrimOps._
import firrtl.WrappedExpression._
import firrtl.annotations.NoTargetAnnotation
import firrtl.options.Dependency
+import firrtl.stage.PrettyNoExprInlining
import scala.collection.mutable
@@ -74,11 +75,18 @@ class CombineCats extends Transform with DependencyAPIMigration {
val defaultMaxCatLen = 10
def execute(state: CircuitState): CircuitState = {
- val maxCatLen = state.annotations.collectFirst {
- case m: MaxCatLenAnnotation => m.maxCatLen
- }.getOrElse(defaultMaxCatLen)
-
- val modulesx = state.circuit.modules.map(CombineCats.onMod(maxCatLen))
- state.copy(circuit = state.circuit.copy(modules = modulesx))
+ val run = !state.annotations.contains(PrettyNoExprInlining)
+
+ if (run) {
+ val maxCatLen = state.annotations.collectFirst {
+ case m: MaxCatLenAnnotation => m.maxCatLen
+ }.getOrElse(defaultMaxCatLen)
+
+ val modulesx = state.circuit.modules.map(CombineCats.onMod(maxCatLen))
+ state.copy(circuit = state.circuit.copy(modules = modulesx))
+ } else {
+ logger.info(s"--${PrettyNoExprInlining.longOption} specified, skipping...")
+ state
+ }
}
}
diff --git a/src/main/scala/firrtl/transforms/InlineBooleanExpressions.scala b/src/main/scala/firrtl/transforms/InlineBooleanExpressions.scala
index 31d69cc4..b405f353 100644
--- a/src/main/scala/firrtl/transforms/InlineBooleanExpressions.scala
+++ b/src/main/scala/firrtl/transforms/InlineBooleanExpressions.scala
@@ -3,6 +3,7 @@
package firrtl
package transforms
+import firrtl.stage.PrettyNoExprInlining
import firrtl.annotations.{NoTargetAnnotation, Target}
import firrtl.annotations.TargetToken.{fromStringToTargetToken, OfModule, Ref}
import firrtl.ir._
@@ -159,26 +160,33 @@ class InlineBooleanExpressions extends Transform with DependencyAPIMigration {
}
def execute(state: CircuitState): CircuitState = {
- val dontTouchMap: Map[OfModule, Set[Ref]] = {
- val refTargets = state.annotations.flatMap {
- case anno: HasDontTouches => anno.dontTouches
- case o => Nil
- }
- val dontTouches: Seq[(OfModule, Ref)] = refTargets.map {
- case r => Target.referringModule(r).module.OfModule -> r.ref.Ref
+ val run = !state.annotations.contains(PrettyNoExprInlining)
+
+ if (run) {
+ val dontTouchMap: Map[OfModule, Set[Ref]] = {
+ val refTargets = state.annotations.flatMap {
+ case anno: HasDontTouches => anno.dontTouches
+ case o => Nil
+ }
+ val dontTouches: Seq[(OfModule, Ref)] = refTargets.map {
+ case r => Target.referringModule(r).module.OfModule -> r.ref.Ref
+ }
+ dontTouches.groupBy(_._1).mapValues(_.map(_._2).toSet).toMap
}
- dontTouches.groupBy(_._1).mapValues(_.map(_._2).toSet).toMap
- }
- val maxInlineCount = state.annotations.collectFirst {
- case InlineBooleanExpressionsMax(max) => max
- }.getOrElse(InlineBooleanExpressions.defaultMax)
+ val maxInlineCount = state.annotations.collectFirst {
+ case InlineBooleanExpressionsMax(max) => max
+ }.getOrElse(InlineBooleanExpressions.defaultMax)
- val modulesx = state.circuit.modules.map { m =>
- val mapMethods = new MapMethods(maxInlineCount, dontTouchMap.getOrElse(m.name.OfModule, Set.empty[Ref]))
- m.mapStmt(mapMethods.onStmt(_))
- }
+ val modulesx = state.circuit.modules.map { m =>
+ val mapMethods = new MapMethods(maxInlineCount, dontTouchMap.getOrElse(m.name.OfModule, Set.empty[Ref]))
+ m.mapStmt(mapMethods.onStmt(_))
+ }
- state.copy(circuit = state.circuit.copy(modules = modulesx))
+ state.copy(circuit = state.circuit.copy(modules = modulesx))
+ } else {
+ logger.info(s"--${PrettyNoExprInlining.longOption} specified, skipping...")
+ state
+ }
}
}