pcb-rnd knowledge pool
Internal connections in footprints and subcircuits
intconn by Tibor 'Igor2' Palinkas on 2013-09-01 | Tags: howto, intconn, internal, connection, footprint, subcircuit, menufile |
Abstract: n/a
There are parts with internal connections (e.g. pin 2 and 4 of a SO8 package are internally connected). gEDA/PCB) can not handle this, leaving the following options:
- connect both pins to the net from the schematics - this works if all the internally connected pins are required to connect to copper (common with GND or power pins) but is very inconvenient for signal pins where only one of them needs to be connected
- back-annotate which pin is connected - there's no easy back annotation
- one pin connected, the other is closer to the next target; PCB doesn't understand that they are already connected internally; normally one shouldn't use the internal connection of a component instead of copper; except for the common practice to use 0 ohm SMD resistors for jumping wires
The patch introduces a new pin flag intconn(g) which marks the pin to have internal connections in group g . If there are multiple pins using the same g value within a single element, they are internally connected. In other words, g is a group (or net name) within the element and pins can join to one of the numbered groups (or internal nets). The value of g shall be between 1 and 255, 0 means no internal connection (equivalent to the case when intconn(0) is omitted).
When pin numbers are displayed (key 'd'), internal connection groups are written in square brackets, e.g. "2 [9]" means "pin 2, internally connected to group 9".
Combined with the [ nonetlist ] patch, this solves the "0-ohm 1206 jumper" problem: the element should be marked as nonetlist, with both pins set intconn(1) - this will result in a 2 pad element, pads internally connected, that can be part of any one network without causing short.
Example
The first image depicts crossing traces, a common problem encountered when rats nesting a new layout from a netlist. One method to resolve such issues is to use a zero ohm jumper resistor that allows one signal trace to 'jump' across another.The second image shows the layout routing the nonconflicting rats and a open unrouted point where the rat would require one trace to cross another.
In the third image a 1206 SMD footprint for a 0 Ohm 1206 resistor called J1 is placed with an intconn between the two pads which resolves the final rat line.
lihata example and attribute howto
As demonstrated in a manipulated dip(8) footprint, having an internal conenction between two pins of a subcircuit can be done by adding the same "intconn=42" attribute to the affected terminals. This can be done by using the property editor over the terminal, prior to converting to subcircuit or in the subcircuit editor (e.g. opening the subcircuit file directly).
Press 'f' over pin 1 or pin 3, and both pin 1 and pin 3 will be highlighted: the internal connection makes an invisible connection between them. No other pins are affected in this example.
The value 42 is an arbitrary integer. Multiple groups of pins can be formed using different integers.
save/load and compatibility with gEDA/PCB
This patch introduces a new pin flag. In the following example pin 2 and 4 are connected internally as group 9, while pin 3 does not have any internal connections:
Pin[40000 60000 6000 3000 6600 2800 "2" "2" "square,intconn(9)"] Pin[40000 50000 6000 3000 6600 2800 "3" "3" "square"] Pin[40000 40000 6000 3000 6600 2800 "4" "4" "square,intconn(9)"]gEDA/PCB will load the design ignoring internal connections - this may introduce new rats.
gEDA/PCB doesn't save intconn() and elements are embedded in the file - once the design is loaded and saved with gEDA/PCB, internal connection info is lost.
save/load and compatibility with other EDA software
No other file format supports this feature.
see also
This feature is used together with the nonetlist feature for jumper subcircuits not drawn on the schematics (e.g. 0 ohm resistors).
Complementer features is intnoconn , that breaks an existing copper connection within a subcircuit.