/* * 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; 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 resources, string traceName, DramSetup setup, vector devices) { int pid = fork(); int status = 0; if (pid == 0) { Simulation simulation("sim", resources, traceName, setup, devices); 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 = "batch" + to_string(id) + ".tdb"; if(runSimulation(resources, traceName, setup, { Device(pair.first), Device(pair.second) })) return true;//kill child } } bool batchSetups(pairtracePair, vector setups) { int id =0; for(auto& setup : setups) { id++; string traceName = "batch0" + to_string(id) + ".tdb"; if(runSimulation(resources, traceName, setup, { Device(tracePair.first), Device(tracePair.second) })) return true;//kill child } } 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"; DramSetup setup2; setup2.memconfig = "memconfig.xml"; setup2.memspec = "MICRON_4Gb_DDR4-1866_8bit_A.xml"; vector> tracePairs; tracePairs.push_back(pair("trace.stl", "empty.stl")); tracePairs.push_back(pair("trace2.stl", "empty.stl")); //batchTraces(setup, tracePairs); batchSetups(tracePairs[0], {setup, setup2}); return 0; }