#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(). |
1.3.2