diff options
| author | Jack Koenig | 2018-06-28 16:57:03 -0700 |
|---|---|---|
| committer | GitHub | 2018-06-28 16:57:03 -0700 |
| commit | 3243f05a69b4b77761699be412f349a9b8b9193f (patch) | |
| tree | af29ca891c968e718aa1a83c0fd233142395255c /src/main/scala/firrtl/Driver.scala | |
| parent | 991dba31b751f26d05835094ea49eea83f81247e (diff) | |
Protobuf (#832)
Add support for ProtoBuf serialization and deserialization
* Add support for additional features in .proto description
Features added: Info, Fixed[Type|Literal], AnalogType, Attach, Params
* Add support for .pb input files
This involves an API change where FIRRTL no longer implicitly adds .fir
to input file names
Diffstat (limited to 'src/main/scala/firrtl/Driver.scala')
| -rw-r--r-- | src/main/scala/firrtl/Driver.scala | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/Driver.scala b/src/main/scala/firrtl/Driver.scala index 97d0ce4e..2315ad55 100644 --- a/src/main/scala/firrtl/Driver.scala +++ b/src/main/scala/firrtl/Driver.scala @@ -148,6 +148,16 @@ object Driver { LegacyAnnotation.convertLegacyAnnos(annos) } + private sealed trait FileExtension + private case object FirrtlFile extends FileExtension + private case object ProtoBufFile extends FileExtension + + private def getFileExtension(filename: String): FileExtension = + filename.drop(filename.lastIndexOf('.')) match { + case ".pb" => ProtoBufFile + case _ => FirrtlFile // Default to FIRRTL File + } + // Useful for handling erros in the options case class OptionsException(msg: String) extends Exception(msg) @@ -183,7 +193,11 @@ object Driver { } val inputFileName = firrtlConfig.getInputFileName(optionsManager) try { - Parser.parseFile(inputFileName, firrtlConfig.infoMode) + // TODO What does InfoMode mean to ProtoBuf? + getFileExtension(inputFileName) match { + case ProtoBufFile => proto.FromProto.fromFile(inputFileName) + case FirrtlFile => Parser.parseFile(inputFileName, firrtlConfig.infoMode) + } } catch { case _: FileNotFoundException => |
