diff options
Diffstat (limited to 'src/main/scala/firrtl/LoweringCompilers.scala')
| -rw-r--r-- | src/main/scala/firrtl/LoweringCompilers.scala | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/LoweringCompilers.scala b/src/main/scala/firrtl/LoweringCompilers.scala index c4230b90..ba686f08 100644 --- a/src/main/scala/firrtl/LoweringCompilers.scala +++ b/src/main/scala/firrtl/LoweringCompilers.scala @@ -111,6 +111,15 @@ class LowFirrtlOptimization extends CoreTransform { passes.CommonSubexpressionElimination, new firrtl.transforms.DeadCodeElimination) } +/** Runs runs only the optimization passes needed for Verilog emission */ +class MinimumLowFirrtlOptimization extends CoreTransform { + def inputForm = LowForm + def outputForm = LowForm + def transforms = Seq( + passes.Legalize, + passes.memlib.VerilogMemDelays, // TODO move to Verilog emitter + passes.SplitExpressions) +} import CompilerUtils.getLoweringTransforms @@ -142,3 +151,10 @@ class VerilogCompiler extends Compiler { def transforms: Seq[Transform] = getLoweringTransforms(ChirrtlForm, LowForm) ++ Seq(new LowFirrtlOptimization, new BlackBoxSourceHelper) } + +/** Emits Verilog without optimizations */ +class MinimumVerilogCompiler extends Compiler { + def emitter = new VerilogEmitter + def transforms: Seq[Transform] = getLoweringTransforms(ChirrtlForm, LowForm) ++ + Seq(new MinimumLowFirrtlOptimization, new BlackBoxSourceHelper) +} |
