10#include <boost/config.hpp>
13#include <boost/graph/graph_traits.hpp>
14#include <boost/graph/adjacency_list.hpp>
15#include <boost/algorithm/string.hpp>
16#include <boost/graph/dijkstra_shortest_paths.hpp>
17#include <boost/property_map/property_map.hpp>
18#include <boost/graph/graphviz.hpp>
19#include <boost/graph/copy.hpp>
27#include <boost/algorithm/string.hpp>
29#include "spdlog/spdlog.h"
30#include <spdlog/sinks/stdout_color_sinks.h>
31#include <boost/program_options.hpp>
32#include "../lib/json.h"
36#define MAX_DIST 10000000
39#define computeTopoEnable 0
40#define maxIterations 39
42#define sortAlgorithm 0
43#define skipFullyLockedNodes 1
44#define allowWildcardInLocking 0
91typedef boost::adjacency_list<boost::listS, boost::vecS, boost::bidirectionalS, DotVertex, EdgeProperty>
DirectedGraph;
98typedef DirectedGraph::edge_descriptor
Edge;
113extern std::vector<RoutingTree> *
Trees;
114extern std::vector<std::list<int>> *
Users;
119extern std::map<int, std::string>
hNames;
120extern std::map<std::string, int>
hNamesInv;
121extern std::map<int, std::string>
gNames;
122extern std::map<std::string, int>
gNamesInv;
136extern std::shared_ptr<spdlog::logger>
UGRAMM;
137extern std::shared_ptr<spdlog::logger>
drcLogger;
139extern std::vector<std::string>
inPin;
140extern std::vector<std::string>
outPin;
146extern std::map<std::string, std::vector<std::string>>
ugrammConfig;
std::map< int, int > invUsers
Definition UGRAMM.cpp:29
std::vector< std::string > inPin
Definition UGRAMM.cpp:40
DirectedGraph::edge_descriptor Edge
Definition UGRAMM.h:98
std::vector< std::list< int > > * Users
Definition UGRAMM.cpp:28
std::vector< RoutingTree > * Trees
Definition UGRAMM.cpp:27
json UgrammPragmaConfig
Definition UGRAMM.cpp:53
int max_iter
Definition UGRAMM.cpp:26
std::map< int, std::string > hNames
Definition UGRAMM.cpp:33
std::vector< int > * HistoryCosts
Definition UGRAMM.cpp:30
boost::graph_traits< DirectedGraph >::out_edge_iterator OutEdgeIterator
Definition UGRAMM.h:97
float HFac
Definition UGRAMM.cpp:19
std::map< std::string, int > hNamesInv
Definition UGRAMM.cpp:34
std::map< std::string, int > gNamesInv
Definition UGRAMM.cpp:36
boost::graph_traits< DirectedGraph >::vertex_iterator vertex_iterator
Definition UGRAMM.h:96
std::map< std::string, int > gNamesInv_FuncCell
Definition UGRAMM.cpp:37
std::vector< std::string > outPin
Definition UGRAMM.cpp:41
std::bitset< 100000 > explored
Definition UGRAMM.cpp:38
int iterCount
Definition UGRAMM.cpp:17
boost::adjacency_list< boost::listS, boost::vecS, boost::bidirectionalS, DotVertex, EdgeProperty > DirectedGraph
Definition UGRAMM.h:91
float PFac
Definition UGRAMM.cpp:18
float base_cost
Definition UGRAMM.cpp:22
boost::graph_traits< DirectedGraph >::out_edge_iterator out_edge_iterator
Definition UGRAMM.h:94
float pfac_mul
Definition UGRAMM.cpp:20
nlohmann::json json
Definition UGRAMM.h:143
std::shared_ptr< spdlog::logger > drcLogger
Definition UGRAMM.cpp:45
boost::graph_traits< DirectedGraph >::in_edge_iterator in_edge_iterator
Definition UGRAMM.h:93
std::shared_ptr< spdlog::logger > UGRAMM
Definition UGRAMM.cpp:44
int findMinVertexModel(DirectedGraph *G, DirectedGraph *H, int y, std::map< int, NodeConfig > *hConfig, std::map< int, NodeConfig > *gConfig)
Definition UGRAMM.cpp:60
json jsonParsed
Definition UGRAMM.cpp:52
std::map< int, std::string > gNames
Definition UGRAMM.cpp:35
int capacity
Definition UGRAMM.cpp:23
boost::graph_traits< DirectedGraph >::edge_iterator edge_iterator
Definition UGRAMM.h:92
std::map< std::string, std::vector< std::string > > ugrammConfig
Definition UGRAMM.cpp:49
boost::graph_traits< DirectedGraph >::vertex_descriptor vertex_descriptor
Definition UGRAMM.h:95
int findMinorEmbedding(DirectedGraph *H, DirectedGraph *G, std::map< int, NodeConfig > *hConfig, std::map< int, NodeConfig > *gConfig)
Definition UGRAMM.cpp:363
std::vector< int > * TraceBack
Definition UGRAMM.cpp:31
float hfac_mul
Definition UGRAMM.cpp:21
std::vector< int > * TopoOrder
Definition UGRAMM.cpp:32
std::string G_Width
Definition UGRAMM.h:78
std::string G_VisualX
Definition UGRAMM.h:76
std::string G_Name
Definition UGRAMM.h:73
std::string G_NodeType
Definition UGRAMM.h:75
std::string H_Latency
Definition UGRAMM.h:69
std::string H_Opcode
Definition UGRAMM.h:68
std::string G_CellType
Definition UGRAMM.h:74
std::string G_VisualY
Definition UGRAMM.h:77
std::string H_Name
Definition UGRAMM.h:67
std::string H_Width
Definition UGRAMM.h:70
std::string H_LoadPin
Definition UGRAMM.h:84
std::string H_DriverPin
Definition UGRAMM.h:85
int weight
Definition UGRAMM.h:87
std::string Opcode
Definition UGRAMM.h:56
std::string Type
Definition UGRAMM.h:51
bool gLocked
Definition UGRAMM.h:53
int width
Definition UGRAMM.h:61
std::string LockGNode
Definition UGRAMM.h:58
std::string pinName
Definition UGRAMM.h:57
std::string Cell
Definition UGRAMM.h:50
int Latency
Definition UGRAMM.h:52
std::map< int, int > parent
Definition UGRAMM.h:107
std::list< int > nodes
Definition UGRAMM.h:108
std::map< int, std::list< int > > children
Definition UGRAMM.h:106