yosys-master
|
Data Structures | |
struct | DiBit |
struct | DiCache |
struct | DiEdge |
struct | DiNode |
struct | GraphData |
struct | NodeSet |
Protected Member Functions | |
SolverWorker (Solver *userSolver) | |
void | setVerbose () |
void | addGraph (std::string graphId, const Graph &graph) |
void | addCompatibleTypes (std::string needleTypeId, std::string haystackTypeId) |
void | addCompatibleConstants (int needleConstant, int haystackConstant) |
void | addSwappablePorts (std::string needleTypeId, const std::set< std::string > &ports) |
void | addSwappablePortsPermutation (std::string needleTypeId, const std::map< std::string, std::string > &portMapping) |
void | solve (std::vector< Solver::Result > &results, std::string needleGraphId, std::string haystackGraphId, const std::map< std::string, std::set< std::string >> &initialMappings, bool allowOverlap, int maxSolutions) |
void | mine (std::vector< Solver::MineResult > &results, int minNodes, int maxNodes, int minMatches, int limitMatchesPerGraph) |
void | clearOverlapHistory () |
void | clearConfig () |
Private Types | |
typedef std::vector< std::map < int, int > > | adjMatrix_t |
Private Member Functions | |
bool | matchNodePorts (const Graph &needle, int needleNodeIdx, const Graph &haystack, int haystackNodeIdx, const std::map< std::string, std::string > &swaps) const |
bool | matchNodes (const GraphData &needle, int needleNodeIdx, const GraphData &haystack, int haystackNodeIdx) const |
void | generateEnumerationMatrix (std::vector< std::set< int >> &enumerationMatrix, const GraphData &needle, const GraphData &haystack, const std::map< std::string, std::set< std::string >> &initialMappings) const |
bool | checkEnumerationMatrix (std::vector< std::set< int >> &enumerationMatrix, int i, int j, const GraphData &needle, const GraphData &haystack) |
bool | pruneEnumerationMatrix (std::vector< std::set< int >> &enumerationMatrix, const GraphData &needle, const GraphData &haystack, int &nextRow, bool allowOverlap) |
void | printEnumerationMatrix (const std::vector< std::set< int >> &enumerationMatrix, int maxHaystackNodeIdx=-1) const |
bool | checkPortmapCandidate (const std::vector< std::set< int >> &enumerationMatrix, const GraphData &needle, const GraphData &haystack, int idx, const std::map< std::string, std::string > ¤tCandidate) |
void | generatePortmapCandidates (std::set< std::map< std::string, std::string >> &portmapCandidates, const std::vector< std::set< int >> &enumerationMatrix, const GraphData &needle, const GraphData &haystack, int idx) |
bool | prunePortmapCandidates (std::vector< std::set< std::map< std::string, std::string >>> &portmapCandidates, std::vector< std::set< int >> enumerationMatrix, const GraphData &needle, const GraphData &haystack) |
void | ullmannRecursion (std::vector< Solver::Result > &results, std::vector< std::set< int >> &enumerationMatrix, int iter, const GraphData &needle, GraphData &haystack, bool allowOverlap, int limitResults) |
void | solveForMining (std::vector< Solver::Result > &results, const GraphData &needle) |
int | testForMining (std::vector< Solver::MineResult > &results, std::set< NodeSet > &usedSets, std::set< NodeSet > &nextPool, NodeSet &testSet, const std::string &graphId, const Graph &graph, int minNodes, int minMatches, int limitMatchesPerGraph) |
void | findNodePairs (std::vector< Solver::MineResult > &results, std::set< NodeSet > &nodePairs, int minNodes, int minMatches, int limitMatchesPerGraph) |
void | findNextPool (std::vector< Solver::MineResult > &results, std::set< NodeSet > &pool, int oldSetSize, int increment, int minNodes, int minMatches, int limitMatchesPerGraph) |
Static Private Member Functions | |
static void | printAdjMatrix (const adjMatrix_t &matrix) |
static int | numberOfPermutations (const std::vector< std::string > &list) |
static void | permutateVectorToMap (std::map< std::string, std::string > &map, const std::vector< std::string > &list, int idx) |
static int | numberOfPermutationsArray (const std::vector< std::vector< std::string >> &list) |
static void | permutateVectorToMapArray (std::map< std::string, std::string > &map, const std::vector< std::vector< std::string >> &list, int idx) |
static void | applyPermutation (std::map< std::string, std::string > &map, const std::map< std::string, std::string > &permutation) |
Private Attributes | |
Solver * | userSolver |
std::map< std::string, GraphData > | graphData |
std::map< std::string, std::set< std::string > > | compatibleTypes |
std::map< int, std::set< int > > | compatibleConstants |
std::map< std::string, std::set< std::set < std::string > > > | swapPorts |
std::map< std::string, std::set< std::map < std::string, std::string > > > | swapPermutations |
DiCache | diCache |
bool | verbose |
Static Private Attributes | |
static const int | maxPermutationsLimit = 1000000 |
Friends | |
class | Solver |
Definition at line 287 of file subcircuit.cc.
|
private |
Definition at line 291 of file subcircuit.cc.
|
inlineprotected |
Definition at line 1474 of file subcircuit.cc.
|
inlineprotected |
Definition at line 1498 of file subcircuit.cc.
|
inlineprotected |
Definition at line 1493 of file subcircuit.cc.
|
inlineprotected |
Definition at line 1483 of file subcircuit.cc.
|
inlineprotected |
Definition at line 1503 of file subcircuit.cc.
|
inlineprotected |
Definition at line 1509 of file subcircuit.cc.
|
inlinestaticprivate |
|
inlineprivate |
Definition at line 885 of file subcircuit.cc.
|
inlineprivate |
Definition at line 965 of file subcircuit.cc.
|
inlineprotected |
Definition at line 1585 of file subcircuit.cc.
|
inlineprotected |
Definition at line 1579 of file subcircuit.cc.
|
inlineprivate |
Definition at line 1397 of file subcircuit.cc.
|
inlineprivate |
Definition at line 1358 of file subcircuit.cc.
|
inlineprivate |
Definition at line 851 of file subcircuit.cc.
|
inlineprivate |
Definition at line 994 of file subcircuit.cc.
|
inlineprivate |
Definition at line 725 of file subcircuit.cc.
|
inlineprivate |
Definition at line 773 of file subcircuit.cc.
|
inlineprotected |
Definition at line 1560 of file subcircuit.cc.
|
inlinestaticprivate |
Definition at line 321 of file subcircuit.cc.
|
inlinestaticprivate |
Definition at line 359 of file subcircuit.cc.
|
inlinestaticprivate |
|
inlinestaticprivate |
Definition at line 370 of file subcircuit.cc.
|
inlinestaticprivate |
|
inlineprivate |
Definition at line 940 of file subcircuit.cc.
|
inlineprivate |
Definition at line 913 of file subcircuit.cc.
|
inlineprivate |
Definition at line 1044 of file subcircuit.cc.
|
inlineprotected |
Definition at line 1478 of file subcircuit.cc.
|
inlineprotected |
Definition at line 1515 of file subcircuit.cc.
|
inlineprivate |
Definition at line 1263 of file subcircuit.cc.
|
inlineprivate |
Definition at line 1283 of file subcircuit.cc.
|
inlineprivate |
Definition at line 1107 of file subcircuit.cc.
|
friend |
Definition at line 1594 of file subcircuit.cc.
|
private |
Definition at line 717 of file subcircuit.cc.
|
private |
Definition at line 716 of file subcircuit.cc.
|
private |
Definition at line 720 of file subcircuit.cc.
|
private |
Definition at line 715 of file subcircuit.cc.
|
staticprivate |
Definition at line 319 of file subcircuit.cc.
|
private |
Definition at line 719 of file subcircuit.cc.
|
private |
Definition at line 718 of file subcircuit.cc.
|
private |
Definition at line 714 of file subcircuit.cc.
|
private |
Definition at line 721 of file subcircuit.cc.