-
Notifications
You must be signed in to change notification settings - Fork 415
Read Initial Placement #2666
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Read Initial Placement #2666
Changes from 4 commits
1ae9f51
d20f162
dad7402
eb32635
4a6043d
1d89851
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1187,12 +1187,12 @@ void initial_placement(const t_placer_opts& placer_opts, | |
clear_all_grid_locs(); | ||
|
||
/* Go through cluster blocks to calculate the tightest placement | ||
* floorplan constraint for each constrained block | ||
*/ | ||
* floorplan constraint for each constrained block | ||
*/ | ||
propagate_place_constraints(); | ||
|
||
/*Mark the blocks that have already been locked to one spot via floorplan constraints | ||
* as fixed, so they do not get moved during initial placement or later during the simulated annealing stage of placement*/ | ||
* as fixed, so they do not get moved during initial placement or later during the simulated annealing stage of placement*/ | ||
amin1377 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
mark_fixed_blocks(); | ||
|
||
// Compute and store compressed floorplanning constraints | ||
|
@@ -1204,17 +1204,22 @@ void initial_placement(const t_placer_opts& placer_opts, | |
read_constraints(constraints_file); | ||
} | ||
|
||
if (noc_opts.noc) { | ||
// NoC routers are placed before other blocks | ||
initial_noc_placement(noc_opts, placer_opts); | ||
propagate_place_constraints(); | ||
} | ||
if(!placer_opts.read_initial_place_file.empty()) { | ||
const auto& grid = g_vpr_ctx.device().grid; | ||
read_place(nullptr, placer_opts.read_initial_place_file.c_str(), false, grid); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What happens if both constraint and initial placement files are specified? I think read_constraints() initializes the location of some blocks and mark them as fixed. The location in the initial placement would override the location in the constraint file. We probably need to handle this case There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it is better to print something to show that the initial placement is read from a file. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You are right. The locations in the initial placement file will override the assigned locations in the constraint file. However, at the end of the initial placement, we call a function to check the legality of the placement, and any issues can be caught there. Regarding printing that the initial placement is read from a file, the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are you referring to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, I meant this function. I thought it would check whether the location of the fixed blocks matched the one specified in the constraint file, but upon reviewing the implementation, I realized that's not the case. To avoid slowing down |
||
} else { | ||
if (noc_opts.noc) { | ||
// NoC routers are placed before other blocks | ||
initial_noc_placement(noc_opts, placer_opts); | ||
propagate_place_constraints(); | ||
} | ||
|
||
//Assign scores to blocks and placement macros according to how difficult they are to place | ||
vtr::vector<ClusterBlockId, t_block_score> block_scores = assign_block_scores(); | ||
//Assign scores to blocks and placement macros according to how difficult they are to place | ||
vtr::vector<ClusterBlockId, t_block_score> block_scores = assign_block_scores(); | ||
|
||
//Place all blocks | ||
place_all_blocks(placer_opts, block_scores, placer_opts.pad_loc_type, constraints_file); | ||
//Place all blocks | ||
place_all_blocks(placer_opts, block_scores, placer_opts.pad_loc_type, constraints_file); | ||
} | ||
|
||
alloc_and_load_movable_blocks(); | ||
|
||
|
Uh oh!
There was an error while loading. Please reload this page.