int main(int argc, char **argv) { // default values unsigned int numBits = 0; string outFilename = ""; Circuit c; // parsing inputs if (argc < 2) { usage(argv[0]); } if (argv[1] == string("-h") || argv[1] == string("-help")) { usage(argv[0]); } for (int i = 1; i < argc; ++i) { if (argv[1] == string("-h") || argv[1] == string("-help")) { usage(argv[0]); } else if (argv[i] == string("-add")) { if (i+2 < argc) { numBits = static_cast<unsigned>(atoi(argv[++i])); outFilename = argv[++i]; if (!c.createADDModule("a", "b", "cin", "s", "cout", numBits)) { cout << "Adder module successfully created." << endl; // your code here c.setName("pyongjoo_adder"); c.setPIs("a", 0, numBits); c.setPIs("b", 0, numBits); c.setPI("cin"); c.setPOs("s", 0, numBits); c.setPO("cout"); c.writeBLIF(outFilename); } else cout << "Problem creating adder module." << endl; } else { cout << "option -add requires two arguments" << endl; usage(argv[0]); } } else if (argv[i] == string("-sub")) { if (i+2 < argc) { numBits = static_cast<unsigned>(atoi(argv[++i])); outFilename = argv[++i]; if (!c.createSUBModule("a", "b", "s", numBits)) { cout << "Subtractor module successfully created." << endl; // your code here c.setName("pyongjoo_subtractor"); c.setPIs("a", 0, numBits); c.setPIs("b", 0, numBits); c.setPOs("s", 0, numBits); c.writeBLIF(outFilename); } else cout << "Problem creating substractor module." << endl; } else { cout << "option -sub requires two arguments" << endl; usage(argv[0]); } } else if (argv[i] == string("-shift")) { if (i+3 < argc) { numBits = static_cast<unsigned>(atoi(argv[++i])); unsigned int numShift = static_cast<unsigned>(atoi(argv[++i])); outFilename = argv[++i]; if (!c.createSHIFTModule("orig", "out", numBits, numShift)) { cout << "Shifter module successfully created." << endl; c.setName("shifter"); c.setPIs("orig", 0, numBits); c.setPOs("out", 0, numBits+numShift); // c.print(); // optional c.writeBLIF(outFilename); } else cout << "Problem creating shifter module." << endl; } else { cout << "option -shift requires three arguments" << endl; usage(argv[0]); } } else if (argv[i] == string("-absmin5x3y")) { if (i+1 < argc) { outFilename = argv[++i]; if (!c.createABSMIN5X3YModule("x", "y", "z")) { cout << "abs(min(5x, 3y)) module successfully created." << endl; // your code here c.setName("pyongjoo_absmin5x3y"); c.setPIs("x", 0, 16); c.setPIs("y", 0, 16); c.setPOs("z", 0, 19); c.writeBLIF(outFilename); } else cout << "Problem creating abs(min(5x, 3y)) module." << endl; } else { cout << "option -absmin5x3y requires one argument" << endl; usage(argv[0]); } } else { cout << "unrecognized command" << argv[i] << endl; usage(argv[0]); } } return 0; }