Remove extra copies in simple place delay model - #3731
Conversation
The simple place delay model uses the lookehead data to for getting the delay between tiles. Previously it would use the router delay profiler which copied a table from the lookahead and then it copied the table from the delay profiler into it's own table. This commit removes all the copying and makes the simple lookahead just use the lookahead's table instead.
|
I plan to change the lookahead opin api to get from_loc and to_loc instead of dx and dy at some future point. This should make it possible to trivially use the (not existing in master yet) separable lookahead for placement without any changes to the place delay model code. This is the underlying reason for these changes. |
|
VTR Benchmarks:
I think placement is slightly slower, which is due to the added virtual function call. I Could template the simple delay model with the lookahead to fix this. |
This avoids the virtual function call and improves placement performance.
|
After templating the place delay model:
VPR executable size increased by 3KBs, or 0.02% (not 2%). I personally think it's fine, but I can also investigate using std::variant and std::visit which essentially does a switch-case instead of using a vtable if the template code is too complicated. |
The simple place delay model uses the lookehead data to for getting the delay between tiles. Previously it would use the router delay profiler which copied a table from the lookahead and then it copied the table from the delay profiler into it's own table. This PR removes all the copying and makes the simple lookahead just use the lookahead's table instead.