OpenSTA icon indicating copy to clipboard operation
OpenSTA copied to clipboard

Parallel `findClkSkew`

Open kbieganski opened this issue 1 year ago • 0 comments

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

kbieganski avatar Jan 31 '24 13:01 kbieganski