23#include "mlir/Pass/PassManager.h"
24#include "mlir/Transforms/Passes.h"
25#include "llvm/ADT/SmallVector.h"
36template <
typename... AllowedOpTy>
38 (ops.push_back(AllowedOpTy::getOperationName().str()), ...);
45 pm.addPass(createConvertCombToDatapath());
47 circt::ConvertDatapathToCombOptions datapathOptions;
49 pm.addPass(createConvertDatapathToComb(datapathOptions));
53 circt::ConvertCombToSynthOptions convOptions;
58 convOptions.additionalLegalOps);
59 pm.addPass(circt::createConvertCombToSynth(convOptions));
61 pm.addPass(createCSEPass());
64 pm.addPass(circt::hw::createHWAggregateToComb());
65 circt::ConvertCombToSynthOptions convOptions;
66 convOptions.targetIR = options.
targetIR.getValue() == TargetIR::AIG
67 ? CombToSynthTargetIR::AIG
68 : CombToSynthTargetIR::MIG;
69 pm.addPass(circt::createConvertCombToSynth(convOptions));
70 pm.addPass(createCSEPass());
72 pm.addPass(createCSEPass());
78 pm.addPass(synth::createLowerVariadic());
84 pm.addPass(synth::createLowerWordToBits());
85 pm.addPass(createCSEPass());
86 pm.addPass(createStructuralHash());
88 pm.addPass(createStructuralHash());
91 synth::ABCRunnerOptions abcOptions;
92 abcOptions.abcPath = options.
abcPath;
93 abcOptions.abcCommands.assign(options.
abcCommands.begin(),
96 pm.addPass(synth::createABCRunner(abcOptions));
106 PassPipelineRegistration<CombLoweringPipelineOptions>(
107 "synth-comb-lowering-pipeline",
108 "The default pipeline for until Comb lowering",
110 PassPipelineRegistration<SynthOptimizationPipelineOptions>(
111 "synth-optimization-pipeline",
112 "The default pipeline for AIG optimization pipeline",
static void partiallyLegalizeCombToSynth(SmallVectorImpl< std::string > &ops)
Helper function to populate additional legal ops for partial legalization.
void buildSynthOptimizationPipeline(mlir::OpPassManager &pm, const SynthOptimizationPipelineOptions &options)
void buildCombLoweringPipeline(mlir::OpPassManager &pm, const CombLoweringPipelineOptions &options)
Populate the synthesis pipelines.
void registerSynthesisPipeline()
Register the synthesis pipelines.
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
std::unique_ptr< Pass > createSimpleCanonicalizerPass()
Create a simple canonicalizer pass.
Options for the aig lowering pipeline.
PassOptions::Option< TargetIR > targetIR
PassOptions::Option< bool > disableDatapath
PassOptions::Option< bool > timingAware
Options for the synth optimization pipeline.
PassOptions::Option< bool > disableWordToBits
PassOptions::ListOption< std::string > abcCommands
PassOptions::Option< std::string > abcPath
PassOptions::Option< bool > ignoreAbcFailures