(3/4) CTS recovery case study: when CTS started fighting the floorplan

Continuing from part two: skew behaviour had improved, but something underneath was still fighting convergence.

Even after we’d stabilised skew behaviour, convergence still felt fragile. One of the engineers on my team kept saying, “We’re still compensating for something.” He was right, and the deeper issue turned out to have nothing to do with CTS optimisation itself.

The engineer’s instinct

Reports weren’t enough to find it. He started tracing clock branches manually across the floorplan instead of relying on them, and that’s when we noticed something unusual. Great convergence tends to start with engineers who look beyond the reports.

What we discovered

A control-heavy hierarchy was repeatedly pulling clock branches across congested macro channels instead of letting them stay physically localised. The clock tree was effectively being forced into physically difficult paths.

CTS kept trying to compensate by:

  • Inserting additional buffers
  • Building longer, detoured branches
  • Rebalancing insertion delays across increasingly difficult routes

On reports, things still looked recoverable. Physically, the backend was becoming harder to stabilise with every iteration.

The real root issue

It wasn’t CTS optimisation. It was floorplan inheritance. Structural decisions upstream meant CTS was trying to mathematically compensate for a floorplan that was already working against physical convergence, and no amount of optimisation was going to fully solve that.

The turning point

We rebuilt portions of the clock partitioning strategy before rerunning CTS. That single change improved insertion balance more than several earlier optimisation passes combined.

Impact after the change

  • Congestion pressure dropped noticeably
  • Routing stabilised
  • Clock buffering finally stopped growing uncontrollably
  • Overall backend convergence improved significantly

But the story isn’t over yet

At that point, everyone thought the backend had finally turned the corner. Then setup pressure increased again close to tapeout, and one late-stage CTS decision reopened instability across the entire block.

Part four, the final instalment to follow ….

This entry was posted in Blogs. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *