Every slack number comes from two propagations through the timing graph: arrival times forward from the startpoints and required times backward from the endpoints. This topic works both by hand, shows why the traversal scales to billions of paths, and ends with a complete timing engine in about forty lines of Python that you can run and change.
Lesson | After it you can... |
|---|---|
Compute both times at every node and the slack there. | |
Explain why the cost is linear in design size. | |
Find the critical path of a small circuit by hand. | |
Read and extend a working engine. |
The first model of the graph is in The Timing Graph; here it becomes an algorithm.
Arrival times depend on what comes before a node and required times on what comes after it. Slack needs both at the same node, so the arrivals are computed forward and the required times backward.