Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • RTL Foundations36
  • Combinational Design25
  • Sequential Design27
  • FSM & Control27
  • Timing & Clocking39
  • Reset & CDC34
  • Memory & Buses57
  • Advanced RTL28
  • Senior & Interview76
    • Low-Power RTL Hub
    • DFT and Scan Hub
    • Physical Awareness Hub
    • Waveform Debug Hub
    • STA and ECO Hub
    • RTL-to-Implementation Closure
    • DFT-Ready RTL
    • Capstone: Resilient Streaming Peripheral
    • Principal Design Review
    • Senior RTL Interview Questions & Model Answers
      • Interview: Combinational and Arithmetic
      • Interview: Sequential and Pipelines
      • Interview: FSM and Control
      • Interview: Timing and STA
      • Interview: CDC and Reset
      • Interview: Memories and Buses
      • Interview: Low-Power Design
        • Dynamic power first
        • Clock gating done safely
        • Crossing a powered-off domain
        • The RTL and UPF split
      • Interview: Debug and ECO
      • Interview: Coding and Whiteboard
  • Glossary and Notation
Loading lesson

‹Interview: Low-Power Design
  1. Topics
  2. RTL Design
  3. Senior & Interview
  4. Senior RTL Interview Questions & Model Answers
  5. Interview: Low-Power Design
  6. The RTL and UPF split

Part 9 · Senior · Senior

The RTL and UPF split

What stays in RTL and what belongs in UPF power intent, with a split table.

On this page

    Why this matters

    Hard-coded isolation muxes in RTL pass simulation and then disagree with the cells the flow inserts, in clamp value or placement. Interviewers ask who owns what to see if you keep the contract clean.

    After this lesson you can: say what RTL provides and what UPF defines, and who owns sequencing, isolation and retention.

    The question

    The interviewer asks where RTL stops and UPF begins, or who owns isolation and retention. Distinguish structural power intent in UPF from executable sequencing in the always-on RTL controller.

    UPF externalizes power intent: domains, switches, isolation, retention, and state tables. RTL stays clean while UPF captures the implementation policy.

    Model answer

    RTL owns behaviour and exposes control: enables, idle signals, quiesce handshakes, and save and restore triggers. UPF owns the power structure built from those signals.

    Who writes what at a power-domain boundary: the always-on controller and the core logic are RTL; the domain, power switch, retention and isolation cell are UPF, driven by RTL control signals.

    Read solid lines as RTL you write and dashed accent lines as structure UPF creates. Every dashed box is driven by a solid wire.

    • The controller and its four control wires are ordinary RTL, simulated like any other logic.

    • The switch, retention and isolation cell do not appear in RTL at all. UPF places them and connects them to those wires.

    • The isolation cell sits on the core output, on its way into the always-on side.

    Concern

    RTL provides

    UPF defines

    Clock gating

    Intent-driven enables and test control

    Clock-gating mapping is normally a synthesis/clock-flow concern; use target resources

    Power domains

    Hierarchy the domains follow

    Domain membership and supply nets

    Isolation

    Boundary signals and idle values

    Isolation strategy, clamp values, control signals

    Retention

    Save and restore triggers

    Which flops retain, with which supplies

    Sequencing

    Executable AON controller, quiesce, save/restore and readiness handshakes

    Allowed power states/transitions and their structural power intent

    The domain names, the isolation signals and the clamp values are the contract between the two sides. A few lines of UPF show the shape: each command names an RTL signal, never an RTL cell.

    Diagram
    # UPF sketch (illustrative): supplies and the switch omitted; exact options vary by UPF version and tool
    create_power_domain PD_CORE -elements {u_core}
    set_isolation iso_core -domain PD_CORE -applies_to outputs \
        -clamp_value 0 -isolation_signal u_aon/iso_en -isolation_sense high
    set_retention ret_core -domain PD_CORE -elements {u_core/ctx_q} \
        -save_signal {u_aon/save high} -restore_signal {u_aon/restore high}

    Read it against the picture: PD_CORE is the dashed domain, iso_en drives the isolation cell, and save and restore drive retention. The RTL only has to provide those signals, plus sw_req for the switch the sketch leaves out.

    Common pitfall

    Hard-coding isolation muxes or fake retention flops in synthesizable RTL duplicates the tools and drifts from them. Expose the signal, let UPF own the cell.

    Follow-ups

    • What breaks if RTL hard-codes an isolation mux? Simulation passes while the real flow inserts its own cell. The two can disagree on clamp value or placement, and power-aware static checks report the RTL mux as unrecognised isolation, or report the crossing as missing isolation.

    • What does the always-on controller own? The sequencing: quiesce requests, isolation enables, switch controls, and save and restore triggers. It is the only logic alive to run the order.

    • How is the split verified? Structural checks resolve domain membership, crossing strategies, live supplies and mapped cells. Temporal assertions check executable sequencing and fresh acknowledgements. Ordinary RTL simulation checks controller/mux logic but does not model supply corruption; power-aware simulation exercises supply loss, isolation and retention under UPF. State/transition coverage records visits, not correctness: a covered transition may still violate an assertion, while an unvisited state is a stimulus gap rather than proof of a missing cell. See the AON controller.

    Common wrong answers

    • Putting power switches in RTL. Switches are physical cells chosen by the flow. RTL naming a switch is overreach that the tools ignore.

    • Writing UPF pragmas as comments and stopping. Comments carry no intent. The contract needs real control signals on one side and real power constructs on the other.

    • Treating UPF as a backend-only detail. The RTL side must still provide clean boundaries and handshake behaviour, or the intent has nothing to attach to.

    Interview

    The one-line split: RTL provides the control signals, UPF defines the domains, isolation and retention built on them.

    Check yourself A review finds isolation behaviour coded as hand-written muxes in RTL and no isolation constructs in UPF. What is wrong with this picture?

    The intent lives in the wrong place. RTL should expose the boundary signal and handshake while UPF defines the isolation cells and clamp values, so the tools and equivalence checks see one contract.

    Remember

    • RTL owns behaviour and exposes control: enables, idle signals, quiesce handshakes, save and restore triggers.

    • UPF defines the power structure built on those signals: domains, switches, isolation, retention.

    • The always-on controller owns the order of quiesce, isolate, switch, save and restore.

    Rule of thumb: expose the signal in RTL and let UPF own the cell.

    Keep going

    • Practice: Integrating UPF constraints in RTL design

    • Interview: run a mock interview on this topic

    Previous

    340 / 350

    Next: Interview: Debug and ECO

    Up next

    Up nextInterview: Debug and ECO

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Dynamic power first
    • Clock gating done safely