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
    • Flip-Flops and Registers
    • Counters and Timers
    • Shift Registers and LFSRs
    • Pipelining
    • Stalls, Bubbles and Hazards
    • Retiming
      • Retiming Mechanism
      • Retiming Decision Guide
      • Handshake-Aware Retiming
  • FSM & Control27
  • Timing & Clocking39
  • Reset & CDC34
  • Memory & Buses57
  • Advanced RTL28
  • Senior & Interview76
  • Glossary and Notation
Loading lesson

‹Sequential Design
  1. Topics
  2. RTL Design
  3. Sequential Design
  4. Retiming

Part 3 · Sequential · Intermediate

Retiming

Retiming balances stage delay by moving registers across logic without changing behaviour.

  • 3topics
  • 3lessons

Topics in this section

  1. 1Retiming Mechanism1 lesson
  2. 2Retiming Decision Guide1 lesson
  3. 3Handshake-Aware Retiming1 lesson
On this page

    A pipeline runs at the speed of its slowest stage. Retiming slides registers across combinational gates to balance stage delays while keeping input/output behaviour unchanged.

    Lessons in this topic

    3 lessons, about 14 min

    1. 1Retiming MechanismYou can retime a register across a gate, size the new register width, and check the move against input and output timing budgets.5 min
    2. 2Retiming Decision GuideYou can match a timing symptom to a fix, and choose between automatic and manual retiming for a block.4 min
    3. 3Handshake-Aware RetimingYou can explain why in_ready = !skid_v is safe, trace a fill, stall and drain, and decide where skid buffers belong.5 min
    Check yourself Does retiming change the number of registers on every input-to-output path?

    No. Each path keeps the same number of registers (same latency). Registers move along the path; the total count can change only where paths fork or merge.

    Interview

    Common question: “The critical path is in stage 2 but stage 3 has slack. What do you do?” Answer: move logic (or registers) across the stage boundary, i.e. retime; if the tool cannot, rebalance by hand.

    Revision sheet

    The whole topic on one page, taken from each lesson's Remember box. Read it before an interview, or print it.

    Retiming Mechanism

    • Moving the register backward across f puts it between g and f and splits the path.

    • The registers around every feedback loop must stay the same in number, or the function changes.

    • The retimed output is a combinational sum of registers, so clock-to-output delay and glitches can differ.

    Retiming Decision Guide

    • Small imbalances suit the tool option; critical interfaces suit a manual rewrite.

    • Put the number of output ranks in a parameter, so adding a stage is a one-line change.

    • Re-run a protocol's testbench after retiming any block inside it.

    Handshake-Aware Retiming

    • in_ready comes from the skid_v flag alone, so out_ready has no path to in_ready.

    • A skid buffer doubles the registers, keeps one item per cycle and can pause input for a cycle on recovery.

    • A one-register slice that just registers ready halves the rate or drops data.

    Practise it

    • Mini project: a programmable timer with prescaler, compare and interrupt

    • Practice question: Two-stage valid/ready pipeline and skid buffers

    • Code lab: Skid buffer

    • Interview: run a mock interview on this topic

    PreviousNext: Retiming Mechanism

    Up next

    Up nextRetiming Mechanism

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Flip-Flops and Registers
    • Counters and Timers
    • Shift Registers and LFSRs