|
CIRCT 23.0.0git
|
Classes | |
| struct | AndInverterVariadicOpConversion |
| struct | CombLoweringPipelineOptions |
| Options for the aig lowering pipeline. More... | |
| class | Cut |
| Represents a cut in the combinational logic network. More... | |
| class | CutEnumerator |
| Cut enumeration engine for combinational logic networks. More... | |
| struct | CutRewritePattern |
| Base class for cut rewriting patterns used in combinational logic optimization. More... | |
| class | CutRewritePatternSet |
| Manages a collection of rewriting patterns for combinational logic optimization. More... | |
| class | CutRewriter |
| Main cut-based rewriting algorithm for combinational logic optimization. More... | |
| struct | CutRewriterOptions |
| Configuration options for the cut-based rewriting algorithm. More... | |
| class | CutSet |
| Manages a collection of cuts for a single logic node using priority cuts algorithm. More... | |
| class | DataflowPath |
| struct | DebugPoint |
| class | IncrementalLongestPathAnalysis |
| class | LogicNetwork |
| Flat logic network representation for efficient cut enumeration. More... | |
| struct | LogicNetworkGate |
| Represents a single gate/node in the flat logic network. More... | |
| class | LongestPathAnalysis |
| struct | LongestPathAnalysisOptions |
| Configuration options for the longest path analysis. More... | |
| class | LongestPathCollection |
| class | MatchedPattern |
| Represents a cut that has been successfully matched to a rewriting pattern. More... | |
| struct | MatchResult |
| Result of matching a cut against a pattern. More... | |
| struct | Object |
| struct | OpenPath |
| class | ResourceUsageAnalysis |
| Analysis that computes resource usage for Synth dialect operations. More... | |
| struct | Signal |
| Edge representation in the logic network. More... | |
| struct | SynthOptimizationPipelineOptions |
| Options for the synth optimization pipeline. More... | |
| class | ValueWithArrivalTime |
| Helper class for delay-aware tree building. More... | |
Typedefs | |
| using | DelayType = int64_t |
Enumerations | |
| enum | TargetIR { AIG , MIG } |
| enum | OptimizationStrategy { OptimizationStrategyArea , OptimizationStrategyTiming } |
| Optimization strategy. More... | |
Functions | |
| llvm::json::Value | toJSON (const circt::synth::DataflowPath &path) |
| void | registerSynthAnalysisPrerequisitePasses () |
| LogicalResult | topologicallySortGraphRegionBlocks (mlir::Operation *op, llvm::function_ref< bool(mlir::Value, mlir::Operation *)> isOperandReady) |
| This function performs a topological sort on the operations within each block of graph regions in the given operation. | |
| template<typename T > | |
| T | buildBalancedTreeWithArrivalTimes (llvm::ArrayRef< T > elements, llvm::function_ref< T(T, T)> combine) |
| Build a balanced binary tree using a priority queue to greedily pair elements with earliest arrival times. | |
| LogicalResult | topologicallySortLogicNetwork (mlir::Operation *op) |
| FailureOr< BinaryTruthTable > | getTruthTable (ValueRange values, Block *block) |
| Get the truth table for operations within a block. | |
| void | buildCombLoweringPipeline (mlir::OpPassManager &pm, const CombLoweringPipelineOptions &options) |
| Populate the synthesis pipelines. | |
| void | buildSynthOptimizationPipeline (mlir::OpPassManager &pm, const SynthOptimizationPipelineOptions &options) |
| void | registerSynthesisPipeline () |
| Register the synthesis pipelines. | |
Variables | |
| static constexpr unsigned | maxTruthTableInputs = 16 |
| Maximum number of inputs supported for truth table generation. | |
| using circt::synth::DelayType = typedef int64_t |
Definition at line 39 of file CutRewriter.h.
Optimization strategy.
| Enumerator | |
|---|---|
| OptimizationStrategyArea | Optimize for minimal area. |
| OptimizationStrategyTiming | Optimize for minimal critical path delay. |
Definition at line 24 of file SynthPasses.h.
| Enumerator | |
|---|---|
| AIG | |
| MIG | |
Definition at line 28 of file SynthesisPipeline.h.
| T circt::synth::buildBalancedTreeWithArrivalTimes | ( | llvm::ArrayRef< T > | elements, |
| llvm::function_ref< T(T, T)> | combine | ||
| ) |
Build a balanced binary tree using a priority queue to greedily pair elements with earliest arrival times.
This minimizes the critical path delay.
Template parameters: T - The element type (must have operator> defined)
The algorithm uses a min-heap to repeatedly combine the two elements with the earliest arrival times, which is optimal for minimizing maximum delay.
Definition at line 105 of file SynthOps.h.
References assert().
| void circt::synth::buildCombLoweringPipeline | ( | mlir::OpPassManager & | pm, |
| const CombLoweringPipelineOptions & | options | ||
| ) |
Populate the synthesis pipelines.
Referenced by registerSynthesisPipeline().
| void circt::synth::buildSynthOptimizationPipeline | ( | mlir::OpPassManager & | pm, |
| const SynthOptimizationPipelineOptions & | options | ||
| ) |
Referenced by registerSynthesisPipeline().
| FailureOr< BinaryTruthTable > circt::synth::getTruthTable | ( | ValueRange | values, |
| Block * | block | ||
| ) |
Get the truth table for operations within a block.
Definition at line 282 of file CutRewriter.cpp.
References circt::createVarMask(), and maxTruthTableInputs.
Referenced by getNPNClassFromModule().
|
inline |
Definition at line 361 of file LongestPathAnalysis.h.
| void circt::synth::registerSynthesisPipeline | ( | void | ) |
Register the synthesis pipelines.
Definition at line 146 of file SynthesisPipeline.cpp.
References buildCombLoweringPipeline(), and buildSynthOptimizationPipeline().
Referenced by registerSynthesisPipeline().
| llvm::json::Value circt::synth::toJSON | ( | const circt::synth::DataflowPath & | path | ) |
Definition at line 433 of file LongestPathAnalysis.cpp.
References circt::synth::DataflowPath::getEndPoint(), circt::synth::DataflowPath::getPath(), circt::synth::DataflowPath::getRoot(), and toJSON().
Referenced by toJSON(), toJSON(), toJSON(), toJSON(), and toJSON().
| LogicalResult circt::synth::topologicallySortGraphRegionBlocks | ( | mlir::Operation * | op, |
| llvm::function_ref< bool(mlir::Value, mlir::Operation *)> | isOperandReady | ||
| ) |
This function performs a topological sort on the operations within each block of graph regions in the given operation.
It uses MLIR's topological sort utility as a wrapper, ensuring that operations are ordered such that all operands are defined before their uses. The isOperandReady callback allows customization of when an operand is considered ready for sorting.
Definition at line 313 of file SynthOps.cpp.
| LogicalResult circt::synth::topologicallySortLogicNetwork | ( | mlir::Operation * | op | ) |
Referenced by circt::synth::CutEnumerator::enumerateCuts(), and circt::synth::CutRewriter::run().
|
staticconstexpr |
Maximum number of inputs supported for truth table generation.
This limit prevents excessive memory usage as truth table size grows exponentially with the number of inputs (2^n entries).
Definition at line 44 of file CutRewriter.h.
Referenced by circt::synth::Cut::computeTruthTable(), getNPNClassFromModule(), and getTruthTable().