Use key "addressmapping" instead of "CONGEN" in addressmapping configs

This commit is contained in:
2023-03-17 14:01:17 +01:00
parent b0d7e4a18b
commit a49afa40eb
64 changed files with 227 additions and 241 deletions

View File

@@ -182,7 +182,7 @@ Used fields:
```json ```json
{ {
"CONGEN": { "addressmapping": {
"XOR": [ "XOR": [
{ {
"FIRST": 13, "FIRST": 13,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
28, 28,
29, 29,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
13, 13,
14, 14,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
27, 27,
28, 28,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
13, 13,
14, 14,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
28, 28,
29, 29,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
13, 13,
14, 14,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
26, 26,
27, 27,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
13, 13,
14, 14,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANKGROUP_BIT":[ "BANKGROUP_BIT":[
28, 28,
29 29

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0, 0,
1 1

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0, 0,
1 1

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0, 0,
1 1

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0, 0,
1 1

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"PSEUDOCHANNEL_BIT":[ "PSEUDOCHANNEL_BIT":[
29 29
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"PSEUDOCHANNEL_BIT":[ "PSEUDOCHANNEL_BIT":[
28 28
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
28, 28,
29, 29,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
11, 11,
12, 12,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
5, 5,
6, 6,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
27, 27,
28, 28,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
11, 11,
12, 12,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
5, 5,
6, 6,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
27, 27,
28, 28,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"RANK_BIT":[ "RANK_BIT":[
30, 30,
31 31

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
13, 13,
14, 14,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
25, 25,
26, 26,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
12, 12,
13, 13,

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
25, 25,
26 26

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
11, 11,
12 12

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
23, 23,
24 24

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
11, 11,
12 12

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
26, 26,
27 27

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
11, 11,
12 12

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
27, 27,
28 28

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
12, 12,
13 13

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
24, 24,
25 25

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
11, 11,
12 12

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BANK_BIT": [ "BANK_BIT": [
4, 4,
5 5

View File

@@ -54,25 +54,20 @@ NLOHMANN_JSONIFY_ALL_THINGS(XorPair, FIRST, SECOND)
struct AddressMapping struct AddressMapping
{ {
static constexpr std::string_view KEY = "addressmapping"; static constexpr std::string_view KEY = "addressmapping";
static constexpr std::string_view INNER_KEY = "CONGEN"; static constexpr std::string_view SUB_DIR = "addressmapping";
static constexpr std::string_view PATH = "addressmapping";
struct ConGen { std::optional<std::vector<unsigned int>> BYTE_BIT;
std::optional<std::vector<unsigned int>> BYTE_BIT; std::optional<std::vector<unsigned int>> COLUMN_BIT;
std::optional<std::vector<unsigned int>> COLUMN_BIT; std::optional<std::vector<unsigned int>> ROW_BIT;
std::optional<std::vector<unsigned int>> ROW_BIT; std::optional<std::vector<unsigned int>> BANK_BIT;
std::optional<std::vector<unsigned int>> BANK_BIT; std::optional<std::vector<unsigned int>> BANKGROUP_BIT;
std::optional<std::vector<unsigned int>> BANKGROUP_BIT; std::optional<std::vector<unsigned int>> RANK_BIT;
std::optional<std::vector<unsigned int>> RANK_BIT; std::optional<std::vector<unsigned int>> PSEUDOCHANNEL_BIT;
std::optional<std::vector<unsigned int>> PSEUDOCHANNEL_BIT; std::optional<std::vector<unsigned int>> CHANNEL_BIT;
std::optional<std::vector<unsigned int>> CHANNEL_BIT; std::optional<std::vector<XorPair>> XOR;
std::optional<std::vector<XorPair>> XOR;
} CONGEN;
}; };
NLOHMANN_JSONIFY_ALL_THINGS(AddressMapping, CONGEN) NLOHMANN_JSONIFY_ALL_THINGS(AddressMapping,
NLOHMANN_JSONIFY_ALL_THINGS(AddressMapping::ConGen,
BYTE_BIT, BYTE_BIT,
COLUMN_BIT, COLUMN_BIT,
ROW_BIT, ROW_BIT,

View File

@@ -57,6 +57,8 @@ Configuration from_path(std::string_view path, std::string_view resourceDirector
Unkown Unkown
} current_sub_config; } current_sub_config;
// This custom parser callback is responsible to swap out the paths to the sub-config json files
// with the actual json data.
std::function<bool(int depth, nlohmann::detail::parse_event_t event, json_t &parsed)> std::function<bool(int depth, nlohmann::detail::parse_event_t event, json_t &parsed)>
parser_callback; parser_callback;
parser_callback = parser_callback =
@@ -84,6 +86,8 @@ Configuration from_path(std::string_view path, std::string_view resourceDirector
current_sub_config = SubConfig::Unkown; current_sub_config = SubConfig::Unkown;
} }
// In case we have an value (string) instead of an object, replace the value with the loaded
// json object.
if (event == parse_event_t::value && current_sub_config != SubConfig::Unkown) { if (event == parse_event_t::value && current_sub_config != SubConfig::Unkown) {
// Replace name of json file with actual json data // Replace name of json file with actual json data
auto parse_json = [&parser_callback, auto parse_json = [&parser_callback,
@@ -105,23 +109,15 @@ Configuration from_path(std::string_view path, std::string_view resourceDirector
}; };
if (current_sub_config == SubConfig::MemSpec) if (current_sub_config == SubConfig::MemSpec)
parsed = parse_json(MemSpec::PATH, MemSpec::KEY, parsed); parsed = parse_json(MemSpec::SUB_DIR, MemSpec::KEY, parsed);
else if (current_sub_config == SubConfig::AddressMapping) else if (current_sub_config == SubConfig::AddressMapping)
{ parsed = parse_json(AddressMapping::SUB_DIR, AddressMapping::KEY, parsed);
parsed = parse_json(AddressMapping::PATH, AddressMapping::INNER_KEY, parsed);
if (!parsed.contains(AddressMapping::INNER_KEY)) {
auto temp = parsed;
parsed = json_t();
parsed[AddressMapping::INNER_KEY] = temp;
}
}
else if (current_sub_config == SubConfig::McConfig) else if (current_sub_config == SubConfig::McConfig)
parsed = parse_json(McConfig::PATH, McConfig::KEY, parsed); parsed = parse_json(McConfig::SUB_DIR, McConfig::KEY, parsed);
else if (current_sub_config == SubConfig::SimConfig) else if (current_sub_config == SubConfig::SimConfig)
parsed = parse_json(SimConfig::PATH, SimConfig::KEY, parsed); parsed = parse_json(SimConfig::SUB_DIR, SimConfig::KEY, parsed);
else if (current_sub_config == SubConfig::TraceSetup) else if (current_sub_config == SubConfig::TraceSetup)
parsed = parse_json(TraceSetupConstants::PATH, TraceSetupConstants::KEY, parsed); parsed = parse_json(TraceSetupConstants::SUB_DIR, TraceSetupConstants::KEY, parsed);
} }
return true; return true;

View File

@@ -150,7 +150,7 @@ NLOHMANN_JSON_SERIALIZE_ENUM(ArbiterType, {{ArbiterType::Invalid, nullptr},
struct McConfig struct McConfig
{ {
static constexpr std::string_view KEY = "mcconfig"; static constexpr std::string_view KEY = "mcconfig";
static constexpr std::string_view PATH = "mcconfig"; static constexpr std::string_view SUB_DIR = "mcconfig";
std::optional<PagePolicyType> PagePolicy; std::optional<PagePolicyType> PagePolicy;
std::optional<SchedulerType> Scheduler; std::optional<SchedulerType> Scheduler;

View File

@@ -59,7 +59,7 @@ NLOHMANN_JSON_SERIALIZE_ENUM(StoreModeType, {{StoreModeType::Invalid, nullptr},
struct SimConfig struct SimConfig
{ {
static constexpr std::string_view KEY = "simconfig"; static constexpr std::string_view KEY = "simconfig";
static constexpr std::string_view PATH = "simconfig"; static constexpr std::string_view SUB_DIR = "simconfig";
std::optional<uint64_t> AddressOffset; std::optional<uint64_t> AddressOffset;
std::optional<bool> CheckTLM2Protocol; std::optional<bool> CheckTLM2Protocol;

View File

@@ -194,7 +194,7 @@ NLOHMANN_JSONIFY_ALL_THINGS(
struct TraceSetupConstants struct TraceSetupConstants
{ {
static constexpr std::string_view KEY = "tracesetup"; static constexpr std::string_view KEY = "tracesetup";
static constexpr std::string_view PATH = "tracesetup"; static constexpr std::string_view SUB_DIR = "tracesetup";
}; };
using TraceSetup = std::vector< using TraceSetup = std::vector<

View File

@@ -48,7 +48,7 @@ namespace DRAMSys::Config {
struct MemSpec struct MemSpec
{ {
static constexpr std::string_view KEY = "memspec"; static constexpr std::string_view KEY = "memspec";
static constexpr std::string_view PATH = "memspec"; static constexpr std::string_view SUB_DIR = "memspec";
MemArchitectureSpecType memarchitecturespec; MemArchitectureSpecType memarchitecturespec;
std::string memoryId; std::string memoryId;

View File

@@ -46,27 +46,27 @@
AddressDecoder::AddressDecoder(const DRAMSys::Config::AddressMapping &addressMapping, const MemSpec &memSpec) AddressDecoder::AddressDecoder(const DRAMSys::Config::AddressMapping &addressMapping, const MemSpec &memSpec)
{ {
if (const auto &channelBits = addressMapping.CONGEN.CHANNEL_BIT) if (const auto &channelBits = addressMapping.CHANNEL_BIT)
{ {
std::copy(channelBits->begin(), channelBits->end(), std::back_inserter(vChannelBits)); std::copy(channelBits->begin(), channelBits->end(), std::back_inserter(vChannelBits));
} }
if (const auto &rankBits = addressMapping.CONGEN.RANK_BIT) if (const auto &rankBits = addressMapping.RANK_BIT)
{ {
std::copy(rankBits->begin(), rankBits->end(), std::back_inserter(vRankBits)); std::copy(rankBits->begin(), rankBits->end(), std::back_inserter(vRankBits));
} }
if (const auto& bankGroupBits = addressMapping.CONGEN.BANKGROUP_BIT) if (const auto& bankGroupBits = addressMapping.BANKGROUP_BIT)
{ {
std::copy(bankGroupBits->begin(), bankGroupBits->end(), std::back_inserter(vBankGroupBits)); std::copy(bankGroupBits->begin(), bankGroupBits->end(), std::back_inserter(vBankGroupBits));
} }
if (const auto &byteBits = addressMapping.CONGEN.BYTE_BIT) if (const auto &byteBits = addressMapping.BYTE_BIT)
{ {
std::copy(byteBits->begin(), byteBits->end(), std::back_inserter(vByteBits)); std::copy(byteBits->begin(), byteBits->end(), std::back_inserter(vByteBits));
} }
if (const auto &xorBits = addressMapping.CONGEN.XOR) if (const auto &xorBits = addressMapping.XOR)
{ {
for (const auto& xorBit : *xorBits) for (const auto& xorBit : *xorBits)
{ {
@@ -74,17 +74,17 @@ AddressDecoder::AddressDecoder(const DRAMSys::Config::AddressMapping &addressMap
} }
} }
if (const auto &bankBits = addressMapping.CONGEN.BANK_BIT) if (const auto &bankBits = addressMapping.BANK_BIT)
{ {
std::copy(bankBits->begin(), bankBits->end(), std::back_inserter(vBankBits)); std::copy(bankBits->begin(), bankBits->end(), std::back_inserter(vBankBits));
} }
if (const auto &rowBits = addressMapping.CONGEN.ROW_BIT) if (const auto &rowBits = addressMapping.ROW_BIT)
{ {
std::copy(rowBits->begin(), rowBits->end(), std::back_inserter(vRowBits)); std::copy(rowBits->begin(), rowBits->end(), std::back_inserter(vRowBits));
} }
if (const auto &columnBits = addressMapping.CONGEN.COLUMN_BIT) if (const auto &columnBits = addressMapping.COLUMN_BIT)
{ {
std::copy(columnBits->begin(), columnBits->end(), std::back_inserter(vColumnBits)); std::copy(columnBits->begin(), columnBits->end(), std::back_inserter(vColumnBits));
} }

View File

@@ -1,54 +1,52 @@
{ {
"simulation": { "simulation": {
"addressmapping": { "addressmapping": {
"CONGEN": { "BANKGROUP_BIT": [
"BANKGROUP_BIT": [ 17,
17, 18,
18, 19,
19, 20,
20, 21,
21, 22,
22, 23,
23, 24,
24, 25,
25, 26,
26, 27,
27, 28,
28, 29,
29, 30,
30, 31,
31, 32
32 ],
], "BANK_BIT": [
"BANK_BIT": [ 13,
13, 14,
14, 15
15 ],
], "BYTE_BIT": [
"BYTE_BIT": [ 0,
0, 1
1 ],
], "COLUMN_BIT": [
"COLUMN_BIT": [ 2,
2, 3,
3, 4,
4, 5,
5, 6,
6, 7,
7, 8,
8, 9,
9, 10,
10, 11,
11, 12
12 ],
], "RANK_BIT": [
"RANK_BIT": [ 33
33 ],
], "ROW_BIT": [
"ROW_BIT": [ 16
16 ]
]
}
}, },
"mcconfig": { "mcconfig": {
"Arbiter": "Simple", "Arbiter": "Simple",

View File

@@ -1,5 +1,5 @@
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0, 0,
1 1

View File

@@ -63,15 +63,15 @@ protected:
static DRAMSys::Config::RowHammer createTraceHammer(); static DRAMSys::Config::RowHammer createTraceHammer();
DRAMSys::Config::AddressMapping addressMapping{ DRAMSys::Config::AddressMapping addressMapping{
{{{0, 1}}, {{0, 1}},
{{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}}, {{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}},
{{16}}, {{16}},
{{13, 14, 15}}, {{13, 14, 15}},
{{17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}}, {{17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}},
{{33}}, {{33}},
std::nullopt, std::nullopt,
std::nullopt, std::nullopt,
std::nullopt}}; std::nullopt};
DRAMSys::Config::McConfig mcConfig{PagePolicyType::Open, DRAMSys::Config::McConfig mcConfig{PagePolicyType::Open,
SchedulerType::FrFcfs, SchedulerType::FrFcfs,
@@ -439,7 +439,7 @@ TEST_F(ConfigurationTest, AddressMapping)
{ {
std::string_view addressmapping_string = R"( std::string_view addressmapping_string = R"(
{ {
"CONGEN": { "addressmapping": {
"BANKGROUP_BIT": [ "BANKGROUP_BIT": [
17, 17,
18, 18,
@@ -491,7 +491,8 @@ TEST_F(ConfigurationTest, AddressMapping)
)"; )";
json_t addressmapping_reference = json_t::parse(addressmapping_string); json_t addressmapping_reference = json_t::parse(addressmapping_string);
json_t addressmapping_test = addressMapping; json_t addressmapping_test;
addressmapping_test[AddressMapping::KEY] = addressMapping;
EXPECT_EQ(addressmapping_test, addressmapping_reference); EXPECT_EQ(addressmapping_test, addressmapping_reference);
} }

View File

@@ -102,7 +102,7 @@ inline constexpr std::string_view memSpecJsonString = R"(
inline constexpr std::string_view addressMappingJsonString = R"( inline constexpr std::string_view addressMappingJsonString = R"(
{ {
"CONGEN": { "addressmapping": {
"BYTE_BIT": [ "BYTE_BIT": [
0 0
], ],

View File

@@ -44,7 +44,7 @@ class AddressDecoderFixture : public ::testing::Test
{ {
protected: protected:
AddressDecoderFixture() : AddressDecoderFixture() :
addressMappingJson(nlohmann::json::parse(addressMappingJsonString)), addressMappingJson(nlohmann::json::parse(addressMappingJsonString).at("addressmapping")),
memSpecJson(nlohmann::json::parse(memSpecJsonString).at("memspec")), memSpecJson(nlohmann::json::parse(memSpecJsonString).at("memspec")),
addressMappingConfig(addressMappingJson.get<DRAMSys::Config::AddressMapping>()), addressMappingConfig(addressMappingJson.get<DRAMSys::Config::AddressMapping>()),
memSpec(memSpecConfig), memSpec(memSpecConfig),

View File

@@ -1,50 +1,48 @@
{ {
"simulation": { "simulation": {
"addressmapping": { "addressmapping": {
"CONGEN": { "BANKGROUP_BIT": [
"BANKGROUP_BIT": [ 28,
28, 29
29 ],
], "BANK_BIT": [
"BANK_BIT": [ 30,
30, 31
31 ],
], "BYTE_BIT": [
"BYTE_BIT": [ 0,
0, 1,
1, 2
2 ],
], "COLUMN_BIT": [
"COLUMN_BIT": [ 3,
3, 4,
4, 5,
5, 6,
6, 7,
7, 8,
8, 9,
9, 10,
10, 11,
11, 12
12 ],
], "ROW_BIT": [
"ROW_BIT": [ 13,
13, 14,
14, 15,
15, 16,
16, 17,
17, 18,
18, 19,
19, 20,
20, 21,
21, 22,
22, 23,
23, 24,
24, 25,
25, 26,
26, 27
27 ]
]
}
}, },
"mcconfig": { "mcconfig": {
"Arbiter": "Simple", "Arbiter": "Simple",

View File

@@ -1,50 +1,48 @@
{ {
"simulation": { "simulation": {
"addressmapping": { "addressmapping": {
"CONGEN": { "BANKGROUP_BIT": [
"BANKGROUP_BIT": [ 28,
28, 29
29 ],
], "BANK_BIT": [
"BANK_BIT": [ 30,
30, 31
31 ],
], "BYTE_BIT": [
"BYTE_BIT": [ 0,
0, 1,
1, 2
2 ],
], "COLUMN_BIT": [
"COLUMN_BIT": [ 3,
3, 4,
4, 5,
5, 6,
6, 7,
7, 8,
8, 9,
9, 10,
10, 11,
11, 12
12 ],
], "ROW_BIT": [
"ROW_BIT": [ 13,
13, 14,
14, 15,
15, 16,
16, 17,
17, 18,
18, 19,
19, 20,
20, 21,
21, 22,
22, 23,
23, 24,
24, 25,
25, 26,
26, 27
27 ]
]
}
}, },
"mcconfig": { "mcconfig": {
"Arbiter": "Simple", "Arbiter": "Simple",