UGRAMM
Loading...
Searching...
No Matches
drc.h
1//===================================================================//
2// Universal GRAaph Minor Mapping (UGRAMM) method for CGRA //
3// file : drc.h //
4// description: contains variables and function declaration related //
5// to DRC. //
6//===================================================================//
7
8#ifndef DRC_H
9#define DRC_H
10
11#include <boost/config.hpp>
12#include <iostream>
13#include <fstream>
14#include <boost/graph/graph_traits.hpp>
15#include <boost/graph/adjacency_list.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>
20#include <queue>
21#include <map>
22#include <list>
23#include <bitset>
24#include <algorithm>
25#include <boost/algorithm/string.hpp>
26#include <vector>
27#include <boost/graph/connected_components.hpp>
28#include <boost/graph/copy.hpp>
29#include <sys/time.h>
30
31
32
33//Properties of the application and device model graph used in DRC:
34typedef boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS, DotVertex, EdgeProperty> UnDirectedGraph;
35
36//------------ The following sections is for DRC Rules check for Device Model Graph -----------//
45void deviceModelDRC_VerifyPinNodes(DirectedGraph *G, std::map<int, NodeConfig> *gConfig, bool *errorDetected);
46
54void deviceModelDRC_CheckFloatingNodes(DirectedGraph *G, std::map<int, NodeConfig> *gConfig, bool *errorDetected);
55
63void deviceModelDRC_CheckDeviceModelWeaklyConnected(DirectedGraph *G, std::map<int, NodeConfig> *gConfig, bool *errorDetected);
64
65
73void deviceModelDRC_CheckFuncCellConnectivity(DirectedGraph *G, std::map<int, NodeConfig> *gConfig, bool *errorDetected);
74
75
83void deviceModelDRC_CheckDeviceModelAttributes(DirectedGraph *G, std::map<int, NodeConfig> *gConfig, bool *errorDetected);
84
85
86//------------ The following sections is for DRC Rules check for Application Model Graph -----------//
94void applicationGraphDRC_CheckFloatingNodes(DirectedGraph *H, std::map<int, NodeConfig> *hConfig, bool *errorDetected);
95
96
104void applicationGraphDRC_CheckPinNames(DirectedGraph *H, std::map<int, NodeConfig> *hConfig, bool *errorDetected);
105
106
114void applicationGraphDRC_CheckApplicationDFGWeaklyConnected(DirectedGraph *H, std::map<int, NodeConfig> *hConfig, bool *errorDetected);
115
123void applicationGraphDRC_CheckDeviceModelAttributes(DirectedGraph *H, std::map<int, NodeConfig> *hConfig, bool *errorDetected);
124
125
126
127//------------ The following sections is the functions that runs all DRC rules -----------//
136double runDRC(DirectedGraph *H, DirectedGraph *G, std::map<int, NodeConfig> *hConfig, std::map<int, NodeConfig> *gConfig);
137
138#endif