Skip to content

Commit 8971c26

Browse files
committed
merge master
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
2 parents 9bc09ac + 36aa7c9 commit 8971c26

File tree

19 files changed

+1157
-993
lines changed

19 files changed

+1157
-993
lines changed

.github/workflows/black.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,5 @@ jobs:
88
steps:
99
- name: Checkout Code
1010
uses: actions/checkout@v3
11-
- name: Run black (public repo)
12-
if: "!github.event.repository.private"
11+
- name: Run black
1312
uses: psf/black@stable
14-
- name: Run black (private repo)
15-
uses: psf/black@stable
16-
if: github.event.repository.private
17-
with:
18-
version: "24.8.0"

src/cts/src/TritonCTS.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1202,7 +1202,7 @@ bool TritonCTS::separateMacroRegSinks(
12021202
if (iterm->isInputSignal() && inst->isPlaced()) {
12031203
odb::dbMTerm* mterm = iterm->getMTerm();
12041204
// Treat clock gaters like macro sink
1205-
if (hasInsertionDelay(inst, mterm) || !isSink(iterm)) {
1205+
if (hasInsertionDelay(inst, mterm) || !isSink(iterm) || inst->isBlock()) {
12061206
macroSinks.emplace_back(inst, mterm);
12071207
} else {
12081208
registerSinks.emplace_back(inst, mterm);

src/cts/test/array.ok

Lines changed: 230 additions & 176 deletions
Large diffs are not rendered by default.

src/cts/test/array_no_blockages.ok

Lines changed: 94 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -8,76 +8,128 @@
88
BUF_X4
99
[INFO CTS-0049] Characterization buffer is BUF_X4.
1010
[INFO CTS-0007] Net "clk" found for clock "clk".
11-
[INFO CTS-0010] Clock net "clk" has 2475 sinks.
12-
[INFO CTS-0008] TritonCTS found 1 clock nets.
11+
[INFO CTS-0011] Clock net "clk" for macros has 225 sinks.
12+
[INFO CTS-0011] Clock net "clk_regs" for registers has 2250 sinks.
13+
[INFO CTS-0008] TritonCTS found 2 clock nets.
1314
[INFO CTS-0097] Characterization used 1 buffer(s) types.
1415
[INFO CTS-0201] 225 blockages from hard placement blockages and placed macros will be used.
1516
[INFO CTS-0027] Generating H-Tree topology for net clk.
16-
[INFO CTS-0028] Total number of sinks: 2475.
17+
[INFO CTS-0028] Total number of sinks: 225.
1718
[INFO CTS-0029] Sinks will be clustered in groups of up to 20 and with maximum cluster diameter of 100.0 um.
1819
[INFO CTS-0030] Number of static layers: 0.
1920
[INFO CTS-0020] Wire segment unit: 14000 dbu (7 um).
20-
[INFO CTS-0204] A clustering solution was found from clustering size of 30 and clustering diameter of 100.
21+
[INFO CTS-0204] A clustering solution was found from clustering size of 10 and clustering diameter of 100.
2122
[INFO CTS-0205] Better solution may be possible if either -sink_clustering_size, -sink_clustering_max_diameter, or both options are omitted to enable automatic clustering.
22-
[INFO CTS-0019] Total number of sinks after clustering: 279.
23-
[INFO CTS-0024] Normalized sink region: [(1.43857, 3.42643), (661.439, 704.276)].
23+
[INFO CTS-0019] Total number of sinks after clustering: 225.
24+
[INFO CTS-0024] Normalized sink region: [(1.43857, 44.2757), (661.439, 704.276)].
2425
[INFO CTS-0025] Width: 660.0000.
25-
[INFO CTS-0026] Height: 700.8493.
26+
[INFO CTS-0026] Height: 660.0000.
27+
Level 1
28+
Direction: Horizontal
29+
Sinks per sub-region: 113
30+
Sub-region size: 330.0000 X 660.0000
31+
[INFO CTS-0034] Segment length (rounded): 166.
32+
Level 2
33+
Direction: Vertical
34+
Sinks per sub-region: 57
35+
Sub-region size: 330.0000 X 330.0000
36+
[INFO CTS-0034] Segment length (rounded): 164.
37+
Level 3
38+
Direction: Horizontal
39+
Sinks per sub-region: 29
40+
Sub-region size: 165.0000 X 330.0000
41+
[INFO CTS-0034] Segment length (rounded): 82.
42+
Level 4
43+
Direction: Vertical
44+
Sinks per sub-region: 15
45+
Sub-region size: 165.0000 X 165.0000
46+
[INFO CTS-0034] Segment length (rounded): 82.
47+
Level 5
48+
Direction: Horizontal
49+
Sinks per sub-region: 8
50+
Sub-region size: 82.5000 X 165.0000
51+
[INFO CTS-0034] Segment length (rounded): 42.
52+
[INFO CTS-0032] Stop criterion found. Max number of sinks is 15.
53+
[INFO CTS-0035] Number of sinks covered: 225.
54+
[INFO CTS-0201] 225 blockages from hard placement blockages and placed macros will be used.
55+
[INFO CTS-0027] Generating H-Tree topology for net clk_regs.
56+
[INFO CTS-0028] Total number of sinks: 2250.
57+
[INFO CTS-0029] Sinks will be clustered in groups of up to 20 and with maximum cluster diameter of 100.0 um.
58+
[INFO CTS-0030] Number of static layers: 0.
59+
[INFO CTS-0020] Wire segment unit: 14000 dbu (7 um).
60+
[INFO CTS-0204] A clustering solution was found from clustering size of 10 and clustering diameter of 100.
61+
[INFO CTS-0205] Better solution may be possible if either -sink_clustering_size, -sink_clustering_max_diameter, or both options are omitted to enable automatic clustering.
62+
[INFO CTS-0019] Total number of sinks after clustering: 227.
63+
[INFO CTS-0024] Normalized sink region: [(189.626, 2.21643), (661.055, 670.416)].
64+
[INFO CTS-0025] Width: 471.4286.
65+
[INFO CTS-0026] Height: 668.2000.
2666
Level 1
2767
Direction: Vertical
28-
Sinks per sub-region: 140
29-
Sub-region size: 660.0000 X 350.4246
30-
[INFO CTS-0034] Segment length (rounded): 176.
68+
Sinks per sub-region: 114
69+
Sub-region size: 471.4286 X 334.1000
70+
[INFO CTS-0034] Segment length (rounded): 168.
3171
Level 2
3272
Direction: Horizontal
33-
Sinks per sub-region: 70
34-
Sub-region size: 330.0000 X 350.4246
35-
[INFO CTS-0034] Segment length (rounded): 166.
73+
Sinks per sub-region: 57
74+
Sub-region size: 235.7143 X 334.1000
75+
[INFO CTS-0034] Segment length (rounded): 118.
3676
Level 3
3777
Direction: Vertical
38-
Sinks per sub-region: 35
39-
Sub-region size: 330.0000 X 175.2123
40-
[INFO CTS-0034] Segment length (rounded): 88.
78+
Sinks per sub-region: 29
79+
Sub-region size: 235.7143 X 167.0500
80+
[INFO CTS-0034] Segment length (rounded): 84.
4181
Level 4
4282
Direction: Horizontal
43-
Sinks per sub-region: 18
44-
Sub-region size: 165.0000 X 175.2123
45-
[INFO CTS-0034] Segment length (rounded): 82.
83+
Sinks per sub-region: 15
84+
Sub-region size: 117.8572 X 167.0500
85+
[INFO CTS-0034] Segment length (rounded): 58.
4686
Level 5
4787
Direction: Vertical
48-
Sinks per sub-region: 9
49-
Sub-region size: 165.0000 X 87.6062
50-
[INFO CTS-0034] Segment length (rounded): 44.
88+
Sinks per sub-region: 8
89+
Sub-region size: 117.8572 X 83.5250
90+
[INFO CTS-0034] Segment length (rounded): 42.
5191
[INFO CTS-0032] Stop criterion found. Max number of sinks is 15.
52-
[INFO CTS-0035] Number of sinks covered: 279.
53-
[INFO CTS-0018] Created 231 clock buffers.
92+
[INFO CTS-0035] Number of sinks covered: 227.
93+
[INFO CTS-0018] Created 135 clock buffers.
5494
[INFO CTS-0012] Minimum number of buffers in the clock path: 18.
55-
[INFO CTS-0013] Maximum number of buffers in the clock path: 19.
56-
[INFO CTS-0015] Created 231 clock nets.
57-
[INFO CTS-0016] Fanout distribution for the current clock = 2:1, 5:1, 6:1, 7:6, 8:11, 9:7, 10:8, 11:3, 12:2, 14:2, 15:1, 19:1, 20:3, 21:36, 30:45..
95+
[INFO CTS-0013] Maximum number of buffers in the clock path: 18.
96+
[INFO CTS-0015] Created 135 clock nets.
97+
[INFO CTS-0016] Fanout distribution for the current clock = 3:1, 5:3, 6:7, 7:3, 8:18..
98+
[INFO CTS-0017] Max level of the clock tree: 5.
99+
[INFO CTS-0018] Created 366 clock buffers.
100+
[INFO CTS-0012] Minimum number of buffers in the clock path: 17.
101+
[INFO CTS-0013] Maximum number of buffers in the clock path: 17.
102+
[INFO CTS-0015] Created 366 clock nets.
103+
[INFO CTS-0016] Fanout distribution for the current clock = 2:1, 4:3, 5:9, 6:5, 7:4, 8:3, 9:4, 10:230..
58104
[INFO CTS-0017] Max level of the clock tree: 5.
59105
[INFO CTS-0098] Clock net "clk"
60-
[INFO CTS-0099] Sinks 2537
61-
[INFO CTS-0100] Leaf buffers 96
62-
[INFO CTS-0101] Average sink wire length 9258.86 um
63-
[INFO CTS-0102] Path depth 18 - 19
64-
[INFO CTS-0207] Leaf load cells 62
106+
[INFO CTS-0099] Sinks 225
107+
[INFO CTS-0100] Leaf buffers 0
108+
[INFO CTS-0101] Average sink wire length 9172.05 um
109+
[INFO CTS-0102] Path depth 18 - 18
110+
[INFO CTS-0207] Leaf load cells 4
111+
[INFO CTS-0098] Clock net "clk_regs"
112+
[INFO CTS-0099] Sinks 2254
113+
[INFO CTS-0100] Leaf buffers 227
114+
[INFO CTS-0101] Average sink wire length 4115.91 um
115+
[INFO CTS-0102] Path depth 17 - 17
116+
[INFO CTS-0207] Leaf load cells 4
65117
[INFO RSZ-0058] Using max wire length 693um.
66-
[INFO RSZ-0047] Found 31 long wires.
67-
[INFO RSZ-0048] Inserted 90 buffers in 31 nets.
118+
[INFO RSZ-0047] Found 50 long wires.
119+
[INFO RSZ-0048] Inserted 110 buffers in 50 nets.
68120
Placement Analysis
69121
---------------------------------
70-
total displacement 2522.4 u
71-
average displacement 0.9 u
72-
max displacement 117.9 u
73-
original HPWL 132665.1 u
74-
legalized HPWL 133067.8 u
122+
total displacement 4076.9 u
123+
average displacement 1.3 u
124+
max displacement 151.8 u
125+
original HPWL 182660.1 u
126+
legalized HPWL 183422.8 u
75127
delta HPWL 0 %
76128

77129
Clock clk
78-
1.24 source latency inst_1_1/clk ^
79-
-1.07 target latency inst_2_1/clk ^
130+
1.25 source latency inst_1_0/clk ^
131+
-1.15 target latency inst_2_0/clk ^
80132
0.00 CRPR
81133
--------------
82-
0.18 setup skew
134+
0.10 setup skew
83135

src/drt/src/pa/FlexPA.h

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,24 @@ class FlexPA
168168
template <typename T>
169169
int genPinAccess(T* pin, frInstTerm* inst_term = nullptr);
170170

171+
/**
172+
* @brief determines if the current access points are enough to say PA is done
173+
* with this pin.
174+
*
175+
* for the access points to be considered enough there must exist a minimum of
176+
* aps:
177+
* 1. far enough from each other greater than the minimum specified in
178+
* router_cfg.
179+
* 2. far enough from the cell edge.
180+
*
181+
* @param aps the list of candidate access points
182+
* @param inst_term terminal related to the pin
183+
*
184+
* @returns True if the current aps are enough for the pin
185+
*/
186+
bool EnoughAccessPoints(std::vector<std::unique_ptr<frAccessPoint>>& aps,
187+
frInstTerm* inst_term);
188+
171189
/**
172190
* @brief initializes the pin accesses of a given pin only considering a given
173191
* cost for both the lower and upper layer.
@@ -180,7 +198,7 @@ class FlexPA
180198
* @param lower_type lower layer access type
181199
* @param upper_type upper layer access type
182200
*
183-
* @return if the initialization was sucessful
201+
* @return if enough access points were found for the pin.
184202
*/
185203
template <typename T>
186204
bool genPinAccessCostBounded(

0 commit comments

Comments
 (0)