aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/annotations/LoadMemoryAnnotation.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/annotations/LoadMemoryAnnotation.scala')
-rw-r--r--src/main/scala/firrtl/annotations/LoadMemoryAnnotation.scala24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/main/scala/firrtl/annotations/LoadMemoryAnnotation.scala b/src/main/scala/firrtl/annotations/LoadMemoryAnnotation.scala
index c5dae954..c52bf5f6 100644
--- a/src/main/scala/firrtl/annotations/LoadMemoryAnnotation.scala
+++ b/src/main/scala/firrtl/annotations/LoadMemoryAnnotation.scala
@@ -4,13 +4,25 @@ package firrtl.annotations
import java.io.File
-/** Enumeration of the two types of `readmem` statements available in Verilog.
+import firrtl.FIRRTLException
+
+/** Representation of the two types of `readmem` statements available in Verilog.
*/
-object MemoryLoadFileType extends Enumeration {
- type FileType = Value
+sealed abstract class MemoryLoadFileType(val value: String) {
+ def serialize: String = value
+}
- val Hex: Value = Value("h")
- val Binary: Value = Value("b")
+object MemoryLoadFileType {
+ // purely for backwards compatibility with chisel3's ChiselLoadMemoryAnnotation
+ type FileType = MemoryLoadFileType
+
+ case object Hex extends MemoryLoadFileType("h")
+ case object Binary extends MemoryLoadFileType("b")
+ def deserialize(s: String): MemoryLoadFileType = s match {
+ case "h" => MemoryLoadFileType.Hex
+ case "b" => MemoryLoadFileType.Binary
+ case _ => throw new FIRRTLException(s"Unrecognized MemoryLoadFileType: $s")
+ }
}
/** Firrtl implementation for load memory
@@ -21,7 +33,7 @@ object MemoryLoadFileType extends Enumeration {
case class LoadMemoryAnnotation(
target: ComponentName,
fileName: String,
- hexOrBinary: MemoryLoadFileType.FileType = MemoryLoadFileType.Hex,
+ hexOrBinary: MemoryLoadFileType = MemoryLoadFileType.Hex,
originalMemoryNameOpt: Option[String] = None
) extends SingleTargetAnnotation[Named] {