aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSchuyler Eldridge2018-08-22 16:11:34 -0400
committerSchuyler Eldridge2018-11-07 13:49:16 -0500
commit845c857b63474c7f584287154e9316a5721ea680 (patch)
treed4a85dcedda3dc7e71ab2879bb287478e336b3c8 /src
parent9516799355c0568409f8f01cfaf5a56a495d40fe (diff)
Make CheckCombLoops a RegisteredTransform
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/main/resources/META-INF/services/firrtl.options.RegisteredTransform1
-rw-r--r--src/main/scala/firrtl/transforms/CheckCombLoops.scala10
2 files changed, 10 insertions, 1 deletions
diff --git a/src/main/resources/META-INF/services/firrtl.options.RegisteredTransform b/src/main/resources/META-INF/services/firrtl.options.RegisteredTransform
index 6a6a858d..bc169b38 100644
--- a/src/main/resources/META-INF/services/firrtl.options.RegisteredTransform
+++ b/src/main/resources/META-INF/services/firrtl.options.RegisteredTransform
@@ -1 +1,2 @@
firrtl.transforms.DeadCodeElimination
+firrtl.transforms.CheckCombLoops
diff --git a/src/main/scala/firrtl/transforms/CheckCombLoops.scala b/src/main/scala/firrtl/transforms/CheckCombLoops.scala
index 44785c62..1a5861c5 100644
--- a/src/main/scala/firrtl/transforms/CheckCombLoops.scala
+++ b/src/main/scala/firrtl/transforms/CheckCombLoops.scala
@@ -15,6 +15,8 @@ import firrtl.annotations._
import firrtl.Utils.throwInternalError
import firrtl.graph.{MutableDiGraph,DiGraph}
import firrtl.analyses.InstanceGraph
+import firrtl.options.RegisteredTransform
+import scopt.OptionParser
object CheckCombLoops {
class CombLoopException(info: Info, mname: String, cycle: Seq[String]) extends PassException(
@@ -42,12 +44,18 @@ case class CombinationalPath(sink: ComponentName, sources: Seq[ComponentName]) e
* @note The pass cannot find loops that pass through ExtModules
* @note The pass will throw exceptions on "false paths"
*/
-class CheckCombLoops extends Transform {
+class CheckCombLoops extends Transform with RegisteredTransform {
def inputForm = LowForm
def outputForm = LowForm
import CheckCombLoops._
+ def addOptions(parser: OptionParser[AnnotationSeq]): Unit = parser
+ .opt[Unit]("no-check-comb-loops")
+ .action( (x, c) => c :+ DontCheckCombLoopsAnnotation )
+ .maxOccurs(1)
+ .text("Do NOT check for combinational loops (not recommended)")
+
/*
* A case class that represents a net in the circuit. This is
* necessary since combinational loop checking is an analysis on the