[core] fixed a bug where pb pin fixup does not support perimeter cb
This commit is contained in:
parent
ad38b52a23
commit
f7e30b9974
|
@ -36,7 +36,9 @@ static void update_cluster_pin_with_post_routing_results(
|
||||||
const VprRoutingAnnotation& vpr_routing_annotation,
|
const VprRoutingAnnotation& vpr_routing_annotation,
|
||||||
VprClusteringAnnotation& vpr_clustering_annotation, const size_t& layer,
|
VprClusteringAnnotation& vpr_clustering_annotation, const size_t& layer,
|
||||||
const vtr::Point<size_t>& grid_coord, const ClusterBlockId& blk_id,
|
const vtr::Point<size_t>& grid_coord, const ClusterBlockId& blk_id,
|
||||||
const e_side& border_side, const size_t& z, const bool& verbose) {
|
const e_side& border_side, const size_t& z,
|
||||||
|
const bool& perimeter_cb,
|
||||||
|
const bool& verbose) {
|
||||||
/* Handle each pin */
|
/* Handle each pin */
|
||||||
auto logical_block = clustering_ctx.clb_nlist.block_type(blk_id);
|
auto logical_block = clustering_ctx.clb_nlist.block_type(blk_id);
|
||||||
auto physical_tile = device_ctx.grid.get_physical_type(
|
auto physical_tile = device_ctx.grid.get_physical_type(
|
||||||
|
@ -76,6 +78,13 @@ static void update_cluster_pin_with_post_routing_results(
|
||||||
if (NUM_SIDES == border_side) {
|
if (NUM_SIDES == border_side) {
|
||||||
VTR_ASSERT(1 == pin_sides.size());
|
VTR_ASSERT(1 == pin_sides.size());
|
||||||
pin_side = pin_sides[0];
|
pin_side = pin_sides[0];
|
||||||
|
} else if (perimeter_cb) {
|
||||||
|
/* When perimeter connection blcoks are allowed, I/O pins may occur on any side but the border side */
|
||||||
|
VTR_ASSERT(pin_sides.end() != std::find(pin_sides.begin(),
|
||||||
|
pin_sides.end(),
|
||||||
|
border_side));
|
||||||
|
VTR_ASSERT(1 == pin_sides.size());
|
||||||
|
pin_side = pin_sides[0];
|
||||||
} else {
|
} else {
|
||||||
SideManager side_manager(border_side);
|
SideManager side_manager(border_side);
|
||||||
VTR_ASSERT(pin_sides.end() != std::find(pin_sides.begin(),
|
VTR_ASSERT(pin_sides.end() != std::find(pin_sides.begin(),
|
||||||
|
@ -188,7 +197,9 @@ void update_pb_pin_with_post_routing_results(
|
||||||
const DeviceContext& device_ctx, const ClusteringContext& clustering_ctx,
|
const DeviceContext& device_ctx, const ClusteringContext& clustering_ctx,
|
||||||
const PlacementContext& placement_ctx,
|
const PlacementContext& placement_ctx,
|
||||||
const VprRoutingAnnotation& vpr_routing_annotation,
|
const VprRoutingAnnotation& vpr_routing_annotation,
|
||||||
VprClusteringAnnotation& vpr_clustering_annotation, const bool& verbose) {
|
VprClusteringAnnotation& vpr_clustering_annotation,
|
||||||
|
const bool& perimeter_cb,
|
||||||
|
const bool& verbose) {
|
||||||
/* Ensure a clean start: remove all the remapping results from VTR's
|
/* Ensure a clean start: remove all the remapping results from VTR's
|
||||||
* post-routing clustering result sync-up */
|
* post-routing clustering result sync-up */
|
||||||
vpr_clustering_annotation.clear_net_remapping();
|
vpr_clustering_annotation.clear_net_remapping();
|
||||||
|
@ -219,7 +230,7 @@ void update_pb_pin_with_post_routing_results(
|
||||||
device_ctx, clustering_ctx, vpr_routing_annotation,
|
device_ctx, clustering_ctx, vpr_routing_annotation,
|
||||||
vpr_clustering_annotation, layer, grid_coord, cluster_blk_id,
|
vpr_clustering_annotation, layer, grid_coord, cluster_blk_id,
|
||||||
NUM_SIDES, placement_ctx.block_locs[cluster_blk_id].loc.sub_tile,
|
NUM_SIDES, placement_ctx.block_locs[cluster_blk_id].loc.sub_tile,
|
||||||
verbose);
|
perimeter_cb, verbose);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -250,7 +261,8 @@ void update_pb_pin_with_post_routing_results(
|
||||||
update_cluster_pin_with_post_routing_results(
|
update_cluster_pin_with_post_routing_results(
|
||||||
device_ctx, clustering_ctx, vpr_routing_annotation,
|
device_ctx, clustering_ctx, vpr_routing_annotation,
|
||||||
vpr_clustering_annotation, layer, io_coord, cluster_blk_id, io_side,
|
vpr_clustering_annotation, layer, io_coord, cluster_blk_id, io_side,
|
||||||
placement_ctx.block_locs[cluster_blk_id].loc.sub_tile, verbose);
|
placement_ctx.block_locs[cluster_blk_id].loc.sub_tile,
|
||||||
|
perimeter_cb, verbose);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,9 @@ void update_pb_pin_with_post_routing_results(
|
||||||
const DeviceContext& device_ctx, const ClusteringContext& clustering_ctx,
|
const DeviceContext& device_ctx, const ClusteringContext& clustering_ctx,
|
||||||
const PlacementContext& placement_ctx,
|
const PlacementContext& placement_ctx,
|
||||||
const VprRoutingAnnotation& vpr_routing_annotation,
|
const VprRoutingAnnotation& vpr_routing_annotation,
|
||||||
VprClusteringAnnotation& vpr_clustering_annotation, const bool& verbose);
|
VprClusteringAnnotation& vpr_clustering_annotation,
|
||||||
|
const bool& perimeter_cb,
|
||||||
|
const bool& verbose);
|
||||||
|
|
||||||
} /* end namespace openfpga */
|
} /* end namespace openfpga */
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ int pb_pin_fixup_template(T& openfpga_context, const Command& cmd,
|
||||||
g_vpr_ctx.device(), g_vpr_ctx.clustering(), g_vpr_ctx.placement(),
|
g_vpr_ctx.device(), g_vpr_ctx.clustering(), g_vpr_ctx.placement(),
|
||||||
openfpga_context.vpr_routing_annotation(),
|
openfpga_context.vpr_routing_annotation(),
|
||||||
openfpga_context.mutable_vpr_clustering_annotation(),
|
openfpga_context.mutable_vpr_clustering_annotation(),
|
||||||
|
g_vpr_ctx.device().arch->perimeter_cb,
|
||||||
cmd_context.option_enable(cmd, opt_verbose));
|
cmd_context.option_enable(cmd, opt_verbose));
|
||||||
|
|
||||||
/* TODO: should identify the error code from internal function execution */
|
/* TODO: should identify the error code from internal function execution */
|
||||||
|
|
Loading…
Reference in New Issue