From 9516799355c0568409f8f01cfaf5a56a495d40fe Mon Sep 17 00:00:00 2001 From: Schuyler Eldridge Date: Wed, 22 Aug 2018 16:11:59 -0400 Subject: Make DeadCodeElimination a RegisteredTransform Signed-off-by: Schuyler Eldridge --- src/main/scala/firrtl/transforms/DeadCodeElimination.scala | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/main/scala/firrtl/transforms') diff --git a/src/main/scala/firrtl/transforms/DeadCodeElimination.scala b/src/main/scala/firrtl/transforms/DeadCodeElimination.scala index 523c997b..8f9fad46 100644 --- a/src/main/scala/firrtl/transforms/DeadCodeElimination.scala +++ b/src/main/scala/firrtl/transforms/DeadCodeElimination.scala @@ -11,6 +11,8 @@ import firrtl.Mappers._ import firrtl.WrappedExpression._ import firrtl.Utils.{throwInternalError, toWrappedExpression, kind} import firrtl.MemoizedHash._ +import firrtl.options.RegisteredTransform +import scopt.OptionParser import collection.mutable import java.io.{File, FileWriter} @@ -30,10 +32,16 @@ import java.io.{File, FileWriter} * circumstances of their instantiation in their parent module, they will still not be removed. To * remove such modules, use the [[NoDedupAnnotation]] to prevent deduplication. */ -class DeadCodeElimination extends Transform with ResolvedAnnotationPaths { +class DeadCodeElimination extends Transform with ResolvedAnnotationPaths with RegisteredTransform { def inputForm = LowForm def outputForm = LowForm + def addOptions(parser: OptionParser[AnnotationSeq]): Unit = parser + .opt[Unit]("no-dce") + .action( (x, c) => c :+ NoDCEAnnotation ) + .maxOccurs(1) + .text("Do NOT run dead code elimination") + /** Based on LogicNode ins CheckCombLoops, currently kind of faking it */ private type LogicNode = MemoizedHash[WrappedExpression] private object LogicNode { -- cgit v1.2.3 From 845c857b63474c7f584287154e9316a5721ea680 Mon Sep 17 00:00:00 2001 From: Schuyler Eldridge Date: Wed, 22 Aug 2018 16:11:34 -0400 Subject: Make CheckCombLoops a RegisteredTransform Signed-off-by: Schuyler Eldridge --- src/main/scala/firrtl/transforms/CheckCombLoops.scala | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/main/scala/firrtl/transforms') 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 -- cgit v1.2.3