CIRCT 21.0.0git
|
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 > > | getOrComputeResults (Value value, size_t bitPos) |
ArrayRef< OpenPath > | getResults (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::InstancePathCache * | getInstancePathCache () 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 (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 (Operation *op, 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 >, ObjectToMaxDistance > | fromInputPortToFanOut |
llvm::MapVector< std::tuple< size_t, size_t >, ObjectToMaxDistance > | fromOutputPortToFanIn |
llvm::EquivalenceClasses< std::pair< Value, size_t > > | ec |
DenseMap< std::pair< Value, size_t >, std::pair< Value, size_t > > | ecMap |
hw::HWModuleOp Context * | ctx |
std::unique_ptr< circt::igraph::InstancePathCache > | instancePathCache |
std::unique_ptr< llvm::ImmutableListFactory< DebugPoint > > | debugPointFactory |
DenseMap< std::pair< Value, size_t >, SmallVector< OpenPath > > | cachedResults |
DenseMap< Object, SmallVector< OpenPath > > | fanOutResults |
std::atomic_bool | done |
std::condition_variable | cv |
std::mutex | mutex |
bool | topLevel = false |
Definition at line 419 of file LongestPathAnalysis.cpp.
using LocalVisitor::ObjectToMaxDistance = llvm::MapVector<Object, std::pair<int64_t, llvm::ImmutableList<DebugPoint> >> |
Definition at line 435 of file LongestPathAnalysis.cpp.
LocalVisitor::LocalVisitor | ( | hw::HWModuleOp | module, |
Context * | ctx | ||
) |
Definition at line 579 of file LongestPathAnalysis.cpp.
References ctx, debugPointFactory, done, and instancePathCache.
|
private |
Definition at line 677 of file LongestPathAnalysis.cpp.
References getOrComputeResults().
Referenced by addLogicOp(), and visit().
|
private |
Definition at line 849 of file LongestPathAnalysis.cpp.
References addEdge(), and deduplicatePaths().
|
inlineprivate |
Definition at line 496 of file LongestPathAnalysis.cpp.
References ec.
void LocalVisitor::getClosedPaths | ( | SmallVectorImpl< DataflowPath > & | results | ) | const |
|
inline |
Definition at line 452 of file LongestPathAnalysis.cpp.
References debugPointFactory.
|
inline |
Definition at line 446 of file LongestPathAnalysis.cpp.
References fanOutResults.
|
inline |
Definition at line 444 of file LongestPathAnalysis.cpp.
References fromInputPortToFanOut.
|
inline |
Definition at line 445 of file LongestPathAnalysis.cpp.
References fromOutputPortToFanIn.
|
inline |
Definition at line 442 of file LongestPathAnalysis.cpp.
|
inline |
Definition at line 448 of file LongestPathAnalysis.cpp.
References instancePathCache.
Referenced by LongestPathAnalysis::Impl::getClosedPaths().
FailureOr< ArrayRef< OpenPath > > LocalVisitor::getOrComputeResults | ( | Value | value, |
size_t | bitPos | ||
) |
Definition at line 881 of file LongestPathAnalysis.cpp.
References assert(), cachedResults, deduplicatePaths(), ec, getOrComputeResults(), and visitValue().
Referenced by addEdge(), getOrComputeResults(), initializeAndRun(), initializeAndRun(), initializeAndRun(), markRegFanOut(), and visit().
ArrayRef< OpenPath > LocalVisitor::getResults | ( | Value | value, |
size_t | bitPos | ||
) | const |
Definition at line 590 of file LongestPathAnalysis.cpp.
References cachedResults, ec, and getResults().
Referenced by getResults().
LogicalResult LocalVisitor::initializeAndRun | ( | ) |
Definition at line 1037 of file LongestPathAnalysis.cpp.
References ctx, and getOrComputeResults().
|
private |
Definition at line 960 of file LongestPathAnalysis.cpp.
References assert(), concatList(), ctx, debugPointFactory, fanOutResults, fromInputPortToFanOut, circt::hw::getBitWidth(), getOrComputeResults(), instancePathCache, mapList(), and putUnclosedResult().
|
private |
Definition at line 1020 of file LongestPathAnalysis.cpp.
References fromOutputPortToFanIn, circt::hw::getBitWidth(), getOrComputeResults(), and putUnclosedResult().
|
inline |
Definition at line 441 of file LongestPathAnalysis.cpp.
References topLevel.
|
private |
Definition at line 666 of file LongestPathAnalysis.cpp.
References assert(), ec, and visitValue().
|
private |
|
private |
Definition at line 622 of file LongestPathAnalysis.cpp.
References fanOutResults, fromInputPortToFanOut, circt::hw::getBitWidth(), getOrComputeResults(), and putUnclosedResult().
|
private |
Definition at line 607 of file LongestPathAnalysis.cpp.
Referenced by initializeAndRun(), initializeAndRun(), and markRegFanOut().
|
inline |
Definition at line 440 of file LongestPathAnalysis.cpp.
References topLevel.
|
private |
Definition at line 690 of file LongestPathAnalysis.cpp.
References addLogicOp().
|
private |
Definition at line 695 of file LongestPathAnalysis.cpp.
References addLogicOp().
|
private |
Definition at line 832 of file LongestPathAnalysis.cpp.
References circt::hw::getBitWidth(), and markEquivalent().
|
private |
Definition at line 721 of file LongestPathAnalysis.cpp.
References assert(), circt::hw::getBitWidth(), and markEquivalent().
|
private |
Definition at line 710 of file LongestPathAnalysis.cpp.
References addEdge(), and deduplicatePaths().
|
private |
Definition at line 700 of file LongestPathAnalysis.cpp.
References addLogicOp().
|
private |
Definition at line 729 of file LongestPathAnalysis.cpp.
References circt::hw::getBitWidth(), and markEquivalent().
|
private |
Definition at line 705 of file LongestPathAnalysis.cpp.
References addLogicOp().
|
inlineprivate |
Definition at line 518 of file LongestPathAnalysis.cpp.
|
private |
Definition at line 746 of file LongestPathAnalysis.cpp.
References assert(), concatList(), ctx, debugPointFactory, getOrComputeResults(), instancePathCache, mapList(), and markFanIn().
|
private |
Definition at line 741 of file LongestPathAnalysis.cpp.
References markEquivalent().
|
private |
Definition at line 867 of file LongestPathAnalysis.cpp.
References assert(), ctx, and debugPointFactory.
Referenced by visitValue().
|
inlineprivate |
Definition at line 529 of file LongestPathAnalysis.cpp.
References markFanIn().
|
inlineprivate |
Definition at line 534 of file LongestPathAnalysis.cpp.
References markFanIn().
|
inlineprivate |
Definition at line 539 of file LongestPathAnalysis.cpp.
References markFanIn().
|
inlineprivate |
Definition at line 524 of file LongestPathAnalysis.cpp.
References markFanIn().
|
private |
Definition at line 862 of file LongestPathAnalysis.cpp.
Referenced by visitValue().
|
private |
Definition at line 918 of file LongestPathAnalysis.cpp.
References ctx, debugPointFactory, visit(), and visitDefault().
Referenced by getOrComputeResults(), and markEquivalent().
void LocalVisitor::waitUntilDone | ( | ) | const |
Definition at line 616 of file LongestPathAnalysis.cpp.
|
private |
Definition at line 565 of file LongestPathAnalysis.cpp.
Referenced by getOrComputeResults(), and getResults().
|
private |
Definition at line 557 of file LongestPathAnalysis.cpp.
Referenced by initializeAndRun(), initializeAndRun(), LocalVisitor(), visit(), visit(), and visitValue().
|
mutableprivate |
Definition at line 572 of file LongestPathAnalysis.cpp.
Referenced by waitUntilDone().
|
private |
Definition at line 562 of file LongestPathAnalysis.cpp.
Referenced by getDebugPointFactory(), initializeAndRun(), LocalVisitor(), visit(), visit(), and visitValue().
|
private |
Definition at line 571 of file LongestPathAnalysis.cpp.
Referenced by LocalVisitor(), and waitUntilDone().
|
private |
Definition at line 494 of file LongestPathAnalysis.cpp.
Referenced by findLeader(), getOrComputeResults(), getResults(), and markEquivalent().
|
private |
Definition at line 495 of file LongestPathAnalysis.cpp.
|
private |
Definition at line 568 of file LongestPathAnalysis.cpp.
Referenced by getFanOutResults(), initializeAndRun(), and markRegFanOut().
|
private |
Definition at line 463 of file LongestPathAnalysis.cpp.
Referenced by getFromInputPortToFanOut(), initializeAndRun(), and markRegFanOut().
|
private |
Definition at line 467 of file LongestPathAnalysis.cpp.
Referenced by getFromOutputPortToFanIn(), and initializeAndRun().
|
private |
Definition at line 560 of file LongestPathAnalysis.cpp.
Referenced by getInstancePathCache(), initializeAndRun(), LocalVisitor(), and visit().
|
mutableprivate |
Definition at line 573 of file LongestPathAnalysis.cpp.
Referenced by waitUntilDone().
|
private |
Definition at line 576 of file LongestPathAnalysis.cpp.
Referenced by isTopLevel(), and setTopLevel().