UGRAMM
Loading...
Searching...
No Matches
drc.cpp File Reference
#include "../lib/UGRAMM.h"
#include "../lib/drc.h"
#include "../lib/utilities.h"
Include dependency graph for drc.cpp:

Functions

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)
 

Function Documentation

◆ applicationGraphDRC_CheckApplicationDFGWeaklyConnected()

void applicationGraphDRC_CheckApplicationDFGWeaklyConnected ( DirectedGraph * H,
std::map< int, NodeConfig > * hConfig,
bool * errorDetected )

Check if the application DFG is weakly conencted

Parameters
HA pointer to the application graph.
hConfigA map containing node configuration details of application graph.
errorDetectedA 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
HA pointer to the application graph.
hConfigA map containing node configuration details of application graph.
errorDetectedA 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
HA pointer to the application graph.
hConfigA map containing node configuration details of application graph.
errorDetectedA 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
HA pointer to the application graph.
hConfigA map containing node configuration details of application graph.
errorDetectedA pointer to a bool variable to indicate an DRC error is found.

◆ applicationGraphDRC_CheckLockNodeType()

void applicationGraphDRC_CheckLockNodeType ( DirectedGraph * H,
std::map< int, NodeConfig > * hConfig,
std::map< int, NodeConfig > * gConfig,
bool * errorDetected )

Check that the locked device model node is the correct node type for the application graph's vertecies

Parameters
HA pointer to the application graph.
hConfigA map containing node configuration details of application graph.
gConfigA map containing node configuration details of device-model graph.
errorDetectedA 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
HA pointer to the application graph.
hConfigA map containing node configuration details of application graph.
errorDetectedA 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
GA pointer to the device-model graph.
gConfigA map containing node configuration details of device-model graph.
errorDetectedA 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
GA pointer to the device-model graph.
gConfigA map containing node configuration details of device-model graph.
errorDetectedA 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
GA pointer to the device-model graph.
gConfigA map containing node configuration details of device-model graph.
errorDetectedA 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
GA pointer to the device-model graph.
gConfigA map containing node configuration details of device-model graph.
errorDetectedA 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
GA pointer to the device-model graph.
gConfigA map containing node configuration details of device-model graph.
errorDetectedA pointer to a bool variable to indicate an DRC error is found.

◆ runDRC()

double runDRC ( DirectedGraph * H,
DirectedGraph * G,
std::map< int, NodeConfig > * hConfig,
std::map< int, NodeConfig > * gConfig,
int drc_verbose_level )

Main DRC function that run through all DRC rules check for both H and G graph seen above

Parameters
HA pointer to the application-model graph.
GA pointer to the device-model graph.
hConfigA map containing node configuration details of application-model graph.
gConfigA map containing node configuration details of device-model graph.