13#ifndef CIRCT_DIALECT_SYNTH_TRANSFORMS_SYNTHESISPIPELINE_H
14#define CIRCT_DIALECT_SYNTH_TRANSFORMS_SYNTHESISPIPELINE_H
17#include "mlir/Pass/PassManager.h"
18#include "mlir/Pass/PassOptions.h"
30 :
public mlir::PassPipelineOptions<CombLoweringPipelineOptions> {
32 *
this,
"disable-datapath",
33 llvm::cl::desc(
"Disable datapath optimization passes"),
34 llvm::cl::init(
false)};
36 *
this,
"timing-aware",
37 llvm::cl::desc(
"Lower operators in a timing-aware fashion"),
38 llvm::cl::init(
false)};
40 *
this,
"synthesis-strategy", llvm::cl::desc(
"Synthesis strategy to use"),
44 "Optimize for timing")),
50 :
public mlir::PassPipelineOptions<SynthOptimizationPipelineOptions> {
52 *
this,
"abc-commands", llvm::cl::desc(
"ABC passes to run")};
55 *
this,
"abc-path", llvm::cl::desc(
"Path to ABC"), llvm::cl::init(
"abc")};
58 *
this,
"ignore-abc-failures",
59 llvm::cl::desc(
"Continue on ABC failure instead of aborting"),
60 llvm::cl::init(
false)};
63 *
this,
"disable-word-to-bits",
64 llvm::cl::desc(
"Disable LowerWordToBits pass"), llvm::cl::init(
false)};
67 *
this,
"disable-sop-balancing",
68 llvm::cl::desc(
"Disable SOPBalancing pass"), llvm::cl::init(
true)};
71 *
this,
"disable-functional-reduction",
72 llvm::cl::desc(
"Disable FunctionalReduction pass"),
73 llvm::cl::init(
false)};
76 *
this,
"functional-reduction-conflict-limit",
77 llvm::cl::desc(
"Per-SAT-call conflict budget for FunctionalReduction. "
78 "-1 disables the limit."),
82 *
this,
"timing-aware",
83 llvm::cl::desc(
"Lower operators in a timing-aware fashion"),
84 llvm::cl::init(
false)};
@ OptimizationStrategyArea
Optimize for minimal area.
@ OptimizationStrategyTiming
Optimize for minimal critical path delay.
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.
Options for the aig lowering pipeline.
PassOptions::Option< bool > disableDatapath
PassOptions::Option< bool > timingAware
PassOptions::Option< OptimizationStrategy > synthesisStrategy
Options for the synth optimization pipeline.
PassOptions::Option< bool > timingAware
PassOptions::Option< bool > disableWordToBits
PassOptions::ListOption< std::string > abcCommands
PassOptions::Option< std::string > abcPath
PassOptions::Option< bool > disableFunctionalReduction
PassOptions::Option< int64_t > functionalReductionConflictLimit
PassOptions::Option< bool > disableSOPBalancing
PassOptions::Option< bool > ignoreAbcFailures