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

  • How to Use This Course
  • Reading Paths
  • Concept Map
  • How to Read the Diagrams
  • Part 0: What Is a Protocol?10
  • Part 1: Timing and Clocking11
  • Part 2: Encoding and Framing12
  • Part 3: Handshakes13
  • Part 4: Flow Control17
  • Part 5: Transactions19
  • Part 6: Concurrency and Performance17
  • Part 7: Ordering13
  • Part 8: Sharing and Arbitration12
  • Part 9: Deadlock and Liveness13
  • Part 10: Reliability and Recovery20
    • Error Models
    • Parity
    • Hamming Distance
    • CRC
    • ECC and SECDED
    • Forward Error Correction
    • Error Responses
    • Poison and Containment
    • ACK and NAK
    • Sequence Numbers
    • Replay Buffers
    • Go-Back-N or Selective Repeat
    • Idempotency and Safe Replay
    • Link-Level or End-to-End Protection
    • Error Classes and Reporting
    • Recovery and Degradation
    • Interface Protection and Safety
    • The Reliability Budget
    • Protocols Compared: Reliability and Recovery
    • Drills: Reliability and Recovery
  • Part 11: Bring-Up and Link Management10
  • Part 12: Power8
  • Part 13: Shared State and Coherence9
  • Part 14: Security and Isolation7
  • Part 15: Specifying and Verifying11
  • Part 16: Protocols Dissected17
  • Part 17: Capstones5
  • Part 18: Interview Preparation6
Loading lesson

‹Part 10: Reliability and Recovery
  1. Topics
  2. First Principles of Hardware Protocols
  3. Part 10: Reliability and Recovery
  4. The Reliability Budget

Part 10 · Reliability and Recovery · Principal (P)

The Reliability Budget

Turning a bit error rate into the numbers a system needs: how often packets are replayed, what replay costs in bandwidth and latency, and how often an error slips through undetected. A worked budget and a calculator.

On this page

    Note

    Level: Principal (P) · Answers: What if bits go wrong?

    Before this: CRC, Go-Back-N or Selective Repeat

    A product requirement says: "the interconnect must not corrupt data more than once in the life of the fleet". The link datasheet says: "BER 1e-12". Between those two sentences sit packet sizes, CRC widths, replay costs, link counts and years of operation. A reliability budget connects them with a few lines of arithmetic, and shows which number actually matters.

    How do you get from a bit error rate to replay rates, latency impact and undetected errors?

    The obvious answer, and why it breaks

    The obvious reading of "BER 1e-12" is "errors are negligible". For performance that is usually true. For data integrity it is the wrong question: at 32 Gb/s, 1e-12 is an error every half-minute, every link, all day, for years. What matters is how many of those errors could get past the checks, multiplied across every link in every product over its lifetime. Different questions use the same BER very differently.

    The idea: a chain of rates

    errors/s=rate×BER,Ppacket​≈bits per packet×BER,undetected/s≈bad packets/s×Pmiss​
    • Replay rate ≈ packets per second × packet error probability: sets the bandwidth and latency cost of recovery.

    • Undetected rate ≈ bad packets per second × the chance the check misses one (at most about 2⁻³² for a random error pattern under a 32-bit CRC; much lower for single errors and short bursts, which it always catches).

    • Fleet total = undetected rate per link × links per product × products × years.

    Build it: a budget calculator

    The calculator takes a 32 Gb/s link at BER 1e-12, 280-byte packets (256 bytes of payload), a 500 ns replay round trip and a 32-bit CRC, and works through the chain.

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    """A reliability budget for one link (PCIe-like, illustrative packet sizes).
    
    From a raw bit error rate to how often packets are replayed, what replay costs in
    bandwidth and latency, and how often an error slips past the CRC undetected.
    Assumes independent bit errors (real links also see bursts) and a 32-bit CRC that
    lets an errored packet through with probability 2^-32 (pessimistic).
    """
    RATE = 32e9          # bits per second on the link
    BER = 1e-12          # raw bit error rate
    PKT = 280 * 8        # bits per packet: 256-byte payload plus 24 bytes of overhead
    RTT_NS = 500         # replay round trip, ns
    CRC_BITS = 32
    
    errors_per_s = RATE * BER
    pkt_error = 1 - (1 - BER) ** PKT                    # probability a packet has at least one error
    pkts_per_s = RATE / PKT
    replays_per_s = pkts_per_s * pkt_error
    lost_fraction = replays_per_s * RTT_NS * 1e-9          # each replay resends one round trip of link time
    undetected_per_s = replays_per_s * 2 ** -CRC_BITS     # pessimistic: CRC-32 catches all single errors and short bursts
    years = 1 / undetected_per_s / (3600 * 24 * 365)
    
    print(f"bit errors per second:        {errors_per_s:.3f}  (one every {1 / errors_per_s:.0f} s)")
    print(f"packet error probability:     {pkt_error:.2e}")
    print(f"replays per second:           {replays_per_s:.3f}")
    print(f"bandwidth lost to go-back-N:  {lost_fraction * 100:.2e} %  (a round trip of packets per error)")
    print(f"added latency per replay:     about {RTT_NS} ns, about once every {1 / replays_per_s:.0f} s")
    print(f"undetected errors (CRC-32):   one every {years:,.0f} years per link")
    assert abs(errors_per_s - 0.032) < 1e-9 and years > 1000
    print("PASS: at BER 1e-12 replay is rare and cheap; the undetected rate is what the CRC width must make negligible")

    It prints:

    Diagram
    bit errors per second:        0.032  (one every 31 s)
    packet error probability:     2.24e-09
    replays per second:           0.032
    bandwidth lost to go-back-N:  1.60e-06 %  (a round trip of packets per error)
    added latency per replay:     about 500 ns, about once every 31 s
    undetected errors (CRC-32):   one every 4,256 years per link
    PASS: at BER 1e-12 replay is rare and cheap; the undetected rate is what the CRC width must make negligible

    Performance is a non-issue: one replay every half-minute, costing a few hundred nanoseconds. Integrity is where the budget is spent: with a pessimistic estimate, one undetected error per link every few thousand years. That sounds safe until it is multiplied by the fleet.

    Worked numbers: the fleet

    Quantity

    Value

    Undetected errors per link (pessimistic)

    1 per ~4,256 years

    Links per server

    20

    Servers in the fleet

    100,000

    Link-years per year

    2,000,000

    Undetected errors per year across the fleet

    ~470

    Hundreds of silent corruptions a year across the fleet, under a pessimistic model, from a link whose datasheet number sounded negligible. That is why fast links use 32-bit CRCs at minimum, add end-to-end checks (lesson 10.14), and why the realistic undetected rate (much lower, since CRC-32 catches every single-bit error and every burst up to 32 bits) is worth computing properly for the actual error statistics.

    What breaks

    A design (illustrative) chose a 16-bit CRC for a high-speed internal link because "BER is 1e-12, errors are negligible". The per-link undetected rate looked tiny; across a large fleet it predicted silent corruptions every few days. The budget, done before tape-out, would have pointed to a 32-bit CRC for a few extra bits per packet.

    Why this matters

    Principal lens. Every link in a product should have a reliability budget with three lines: replay rate and its bandwidth and latency cost, undetected error rate per link, and that rate multiplied across the fleet and its lifetime, compared with a stated requirement. Use the realistic error statistics, including bursts. The datasheet BER is an input to the budget, never its conclusion.

    Interview

    Asked: "BER 1e-12 at 32 Gb/s: how often do you replay?"

    Weak answer: Almost never.

    Strong answer: 32e9 × 1e-12 is 0.032 bit errors per second, about one every 31 seconds, and each one corrupts a packet, so about one replay every half-minute per link. With a 500 ns round trip that costs around 1.6e-6 percent of bandwidth: negligible. The more important number is undetected errors: with a 32-bit CRC, even pessimistically 2⁻³² of bad packets slip through, about once per four thousand years per link, which across a fleet of millions of links is hundreds a year. That's why the CRC width and end-to-end checks matter more than replay cost.

    Follow-ups: (1) How would the answer change with a 16-bit CRC? (2) Why is 2^-32 pessimistic for a CRC-32?

    Check yourself A 64 Gb/s link has BER 1e-12. About how often does it see a bit error?

    64e9 × 1e-12 = 0.064 per second: about one every 16 seconds.

    Check yourself Why multiply the per-link undetected rate by the fleet size?

    The requirement is usually about the product population's lifetime; a rate that is negligible for one link can add up to frequent events across many.

    Key takeaways

    • A reliability budget chains rates: errors/s = rate × BER, then replay rate, then undetected rate.

    • At BER 1e-12 replay costs almost nothing; the undetected-error rate, multiplied across the fleet, is what sizes the CRC.

    • Budget every link against a stated requirement, using realistic error statistics.

    Keep going

    Next: Protocols Compared: Reliability and Recovery. How a dozen protocols protect against errors and recover from them, side by side.

    Related topics

    • Part 10 overview: Reliability and Recovery

    Previous

    159 / 234

    Next: Protocols Compared: Reliability and Recovery

    Up next

    Up nextProtocols Compared: Reliability and Recovery

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Error Models
    • Parity
    • Hamming Distance