[core] fixed a bug where heterogeneous fabric may fail
This commit is contained in:
parent
0e9cf6e909
commit
18acb39fad
|
@ -1384,26 +1384,28 @@ int build_memory_group_module(
|
||||||
mem_module, child_module, child_instance,
|
mem_module, child_module, child_instance,
|
||||||
ModuleManager::e_config_child_type::UNIFIED);
|
ModuleManager::e_config_child_type::UNIFIED);
|
||||||
/* Wire outputs of child module to outputs of parent module */
|
/* Wire outputs of child module to outputs of parent module */
|
||||||
add_module_output_nets_to_memory_group_module(
|
|
||||||
module_manager, mem_module, out_port_name, child_module,
|
|
||||||
mem_out_pin_start_index, child_instance);
|
|
||||||
add_module_output_nets_to_memory_group_module(
|
|
||||||
module_manager, mem_module, outb_port_name, child_module,
|
|
||||||
mem_outb_pin_start_index, child_instance);
|
|
||||||
/* Update pin counter */
|
|
||||||
ModulePortId child_out_port_id =
|
ModulePortId child_out_port_id =
|
||||||
module_manager.find_module_port(child_module, out_port_name);
|
module_manager.find_module_port(child_module, out_port_name);
|
||||||
mem_out_pin_start_index +=
|
if (module_manager.valid_module_port_id(child_module, child_out_port_id)) {
|
||||||
module_manager.module_port(child_module, child_out_port_id).get_width();
|
add_module_output_nets_to_memory_group_module(
|
||||||
|
module_manager, mem_module, out_port_name, child_module,
|
||||||
|
mem_out_pin_start_index, child_instance);
|
||||||
|
/* Update pin counter */
|
||||||
|
mem_out_pin_start_index +=
|
||||||
|
module_manager.module_port(child_module, child_out_port_id).get_width();
|
||||||
|
}
|
||||||
ModulePortId child_outb_port_id =
|
ModulePortId child_outb_port_id =
|
||||||
module_manager.find_module_port(child_module, outb_port_name);
|
module_manager.find_module_port(child_module, outb_port_name);
|
||||||
mem_outb_pin_start_index +=
|
if (module_manager.valid_module_port_id(child_module, child_outb_port_id)) {
|
||||||
module_manager.module_port(child_module, child_outb_port_id).get_width();
|
add_module_output_nets_to_memory_group_module(
|
||||||
|
module_manager, mem_module, outb_port_name, child_module,
|
||||||
|
mem_outb_pin_start_index, child_instance);
|
||||||
|
/* Update pin counter */
|
||||||
|
mem_outb_pin_start_index +=
|
||||||
|
module_manager.module_port(child_module, child_outb_port_id)
|
||||||
|
.get_width();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* Check pin counter */
|
|
||||||
VTR_ASSERT(mem_out_pin_start_index == num_mems &&
|
|
||||||
mem_outb_pin_start_index == num_mems);
|
|
||||||
|
|
||||||
/* Add global ports to the pb_module:
|
/* Add global ports to the pb_module:
|
||||||
* This is a much easier job after adding sub modules (instances),
|
* This is a much easier job after adding sub modules (instances),
|
||||||
|
|
|
@ -102,9 +102,11 @@ static void build_switch_block_mux_bitstream(
|
||||||
module_manager.module_port(mux_mem_module, mux_mem_out_port_id)
|
module_manager.module_port(mux_mem_module, mux_mem_out_port_id)
|
||||||
.get_width());
|
.get_width());
|
||||||
|
|
||||||
VTR_LOGV(verbose, "Added %lu bits to '%s' under '%s'\n", mux_bitstream.size(),
|
VTR_LOGV(
|
||||||
bitstream_manager.block_name(mux_mem_block).c_str(),
|
verbose, "Added %lu bits to '%s' under '%s'\n", mux_bitstream.size(),
|
||||||
bitstream_manager.block_name(bitstream_manager.block_parent(mux_mem_block)).c_str());
|
bitstream_manager.block_name(mux_mem_block).c_str(),
|
||||||
|
bitstream_manager.block_name(bitstream_manager.block_parent(mux_mem_block))
|
||||||
|
.c_str());
|
||||||
|
|
||||||
/* Add the bistream to the bitstream manager */
|
/* Add the bistream to the bitstream manager */
|
||||||
bitstream_manager.add_block_bits(mux_mem_block, mux_bitstream);
|
bitstream_manager.add_block_bits(mux_mem_block, mux_bitstream);
|
||||||
|
@ -316,9 +318,11 @@ static void build_connection_block_mux_bitstream(
|
||||||
module_manager.module_port(mux_mem_module, mux_mem_out_port_id)
|
module_manager.module_port(mux_mem_module, mux_mem_out_port_id)
|
||||||
.get_width());
|
.get_width());
|
||||||
|
|
||||||
VTR_LOGV(verbose, "Added %lu bits to '%s' under '%s'\n", mux_bitstream.size(),
|
VTR_LOGV(
|
||||||
bitstream_manager.block_name(mux_mem_block).c_str(),
|
verbose, "Added %lu bits to '%s' under '%s'\n", mux_bitstream.size(),
|
||||||
bitstream_manager.block_name(bitstream_manager.block_parent(mux_mem_block)).c_str());
|
bitstream_manager.block_name(mux_mem_block).c_str(),
|
||||||
|
bitstream_manager.block_name(bitstream_manager.block_parent(mux_mem_block))
|
||||||
|
.c_str());
|
||||||
|
|
||||||
/* Add the bistream to the bitstream manager */
|
/* Add the bistream to the bitstream manager */
|
||||||
bitstream_manager.add_block_bits(mux_mem_block, mux_bitstream);
|
bitstream_manager.add_block_bits(mux_mem_block, mux_bitstream);
|
||||||
|
|
Loading…
Reference in New Issue