John said:
Those words, "hundreds of releases of the design", give me cold
shudders. We use a military drawing control system, and any product -
hardware, software, mixed - is formally released as a set of
standalone, numbered documents with rev letters, all under a master
bill of materials, itself numbered and rev lettered. Only
manufacturing makes and ships things, and only from the formally
released files.
You just number the things by hand. In real VCS systems the whole
release contents can be tied to one configuration specification.
When the product is 10+M lines of code, asics, assps, tens of
FPGAs etc. the releases consist of quite many variables. And then
expand that to a installed base of tens of years.
The idea of casually shipping rev 2.3.04b is a nightmare.
How about customer specific releases etc.
How do you know that you'll be able to run the VCS ten years from now,
and that all the files will be intact? How do you know which customers
are running which of the hundreds of possible versions of one product?
The VCS runs in current platforms, and needs to be maintained. So VCS
must be up to date, and migrated to new systems if needed etc. It is not
some static system that is once built.
The version of the system must be unique and tracaeable to full set of
source (and tools). Getting 10+ year old tools to run might be fun tough
VCS management people, whose job is to keep it healthy and running.
More important, of the copies of your things that have ever been
shipped to customers, what fraction had one or more bugs?
The is no bug free design, if it is not trivial very small design.
Even HW designs that have been manufactured for years in volume might
have bugs that are uncovered by some third party component process
change etc. For an asic 1 bug/10000 lines of code is quite normal
bug density during its lifetime, for software the density is higer.
Each of our formal letter release packages has a README file that
notes the reason for and nature of all changes. If a bug was fixed,
it's documented there. Releasing another package is a big public deal,
and if it was because of a bug, everybody knows it. It seldom is.
When there are thousands of changes the readme does not work. Release
notes are just highlight of changes. I think we are approaching this
from different directions, I'm thinking of designs that have hundreds
of designers (hw+sw+testing etc.) you are coming from the small end.
--Kim