I'm going to say at the outset that I misread Mr. Leopold's message. He wants to create fanouts as part of the footprint. He had been informed by others as to how to make the "free" primitives in the fanout assume the correct net, i.e., run the Update Free Primitives from Component Pads command, it is under the Netlist Manager in 99SE, I don't know where it is in DXP. In spite of the name, this command also updates non-pad primitives that are part of a footprint, so it serves in this case.

There is another way, which is to create a fanout pattern, it might even be a footprint of its own. If it is a footprint, you could place it on a PCB and explode it into free primitives (In 99SE, Tools/Convert/Explode Component to Free Primitives). It would save some trouble if the primitives are preselected and if there is a reference pad -- it might be quite small -- that is located where one of the component pads will be, making it easy to snap to the pad location, assuming electrical snap is on, which it normally should be. You can then copy and paste the selected primitives onto the component footprints. From what is written below, you will understand that these primitives will now pick up the correct net as they are copied. This is superior to making the pattern part of the footprint because it will be editable without having to unlock the component, something which is always a tad dangerous and usually better avoided.

Once all the track and vias that make up the fanouts are selected, you can then copy and paste them over your original component array. You will end up with the fanouts being free primitives.

(On the other hand, it will probably be less work if, assuming that the need to edit the fanouts is unusual, you just leave the fanout as part of the footprint. It is only if you want to selectively delete fanout track and vias or move them that having them be free primitives is better, but this would be quite common.)

And here is my original response:

At 08:53 AM 9/10/2003, Leopold, Mark wrote:
Is there any way to setup the footprint or the schematic to PCB process so that the pad-trace-via combination are all added to the appropriate net?

Others have answered with information about how to update tracks and vias with no net assigned to the net from a connected component pad. However, to me, while this is useful to know, it would be even more useful to understand how Protel assigns nets to tracks and pads *before* running that command.

Normally, to design a new PCB, you will do an initial net list load (or Update PCB). I don't know specifics for DXP, it's been a long time since I looked at it, but in 99SE Protel will throw up all the components with assigned and available footprints somewhere in the workspace. You can use autoplace functions to assist in bringing the components where you want them to be, but I'll leave that aside; this is often done manually as well and the autoplace functions can be useful, particularly with rooms, where there is a high component count.

So if I'm going to design such a board, I have all the footprints placed, and the rat's nest of connection lines are displayed, assuming that they are enabled in Display settings or the individual net attributes (that's something nice to know as well, you can selectively hide from display, for example, all GND and VCC connection lines, making the display much easier to understand)

Now, I have a capacitor that I want to connect to the VCC and GND planes. If I place a via in free space, Protel has no way of knowing what net I want to connect it to, so it is not given a net attribute -- except for No Net.
Then, if I try to route from the via to the pad, the track, likewise, will pick up the net attribute from the via, in this case it will also be No Net. This trace is going to generate an error message if it is allowed to infringe upon a pad with an assigned net like GND.

In fact, the only way you were able to route a trace from the via to the pad, if this is what you did, was to turn off Avoid Obstacle under Tools/Preferences/Interactive Routing. This is generally not recommended. Otherwise, you simply can't place the trace, a trace with no net will not route to a pad with an assigned net.

There are a number of ways to drive Protel to avoid this problem. Here is an easy one:

Place a via in contact with the pad you want to route to. If the via is placed in contact with the pad, it will pick up the pad's net. Then, when you place a track, either from the pad or from the via, the track will pick up the net, and will route between the via and the track.

Other ways to do this: Place a pile of vias, select them, and edit them globally to, say, GND. You can then put them where you want and route to GND pads. Or you can place them where you want, but have the via set for Selection as it is placed. You can then globally edit a series of these vias at once.

(When you are placing a primitive, you will first execute the Place command. If you were using keystrokes in Protel 99SE, you might us P-V to put a via floating on the cursor. Then you hit the Tab key which should pop up a dialog in which you can select the selection attribute. Each via you then place will be selected and thus subject to global editing keyed on selection. I'm not describing how to do a global edit because this is one area where DXP is pretty different from 99SE, though it may not be as different as I think....)

It might seem that you could edit the via in the place dialog to the GND net, but Protel does not retain this for the placement of the next via, and for good reasons....

In general, it is good to know how Protel selects the default net for a primitive when it is placed. If a primitive is placed in electrical contact with an existing primitive that has an assigned net, the new primitive will pick up the net of the existing primitive. If a primitive creates a short, it may either not be placed at all or it may be placed with No Net as the net attribute. Strings do not have a net attribute but they are treated as if they were No Net, unconditionally it seems, but I haven't checked to see what Update does to strings.

This net assignment process also works when a block of primitives -- other than component pads -- is copied. If you took a PCB, copied all the track and vias to a workspace, and then deleted them all, and then you selected and copied all that track and those vias into place, it would end up with the same net assignments as it originally had, assuming that the pads had net assignments and the track was properly connected to begin with.

Once you realize this, a whole host of techniques become possible.

Another possible solution that I toyed with was to have an elongated pad with the hole offset, but I can't find any way to have the hole placed anywhere but in the middle of the pad. Is there a way to place the hole offset from the middle of the pad?

Well, there is a way, but I don't think this is what you want to do. Generally you don't want holes in surface mount pads, they do nasty things to solder fillets. But if you need an offset pad, you must construct it from primitives -- in P99SE, has this changed in DXP?, we've certainly asked for it, but I understand that it does create a lot of complications. You would place in the footprint one pad with a hole and then you would place a fill or track or other primitives to create the additional pad to make it offset. These additional primitive, in 99SE, do not automatically pick up the pad's net when initially placed, so it will be necessary to run the Update command described by others to automatically give them the correct net.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* To post a message: mailto:[EMAIL PROTECTED]
* To leave this list visit:
* http://www.techservinc.com/protelusers/leave.html
* Contact the list manager:
* Forum Guidelines Rules:
* http://www.techservinc.com/protelusers/forumrules.html
* Browse or Search previous postings:
* http://www.mail-archive.com/[EMAIL PROTECTED]
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Reply via email to