#include <VoltageIsland.h>
Collaboration diagram for SetOfVoltages:
Public Member Functions | |
SetOfVoltages () | |
~SetOfVoltages () | |
void | addIslandNodes (int vdd, int node0, int node1) |
void | createVoltageIslands () |
void | printIslands () |
void | arrangeGroups () |
int | numIslandNodes () |
int | numIslandInGroup (int groupID) |
int | voltageInGroup (int groupID) |
void | clearIslandNodes () |
int | maxIslandNodes () |
SetOfVoltages () | |
~SetOfVoltages () | |
void | addIslandNodes (int vdd, int node0, int node1) |
void | createVoltageIslands () |
void | printIslands () |
void | arrangeGroups () |
int | numIslandNodes () |
int | numIslandInGroup (int groupID) |
int | voltageInGroup (int groupID) |
int | maxIslandNodes () |
SetOfVoltages () | |
void | addIslandNodes (int vdd, int node0, int node1) |
void | createVoltageIslands () |
void | printIslands () |
void | arrangeGroups () |
int | numIslandNodes () |
int | numIslandInGroup (int groupID) |
int | voltageInGroup (int groupID) |
int | maxIslandNodes () |
Public Attributes | |
int | numCurrentGroups |
vector< IslandNodes > | islandNodes |
vector< IslandNodes > | islandNodes |
vector< IslandNodes > | islandNodes |
|
Definition at line 38 of file VoltageIsland.cxx. References numCurrentGroups.
00039 { 00040 numCurrentGroups = 0; 00041 } |
|
Definition at line 43 of file VoltageIsland.cxx.
00044 { 00045 /* 00046 int i; 00047 delete &numCurrentGroups; //set to 0 on start and displays number of distinct voltage islands 00048 00049 for(i=0;i<islandNodes.size();i++){ 00050 delete &islandNodes[i]; 00051 } 00052 00053 cout << "destruct setofvoltages" << endl; 00054 00055 // delete [] &islandNodes; 00056 */ 00057 } |
|
|
|
|
|
|
|
|
|
|
|
Definition at line 60 of file VoltageIsland.cxx. References islandNodes, and numCurrentGroups. Referenced by parquetfp::Annealer::makeIslands().
00061 { 00062 for(int i = 0; i < islandNodes.size(); i++) { 00063 if(islandNodes[i].voltage == vdd){ 00064 if((islandNodes[i].nodes[0] == node0) && (islandNodes[i].nodes[1] == node1)) 00065 return; 00066 else if((islandNodes[i].nodes[1] == node0) && (islandNodes[i].nodes[0] == node1)) 00067 return; 00068 } 00069 } 00070 islandNodes.push_back(IslandNodes(node0,node1,numCurrentGroups,vdd)); 00071 numCurrentGroups++; 00072 } |
|
|
|
|
|
Definition at line 134 of file VoltageIsland.cxx. References islandNodes. Referenced by createVoltageIslands().
00135 { 00136 int i,j,k,idCounter=islandNodes.size(),currentID; 00137 for(i=0;i<islandNodes.size();i++){ 00138 currentID = islandNodes[i].groupID; 00139 if(currentID < islandNodes.size()){ 00140 for(j=0;j<islandNodes.size();j++){ 00141 if(islandNodes[j].groupID == currentID) 00142 islandNodes[j].groupID = idCounter; 00143 } 00144 idCounter++; 00145 } 00146 } 00147 for(i=0;i<islandNodes.size();i++){ 00148 islandNodes[i].groupID -= islandNodes.size(); 00149 } 00150 } |
|
Definition at line 216 of file VoltageIsland.cxx. References islandNodes, and numCurrentGroups. Referenced by parquetfp::Annealer::anneal().
00217 { 00218 00219 for(int i=0;i<islandNodes.size();i++){ 00220 islandNodes[i].nodes.clear(); 00221 } 00222 islandNodes.erase(islandNodes.begin()+0,islandNodes.begin() + islandNodes.size()); 00223 numCurrentGroups = 0; 00224 } |
|
|
|
|
|
Definition at line 74 of file VoltageIsland.cxx. References arrangeGroups(), islandNodes, and numCurrentGroups. Referenced by parquetfp::Annealer::makeIslands().
00075 { 00076 int i,j, currentID, currentVoltage, currentNode0, currentNode1; 00077 for(i = 0; i<islandNodes.size();i++){ 00078 currentID = islandNodes[i].groupID; 00079 currentVoltage = islandNodes[i].voltage; 00080 currentNode0 = islandNodes[i].nodes[0]; 00081 currentNode1 = islandNodes[i].nodes[1]; 00082 for(j=0;j<islandNodes.size();j++){ 00083 if( (islandNodes[j].voltage == currentVoltage) && (islandNodes[j].groupID != currentID) ){ 00084 if( (islandNodes[j].nodes[0] == currentNode0) || (islandNodes[j].nodes[1] == currentNode0) ){ 00085 islandNodes[j].setGroupID(currentID); 00086 if((islandNodes[j].nodes[0] == currentNode0) && (islandNodes[j].nodes.size() == 2)){ 00087 islandNodes[j].nodes.erase(islandNodes[j].nodes.begin() + 0, islandNodes[j].nodes.begin() + 1); 00088 } 00089 else if((islandNodes[j].nodes[1] == currentNode0) && (islandNodes[j].nodes.size() == 2)){ 00090 islandNodes[j].nodes.erase(islandNodes[j].nodes.begin() + 1, islandNodes[j].nodes.begin() + 2); 00091 } 00092 else islandNodes[j].nodes.clear(); 00093 numCurrentGroups--; 00094 } 00095 else if( (islandNodes[j].nodes[0] == currentNode1) || (islandNodes[j].nodes[1] == currentNode1) ){ 00096 islandNodes[j].setGroupID(currentID); 00097 if((islandNodes[j].nodes[0] == currentNode0) && (islandNodes[j].nodes.size() == 2)){ 00098 islandNodes[j].nodes.erase(islandNodes[j].nodes.begin() + 0, islandNodes[j].nodes.begin() + 1); 00099 } 00100 else if((islandNodes[j].nodes[1] == currentNode0) && (islandNodes[j].nodes.size() == 2)){ 00101 islandNodes[j].nodes.erase(islandNodes[j].nodes.begin() + 1, islandNodes[j].nodes.begin() + 2); 00102 } 00103 else islandNodes[j].nodes.clear(); 00104 numCurrentGroups--; 00105 } 00106 } 00107 } 00108 } 00109 00110 arrangeGroups(); 00111 } |
Here is the call graph for this function:
|
|
|
|
|
Definition at line 195 of file VoltageIsland.cxx. References islandNodes, and numCurrentGroups. Referenced by parquetfp::Annealer::anneal().
00196 { 00197 int i, j, k, currentID, count=0, prev_count=0; 00198 00199 for(i=0;i<numCurrentGroups;i++){ 00200 currentID = i; 00201 count = 0; 00202 for(j=0;j<islandNodes.size();j++){ 00203 if( (islandNodes[j].groupID == currentID) ){ 00204 for(k=0;k<islandNodes[j].nodes.size();k++){ 00205 count++; 00206 } 00207 } 00208 } 00209 if(prev_count > count) count = prev_count; 00210 prev_count = count; 00211 } 00212 00213 return count; 00214 } |
|
|
|
|
|
Definition at line 165 of file VoltageIsland.cxx. References islandNodes. Referenced by parquetfp::Annealer::anneal().
00166 { 00167 int j, k, currentID, count; 00168 00169 currentID = groupID; 00170 count = 0; 00171 for(j=0;j<islandNodes.size();j++){ 00172 if( (islandNodes[j].groupID == currentID) ){ 00173 for(k=0;k<islandNodes[j].nodes.size();k++){ 00174 count++; 00175 } 00176 } 00177 } 00178 return count; 00179 } |
|
|
|
|
|
Definition at line 152 of file VoltageIsland.cxx. References islandNodes. Referenced by parquetfp::Annealer::anneal().
00153 { 00154 int i, j, count=0; 00155 00156 for(i=0;i<islandNodes.size();i++){ 00157 for(j=0;j<islandNodes[i].nodes.size();j++){ 00158 count++; 00159 } 00160 } 00161 00162 return count; 00163 } |
|
|
|
|
|
Definition at line 113 of file VoltageIsland.cxx. References islandNodes, and numCurrentGroups. Referenced by parquetfp::Annealer::anneal().
00114 { 00115 int i,j,k,currentID,printVoltage=1; 00116 for(i=0;i<numCurrentGroups;i++){ 00117 currentID = i; 00118 for(j=0;j<islandNodes.size();j++){ 00119 if( (islandNodes[j].groupID == currentID) ){ 00120 if(printVoltage){ 00121 printVoltage = 0; 00122 cout << "nodes in voltage island " << islandNodes[j].voltage << endl; 00123 } 00124 for(k=0;k<islandNodes[j].nodes.size();k++){ 00125 cout << islandNodes[j].nodes[k] << " "; 00126 } 00127 } 00128 } 00129 cout << endl; 00130 printVoltage = 1; 00131 } 00132 } |
|
|
|
|
|
Definition at line 181 of file VoltageIsland.cxx. References islandNodes. Referenced by parquetfp::Annealer::anneal().
00182 { 00183 00184 int j, k, currentID; 00185 00186 currentID = groupID; 00187 for(j=0;j<islandNodes.size();j++){ 00188 if( (islandNodes[j].groupID == currentID) ){ 00189 return islandNodes[j].voltage; 00190 } 00191 } 00192 00193 } |
|
Definition at line 36 of file VoltageIsland_good.h. |
|
Definition at line 37 of file VoltageIsland_brokedestr.h. |
|
Definition at line 38 of file VoltageIsland.h. Referenced by addIslandNodes(), arrangeGroups(), clearIslandNodes(), createVoltageIslands(), maxIslandNodes(), numIslandInGroup(), numIslandNodes(), printIslands(), and voltageInGroup(). |
|
Definition at line 35 of file VoltageIsland_good.h. Referenced by addIslandNodes(), parquetfp::Annealer::anneal(), clearIslandNodes(), createVoltageIslands(), maxIslandNodes(), printIslands(), and SetOfVoltages(). |