/************************************************************************** *** *** Copyright (c) 2004 Regents of the University of Michigan, *** Hayward H. Chan and Igor L. Markov *** *** Contact author(s): hhchan@umich.edu, imarkov@umich.edu *** Original Affiliation: EECS Department, *** The University of Michigan, *** Ann Arbor, MI 48109-2122 *** *** Permission is hereby granted, free of charge, to any person obtaining *** a copy of this software and associated documentation files (the *** "Software"), to deal in the Software without restriction, including *** without limitation *** the rights to use, copy, modify, merge, publish, distribute, sublicense, *** and/or sell copies of the Software, and to permit persons to whom the *** Software is furnished to do so, subject to the following conditions: *** *** The above copyright notice and this permission notice shall be included *** in all copies or substantial portions of the Software. *** *** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES *** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY *** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT *** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *** THE USE OR OTHER DEALINGS IN THE SOFTWARE. *** *** ***************************************************************************/ #include #include #include using namespace std; const string PREFIX("block_"); int main(int argc, char* argv[]) { ifstream infile; ofstream outfile; if (argc < 3) { cout << "usage: " << argv[0] << " ." << endl; exit(1); } infile.open(argv[1]); if (!infile.good()) { cout << "Cannot open file: " << argv[1] << endl; exit(1); } string blockname(argv[2]); blockname += ".blocks"; outfile.open(blockname.c_str()); if (!outfile.good()) { cout << "Cannot open file: " << blockname << endl; exit(1); } int blockNum; infile >> blockNum; if (!infile.good()) { cout << "Error in reading number of blocks." << endl; exit(1); } outfile.setf(ios::fixed); outfile.precision(2); outfile << "UCSC blocks 1.0" << endl << endl; outfile << "NumSoftRectangularBlocks : 0" << endl; outfile << "NumHardRectilinearBlocks : " << blockNum << endl; outfile << "NumTerminals : 0" << endl << endl; // cc_11 hardrectilinear 4 (0, 0) (0, 1826) (3146, 1826) (3146, 0) for (int i = 0; i < blockNum; i++) { double width, height; infile >> width >> height; if (!infile.good()) { cout << "Error in reading block " << i << "." << endl; exit(1); } outfile << PREFIX << i << " hardrectilinear 4 (0, 0) (0, " << height << ") (" << width << ", " << height << ") (" << width << ", 0)" << endl; } outfile.close(); string netname(argv[2]); netname += ".nets"; outfile.open(netname.c_str()); if (!outfile.good()) { cout << "Cannot open file: " << netname << endl; exit(1); } outfile << "UCLA nets 1.0" << endl << endl; outfile << "NumNets : 1" << endl; outfile << "NumPins : 0" << endl; outfile << endl; outfile << "NetDegree: 0" << endl; outfile.close(); string plname(argv[2]); plname += ".pl"; outfile.open(plname.c_str()); if (!outfile.good()) { cout << "Cannot open file: " << plname << endl; exit(0); } outfile << "UCSC blocks 1.0" << endl << endl; for (int i = 0; i < blockNum; i++) outfile << PREFIX << i << " 0 0" << endl; outfile.close(); return 0; }