From 9960f3d143c5f95491ea70e4f2410cbcc0c41004 Mon Sep 17 00:00:00 2001 From: Jim Lawson Date: Mon, 29 Apr 2019 14:31:36 -0700 Subject: Update NoCircuitDedupAnnotation so it's available from firrtl.stage.FirrtlMain --- src/main/scala/firrtl/options/Shell.scala | 4 +++- src/main/scala/firrtl/transforms/Dedup.scala | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'src') 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. * -- cgit v1.2.3