diff options
| author | Jim Lawson | 2019-03-18 15:20:51 -0700 |
|---|---|---|
| committer | GitHub | 2019-03-18 15:20:51 -0700 |
| commit | 9911b3467de2ebe92827ddc3288bd6db477cc636 (patch) | |
| tree | 4e791d82069c0e94fd5c34cd674a9b9596042d8b /src/main/scala/firrtl/annotations/LoadMemoryAnnotation.scala | |
| parent | a97a81bc0f717f80bb70733795ac5337653b58c5 (diff) | |
Add serialization support for LoadMemoryFileType in LoadMemoryAnnotation (#1056)
* Add serialization support for LoadMemoryFileType in LoadMemoryAnnotation
Add custom LoadMemoryFileTypeSerializer.
Add test to verify LoadMemoryAnnotation can be correctly serialized/deserialized.
* Simplify and focus LoadMemoryAnnotation serialization/deserialization.
Respond to comments on earlier implementations.
* Add type FileType definition for current chisel3 code.
Diffstat (limited to 'src/main/scala/firrtl/annotations/LoadMemoryAnnotation.scala')
| -rw-r--r-- | src/main/scala/firrtl/annotations/LoadMemoryAnnotation.scala | 24 |
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] { |
