UGRAMM
Loading...
Searching...
No Matches
utilities.h
1//===========================================================================//
2// Universal GRAaph Minor Mapping (UGRAMM) method for CGRA //
3// file : utilities.h //
4// description: contains variables and function declaration used for utility //
5//===========================================================================//
6
7#ifndef UTILITIES_H
8#define UTILITIES_H
9
10#include <boost/config.hpp>
11#include <iostream>
12#include <fstream>
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>
19#include <queue>
20#include <map>
21#include <list>
22#include <bitset>
23#include <algorithm>
24#include <boost/algorithm/string.hpp>
25
26#define FunCell_Visual_Enable 1
27#define PinCell_Visual_Enable 1
28#define RouteCell_Visual_Enable 0
29
30extern std::vector<std::string> colors; //Color code for different FunCell nodes
31extern std::string input_pin_color; //Pre-defined color-code for the input-pin cell
32extern std::string output_pin_color; //Pre-defined color-code for the output-pin cell
33extern std::string unused_cell_color; //Pre-defined color-code for the unused cell
34extern std::map<std::string, std::string> funCellMapping; //Key-> Device-model node-name :: Value-> Mapped application name.
35
36
37//------------------------------------------------------------------------------------//
38//------------------- [Utilities] String manipulation operations ---------------------//
39//------------------------------------------------------------------------------------//
40
49std::string removeCurlyBrackets(const std::string& input);
50
57std::string gNames_deliemter_changes(std::string gNames);
58
66std::string string_remover(std::string original_string, std::string toRemove);
67
73void jsonUppercase(json& j);
74
75//------------------------------------------------------------------------------------//
76//---------------------- [Utilities] PRAGMA related functions ------------------------//
77//------------------------------------------------------------------------------------//
78
85std::string readCommentSection(std::ifstream &inputFile);
86
95bool skipPlacement(std::string hOpcode, json& jsonParsed);
96
108void parseVectorofStrings(std::string commentSection, std::string keyword, std::map<std::string, std::vector<std::string>> &ugrammConfig);
109
118bool checkVectorofStrings(std::string commentSection, std::string keyword, std::vector<std::string> &Type);
119
126void readDeviceModelPragma(std::ifstream &deviceModelFile, std::map<std::string, std::vector<std::string>> &ugrammConfig);
127
134void readApplicationGraphPragma(std::ifstream &applicationGraphFile, std::map<std::string, std::vector<std::string>> &ugrammConfig);
135
136
137//------------------------------------------------------------------------------------//
138//---------------------- [Utilities] Printing and visualization ----------------------//
139//------------------------------------------------------------------------------------//
140
150void printRoutingResults(int y, std::ofstream &positionedOutputFile, std::ofstream &unpositionedOutputFile, std::map<int, NodeConfig> *hConfig);
151
161void mandatoryFunCellConnections(int gNumber, std::string FunCellName, DirectedGraph *G, std::ofstream &positionedOutputFile, std::ofstream &unpositionedOutputFile);
162
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);
175
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);
186
192void printName(int n);
193
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);
204
205
211void printRouting(int signal);
212
213//------------------------------------------------------------------------------------//
214//-------------------------------- [Utilities] File read -----------------------------//
215//------------------------------------------------------------------------------------//
216
223void readDeviceModel(DirectedGraph *G, std::map<int, NodeConfig> *gConfig);
224
231void readApplicationGraph(DirectedGraph *H, std::map<int, NodeConfig> *hConfig);
232
233#endif