[core] fixed a bug on bitstream generator on supporting group_config_block
This commit is contained in:
parent
68f07d6fc9
commit
a1f8b3c441
|
@ -1343,7 +1343,12 @@ int build_memory_group_module(
|
|||
unique_child_instance_names.reserve(child_instance_names.size());
|
||||
std::map<std::string, size_t> unique_child_instance_name_count;
|
||||
for (std::string curr_inst_name : child_instance_names) {
|
||||
unique_child_instance_name_count[curr_inst_name]++;
|
||||
auto result = unique_child_instance_name_count.find(curr_inst_name);
|
||||
if (result == unique_child_instance_name_count.end()) {
|
||||
unique_child_instance_name_count[curr_inst_name] = 1;
|
||||
} else {
|
||||
unique_child_instance_name_count[curr_inst_name]++;
|
||||
}
|
||||
}
|
||||
std::map<std::string, size_t> unique_child_instance_name_scoreboard;
|
||||
for (std::string curr_inst_name : child_instance_names) {
|
||||
|
@ -1354,9 +1359,12 @@ int build_memory_group_module(
|
|||
}
|
||||
auto result = unique_child_instance_name_scoreboard.find(curr_inst_name);
|
||||
if (result == unique_child_instance_name_scoreboard.end()) {
|
||||
unique_child_instance_names.push_back(
|
||||
generate_instance_name(curr_inst_name, result->second));
|
||||
unique_child_instance_name_scoreboard[curr_inst_name] = 0;
|
||||
unique_child_instance_names.push_back(curr_inst_name);
|
||||
} else {
|
||||
unique_child_instance_name_scoreboard[curr_inst_name]++;
|
||||
unique_child_instance_names.push_back(generate_instance_name(
|
||||
curr_inst_name, unique_child_instance_name_scoreboard[curr_inst_name]));
|
||||
}
|
||||
}
|
||||
VTR_ASSERT(unique_child_instance_names.size() == child_instance_names.size());
|
||||
|
|
|
@ -143,10 +143,11 @@ static void build_primitive_bitstream(
|
|||
auto result = grouped_mem_inst_scoreboard.find(mem_block_name);
|
||||
if (result == grouped_mem_inst_scoreboard.end()) {
|
||||
/* Update scoreboard */
|
||||
grouped_mem_inst_scoreboard[mem_block_name] = 1;
|
||||
grouped_mem_inst_scoreboard[mem_block_name] = 0;
|
||||
} else {
|
||||
mem_block_name = generate_instance_name(mem_block_name, result->second);
|
||||
grouped_mem_inst_scoreboard[mem_block_name]++;
|
||||
mem_block_name = generate_instance_name(
|
||||
mem_block_name, grouped_mem_inst_scoreboard[mem_block_name]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -298,19 +299,20 @@ static void build_physical_block_pin_interc_bitstream(
|
|||
.get_width());
|
||||
|
||||
/* If there is a feedthrough module, we should consider the scoreboard */
|
||||
std::string feedthru_mem_block_name = generate_pb_memory_instance_name(
|
||||
GRID_MEM_INSTANCE_PREFIX, des_pb_graph_pin, std::string(""), true);
|
||||
std::string feedthru_mem_block_name = generate_mux_subckt_name(
|
||||
circuit_lib, mux_model, datapath_mux_size,
|
||||
std::string(MEMORY_FEEDTHROUGH_MODULE_POSTFIX));
|
||||
ModuleId feedthru_mem_module =
|
||||
module_manager.find_module(feedthru_mem_block_name);
|
||||
if (module_manager.valid_module_id(feedthru_mem_module)) {
|
||||
auto result = grouped_mem_inst_scoreboard.find(mem_block_name);
|
||||
if (result == grouped_mem_inst_scoreboard.end()) {
|
||||
/* Update scoreboard */
|
||||
grouped_mem_inst_scoreboard[mem_block_name] = 1;
|
||||
grouped_mem_inst_scoreboard[mem_block_name] = 0;
|
||||
} else {
|
||||
mem_block_name =
|
||||
generate_instance_name(mem_block_name, result->second);
|
||||
grouped_mem_inst_scoreboard[mem_block_name]++;
|
||||
mem_block_name = generate_instance_name(
|
||||
mem_block_name, grouped_mem_inst_scoreboard[mem_block_name]);
|
||||
}
|
||||
}
|
||||
ConfigBlockId mux_mem_block = bitstream_manager.add_block(mem_block_name);
|
||||
|
@ -659,10 +661,11 @@ static void build_lut_bitstream(
|
|||
auto result = grouped_mem_inst_scoreboard.find(mem_block_name);
|
||||
if (result == grouped_mem_inst_scoreboard.end()) {
|
||||
/* Update scoreboard */
|
||||
grouped_mem_inst_scoreboard[mem_block_name] = 1;
|
||||
grouped_mem_inst_scoreboard[mem_block_name] = 0;
|
||||
} else {
|
||||
mem_block_name = generate_instance_name(mem_block_name, result->second);
|
||||
grouped_mem_inst_scoreboard[mem_block_name]++;
|
||||
mem_block_name = generate_instance_name(
|
||||
mem_block_name, grouped_mem_inst_scoreboard[mem_block_name]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue