aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/annotations/MemoryInitAnnotation.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/annotations/MemoryInitAnnotation.scala')
-rw-r--r--src/main/scala/firrtl/annotations/MemoryInitAnnotation.scala15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/annotations/MemoryInitAnnotation.scala b/src/main/scala/firrtl/annotations/MemoryInitAnnotation.scala
index 1e81301d..e87066fb 100644
--- a/src/main/scala/firrtl/annotations/MemoryInitAnnotation.scala
+++ b/src/main/scala/firrtl/annotations/MemoryInitAnnotation.scala
@@ -8,7 +8,8 @@ import firrtl.{
MemoryFileInlineInit,
MemoryInitValue,
MemoryRandomInit,
- MemoryScalarInit
+ MemoryScalarInit,
+ Utils
}
/**
@@ -25,6 +26,9 @@ case class MemoryRandomInitAnnotation(target: ReferenceTarget) extends MemoryIni
override def duplicate(n: ReferenceTarget): Annotation = copy(n)
override def initValue: MemoryInitValue = MemoryRandomInit
override def isRandomInit: Boolean = true
+ override private[firrtl] def dedup: Option[(Any, Annotation, ReferenceTarget)] = Some(
+ ((target.pathlessTarget, Nil), copy(target = target.pathlessTarget), target)
+ )
}
/** Initialize all entries of the `target` memory with the scalar `value`. */
@@ -32,6 +36,9 @@ case class MemoryScalarInitAnnotation(target: ReferenceTarget, value: BigInt) ex
override def duplicate(n: ReferenceTarget): Annotation = copy(n)
override def initValue: MemoryInitValue = MemoryScalarInit(value)
override def isRandomInit: Boolean = false
+ override private[firrtl] def dedup: Option[(Any, Annotation, ReferenceTarget)] = Some(
+ ((target.pathlessTarget, value), copy(target = target.pathlessTarget), target)
+ )
}
/** Initialize the `target` memory with the array of `values` which must be the same size as the memory depth. */
@@ -39,6 +46,9 @@ case class MemoryArrayInitAnnotation(target: ReferenceTarget, values: Seq[BigInt
override def duplicate(n: ReferenceTarget): Annotation = copy(n)
override def initValue: MemoryInitValue = MemoryArrayInit(values)
override def isRandomInit: Boolean = false
+ override private[firrtl] def dedup: Option[(Any, Annotation, ReferenceTarget)] = Some(
+ ((target.pathlessTarget, values), copy(target = target.pathlessTarget), target)
+ )
}
/** Initialize the `target` memory with inline readmem[hb] statement. */
@@ -51,6 +61,9 @@ case class MemoryFileInlineAnnotation(
override def duplicate(n: ReferenceTarget): Annotation = copy(n)
override def initValue: MemoryInitValue = MemoryFileInlineInit(filename, hexOrBinary)
override def isRandomInit: Boolean = false
+ override private[firrtl] def dedup: Option[(Any, Annotation, ReferenceTarget)] = Some(
+ ((target.pathlessTarget, filename), copy(target = target.pathlessTarget), target)
+ )
}
/** Initializes the memory inside the `ifndef SYNTHESIS` block (default) */