Power & Ground Optimization (PGO) is a read-write action that optimizes the sizes of features in the power & ground layer in relation to drills and to each other. Optimization of features is performed according to parameters provided by the user.
The PGO action works only on negative power and ground layers. It enables the enlargement of clearances, thermals and donuts (NFPs). NFPs (Non-Functional Pads) that are represented as positive circles with inner negative circles, will be transformed to Genesis 2000 standard donuts that are sized accordingly. Square symbols (as clearances), square donuts or thermals are not supported by PGO. Drill markers (clearances that are smaller than the drill, and have the same center) will not be modified or reported.
To maintain layer connectivity, a minimal width of connector is defined using the ERF variable min_connector. This minimal connector assures that two drills that were connected with a connection path of at least the value of min_connector will remain connected with that minimal path width, in order to maintain the connectivity of the layer and the net-list of the board. If two drills are connected with a path width less than min_connector, the algorithm assumes they are unconnected and they may get disconnected during optimization. To avoid this, it is recommended to set min_connector to the smallest permissible value, and verify that no connectors are narrower than this value.
If you wish to avoid using the min_connector option, set its value to 0 (zero); the optimization process will assume that areas separated by clearances are unconnected, and that areas connected with the smallest connectors are considered connected.
Optimized pads must have precisely the same centers as the drills. Pads that do not have the same center will be reported as unregistered.
It is expected, however, that a small number of features, that are close to, or touching, the rout clearance or plane separators, will not be optimized even though this will not cause violations.
The guiding principle of the Enlargement Mechanism is to identify pads for optimization and attempt to enlarge them to the optimal value specified. If a violation occurs when attempting this, the algorithm retracts and enlarges only to the minimal value. If there still is a violation, it does not act at all.
The enlargement mechanism proceeds in the following stages:
1. Identifies pads requiring optimization (checks
if pads are smaller than the optimal specified value).
2. Enlarges features (annular ring or spacing) to
optimal value.
3. If a violation/s is created, optimal enlargement
will be undone and the feature enlarged to minimal value only.
4. If a violation/s is still created, it does not enlarge at all.
The following figure depicts this process:
Note: The 'Power & Ground Optimization'
action only enlarges pads and does not shrink them. A pad will not be shrunk if
it is larger than the optimal value.
The following are considered violations that will abort the enlargement process:
*
When enlarging a pad causes it to encroach (break) into the inner
ring of a another thermal or a donut. Or, conversely, when the inner ring of an
enlarged thermal or a donut, is itself encroached (broken) by some other
feature because of the enlargement.
*
When the enlargement decreases the width of a tie (in percentage
terms) to less than the
pp_min_ties parameter (specifying the minimal ties percentage required to
remain with copper).
*
A difficult to detect violation such as the disconnection of two
drills that are supposed to be electrically connected (drills with thermal pads
around them or with no pads at all). The difficulty of this check lies in the
fact that we need a minimal connector width to ensure the connection is wide
enough. If two shapes are closer than the min_connector ERF variable, they will considered touching.
Enlarging thermals and donuts sometimes requires the enlargement of their air gaps/NFP-spacing. If a thermal/donut needs to be enlarged together with its the air-gap/NFP-spacing, the mechanism operates as follows:
* The annular ring and the
air-gap/NFP-spacing are enlarged to the optimal.
* Where violations occur,
the mechanism will attempt to enlarge to the optimal size.
* Where this fails, it
will enlarge the AR to the minimal value, together with the air-gap/spacing.
* When this fails, it will
try to enlarge only the AR to the minimum.
* If not, it will try to
enlarge only the air-gap/spacing.
The figure below depicts this logic in schematic form:
When enlarging NFPs represented as positive rings containing negative inner rings, they will be changed to Genesis 2000 standard donuts.
When running PGO globally, and where a rout clearance does not exist, the PGO will try to create a temporary one.
At first, the action will try to create it using the lines describing the rout (when the ERF variable use_rout = Yes, and only when one rout layer runs through the power & ground layer).
If the rout layer is not acceptable for creating the rout clearance, or when the ERF variable use_rout = No, the action will create a rout clearance out of the profile of the board.
If none exist, the action will continue the process, ignoring the lack of a rout clearance. In case the action did create a rout clearance, it will be removed at the end of the run.
A small number of shapes that are close to plane separators might not be optimized properly.
Considering the fact that a local run can isolate drills inside the locally defined area from drills outside it, a local run will act upon the inner drills/features and ignore the others. Therefore, it is recommended to use PGO in the Global mode only.
Pads on the Power & Ground layer that need to be modified
will be reported according to the modification performed. If they were modified
according to the optimal value they will be reported as modified. If they were
modified by the minimal value - they will be reported as partially modified.
Those that were not modified will be reported as such. Beside these categories
there is a category for NPTH drills that have thermals or donuts pads around
them, and a category for pads that were not recognized as a clearance, thermal,
donut (or negative over positive NFP).
The following attributes are produced once for each layer and once as a summary of all the layers together
<layer_name>_<category_name>
= number
where layer_name is the
layer this attribute belongs to.
category_name is the name of the category
measurement.
number is the number of times this measurement
occurs.
For example:
pg3_undefined_shape =
4
means that in layer pg3 there are 4 shapes that are drilled and their shapes are not supported by the action.