Skip to content
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

Ipa end user doc #10

Closed
wants to merge 523 commits into from
Closed
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
523 commits
Select commit Hold shift + click to select a range
a59e33c
snakecase for taskresolver
w0lek Apr 22, 2024
87c4fd4
snakecase for server::Task
w0lek Apr 22, 2024
e62a990
snakecase in serverupdate
w0lek Apr 22, 2024
482f04b
snakecase for pathhelper
w0lek Apr 22, 2024
adaa43d
snakecase in gateio
w0lek Apr 22, 2024
111b698
snakecase for convertutils
w0lek Apr 22, 2024
05fdd4b
wrap more server related files with NO_SERVER macro
w0lek Apr 22, 2024
723db0b
snake case for bytearray
w0lek Apr 22, 2024
1afb1c8
minimize diff caused by formatting
w0lek Apr 22, 2024
42abe49
server specific unit tests wrapped with NO_SERVER macro
w0lek Apr 22, 2024
4ada45c
update sockpp submodule to use fork which has fixes of compilation wa…
w0lek Apr 23, 2024
ff1e438
Merge branch 'master' into ipa_it2_clean
w0lek Apr 23, 2024
2e06224
fixed odin bison warning
alirezazd Apr 24, 2024
d3c17e5
Add an exception in update_from_heap to not set _is_isink_reached whe…
kimiatkh Apr 26, 2024
9d9f14a
Remove a depracted warning from packer
kimiatkh Apr 26, 2024
c69b432
Merge branch 'master' into noc_pack_part
soheilshahrouz Apr 28, 2024
790b652
move NoC-biased member vars from PlacementContext to CentroidMoveGene…
soheilshahrouz Apr 28, 2024
82ffe3f
enum class for e_block_pack_status
soheilshahrouz Apr 28, 2024
922246a
add noc_aware_cluster_util files
soheilshahrouz Apr 28, 2024
6e20704
check NoC group compatibility during packing
soheilshahrouz Apr 29, 2024
0026905
remove exclusivity_index from PartitionRegion
soheilshahrouz Apr 29, 2024
36dacfa
typos and references
soheilshahrouz Apr 29, 2024
08bad8f
Merge branch 'specify_moves_explicitly' into noc_pack_part
soheilshahrouz Apr 29, 2024
ecb08bf
fix segfault when logic block type can't be inferred
soheilshahrouz Apr 29, 2024
e61207f
Merge branch 'master' into make_mode_conflict_non_fatal
KA7E Apr 29, 2024
9bfa10f
fix atom_cluster_floorplanning_check returning wrong value
soheilshahrouz Apr 29, 2024
d5aef9a
add log messages for atom_cluster_noc_group_check()
soheilshahrouz Apr 29, 2024
03fce75
Merge pull request #2441 from stef9998/patch-1
vaughnbetz Apr 29, 2024
79d8e90
Merge pull request #2543 from verilog-to-routing/odin_parse_warning_fix
vaughnbetz Apr 29, 2024
1a103be
Merge pull request #2540 from verilog-to-routing/astar_profiler_doc
vaughnbetz Apr 29, 2024
5cc1409
use std::pair<int, int> instead of two int*
soheilshahrouz Apr 29, 2024
d3a5866
add ipa user end documentation
w0lek May 7, 2024
3ff45b2
adjust svg sizes for ipa end user doc
w0lek May 7, 2024
4abbf4d
refactor ServerCOntext to be a structl, in order to use it's member i…
w0lek May 7, 2024
5f647af
iterate over move type names
soheilshahrouz May 7, 2024
55139ed
correct and add comments to telegramparser.h
w0lek May 8, 2024
cbe3ead
minor changes for server mode code commenting
w0lek May 8, 2024
df9ef42
add doc for bytearray.h
w0lek May 8, 2024
81b34e5
add more comments for server mode
w0lek May 8, 2024
1e58803
cover server/task.h with comments
w0lek May 8, 2024
af2f597
add comments to server/telegramoptions.h
w0lek May 8, 2024
84881e6
add comments for server/telegramheader.h
w0lek May 8, 2024
9c08e51
correct .. doxygenfunction:: server::calc_critical_path
w0lek May 8, 2024
5fd9029
add few more comments for server mode code
w0lek May 8, 2024
a977ca4
update doc for draw_crit_path_elements
w0lek May 8, 2024
c0fe33e
fix telegramframe doc
w0lek May 8, 2024
7418fa4
work on server_mode/index.rst
w0lek May 8, 2024
b5f3049
server mode doc corrections
w0lek May 8, 2024
3ecdfa8
adjustments for server/index.rst
w0lek May 8, 2024
761c1be
CI: add test case when graphic is enabled but server mode is disabled
w0lek May 8, 2024
0a0d009
Merge branch 'master' into ipa_it2_clean
w0lek May 8, 2024
d9b036a
initial fix.
navidjafarof May 9, 2024
5efd5c1
make draw_crit_path_elements more generic, now it doesn't depend on S…
w0lek May 9, 2024
0484775
Updated black version to 21.4b0 from 20.8b1 so that make env works
May 8, 2024
2669607
Changed tutorial so that the user is not told to run the parse_vtr_ta…
May 8, 2024
e5d90af
Updated the Build VTR section of the quick start guide to tell users …
May 8, 2024
8fe7da8
Merge pull request #2550 from nedsels/update_quickstart_fix
vaughnbetz May 10, 2024
d71e13f
clean ProcessPb_Type()
soheilshahrouz May 10, 2024
b9bcc09
clean ProcessInterconnect() and ProcessMode()
soheilshahrouz May 11, 2024
f9afc44
add documentation comments for ProcessPb_Type(), ProcessInterconnect(…
soheilshahrouz May 11, 2024
b7c4fe7
clean ProcessSubTilePorts() and ProcessTiles()
soheilshahrouz May 12, 2024
9cc02c3
Merge pull request #2542 from verilog-to-routing/specify_moves_explic…
vaughnbetz May 13, 2024
aa76412
bug fixed, used to check number of layouts instead of number of layers
saaramahmoudi May 14, 2024
023ba47
add comments
soheilshahrouz May 14, 2024
1f2ac0b
avoid creating std::string every time log_move_abort is called
soheilshahrouz May 14, 2024
8338c90
Merge branch 'master' into noc_pack_part and resolved conflicts
soheilshahrouz May 14, 2024
6e28a9a
changed the hardcoded 0 and 1 indicies to constexpr
saaramahmoudi May 14, 2024
6c4f17e
removed compiler issue
saaramahmoudi May 15, 2024
1dff85b
fix duplicate port name error
soheilshahrouz May 15, 2024
306341b
comment and clean <noc> processing functions
soheilshahrouz May 15, 2024
0335af3
Merge branch 'master' of https://github.com/verilog-to-routing/vtr-ve…
amin1377 May 15, 2024
56b321e
Merge branch 'master' of https://github.com/verilog-to-routing/vtr-ve…
amin1377 May 16, 2024
39c54b0
Merge branch 'master' of https://github.com/verilog-to-routing/vtr-ve…
amin1377 May 16, 2024
26380cc
Merge branch 'master' of https://github.com/verilog-to-routing/vtr-ve…
amin1377 May 16, 2024
e6af24c
[CLI] add doc for max_pres_fac
amin1377 May 16, 2024
668ea9a
Final
navidjafarof May 16, 2024
33ea049
[vpr][route] set pres fac before calling update_draw_pres_fac
amin1377 May 16, 2024
46b0700
Merge branch 'master' of https://github.com/verilog-to-routing/vtr-ve…
amin1377 May 16, 2024
c8506c7
[vpr] apply PR comments
amin1377 May 16, 2024
594e96b
Merge pull request #2549 from verilog-to-routing/fix_odin_warnings
vaughnbetz May 16, 2024
f4bd1be
Merge pull request #2552 from verilog-to-routing/echo_seg_fault_fix
vaughnbetz May 16, 2024
c6ce66b
move NoC functions to a separate file
soheilshahrouz May 17, 2024
cf839c4
parse noc property overrides
soheilshahrouz May 17, 2024
7f071ac
set per link and per router latency and bandwidth in noc setup
soheilshahrouz May 17, 2024
547a7ea
compute detailed noc latency cost
soheilshahrouz May 20, 2024
f489781
fix unit test compilation errors
soheilshahrouz May 21, 2024
974eed0
sanity checks for port number in CheckSetup() is added
w0lek May 21, 2024
5b10a33
code format
w0lek May 21, 2024
5886d61
ByteArray::find_sequence returns std::pair<bool, std::size_t> instead…
w0lek May 21, 2024
09a75de
constexpr instead of static for get_truncated_middle_str::middle_plac…
w0lek May 21, 2024
55b2aa8
constexpr instead of static for get_truncated_middle_str::minimal_str…
w0lek May 21, 2024
0803dfb
get_pretty_str_from_float replaced with get_pretty_str_from_double to…
w0lek May 21, 2024
565adea
reimplement TelegramOptions::is_data_type_supported
w0lek May 21, 2024
b620135
replace unneccessary "std::string(name)" with just "name"
w0lek May 21, 2024
563eb54
align << operator in Task::info()
w0lek May 21, 2024
333dd5c
optimization in Task::bake_response() to avoid unnecessary data coping
w0lek May 21, 2024
8d639fc
avoid TelegramFrame copy constructor in TelegramBuffer::take_telegram…
w0lek May 21, 2024
e931555
remove obsolete members from ServerContext
w0lek May 21, 2024
1193fca
fix build after cleanup
w0lek May 21, 2024
32c0730
simplify bool draw_current_element logic
w0lek May 21, 2024
a608ba1
add comment of default value for skip_draw_delays in draw_flyline_tim…
w0lek May 21, 2024
531f485
code formatting
w0lek May 21, 2024
86eeedd
cleanup subtree_config.xml from sockpp
w0lek May 21, 2024
a4c90dd
typo fix
w0lek May 21, 2024
e1b578a
constexpr instead of local static in TelegramParser::try_extract_json…
w0lek May 21, 2024
f35de4e
variable BYTES_NUM_IN_32KB for 32768
w0lek May 21, 2024
6e0a0dc
remove commconstants.cpp, use inline for declaring const std::string …
w0lek May 21, 2024
6d0b10e
fix ;;
w0lek May 21, 2024
f821768
add get_noc_links(...) method
soheilshahrouz May 21, 2024
82aad48
Merge branch 'master' into update-dockerfile-and-doc
vaughnbetz May 22, 2024
1e4f109
ByteArray inherits std::vector<char> instead of std::vector<uint8_t>
w0lek May 22, 2024
0f6c83c
implicit conversion ByteArray to std::string_view, remove template fo…
w0lek May 22, 2024
8f20622
Merge pull request #2313 from Kashiwade-music/update-dockerfile-and-doc
vaughnbetz May 22, 2024
453f417
std::move optimizations for crit paths result and report string
w0lek May 22, 2024
2b74463
Merge branch 'master' into ipa_it2_clean
w0lek May 22, 2024
778f336
[vpr][placement] comment on median move generator
amin1377 May 22, 2024
2fa709e
Merge branch 'master' of https://github.com/verilog-to-routing/vtr-ve…
amin1377 May 22, 2024
4973314
Merge branch 'master' of https://github.com/verilog-to-routing/vtr-ve…
amin1377 May 22, 2024
ed1d70d
[test] update nightly_test_1 golden result failurs
amin1377 May 22, 2024
eac3b55
[test] update golden results for test_1_odin
amin1377 May 22, 2024
22f843c
[test] update golden results for nightly test 2
amin1377 May 22, 2024
d76f6cf
[test] update golden results for nightly_test_2_odin
amin1377 May 22, 2024
9084014
[test] update golden results for nightly_strong
amin1377 May 22, 2024
6eb4b26
Merge branch 'stable_sort' of https://github.com/verilog-to-routing/v…
amin1377 May 22, 2024
3b85d48
remove the check for duplicate port names across subtiles
soheilshahrouz May 22, 2024
d0a7f98
Merge branch 'run_flat_graphic_warning' of https://github.com/verilog…
amin1377 May 22, 2024
d5bc147
Merge branch 'master' of https://github.com/verilog-to-routing/vtr-ve…
amin1377 May 22, 2024
b207bb9
[vpr][router] fix the bug when is_inter_cluster_node is called
amin1377 May 22, 2024
c8a3e22
Merge branch 'master' of https://github.com/verilog-to-routing/vtr-ve…
amin1377 May 22, 2024
9978c70
Merge branch 'pres_fac_max' of https://github.com/verilog-to-routing/…
amin1377 May 22, 2024
81604de
[vpr][router] solve the bug with update_draw_pres_fac
amin1377 May 22, 2024
80dcdeb
add comments and subroutines
soheilshahrouz May 22, 2024
a2e91dc
Merge pull request #2526 from w0lek/ipa_it2_clean
vaughnbetz May 23, 2024
ba8c455
[vpr][placement] fix comment
amin1377 May 23, 2024
a66176c
[test] update nightly_test_2 golden results
amin1377 May 23, 2024
f31fc95
Merge pull request #2525 from verilog-to-routing/stable_sort
vaughnbetz May 23, 2024
8a97e52
Merge pull request #2524 from verilog-to-routing/run_flat_graphic_war…
vaughnbetz May 23, 2024
f83cd43
Re-clustering API bug fixes
Sep 15, 2023
05a4f85
remove unused variable
Sep 18, 2023
27a6c15
fix formatting
Sep 18, 2023
ad01e48
remove unused parameters and fix formatting
Sep 18, 2023
b95d1e3
dummy commit
May 2, 2024
f13a5b0
Added a tutorial for running and creating unit tests.
May 15, 2024
29760b4
Merge pull request #2554 from nedsels/update_quickstart_fix
vaughnbetz May 23, 2024
28e7960
Merge pull request #2546 from verilog-to-routing/noc_pack_part
vaughnbetz May 23, 2024
75746eb
Merge pull request #2397 from verilog-to-routing/reclustering-api-bug…
vaughnbetz May 23, 2024
37c6973
[CI] Made the Regression Tests Error on Warning
AlexandreSinger May 16, 2024
07f68c9
Merge branch 'ipa_it2_clean' into ipa_end_user_doc
w0lek May 24, 2024
034ef1b
fix post-merge build error
w0lek May 24, 2024
edd1e49
correct comment for void draw_crit_path
w0lek May 24, 2024
c738215
update doc for std::pair<bool, std::size_t> ByteArray::find_sequence …
w0lek May 24, 2024
6ad25c6
update doc for ByteArray for method for a implicit conversion to std:…
w0lek May 24, 2024
e3cea63
update doc for CritPathsResultPtr calc_critical_path(const std::strin…
w0lek May 24, 2024
ec0e3ef
update task doc
w0lek May 24, 2024
60c5426
unite telegrambuffer constructors
w0lek May 24, 2024
c0ddd92
rename member 'data' to 'body' in TelegramFrame
w0lek May 24, 2024
475f0a9
rename comm::TelegramHeader::construct_from_data to comm::TelegramHea…
w0lek May 24, 2024
71f11b6
fix TelegramHeader doc
w0lek May 24, 2024
dba632b
fix clang compilation error
soheilshahrouz May 24, 2024
6b89d28
[Warnings] Fixed Unused Variable Warning in Connection Router
AlexandreSinger May 24, 2024
b011a1e
[Warnings] Removed Deprecated STD Iterator From Node Idx Iter
AlexandreSinger May 25, 2024
1a5380a
[Warnings] Removed Deprecated STD Iterator From Edge Idx Iter
AlexandreSinger May 25, 2024
5bfa640
[Warnings] Removed Deprecated STD Iterator From Row Length Iter
AlexandreSinger May 25, 2024
be06c02
Fix the arch file comments for routing segments and switches
kimiatkh May 26, 2024
630be48
Merge pull request #2558 from AlexandreSinger/feature-remove-std-iter…
vaughnbetz May 27, 2024
9dd5ff6
Merge pull request #2555 from AlexandreSinger/feature-ci-error-on-war…
vaughnbetz May 27, 2024
86eca51
minor arg rename in TelegramHeader constructor
w0lek May 27, 2024
3eb220f
Merge branch 'master' into ipa_end_user_doc
w0lek May 27, 2024
6875ba5
minimize diff
w0lek May 27, 2024
73d96fa
Merge branch 'master' into temp_cleanup_
soheilshahrouz May 27, 2024
5d3ca68
[Warnings] Removed Deprecated STD Iterator From VTR Array View
AlexandreSinger May 27, 2024
80420b7
[Warnings] Removed Deprecated STD Iterator From VTR Vector
AlexandreSinger May 27, 2024
63d57e7
[Warnings] Removed Deprecated STD Iterator From Timing Tags
AlexandreSinger May 27, 2024
6cbf119
Merge pull request #2559 from verilog-to-routing/s10_fix_comments
vaughnbetz May 27, 2024
f523a0f
Merge pull request #2561 from AlexandreSinger/feature-remove-std-iter…
vaughnbetz May 27, 2024
e6a18ec
code comment formatting
w0lek May 28, 2024
7c7cc98
correct doxygen doc
w0lek May 28, 2024
0157aa8
fix doxygen formatting
w0lek May 28, 2024
3df3b6b
add comments
soheilshahrouz May 28, 2024
ab91d2a
add comments
soheilshahrouz May 28, 2024
43636d8
remove NoC-wide link bandwidth member variable and getter
soheilshahrouz May 28, 2024
43b2c4a
Merge branch 'master' of https://github.com/verilog-to-routing/vtr-ve…
amin1377 May 28, 2024
1bc8d77
Merge branch 'master' of https://github.com/verilog-to-routing/vtr-ve…
amin1377 May 28, 2024
192f639
remove detailed_link_bandwidth_ and its getter
soheilshahrouz May 28, 2024
a94b9bf
[Docs] Updated Subtree Docs
AlexandreSinger May 28, 2024
27839bd
[test] update nightly_test_1 golden result
amin1377 May 29, 2024
7bea33f
[vpr][router] fix fuction signiture
amin1377 May 29, 2024
817a956
Merge pull request #2567 from AlexandreSinger/feature-update-subtree-…
vaughnbetz May 29, 2024
02c231d
remove the set_noc_link_bandwidth() call after generating the noc
soheilshahrouz May 29, 2024
313eb02
fix a typo
amin1377 May 29, 2024
bb4073c
Merge branch 'master' into fix_3d_delay
amin1377 May 29, 2024
24d69c0
Merge branch 'master' into pres_fac_max
amin1377 May 29, 2024
6778109
add a unit test for link/router specific latency/bandwidth
soheilshahrouz May 29, 2024
9343ee9
Merge pull request #2563 from verilog-to-routing/temp_cleanup_
vaughnbetz May 29, 2024
5fea296
Merge branch 'master' into temp_arch_read_
soheilshahrouz May 29, 2024
7ed749f
Merge pull request #2514 from ThomasJagielski/bug-fix-asymmetric-grid…
vaughnbetz May 29, 2024
486be09
Merge pull request #2490 from verilog-to-routing/fix_3d_delay
amin1377 May 30, 2024
efe7cc0
Merge pull request #2523 from verilog-to-routing/pres_fac_max
vaughnbetz May 30, 2024
4dd51dd
[CI] Upgraded Actions
AlexandreSinger May 29, 2024
f9817fd
Added more information on mux and wire_switch for segments in the arc…
vaughnbetz May 30, 2024
cca8d76
Merge pull request #2568 from AlexandreSinger/feature-upgrade-ci-actions
vaughnbetz May 31, 2024
142b64b
Squashed 'libs/EXTERNAL/libtatum/' changes from d68a6b3ec..28e4e0ae0
AlexandreSinger May 31, 2024
3cffd49
Pulling in changes from Tatum.
AlexandreSinger May 31, 2024
a1ed68f
Merge pull request #2566 from AlexandreSinger/feature-tatum-sync
vaughnbetz May 31, 2024
a8034e2
Merge pull request #2562 from verilog-to-routing/temp_arch_read_
vaughnbetz May 31, 2024
fa5a529
Bump libs/EXTERNAL/libcatch2 from `1078e7e` to `4e8d92b`
dependabot[bot] Jun 1, 2024
ff06e15
Merge
kimiatkh Jun 2, 2024
904d190
Fix the regression test for routing constraints
kimiatkh Jun 2, 2024
a1d213e
Remove the input argument from the function alloc_and_load_is_clock w…
kimiatkh Jun 2, 2024
a4a4a42
Fix the compile error
kimiatkh Jun 2, 2024
1e7c90d
Fix compile error
kimiatkh Jun 3, 2024
b70e728
Fix typos in the added documentation
kimiatkh Jun 3, 2024
1afe1c5
Don't compare expected node count with the rr_nodes count in the pres…
kimiatkh Jun 3, 2024
05a774c
Merge pull request #2571 from verilog-to-routing/mux-and-wire_switch-…
vaughnbetz Jun 3, 2024
1f4ded5
Merge pull request #2433 from verilog-to-routing/make_mode_conflict_n…
vaughnbetz Jun 3, 2024
73e711d
[Infra] Removed CapNProto Subtree Folder
AlexandreSinger Jun 3, 2024
fb203c8
Squashed 'libs/EXTERNAL/capnproto/' content from commit 1a0e12c0a
AlexandreSinger Jun 3, 2024
bcabca6
Upgrading CapNProto to the most recent version.
AlexandreSinger Jun 3, 2024
42ef60f
[Infra] Fixed Bugs Revealed from CapNProto Upgrade
AlexandreSinger Jun 3, 2024
c83c160
Use top level pb name as cluster name when printing a .place file.
KA7E Jun 3, 2024
67d362c
[Capnproto] Fixed CMake Compatibility Error
AlexandreSinger Jun 3, 2024
9de1631
Add an example for clock network definition in rr graphs
kimiatkh Jun 4, 2024
5c65093
Update the golden results for routing constraints regression tests
kimiatkh Jun 4, 2024
2d967b3
Merge pull request #2575 from AlexandreSinger/feature-upgrade-capnp
vaughnbetz Jun 4, 2024
f976e9c
Merge branch 'master' into routing_constraints
vaughnbetz Jun 4, 2024
b04f8c5
Merge pull request #2574 from verilog-to-routing/dependabot/submodule…
vaughnbetz Jun 4, 2024
2842494
Merge branch 'master' into use_pb_name_in_placement_file
KA7E Jun 4, 2024
32983bc
Merge remote-tracking branch 'origin/master' into routing_constraints
AlexandreSinger Jun 4, 2024
70fd6ac
unset atom clb lookup entry if it has been removed from the cluster
KA7E Jun 4, 2024
df9cafe
[CI] Fixed Issue with Artifacts not Being Saved On Failure
AlexandreSinger Jun 4, 2024
95555a8
Merge pull request #2583 from AlexandreSinger/feature-upgrade-ci-actions
vaughnbetz Jun 4, 2024
20c063d
Merge branch 'master' into unset_atom_clb_upon_removal_from_cluster
KA7E Jun 4, 2024
7c79bb1
Merge pull request #2446 from verilog-to-routing/routing_constraints
vaughnbetz Jun 4, 2024
96219a7
Merge branch 'master' into unset_atom_clb_upon_removal_from_cluster
KA7E Jun 5, 2024
048b77c
use https instead of shh for sockpp submodule
soheilshahrouz Jun 5, 2024
434f529
Merge pull request #2588 from verilog-to-routing/fix_submodule_init_i…
vaughnbetz Jun 5, 2024
e819ff7
Merge pull request #2581 from verilog-to-routing/unset_atom_clb_upon_…
KA7E Jun 5, 2024
a76e61b
Merge pull request #2579 from verilog-to-routing/use_pb_name_in_place…
KA7E Jun 5, 2024
c40f578
Merge branch 'master' into ipa_end_user_doc
w0lek Jun 6, 2024
73fc03c
fix typo
w0lek Jun 6, 2024
c634775
add note for explaining data structure std::map<std::size_t, std::set…
w0lek Jun 7, 2024
b454ee9
fix typo
w0lek Jun 7, 2024
69e734e
extend telegramheader doc with adding nore for DATA_CHECKSUM and COMP…
w0lek Jun 7, 2024
af9541e
enhance telegramheader field [ 1 byte ]: COMPRESSOR_ID description
w0lek Jun 7, 2024
c445d93
add doc for TelegramBuffer::check_telegram_header_presence
w0lek Jun 7, 2024
138f8b7
remove std::vector<TelegramFramePtr> TelegramBuffer::take_telegram_fr…
w0lek Jun 7, 2024
56d8abc
enhance Telegram Buffer doc
w0lek Jun 7, 2024
86d31a3
rename Task::success to ::set_success, Task::fail to ::set_fail
w0lek Jun 7, 2024
e3cff27
Task::cmd now is comm::CMD enum, add doc reference to such enum to li…
w0lek Jun 7, 2024
3b2eb6a
add enum comm::CMD to server.rst to make reference work in the doc
w0lek Jun 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions vpr/src/place/centroid_move_generator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ e_create_move CentroidMoveGenerator::propose_move(t_pl_blocks_to_be_moved& block
/* Calculate the centroid location*/
calculate_centroid_loc(b_from, false, centroid, nullptr, noc_attraction_enabled_, noc_attraction_w_);

// Centroid location is not necessarily a valid location, and the downstream location expect a valid
// layer for "to" location. So if the layer is not valid, we set it to the same layer as from loc.
to.layer = (centroid.layer < 0) ? from.layer : centroid.layer;
// Centroid location is not necessarily a valid location, and the downstream location expects a valid
// layer for the centroid location. So if the layer is not valid, we set it to the same layer as from loc.
centroid.layer = (centroid.layer < 0) ? from.layer : centroid.layer;
/* Find a location near the weighted centroid_loc */
if (!find_to_loc_centroid(cluster_from_type, from, centroid, range_limiters, to, b_from)) {
return e_create_move::ABORT;
Expand Down
144 changes: 116 additions & 28 deletions vpr/src/place/median_move_generator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,14 @@
#include "placer_globals.h"
#include "move_utils.h"

static bool get_bb_incrementally(ClusterNetId net_id, t_bb& bb_coord_new, int xold, int yold, int xnew, int ynew);
static bool get_bb_incrementally(ClusterNetId net_id,
t_bb& bb_coord_new,
int xold,
int yold,
int layer_old,
int xnew,
int ynew,
int layer_new);

static void get_bb_from_scratch_excluding_block(ClusterNetId net_id, t_bb& bb_coord_new, ClusterBlockId block_id, bool& skip_net);

Expand All @@ -29,7 +36,7 @@ e_create_move MedianMoveGenerator::propose_move(t_pl_blocks_to_be_moved& blocks_
auto& place_move_ctx = g_placer_ctx.mutable_move();

const int num_layers = device_ctx.grid.get_num_layers();
bool is_multi_layer = (num_layers > 1);


t_pl_loc from = place_ctx.block_locs[b_from].loc;
int from_layer = from.layer;
Expand All @@ -43,12 +50,13 @@ e_create_move MedianMoveGenerator::propose_move(t_pl_blocks_to_be_moved& blocks_
t_bb coords(OPEN, OPEN, OPEN, OPEN, OPEN, OPEN);
t_bb limit_coords;
ClusterBlockId bnum;
int pnum, xnew, xold, ynew, yold;
int pnum, xnew, xold, ynew, yold, layer_new, layer_old;

//clear the vectors that saves X & Y coords
//reused to save allocation time
place_move_ctx.X_coord.clear();
place_move_ctx.Y_coord.clear();
place_move_ctx.layer_coord.clear();
std::vector<int> layer_blk_cnt(num_layers, 0);

//true if the net is a feedback from the block to itself
Expand Down Expand Up @@ -84,8 +92,11 @@ e_create_move MedianMoveGenerator::propose_move(t_pl_blocks_to_be_moved& blocks_
VTR_ASSERT(pnum >= 0);
xold = place_ctx.block_locs[bnum].loc.x + physical_tile_type(bnum)->pin_width_offset[pnum];
yold = place_ctx.block_locs[bnum].loc.y + physical_tile_type(bnum)->pin_height_offset[pnum];
layer_old = place_ctx.block_locs[bnum].loc.layer;

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);

//To calulate the bb incrementally while excluding the moving block
//assume that the moving block is moved to a non-critical coord of the bb
Expand All @@ -101,7 +112,23 @@ e_create_move MedianMoveGenerator::propose_move(t_pl_blocks_to_be_moved& blocks_
ynew = net_bb_coords.ymin;
}

if (!get_bb_incrementally(net_id, coords, xold, yold, xnew, ynew)) {
if (net_bb_coords.layer_min == layer_old) {
layer_new = net_bb_coords.layer_max;
} else {
layer_new = net_bb_coords.layer_min;
}

// If the mvoing block is on the border of the bounding box, we cannot get
// the bounding box incrementatlly. In that case, bounding box should be calculated
// from scratch.
if (!get_bb_incrementally(net_id,
coords,
xold,
yold,
layer_old,
xnew,
ynew,
layer_new)) {
get_bb_from_scratch_excluding_block(net_id, coords, b_from, skip_net);
if (skip_net)
continue;
Expand All @@ -112,34 +139,29 @@ e_create_move MedianMoveGenerator::propose_move(t_pl_blocks_to_be_moved& blocks_
place_move_ctx.X_coord.push_back(coords.xmax);
place_move_ctx.Y_coord.push_back(coords.ymin);
place_move_ctx.Y_coord.push_back(coords.ymax);
if (is_multi_layer) {
for (int layer_num = 0; layer_num < num_layers; layer_num++) {
layer_blk_cnt[layer_num] += place_move_ctx.num_sink_pin_layer[size_t(net_id)][layer_num];
}
// If the pin under consideration is of type sink, it shouldn't be added to layer_blk_cnt since the block
// is moving
if (cluster_ctx.clb_nlist.pin_type(pin_id) == PinType::SINK) {
VTR_ASSERT_SAFE(layer_blk_cnt[from_layer] > 0);
layer_blk_cnt[from_layer]--;
}
}
place_move_ctx.layer_coord.push_back(coords.layer_min);
place_move_ctx.layer_coord.push_back(coords.layer_max);
}

if ((place_move_ctx.X_coord.empty()) || (place_move_ctx.Y_coord.empty())) {
VTR_LOGV_DEBUG(g_vpr_ctx.placement().f_placer_debug, "\tMove aborted - X_coord and y_coord are empty\n");
if ((place_move_ctx.X_coord.empty()) || (place_move_ctx.Y_coord.empty()) || (place_move_ctx.layer_coord.empty())) {
VTR_LOGV_DEBUG(g_vpr_ctx.placement().f_placer_debug, "\tMove aborted - X_coord or y_coord or layer_coord are empty\n");
return e_create_move::ABORT;
}

//calculate the median region
std::stable_sort(place_move_ctx.X_coord.begin(), place_move_ctx.X_coord.end());
std::stable_sort(place_move_ctx.Y_coord.begin(), place_move_ctx.Y_coord.end());
std::stable_sort(place_move_ctx.layer_coord.begin(), place_move_ctx.layer_coord.end());

limit_coords.xmin = place_move_ctx.X_coord[floor((place_move_ctx.X_coord.size() - 1) / 2)];
limit_coords.xmax = place_move_ctx.X_coord[floor((place_move_ctx.X_coord.size() - 1) / 2) + 1];

limit_coords.ymin = place_move_ctx.Y_coord[floor((place_move_ctx.Y_coord.size() - 1) / 2)];
limit_coords.ymax = place_move_ctx.Y_coord[floor((place_move_ctx.Y_coord.size() - 1) / 2) + 1];

limit_coords.layer_min = place_move_ctx.layer_coord[floor((place_move_ctx.layer_coord.size() - 1) / 2)];
limit_coords.layer_max = place_move_ctx.layer_coord[floor((place_move_ctx.layer_coord.size() - 1) / 2) + 1];

//arrange the different range limiters
t_range_limiters range_limiters{rlim,
place_move_ctx.first_rlim,
Expand All @@ -149,17 +171,8 @@ e_create_move MedianMoveGenerator::propose_move(t_pl_blocks_to_be_moved& blocks_
t_pl_loc median_point;
median_point.x = (limit_coords.xmin + limit_coords.xmax) / 2;
median_point.y = (limit_coords.ymin + limit_coords.ymax) / 2;
median_point.layer = (limit_coords.layer_min + limit_coords.layer_max) / 2;

// Before calling find_to_loc_centroid a valid layer should be assigned to "to" location. If there are multiple layers, the layer
// with highest number of sinks will be used. Otherwise, the same layer as "from" loc is assigned.
if (is_multi_layer) {
int layer_num = std::distance(layer_blk_cnt.begin(), std::max_element(layer_blk_cnt.begin(), layer_blk_cnt.end()));
median_point.layer = layer_num;
to.layer = layer_num;
} else {
median_point.layer = from.layer;
to.layer = from.layer;
}
if (!find_to_loc_centroid(cluster_from_type, from, median_point, range_limiters, to, b_from)) {
return e_create_move::ABORT;
}
Expand Down Expand Up @@ -194,6 +207,9 @@ static void get_bb_from_scratch_excluding_block(ClusterNetId net_id, t_bb& bb_co
int ymin = OPEN;
int ymax = OPEN;

int layer_min = OPEN;
int layer_max = OPEN;

int pnum;

auto& cluster_ctx = g_vpr_ctx.clustering();
Expand All @@ -208,11 +224,14 @@ static void get_bb_from_scratch_excluding_block(ClusterNetId net_id, t_bb& bb_co
pnum = net_pin_to_tile_pin_index(net_id, 0);
int src_x = place_ctx.block_locs[bnum].loc.x + physical_tile_type(bnum)->pin_width_offset[pnum];
int src_y = place_ctx.block_locs[bnum].loc.y + physical_tile_type(bnum)->pin_height_offset[pnum];
int src_layer = place_ctx.block_locs[bnum].loc.layer;

xmin = src_x;
ymin = src_y;
xmax = src_x;
ymax = src_y;
layer_min = src_layer;
layer_max = src_layer;
first_block = true;
}

Expand All @@ -225,12 +244,15 @@ static void get_bb_from_scratch_excluding_block(ClusterNetId net_id, t_bb& bb_co
const auto& block_loc = place_ctx.block_locs[bnum].loc;
int x = block_loc.x + physical_tile_type(bnum)->pin_width_offset[pnum];
int y = block_loc.y + physical_tile_type(bnum)->pin_height_offset[pnum];
int layer = block_loc.layer;

if (!first_block) {
xmin = x;
ymin = y;
xmax = x;
ymax = y;
layer_max = layer;
layer_min = layer;
first_block = true;
continue;
}
Expand All @@ -245,6 +267,12 @@ static void get_bb_from_scratch_excluding_block(ClusterNetId net_id, t_bb& bb_co
} else if (y > ymax) {
ymax = y;
}

if (layer < layer_min) {
layer_min = layer;
} else if (layer > layer_max) {
layer_max = layer;
}
}

/* Now I've found the coordinates of the bounding box. There are no *
Expand All @@ -256,8 +284,10 @@ static void get_bb_from_scratch_excluding_block(ClusterNetId net_id, t_bb& bb_co
* is 0). See route_common.cpp for a channel diagram. */
bb_coord_new.xmin = std::max(std::min<int>(xmin, device_ctx.grid.width() - 2), 1); //-2 for no perim channels
bb_coord_new.ymin = std::max(std::min<int>(ymin, device_ctx.grid.height() - 2), 1); //-2 for no perim channels
bb_coord_new.layer_min = std::max(std::min<int>(layer_min, device_ctx.grid.get_num_layers() - 1), 0);
bb_coord_new.xmax = std::max(std::min<int>(xmax, device_ctx.grid.width() - 2), 1); //-2 for no perim channels
bb_coord_new.ymax = std::max(std::min<int>(ymax, device_ctx.grid.height() - 2), 1); //-2 for no perim channels
bb_coord_new.layer_max = std::max(std::min<int>(layer_max, device_ctx.grid.get_num_layers() - 1), 0);
}

/*
Expand All @@ -273,20 +303,36 @@ static void get_bb_from_scratch_excluding_block(ClusterNetId net_id, t_bb& bb_co
* the pins always lie on the outside of the bounding box. *
* The x and y coordinates are the pin's x and y coordinates. */
/* IO blocks are considered to be one cell in for simplicity. */
static bool get_bb_incrementally(ClusterNetId net_id, t_bb& bb_coord_new, int xold, int yold, int xnew, int ynew) {
static bool get_bb_incrementally(ClusterNetId net_id,
t_bb& bb_coord_new,
int xold,
int yold,
int layer_old,
int xnew,
int ynew,
int layer_new) {
//TODO: account for multiple physical pin instances per logical pin

auto& device_ctx = g_vpr_ctx.device();
auto& place_move_ctx = g_placer_ctx.move();

xnew = std::max(std::min<int>(xnew, device_ctx.grid.width() - 2), 1); //-2 for no perim channels
ynew = std::max(std::min<int>(ynew, device_ctx.grid.height() - 2), 1); //-2 for no perim channels
layer_new = std::max(std::min<int>(layer_new, device_ctx.grid.get_num_layers() - 1), 0);

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

t_bb union_bb_edge;
t_bb union_bb;
const bool& cube_bb = g_vpr_ctx.placement().cube_bb;
/* Calculating per-layer bounding box is more time consuming compared to cube bounding box. To speed up
* this move, the bounding box used for this move is of the type cube bounding box even if the per-layer
* bounding box is used by placement SA engine.
* If per-layer bounding box is used, we take a union of boundinx boxes on each layer to make a cube bounding box.
* For example, the xmax of this cube boundix box is determined by the maximim x coordinate across all blocks on all layers.
*/
if (!cube_bb) {
std::tie(union_bb_edge, union_bb) = union_2d_bb_incr(place_move_ctx.layer_bb_num_on_edges[net_id],
place_move_ctx.layer_bb_coords[net_id]);
Expand Down Expand Up @@ -410,5 +456,47 @@ static bool get_bb_incrementally(ClusterNetId net_id, t_bb& bb_coord_new, int xo
bb_coord_new.ymin = curr_bb_coord.ymin;
bb_coord_new.ymax = curr_bb_coord.ymax;
}

if (layer_new < layer_old) {
if (layer_old == curr_bb_coord.layer_max) {
if (curr_bb_edge.layer_max == 1) {
return false;
} else {
bb_coord_new.layer_max = curr_bb_coord.layer_max;
}
} else {
bb_coord_new.layer_max = curr_bb_coord.layer_max;
}

if (layer_new < curr_bb_coord.layer_min) {
bb_coord_new.layer_min = layer_new;
} else if (layer_new == curr_bb_coord.layer_min) {
bb_coord_new.layer_min = layer_new;
} else {
bb_coord_new.layer_min = curr_bb_coord.layer_min;
}

} else if (layer_new > layer_old) {
if (layer_old == curr_bb_coord.layer_min) {
if (curr_bb_edge.layer_min == 1) {
return false;
} else {
bb_coord_new.layer_min = curr_bb_coord.layer_min;
}
} else {
bb_coord_new.layer_min = curr_bb_coord.layer_min;
}

if (layer_new > curr_bb_coord.layer_max) {
bb_coord_new.layer_max = layer_new;
} else if (layer_new == curr_bb_coord.layer_max) {
bb_coord_new.layer_max = layer_new;
} else {
bb_coord_new.layer_max = curr_bb_coord.layer_max;
}
} else {
bb_coord_new.layer_min = curr_bb_coord.layer_min;
bb_coord_new.layer_max = curr_bb_coord.layer_max;
}
return true;
}
2 changes: 1 addition & 1 deletion vpr/src/place/move_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -928,7 +928,7 @@ bool find_to_loc_centroid(t_logical_block_type_ptr blk_type,
ClusterBlockId b_from) {
//Retrieve the compressed block grid for this block type
const auto& compressed_block_grid = g_vpr_ctx.placement().compressed_block_grids[blk_type->index];
const int to_layer_num = to_loc.layer;
const int to_layer_num = centroid.layer;
VTR_ASSERT(to_layer_num >= 0);
const int num_layers = g_vpr_ctx.device().grid.get_num_layers();

Expand Down
2 changes: 2 additions & 0 deletions vpr/src/place/move_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ struct t_bb_cost {
t_edge_cost xmax = {0, 0.0};
t_edge_cost ymin = {0, 0.0};
t_edge_cost ymax = {0, 0.0};
t_edge_cost layer_min = {0, 0.};
t_edge_cost layer_max = {0, 0.};
};

/**
Expand Down
Loading