aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/Emitter.scala
diff options
context:
space:
mode:
authorJared Barocsi2021-09-08 13:30:47 -0700
committerGitHub2021-09-08 13:30:47 -0700
commit0c1ca581efe7fbad99ffc713a3802b5f2ffb68b6 (patch)
treee1c397fa446c373c754b93ea20c7b860c0136639 /src/main/scala/firrtl/Emitter.scala
parented391031dc2008f562e0f5ac53828941c677afc7 (diff)
Multi protobuf module emission and consumption (#2344)
* Add compiler option (`-p`) to emit individual module protobufs * Implement multi module combination when reading directory of protobufs Co-authored-by: Jack Koenig <koenig@sifive.com>
Diffstat (limited to 'src/main/scala/firrtl/Emitter.scala')
-rw-r--r--src/main/scala/firrtl/Emitter.scala39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/Emitter.scala b/src/main/scala/firrtl/Emitter.scala
index 589acc70..0814c268 100644
--- a/src/main/scala/firrtl/Emitter.scala
+++ b/src/main/scala/firrtl/Emitter.scala
@@ -99,7 +99,7 @@ object EmitCircuitAnnotation extends HasShellOptions {
case "low-opt" =>
Seq(
RunFirrtlTransformAnnotation(new ProtoEmitter.OptLow),
- EmitCircuitAnnotation(classOf[ProtoEmitter.Low])
+ EmitCircuitAnnotation(classOf[ProtoEmitter.OptLow])
)
case _ => throw new PhaseException(s"Unknown emitter '$a'! (Did you misspell it?)")
},
@@ -151,6 +151,43 @@ object EmitAllModulesAnnotation extends HasShellOptions {
helpText = "Run the specified module emitter (one file per module)",
shortOption = Some("e"),
helpValueName = Some("<chirrtl|high|middle|low|verilog|mverilog|sverilog>")
+ ),
+ new ShellOption[String](
+ longOption = "emit-modules-protobuf",
+ toAnnotationSeq = (a: String) =>
+ a match {
+ case "chirrtl" =>
+ Seq(
+ RunFirrtlTransformAnnotation(new ProtoEmitter.Chirrtl),
+ EmitAllModulesAnnotation(classOf[ProtoEmitter.Chirrtl])
+ )
+ case "mhigh" =>
+ Seq(
+ RunFirrtlTransformAnnotation(new ProtoEmitter.MHigh),
+ EmitAllModulesAnnotation(classOf[ProtoEmitter.MHigh])
+ )
+ case "high" =>
+ Seq(
+ RunFirrtlTransformAnnotation(new ProtoEmitter.High),
+ EmitAllModulesAnnotation(classOf[ProtoEmitter.High])
+ )
+ case "middle" =>
+ Seq(
+ RunFirrtlTransformAnnotation(new ProtoEmitter.Middle),
+ EmitAllModulesAnnotation(classOf[ProtoEmitter.Middle])
+ )
+ case "low" =>
+ Seq(RunFirrtlTransformAnnotation(new ProtoEmitter.Low), EmitAllModulesAnnotation(classOf[ProtoEmitter.Low]))
+ case "low-opt" =>
+ Seq(
+ RunFirrtlTransformAnnotation(new ProtoEmitter.OptLow),
+ EmitAllModulesAnnotation(classOf[ProtoEmitter.OptLow])
+ )
+ case _ => throw new PhaseException(s"Unknown emitter '$a'! (Did you misspell it?)")
+ },
+ helpText = "Run the specified module emitter (one protobuf per module)",
+ shortOption = Some("p"),
+ helpValueName = Some("<chirrtl|mhigh|high|middle|low|low-opt>")
)
)