10#include <boost/config.hpp>
13#include <boost/graph/graph_traits.hpp>
14#include <boost/graph/adjacency_list.hpp>
15#include <boost/graph/dijkstra_shortest_paths.hpp>
16#include <boost/property_map/property_map.hpp>
17#include <boost/graph/graphviz.hpp>
18#include <boost/graph/copy.hpp>
26#include <boost/algorithm/string.hpp>
28#include "spdlog/spdlog.h"
29#include <spdlog/sinks/stdout_color_sinks.h>
30#include <boost/program_options.hpp>
31#include "../lib/json.h"
35#define MAX_DIST 10000000
38#define computeTopoEnable 0
39#define maxIterations 39
52 std::pair<int, int> Location = {0,0};
60 std::string H_Latency;
61 std::string H_PlacementX;
62 std::string H_PlacementY;
66 std::string G_CellType;
67 std::string G_NodeType;
68 std::string G_VisualX;
69 std::string G_VisualY;
75 std::string H_LoadPin;
76 std::string H_DriverPin;
82typedef boost::adjacency_list<boost::listS, boost::vecS, boost::bidirectionalS, DotVertex, EdgeProperty> DirectedGraph;
83typedef boost::graph_traits<DirectedGraph>::edge_iterator edge_iterator;
84typedef boost::graph_traits<DirectedGraph>::in_edge_iterator in_edge_iterator;
85typedef boost::graph_traits<DirectedGraph>::out_edge_iterator out_edge_iterator;
86typedef boost::graph_traits<DirectedGraph>::vertex_descriptor vertex_descriptor;
87typedef boost::graph_traits<DirectedGraph>::vertex_iterator vertex_iterator;
88typedef boost::graph_traits<DirectedGraph>::out_edge_iterator OutEdgeIterator;
89typedef DirectedGraph::edge_descriptor Edge;
97 std::map<int, std::list<int>> children;
98 std::map<int, int> parent;
103extern std::vector<RoutingTree> *Trees;
104extern std::vector<std::list<int>> *Users;
105extern std::map<int, int> invUsers;
106extern std::vector<int> *HistoryCosts;
107extern std::vector<int> *TraceBack;
108extern std::vector<int> *TopoOrder;
109extern std::map<int, std::string> hNames;
110extern std::map<int, std::string> gNames;
111extern std::bitset<100000> explored;
118extern std::shared_ptr<spdlog::logger> UGRAMM;
120extern std::vector<std::string> inPin;
121extern std::vector<std::string> outPin;
124extern std::map<std::string, std::vector<std::string>> ugrammConfig;
127using json = nlohmann::json;
128extern json jsonParsed;
142int findMinorEmbedding(DirectedGraph *H, DirectedGraph *G, std::map<int, NodeConfig> *hConfig, std::map<int, NodeConfig> *gConfig);
155int findMinVertexModel(DirectedGraph *G, DirectedGraph *H,
int y, std::map<int, NodeConfig> *hConfig, std::map<int, NodeConfig> *gConfig);