#include <boost/config.hpp>
#include <iostream>
#include <fstream>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/dijkstra_shortest_paths.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/property_map/property_map.hpp>
#include <boost/graph/graphviz.hpp>
#include <boost/graph/copy.hpp>
#include <queue>
#include <map>
#include <list>
#include <bitset>
#include <algorithm>
#include <vector>
#include <boost/graph/connected_components.hpp>
#include <sys/time.h>
Go to the source code of this file.
|
void | deviceModelDRC_VerifyPinNodes (DirectedGraph *G, std::map< int, NodeConfig > *gConfig, bool *errorDetected) |
|
void | deviceModelDRC_CheckFloatingNodes (DirectedGraph *G, std::map< int, NodeConfig > *gConfig, bool *errorDetected) |
|
void | deviceModelDRC_CheckDeviceModelWeaklyConnected (DirectedGraph *G, std::map< int, NodeConfig > *gConfig, bool *errorDetected) |
|
void | deviceModelDRC_CheckFuncCellConnectivity (DirectedGraph *G, std::map< int, NodeConfig > *gConfig, bool *errorDetected) |
|
void | deviceModelDRC_CheckDeviceModelAttributes (DirectedGraph *G, std::map< int, NodeConfig > *gConfig, bool *errorDetected) |
|
void | applicationGraphDRC_CheckFloatingNodes (DirectedGraph *H, std::map< int, NodeConfig > *hConfig, bool *errorDetected) |
|
void | applicationGraphDRC_CheckPinNames (DirectedGraph *H, std::map< int, NodeConfig > *hConfig, bool *errorDetected) |
|
void | applicationGraphDRC_CheckApplicationDFGWeaklyConnected (DirectedGraph *H, std::map< int, NodeConfig > *hConfig, bool *errorDetected) |
|
void | applicationGraphDRC_CheckDeviceModelAttributes (DirectedGraph *H, std::map< int, NodeConfig > *hConfig, bool *errorDetected) |
|
void | applicationGraphDRC_CheckDupplicationInLockNodes (DirectedGraph *H, std::map< int, NodeConfig > *hConfig, bool *errorDetected) |
|
void | applicationGraphDRC_CheckLockNodeType (DirectedGraph *H, std::map< int, NodeConfig > *hConfig, std::map< int, NodeConfig > *gConfig, bool *errorDetected) |
|
double | runDRC (DirectedGraph *H, DirectedGraph *G, std::map< int, NodeConfig > *hConfig, std::map< int, NodeConfig > *gConfig, int drc_verbose_level) |
|
◆ UnDirectedGraph
◆ applicationGraphDRC_CheckApplicationDFGWeaklyConnected()
void applicationGraphDRC_CheckApplicationDFGWeaklyConnected |
( |
DirectedGraph * | H, |
|
|
std::map< int, NodeConfig > * | hConfig, |
|
|
bool * | errorDetected ) |
Check if the application DFG is weakly conencted
- Parameters
-
H | A pointer to the application graph. |
hConfig | A map containing node configuration details of application graph. |
errorDetected | A pointer to a bool variable to indicate an DRC error is found. |
◆ applicationGraphDRC_CheckDeviceModelAttributes()
void applicationGraphDRC_CheckDeviceModelAttributes |
( |
DirectedGraph * | H, |
|
|
std::map< int, NodeConfig > * | hConfig, |
|
|
bool * | errorDetected ) |
Check if the application DFG dot files has the correct attributes and also verify if the attributes haves been correctly loaded into the hConfig data structure
- Parameters
-
H | A pointer to the application graph. |
hConfig | A map containing node configuration details of application graph. |
errorDetected | A pointer to a bool variable to indicate an DRC error is found. |
◆ applicationGraphDRC_CheckDupplicationInLockNodes()
void applicationGraphDRC_CheckDupplicationInLockNodes |
( |
DirectedGraph * | H, |
|
|
std::map< int, NodeConfig > * | hConfig, |
|
|
bool * | errorDetected ) |
Check if there is a dupplication in locked device model nodes between different vertices of the application graph
- Parameters
-
H | A pointer to the application graph. |
hConfig | A map containing node configuration details of application graph. |
errorDetected | A pointer to a bool variable to indicate an DRC error is found. |
◆ applicationGraphDRC_CheckFloatingNodes()
void applicationGraphDRC_CheckFloatingNodes |
( |
DirectedGraph * | H, |
|
|
std::map< int, NodeConfig > * | hConfig, |
|
|
bool * | errorDetected ) |
Application graph should not have any floating nodes
- Parameters
-
H | A pointer to the application graph. |
hConfig | A map containing node configuration details of application graph. |
errorDetected | A pointer to a bool variable to indicate an DRC error is found. |
◆ applicationGraphDRC_CheckLockNodeType()
Check that the locked device model node is the correct node type for the application graph's vertecies
- Parameters
-
H | A pointer to the application graph. |
hConfig | A map containing node configuration details of application graph. |
gConfig | A map containing node configuration details of device-model graph. |
errorDetected | A pointer to a bool variable to indicate an DRC error is found. |
◆ applicationGraphDRC_CheckPinNames()
void applicationGraphDRC_CheckPinNames |
( |
DirectedGraph * | H, |
|
|
std::map< int, NodeConfig > * | hConfig, |
|
|
bool * | errorDetected ) |
Pin names used in the application DFG must follow the names defined in the pragmas in GRAMM.cpp
- Parameters
-
H | A pointer to the application graph. |
hConfig | A map containing node configuration details of application graph. |
errorDetected | A pointer to a bool variable to indicate an DRC error is found. |
◆ deviceModelDRC_CheckDeviceModelAttributes()
void deviceModelDRC_CheckDeviceModelAttributes |
( |
DirectedGraph * | G, |
|
|
std::map< int, NodeConfig > * | gConfig, |
|
|
bool * | errorDetected ) |
Check if the device model dot files has the correct attributes and also verify if the attributes haves been correctly loaded into the gConfig data structure
- Parameters
-
G | A pointer to the device-model graph. |
gConfig | A map containing node configuration details of device-model graph. |
errorDetected | A pointer to a bool variable to indicate an DRC error is found. |
◆ deviceModelDRC_CheckDeviceModelWeaklyConnected()
void deviceModelDRC_CheckDeviceModelWeaklyConnected |
( |
DirectedGraph * | G, |
|
|
std::map< int, NodeConfig > * | gConfig, |
|
|
bool * | errorDetected ) |
Check if the device model graph is weakly conencted
- Parameters
-
G | A pointer to the device-model graph. |
gConfig | A map containing node configuration details of device-model graph. |
errorDetected | A pointer to a bool variable to indicate an DRC error is found. |
◆ deviceModelDRC_CheckFloatingNodes()
void deviceModelDRC_CheckFloatingNodes |
( |
DirectedGraph * | G, |
|
|
std::map< int, NodeConfig > * | gConfig, |
|
|
bool * | errorDetected ) |
Device model graphs should not have any floating nodes
- Parameters
-
G | A pointer to the device-model graph. |
gConfig | A map containing node configuration details of device-model graph. |
errorDetected | A pointer to a bool variable to indicate an DRC error is found. |
◆ deviceModelDRC_CheckFuncCellConnectivity()
void deviceModelDRC_CheckFuncCellConnectivity |
( |
DirectedGraph * | G, |
|
|
std::map< int, NodeConfig > * | gConfig, |
|
|
bool * | errorDetected ) |
Check if FuncCells in the Device Model Graph is connected to other FuncCell. If any two FuncCell does not have a path, this means that the graph is disjointed.
- Parameters
-
G | A pointer to the device-model graph. |
gConfig | A map containing node configuration details of device-model graph. |
errorDetected | A pointer to a bool variable to indicate an DRC error is found. |
◆ deviceModelDRC_VerifyPinNodes()
void deviceModelDRC_VerifyPinNodes |
( |
DirectedGraph * | G, |
|
|
std::map< int, NodeConfig > * | gConfig, |
|
|
bool * | errorDetected ) |
Input PinCell nodes in the Device Model Graph must have one fanout edges that is connected to a funcCell. While output PinCell nodes in the Device Model Graph must also have one fanin edges that is also connected to a funcCells
- Parameters
-
G | A pointer to the device-model graph. |
gConfig | A map containing node configuration details of device-model graph. |
errorDetected | A pointer to a bool variable to indicate an DRC error is found. |
◆ runDRC()
Main DRC function that run through all DRC rules check for both H and G graph seen above
- Parameters
-
H | A pointer to the application-model graph. |
G | A pointer to the device-model graph. |
hConfig | A map containing node configuration details of application-model graph. |
gConfig | A map containing node configuration details of device-model graph. |