00001 // Torc - Copyright 2011 University of Southern California. All Rights Reserved. 00002 // $HeadURL: https://torc-isi.svn.sourceforge.net/svnroot/torc-isi/branches/staging/0.9/src/torc/packer/Virtex5PrimitiveStructure.cpp $ 00003 // $Id: Virtex5PrimitiveStructure.cpp 10 2011-10-12 18:40:16Z nsteiner $ 00004 00005 // This program is free software: you can redistribute it and/or modify it under the terms of the 00006 // GNU General Public License as published by the Free Software Foundation, either version 3 of the 00007 // License, or (at your option) any later version. 00008 // 00009 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 00010 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 00011 // the GNU General Public License for more details. 00012 // 00013 // You should have received a copy of the GNU General Public License along with this program. If 00014 // not, see <http://www.gnu.org/licenses/>. 00015 00016 /// \file 00017 /// \brief Source for the Virtex2PrimitiveStructure class. 00018 00019 #include "torc/packer/Virtex5PrimitiveStructure.hpp" 00020 #include <iostream> 00021 #include <map> 00022 00023 namespace torc { 00024 namespace packer { 00025 00026 using namespace torc::architecture; 00027 /// \brief The type name of slice primitives 00028 const std::string cSliceLTypeName = "SLICEL"; 00029 const std::string cSliceMTypeName = "SLICEM"; 00030 00031 void Virtex5PrimitiveStructure::initialize(void) { 00032 // look up the SLICE BYINVOUTUSED element 00033 if(mPrimitiveDefPtr->getName() == cSliceLTypeName || mPrimitiveDefPtr->getName() == cSliceMTypeName) { 00034 00035 const PrimitiveElementArray& elements = mPrimitiveDefPtr->getElements(); 00036 PrimitiveElementArray::const_iterator ep = elements.begin(); 00037 PrimitiveElementArray::const_iterator ee = elements.end(); 00038 while(ep < ee) { 00039 const PrimitiveElement& element = *ep++; 00040 const PrimitiveElement* elementPtr = &element; 00041 if(element.getName() == "SYNC_ATTR"){ 00042 mPrincipalstoOrphans["AFF"].push_back(elementPtr); 00043 mPrincipalstoOrphans["BFF"].push_back(elementPtr); 00044 mPrincipalstoOrphans["CFF"].push_back(elementPtr); 00045 mPrincipalstoOrphans["DFF"].push_back(elementPtr); 00046 }else if(element.getName() == "AFFSR"){ 00047 mPrincipalstoOrphans["AFF"].push_back(elementPtr); 00048 }else if(element.getName() == "BFFSR"){ 00049 mPrincipalstoOrphans["BFF"].push_back(elementPtr); 00050 }else if(element.getName() == "CFFSR"){ 00051 mPrincipalstoOrphans["CFF"].push_back(elementPtr); 00052 }else if(element.getName() == "DFFSR"){ 00053 mPrincipalstoOrphans["DFF"].push_back(elementPtr); 00054 }else if(element.getName() == "AFFINIT"){ 00055 mPrincipalstoOrphans["AFF"].push_back(elementPtr); 00056 }else if(element.getName() == "BFFINIT"){ 00057 mPrincipalstoOrphans["BFF"].push_back(elementPtr); 00058 }else if(element.getName() == "CFFINIT"){ 00059 mPrincipalstoOrphans["CFF"].push_back(elementPtr); 00060 }else if(element.getName() == "DFFINIT"){ 00061 mPrincipalstoOrphans["DFF"].push_back(elementPtr); 00062 }else if(element.getName() == "A5RAMMODE"){ 00063 mPrincipalstoOrphans["A5LUT"].push_back(elementPtr); 00064 }else if(element.getName() == "B5RAMMODE"){ 00065 mPrincipalstoOrphans["B5LUT"].push_back(elementPtr); 00066 }else if(element.getName() == "C5RAMMODE"){ 00067 mPrincipalstoOrphans["C5LUT"].push_back(elementPtr); 00068 }else if(element.getName() == "D5RAMMODE"){ 00069 mPrincipalstoOrphans["D5LUT"].push_back(elementPtr); 00070 }else if(element.getName() == "A6RAMMODE"){ 00071 mPrincipalstoOrphans["A6LUT"].push_back(elementPtr); 00072 }else if(element.getName() == "B6RAMMODE"){ 00073 mPrincipalstoOrphans["B6LUT"].push_back(elementPtr); 00074 }else if(element.getName() == "C6RAMMODE"){ 00075 mPrincipalstoOrphans["C6LUT"].push_back(elementPtr); 00076 }else if(element.getName() == "D6RAMMODE"){ 00077 mPrincipalstoOrphans["D6LUT"].push_back(elementPtr); 00078 } 00079 } 00080 } 00081 } 00082 00083 } // namespace architecture 00084 } // namespace torc