Skip to content

Conversation

@soheilshahrouz
Copy link
Contributor

@soheilshahrouz soheilshahrouz commented Oct 13, 2024

  • Removed static variable from place_macro.cpp
  • Encapsulated palcement macro initalization and lookup into a class: PlaceMacros
  • Added place_macros_ member variable to BlkLocRegistry
  • Use std::vector for Switches and Directs in t_arch
  • Added get_coordinate_of_pin() to BlkLocRegistry. Replaced inline pin location compuations with calls to this function.

@github-actions github-actions bot added VPR VPR FPGA Placement & Routing Tool libarchfpga Library for handling FPGA Architecture descriptions lang-cpp C/C++ code libvtrutil labels Oct 13, 2024
@soheilshahrouz
Copy link
Contributor Author

titan_quick_qor pack-time place time place WL place cpd place_mem n_swaps
titan-master 508.661663 1180.501624 2499010.582 16.92400524 5516.379438 18129958.28
titan-pr 505.8832901 1182.558045 2499010.582 16.92400524 5517.361088 18129958.28
ratio 0.9945378762 1.001741989 1 1 1.000177952 1

Copy link
Contributor

@vaughnbetz vaughnbetz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good -- thanks! This is a huge readability/infrastructure improvement.

@github-actions github-actions bot added the docs Documentation label Oct 22, 2024
@vaughnbetz
Copy link
Contributor

Not sure why these little designs would get a different answer ... suggest running valgrind / the sanitizers to be sure there are no memory faults (S: strong).


xold = std::max(std::min(xold, (int)device_ctx.grid.width() - 2), 1); //-2 for no perim channels
yold = std::max(std::min(yold, (int)device_ctx.grid.height() - 2), 1); //-2 for no perim channels
layer_old = std::max(std::min(layer_old, (int)device_ctx.grid.get_num_layers() - 1), 0);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Calls to std::max() and std::min() are removed from median move generators. There are a few other palces in this file and weighted_median_move_generator.cpp where pin location coordinates are clipped between 1 and H|W-2. QoR changes before and after the commit that removes this.

@soheilshahrouz
Copy link
Contributor Author

I updated golden results for a few circuits in nightly tests. A failure in vtr_reg_nightly_test7 seems to be related to this issue, so I didn't update golden results for this one.

@soheilshahrouz
Copy link
Contributor Author

Resolved merge confilicts caused my merging #2793.

@vaughnbetz
Copy link
Contributor

Looks good. Since you only have a small change due to merging in changes, this is OK to merge without another QoR test. Just please take a look at the strong tests or run one design to confirm same/equivalent QoR. Then feel free to merge whenever you like.

@soheilshahrouz
Copy link
Contributor Author

I compared 89d17a2 and baa73fa (the commit before resolving merge confilicts) by running vpr_reg_mcnm. The results are the same.

@soheilshahrouz soheilshahrouz merged commit eb8c186 into master Nov 6, 2024
37 checks passed
@soheilshahrouz soheilshahrouz deleted the temp_place_macro_static branch November 6, 2024 16:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation lang-cpp C/C++ code libarchfpga Library for handling FPGA Architecture descriptions libvtrutil VPR VPR FPGA Placement & Routing Tool

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants