123 Main Street, New York, NY 10001

Speed & Timing Budgets for I2C, SPI and UART

← Back to: I²C / SPI / UART — Serial Peripheral Buses

Speed/Timing is not “frequency”—it is proven sampling margin at the worst node and worst corner. This page shows how to convert datasheet timing into a board-level budget and close the loop with measurements and pass criteria.

What “Speed/Timing” Means Across I²C / SPI / UART

“Speed” is not just a bus frequency number. It is the measurable sampling margin left after the real board (drivers, interconnect, thresholds, and sampling) consumes the ideal timing window.

Search intents this chapter answers
  • What are tSU/tHD? (setup/hold as a safety window around the sampling instant)
  • Why do rise/fall limits cap speed? (threshold-crossing uncertainty shrinks the window)
  • How to interpret “sampling window”? (where the receiver truly samples, and how margin is proven)
Unified timing language (applies to I²C / SPI / UART)
Launch edgeInterconnectReceive thresholdSample pointMargin
  • Launch edge: where timing starts (slew, drive strength, clock quality).
  • Interconnect: where edges distort (RC, reflections, skew, coupling).
  • Threshold: where “logic 0/1” is decided (VIH/VIL, noise, common-mode shifts).
  • Sample point: where the receiver commits a bit (sampling jitter, duty error, phase).
  • Margin: the remaining safe window (must survive worst-case PVT and be measurable).
Chapter deliverables (what must be possible after reading)
  • Convert datasheet timing into a board-level timing budget (window → losses → guardband).
  • Identify where margin is being consumed (edge distortion, threshold drift, sampling uncertainty).
  • Define Pass criteria as measurable limits (placeholders used here; thresholds set per design).
Scope guard (to prevent cross-page overlap)

This page focuses on timing budgets and sampling margin. Protection, isolation, topology, and full protocol behavior are handled in their dedicated pages; this chapter only references them when they directly change timing.

Timing Budget Pipeline (board-level) Driver Trace / Cable Threshold Sampling Margin slew drive cap skew threshold noise jitter duty prove it Goal: convert spec → budget → measurement → pass criteria (worst-case).
Diagram #1 — A unified pipeline that shows where timing margin is consumed on real boards (applies to I²C, SPI, and UART).

Timing Primitives: tSU/tHD, tR/tF, Skew, Jitter, Duty, Window

This chapter standardizes definitions and measurement conventions. Without consistent primitives, any timing budget will be numerically correct but operationally wrong.

Common misconceptions to avoid
  • “Faster edge is always better” — not if ringing/noise increases threshold-crossing uncertainty and shrinks the safe window.
  • “Skew equals jitter” — skew is deterministic arrival mismatch; jitter is statistical timing uncertainty around an edge.
  • “Setup/hold are abstract” — they are a physically drawable safety zone around a defined sampling instant (edge-based or threshold-based).
Measurement conventions (must match the datasheet)
  • tR/tF convention: measure using the same percentage points as the spec (10–90% or 30–70%). Record probe loading and bandwidth limits.
  • Setup/hold reference: define whether timing is referenced to a sampling edge (clocked interfaces) or a threshold crossing (edge-detection cases). Do not mix these.
  • Duty-cycle relevance: duty error reduces the effective half-cycle window, directly consuming timing margin even when frequency is correct.
Timing primitive dictionary (budget-ready)
tSU (Setup time)

Minimum time the data must be stable before the defined sampling instant.

  • Measured at: receiver pin or defined reference point (must be stated).
  • Consumes window via: clock arrival skew, data propagation uncertainty, threshold-crossing jitter.
  • Pass criteria placeholder: tSU_meas ≥ X (after guardband).
tHD (Hold time)

Minimum time the data must remain stable after the defined sampling instant.

  • Measured at: receiver pin or defined reference point (must be stated).
  • Consumes window via: minimum data delay, clock/data relative timing uncertainty.
  • Pass criteria placeholder: tHD_meas ≥ X (after guardband).
tR / tF (Rise / Fall time)

Transition time between defined voltage percentages (spec-dependent). It directly changes threshold-crossing timing spread and thus the usable sampling window.

  • Measured with: correct percentage points and a clearly defined threshold reference.
  • Consumes window via: slower slope → more time uncertainty under noise; faster slope → potential ringing/overshoot shifting effective crossing.
  • Pass criteria placeholder: tR/tF within spec at the receiver pin (worst-case node).
Skew / Jitter / Duty (Window shapers)
  • Skew (Δt): deterministic clock/data arrival mismatch across endpoints; subtracts directly from setup/hold.
  • Jitter: statistical uncertainty of edge timing; shrinks safe window based on the chosen confidence level.
  • Duty: changes the effective half-cycle; a correct frequency with wrong duty still reduces sampling margin.

Budget mapping rule of thumb: usable window = ideal window − (skew + jitter + edge/threshold uncertainty + propagation variation) − guardband.

Setup/Hold Window (defined at receiver sampling instant) VIH/VIL reference Clock Data sample edge valid window tSU tHD uncertainty Important: use the same reference definition (sampling edge vs threshold crossing) throughout the budget.
Diagram #2 — Setup/hold is a safety region around the defined sampling instant; skew, jitter, and edge uncertainty reduce the usable window.

The Budget Method: Worst-Case Stack-Up + Guardband

A reliable interface is proven by worst-case sampling margin, not by a single “good-looking” waveform. This method converts a datasheet spec into a board-level, measurable timing proof.

Search intents this chapter answers
  • Spec → board: how to translate datasheet timing into a board-level budget.
  • Worst-case: how to pick max/min combinations and avoid “average-value engineering”.
A repeatable SOP (4 steps)
Step 1 — Build budget rows (loss contributors)

Express the timing window as “ideal window − losses”. Each loss must have a bound (max/min) and a measurement method.

Typical rows
  • Driver delay / output uncertainty
  • RC edge / threshold-crossing spread
  • Trace/cable skew (endpoint mismatch)
  • Receiver threshold shift (VIH/VIL, noise)
  • Sampling uncertainty (jitter, duty, phase)
Step 2 — Pick worst-case directions (max/min)

Worst-case is a combination, not “all maximum values”. Setup worst-case typically pairs latest data with earliest sampling; hold worst-case pairs earliest data change with latest sampling.

Rule to document

For each row, record: worst direction (max or min), why it is worst, and how it is bounded.

Step 3 — Add guardband (insurance for reality)

Guardband reserves margin for uncontrolled factors: PVT corners, assembly variation, probe loading, and measurement uncertainty. Treat guardband as a named budget row, not a hidden “extra”.

Practical guardband policy
  • Use a percentage of the ideal window and/or an absolute time floor.
  • Choose the worse of the two: guardband = max(α·window, X) (α, X defined per program).
Step 4 — Publish pass criteria (measurable + repeatable)

Pass criteria must specify what is measured, where it is measured (receiver pin / worst node), and under what corner (voltage, temperature, load).

Pass criteria examples (placeholders)
  • Setup margin ≥ X ns at receiver pin (worst-case node).
  • Rise/Fall within spec at receiver pin (same % convention as datasheet).
  • Clock duty within X–Y% at the loaded clock node.
Why “average-value engineering” fails

A single “typical” waveform may pass, while a production unit fails at a corner (temperature, voltage, longer harness, or worst node). Worst-case stack-up makes failure modes predictable and testable before scaling.

Budget row template (mobile-safe)
Row: [Name]
Worst direction
max / min (must be justified)
How to bound
datasheet max/min, measurement, or simulation bound
How to measure
probe location, trigger, corner condition, record format
Pass criteria
≥ X ns (or ≤ X ns), specified at a named node
Budget Stack: Ideal Window → Losses → Guardband → Usable Margin Ideal Window RC skew thres samp guardband Usable Margin loss contributors reserved margin Keep text minimal; keep rows measurable.
Diagram #3 — The timing window is consumed by bounded loss contributors; guardband is reserved explicitly; the remainder is usable margin.

I²C Timing Budgets: tLOW/tHIGH, tSU:DAT, tHD:DAT, tSU:STA, tBUF

I²C speed is often limited by open-drain edges: the pull-up network and bus capacitance shape the rise time, which directly consumes tHIGH and shrinks the usable margin.

Search intents this chapter answers
  • Mode limits: why 100/400/1000/3400 kbps is usually constrained by timing, not “drive strength”.
  • Same 400 kHz, different outcomes: bus capacitance, edge shape, and worst-node timing decide reliability.
Core timing idea (I²C)
  • Open-drain + pull-up defines the rise time (and therefore the threshold-crossing moment).
  • Rise time consumes tHIGH and reduces the time available for data validity and sampling margin.
  • Worst node matters: the farthest / highest-capacitance branch is usually the true limiter.
Transaction-level timing constraints (timing-only)
START / STOP timing (SCL high period)

START and STOP are recognized when SDA transitions while SCL is high. This makes rise time and threshold-crossing stability critical during the high period.

  • tSU:STA: setup time before START is recognized.
  • tHD:DAT / tSU:DAT: data stability around the sampling of bits (timing must be measured at the receiver pin).
  • tBUF: bus free time between STOP and the next START (timing-only constraint).
tLOW / tHIGH and compatibility margin

Low/high periods must remain compliant at the worst node. Allow extra margin for devices that delay responses (e.g., stretching) because it reshapes effective low/high timing.

  • tR/tF: must meet mode requirements at the receiver pin (correct % convention).
  • tHIGH/tLOW: must remain within the mode’s min/max under corner conditions.
  • Margin note: state the master timeout policy elsewhere; here, only quantify the timing impact.
I²C timing compliance checklist (timing-only)
  • Declare the target mode (100/400/1,000/3,400 kbps) and the measurement convention (10–90% or 30–70%).
  • Measure at the worst node (highest Cbus / farthest branch), not only at the controller pins.
  • Verify tR/tF and tHIGH/tLOW across voltage and temperature corners.
  • Record probe loading, threshold level, and capture settings so results are reproducible.
  • Publish pass criteria as placeholders: tR ≤ X, tHIGH ≥ X, tLOW ≥ X, tBUF ≥ X (at the named node).
I²C Timing (timing-only): START/STOP + tHIGH/tLOW + tR/tF SCL SDA tHIGH tHIGH tLOW tLOW START STOP tR tF measure worst node Keep diagrams timing-focused; avoid protocol expansion beyond START/STOP recognition.
Diagram #4 — Timing-only view: START/STOP are SDA transitions while SCL is high; rise/fall and high/low periods must be compliant at the worst node.

I²C Rise/Fall (tR/tF) from RC: Pull-Up Sizing as a Timing Budget

For I²C, the rising edge is shaped by Rpull-up × Cbus. If tR is too slow, the threshold-crossing moment drifts later, consuming tHIGH and shrinking usable sampling margin.

Search intents this chapter answers
  • How to size pull-ups: compute a feasible R range and choose a safe point.
  • Why 400 pF is a trap: slow edges consume tHIGH and increase crossing uncertainty.
  • Too small vs too large: trade power loss against timing margin.
Pull-up sizing SOP (timing-first)
Step 0 — Lock the measurement convention
  • Declare the target I²C mode and the rise/fall convention (10–90% or 30–70%) consistent with the spec.
  • Measure at the worst node (highest Cbus / farthest branch), not only at the controller pin.
Step 1 — Estimate Cbus (device + trace + connector)

Cbus is the sum of device input capacitance, PCB trace/cable capacitance, connectors, and any added protection components. Use a conservative estimate for the worst node.

Cbus contributors (checklist)
  • Devices: ΣCin across all attached nodes on the segment
  • Interconnect: trace/cable capacitance by length
  • Connectors/harness: often non-trivial at the far end
  • Added parts: ESD arrays, test points, probe loading
Step 2 — Bound R by rise-time (Rmax from tR_spec)

Rise time scales with the RC time constant. Use the mode’s rise-time limit to compute the maximum pull-up resistance that still meets tR at the worst node.

Practical relation (no long derivation)

tR ∝ Rpull-up · Cbus. Use the spec convention (10–90% or 30–70%) to map tR_spec to an upper bound Rmax.

Step 3 — Bound R by VOL/IOL (Rmin from sink capability)

The pull-up must not force a low-level current that exceeds device sink capability, and VOL must remain within limits. This defines a lower bound Rmin.

What to use as bounds
  • Device datasheet: IOL (sink current) at the relevant VOL condition.
  • System requirement: worst-case VOL(max) at the receiver pin.
Step 4 — Choose a safe point inside [Rmin, Rmax]

If Rmin > Rmax, the target mode cannot be met on this segment without reducing Cbus (segmentation/buffering) or lowering the bus speed. Otherwise, select a mid-range value biased toward margin.

Decision outputs (deliverables)
  • Cbus estimate and worst-node definition
  • Computed Rmin (VOL/IOL) and Rmax (tR_spec)
  • Recommended R (margin-biased) with measurement plan
Edge shaping vs timing (timing-only view)

Series-R/RC is not only about emissions; it can stabilize the threshold-crossing time by reducing ringing and multiple crossings near VIH/VIL. A more deterministic crossing moment improves usable margin.

  • If the waveform crosses the threshold multiple times, sampling becomes probabilistic.
  • Prefer timing evidence: reduced crossing spread at the receiver pin under worst-node loading.
Pass criteria (placeholders, measurable)
  • tR ≤ X (receiver pin, worst node, spec % convention)
  • VOL ≤ X at IOL condition (worst node)
  • No multiple crossings near VIH/VIL (crossing spread ≤ X)
RC Rise: tR from % levels + threshold crossing (worst node) 30% 70% threshold tR worst node Rpull-up Cbus tR ∝ R · C bound Rmax keep text minimal Use the spec’s % convention; measure at receiver pin for the worst node.
Diagram #5 — Rise time is defined by % levels; threshold crossing must be stable at the worst node; tR scales with Rpull-up and Cbus.

SPI Timing Budgets: CPOL/CPHA Sampling Window, tSU/tHD, tCO, tDO

SPI reliability is decided by whether the sampling edge lands inside the data-valid window. CPOL/CPHA choose the relationship between clock edges and data transitions; interconnect delay and uncertainty shrink the usable window.

Search intents this chapter answers
  • Why modes 0–3 slip bits: sampling edge too close to data transitions.
  • How to align sampling: map sample edges to the data-valid window.
  • What to do when tSU/tHD is tight: shift phase (CPHA), reduce uncertainty, or reduce SCLK.
Two-stage timing model (budget mapping)
Stage A — Clock arrival uncertainty

Skew, reflections, buffering, and threshold drift move the sampling edge on the time axis.

Stage B — Data-valid window width/position

Slave tCO, path delay, and edge drift define where data becomes valid and how long it stays valid before the next transition.

Window budget idea (engineering form)

Start from the effective half-cycle (or phase window). Subtract bounded uncertainty terms to get the usable sampling window:

usable window = phase window − clock jitter − clock skew − data uncertainty − edge/threshold drift − guardband

“Same frequency, different fate”

At the same SCLK, longer traces, heavier loads, and different buffering can increase skew/jitter and shrink the data-valid window, reducing margin even when frequency is unchanged.

When tSU/tHD is tight (timing actions)
  • Shift sampling phase: choose CPHA so the sample edge lands deeper inside the data-valid region.
  • Reduce uncertainty: bound skew/jitter/threshold drift (tighten Stage A and Stage B terms).
  • Reduce SCLK or shorten the window path (improve margin without protocol changes).
Pass criteria (placeholders, measurable)
  • Setup margin ≥ X ns at the sampling receiver pin (worst slave node)
  • Hold margin ≥ X ns at the sampling receiver pin (worst slave node)
  • Clock skew/jitter ≤ X at the loaded SCLK node (document probe + trigger)
SPI Sampling Window: Mode 0 vs Mode 3 (sample edge vs data-valid) Mode 0 Mode 3 SCLK DATA data valid sample SCLK DATA data valid sample edge relationship The safe design goal: sample edge centered in the data-valid region with worst-case uncertainty subtracted.
Diagram #6 — CPOL/CPHA select edge relationships; the sampling edge must land inside the data-valid region after subtracting skew/jitter and propagation uncertainty.

SCLK Quality: Frequency, Duty Cycle, Edge Placement, Skew Control

Clock quality directly determines the phase window available for sampling. Even at the same frequency, duty distortion, edge uncertainty, jitter, and arrival skew can shrink the usable window and push the sampling edge too close to data transitions.

Search intents this chapter answers
  • Duty out of spec: how the half-cycle window gets squeezed.
  • Edge placement issues: why crossing uncertainty becomes a timing penalty.
  • Skew control: how to bound master↔slave SCLK arrival spread as a budget row.
Timing-only budget template for SCLK quality

usable window = phase window − duty distortion − edge/threshold spread − jitter − arrival skew − guardband

Duty distortion → narrower half-cycle

When duty deviates from 50%, one half-cycle becomes shorter. The effective sampling phase window can shrink even if frequency is unchanged.

Edge/threshold spread → sampling edge uncertainty

Very slow edges increase sensitivity to noise near the threshold; ringing can create multiple crossings. Both enlarge the uncertainty of the effective edge time.

Skew control → bounded arrival spread

Buffering/re-timing matters in timing terms when it reduces the master↔slave arrival spread and tightens the worst-case sampling edge placement.

Pass criteria (placeholders, measurable)
  • Duty cycle in X%–Y% at the loaded SCLK node (document probe + threshold)
  • Edge-to-edge jitter ≤ X at the loaded SCLK node (consistent definition)
  • Arrival skew (master vs worst slave) ≤ X (same threshold, same reference)
Duty Distortion Squeezes the Sampling Phase Window (same frequency) 50% duty 40/60 duty SCLK usable window SCLK usable window window shrinks duty jitter skew Timing view: duty distortion reduces the effective half-cycle window; jitter/skew further subtract margin.
Diagram #7 — Same frequency, different usable phase window: duty distortion squeezes the half-cycle and reduces timing margin.

UART Timing: Baud Error Budget + Oversampling Sampling Window

UART is asynchronous: alignment starts at the start-bit edge (t0), then sampling targets the center of each bit cell. TX/RX clock error accumulates as sampling drift across the frame; long frames reduce end-of-frame margin.

Search intents this chapter answers
  • Where ±2% comes from: center-sampling tolerance before crossing bit boundaries.
  • Why 1% + 1% can fail: errors add, then edge uncertainty consumes margin.
  • Sampling drift: worst risk appears at the last data/stop region.
Timing budget chain (drift + uncertainty)
Systematic drift sources
  • TX clock error (XTAL tolerance, temp drift, PLL/divider error)
  • RX clock error (same contributors)
Edge uncertainty sources
  • Noise / slow edges → threshold-crossing spread
  • Input filtering / de-glitch → effective timing spread
Engineering action levers
  • Choose lower-drift clock sources; add calibration hooks
  • Use 8×/16× oversampling to stabilize center sampling
  • Watch long frames: drift accumulates toward the end
Oversampling (timing view)

Oversampling provides finer timing granularity for selecting a robust center sample point and reduces sensitivity to short-lived edge disturbances. It cannot compensate when the total drift pushes the center sample beyond bit boundaries.

Pass criteria (placeholders, measurable)
  • TX baud error ≤ X% across voltage/temperature corners
  • RX tolerance: no framing errors within ±X% injected baud mismatch
  • End-of-frame margin ≥ X% of bit time at the last data/stop region
UART Timing: Start-bit t0 → Center Sampling → Drift Accumulation → End Margin t0 baud error → drift accumulates margin oversampling long frame edge uncertainty Timing view: drift accumulates from t0; the end-of-frame region is the tightest margin point.
Diagram #8 — Start-bit alignment sets t0; combined baud error causes sampling drift; margin is evaluated near the last bit/stop region.

Measurement & Validation: From Spec to Scope/LA Pass Criteria

Validation closes the loop by translating datasheet timing into board-level budgets, then proving margin at the worst node with repeatable probe points, triggers, instrument settings, and measurable pass thresholds.

Search intents this chapter answers
  • How to measure tR/tF (consistent thresholds and probe loading)
  • How to measure setup/hold (align to the sampling event)
  • Scope vs logic analyzer (analog margin vs long-run statistics)
Measurement loop (repeatable, worst-node focused)
1) Where to probe (best-looking is not the target)
  • Worst node: far end / highest load / largest C branch
  • Receiver-side timing: measure where sampling happens
  • Document the node: connector, test pad, device pin, or branch end
2) Trigger & alignment (align to the sampling event)
  • I²C: align to START/STOP or the relevant SCL edge
  • SPI: align to CS active edge and the CPOL/CPHA sampling edge
  • UART: align to the start-bit threshold crossing (t0)
3) Instrument setting traps (avoid measurement artifacts)
  • Bandwidth: too low hides ringing/jitter and distorts tR/tF
  • Probe loading: capacitance + ground lead can change the edge
  • Threshold: LA thresholds must match the intended VIH/VIL definition
  • Sampling rate: LA undersampling can miss rare or narrow violations
4) Worst-point search routine (scan nodes & corners)
  • Scan probe nodes: driver-side vs receiver-side vs far end
  • Scan conditions: voltage, temperature, load count, cable/trace length
  • Combine tools: scope for analog margin + LA for long-run statistics
Pass criteria template (card format; placeholders)
Metric card
  • Metric: tR / tF / setup / hold / duty / jitter / skew
  • Definition: threshold convention + reference event
  • Probe point: worst node (name it)
  • Instrument: bandwidth / sampling / threshold / probe
  • Threshold: ≤ X or ≥ X, with sample count N
Evidence pack
  • Scope screenshot with thresholds + time markers
  • LA capture with decoding + statistics (errors/retries)
  • Run log: node, corner, settings, pass/fail result

Principle: pass is evaluated at the worst node under repeatable worst-case conditions, not the cleanest-looking waveform.

Validation Path: Spec → Budget → Probe → Pass (record & output) Spec Budget Probe Pass tR / tF tSU / tHD baud err definitions worst-case guardband rows targets worst node trigger settings scan corners X limits evidence repeat sign-off Project-bible view: each box defines what to record and what to output for a repeatable sign-off.
Diagram #9 — Spec becomes a worst-case budget; probe at the worst node with documented triggers/settings; pass is defined by measurable thresholds and evidence.

Firmware Timing Hooks: Timeouts, Retries, Sampling Adjust, Guard Time

Firmware can consume or recover timing margin. Timeouts bound worst-case latency, retries change load and event density, sampling adjustments move the effective sample point toward the center of the window, and guard time reduces continuous window pressure under marginal conditions.

Search intents this chapter answers
  • Hardware looks fine but still drops: timing knobs that change effective margin.
  • Timeout/retry impact: how policy boundaries alter user-visible timing behavior.
  • Sampling adjustment: how to validate sample-point movement with measurable pass limits.
Timing knobs by bus (When → Set → Verify → Pass)
I²C
timeout
  • When: slow devices or stretching can stall the bus
  • Set: cover acceptable delay + safety margin; avoid infinite waits
  • Verify: no false timeouts in worst-case operation
  • Pass: recovery time ≤ X; false timeout rate ≤ X
retry
  • When: marginal edges cause occasional NAK
  • Set: limit retry count; add spacing to avoid “retry storms”
  • Verify: retry rate decreases under worst-node tests
  • Pass: retries/transaction ≤ X; latency ≤ X
guard
  • When: back-to-back transfers increase event density
  • Set: insert minimum spacing to reduce continuous window pressure
  • Verify: fewer bursts of NAK/timeouts in long-run capture
  • Pass: error burst rate ≤ X; throughput drop ≤ X%
SPI
sample delay
  • When: setup/hold margins are tight; occasional bit errors
  • Set: move sample point toward the center of data-valid window
  • Verify: increased setup/hold at receiver node
  • Pass: setup ≥ X; hold ≥ X; error rate ≤ X
retry
  • When: transient errors appear under load
  • Set: bounded retry count + spacing to avoid repeated marginal sampling
  • Verify: long-run BER/CRC improves on LA capture
  • Pass: retries/frame ≤ X; tail latency ≤ X
guard time
  • When: continuous bursts reduce effective margin (heat/rail/noise)
  • Set: inter-word spacing or chunking to reduce continuous stress
  • Verify: fewer error bursts at worst node & corners
  • Pass: error burst rate ≤ X; throughput drop ≤ X%
UART
autobaud
  • When: clock drift causes framing/parity errors
  • Set: calibrate divisor from known edges/characters (timing value)
  • Verify: baud estimate converges across corners
  • Pass: baud error ≤ X%; framing errors ≤ X
oversample
  • When: noisy edges create threshold-crossing spread
  • Set: 8×/16× oversampling; keep center sampling stable
  • Verify: fewer start/bit decision errors in long runs
  • Pass: error rate ≤ X at worst node & corners
guard time
  • When: back-to-back frames reduce recovery margin
  • Set: minimum inter-frame spacing under marginal conditions
  • Verify: fewer error bursts and lower tail latency
  • Pass: framing bursts ≤ X; throughput impact ≤ X%
Firmware Timing Knobs (timing-only): knobs → margin → pass I²C SPI UART timeout retry guard sample delay phase chunk autobaud oversample guard knobs → margin → pass
Diagram #10 — Firmware timing knobs (timing-only): policy and sampling controls that shape effective margin and measurable pass outcomes.

Engineering Checklist: Design → Bring-up → Production (Timing-Focused)

This checklist turns timing budgets into repeatable sign-off. Each item is measurable at the worst node, under defined corners, and produces an evidence pack suitable for handoff and production audits.

Three timing gates (what must be true to proceed)
Design Gate
Budget rows complete • Definitions locked • Guardband strategy set
Bring-up Gate
Worst-node probing • Corner scan • Long-run statistics captured
Production Gate
Auto thresholds • Sampling plan • Timing-only logs for traceability
Checklist format (each item must be measurable)
  • Item: one timing claim to verify
  • Why: which margin/uncertainty it consumes
  • How: probe point + trigger + sample count
  • Evidence: scope / CSV / auto-test / LA stats
  • Pass: ≤ X or ≥ X (placeholder)
Design Gate (timing-only, 9 checks)
1) Budget rows are complete
Evidence: budget card set (PDF/MD) • Pass: all required rows present (X)
2) Definitions are locked (no ambiguity)
tR/tF (10–90 or 30–70) • setup/hold reference (sample edge vs threshold) • Evidence: definition card • Pass: one definition per metric (X)
3) Worst node is identified and named
Evidence: topology note + node ID • Pass: worst-node rationale documented (X)
4) Guardband strategy is explicit
Evidence: guardband rule card • Pass: guardband = X% window or X ns (placeholder) + corner rule (X)
5) Probe access exists for timing sign-off
Evidence: probe-point list • Pass: all sign-off nodes are accessible (X)
6) Instrument thresholds are defined
LA thresholds aligned to VIH/VIL intent • Evidence: threshold card • Pass: threshold values recorded (X)
7) Timing-critical helpers are selected (examples allowed)
Evidence: BOM notes • Pass: selected helpers meet timing-first constraints (X)
8) Clock-quality assumptions are bounded
Duty/jitter/skew placeholders set • Evidence: assumption card • Pass: worst-case bounds exist (X)
9) Evidence pack template is ready
Scope screenshot format + CSV naming + log fields • Evidence: template • Pass: template adopted (X)
Bring-up Gate (timing-only, 9 checks)
1) Worst-node probing is executed
Evidence: scope screenshots at named nodes • Pass: worst node measured for each key metric (X)
2) Trigger alignment matches the sampling event
I²C START/STOP or SCL edge • SPI CS + CPOL/CPHA edge • UART start-bit t0 • Evidence: trigger note • Pass: alignment repeatable (X)
3) Instrument artifacts are controlled
Bandwidth, probe loading, thresholds, LA sampling rate recorded • Evidence: settings card • Pass: settings logged for every capture (X)
4) Corner scan is performed
Voltage/temperature/load/length variants • Evidence: run log • Pass: all planned corners executed (X)
5) Budget vs measurement is closed
Evidence: per-metric card (budget, measured worst, margin) • Pass: margin ≥ X at worst node (placeholder)
6) Long-run statistics are captured
LA decode + error/retry counters • Evidence: CSV/stat export • Pass: error rate ≤ X over N events (placeholder)
7) Sample-point adjustments are validated (if supported)
SPI sample delay/phase or UART oversample point • Evidence: before/after captures • Pass: margin increases by ≥ X (placeholder)
8) Worst-case reproduction steps are fixed
Cable/board variant + steps + timing metrics • Evidence: reproduction card • Pass: independent rerun matches (X)
9) Evidence pack is complete and indexed
Node names + thresholds + conditions + results • Evidence: index file • Pass: every metric links to evidence (X)
Production Gate (timing-only, 9 checks)
1) Sampling plan covers timing risk
Evidence: plan card (per lot/board/port) • Pass: coverage meets target (X)
2) Auto thresholds are encoded
tR/tF, duty, skew, baud error, setup/hold proxies • Evidence: test script • Pass: thresholds = X (placeholders)
3) Worst-node equivalence is justified
If production probe is not the worst node: conservative mapping rule • Evidence: mapping note • Pass: mapping approved (X)
4) Golden unit correlation is maintained
Evidence: periodic correlation run • Pass: delta vs golden ≤ X (placeholder)
5) Timing-only logs are structured
Fields: node, threshold definition, corner tags, instrument settings, metric values • Evidence: sample log • Pass: logs are parseable (X)
6) Outlier policy is defined
Retest rules + rework boundary for timing failures • Evidence: policy card • Pass: decision path documented (X)
7) Drift monitoring is enabled
Trend margin distribution (p50/p95) per lot • Evidence: report extract • Pass: drift alarms defined (X)
8) Field return “timing triage” is ready
Minimal capture recipe + thresholds • Evidence: triage card • Pass: can reproduce from logs (X)
9) Sign-off package is versioned
Evidence: version tag + archive link • Pass: every lot maps to a sign-off version (X)
Timing-Focused Engineering Gates: Design → Bring-up → Production Design Gate Bring-up Gate Production Gate budget rows definitions guardband worst node evidence template probe worst node trigger align corner scan budget closed LA statistics sampling plan auto thresholds timing logs drift monitor outlier policy scope CSV auto test LA stats Evidence types are mandatory per checklist item.
Diagram #11 — Three timing gates with small-box checklist items and required evidence types for sign-off.

Applications & IC Selection Notes (Timing-First)

Selection is framed as required timing capabilities, not a catalog. The example material numbers below are common building blocks; always verify package/suffix, voltage thresholds, and current datasheet timing bounds.

Timing-driven application buckets
A) Short on-board interconnect (tight sampling window)
  • Main risk: setup/hold squeezed by duty + skew + threshold spread
  • Needed capabilities: low additive delay uncertainty, low skew, stable thresholds
  • Example parts: SPI level shift/buffer SN74AXC8T245, clock buffer CDCLVC1102, I²C switch TCA9548A
B) Long reach / multi-node (edge slows, worst node dominates)
  • Main risk: tR/tF grows, threshold crossing spreads, skew rises across branches
  • Needed capabilities: segmentation, rise-time acceleration, differential extension, bounded delay
  • Example parts: I²C diff extender PCA9615, bus buffer P82B96, rise accel LTC4311
C) High-throughput bursts (continuous-window pressure)
  • Main risk: repeated edges amplify marginal timing under noise/temperature drift
  • Needed capabilities: re-timing/clean buffering, adjustable sampling, guard-time support
  • Example parts: SPI isolator (timing bounded) ADuM4151, I²C hot-swap buffer TCA4311A, MEMS XO SiT1602
Timing-first metrics to check (in the datasheet)
  • Edge control: slew options, rise-time assist, threshold stability
  • Delay bounds: tPD (max/min), delay uncertainty vs temperature/voltage
  • Skew: channel-to-channel skew and drift across corners
  • Sampling alignment: adjustable delay/phase, re-timing support
  • Clock impact: duty-cycle distortion, additive jitter (bounded)
Example material numbers by timing capability (verify suffix/package/specs)
I²C timing helpers (edge, segmentation, extension)
  • Rise-time accelerator: Analog Devices LTC4311 (tR support under heavy C)
  • Hot-swap / stuck-bus recovery buffer: TI TCA4311A
  • Bus buffers (capacitance isolation): NXP PCA9517A, TI TCA9803
  • I²C switch/mux (fanout control): TI TCA9548A, NXP PCA9548A
  • Differential I²C extender: NXP PCA9615 (long reach, timing bounded at ends)
Isolation / level shifting (prop delay & skew must be bounded)
  • I²C isolators: Analog Devices ADuM1250/ADuM1251, TI ISO1540/ISO1541
  • Open-drain level shift: NXP PCA9306 (verify rise-time impact under C)
  • SPI isolation (bounded tPD): Analog Devices ADuM4151 (validate setup/hold at receiver)
SPI / clock timing helpers (skew, duty, arrival uncertainty)
  • Direction-controlled level translator/buffer: TI SN74AXC8T245 (tight timing vs auto-direction)
  • Small translators: TI SN74LVC1T45, TI SN74AXC1T45 (use for point-to-point)
  • Clock buffer (low added uncertainty): TI CDCLVC1102 / CDCLVC1104 (validate duty & jitter at load)
UART timing helpers (baud accuracy & drift)
  • MEMS oscillator (XO): SiTime SiT1602 (select ppm/temp grade to meet budget)
  • Crystal oscillator (example family): Epson SG-210STF series (verify frequency & stability option)
  • USB-to-UART bridge (deep buffers for bursty traffic): FTDI FT232R, Silicon Labs CP2102N (timing impact: latency/buffering)

Note: example parts are listed for timing capability mapping. Always re-check tPD bounds, skew, and threshold conventions in the latest datasheet for the chosen package and temperature grade.

Timing-First Selection Flow: inputs → decisions → required capabilities Inputs target rate length node count voltage domains temperature Decisions window tight? multi-drop? long bursts? Capabilities re-time / clean buffer slew control adjustable delay tight skew / tPD threshold match Map each capability to a measurable pass limit (X) at the worst node under corner conditions.
Diagram #12 — Timing-first selection flow: define inputs, decide where margin is tight, then select capabilities (and parts) with bounded delay/skew/threshold behavior.

Request a Quote

Accepted Formats

pdf, csv, xls, xlsx, zip

Attachment

Drag & drop files here or use the button below.

FAQs (Timing-Only): Quick Triage Without Expanding Scope

Each answer uses a fixed, measurable format and stays strictly within speed/timing boundaries. Replace X placeholders with project limits and test conditions.

I²C @ 400 kHz runs but shows occasional NAK — first compute tR or tHIGH margin?

Likely cause: Timing margin is consumed at the worst node by rise-time (tR) and/or tHIGH shrinking under real load.

Quick check: Probe SCL/SDA at the farthest device pins; measure tR using the same % definition as the spec and measure tHIGH/tLOW at that node.

Fix: Move pull-up into the feasible window (VOL/IOL bound), reduce effective Cbus, or segment the bus (buffer/switch) so worst-node tR and tHIGH recover.

Pass criteria: tR ≤ X ns @ worst node; tHIGH ≥ X ns @ worst node; NAK rate ≤ X per N transactions across temp/voltage corners.

I²C becomes less stable after switching to a smaller pull-up — ringing or threshold-crossing jitter?

Likely cause: Faster edges increase ringing/undershoot, creating multiple threshold crossings (effective “edge-placement jitter”).

Quick check: Probe at receiver pins; set scope threshold near the intended VIH/VIL boundary and look for multiple crossings or bounce within one edge.

Fix: Add small series-R near the driver, tune pull-up toward a calmer edge, or segment/accelerate edges with controlled devices rather than brute-force pull-up reduction.

Pass criteria: Single clean threshold crossing per edge; overshoot ≤ X% of VDD and undershoot ≥ −X V @ worst node; timing metrics stable over N events.

SPI at the same frequency shows bit-slip on one board but not another — check CPHA or SCLK arrival skew first?

Likely cause: The sampling edge lands too close to the data transition due to mode mismatch and/or arrival skew between SCLK and data at the receiver.

Quick check: Confirm CPOL/CPHA settings match on both ends, then measure SCLK and data at the slave pins to quantify clock-to-data timing at the sampling edge.

Fix: Correct CPHA/CPOL, add sampling delay/phase shift if supported, or reduce skew with buffering/re-timing so the sample point returns to the data-valid center.

Pass criteria: Setup margin ≥ X ns and hold margin ≥ X ns @ slave pins; bit-slip/CRC errors ≤ X per N frames at corners.

SPI edges look “square” on the scope but CRC spikes — check duty cycle or sample-edge placement first?

Likely cause: Duty distortion and/or edge placement shifts the sampling edge into the transition region even when the waveform amplitude looks ideal.

Quick check: Measure duty cycle at the receiver clock pin and overlay the sampling edge against the data-valid region (at receiver pins, not at the driver).

Fix: Reduce duty distortion (clock buffer/shorter distribution), adjust CPHA/sample delay, or lower SCLK so half-cycle window widens.

Pass criteria: Duty = 50% ± X% @ receiver; sample point ≥ X% away from nearest data transition; CRC error rate ≤ X over N frames.

SPI fails at max speed but works when slowed down — is it window shortage or tCO temperature drift?

Likely cause: The available sampling window (half-cycle or effective phase window) is consumed by tCO(max) spread plus skew/jitter, which often worsens at temperature corners.

Quick check: Measure tCO at the slave output pin across hot/cold points and compare worst-case tCO against the window budget at the sampling edge.

Fix: Increase window (lower SCLK or shift sample phase), reduce skew/jitter (buffer/re-time), or select a slave with tighter tCO(max) bounds for the target corner.

Pass criteria: Worst-case [tCO(max)+skew+jitter] ≤ [window − guardband] with guardband ≥ X%; errors = 0 over N frames at hot/cold and VDD corners.

UART framing errors appear occasionally with identical settings — compute baud error first or blame noisy edges?

Likely cause: The sampling point drifts out of the bit center due to total baud error (TX+RX, temp drift) and/or edge uncertainty from noise.

Quick check: Calculate worst-case ppm at temperature for both endpoints, then measure the start-bit edge timing and eye “thickness” at the receiver input (threshold definition recorded).

Fix: Tighten clock accuracy (XO/PLL bounds), enable autobaud or periodic calibration, and increase oversampling/robust sampling strategy where available.

Pass criteria: |baud_error_total| ≤ X% across corners; framing errors = 0 over N frames; sampling point remains within ±X% of bit center at worst case.

UART errors are more common on long frames — why does drift accumulate, and what is the first validation step?

Likely cause: With asynchronous sampling, a small baud mismatch causes bit-center drift that grows with bit count until the last bits lose margin.

Quick check: Capture one full frame at the receiver and mark the expected bit centers; quantify drift at the final data/stop bits relative to the ideal center.

Fix: Reduce total baud error (better timebase/calibration), increase oversampling robustness, or add periodic re-alignment opportunities (guard time/shorter burst framing).

Pass criteria: Final-bit sampling offset ≤ X% of bit time; 0 framing errors over N long frames at temperature and VDD corners.

Logic analyzer decoding looks correct but the system still fails — are thresholds/sampling definitions aligned?

Likely cause: LA thresholds and sampling assumptions differ from the real receiver, masking threshold-crossing ambiguity or sampling-edge proximity issues.

Quick check: Record LA threshold levels, sample rate, and probe at the receiver pin; cross-check with an analog scope to confirm single threshold crossing and true edge placement.

Fix: Align LA thresholds to the intended VIH/VIL convention, move probes to the worst node, and validate timing at the sampling event (not just protocol decode).

Pass criteria: Threshold definition documented; receiver-pin capture shows ≥ X ns setup/hold (or ≥ X% eye margin); system errors ≤ X over N events.

Scope-measured tR passes the spec but the system is unstable — can probe capacitance/bandwidth “fake” compliance?

Likely cause: Probe loading and bandwidth/threshold settings change the apparent edge, producing a measurement artifact that does not match the receiver’s experience.

Quick check: Repeat tR with a low-C active probe (or different probe/BW) and keep the same % definition; compare results at the same worst node.

Fix: Use lower-loading probing, record instrument settings in the evidence pack, and sign off using worst-node measurements that match the datasheet definition.

Pass criteria: Probe C ≤ X pF (or active probe used); tR variance ≤ ±X% across repeats; system errors ≤ X over N events.

The same design fails at a temperature corner in production — which timing field is most often missing from logs?

Likely cause: A corner-dependent timing term (clock accuracy drift, delay bound, threshold definition, or worst-node identity) is not recorded, blocking reproduction and guardband tuning.

Quick check: Audit one failing record for: node_id, threshold definition, temp, VDD, cable/fixture ID, sample rate, and the exact metric values used for pass/fail.

Fix: Add timing-only structured logs and bind each failure to a measurable metric (tR/tF, duty, skew, baud error, window margin) so the worst-case stack-up can be updated.

Pass criteria: Logs contain all required fields for ≥ X% of units; corner reproduction success ≥ X%; updated margin ≥ X at worst node/corner.

SCLK frequency is compliant but duty cycle is not — what is the most direct damage to the sampling window?

Likely cause: Duty distortion shrinks the intended half-cycle (or phase) so the data-valid window is narrower even at the same frequency.

Quick check: Measure duty at the receiver clock pin and compute the reduced half-cycle window; compare against the required setup/hold (plus jitter/skew) at the sampling edge.

Fix: Improve clock distribution (buffer with low duty distortion), shorten/clean the clock path, or shift sampling phase so the sample returns to the window center.

Pass criteria: Duty = 50% ± X% @ receiver; effective window ≥ X ns after subtracting jitter+skew; errors ≤ X over N frames.

Margin looks sufficient but errors still occur — suspect jitter first or skew first?

Likely cause: The budget missed the dominant uncertainty: cycle-to-cycle jitter (random edge movement) or deterministic skew (fixed arrival offset that shifts with load/topology).

Quick check: Measure a distribution: (1) clock edge jitter at receiver over many cycles, (2) arrival delay difference between boards/nodes; identify which term dominates the window loss.

Fix: If jitter dominates: improve clock source/buffering or re-time; if skew dominates: reduce path mismatch, tighten distribution, or shift sampling phase to re-center the window.

Pass criteria: pk–pk jitter ≤ X ns @ receiver; Δskew ≤ X ns across worst nodes; error rate ≤ X per N events at corners.

Data note: placeholders (X, N) are intended for project-specific limits and sample sizes. Each “Pass criteria” line is designed to be directly copied into a test plan or production script.