UGRAMM
Loading...
Searching...
No Matches
drc.h
Go to the documentation of this file.
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/algorithm/string.hpp>
18#include <boost/property_map/property_map.hpp>
19#include <boost/graph/graphviz.hpp>
20#include <boost/graph/copy.hpp>
21#include <queue>
22#include <map>
23#include <list>
24#include <bitset>
25#include <algorithm>
26#include <boost/algorithm/string.hpp>
27#include <vector>
28#include <boost/graph/connected_components.hpp>
29#include <boost/graph/copy.hpp>
30#include <sys/time.h>
31
32
33
34//Properties of the application and device model graph used in DRC:
35typedef boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS, DotVertex, EdgeProperty> UnDirectedGraph;
36
37//------------ The following sections is for DRC Rules check for Device Model Graph -----------//
46void deviceModelDRC_VerifyPinNodes(DirectedGraph *G, std::map<int, NodeConfig> *gConfig, bool *errorDetected);
47
55void deviceModelDRC_CheckFloatingNodes(DirectedGraph *G, std::map<int, NodeConfig> *gConfig, bool *errorDetected);
56
64void deviceModelDRC_CheckDeviceModelWeaklyConnected(DirectedGraph *G, std::map<int, NodeConfig> *gConfig, bool *errorDetected);
65
66
74void deviceModelDRC_CheckFuncCellConnectivity(DirectedGraph *G, std::map<int, NodeConfig> *gConfig, bool *errorDetected);
75
76
84void deviceModelDRC_CheckDeviceModelAttributes(DirectedGraph *G, std::map<int, NodeConfig> *gConfig, bool *errorDetected);
85
86
87//------------ The following sections is for DRC Rules check for Application Model Graph -----------//
95void applicationGraphDRC_CheckFloatingNodes(DirectedGraph *H, std::map<int, NodeConfig> *hConfig, bool *errorDetected);
96
97
105void applicationGraphDRC_CheckPinNames(DirectedGraph *H, std::map<int, NodeConfig> *hConfig, bool *errorDetected);
106
107
115void applicationGraphDRC_CheckApplicationDFGWeaklyConnected(DirectedGraph *H, std::map<int, NodeConfig> *hConfig, bool *errorDetected);
116
124void applicationGraphDRC_CheckDeviceModelAttributes(DirectedGraph *H, std::map<int, NodeConfig> *hConfig, bool *errorDetected);
125
133void applicationGraphDRC_CheckDupplicationInLockNodes(DirectedGraph *H, std::map<int, NodeConfig> *hConfig, bool *errorDetected);
134
143void applicationGraphDRC_CheckLockNodeType(DirectedGraph *H, std::map<int, NodeConfig> *hConfig, std::map<int, NodeConfig> *gConfig, bool *errorDetected);
144
145
146//------------ The following sections is the functions that runs all DRC rules -----------//
155double runDRC(DirectedGraph *H, DirectedGraph *G, std::map<int, NodeConfig> *hConfig, std::map<int, NodeConfig> *gConfig, int drc_verbose_level);
156
157#endif
158
boost::adjacency_list< boost::listS, boost::vecS, boost::bidirectionalS, DotVertex, EdgeProperty > DirectedGraph
Definition UGRAMM.h:91
void applicationGraphDRC_CheckApplicationDFGWeaklyConnected(DirectedGraph *H, std::map< int, NodeConfig > *hConfig, bool *errorDetected)
Definition drc.cpp:208
void applicationGraphDRC_CheckPinNames(DirectedGraph *H, std::map< int, NodeConfig > *hConfig, bool *errorDetected)
Definition drc.cpp:182
void deviceModelDRC_CheckFuncCellConnectivity(DirectedGraph *G, std::map< int, NodeConfig > *gConfig, bool *errorDetected)
Definition drc.cpp:84
void applicationGraphDRC_CheckFloatingNodes(DirectedGraph *H, std::map< int, NodeConfig > *hConfig, bool *errorDetected)
Definition drc.cpp:170
void deviceModelDRC_CheckDeviceModelWeaklyConnected(DirectedGraph *G, std::map< int, NodeConfig > *gConfig, bool *errorDetected)
Definition drc.cpp:66
void applicationGraphDRC_CheckLockNodeType(DirectedGraph *H, std::map< int, NodeConfig > *hConfig, std::map< int, NodeConfig > *gConfig, bool *errorDetected)
Definition drc.cpp:302
void applicationGraphDRC_CheckDeviceModelAttributes(DirectedGraph *H, std::map< int, NodeConfig > *hConfig, bool *errorDetected)
Definition drc.cpp:227
double runDRC(DirectedGraph *H, DirectedGraph *G, std::map< int, NodeConfig > *hConfig, std::map< int, NodeConfig > *gConfig, int drc_verbose_level)
Definition drc.cpp:329
void deviceModelDRC_CheckFloatingNodes(DirectedGraph *G, std::map< int, NodeConfig > *gConfig, bool *errorDetected)
Definition drc.cpp:54
void applicationGraphDRC_CheckDupplicationInLockNodes(DirectedGraph *H, std::map< int, NodeConfig > *hConfig, bool *errorDetected)
Definition drc.cpp:274
boost::adjacency_list< boost::listS, boost::vecS, boost::undirectedS, DotVertex, EdgeProperty > UnDirectedGraph
Definition drc.h:35
void deviceModelDRC_VerifyPinNodes(DirectedGraph *G, std::map< int, NodeConfig > *gConfig, bool *errorDetected)
Definition drc.cpp:12
void deviceModelDRC_CheckDeviceModelAttributes(DirectedGraph *G, std::map< int, NodeConfig > *gConfig, bool *errorDetected)
Definition drc.cpp:126