This code, containing the bulk of the design's complexity, worked without problem. In my designs, the compilation date, configuration, and version are captured automatically and used to generate JTAG USER-id fields. Similarly, I reverse-engineered the schematic format enough to enable a small Scheme program to list and change date, revision number, and sheet order of sheets in the design. All this automation not only lets me avoid the buggy GUI programs so many vendors wrap around their programs, it also relieves my memory of the burden of remembering how to perform these tasks. But nicest of all, I don't have to stare at the screen waiting for one phase of a compilation to complete in order to click on the next.
Simulation is leveraged on measured data.
Therefore, these measurements should be documented, saved, and checked against simulation. These measurements should be rechecked when batches of boards stop working. The code so produced has been very reliable. Each new version of driver software detects and supports both boards. Antique software is sometimes worth many times its original purchase price.