OpenSTA
OpenSTA copied to clipboard
Parallel `findClkSkew`
Runs findClkSkew in parallel.
Requires this thread safety fix (PR #219).
findClkSkew basically retrieves the absolute maximum skew per clock.
We can do it in separate threads and then reduce over the partial results from each thread.
Multi-threaded performance
Compared against thread-safe-network (from PR #219), as master often crashes with -threads 8.
Global routing
Ibex
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|---|---|---|---|---|
ibex / 5_1_grt / thread-safe-network / 8 threads |
118.088 ± 0.341 | 117.563 | 118.504 | 3.58 ± 0.02 |
ibex / 5_1_grt / parallel-find-clk-skew / 8 threads |
32.994 ± 0.102 | 32.837 | 33.152 | 1.00 |
BlackParrot
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|---|---|---|---|---|
black_parrot / 5_1_grt / thread-safe-network / 8 threads |
766.336 ± 3.214 | 762.248 | 773.285 | 1.34 ± 0.01 |
black_parrot / 5_1_grt / parallel-find-clk-skew / 8 threads |
573.284 ± 2.252 | 570.765 | 577.828 | 1.00 |
Flow from synthesis to 5_1_grt
Ibex
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|---|---|---|---|---|
ibex / 1_1_synth to 5_1_grt / thread-safe-network / 8 threads |
380.836 ± 0.602 | 380.027 | 381.910 | 1.63 ± 0.01 |
ibex / 1_1_synth to 5_1_grt / parallel-find-clk-skew / 8 threads |
234.039 ± 0.684 | 232.489 | 234.902 | 1.00 |
BlackParrot
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|---|---|---|---|---|
black_parrot / 1_1_synth to 5_1_grt / thread-safe-network / 8 threads |
3533.167 ± 8.196 | 3520.372 | 3543.953 | 1.10 ± 0.01 |
black_parrot / 1_1_synth to 5_1_grt / parallel-find-clk-skew / 8 threads |
3215.166 ± 13.543 | 3200.957 | 3239.229 | 1.00 |
Single-threaded performance
This is a performance regression check.
Global routing
Ibex
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|---|---|---|---|---|
ibex / 5_1_grt / master / 1 thread |
125.214 ± 0.776 | 123.797 | 126.203 | 1.02 ± 0.01 |
ibex / 5_1_grt / thread-safe-network / 1 thread |
122.379 ± 0.670 | 121.476 | 123.630 | 1.00 |
ibex / 5_1_grt / parallel-find-clk-skew / 1 thread |
123.304 ± 0.497 | 122.479 | 124.033 | 1.01 ± 0.01 |
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|---|---|---|---|---|
ibex / 5_1_grt / master / 1 thread |
124.140 ± 3.096 | 118.442 | 127.865 | 1.01 ± 0.03 |
ibex / 5_1_grt / thread-safe-network / 1 thread |
122.610 ± 0.516 | 121.760 | 123.394 | 1.00 |
ibex / 5_1_grt / parallel-find-clk-skew / 1 thread |
122.836 ± 0.563 | 122.244 | 123.900 | 1.00 ± 0.01 |
BlackParrot
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|---|---|---|---|---|
black_parrot / 5_1_grt / master / 1 thread |
834.350 ± 7.627 | 817.349 | 842.018 | 1.02 ± 0.01 |
black_parrot / 5_1_grt / thread-safe-network / 1 thread |
828.409 ± 6.578 | 816.466 | 837.040 | 1.01 ± 0.01 |
black_parrot / 5_1_grt / parallel-find-clk-skew / 1 thread |
818.827 ± 4.998 | 811.516 | 825.794 | 1.00 |
Flow from synthesis to 5_1_grt (Ibex only)
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|---|---|---|---|---|
ibex / 1_1_synth to 5_1_grt / master / 1 thread |
406.818 ± 1.115 | 405.531 | 408.481 | 1.00 |
ibex / 1_1_synth to 5_1_grt / parallel-find-clk-skew / 1 thread |
408.049 ± 1.234 | 405.287 | 409.360 | 1.00 ± 0.00 |