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
  • Part 11: Bring-Up and Link Management10
    • Reset Semantics
    • Reset Sequencing Across Interfaces
    • Presence and Hot-Plug
    • Link Training
    • Capability Negotiation
    • Enumeration and Discovery
    • Link State Machines
    • Versioning and Compatibility
    • Protocols Compared: Bring-Up and Link Management
    • Drills: Bring-Up and Link Management
  • 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 11: Bring-Up and Link Management
  1. Topics
  2. First Principles of Hardware Protocols
  3. Part 11: Bring-Up and Link Management
  4. Versioning and Compatibility

Part 11 · Bring-Up and Link Management · Principal (P)

Versioning and Compatibility

Protocols live for decades and every generation must work with the ones already installed. Reserved fields, ignore-what-you-do-not-understand rules, negotiated features and version fields: how protocols grow without breaking old devices.

On this page

    Note

    Level: Principal (P) · Answers: How do the two sides agree at start-up?

    Before this: Capability Negotiation

    A protocol team adds a feature to the next generation of their link: a new header bit meaning "this packet may be reordered". Old devices were built years ago and will be in service for years more. The first time a new device sends the bit to an old one, the old receiver, which was written to check that the bit is 0, rejects the packet as malformed. The new feature has broken every installed device.

    How does a protocol add features without breaking the devices already built to its older versions?

    The obvious answer, and why it breaks

    The obvious answer is to bump the version and require everyone to upgrade. Hardware cannot be upgraded: chips in the field keep the protocol they were built with. Any new generation has to work with every older one it might meet, and ideally old devices should keep working when they meet things newer than themselves. Compatibility has to be designed in from the first version, because it is the old devices' behaviour that decides whether new features are possible.

    The idea: plan for versions you cannot see yet

    Technique

    What it gives

    Rule it needs

    Reserved fields

    Room for future features

    Senders set them to 0; receivers ignore them (do not check them)

    Ignore what you do not understand

    Old receivers tolerate new optional content

    Unknown optional fields, message types or capabilities are skipped, not rejected

    Negotiated features

    New behaviour used only when both support it

    Advertise in training or configuration (lesson 11.5); default to off

    Version fields

    Each side knows what the other implements

    Exchanged early; each side operates at the lower version

    Capability lists

    Features added without fixed layouts

    A linked list of capability blocks each with an ID; skip unknown IDs

    The key asymmetry: backward compatibility (new devices work with old ones) is achieved by the new side, which can know about the old. Forward compatibility (old devices tolerate new ones) depends on rules the old side followed from the start: ignore reserved bits, skip unknown capabilities. If the first version got those rules wrong, later versions are stuck.

    How real protocols chose

    Protocol

    How it evolves

    PCI Express

    Each generation trains at the highest rate both ends support and falls back to older ones; new features are advertised in capability structures found by walking a linked list, and software skips IDs it does not know.

    AXI

    Later versions add optional signals with defined default values, so an interface without them connects to one that has them by tying the defaults.

    USB

    A newer device or host works at the highest speed and version both support; descriptors report the version.

    DCLink

    Training words carry speed and lanes (step 10); a version field and feature bits would extend the same exchange.

    What breaks

    The opening failure (illustrative) came from one line in the old receiver's checker: it rejected packets with any reserved bit set. The specification had said "reserved, set to 0", and the designer had checked it to be safe. The new feature had to be moved into a negotiated mode, used only after both sides advertised it, which cost a year. Specifications now say "reserved: senders set to 0, receivers ignore" explicitly.

    Why this matters

    Principal lens. Compatibility is decided in version 1. Before freezing any protocol, define how reserved fields are treated, how unknown types and capabilities are skipped, how versions and features are negotiated, and what defaults optional signals take. Then test old against new in both directions, with deliberately unknown content. The cheapest future feature is the one the first generation already knew to ignore.

    Interview

    Asked: "What is the rule for reserved bits, and why does it matter?"

    Weak answer: They must always be zero.

    Strong answer: Senders set them to zero; receivers must ignore them, not check them. That asymmetry is what lets a later version give the bits a meaning: new senders set them, old receivers still accept the packet and ignore the new meaning. A receiver that rejects nonzero reserved bits makes the bits unusable for ever, or forces the new feature behind negotiation. More generally, forward compatibility depends on old devices skipping what they don't understand, and that rule has to be in version 1.

    Follow-ups: (1) How do capability lists help? (2) Why can't new devices fix a bad rule in old ones?

    Check yourself Which side makes backward compatibility possible, and which forward compatibility?

    Backward: the new side, which knows the old protocol. Forward: the old side, by having followed ignore-what-you-do-not-understand rules from the start.

    Check yourself Why should a new feature default to off until both sides advertise it?

    An old partner cannot know about it; using it only after both advertise it guarantees nobody receives behaviour it does not understand.

    Key takeaways

    • Installed hardware cannot be upgraded; every generation must work with older ones.

    • Reserved fields, ignore-unknown rules, negotiated features, version fields and capability lists let protocols grow.

    • Forward compatibility is decided in version 1: senders set reserved to 0, receivers ignore it.

    Keep going

    Next: Protocols Compared: Bring-Up and Link Management. Part 11 side by side: how real protocols reset, train, negotiate and enumerate.

    Related topics

    • Part 11 overview: Bring-Up and Link Management

    Previous

    169 / 234

    Next: Protocols Compared: Bring-Up and Link Management

    Up next

    Up nextProtocols Compared: Bring-Up and Link Management

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Reset Semantics
    • Reset Sequencing Across Interfaces
    • Presence and Hot-Plug