Over the past couple of years we have done some minor revisions to our PCB, including
- Different component selection (resistors / caps / ...) based on availability / price (while still taking into account their original characteristics)
- Components layout on the PCB
- Trace widths / lenghts (as a result of the layout)
What we've often found is that although these changes shouldn't really impact the embedded software, we still needed to tweak our software after each of those revisions.
Some hardware revisions brought instability with them that only showed up after days / weeks / months (ex: the inability to power toggle a certain component on the board)
We needed to tweak high/low sequences, serial line timeouts
The big poblem is that these issue don't show up immediately, but sometimes take weeks/months before they start popping up, making it difficult to perform corrective action (especially if one of the issues is the failure to power toggle the modem needed to perform a firmware update).
Are there any guidelines / best practices to eliminate that risk ? (some kind of stress testing procedure / things we need to take into account while doing such revisions ?