11#include <boost/config.hpp>
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>
25#include <boost/algorithm/string.hpp>
27#include <boost/graph/connected_components.hpp>
28#include <boost/graph/copy.hpp>
34typedef boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS, DotVertex, EdgeProperty> UnDirectedGraph;
45void deviceModelDRC_VerifyPinNodes(DirectedGraph *G, std::map<int, NodeConfig> *gConfig,
bool *errorDetected);
54void deviceModelDRC_CheckFloatingNodes(DirectedGraph *G, std::map<int, NodeConfig> *gConfig,
bool *errorDetected);
63void deviceModelDRC_CheckDeviceModelWeaklyConnected(DirectedGraph *G, std::map<int, NodeConfig> *gConfig,
bool *errorDetected);
73void deviceModelDRC_CheckFuncCellConnectivity(DirectedGraph *G, std::map<int, NodeConfig> *gConfig,
bool *errorDetected);
83void deviceModelDRC_CheckDeviceModelAttributes(DirectedGraph *G, std::map<int, NodeConfig> *gConfig,
bool *errorDetected);
94void applicationGraphDRC_CheckFloatingNodes(DirectedGraph *H, std::map<int, NodeConfig> *hConfig,
bool *errorDetected);
104void applicationGraphDRC_CheckPinNames(DirectedGraph *H, std::map<int, NodeConfig> *hConfig,
bool *errorDetected);
114void applicationGraphDRC_CheckApplicationDFGWeaklyConnected(DirectedGraph *H, std::map<int, NodeConfig> *hConfig,
bool *errorDetected);
123void applicationGraphDRC_CheckDeviceModelAttributes(DirectedGraph *H, std::map<int, NodeConfig> *hConfig,
bool *errorDetected);
136double runDRC(DirectedGraph *H, DirectedGraph *G, std::map<int, NodeConfig> *hConfig, std::map<int, NodeConfig> *gConfig);