CIRCT 22.0.0git
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
LocalVisitor Class Reference
Collaboration diagram for LocalVisitor:
Collaboration graph
[legend]

Public Types

using ObjectToMaxDistance = llvm::MapVector< Object, std::pair< int64_t, llvm::ImmutableList< DebugPoint > > >
 

Public Member Functions

 LocalVisitor (hw::HWModuleOp module, Context *ctx)
 
LogicalResult initializeAndRun ()
 
void waitUntilDone () const
 
FailureOr< ArrayRef< OpenPath > > getOrComputePaths (Value value, size_t bitPos)
 
ArrayRef< OpenPath > getCachedPaths (Value value, size_t bitPos) const
 
void getClosedPaths (SmallVectorImpl< DataflowPath > &results) const
 
void setTopLevel ()
 
bool isTopLevel () const
 
hw::HWModuleOp getHWModuleOp () const
 
const auto & getFromInputPortToFanOut () const
 
const auto & getFromOutputPortToFanIn () const
 
const auto & getFanOutResults () const
 
circt::igraph::InstancePathCachegetInstancePathCache () const
 
llvm::ImmutableListFactory< DebugPoint > * getDebugPointFactory () const
 

Private Member Functions

void putUnclosedResult (const Object &object, int64_t delay, llvm::ImmutableList< DebugPoint > history, ObjectToMaxDistance &objectToMaxDistance)
 
LogicalResult initializeAndRun (hw::InstanceOp instance)
 
LogicalResult initializeAndRun (hw::OutputOp output)
 
LogicalResult visitValue (Value value, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (mlir::BlockArgument argument, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (hw::InstanceOp op, size_t bitPos, size_t resultNum, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (hw::WireOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (comb::ConcatOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (comb::ExtractOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (comb::ReplicateOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
std::pair< Value, size_t > findLeader (Value value, size_t bitpos) const
 
LogicalResult markEquivalent (Value from, size_t fromBitPos, Value to, size_t toBitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (aig::AndInverterOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (comb::AndOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (comb::XorOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (comb::OrOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (comb::MuxOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult addLogicOp (Operation *op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (comb::TruthTableOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (hw::ConstantOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (seq::FirRegOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (seq::CompRegOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (seq::FirMemReadOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visit (seq::FirMemReadWriteOp op, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult visitDefault (OpResult result, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult addEdge (Value to, size_t toBitPos, int64_t delay, SmallVectorImpl< OpenPath > &results)
 
LogicalResult markFanIn (Value value, size_t bitPos, SmallVectorImpl< OpenPath > &results)
 
LogicalResult markRegFanOut (Value fanOut, Value start, Value reset={}, Value resetValue={}, Value enable={})
 

Private Attributes

llvm::MapVector< std::pair< BlockArgument, size_t >, ObjectToMaxDistancefromInputPortToFanOut
 
llvm::MapVector< std::tuple< size_t, size_t >, ObjectToMaxDistancefromOutputPortToFanIn
 
llvm::EquivalenceClasses< std::pair< Value, size_t > > ec
 
DenseMap< std::pair< Value, size_t >, std::pair< Value, size_t > > ecMap
 
hw::HWModuleOp Contextctx
 
std::unique_ptr< circt::igraph::InstancePathCacheinstancePathCache
 
std::unique_ptr< llvm::ImmutableListFactory< DebugPoint > > debugPointFactory
 
DenseMap< std::pair< Value, size_t >, SmallVector< OpenPath > > cachedResults
 
DenseMap< Object, SmallVector< OpenPath > > fanOutResults
 
std::unique_ptr< OperationAnalyzeroperationAnalyzer
 
std::atomic_bool done
 
std::condition_variable cv
 
std::mutex mutex
 
bool topLevel = false
 

Detailed Description

Definition at line 578 of file LongestPathAnalysis.cpp.

Member Typedef Documentation

◆ ObjectToMaxDistance

using LocalVisitor::ObjectToMaxDistance = llvm::MapVector<Object, std::pair<int64_t, llvm::ImmutableList<DebugPoint> >>

Definition at line 594 of file LongestPathAnalysis.cpp.

Constructor & Destructor Documentation

◆ LocalVisitor()

LocalVisitor::LocalVisitor ( hw::HWModuleOp  module,
Context ctx 
)

Definition at line 743 of file LongestPathAnalysis.cpp.

References ctx, debugPointFactory, done, instancePathCache, and operationAnalyzer.

Member Function Documentation

◆ addEdge()

LogicalResult LocalVisitor::addEdge ( Value  to,
size_t  toBitPos,
int64_t  delay,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 844 of file LongestPathAnalysis.cpp.

References getOrComputePaths().

Referenced by addLogicOp(), visit(), visit(), and visitDefault().

◆ addLogicOp()

LogicalResult LocalVisitor::addLogicOp ( Operation *  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 1025 of file LongestPathAnalysis.cpp.

References addEdge(), ctx, and filterPaths().

Referenced by visit(), visit(), visit(), and visit().

◆ findLeader()

std::pair< Value, size_t > LocalVisitor::findLeader ( Value  value,
size_t  bitpos 
) const
inlineprivate

Definition at line 655 of file LongestPathAnalysis.cpp.

◆ getCachedPaths()

ArrayRef< OpenPath > LocalVisitor::getCachedPaths ( Value  value,
size_t  bitPos 
) const

Definition at line 756 of file LongestPathAnalysis.cpp.

References cachedResults, ec, and getCachedPaths().

Referenced by getCachedPaths().

◆ getClosedPaths()

void LocalVisitor::getClosedPaths ( SmallVectorImpl< DataflowPath > &  results) const

◆ getDebugPointFactory()

llvm::ImmutableListFactory< DebugPoint > * LocalVisitor::getDebugPointFactory ( ) const
inline

Definition at line 611 of file LongestPathAnalysis.cpp.

◆ getFanOutResults()

const auto & LocalVisitor::getFanOutResults ( ) const
inline

Definition at line 605 of file LongestPathAnalysis.cpp.

◆ getFromInputPortToFanOut()

const auto & LocalVisitor::getFromInputPortToFanOut ( ) const
inline

Definition at line 603 of file LongestPathAnalysis.cpp.

◆ getFromOutputPortToFanIn()

const auto & LocalVisitor::getFromOutputPortToFanIn ( ) const
inline

Definition at line 604 of file LongestPathAnalysis.cpp.

◆ getHWModuleOp()

hw::HWModuleOp LocalVisitor::getHWModuleOp ( ) const
inline

Definition at line 601 of file LongestPathAnalysis.cpp.

◆ getInstancePathCache()

circt::igraph::InstancePathCache * LocalVisitor::getInstancePathCache ( ) const
inline

◆ getOrComputePaths()

FailureOr< ArrayRef< OpenPath > > LocalVisitor::getOrComputePaths ( Value  value,
size_t  bitPos 
)

◆ initializeAndRun() [1/3]

LogicalResult LocalVisitor::initializeAndRun ( )

Definition at line 1243 of file LongestPathAnalysis.cpp.

References ctx, and getOrComputePaths().

◆ initializeAndRun() [2/3]

LogicalResult LocalVisitor::initializeAndRun ( hw::InstanceOp  instance)
private

◆ initializeAndRun() [3/3]

LogicalResult LocalVisitor::initializeAndRun ( hw::OutputOp  output)
private

◆ isTopLevel()

bool LocalVisitor::isTopLevel ( ) const
inline

Definition at line 600 of file LongestPathAnalysis.cpp.

◆ markEquivalent()

LogicalResult LocalVisitor::markEquivalent ( Value  from,
size_t  fromBitPos,
Value  to,
size_t  toBitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 833 of file LongestPathAnalysis.cpp.

References assert(), ec, and visitValue().

Referenced by visit(), visit(), visit(), and visit().

◆ markFanIn()

LogicalResult LocalVisitor::markFanIn ( Value  value,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 912 of file LongestPathAnalysis.cpp.

Referenced by visit().

◆ markRegFanOut()

LogicalResult LocalVisitor::markRegFanOut ( Value  fanOut,
Value  start,
Value  reset = {},
Value  resetValue = {},
Value  enable = {} 
)
private

◆ putUnclosedResult()

void LocalVisitor::putUnclosedResult ( const Object object,
int64_t  delay,
llvm::ImmutableList< DebugPoint history,
ObjectToMaxDistance objectToMaxDistance 
)
private

Definition at line 774 of file LongestPathAnalysis.cpp.

Referenced by initializeAndRun(), initializeAndRun(), and markRegFanOut().

◆ setTopLevel()

void LocalVisitor::setTopLevel ( )
inline

Definition at line 599 of file LongestPathAnalysis.cpp.

◆ visit() [1/17]

LogicalResult LocalVisitor::visit ( aig::AndInverterOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 857 of file LongestPathAnalysis.cpp.

References addLogicOp().

◆ visit() [2/17]

LogicalResult LocalVisitor::visit ( comb::AndOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 863 of file LongestPathAnalysis.cpp.

References addLogicOp().

◆ visit() [3/17]

LogicalResult LocalVisitor::visit ( comb::ConcatOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 1008 of file LongestPathAnalysis.cpp.

References circt::hw::getBitWidth(), and markEquivalent().

◆ visit() [4/17]

LogicalResult LocalVisitor::visit ( comb::ExtractOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 898 of file LongestPathAnalysis.cpp.

References assert(), circt::hw::getBitWidth(), and markEquivalent().

◆ visit() [5/17]

LogicalResult LocalVisitor::visit ( comb::MuxOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 878 of file LongestPathAnalysis.cpp.

References addEdge(), ctx, and filterPaths().

◆ visit() [6/17]

LogicalResult LocalVisitor::visit ( comb::OrOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 868 of file LongestPathAnalysis.cpp.

References addLogicOp().

◆ visit() [7/17]

LogicalResult LocalVisitor::visit ( comb::ReplicateOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 906 of file LongestPathAnalysis.cpp.

References circt::hw::getBitWidth(), and markEquivalent().

◆ visit() [8/17]

LogicalResult LocalVisitor::visit ( comb::TruthTableOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 889 of file LongestPathAnalysis.cpp.

References addEdge().

◆ visit() [9/17]

LogicalResult LocalVisitor::visit ( comb::XorOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 873 of file LongestPathAnalysis.cpp.

References addLogicOp().

◆ visit() [10/17]

LogicalResult LocalVisitor::visit ( hw::ConstantOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
inlineprivate

Definition at line 679 of file LongestPathAnalysis.cpp.

◆ visit() [11/17]

LogicalResult LocalVisitor::visit ( hw::InstanceOp  op,
size_t  bitPos,
size_t  resultNum,
SmallVectorImpl< OpenPath > &  results 
)
private

◆ visit() [12/17]

LogicalResult LocalVisitor::visit ( hw::WireOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 918 of file LongestPathAnalysis.cpp.

References markEquivalent().

◆ visit() [13/17]

LogicalResult LocalVisitor::visit ( mlir::BlockArgument  argument,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 1071 of file LongestPathAnalysis.cpp.

References assert(), ctx, and debugPointFactory.

Referenced by visitValue().

◆ visit() [14/17]

LogicalResult LocalVisitor::visit ( seq::CompRegOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
inlineprivate

Definition at line 690 of file LongestPathAnalysis.cpp.

◆ visit() [15/17]

LogicalResult LocalVisitor::visit ( seq::FirMemReadOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
inlineprivate

Definition at line 695 of file LongestPathAnalysis.cpp.

◆ visit() [16/17]

LogicalResult LocalVisitor::visit ( seq::FirMemReadWriteOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
inlineprivate

Definition at line 700 of file LongestPathAnalysis.cpp.

◆ visit() [17/17]

LogicalResult LocalVisitor::visit ( seq::FirRegOp  op,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
inlineprivate

Definition at line 685 of file LongestPathAnalysis.cpp.

◆ visitDefault()

LogicalResult LocalVisitor::visitDefault ( OpResult  result,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 1037 of file LongestPathAnalysis.cpp.

References addEdge(), and operationAnalyzer.

Referenced by visitValue().

◆ visitValue()

LogicalResult LocalVisitor::visitValue ( Value  value,
size_t  bitPos,
SmallVectorImpl< OpenPath > &  results 
)
private

Definition at line 1122 of file LongestPathAnalysis.cpp.

References ctx, debugPointFactory, visit(), and visitDefault().

Referenced by getOrComputePaths(), and markEquivalent().

◆ waitUntilDone()

void LocalVisitor::waitUntilDone ( ) const

Definition at line 783 of file LongestPathAnalysis.cpp.

References cv, done, and mutex.

Referenced by Context::getLocalVisitorMutable().

Member Data Documentation

◆ cachedResults

DenseMap<std::pair<Value, size_t>, SmallVector<OpenPath> > LocalVisitor::cachedResults
private

Definition at line 726 of file LongestPathAnalysis.cpp.

Referenced by getCachedPaths(), and getOrComputePaths().

◆ ctx

hw::HWModuleOp Context* LocalVisitor::ctx
private

◆ cv

std::condition_variable LocalVisitor::cv
mutableprivate

Definition at line 736 of file LongestPathAnalysis.cpp.

Referenced by waitUntilDone().

◆ debugPointFactory

std::unique_ptr<llvm::ImmutableListFactory<DebugPoint> > LocalVisitor::debugPointFactory
private

Definition at line 723 of file LongestPathAnalysis.cpp.

Referenced by initializeAndRun(), LocalVisitor(), visit(), visit(), and visitValue().

◆ done

std::atomic_bool LocalVisitor::done
private

Definition at line 735 of file LongestPathAnalysis.cpp.

Referenced by LocalVisitor(), and waitUntilDone().

◆ ec

llvm::EquivalenceClasses<std::pair<Value, size_t> > LocalVisitor::ec
private

Definition at line 653 of file LongestPathAnalysis.cpp.

Referenced by getCachedPaths(), getOrComputePaths(), and markEquivalent().

◆ ecMap

DenseMap<std::pair<Value, size_t>, std::pair<Value, size_t> > LocalVisitor::ecMap
private

Definition at line 654 of file LongestPathAnalysis.cpp.

◆ fanOutResults

DenseMap<Object, SmallVector<OpenPath> > LocalVisitor::fanOutResults
private

Definition at line 729 of file LongestPathAnalysis.cpp.

Referenced by initializeAndRun(), and markRegFanOut().

◆ fromInputPortToFanOut

llvm::MapVector<std::pair<BlockArgument, size_t>, ObjectToMaxDistance> LocalVisitor::fromInputPortToFanOut
private

Definition at line 622 of file LongestPathAnalysis.cpp.

Referenced by initializeAndRun(), and markRegFanOut().

◆ fromOutputPortToFanIn

llvm::MapVector<std::tuple<size_t, size_t>, ObjectToMaxDistance> LocalVisitor::fromOutputPortToFanIn
private

Definition at line 626 of file LongestPathAnalysis.cpp.

Referenced by initializeAndRun().

◆ instancePathCache

std::unique_ptr<circt::igraph::InstancePathCache> LocalVisitor::instancePathCache
private

Definition at line 721 of file LongestPathAnalysis.cpp.

Referenced by initializeAndRun(), LocalVisitor(), and visit().

◆ mutex

std::mutex LocalVisitor::mutex
mutableprivate

Definition at line 737 of file LongestPathAnalysis.cpp.

Referenced by waitUntilDone().

◆ operationAnalyzer

std::unique_ptr<OperationAnalyzer> LocalVisitor::operationAnalyzer
private

Definition at line 732 of file LongestPathAnalysis.cpp.

Referenced by LocalVisitor(), and visitDefault().

◆ topLevel

bool LocalVisitor::topLevel = false
private

Definition at line 740 of file LongestPathAnalysis.cpp.


The documentation for this class was generated from the following file: