Commit 831b520
committed
[Clocks][RouterLookahead] Improved lookahead for clock networks
These changed improve how the router lookahead is computed when clock
networks exist in the FPGA fabric.
When clock networks exist, special segments are created which have the
resource type GCLK. It is assumed that these clock network resources are
dedicated, fast resources and should only be used by clocks. The problem
is that the router lookahead was doing dijkstra floods which were using
these segments. This means that the general fabric was assuming that it
could use these resources, and the clock fabric was assuming that it
could hop off to the general fabric.
To fix this, I added a check during the Dijkstra flood (which is used to
find the lookahead costs) which ignores edges that go from/to a GENERAL
routing segment to/from a GCLK segment. This bakes the following
assumption into the lookahead: Signals that start on general routing
will take general routing to the target, and signals that start on clock
routing will take clock routing to the target.
I also found an issue with orthogonal segments with clock networks.
Clock ribs and spines are only CHANX and CHANY and do not have
orthogonal components. This causes an issue when the lookahead is
created and these elements have zero delay, since VPR populates zero
delay entries with the delays on the orthogonal segments. Fixed this by
directly checking if the values are uninitialized and preventing using
orthogonal data from different resources.
I also changed the segment frequency of clock segments to zero by
default, since this is used in VPR to imply that the segments are not
part of the general routing fabric.
I tested this on an architecture with zero delays on the clock network
and verified that the lookahead did not have any delay contributions
from the clock network.1 parent debd87c commit 831b520
4 files changed
Lines changed: 58 additions & 17 deletions
File tree
- libs/librrgraph/src/utils
- vpr/src/route
- router_lookahead
- rr_graph_generation
- vtr_flow/arch/clock_networks/clock_sectors
Lines changed: 35 additions & 16 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
60 | 63 | | |
61 | 64 | | |
62 | 65 | | |
| |||
161 | 164 | | |
162 | 165 | | |
163 | 166 | | |
164 | | - | |
| 167 | + | |
165 | 168 | | |
166 | | - | |
| 169 | + | |
167 | 170 | | |
168 | 171 | | |
169 | 172 | | |
| |||
516 | 519 | | |
517 | 520 | | |
518 | 521 | | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
519 | 525 | | |
520 | | - | |
521 | | - | |
522 | | - | |
523 | | - | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
524 | 530 | | |
525 | 531 | | |
526 | 532 | | |
| |||
682 | 688 | | |
683 | 689 | | |
684 | 690 | | |
| 691 | + | |
| 692 | + | |
685 | 693 | | |
686 | 694 | | |
687 | 695 | | |
| |||
750 | 758 | | |
751 | 759 | | |
752 | 760 | | |
| 761 | + | |
| 762 | + | |
753 | 763 | | |
754 | 764 | | |
755 | 765 | | |
| |||
769 | 779 | | |
770 | 780 | | |
771 | 781 | | |
772 | | - | |
773 | | - | |
774 | | - | |
775 | | - | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
776 | 787 | | |
777 | | - | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
778 | 797 | | |
779 | 798 | | |
780 | 799 | | |
| |||
Lines changed: 19 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
18 | 19 | | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
| 23 | + | |
22 | 24 | | |
23 | 25 | | |
24 | 26 | | |
| |||
1419 | 1421 | | |
1420 | 1422 | | |
1421 | 1423 | | |
| 1424 | + | |
1422 | 1425 | | |
1423 | 1426 | | |
1424 | 1427 | | |
| |||
1427 | 1430 | | |
1428 | 1431 | | |
1429 | 1432 | | |
| 1433 | + | |
| 1434 | + | |
| 1435 | + | |
| 1436 | + | |
| 1437 | + | |
| 1438 | + | |
| 1439 | + | |
| 1440 | + | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
1430 | 1449 | | |
1431 | 1450 | | |
1432 | 1451 | | |
| |||
Lines changed: 3 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
35 | 37 | | |
36 | 38 | | |
37 | 39 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
| 99 | + | |
99 | 100 | | |
100 | 101 | | |
101 | 102 | | |
| |||
0 commit comments