/* * 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, true); 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(pair tracePair, 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 = "MatzesWideIO.xml"; //setup.memspec = "MICRON_4Gb_DDR4-1866_8bit_A.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}); string traceName("tpr.tdb"); string trace2 = "empty.stl"; string trace1 = "chstone-jpeg_32.stl"; trace1 = "trace.stl"; if (runSimulation(resources, traceName, setup, { Device(trace1), Device(trace2) })) startTraceAnalyzer(traceName); return 0; }