]> AND Private Git Repository - blast.git/blobdiff - SpecialBlock.cpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
moved clocks list to graph
[blast.git] / SpecialBlock.cpp
index 8c7cc1025ed0ea1887d594f3e41173838aeaa9f5..fdec328f7252f72045f1828b8480527e1045469e 100644 (file)
@@ -79,8 +79,61 @@ void SpecialBlock::computeOutputPatternSink(int nbExec) throw(Exception) {
 }\r
 \r
 void SpecialBlock::checkInputPatternCompatibilityClockConvert() throw(Exception) {\r
+  static QString fctName = "SpecialBlock::checkInputPatternCompatibilityClockConvert()";\r
+#ifdef DEBUG_FCTNAME\r
+  cout << "call to " << qPrintable(fctName) << endl;\r
+#endif\r
+  // just create input pattern\r
+  try {\r
+    createInputPattern();\r
+  }\r
+  catch(Exception e) {\r
+    throw(e);\r
+  }\r
 }\r
+\r
 void SpecialBlock::computeOutputPatternClockConvert(int nbExec) throw(Exception) {\r
+  static QString fctName = "SpecialBlock::computeOutputPatternClockConvert()";\r
+#ifdef DEBUG_FCTNAME\r
+  cout << "call to " << qPrintable(fctName) << endl;\r
+#endif\r
+  cout << "computing output pattern of " << qPrintable(name) << endl;\r
+\r
+  /* CAUTION: it is assumed that all clock domain converters are using\r
+   * a clk_in and clk_out signals for input and output clocks.\r
+   */\r
+  AbstractInterface* clkIn = getIfaceFromName("clk_in");\r
+  AbstractInterface* clkOut = getIfaceFromName("clk_out");\r
+  //cout << "freq clk_in = " << clkIn-\r
+\r
+  // in case of inputPattern not created, do it\r
+  if (lengthIP <= 0) {\r
+\r
+    cout << "Strange case: input pattern is not created while it is time to compute output pattern !" << endl;\r
+    // collect the input patterns for each input\r
+    try {\r
+      createInputPattern();\r
+    }\r
+    catch(Exception e) {\r
+      throw(e);\r
+    }\r
+    cout << "input pattern array initialized with min. len " << lengthIP << endl;\r
+  }\r
+\r
+  // initialize the output pattern\r
+  lengthOP = 0;\r
+  foreach(AbstractInterface* iface, getControlOutputs()) {\r
+    FunctionalInterface* connIface = AI_TO_FUN(iface);\r
+    lengthOP = lengthIP+productionPattern.value(connIface)->size();\r
+    QList<char>* pattern = new QList<char>();\r
+    for(int i=0;i<lengthOP;i++) pattern->append(0);\r
+    connIface->setOutputPattern(pattern);\r
+    outputPattern.insert(connIface,pattern);\r
+  }\r
+  cout << "output pattern array initialized" << endl;\r
+\r
+  int clock = 0;\r
+\r
 }\r
 \r
 \r