/* * main.cpp * * Created on: Mar 16, 2014 * Author: robert */ #include #include #include "SimulationManager.h" #include "../core/configuration/Configuration.h" #include #include #include #include using namespace std; using namespace simulation; string resources; bool silent = false; string pathOfFile(string file) { return file.substr(0, file.find_last_of('/')); } void startTraceAnalyzer(string traceName) { string p = getenv("trace"); string run_tpr = p + " " + traceName; system(run_tpr.c_str()); } bool runSimulation(string traceName, DramSetup setup, vector devices) { int pid = fork(); int status = 0; if (pid == 0) { Simulation simulation("sim", resources, traceName, setup, devices,silent); simulation.startSimulation(); return true; } waitpid(pid, &status, 0); return false; } bool batchTraces(DramSetup setup, vector> tracePairs) { int id = 0; for (pair pair : tracePairs) { id++; string traceName = "traceBatch" + to_string(id) + ".tdb"; if (runSimulation(traceName, setup, { Device(pair.first), Device(pair.second) })) return true; //kill child } return false; } bool batchSetups(pair tracePair, vector setups) { int id = 0; for (auto& setup : setups) { id++; string traceName = "setupBatch" + to_string(id) + ".tdb"; if (runSimulation(traceName, setup, { Device(tracePair.first), Device(tracePair.second) })) return true; //kill child } return false; } int sc_main(int argc, char **argv) { sc_set_time_resolution(1, SC_PS); resources = pathOfFile(argv[0]) + string("/../resources/"); // DramSetup setup; // setup.memconfig = "memconfig.xml"; // //setup.memspec = "MICRON_4Gb_DDR4-1866_8bit_A.xml"; // setup.memspec = "MatzesWideIO.xml"; // // vector> tracePairs; // tracePairs.push_back(pair("chstone-mips_32.stl", "chstone-motion_32.stl")); // // batchTraces(setup, tracePairs); // DramSetup setup2; // setup2.memconfig = "memconfig.xml"; // setup2.memspec = "MICRON_4Gb_DDR4-1866_8bit_A.xml"; //batchSetups(tracePairs[0], { setup, setup2 }); Device d1("chstone-motion_32.stl",4); Device d2("empty.stl",4); string dramSpec = "MatzesWideIO.xml"; if(runSimulation("fifo.tdb",DramSetup("fifo.xml",dramSpec),{d1,d2})) return 0; if(runSimulation("fr_fcfs.tdb",DramSetup("fr_fcfs.xml",dramSpec),{d1,d2})) return 0; // if(runSimulation("fr_fcfs_unaware.tdb",DramSetup("fr_fcfs_unaware.xml",dramSpec),{d1,d2})) // return 0; // if(runSimulation("par_bs.tdb",DramSetup("par_bs.xml",dramSpec),{d1,d2})) // return 0; // if(runSimulation("par_bs_unaware.tdb",DramSetup("par_bs_unaware.xml",dramSpec),{d1,d2})) // return 0; // // startTraceAnalyzer("fifo.tdb fr_fcfs.tdb fr_fcfs_unaware.tdb par_bs.tdb par_bs_unaware.tdb"); return 0; }