CIRCT 23.0.0git
Loading...
Searching...
No Matches
Classes | Typedefs | Enumerations | Functions | Variables
circt::synth Namespace Reference

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 >
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< BinaryTruthTablegetTruthTable (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.
 

Typedef Documentation

◆ DelayType

using circt::synth::DelayType = typedef int64_t

Definition at line 39 of file CutRewriter.h.

Enumeration Type Documentation

◆ OptimizationStrategy

Optimization strategy.

Enumerator
OptimizationStrategyArea 

Optimize for minimal area.

OptimizationStrategyTiming 

Optimize for minimal critical path delay.

Definition at line 24 of file SynthPasses.h.

◆ TargetIR

Enumerator
AIG 
MIG 

Definition at line 28 of file SynthesisPipeline.h.

Function Documentation

◆ buildBalancedTreeWithArrivalTimes()

template<typename T >
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().

◆ buildCombLoweringPipeline()

void circt::synth::buildCombLoweringPipeline ( mlir::OpPassManager &  pm,
const CombLoweringPipelineOptions options 
)

Populate the synthesis pipelines.

Referenced by registerSynthesisPipeline().

◆ buildSynthOptimizationPipeline()

void circt::synth::buildSynthOptimizationPipeline ( mlir::OpPassManager &  pm,
const SynthOptimizationPipelineOptions options 
)

◆ getTruthTable()

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().

◆ registerSynthAnalysisPrerequisitePasses()

void circt::synth::registerSynthAnalysisPrerequisitePasses ( )
inline

Definition at line 361 of file LongestPathAnalysis.h.

◆ registerSynthesisPipeline()

void circt::synth::registerSynthesisPipeline ( void  )

Register the synthesis pipelines.

Definition at line 146 of file SynthesisPipeline.cpp.

References buildCombLoweringPipeline(), and buildSynthOptimizationPipeline().

Referenced by registerSynthesisPipeline().

◆ toJSON()

llvm::json::Value circt::synth::toJSON ( const circt::synth::DataflowPath path)

◆ topologicallySortGraphRegionBlocks()

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.

◆ topologicallySortLogicNetwork()

LogicalResult circt::synth::topologicallySortLogicNetwork ( mlir::Operation *  op)

Variable Documentation

◆ maxTruthTableInputs

constexpr unsigned circt::synth::maxTruthTableInputs = 16
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().