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 Foundations57
  • Combinational Design58
    • Combinational Timing Overview
    • Muxes, Decoders and Encoders
    • Arithmetic Blocks
    • Comparators and Shifters
    • Tri-State and Shared Buses
    • Latch Inference
    • Arithmetic Datapaths
      • Fixed-Point Contract
      • Width Growth
      • Rounding and Quantization
      • Saturation Policy
      • Divider Architectures
  • Sequential Design61
  • FSM & Control66
  • Timing & Clocking64
  • Reset & CDC58
  • Memory & Buses94
  • Advanced RTL60
  • Senior & Interview175
  • Glossary and Notation
Loading lesson

‹Arithmetic Datapaths
  1. Topics
  2. RTL Design
  3. Combinational Design
  4. Arithmetic Datapaths
  5. Divider Architectures

Part 2 · Combinational · Advanced

Divider Architectures

Choose combinational, iterative, pipelined, or reciprocal-based division from latency, throughput, area, and numeric requirements.

Why this matters

Writing / on a wide divisor does not give you a microarchitecture. The choice between combinational, iterative and pipelined dividers sets latency, throughput and area, and every one needs divide-by-zero handling.

After this lesson you can: compare divider architectures, trace a restoring division step by step, and list the corner cases every divider must handle.

Architecture

Latency

Throughput

Area tendency

Use

Combinational divider (/ operator)

Unclocked propagation delay; wrapper defines capture latency

One/cycle in a timed registered wrapper

Potentially large

Small widths or constant divisor

Iterative restoring/non-restoring

About one bit per working cycle plus interface overhead

One result per ~W working cycles (+ interface overhead); not pipelined, so the next operation waits

Often smaller

Control and low-rate datapaths

Fully pipelined

Many registered stages

One/cycle if unstalled

More parallel logic/registers

High-rate streams

Reciprocal multiply

Pipeline dependent

Architecture dependent

Multiplier + approximation

DSP with bounded divisor range

Every divider needs divide-by-zero behavior and signed corner handling. The signed minimum divided by -1 overflows in two's-complement because the positive result is not representable.

If the sensor pipeline adds programmable normalization, its divisor range and update rate decide the architecture: an iterative divider suits infrequent control updates, while a reciprocal pipeline suits one normalized sample per cycle.

  1. Capture operands and signs.

  2. Operate on magnitudes with an explicit iteration count.

  3. Apply quotient and remainder signs.

  4. Handle divide-by-zero and signed overflow before declaring valid.

Work four restoring steps: 13 divided by 3

For unsigned binary 1101 divided by 0011, start remainder R=0. At each step shift the next dividend bit into R; if that trial remainder is at least 3, subtract 3 and emit quotient bit 1, otherwise keep it and emit 0.

13 divided by 3 in four restoring steps. Each bar is the trial remainder after shifting in one dividend bit; only step 2 reaches the divisor, so only it subtracts and emits a quotient 1.

Read the columns left to right, one per clock step of a one-bit-per-cycle divider. A bar that reaches the dashed line subtracts.

  • Step 2: trial 2 x 1 + 1 = 3 equals the divisor, so it subtracts to R = 0 and emits a 1.

  • Steps 1, 3 and 4: the trial stays below 3, so the remainder is kept (restored) and the quotient bit is 0.

  • Result: the quotient bits read 0100 = 4 and the last R is 1.

Step / input bit

Trial remainder

Subtract 3?

New R

Quotient prefix

1 / 1

2*0+1=1

No

1

0

2 / 1

2*1+1=3

Yes

0

01

3 / 0

2*0+0=0

No

0

010

4 / 1

2*0+1=1

No

1

0100

The result is quotient 0100=4 and remainder 1: 13=4*3+1, with 0<=R<3. A one-bit-per-cycle implementation needs four working steps here, plus whatever operand acceptance/completion overhead its interface specifies. An unrolled network performs the steps combinationally; a pipelined one trades registers and latency for initiation rate. Iteration count is not automatically the externally observed cycle latency.

Warning

Do not infer a large variable divider with / and assume synthesis will create the microarchitecture you intended. Inspect the result or instantiate an explicitly designed iterative/pipelined unit.

Check yourself What two exceptional cases must every signed divider specify?

Division by zero, and minimum-negative divided by -1, whose mathematical positive result exceeds the signed output range.

Remember

  • A restoring divider shifts in one dividend bit per step and subtracts the divisor if the trial remainder is large enough (13 / 3 gives 4 remainder 1).

  • Divide by zero and the most negative value divided by -1 need explicit behaviour.

  • Iterative suits infrequent control updates; a pipeline suits one sample per cycle.

Rule of thumb: inspect what / synthesises into, or instantiate a divider you designed.

Keep going

  • Practice: A restoring divider in detail

  • Practice: A non-restoring divider

  • Interview: run a mock interview on this topic

Related topics

  • Precision verification

  • Datapath synthesis

Previous

115 / 694

Next: Sequential Design

Up next

Up nextSequential Design

Sign in to save progress

Practice this lessonReport an error

See also

  • Fixed-Point Contract
  • Width Growth
  • Rounding and Quantization