CIRCT 22.0.0git
Loading...
Searching...
No Matches
SynthesisPipeline.h
Go to the documentation of this file.
1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file defines the default synthesis pipeline.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef CIRCT_DIALECT_SYNTH_TRANSFORMS_SYNTHESISPIPELINE_H
14#define CIRCT_DIALECT_SYNTH_TRANSFORMS_SYNTHESISPIPELINE_H
15
17#include "mlir/Pass/PassManager.h"
18#include "mlir/Pass/PassOptions.h"
19#include <string>
20#include <vector>
21
22//===----------------------------------------------------------------------===//
23// Pipeline Options
24//===----------------------------------------------------------------------===//
25namespace circt {
26namespace synth {
27
29 // Lower to And-Inverter Graph
31 // Lower to Majority-Inverter Graph
32 MIG
33};
34
35/// Options for the aig lowering pipeline.
37 : public mlir::PassPipelineOptions<CombLoweringPipelineOptions> {
38 PassOptions::Option<bool> disableDatapath{
39 *this, "disable-datapath",
40 llvm::cl::desc("Disable datapath optimization passes"),
41 llvm::cl::init(false)};
42 PassOptions::Option<bool> timingAware{
43 *this, "timing-aware",
44 llvm::cl::desc("Lower operators in a timing-aware fashion"),
45 llvm::cl::init(false)};
46 PassOptions::Option<TargetIR> targetIR{
47 *this, "lowering-target", llvm::cl::desc("Target IR to lower to"),
48 llvm::cl::init(TargetIR::AIG)};
49 PassOptions::Option<OptimizationStrategy> synthesisStrategy{
50 *this, "synthesis-strategy", llvm::cl::desc("Synthesis strategy to use"),
51 llvm::cl::values(
52 clEnumValN(OptimizationStrategyArea, "area", "Optimize for area"),
53 clEnumValN(OptimizationStrategyTiming, "timing",
54 "Optimize for timing")),
55 llvm::cl::init(OptimizationStrategyTiming)};
56};
57
58/// Options for the synth optimization pipeline.
60 : public mlir::PassPipelineOptions<SynthOptimizationPipelineOptions> {
61 PassOptions::ListOption<std::string> abcCommands{
62 *this, "abc-commands", llvm::cl::desc("ABC passes to run")};
63
64 PassOptions::Option<std::string> abcPath{
65 *this, "abc-path", llvm::cl::desc("Path to ABC"), llvm::cl::init("abc")};
66
67 PassOptions::Option<bool> ignoreAbcFailures{
68 *this, "ignore-abc-failures",
69 llvm::cl::desc("Continue on ABC failure instead of aborting"),
70 llvm::cl::init(false)};
71
72 PassOptions::Option<bool> disableWordToBits{
73 *this, "disable-word-to-bits",
74 llvm::cl::desc("Disable LowerWordToBits pass"), llvm::cl::init(false)};
75};
76
77//===----------------------------------------------------------------------===//
78// Pipeline Functions
79//===----------------------------------------------------------------------===//
80
81/// Populate the synthesis pipelines.
82void buildCombLoweringPipeline(mlir::OpPassManager &pm,
83 const CombLoweringPipelineOptions &options);
85 mlir::OpPassManager &pm, const SynthOptimizationPipelineOptions &options);
86
87/// Register the synthesis pipelines.
89
90} // namespace synth
91} // namespace circt
92
93#endif // CIRCT_DIALECT_SYNTH_TRANSFORMS_SYNTHESISPIPELINE_H
@ OptimizationStrategyArea
Optimize for minimal area.
Definition SynthPasses.h:25
@ OptimizationStrategyTiming
Optimize for minimal critical path delay.
Definition SynthPasses.h:26
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.
Definition synth.py:1
Options for the aig lowering pipeline.
PassOptions::Option< TargetIR > targetIR
PassOptions::Option< bool > disableDatapath
PassOptions::Option< OptimizationStrategy > synthesisStrategy
Options for the synth optimization pipeline.
PassOptions::ListOption< std::string > abcCommands
PassOptions::Option< std::string > abcPath