Silicon validation finds three DCRouter bugs in the first month. In one, the router can fall asleep with an output locked if a source pauses mid-packet. In another, writing ERR_CNT0 clears all four error counters. In the third, a disabled port still accepts traffic. All three are real; none needs the same response. One may need a mask change, one a line in the driver, one a sentence in a document.
How do you decide whether to respin, work around, or document?
The obvious instincts are "fix everything" (a new mask set costs months and a great deal of money, and introduces its own risk) and "work around everything in software" (some bugs cannot be avoided by software, and some workarounds cost customers performance or features). The decision is a trade-off, made bug by bug, with the cost of each option written down.
Response | When it fits | Cost and risk |
|---|---|---|
Full respin (new mask set) | Serious bugs with no acceptable workaround; many bugs batched together | Months; high cost; new silicon must be validated again |
Metal-layer change (ECO) | Fixes that spare gates or simple rewiring can make | Weeks; lower cost; limited to what spare cells allow |
Software or firmware workaround | The bug can be avoided by a sequence, a delay, a setting or a retry | Cheap and fast; may cost performance; every user's software must apply it |
Configuration restriction | Avoid a mode or feature that triggers the bug | Cheap; removes capability |
Erratum only | Rare, low impact, or outside normal use | Cheapest; customers must read and accept it |
Impact: data corruption, hang, security exposure, or cosmetic? Silent or detected?
Exposure: how many customers and use cases meet it, and how often?
Workaround: does one exist, is it complete, what does it cost, can every user apply it?
Fix cost and timing: respin or ECO cost, schedule, and the validation it needs.
Batching: if a respin is needed anyway, which other bugs ride along?
Bug | Impact | Workaround | Decision |
|---|---|---|---|
Sleeps with an output locked (BUG_20's class) | Packets corrupted after idle gaps mid-packet; silent | Disable low power (lp_en = 0), costing idle power | Workaround now (lp_en off in the driver); metal fix in the next stepping |
ERR_CNT0 write clears all four (BUG_19's class) | Error statistics lost; no data corruption | Driver reads all four counters before clearing any | Driver workaround plus erratum; no hardware fix |
Disabled port still accepts traffic (BUG_23's class) | Traffic from a port meant to be off; possible security concern if ports isolate tenants | None complete in software if the sender is untrusted | Fix in the next stepping; erratum and guidance for affected configurations until then |
Practice | Purpose |
|---|---|
An errata review board with design, validation, software and business | Decisions balance technical and commercial costs |
Published errata documents per silicon stepping | Customers know the limitations and workarounds |
Workarounds implemented in the reference software | Customers get them by default |
Bugs batched into steppings | One respin fixes many issues |
A team (illustrative) documented a cache-coherence bug as an erratum with a software workaround: flush a buffer before a particular DMA sequence. One major customer's operating system did not apply the workaround in one rarely used path, and field data corruption followed. A workaround is only as good as the guarantee that every user's software applies it; for silent data corruption that guarantee is rarely good enough.
The counter bug loses statistics and can be avoided completely by the driver's own sequence; the port bug can be triggered by an untrusted sender, which software on the receiving side cannot prevent.
Every user's software must apply it in every path; any path that misses it exposes the bug, and the workaround may cost performance or features.
Silicon bugs get a respin, a metal fix, a software workaround, a configuration restriction or an erratum.
Decide on impact, exposure, workaround quality and fix cost, bug by bug.
Prefer hardware fixes for silent corruption and security; never treat errata as free.