Merge branch 'feat/remove_resource_directory' into 'develop'
Remove the concept of a resource directory See merge request ems/astdm/modeling.dram/dram.sys.5!115
This commit is contained in:
@@ -52,13 +52,12 @@ static void example_simulation(benchmark::State& state, Args&&... args)
|
||||
{
|
||||
sc_core::sc_get_curr_simcontext()->reset();
|
||||
|
||||
std::filesystem::path configFile(std::get<0>(args_tuple));
|
||||
std::filesystem::path resourceDirectory("configs");
|
||||
std::filesystem::path configFile = std::get<0>(args_tuple);
|
||||
|
||||
DRAMSys::Config::Configuration configuration =
|
||||
DRAMSys::Config::from_path(configFile.c_str());
|
||||
|
||||
Simulator simulator(std::move(configuration), std::move(resourceDirectory));
|
||||
Simulator simulator(std::move(configuration), configFile);
|
||||
simulator.run();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
{
|
||||
"addressmapping": {
|
||||
"RANK_BIT":[
|
||||
30,
|
||||
31
|
||||
],
|
||||
"BANK_BIT": [
|
||||
27,
|
||||
28,
|
||||
29
|
||||
],
|
||||
"BYTE_BIT": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
"COLUMN_BIT": [
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12
|
||||
],
|
||||
"ROW_BIT": [
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_ddr3_8x1Gbx8_dimm_p1KB_rbc.json",
|
||||
"mcconfig": "fr_fcfs.json",
|
||||
"memspec": "MICRON_1Gb_DDR3-1600_8bit_G.json",
|
||||
"simconfig": "example.json",
|
||||
"addressmapping": "addressmapping/am_ddr3_8x1Gbx8_dimm_p1KB_rbc.json",
|
||||
"mcconfig": "mcconfig/fr_fcfs.json",
|
||||
"memspec": "memspec/MICRON_1Gb_DDR3-1600_8bit_G.json",
|
||||
"simconfig": "simconfig/example.json",
|
||||
"simulationid": "ddr3-example",
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 800,
|
||||
"name": "example.stl"
|
||||
"name": "traces/example.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_ddr3_8x1Gbx8_dimm_p1KB_brc.json",
|
||||
"mcconfig": "fifoStrict.json",
|
||||
"memspec": "MICRON_1Gb_DDR3-1600_8bit_G.json",
|
||||
"simconfig": "gem5_se.json",
|
||||
"simulationid": "ddr3-gem5-se"
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_ddr4_8x4Gbx8_dimm_p1KB_brc.json",
|
||||
"mcconfig": "fr_fcfs.json",
|
||||
"memspec": "JEDEC_4Gb_DDR4-1866_8bit_A.json",
|
||||
"simconfig": "example.json",
|
||||
"addressmapping": "addressmapping/am_ddr4_8x4Gbx8_dimm_p1KB_brc.json",
|
||||
"mcconfig": "mcconfig/fr_fcfs.json",
|
||||
"memspec": "memspec/JEDEC_4Gb_DDR4-1866_8bit_A.json",
|
||||
"simconfig": "simconfig/example.json",
|
||||
"simulationid": "ddr4-example",
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 200,
|
||||
"name": "example.stl"
|
||||
"name": "traces/example.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 200,
|
||||
"name": "example.stl"
|
||||
"name": "traces/example.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_ddr5_2x8x2Gbx4_dimm_p1KB_rbc.json",
|
||||
"mcconfig": "fr_fcfs.json",
|
||||
"memspec": "JEDEC_2x8x2Gbx4_DDR5-3200A.json",
|
||||
"simconfig": "example.json",
|
||||
"addressmapping": "addressmapping/am_ddr5_2x8x2Gbx4_dimm_p1KB_rbc.json",
|
||||
"mcconfig": "mcconfig/fr_fcfs.json",
|
||||
"memspec": "memspec/JEDEC_2x8x2Gbx4_DDR5-3200A.json",
|
||||
"simconfig": "simconfig/example.json",
|
||||
"simulationid": "ddr5-example",
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 2000,
|
||||
"name": "example.stl"
|
||||
"name": "traces/example.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_ddr5_2x8x2Gbx4_dimm_p1KB_rbc.json",
|
||||
"mcconfig": "fr_fcfs.json",
|
||||
"memspec": "JEDEC_2x8x2Gbx4_DDR5-3200A.json",
|
||||
"simconfig": "example.json",
|
||||
"addressmapping": "addressmapping/am_ddr5_2x8x2Gbx4_dimm_p1KB_rbc.json",
|
||||
"mcconfig": "mcconfig/fr_fcfs.json",
|
||||
"memspec": "memspec/JEDEC_2x8x2Gbx4_DDR5-3200A.json",
|
||||
"simconfig": "simconfig/example.json",
|
||||
"simulationid": "ddr5-example",
|
||||
"tracesetup": [
|
||||
{
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_ddr5_2x2x8x4Gbx4_dimm_p1KB_rbc.json",
|
||||
"mcconfig": "fr_fcfs_rfm.json",
|
||||
"memspec": "JEDEC_2x2x8x4Gbx4_DDR5-3200A.json",
|
||||
"simconfig": "example.json",
|
||||
"simulationid": "ddr5-example",
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 2000,
|
||||
"type": "generator",
|
||||
"name": "gen0",
|
||||
"numRequests": 126000,
|
||||
"rwRatio": 0.85,
|
||||
"addressDistribution": "random",
|
||||
"seed": 123456,
|
||||
"maxPendingReadRequests": 24,
|
||||
"maxPendingWriteRequests": 24
|
||||
},
|
||||
{
|
||||
"clkMhz": 4000,
|
||||
"type": "hammer",
|
||||
"name": "ham0",
|
||||
"numRequests": 4000,
|
||||
"rowIncrement": 2097152
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_hbm2_8Gb_pc_brc.json",
|
||||
"mcconfig": "fr_fcfs.json",
|
||||
"memspec": "HBM2.json",
|
||||
"simconfig": "example.json",
|
||||
"addressmapping": "addressmapping/am_hbm2_8Gb_pc_brc.json",
|
||||
"mcconfig": "mcconfig/fr_fcfs.json",
|
||||
"memspec": "memspec/HBM2.json",
|
||||
"simconfig": "simconfig/example.json",
|
||||
"simulationid": "hbm2-example",
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 1000,
|
||||
"name": "example.stl"
|
||||
"name": "traces/example.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_hbm3_8Gb_pc_brc.json",
|
||||
"mcconfig": "fr_fcfs.json",
|
||||
"memspec": "HBM3.json",
|
||||
"simconfig": "example.json",
|
||||
"addressmapping": "addressmapping/am_hbm3_8Gb_pc_brc.json",
|
||||
"mcconfig": "mcconfig/fr_fcfs.json",
|
||||
"memspec": "memspec/HBM3.json",
|
||||
"simconfig": "simconfig/example.json",
|
||||
"simulationid": "hbm3-example",
|
||||
"tracesetup": [
|
||||
{
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_lpddr4_8Gbx16_brc.json",
|
||||
"mcconfig": "fr_fcfs.json",
|
||||
"memspec": "JEDEC_8Gb_LPDDR4-3200_16bit.json",
|
||||
"simconfig": "example.json",
|
||||
"addressmapping": "addressmapping/am_lpddr4_8Gbx16_brc.json",
|
||||
"mcconfig": "mcconfig/fr_fcfs.json",
|
||||
"memspec": "memspec/JEDEC_8Gb_LPDDR4-3200_16bit.json",
|
||||
"simconfig": "simconfig/example.json",
|
||||
"simulationid": "lpddr4-example",
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 200,
|
||||
"name": "example.stl"
|
||||
"name": "traces/example.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_lpddr5_1Gbx16_BG_rocobabg.json",
|
||||
"mcconfig": "fr_fcfs_refp2b.json",
|
||||
"memspec": "JEDEC_1Gbx16_BG_LPDDR5-6400.json",
|
||||
"simconfig": "example.json",
|
||||
"addressmapping": "addressmapping/am_lpddr5_1Gbx16_BG_rocobabg.json",
|
||||
"mcconfig": "mcconfig/fr_fcfs_refp2b.json",
|
||||
"memspec": "memspec/JEDEC_1Gbx16_BG_LPDDR5-6400.json",
|
||||
"simconfig": "simconfig/example.json",
|
||||
"simulationid": "lpddr5-example",
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 200,
|
||||
"name": "example.stl"
|
||||
"name": "traces/example.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
{
|
||||
"memspec": {
|
||||
"memarchitecturespec": {
|
||||
"burstLength": 8,
|
||||
"dataRate": 2,
|
||||
"nbrOfBanks": 8,
|
||||
"nbrOfColumns": 1024,
|
||||
"nbrOfRanks": 4,
|
||||
"nbrOfRows": 16384,
|
||||
"width": 8,
|
||||
"nbrOfDevicesOnDIMM": 8,
|
||||
"nbrOfChannels": 1
|
||||
},
|
||||
"memoryId": "MICRON_1Gb_DDR3-1600_8bit_G",
|
||||
"memoryType": "DDR3",
|
||||
"mempowerspec": {
|
||||
"idd0": 70.0,
|
||||
"idd2n": 45.0,
|
||||
"idd2p0": 12.0,
|
||||
"idd2p1": 30.0,
|
||||
"idd3n": 45.0,
|
||||
"idd3p0": 35.0,
|
||||
"idd3p1": 35.0,
|
||||
"idd4r": 140.0,
|
||||
"idd4w": 145.0,
|
||||
"idd5": 170.0,
|
||||
"idd6": 8.0,
|
||||
"vdd": 1.5
|
||||
},
|
||||
"memtimingspec": {
|
||||
"AL": 0,
|
||||
"CCD": 4,
|
||||
"CKE": 3,
|
||||
"CKESR": 4,
|
||||
"CL": 10,
|
||||
"DQSCK": 0,
|
||||
"FAW": 24,
|
||||
"RAS": 28,
|
||||
"RC": 38,
|
||||
"RCD": 10,
|
||||
"REFI": 6240,
|
||||
"RFC": 88,
|
||||
"RL": 10,
|
||||
"RP": 10,
|
||||
"RRD": 5,
|
||||
"RTP": 6,
|
||||
"WL": 8,
|
||||
"WR": 12,
|
||||
"WTR": 6,
|
||||
"XP": 6,
|
||||
"XPDLL": 20,
|
||||
"XS": 96,
|
||||
"XSDLL": 512,
|
||||
"ACTPDEN": 1,
|
||||
"PRPDEN": 1,
|
||||
"REFPDEN": 1,
|
||||
"RTRS": 1,
|
||||
"tCK": 1250
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_ranktest.json",
|
||||
"mcconfig": "fr_fcfs.json",
|
||||
"memspec": "memspec_ranktest.json",
|
||||
"simconfig": "example.json",
|
||||
"simulationid": "ranktest",
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 200,
|
||||
"name": "ranktest.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_stt-mram_8x2Gbx8_dimm_p1KB_rbc.json",
|
||||
"mcconfig": "fr_fcfs_noref.json",
|
||||
"memspec": "STT-MRAM-1.2x.json",
|
||||
"simconfig": "example.json",
|
||||
"addressmapping": "addressmapping/am_stt-mram_8x2Gbx8_dimm_p1KB_rbc.json",
|
||||
"mcconfig": "mcconfig/fr_fcfs_noref.json",
|
||||
"memspec": "memspec/STT-MRAM-1.2x.json",
|
||||
"simconfig": "simconfig/example.json",
|
||||
"simulationid": "stt-mram-example",
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 800,
|
||||
"name": "example.stl"
|
||||
"name": "traces/example.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
0: write 0x00000000
|
||||
1: write 0x08000000
|
||||
2: write 0x10000000
|
||||
3: write 0x18000000
|
||||
4: write 0x20000000
|
||||
5: write 0x28000000
|
||||
6: write 0x30000000
|
||||
7: write 0x38000000
|
||||
8: write 0x40000000
|
||||
9: write 0x48000000
|
||||
10: write 0x50000000
|
||||
11: write 0x58000000
|
||||
12: write 0x60000000
|
||||
13: write 0x68000000
|
||||
14: write 0x70000000
|
||||
15: write 0x78000000
|
||||
16: write 0x80000000
|
||||
17: write 0x88000000
|
||||
18: write 0x90000000
|
||||
19: write 0x98000000
|
||||
20: write 0xA0000000
|
||||
21: write 0xA8000000
|
||||
22: write 0xB0000000
|
||||
23: write 0xB8000000
|
||||
24: write 0xC0000000
|
||||
25: write 0xC8000000
|
||||
26: write 0xD0000000
|
||||
27: write 0xD8000000
|
||||
28: write 0xE0000000
|
||||
29: write 0xE8000000
|
||||
30: write 0xF0000000
|
||||
31: write 0xF8000000
|
||||
32: write 0x00000000
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"simulation": {
|
||||
"addressmapping": "am_wideio_thermal.json",
|
||||
"mcconfig": "fr_fcfs.json",
|
||||
"memspec": "JEDEC_256Mb_WIDEIO-200_128bit.json",
|
||||
"simconfig": "wideio_thermal.json",
|
||||
"simulationid": "wideio-example",
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 1000,
|
||||
"name": "test_error.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -50,10 +50,5 @@ target_link_libraries(configuration
|
||||
nlohmann_json::nlohmann_json
|
||||
)
|
||||
|
||||
target_compile_definitions(configuration
|
||||
PUBLIC
|
||||
DRAMSYS_RESOURCE_DIR="${DRAMSYS_RESOURCE_DIR}"
|
||||
)
|
||||
|
||||
target_compile_features(configuration PUBLIC cxx_std_17)
|
||||
add_library(DRAMSys::config ALIAS configuration)
|
||||
|
||||
@@ -46,7 +46,6 @@ namespace DRAMSys::Config
|
||||
struct AddressMapping
|
||||
{
|
||||
static constexpr std::string_view KEY = "addressmapping";
|
||||
static constexpr std::string_view SUB_DIR = "addressmapping";
|
||||
|
||||
using BitEntry = std::variant<unsigned int, std::vector<unsigned int>>;
|
||||
|
||||
|
||||
@@ -36,14 +36,14 @@
|
||||
#include "DRAMSysConfiguration.h"
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
|
||||
namespace DRAMSys::Config
|
||||
{
|
||||
|
||||
Configuration from_path(std::string_view path, std::string_view resourceDirectory)
|
||||
Configuration from_path(std::filesystem::path baseConfig)
|
||||
{
|
||||
std::ifstream file(path.data());
|
||||
std::ifstream file(baseConfig);
|
||||
std::filesystem::path baseDir = baseConfig.parent_path();
|
||||
|
||||
enum class SubConfig
|
||||
{
|
||||
@@ -59,7 +59,7 @@ Configuration from_path(std::string_view path, std::string_view resourceDirector
|
||||
// with the actual json data.
|
||||
std::function<bool(int depth, nlohmann::detail::parse_event_t event, json_t& parsed)>
|
||||
parser_callback;
|
||||
parser_callback = [&parser_callback, ¤t_sub_config, resourceDirectory](
|
||||
parser_callback = [&parser_callback, ¤t_sub_config, baseDir](
|
||||
int depth, nlohmann::detail::parse_event_t event, json_t& parsed) -> bool
|
||||
{
|
||||
using nlohmann::detail::parse_event_t;
|
||||
@@ -90,13 +90,10 @@ Configuration from_path(std::string_view path, std::string_view resourceDirector
|
||||
if (event == parse_event_t::value && current_sub_config != SubConfig::Unkown)
|
||||
{
|
||||
// Replace name of json file with actual json data
|
||||
auto parse_json = [&parser_callback,
|
||||
resourceDirectory](std::string_view base_dir,
|
||||
std::string_view sub_config_key,
|
||||
const std::string& filename) -> json_t
|
||||
auto parse_json = [&parser_callback, baseDir](std::string_view sub_config_key,
|
||||
const std::string& filename) -> json_t
|
||||
{
|
||||
std::filesystem::path path(resourceDirectory);
|
||||
path /= base_dir;
|
||||
std::filesystem::path path{baseDir};
|
||||
path /= filename;
|
||||
|
||||
std::ifstream json_file(path);
|
||||
@@ -110,15 +107,15 @@ Configuration from_path(std::string_view path, std::string_view resourceDirector
|
||||
};
|
||||
|
||||
if (current_sub_config == SubConfig::MemSpec)
|
||||
parsed = parse_json(MemSpec::SUB_DIR, MemSpec::KEY, parsed);
|
||||
parsed = parse_json(MemSpec::KEY, parsed);
|
||||
else if (current_sub_config == SubConfig::AddressMapping)
|
||||
parsed = parse_json(AddressMapping::SUB_DIR, AddressMapping::KEY, parsed);
|
||||
parsed = parse_json(AddressMapping::KEY, parsed);
|
||||
else if (current_sub_config == SubConfig::McConfig)
|
||||
parsed = parse_json(McConfig::SUB_DIR, McConfig::KEY, parsed);
|
||||
parsed = parse_json(McConfig::KEY, parsed);
|
||||
else if (current_sub_config == SubConfig::SimConfig)
|
||||
parsed = parse_json(SimConfig::SUB_DIR, SimConfig::KEY, parsed);
|
||||
parsed = parse_json(SimConfig::KEY, parsed);
|
||||
else if (current_sub_config == SubConfig::TraceSetup)
|
||||
parsed = parse_json(TraceSetupConstants::SUB_DIR, TraceSetupConstants::KEY, parsed);
|
||||
parsed = parse_json(TraceSetupConstants::KEY, parsed);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -129,7 +126,7 @@ Configuration from_path(std::string_view path, std::string_view resourceDirector
|
||||
json_t simulation = json_t::parse(file, parser_callback, true, true).at(Configuration::KEY);
|
||||
return simulation.get<Config::Configuration>();
|
||||
}
|
||||
throw std::runtime_error("Failed to open file " + std::string(path));
|
||||
throw std::runtime_error("Failed to open file " + std::string(baseConfig));
|
||||
}
|
||||
|
||||
} // namespace DRAMSys::Config
|
||||
|
||||
@@ -75,8 +75,7 @@ struct Configuration
|
||||
NLOHMANN_JSONIFY_ALL_THINGS(
|
||||
Configuration, addressmapping, mcconfig, memspec, simconfig, simulationid, tracesetup)
|
||||
|
||||
Configuration from_path(std::string_view path,
|
||||
std::string_view resourceDirectory = DRAMSYS_RESOURCE_DIR);
|
||||
Configuration from_path(std::filesystem::path baseConfig);
|
||||
|
||||
} // namespace DRAMSys::Config
|
||||
|
||||
|
||||
@@ -170,7 +170,6 @@ NLOHMANN_JSON_SERIALIZE_ENUM(ArbiterType,
|
||||
struct McConfig
|
||||
{
|
||||
static constexpr std::string_view KEY = "mcconfig";
|
||||
static constexpr std::string_view SUB_DIR = "mcconfig";
|
||||
|
||||
std::optional<PagePolicyType> PagePolicy;
|
||||
std::optional<SchedulerType> Scheduler;
|
||||
|
||||
@@ -58,7 +58,6 @@ NLOHMANN_JSON_SERIALIZE_ENUM(StoreModeType,
|
||||
struct SimConfig
|
||||
{
|
||||
static constexpr std::string_view KEY = "simconfig";
|
||||
static constexpr std::string_view SUB_DIR = "simconfig";
|
||||
|
||||
std::optional<uint64_t> AddressOffset;
|
||||
std::optional<bool> CheckTLM2Protocol;
|
||||
|
||||
@@ -205,7 +205,6 @@ NLOHMANN_JSONIFY_ALL_THINGS(RowHammer,
|
||||
struct TraceSetupConstants
|
||||
{
|
||||
static constexpr std::string_view KEY = "tracesetup";
|
||||
static constexpr std::string_view SUB_DIR = "tracesetup";
|
||||
};
|
||||
|
||||
using Initiator =
|
||||
|
||||
@@ -78,12 +78,11 @@ NLOHMANN_JSON_SERIALIZE_ENUM(MemoryType,
|
||||
{MemoryType::GDDR6, "GDDR6"},
|
||||
{MemoryType::HBM2, "HBM2"},
|
||||
{MemoryType::HBM3, "HBM3"},
|
||||
{MemoryType::STTMRAM, "STTMRAM"}})
|
||||
{MemoryType::STTMRAM, "STT-MRAM"}})
|
||||
|
||||
struct MemSpec
|
||||
{
|
||||
static constexpr std::string_view KEY = "memspec";
|
||||
static constexpr std::string_view SUB_DIR = "memspec";
|
||||
|
||||
MemArchitectureSpecType memarchitecturespec;
|
||||
std::string memoryId;
|
||||
|
||||
@@ -100,6 +100,7 @@ target_compile_features(libdramsys PUBLIC cxx_std_17)
|
||||
|
||||
target_compile_definitions(libdramsys
|
||||
PUBLIC
|
||||
DRAMSYS_RESOURCE_DIR="${DRAMSYS_RESOURCE_DIR}"
|
||||
$<$<BOOL:${DRAMPower_FOUND}>:DRAMPOWER>
|
||||
)
|
||||
|
||||
|
||||
@@ -42,21 +42,15 @@
|
||||
int sc_main(int argc, char** argv)
|
||||
{
|
||||
std::filesystem::path resourceDirectory = DRAMSYS_RESOURCE_DIR;
|
||||
if (argc >= 3)
|
||||
{
|
||||
resourceDirectory = argv[2];
|
||||
}
|
||||
|
||||
std::filesystem::path baseConfig = resourceDirectory / "ddr4-example.json";
|
||||
if (argc >= 2)
|
||||
{
|
||||
baseConfig = argv[1];
|
||||
}
|
||||
|
||||
DRAMSys::Config::Configuration configuration =
|
||||
DRAMSys::Config::from_path(baseConfig.c_str(), resourceDirectory.c_str());
|
||||
DRAMSys::Config::Configuration configuration = DRAMSys::Config::from_path(baseConfig.c_str());
|
||||
|
||||
Simulator simulator(std::move(configuration), std::move(resourceDirectory));
|
||||
Simulator simulator(std::move(configuration), std::move(baseConfig));
|
||||
simulator.run();
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -41,13 +41,12 @@
|
||||
#include "player/StlPlayer.h"
|
||||
#include "util.h"
|
||||
|
||||
Simulator::Simulator(DRAMSys::Config::Configuration configuration,
|
||||
std::filesystem::path resourceDirectory) :
|
||||
Simulator::Simulator(DRAMSys::Config::Configuration configuration, std::filesystem::path baseConfig) :
|
||||
storageEnabled(configuration.simconfig.StoreMode == DRAMSys::Config::StoreModeType::Store),
|
||||
memoryManager(storageEnabled),
|
||||
configuration(std::move(configuration)),
|
||||
resourceDirectory(std::move(resourceDirectory)),
|
||||
dramSys(std::make_unique<DRAMSys::DRAMSys>("DRAMSys", this->configuration))
|
||||
dramSys(std::make_unique<DRAMSys::DRAMSys>("DRAMSys", this->configuration)),
|
||||
baseConfig(baseConfig)
|
||||
{
|
||||
terminateInitiator = [this]()
|
||||
{
|
||||
@@ -104,7 +103,7 @@ Simulator::instantiateInitiator(const DRAMSys::Config::Initiator& initiator)
|
||||
}
|
||||
else if constexpr (std::is_same_v<T, DRAMSys::Config::TracePlayer>)
|
||||
{
|
||||
std::filesystem::path tracePath = resourceDirectory / TRACE_DIRECTORY / config.name;
|
||||
std::filesystem::path tracePath = baseConfig.parent_path() / config.name;
|
||||
|
||||
std::optional<StlPlayer::TraceType> traceType;
|
||||
|
||||
|
||||
@@ -41,13 +41,10 @@
|
||||
#include <DRAMSys/config/DRAMSysConfiguration.h>
|
||||
#include <DRAMSys/simulation/DRAMSys.h>
|
||||
|
||||
static constexpr std::string_view TRACE_DIRECTORY = "traces";
|
||||
|
||||
class Simulator
|
||||
{
|
||||
public:
|
||||
Simulator(DRAMSys::Config::Configuration configuration,
|
||||
std::filesystem::path resourceDirectory);
|
||||
Simulator(DRAMSys::Config::Configuration configuration, std::filesystem::path baseConfig);
|
||||
|
||||
void run();
|
||||
|
||||
@@ -58,7 +55,6 @@ private:
|
||||
MemoryManager memoryManager;
|
||||
|
||||
DRAMSys::Config::Configuration configuration;
|
||||
std::filesystem::path resourceDirectory;
|
||||
|
||||
std::unique_ptr<DRAMSys::DRAMSys> dramSys;
|
||||
std::vector<std::unique_ptr<Initiator>> initiators;
|
||||
@@ -69,4 +65,6 @@ private:
|
||||
unsigned int terminatedInitiators = 0;
|
||||
uint64_t totalTransactions{};
|
||||
uint64_t transactionsFinished = 0;
|
||||
|
||||
std::filesystem::path baseConfig;
|
||||
};
|
||||
|
||||
@@ -288,12 +288,6 @@ TEST_F(ConfigurationTest, DumpConfiguration)
|
||||
std::cout << json.dump(4) << std::endl;
|
||||
}
|
||||
|
||||
TEST(Configuration, ResourceDirectory)
|
||||
{
|
||||
// Test should not throw exceptions
|
||||
Configuration config = from_path("resources/ddr5-example.json", "resources");
|
||||
}
|
||||
|
||||
TEST(Configuration, FromPath)
|
||||
{
|
||||
// Test should not throw exceptions
|
||||
|
||||
@@ -48,7 +48,7 @@ set(TABLES_TO_COMPARE
|
||||
Power
|
||||
)
|
||||
|
||||
function(test_standard standard test_name base_config resource_dir output_filename)
|
||||
function(test_standard standard test_name base_config output_filename)
|
||||
if(NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${standard})
|
||||
message(WARNING "Cannot find regression test ${standard}")
|
||||
return()
|
||||
@@ -61,7 +61,7 @@ function(test_standard standard test_name base_config resource_dir output_filena
|
||||
add_test(
|
||||
NAME Regression${test_name}.CreateDatabase
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${test_name}
|
||||
COMMAND $<TARGET_FILE:DRAMSys> ${base_config} ${resource_dir}
|
||||
COMMAND $<TARGET_FILE:DRAMSys> ${base_config}
|
||||
)
|
||||
set_tests_properties(Regression${test_name}.CreateDatabase PROPERTIES FIXTURES_SETUP Regression${test_name}.CreateDatabase)
|
||||
|
||||
@@ -89,12 +89,12 @@ function(test_standard standard test_name base_config resource_dir output_filena
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
test_standard(DDR3 DDR3 ${CMAKE_CURRENT_SOURCE_DIR}/DDR3/ddr3-example.json ${CMAKE_CURRENT_SOURCE_DIR}/DDR3 DRAMSys_ddr3-dual-rank_ddr3_ch0.tdb)
|
||||
test_standard(DDR4 DDR4 ${CMAKE_CURRENT_SOURCE_DIR}/DDR4/ddr4-example.json ${CMAKE_CURRENT_SOURCE_DIR}/DDR4 DRAMSys_ddr4-bankgrp_ddr4_ch0.tdb)
|
||||
test_standard(DDR5 DDR5.Ch0 ${CMAKE_CURRENT_SOURCE_DIR}/DDR5/ddr5-example.json ${CMAKE_CURRENT_SOURCE_DIR}/DDR5 DRAMSys_ddr5-example_ddr5_ch0.tdb)
|
||||
test_standard(DDR5 DDR5.Ch1 ${CMAKE_CURRENT_SOURCE_DIR}/DDR5/ddr5-example.json ${CMAKE_CURRENT_SOURCE_DIR}/DDR5 DRAMSys_ddr5-example_ddr5_ch1.tdb)
|
||||
test_standard(LPDDR4 LPDDR4 ${CMAKE_CURRENT_SOURCE_DIR}/LPDDR4/lpddr4-example.json ${CMAKE_CURRENT_SOURCE_DIR}/LPDDR4 DRAMSys_lpddr4-example_lpddr4_ch0.tdb)
|
||||
test_standard(LPDDR5 LPDDR5 ${CMAKE_CURRENT_SOURCE_DIR}/LPDDR5/lpddr5-example.json ${CMAKE_CURRENT_SOURCE_DIR}/LPDDR5 DRAMSys_lpddr5-example_lpddr5_ch0.tdb)
|
||||
test_standard(HBM2 HBM2.Ch0 ${CMAKE_CURRENT_SOURCE_DIR}/HBM2/hbm2-example.json ${CMAKE_CURRENT_SOURCE_DIR}/HBM2 DRAMSys_hbm2-example_hbm2_ch0.tdb)
|
||||
test_standard(HBM2 HBM2.Ch1 ${CMAKE_CURRENT_SOURCE_DIR}/HBM2/hbm2-example.json ${CMAKE_CURRENT_SOURCE_DIR}/HBM2 DRAMSys_hbm2-example_hbm2_ch1.tdb)
|
||||
test_standard(HBM3 HBM3 ${CMAKE_CURRENT_SOURCE_DIR}/HBM3/hbm3-example.json ${CMAKE_CURRENT_SOURCE_DIR}/HBM3 DRAMSys_hbm3-example_hbm3_ch0.tdb)
|
||||
test_standard(DDR3 DDR3 ${CMAKE_CURRENT_SOURCE_DIR}/DDR3/ddr3-example.json DRAMSys_ddr3-dual-rank_ddr3_ch0.tdb)
|
||||
test_standard(DDR4 DDR4 ${CMAKE_CURRENT_SOURCE_DIR}/DDR4/ddr4-example.json DRAMSys_ddr4-bankgrp_ddr4_ch0.tdb)
|
||||
test_standard(DDR5 DDR5.Ch0 ${CMAKE_CURRENT_SOURCE_DIR}/DDR5/ddr5-example.json DRAMSys_ddr5-example_ddr5_ch0.tdb)
|
||||
test_standard(DDR5 DDR5.Ch1 ${CMAKE_CURRENT_SOURCE_DIR}/DDR5/ddr5-example.json DRAMSys_ddr5-example_ddr5_ch1.tdb)
|
||||
test_standard(LPDDR4 LPDDR4 ${CMAKE_CURRENT_SOURCE_DIR}/LPDDR4/lpddr4-example.json DRAMSys_lpddr4-example_lpddr4_ch0.tdb)
|
||||
test_standard(LPDDR5 LPDDR5 ${CMAKE_CURRENT_SOURCE_DIR}/LPDDR5/lpddr5-example.json DRAMSys_lpddr5-example_lpddr5_ch0.tdb)
|
||||
test_standard(HBM2 HBM2.Ch0 ${CMAKE_CURRENT_SOURCE_DIR}/HBM2/hbm2-example.json DRAMSys_hbm2-example_hbm2_ch0.tdb)
|
||||
test_standard(HBM2 HBM2.Ch1 ${CMAKE_CURRENT_SOURCE_DIR}/HBM2/hbm2-example.json DRAMSys_hbm2-example_hbm2_ch1.tdb)
|
||||
test_standard(HBM3 HBM3 ${CMAKE_CURRENT_SOURCE_DIR}/HBM3/hbm3-example.json DRAMSys_hbm3-example_hbm3_ch0.tdb)
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 533,
|
||||
"name": "trace_test2.stl"
|
||||
"name": "traces/trace_test2.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 933,
|
||||
"name": "trace_test3.stl"
|
||||
"name": "traces/trace_test3.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 1600,
|
||||
"name": "trace_test3.stl"
|
||||
"name": "traces/trace_test3.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -126,11 +126,11 @@
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 1000,
|
||||
"name": "trace1_test4.stl"
|
||||
"name": "traces/trace1_test4.stl"
|
||||
},
|
||||
{
|
||||
"clkMhz": 1000,
|
||||
"name": "trace2_test4.stl"
|
||||
"name": "traces/trace2_test4.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -129,11 +129,11 @@
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 1600,
|
||||
"name": "trace1_test4.stl"
|
||||
"name": "traces/trace1_test4.stl"
|
||||
},
|
||||
{
|
||||
"clkMhz": 1600,
|
||||
"name": "trace2_test4.stl"
|
||||
"name": "traces/trace2_test4.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 1600,
|
||||
"name": "trace_lpddr4.stl"
|
||||
"name": "traces/trace_lpddr4.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
"tracesetup": [
|
||||
{
|
||||
"clkMhz": 1600,
|
||||
"name": "trace_lpddr5.stl"
|
||||
"name": "traces/trace_lpddr5.stl"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -54,9 +54,8 @@ int main(int argc, char** argv)
|
||||
}
|
||||
|
||||
std::string pathToJson = argv[1];
|
||||
std::string resourceDirectory = argc <= 3 ? DRAMSYS_RESOURCE_DIR : argv[3];
|
||||
|
||||
auto configuration = DRAMSys::Config::from_path(pathToJson, resourceDirectory);
|
||||
auto configuration = DRAMSys::Config::from_path(pathToJson);
|
||||
|
||||
nlohmann::json json;
|
||||
json["simulation"] = configuration;
|
||||
|
||||
Reference in New Issue
Block a user