How do you decide between set_driving_cell, set_drive, and set_input_transition for accurate boundary modeling?
From PDVerse PrimeTime STA Interview Guide · pdVerse Mentor Guide
Ten-second Interview Answer
Default to set_driving_cell when a library cell can represent the external driver, since it uses the cell's real load-dependent model. Fall back to set_drive for drivers not modeled as a library cell, and use set_input_transition when the slew is load-independent or for tool matching.
Complete Technical Explanation
Choose based on what accurately represents the real external driver and on what modeling you actually have. set_driving_cell is the default and the most accurate option: it characterizes the port using an actual library cell's delay model, nonlinear NLDM or current-source CCS, so the port's transition and delay are computed as functions of the load and stay correct as the port capacitance changes. Since most ports are driven by standard cells that a library cell can represent, and since the input slew at the boundary propagates into all the downstream delays, this is the right choice for accuracy whenever a representative cell exists. set_drive is the fallback for a driver that cannot be characterized by a library cell - a custom or analog block, or IP not modeled as a Synopsys library cell - where a drive resistance is simply the best available representation, and you accept lower accuracy for nonlinear behavior. set_input_transition is appropriate when the transition is relatively independent of the design's load: a large external driver into a large external capacitance, where the design's comparatively small input load barely affects the slew, so a fixed transition is both accurate and simpler. It is also the right choice when you need to match another tool that only supports specifying input transition. Note that among these drive commands the most recent one wins - a later command removes the earlier one - so do not layer them and expect the accurate one to survive.
In Pd / Signoff
At block constraint setup you check with report_port -drive which method is actually in effect on each input, after all your SDC files have sourced. Since the most recent drive command wins, a late generic set_input_transition on a wildcard port list can quietly wipe the careful set_driving_cell assertions - and the input slews feed every downstream delay, so it moves real numbers.
Common Trap
Applying set_input_transition on a port whose slew is actually load-dependent - a normal standard-cell driver into a normal load. The fixed slew ignores how the real driver responds to the port capacitance, so the boundary delay and every downstream delay are wrong in a direction nobody notices.
Expect Next
In what specific case is set_input_transition actually the most appropriate choice rather than a compromise?
Topic And Primetime Commands
Constraints / Drive & Load. set_input_transition, set_driving_cell, set_drive, report_portKeep building interview depth
Continue practising STA
Continue learning free
Get a practical low-power chapter
Receive the existing “Low Power and Multivoltage Fundamentals” PDF chapter and its download link by email.
Continue practising
