Don Lucas - 2008-10-17

A number of commercial integrated packages have found a better way to represent this than you suggest - They break the concept of "parts" down into smaller pieces:
1. Schematic Symbol - the top level parent component. Some people prefer to keep it as graphics only with a list of pointers (names) to the remaining items in this list. The graphics can be a single instance for the entire part (homogeneous symbols) or multiple graphical depictions that go together to represent a physical part (heterogeneous symbols). My favorite feature is symbols that also have alternate graphical depictions which can then be either homogeneous or heterogeneous. The altername graphics are used for anything you want, such as traditional logic gate symbols versus Demorgan logic symbols or IEEE format logic symbols.
2. Footprint - the name of a 2D or even 3D pcb footprint (some call it a "decal"). It is created separately and referred to by name in the schematic symbol. It is typically maintained in a separate library of footprints or even stored individually as XML files and under configuration management control. You can even qualify a list of footprint names (i.e., for a resistor, you might have 0402, 0603, 0805, etc) that the user selects later, depending on the density of the board layout that is needed. The latest industry standards now support 3 different standard footprint sizes for surface mounted components, a high density version, a medium density version, and a low density version in order to achieve the desired level of manufacturability versus product form factor.
3. Part information - the part number, manufacturer's name, distributor's name, alternate qualified part numbers, etc.
4. Simulation information - the name of a Spice template stored in a special library of Spice templates, much like symbols are stored in symbol libraries. You can then support multiple types of simulation - functional simulators, device level simulators, alternate brands of simulators, etc.
5. Design file information, such as the name of a hierarchical schematic sheet or collection of sheets that represent the symbol and get expanded into a hierarchical net list later. This also includes design files such as C source code for software block diagram schematics, various kinds of hardware description languages (HDL's) such as VHDL or Verilog. See http://en.wikipedia.org/wiki/Hardware_description_language for a good introduction.
6. Pin swapping information that represents which pins are equivalent on a physical part and therefore can be swapped at pcb placement time. This is often integrated into the schematic symbol information or sometimes with the physical part information.

One way of thinking about the role of a schematic symbol in a generic design process is to view it as a vehicle for holding plug-ins with very little actually formalized about what a plug-in might do. For example all of the items above except the symbol itself could be implemented simply as a list of plug-ins, making the system extremely flexible and infinitely extendable. You could have a plug-in represented as some sort of DLL, allowing anyone to create new plug-ins to extend what the symbol and thus the design can represent. Plug-ins could be footprints, simulation models, software subroutine models, etc. A plug-in could store methods for manipulating its own data when encountered in a symbol. This could be extended to support assembly variations where you have different part numbers (such as different resistor values) for different builds of a particular design.

In this way, a symbol could be added to a design once either preconfigured with its intended plug-ins (i.e., footprints, simlation models, part numbers, etc) or user configured after it is placed. It wouldn't have to be altered or maintained in parallel design files as you suggested to accomplish all of the many tasks that modern products require and certainly all of the tasks that you mention.

Whether we have the time and user interest to develop the concept this far, I don't know, but it does interest me a great deal. Only time will tell how far along we get with this.

Best regards,

Don