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>
24#include <boost/algorithm/string.hpp>
26#define FunCell_Visual_Enable 1
27#define PinCell_Visual_Enable 1
28#define RouteCell_Visual_Enable 0
30extern std::vector<std::string> colors;
31extern std::string input_pin_color;
32extern std::string output_pin_color;
33extern std::string unused_cell_color;
34extern std::map<std::string, std::string> funCellMapping;
49std::string removeCurlyBrackets(
const std::string& input);
57std::string gNames_deliemter_changes(std::string gNames);
66std::string string_remover(std::string original_string, std::string toRemove);
73void jsonUppercase(json& j);
85std::string readCommentSection(std::ifstream &inputFile);
95bool skipPlacement(std::string hOpcode, json& jsonParsed);
108void parseVectorofStrings(std::string commentSection, std::string keyword, std::map<std::string, std::vector<std::string>> &ugrammConfig);
118bool checkVectorofStrings(std::string commentSection, std::string keyword, std::vector<std::string> &Type);
126void readDeviceModelPragma(std::ifstream &deviceModelFile, std::map<std::string, std::vector<std::string>> &ugrammConfig);
134void readApplicationGraphPragma(std::ifstream &applicationGraphFile, std::map<std::string, std::vector<std::string>> &ugrammConfig);
150void printRoutingResults(
int y, std::ofstream &positionedOutputFile, std::ofstream &unpositionedOutputFile, std::map<int, NodeConfig> *hConfig);
161void mandatoryFunCellConnections(
int gNumber, std::string FunCellName, DirectedGraph *G, std::ofstream &positionedOutputFile, std::ofstream &unpositionedOutputFile);
174void printPlacementResults(
int gNumber, std::string gName, DirectedGraph *G, std::ofstream &positionedOutputFile, std::ofstream &unpositionedOutputFile, std::map<int, NodeConfig> *gConfig, std::map<std::string, std::vector<std::string>> &ugrammConfig);
185void printMappedResults(DirectedGraph *H, DirectedGraph *G, std::map<int, NodeConfig> *hConfig , std::map<int, NodeConfig> *gConfig, std::map<std::string, std::vector<std::string>> &ugrammConfig);
192void printName(
int n);
203void printVertexModels(DirectedGraph *H, DirectedGraph *G, std::map<int, NodeConfig> *hConfig, std::map<std::string, std::vector<std::string>> &ugrammConfig, std::map<int, int> &invUsers);
211void printRouting(
int signal);
223void readDeviceModel(DirectedGraph *G, std::map<int, NodeConfig> *gConfig);
231void readApplicationGraph(DirectedGraph *H, std::map<int, NodeConfig> *hConfig);