aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJim Lawson2019-04-29 14:31:36 -0700
committerJim Lawson2019-04-29 14:31:36 -0700
commit9960f3d143c5f95491ea70e4f2410cbcc0c41004 (patch)
tree8f7db2d59bc5edc740f9adf4b965df7d5c8ad66b /src
parenta7cf6ff3416a11088d811a435ba71fd36b191fb4 (diff)
Update NoCircuitDedupAnnotation so it's available from firrtl.stage.FirrtlMain
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/options/Shell.scala4
-rw-r--r--src/main/scala/firrtl/transforms/Dedup.scala16
2 files changed, 17 insertions, 3 deletions
diff --git a/src/main/scala/firrtl/options/Shell.scala b/src/main/scala/firrtl/options/Shell.scala
index 28c0554a..7e338332 100644
--- a/src/main/scala/firrtl/options/Shell.scala
+++ b/src/main/scala/firrtl/options/Shell.scala
@@ -3,6 +3,7 @@
package firrtl.options
import firrtl.AnnotationSeq
+import firrtl.transforms.NoCircuitDedupAnnotation
import logger.{LogLevelAnnotation, ClassLogLevelAnnotation, LogFileAnnotation, LogClassNamesAnnotation}
@@ -64,7 +65,8 @@ class Shell(val applicationName: String) {
ProgramArgsAnnotation.addOptions(parser)
Seq( TargetDirAnnotation,
InputAnnotationFileAnnotation,
- OutputAnnotationFileAnnotation )
+ OutputAnnotationFileAnnotation,
+ NoCircuitDedupAnnotation)
.foreach(_.addOptions(parser))
parser.opt[Unit]("show-registrations")
diff --git a/src/main/scala/firrtl/transforms/Dedup.scala b/src/main/scala/firrtl/transforms/Dedup.scala
index 609b5935..1db1e1ed 100644
--- a/src/main/scala/firrtl/transforms/Dedup.scala
+++ b/src/main/scala/firrtl/transforms/Dedup.scala
@@ -6,10 +6,10 @@ package transforms
import firrtl.ir._
import firrtl.Mappers._
import firrtl.analyses.InstanceGraph
-import firrtl.annotations.TargetToken.{Instance, OfModule, Ref}
import firrtl.annotations._
import firrtl.passes.{InferTypes, MemPortUtils}
import firrtl.Utils.throwInternalError
+import firrtl.options.{HasShellOptions, ShellOption}
// Datastructures
import scala.collection.mutable
@@ -20,7 +20,19 @@ case class NoDedupAnnotation(target: ModuleName) extends SingleTargetAnnotation[
def duplicate(n: ModuleName): NoDedupAnnotation = NoDedupAnnotation(n)
}
-case object NoCircuitDedupAnnotation extends NoTargetAnnotation
+/** If this [[firrtl.annotations.Annotation Annotation]] exists in an [[firrtl.AnnotationSeq AnnotationSeq]],
+ * then the [[firrtl.transforms.DedupModules]] transform will *NOT* be run on the circuit.
+ * - set with '--no-dedup'
+ */
+case object NoCircuitDedupAnnotation extends NoTargetAnnotation with HasShellOptions {
+
+ val options = Seq(
+ new ShellOption[Unit](
+ longOption = "no-dedup",
+ toAnnotationSeq = _ => Seq(NoCircuitDedupAnnotation),
+ helpText = "Do NOT dedup modules" ) )
+
+}
/** Only use on legal Firrtl.
*