diff options
| author | Jack Koenig | 2018-02-27 18:07:11 -0800 |
|---|---|---|
| committer | GitHub | 2018-02-27 18:07:11 -0800 |
| commit | c7eb1570dfb1c7701ea32d1209982a053f3cec1d (patch) | |
| tree | 3f509b202d82841c5dad5588d1f953a25d389b44 /src/main/scala/firrtl/passes/memlib/InferReadWrite.scala | |
| parent | b90fc784a1819c1d7905910130a7da022214bc22 (diff) | |
Refactor Annotations (#721)
- Old Annotation renamed to deprecated LegacyAnnotation
- Annotation is now a trait that can be extended
- New JsonProtocol for Annotation [de]serialization
- Replace AnnotationMap with AnnotationSeq
- Deprecate Transform.getMyAnnotations
- Update Transforms
- Turn on deprecation warnings
- Remove deprecated Driver.compile
- Make AnnotationTests abstract with Legacy and Json subclasses
- Add functionality to convert LegacyAnnotations of built-in annos
This will give a noisy warning and is more of a best effort than a
robust solution.
Fixes #475 Closes #609
Diffstat (limited to 'src/main/scala/firrtl/passes/memlib/InferReadWrite.scala')
| -rw-r--r-- | src/main/scala/firrtl/passes/memlib/InferReadWrite.scala | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala b/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala index 73fec1ee..661d6df4 100644 --- a/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala +++ b/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala @@ -13,15 +13,7 @@ import firrtl.passes.memlib.AnalysisUtils.{Connects, getConnects, getOrigin} import WrappedExpression.weq import annotations._ -object InferReadWriteAnnotation { - def apply(t: String) = Annotation(CircuitName(t), classOf[InferReadWrite], "") - def apply(target: CircuitName) = Annotation(target, classOf[InferReadWrite], "") - def unapply(a: Annotation): Option[(CircuitName)] = a match { - case Annotation(CircuitName(t), transform, "") if transform == classOf[InferReadWrite] => - Some(CircuitName(t)) - case _ => None - } -} +case object InferReadWriteAnnotation extends NoTargetAnnotation // This pass examine the enable signals of the read & write ports of memories // whose readLatency is greater than 1 (usually SeqMem in Chisel). @@ -159,10 +151,13 @@ class InferReadWrite extends Transform with SeqTransformBased { ResolveKinds, ResolveGenders ) - def execute(state: CircuitState): CircuitState = getMyAnnotations(state) match { - case Nil => state - case Seq(InferReadWriteAnnotation(CircuitName(state.circuit.main))) => + def execute(state: CircuitState): CircuitState = { + val runTransform = state.annotations.contains(InferReadWriteAnnotation) + if (runTransform) { val ret = runTransforms(state) CircuitState(ret.circuit, outputForm, ret.annotations, ret.renames) + } else { + state + } } } |
