CIRCT 22.0.0git
|
#include "circt/Dialect/Synth/Analysis/LongestPathAnalysis.h"
#include "circt/Dialect/Comb/CombOps.h"
#include "circt/Dialect/HW/HWInstanceGraph.h"
#include "circt/Dialect/HW/HWOps.h"
#include "circt/Dialect/HW/PortImplementation.h"
#include "circt/Dialect/Seq/SeqOps.h"
#include "circt/Dialect/Seq/SeqTypes.h"
#include "circt/Dialect/Synth/SynthOps.h"
#include "circt/Support/InstanceGraph.h"
#include "circt/Support/LLVM.h"
#include "mlir/IR/BuiltinAttributes.h"
#include "mlir/IR/BuiltinOps.h"
#include "mlir/IR/Diagnostics.h"
#include "mlir/IR/Operation.h"
#include "mlir/IR/Threading.h"
#include "mlir/IR/Value.h"
#include "mlir/IR/Visitors.h"
#include "mlir/Pass/AnalysisManager.h"
#include "mlir/Pass/PassManager.h"
#include "mlir/Pass/PassRegistry.h"
#include "mlir/Support/FileUtilities.h"
#include "mlir/Support/LLVM.h"
#include "llvm/ADT//MapVector.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMapInfoVariant.h"
#include "llvm/ADT/EquivalenceClasses.h"
#include "llvm/ADT/ImmutableList.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/JSON.h"
#include "llvm/Support/LogicalResult.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/Mutex.h"
#include "llvm/Support/raw_ostream.h"
#include <condition_variable>
#include <cstddef>
#include <cstdint>
#include <memory>
#include <mutex>
Go to the source code of this file.
Classes | |
class | Context |
This class provides a thread-safe interface to access the analysis results. More... | |
class | OperationAnalyzer |
class | LocalVisitor |
struct | synth.LongestPathAnalysis::Impl |
Internal implementation for LongestPathAnalysis. More... | |
Macros | |
#define | DEBUG_TYPE "aig-longest-path-analysis" |
Functions | |
static size_t | getBitWidth (Value value) |
template<typename T , typename Key > | |
static void | deduplicatePathsImpl (SmallVectorImpl< T > &results, size_t startIndex, llvm::function_ref< Key(const T &)> keyFn, llvm::function_ref< int64_t(const T &)> delayFn) |
static void | filterPaths (SmallVectorImpl< OpenPath > &results, bool keepOnlyMaxDelay, bool isLocalScope) |
static void | filterPaths (SmallVectorImpl< DataflowPath > &results, size_t startIndex=0) |
static llvm::ImmutableList< DebugPoint > | mapList (llvm::ImmutableListFactory< DebugPoint > *debugPointFactory, llvm::ImmutableList< DebugPoint > list, llvm::function_ref< DebugPoint(DebugPoint)> fn) |
static llvm::ImmutableList< DebugPoint > | concatList (llvm::ImmutableListFactory< DebugPoint > *debugPointFactory, llvm::ImmutableList< DebugPoint > lhs, llvm::ImmutableList< DebugPoint > rhs) |
static StringAttr | getNameImpl (Value value) |
static void | printObjectImpl (llvm::raw_ostream &os, const Object &object, int64_t delay=-1, llvm::ImmutableList< DebugPoint > history={}, StringRef comment="") |
template<typename T > | |
static int64_t | getMaxDelayInPaths (ArrayRef< T > paths) |
static llvm::json::Value | toJSON (const circt::igraph::InstancePath &path) |
static llvm::json::Value | toJSON (const circt::synth::Object &object) |
static llvm::json::Value | toJSON (const DataflowPath::EndPointType &path, hw::HWModuleOp root) |
static llvm::json::Value | toJSON (const DebugPoint &point) |
static llvm::json::Value | toJSON (const OpenPath &path) |
#define DEBUG_TYPE "aig-longest-path-analysis" |
Definition at line 76 of file LongestPathAnalysis.cpp.
|
static |
Definition at line 198 of file LongestPathAnalysis.cpp.
References concatList().
Referenced by concatList(), LocalVisitor::initializeAndRun(), and LocalVisitor::visit().
|
static |
Definition at line 90 of file LongestPathAnalysis.cpp.
Referenced by filterPaths().
|
static |
Definition at line 175 of file LongestPathAnalysis.cpp.
References deduplicatePathsImpl().
|
static |
Definition at line 115 of file LongestPathAnalysis.cpp.
References assert().
Referenced by LocalVisitor::addLogicOp(), synth.LongestPathAnalysis::Impl::computeGlobalPaths(), LocalVisitor::getOrComputePaths(), and LocalVisitor::visit().
|
static |
Definition at line 80 of file LongestPathAnalysis.cpp.
|
static |
Definition at line 275 of file LongestPathAnalysis.cpp.
Referenced by synth.LongestPathAnalysis::Impl::getAverageMaxDelay(), and synth.LongestPathAnalysis::Impl::getMaxDelay().
|
static |
Definition at line 207 of file LongestPathAnalysis.cpp.
Referenced by circt::synth::Object::getName().
|
static |
Definition at line 187 of file LongestPathAnalysis.cpp.
References mapList().
Referenced by LocalVisitor::initializeAndRun(), mapList(), circt::synth::OpenPath::prependPaths(), and LocalVisitor::visit().
|
static |
Definition at line 253 of file LongestPathAnalysis.cpp.
Referenced by circt::synth::Object::print(), circt::synth::DebugPoint::print(), and circt::synth::OpenPath::print().
|
static |
Definition at line 382 of file LongestPathAnalysis.cpp.
|
static |
Definition at line 393 of file LongestPathAnalysis.cpp.
References circt::synth::toJSON().
|
static |
Definition at line 401 of file LongestPathAnalysis.cpp.
References circt::synth::toJSON().
|
static |
Definition at line 416 of file LongestPathAnalysis.cpp.
References synth.DebugPoint::comment, synth.DebugPoint::delay, synth.DebugPoint::object, and circt::synth::toJSON().
|
static |
Definition at line 424 of file LongestPathAnalysis.cpp.
References circt::synth::toJSON().