diff options
| author | Jack Koenig | 2017-06-12 12:02:35 -0700 |
|---|---|---|
| committer | Jack Koenig | 2017-06-12 18:52:46 -0700 |
| commit | 880a5a5b72551cc1002cb67aa14b3a25ae352b2b (patch) | |
| tree | e410e94c696592a024adf2a9f5d6594eeef7818f /src | |
| parent | 50fb23572c78463d44a071d575c8f2212a048f8e (diff) | |
Change CheckCombLoops to a Transform
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/LoweringCompilers.scala | 2 | ||||
| -rw-r--r-- | src/main/scala/firrtl/passes/CheckCombLoops.scala | 19 |
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) + } + } |
