aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/Driver.scala
diff options
context:
space:
mode:
authorJack Koenig2018-06-28 16:57:03 -0700
committerGitHub2018-06-28 16:57:03 -0700
commit3243f05a69b4b77761699be412f349a9b8b9193f (patch)
treeaf29ca891c968e718aa1a83c0fd233142395255c /src/main/scala/firrtl/Driver.scala
parent991dba31b751f26d05835094ea49eea83f81247e (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.scala16
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 =>