int main(int argc, const char * argv[]) { //// test data/////////////////////////////////////////// // int d[10]; // for (int i= 1; i <=9 ; ++i) { // d[i] = i; // } vector<BumpNode*>previousSeq, currentSeq; // BumpNode *node1 = new BumpNode(1, &d[1], DirectRoute, false); // previousSeq.push_back(node1); // BumpNode *node2 = new BumpNode(2, &d[4], DirectRoute, false); // previousSeq.push_back(node2); // BumpNode *node3 = new BumpNode(3, &d[5], DirectRoute, false); // previousSeq.push_back(node3); // BumpNode *node7 = new BumpNode(7, &d[7], DirectRoute, false); // previousSeq.push_back(node7); // // // // // BumpNode *node8 = new BumpNode(8, nullptr, DirectRoute, false); // currentSeq.push_back(node8); // // // BumpNode *node4 = new BumpNode(4, &d[3], UnDirectRoute, false); // currentSeq.push_back(node4); // BumpNode* node5 = new BumpNode(5, &d[2], DirectRoute, false); // currentSeq.push_back(node5); // // BumpNode *node12 = new BumpNode(12, nullptr, DirectRoute, false); // currentSeq.push_back(node12); // BumpNode *node13 = new BumpNode(13, nullptr, DirectRoute, false); // currentSeq.push_back(node13); // BumpNode *node14 = new BumpNode(14, nullptr, DirectRoute, false); // currentSeq.push_back(node14); // BumpNode *node15 = new BumpNode(15, nullptr, DirectRoute, false); // currentSeq.push_back(node15); // BumpNode *node16 = new BumpNode(16, nullptr, DirectRoute, false); // currentSeq.push_back(node16); // // BumpNode* node6 = new BumpNode(6, &d[9], DirectRoute, false); // currentSeq.push_back(node6); // BumpNode *node11 = new BumpNode(11, nullptr, DirectRoute, false); // currentSeq.push_back(node11); // BumpNode *node10 = new BumpNode(10, nullptr, DirectRoute, false); // currentSeq.push_back(node10); // // // BumpNode *node9 = new BumpNode(9, nullptr, DirectRoute, false); // currentSeq.push_back(node9); // // // // node4->relativeX = 1; // node4->relativeY = 0; // node5->relativeX = 2; // node5->relativeY = 0; // node6->relativeX = 1; // node6->relativeY = 3; // node1->relativeX = 1; // node1->relativeY = 1; // node2->relativeX = 2; // node2->relativeY = 1; // node3->relativeX = 2; // node3->relativeY = 2; // RoutingMap *routingMap = new RoutingMap(4,4); // // routingMap->nodeInserttoMap(1, 1, node8); // routingMap->nodeInserttoMap(1, 2, node4); // routingMap->nodeInserttoMap(1, 3, node5); // routingMap->nodeInserttoMap(1, 4, node12); // routingMap->nodeInserttoMap(2, 1, node9); // routingMap->nodeInserttoMap(2, 2, node1); // routingMap->nodeInserttoMap(2, 3, node2); // routingMap->nodeInserttoMap(2, 4, node13); // routingMap->nodeInserttoMap(3, 1, node10); // routingMap->nodeInserttoMap(3, 2, node7); // routingMap->nodeInserttoMap(3, 3, node3); // routingMap->nodeInserttoMap(3, 4, node14); // routingMap->nodeInserttoMap(4, 1, node11); // routingMap->nodeInserttoMap(4, 2, node6); // routingMap->nodeInserttoMap(4, 3, node16); // routingMap->nodeInserttoMap(4, 4, node15); //read file ReadFile *readFile = new ReadFile(); int k = readFile->numBvec - 1; while (k >= 0) { readFile->LCS(readFile->driver, &readFile->bvec[0], readFile->driver.size(), readFile->bvec[k].size()); for (int i = 0; i < readFile->bvec[k].size(); ++i) { currentSeq.push_back(&readFile->bvec[k][i]); } printf("LCS Sequence result : "); for (int i = 0; i < currentSeq.size(); ++i) { if (currentSeq[i]->wireId) { if (currentSeq[i]->isVirtual) { printf("%d' ", *currentSeq[i]->wireId); } else { printf("%d ", *currentSeq[i]->wireId); } } else { printf("x "); } } printf("\n"); MPSC *mpsc = new MPSC(&previousSeq, ¤tSeq); mpsc->compute(); delete mpsc; routingMap->initMapinLayer(readFile->numBvec - k - 1, readFile->numBvec - k - 1, readFile->numBvec - k - 1, currentSeq); mapping *maping = new mapping(routingMap->mapRowNum, routingMap->mapColNum, readFile->w, readFile->s); maping->mapping_incircle(routingMap->map); // maping->mapping_outcircle(routingMap->map); maping->route_output(routingMap->map); k--; } //// algorithm ///////////////////////////////////////// // MPSC *mpsc = new MPSC(&previousSeq, ¤tSeq); // mpsc->compute(); // delete mpsc; // routingMap->initMapinLayer(0, 2, 2, previousSeq); // routingMap->initMapinLayer(1, 1, 1, currentSeq); //// print the result////////////////////////////////// printf("current Sequence : "); for (int i = 0; i < currentSeq.size(); ++i) { if (currentSeq[i]->wireId) { if (currentSeq[i]->isVirtual) { printf("%d' ", *currentSeq[i]->wireId); } else { printf("%d ", *currentSeq[i]->wireId); } } else { printf("x "); } } printf("\n"); printf("previous Sequence : "); for (int i = 0; i < previousSeq.size(); ++i) { if (previousSeq[i]->wireId) { if (previousSeq[i]->isVirtual) { printf("%d' ", *previousSeq[i]->wireId); } else { printf("%d ", *previousSeq[i]->wireId); } } else { printf("x "); } } printf("\n"); routingMap->ringMaping(1, 1, 1); routingMap->printBox(1, 1); routingMap->printBox(1, 2); routingMap->printBox(1, 3); // routingMap->printBox(0, 3); routingMap->printBox(2, 1); routingMap->printBox(2, 2); routingMap->printBox(2, 3); // routingMap->printBox(1, 3); routingMap->printBox(3, 1); routingMap->printBox(3, 2); routingMap->printBox(3, 3); //////////////////////////////////////////////////////// delete routingMap; return 0; }