-\r
-\r
-void AbstractBlock::connectClkReset() throw(Exception) {\r
-\r
- GroupBlock* parentBlock = AB_TO_GRP(parent);\r
-\r
-\r
-\r
- QList<AbstractInterface* > lstClk = getInterfaces(AbstractInterface::Input,AbstractInterface::Clock);\r
- QList<AbstractInterface* > lstRst = getInterfaces(AbstractInterface::Input,AbstractInterface::Reset);\r
-\r
- if ((lstClk.isEmpty()) || (lstRst.isEmpty())) {\r
- throw(Exception(IFACE_GROUP_NOCLKRST,this));\r
- }\r
-\r
- ConnectedInterface* toClk = AI_TO_CON(lstClk.at(0));\r
- ConnectedInterface* toRst = AI_TO_CON(lstRst.at(0));\r
-\r
- ConnectedInterface* fromClk = NULL;\r
- ConnectedInterface* fromRst = NULL;\r
-\r
- if (parentBlock->isTop()) {\r
- AbstractBlock* clkrstgen = parentBlock->getFunctionalBlockByName("clkrstgen");\r
- if (clkrstgen == NULL) {\r
- throw(Exception(IFACE_TOP_NOCLKRSTGEN,this));\r
- }\r
- else {\r
- fromClk = AI_TO_CON(clkrstgen->getIfaceFromName("clk"));\r
- fromRst = AI_TO_CON(clkrstgen->getIfaceFromName("reset"));\r
- }\r
- cout << "connecting clk/rst for " << qPrintable(name) << " to clkrstgen" << endl;\r
- }\r
- else {\r
- fromClk = AI_TO_CON(parentBlock->getIfaceFromName("clk"));\r
- fromRst = AI_TO_CON(parentBlock->getIfaceFromName("reset"));\r
- cout << "connecting clk/rst for child " << qPrintable(name) << " of " << qPrintable(parentBlock->getName()) << endl;\r
- }\r
- if ((fromClk == NULL) || (fromRst == NULL)) {\r
- throw(Exception(IFACE_GROUP_NOCLKRST,parentBlock));\r
- }\r
- else {\r
- fromClk->connectTo(toClk);\r
- fromRst->connectTo(toRst);\r
- cout << "connection done between " << qPrintable(toClk->getConnectedFrom()->getOwner()->getName()) << "/" << qPrintable(toClk->getConnectedFrom()->getName());\r
- cout << " and " << qPrintable(toClk->getOwner()->getName()) << "/" << qPrintable(toClk->getName()) << endl;\r
- }\r
-}\r
-\r