[Xcircuit-dev] 7400 series library
Brought to you by:
rtedwards
From: R. T. E. <ti...@st...> - 2002-01-09 17:02:46
|
Dear Stephen, Thanks for the "thought-provoking" email. I hadn't even considered the case of chips containing more than one kind of gate. One (non-optimal) solution would be to make the symbol itself contain both parts. Another solution just for the 74LS51 would be to use a 3-input AND for both parts, but name the middle connection "N/C" or something; for PCB netlists, if this pin is an isolated node, it will not be connected. However, I think that generally, the proper way to deal with it is to extend the parameter substitutions to include entire substitutions of different objects. So one instance would call "and2" and one instance would call "and3". > The other possible soloution would to allow multiple gate definitions > within the object definition. This could perhaps use the > "begingate...endgate" tags for the main object and then add > "beginvirtualgate..endvirtualgate" for each instance where the gates are > dissimilar in each IC package. Object substitution would effectively do the same thing as your proposed "beginvirtualgate..endvirtualgate". At least, I think so. The chip numbering system was written before I came up with the "libinst" idea, and I was already aware of problems with the auto-numbering, which fails to work correctly under a number of situations. The condition which you related, in which you got "U1-1-" and "U2-2-", highlights one of these problems. The auto-numbering routine doesn't understand that the two parts are supposed to be the same chip. On the whole, though, there is no way to know which instances are supposed to go with which chip. If you had two 7473 chips in a circuit, it would not be clear which instances belong together. If you're doing a netlist compare or autorouting, they should permute as necessary. Otherwise, if you know which instance belongs to which chip, you can set the numbering by hand. Regardless, the auto-numbering routine needs work. This shouldn't stop you from going ahead with the 7400-series library. > One possible soloution would be to include the "libinst" inside the "{}" of > the library object and if there is the concept of variables and scope the > variable "?" would be the same within each object definition. This would > solve #2. This would still not solve the problem of determining which instances belong to which chips, for which the auto-numbering routine either needs to be told what to do, or needs to do a better job of guessing (assuming that any autorouter or netlist comparator downstream will deal with any permutations as necessary). I'll be looking forward to a 7400-series library! If you need any help, please let me know. Regards, Tim P.S.---There's still the issue of Vdd/GND pin connections. Apparently some schematic capture systems put Vdd and GND pins on each instance. At least one of the instances per chip should have explicit connections to Vdd and GND in the schematic. A PCB netlist requires these pins, to be correct. At present, connecting multiple instances to Vdd and GND will generate redundant entries in the PCB netlist, but I can get rid of that behavior. If you can think of a better method for Vdd/GND connections, though, please let me know. |