aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJack Koenig2017-06-12 12:02:35 -0700
committerJack Koenig2017-06-12 18:52:46 -0700
commit880a5a5b72551cc1002cb67aa14b3a25ae352b2b (patch)
treee410e94c696592a024adf2a9f5d6594eeef7818f /src
parent50fb23572c78463d44a071d575c8f2212a048f8e (diff)
Change CheckCombLoops to a Transform
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/LoweringCompilers.scala2
-rw-r--r--src/main/scala/firrtl/passes/CheckCombLoops.scala19
2 files changed, 16 insertions, 5 deletions
diff --git a/src/main/scala/firrtl/LoweringCompilers.scala b/src/main/scala/firrtl/LoweringCompilers.scala
index b28dd1b2..161c2771 100644
--- a/src/main/scala/firrtl/LoweringCompilers.scala
+++ b/src/main/scala/firrtl/LoweringCompilers.scala
@@ -85,7 +85,7 @@ class MiddleFirrtlToLowFirrtl extends CoreTransform {
passes.ResolveGenders,
passes.InferWidths,
passes.Legalize,
- passes.CheckCombLoops)
+ new passes.CheckCombLoops)
}
/** Runs a series of optimization passes on LowFirrtl
diff --git a/src/main/scala/firrtl/passes/CheckCombLoops.scala b/src/main/scala/firrtl/passes/CheckCombLoops.scala
index 624945c3..da5cc549 100644
--- a/src/main/scala/firrtl/passes/CheckCombLoops.scala
+++ b/src/main/scala/firrtl/passes/CheckCombLoops.scala
@@ -14,6 +14,12 @@ import firrtl.Utils.throwInternalError
import firrtl.graph.{MutableDiGraph,DiGraph}
import firrtl.analyses.InstanceGraph
+object CheckCombLoops {
+ class CombLoopException(info: Info, mname: String, cycle: Seq[String]) extends PassException(
+ s"$info: [module $mname] Combinational loop detected:\n" + cycle.mkString("\n"))
+
+}
+
/** Finds and detects combinational logic loops in a circuit, if any
* exist. Returns the input circuit with no modifications.
*
@@ -24,11 +30,11 @@ import firrtl.analyses.InstanceGraph
* @note The pass cannot find loops that pass through ExtModules
* @note The pass will throw exceptions on "false paths"
*/
+class CheckCombLoops extends Transform {
+ def inputForm = LowForm
+ def outputForm = LowForm
-object CheckCombLoops extends Pass {
-
- class CombLoopException(info: Info, mname: String, cycle: Seq[String]) extends PassException(
- s"$info: [module $mname] Combinational loop detected:\n" + cycle.mkString("\n"))
+ import CheckCombLoops._
/*
* A case class that represents a net in the circuit. This is
@@ -202,4 +208,9 @@ object CheckCombLoops extends Pass {
c
}
+ def execute(state: CircuitState): CircuitState = {
+ val result = run(state.circuit)
+ CircuitState(result, outputForm, state.annotations, state.renames)
+ }
+
}