Remove the concept of a resource directory
The concept of a resource directory was confusing, error-prone and was only used to specify the directory of the base config json anyway. Therefore, remove the concept of the resource directory and use the parent directory of the base config directly.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -41,9 +41,10 @@
|
||||
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 +60,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,12 +91,11 @@ 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 base_dir,
|
||||
std::string_view sub_config_key,
|
||||
const std::string& filename) -> json_t
|
||||
{
|
||||
std::filesystem::path path(resourceDirectory);
|
||||
std::filesystem::path path{baseDir};
|
||||
path /= base_dir;
|
||||
path /= filename;
|
||||
|
||||
@@ -129,7 +129,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
|
||||
|
||||
|
||||
@@ -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() / TRACE_DIRECTORY / config.name;
|
||||
|
||||
std::optional<StlPlayer::TraceType> traceType;
|
||||
|
||||
|
||||
@@ -46,8 +46,7 @@ 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 +57,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 +67,6 @@ private:
|
||||
unsigned int terminatedInitiators = 0;
|
||||
uint64_t totalTransactions{};
|
||||
uint64_t transactionsFinished = 0;
|
||||
|
||||
std::filesystem::path baseConfig;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user