diff options
| author | Jared Barocsi | 2021-09-08 13:30:47 -0700 |
|---|---|---|
| committer | GitHub | 2021-09-08 13:30:47 -0700 |
| commit | 0c1ca581efe7fbad99ffc713a3802b5f2ffb68b6 (patch) | |
| tree | e1c397fa446c373c754b93ea20c7b860c0136639 /src/main/scala/firrtl/Emitter.scala | |
| parent | ed391031dc2008f562e0f5ac53828941c677afc7 (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.scala | 39 |
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>") ) ) |
