CIRCT 22.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  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  Object
 
struct  OpenPath
 
struct  SynthOptimizationPipelineOptions
 Options for the synth optimization pipeline. 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.
 
LogicalResult topologicallySortLogicNetwork (mlir::Operation *op)
 
FailureOr< BinaryTruthTablegetTruthTable (ValueRange values, Block *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 36 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

◆ 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 
)

Definition at line 193 of file CutRewriter.cpp.

References computeTruthTable().

Referenced by getNPNClassFromModule().

◆ registerSynthAnalysisPrerequisitePasses()

void circt::synth::registerSynthAnalysisPrerequisitePasses ( )
inline

Definition at line 358 of file LongestPathAnalysis.h.

◆ registerSynthesisPipeline()

void circt::synth::registerSynthesisPipeline ( void  )

Register the synthesis pipelines.

Definition at line 113 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 307 of file SynthOps.cpp.

Referenced by topologicallySortLogicNetwork().

◆ 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 41 of file CutRewriter.h.

Referenced by computeTruthTable(), and getNPNClassFromModule().