BeginnerQuestion 137 of 157Source: Synopsys ICC2 Implementation User Guide: Optimization

How are max-capacitance violations fixed, and why do they matter beyond timing?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

A max-capacitance violation means a driver sees more total load than its library limit. It matters beyond timing because the library was only characterized up to that load, and heavy load means higher current through the driver and its output wire, which is an electromigration and power concern. The fixes are to upsize the driver or split the load across buffers.

Technical Reference DiagramHow are max-capacitance violations fixed, and why do they matter beyond timing?
Schematic of one driver with many loads exceeding its max capacitance, then the same net split across buffers so each driver sees a load inside its limit.

Technical Explanation

  • The load on a driver is the sum of input pin capacitances of its fanout plus the wire capacitance. The library sets a max capacitance per output pin, and design constraints can tighten it.
  • Library delay and transition tables stop at the characterized load. Beyond it, timing is extrapolated. A path can look fine and still be using numbers the library never measured.
  • More load means more charge moved every switching cycle. That raises dynamic power and the current through the driver output and the first part of the wire. On a busy net this contributes to electromigration risk, which is why max capacitance is a reliability limit as well as a timing one.
  • Upsizing the driver raises its max capacitance limit. It is the right fix when the load is modest but the driver is small.
  • Splitting the fanout is the right fix when the load is large. split_fanout (ICC2) inserts buffers and divides the loads between them, with -max_fanout controlling how many loads each gets. Each new buffer drives a smaller share.
  • PrimeTime can fix these with fix_eco_drc -type max_capacitance (PT), which sizes and buffers without considering timing by default.
  • Check both tools with the right command names: report_constraint (PT) is singular and report_constraints (ICC2) is plural.

What To Check

  • Actual versus limit capacitance on each violating pin, per scenario.
  • Whether the load is mostly pins (high fanout) or mostly wire (long net).
  • The fanout count on each violating net.
  • Timing through the net after the split, since the new buffer adds a stage.

Command Checks & Actions

PrimeTime (pt_shell)report_constraint -max_capacitance

Lists max capacitance violations in PrimeTime.

ICC2 (icc2_shell)report_constraints -max_capacitance

Lists max capacitance violations in ICC2; note the plural.

ICC2 (icc2_shell)split_fanout -net n_rst_b -lib_cell BUFX8 -max_fanout 24

Splits a high fanout net across buffers so each drives at most 24 loads.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Zero max capacitance violations in every scenario.
  • Suspicious (illustrative): A handful over the limit by a few percent on nets that do not toggle in mission mode, such as a static configuration net. Get it reviewed and waived explicitly.
  • Hard stop: Violations on high-activity data or clock nets. Fix them; they carry EM and timing risk together.

Common Mistake

The Trap: Waiving max capacitance violations because the path has positive slack. The slack came from extrapolated library data, and the net was a high-toggle bus driver. Power and EM analysis later flagged the same driver, and the fix had to be repeated in a late ECO with less space available.

What The Interviewer Is Testing

  • Can you explain why max capacitance is more than a timing rule?
  • Deciding between upsizing and splitting from the load makeup.
  • Using the correct report name in each tool.

Follow-up Question & Model Response

"How do you decide between upsizing the driver and splitting the fanout?"

Candidate Model Response: I look at where the capacitance comes from. If most of it is wire on a net with few loads, the driver is too small for the distance, so I upsize or add a buffer along the route. If most of it is pin capacitance from many loads, even the largest driver may not have enough limit, and splitting the fanout is the right move. I also check timing, because splitting adds a buffer stage to every path through the net.

Practical Example

Tapeout Scenario: A reset net drives 180 flops with a total load of 0.42 pF against a 0.25 pF limit (illustrative). The largest buffer in the library allows 0.30 pF, so upsizing alone cannot fix it. split_fanout (ICC2) with -max_fanout 24 inserts 8 buffers, each driving 22 or 23 flops at about 0.06 pF. The original driver now sees 8 buffer inputs plus wire, about 0.05 pF. The reset recovery paths gain one buffer stage of 38 ps, which still leaves them +210 ps of margin.

PnR Flow Mentor Guide

Read the complete 8-chapter PnR Flow Mentor Guide free on the web — library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

PnR Flow Physical Design Mentor Guide — eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out. →