Showing posts with label PCB Filters. Show all posts
Showing posts with label PCB Filters. Show all posts

Saturday, October 14, 2023

Release Checks

Backup Project :

Use Project > Project Packager to Create a Backup First ! 
Or Commit the if you are using Version Control.

Schematic: 

Run a Tools > Update From Libraries (for the whole design)

Make sure Schematic and PCB are in Sync
Project > Validate > Update PCB

Project > Validate > Update PCB
Review the ECO list, it will list all changes
Review BOM for Fitted / Not Fitted Parts and Variant Part Numbers.

PCB:

Review all required electrical and mechanical design constraints.
Review return paths, look for signal traces crossing moats in GND pours.
Review all project outputs for Fabrication and Assembly.
Review Solder mask, Solder Paste and Silkscreen. Fix as needed.

Check Board Stackup for Proper Internal Layer Naming.
Check Board Fiducials, Markings PCB and PCA numbers.
Check Position of the Database Origin.
Check Fab Dwg - Notes, Dimensions, Drill Table, Stackup and Impedance Table.
Check Assembly Dwg - Notes and Dimensions.
Check for Antennae Nets (Vias and Tracks).
Check for Via Stubs if Applicable
Check for Return Path Vias (use DRC Checks)
Check for Components and Pads on Mechanical Layers.
Check for No-Net Copper (Vias, Track, Arc, Fills, Regions, etc. . . 

Execute Selection Filters and Check the Properties Panel for Selected Objects.

Note: All Fixes Should be Pushed to the Footprint Library.

Select Pads with No Paste Enabled 

Pads - Select  Pads with NO Solder Paste
(ObjectKind = 'Pad') And (PasteMaskEnabled <> 'True') And IsSMTPin

The selected PADs may Include Thermal Paddles with Windowed Paste.
The selected PADs may Include Fiducials, Fiducials should not have Paste.

Suggested solution for Windowed Paste and Fiducials is Paste Enabled with -100% Expansion.

Nothing should be selected after executing the PCB Filters shown below !

Tip: Zoom Out (Short Cut Keys VF) before executing each Filter.

Components - Select Components that are Not on Top and Bottom Layers
(ObjectKind = 'Component') and not OnOutside

Polarity Text Dots - Select Text Strings with Zero Height
(ObjectKind = 'Text') And (AsMM(TextHeight) < 0.01)

NPTH - Select NPTH Pads with Plated Enabled to Find Mistakes
((HoleDiameter >= PadXSize_AllLayers ) OR (HoleDiameter >= PadYSize_AllLayers)) And (PadIsPlated = 'True')  

Pads - Select Thru-Hole Pads that have Paste In Pin for Review 
(ObjectKind = 'Pad') and IsThruPin And (PasteMaskEnabled <> 'False') 

Pads - Select Pads with Excess Solder Paste for Review
IsSMTPin And (PasteMaskExpansionMode = 'Manual') And (AsMM(PasteMaskExpansion) > 0)

Tracks - Select Tracks with Exposed Copper for Review
(ObjectKind = 'Track') And (SolderMaskExpansionMode = 'Manual') And (AsMils(PasteMaskExpansion) = 0) and OnOutside

VIAs - Select Pads that are Not using Rule Based Soldermask Expansion
(ObjectKind = 'Via') And (SolderMaskExpansionMode <> 'From Rule')
(ObjectKind = 'Via') And (IPC4761ViaType <> 'None')

Find Stacked uVias
IsStackedVia

Regions - Select Free Regions with Exposed Copper for Review
(ObjectKind = 'Region') And (SolderMaskExpansionMode <> 'None') and OnOutside and Not InComponent('*') And (IsCutoutRegion = 'False')

Regions - Select Regions with 0 size Area.  These should be deleted.
(ObjectKind = 'Region') AND (Area='0 sq.inch')

Review selected Pad after executing the PCB Filters shown below !

Pads - Select Pads that are Not using Rule Based Soldermask Expansion
(ObjectKind = 'Pad') And (SolderMaskExpansionMode <> 'From Rule')

Paste in Pin (PIP) - ThuHole Pads with Solder Paste

IsThruPin And (PasteMaskEnabled = 'True')
Properties Panel > Select Pad Stack > Simple > Solder Paste > Enabled 

or

IsThruPin And (PasteMaskEnabled = 'False')
Properties Panel > Select Pad Stack > Simple > Solder Paste > Not Enabled 

Note: Thermal Pads and region may need to use Manual Expansion.

To Fix a Pads in a PCBDoc Select Components > Unlock Primitives

After executing a Filter use Find Similar and Properties Panel to make changes.

Solder Paste and Solder Mask - Examples for Pads:

Properties Panel > Select Pad Stack > Simple > Solder Paste > Enabled and Manual 
Properties Panel > Select Pad Stack > Simple > Solder Mask> Rule Expansion

Paste Mask and Solder Mask for Free Regions and Fills in PCBDoc:

Properties Panel > Select Pad Stack > Simple > Paste Shape > NOT Enabled

To Find Fills and Regions on Paste Layers (i.e. Thermal Paddles)

((ObjectKind = 'Region') And (Layer = 'TopPaste')) or ((ObjectKind = 'Fill') And (Layer = 'TopPaste')) or ((ObjectKind = 'Region') And (Layer = 'BottomPaste')) or ((ObjectKind = 'Fill') And (Layer = 'BottomPaste'))


Rememeber !  Select Components > Lock Primitives when done.

Useful Components and Designators Filters

Components - Select All Components Except Caps and Resistors
(ObjectKind = 'Component') And (Not(Name Like 'C*')) And (Not(Name Like 'R*'))

Components - Select All Components Except Caps, Resistors and Inductors
(ObjectKind = 'Component') And Not(Name Like 'C*') And Not(Name Like 'R*') And Not(Name Like 'L*')

Components - Select All Except Caps, Inductors, Resistors & Fiducials
(ObjectKind = 'Component') And Not(Name Like 'C*') And Not(Name Like 'R*') And Not(Name Like 'L*') And Not(Name Like 'FD*') And Not(Name Like 'FID*')

Components - Select Parts with Designators Like R* or C*
(ObjectKind = 'Component') And (Not(Name Like 'C*')) And (Not(Name Like 'R*'))

Designators - Select Designators with Silkscreen Violations
(ObjectKind = 'Text') And (StringType = 'Designator') And (Layer = 'TopOverlay') and HasViolations



Stackup Folder - readme.txt file

Do not delete this file.
Refer to the Stackup in the Fab notes
If available a copy of an approved fabricator stackup may be placed in this folder.

That's it !

Bug - Zero Height Text

Altium Designer Version AD23.9.2 

Altium Bug Crunch #22010

Zero Height Text strings can be created and displayed in a PCB on any layer.

Note these zero height strings will NOT be generated in the Gerber outputs.

Zero Height Silkscreen Polarity Dots will not be generated in the Gerber data.


Related Points of Interest.

The zero height strings will be displayed in Draftsman


The zero height strings will be displayed in 3D PDF files.


The zero height strings will NOT be displayed in the Gerber data.


To Find and Fix all Zero Height Text Strings.

PCB Filter > (ObjectKind = 'Text') And (AsMM(TextHeight) = 0)

In the Properties Panel set the Text.Height to a value greater than zero.  

Example Silkscreen Text.Height  = 0.01mm






















That's it !

Friday, January 27, 2023

PCB Filter - Find Traces with Exposed Copper on Outer Layers

((ObjectKind = 'Track') or (ObjectKind = 'Arc')) And (SolderMaskExpansionMode = 'Manual') and OnOutside

That's it !

Friday, May 1, 2020

Get a Room !


Rooms can be combined with Filters to Copy and Paste selected primitives. 

Example:

click on image to view
























(WithinRoom('CPU') And OnBottom) And (InPolygon Or IsTrack) And InAnyNet



Example 2: Vias and Copper Features On Top Layer

(WithinRoom('CPU') And IsVia) OR (OnTopLayer And NOT InAnyComponent AND WithinRoom('CPU'))

That's it !

Sunday, April 13, 2014

Reuse Tracks and Vias

Bill Smock's PCB Filter Tip

Click on the link above to visit Bill's blog.

This one of my favorite PCB Filters. This filter simplifies reuse of existing tracks and vias.


Steps:


Select a group of components with the traces and vias.


Enter the next line in to the PCB Filter Panel:


Not( (ObjectKind = 'Component')) And IsSelected


In the Filter Options: 

Object passing the filter check the "Select" box. 


and


Objects not passing the filter check the "Deselect" and choose "Normal" in the drop down box.


This will deselect the components and leave all of the other primitives selected so they can be copied without copying the components to be used on another group of parts.


Bill, Thank you for sharing. 


When I have more time, I'll try to Script this Filter and then assign it to a Hot Key.


Related Links:

Sunday, August 11, 2013

Design Technology Notes - Smallest Features

Fab drawings often include design technology notes.  The technology notes are used to identify the most advanced and challenging features within the design.

Typical Design Technology Notes include:

Minimum Trace Width.
Minimum Trace to Trace spacing.
Minimum Via Drill and Pad Size.

How would we find these minimum features in Altium ?

We can use a combination of 'Find Similar  > 'PCB Filter' and 'PCB List' to find and identify the minimum size design features.

For example to find the smallest Via Pad size:

Start by selecting any small via in your design and use Find Similar.

click on image to to view




















As shown above select 'Same' for Via Diameter.  Note that the Create Expression and Run Inspector options are checked.























Shown at bottom of the PCB Inspector panel are the number of Vias found that matched the search criteria.

Nice, however recall what really want to know is what is the smallest Via pad size used in the design. Using Find Similar was a great way to get started and create a PCB Filter Expression with the proper syntax.















Next we modify the expression in the PCB Filter Panel to search for any Vias that are smaller. This is easily accomplished by changing the = 18 in the above example to < 18 and selecting apply.















(ObjectKind = 'Via') And (AsMils(ViaDiameter) < 18)

Looking again at the PCB Inspector Panel, we see there is a smaller Via size of 17mil used in this design. As shown at the bottom of the panel 44 objects are displayed.























Note if the Via Diameter size in the Inspector was displayed as <...> then there would be more than one Via size found with pad diameters of less than 18mil. 

The steps shown above are useful to identify where in a design the smallest pad is used. In this example the smallest Via pad size of 17mil was used in 44 places to route a 0.75mm BGA.






















We can also use the PCB Filter > PCB List (sorted) to find the smallest Via features for drill and pad sizes.




















Using the same methods as described above you can identify the smallest line width.

For minimum Trace to Trace spacing refer to your design rules.

Friday, July 6, 2012

Comments and Designators

Altium users have several options when it comes to placing Reference Designators on PCB silkscreen layers and for creating Assembly Drawings.

One option includes using the Comment parameter to place a copy of the Designator on one of the mechanical layers. This can be accomplished by setting Comment parameter in each component to the special string '.designator'.



























The filters shown below are useful for manipulating Comments and Designators.


Legends are Silkscreen Layers (Top and Bottom Overlays in Altium)

SILKSCREEN (LEGEND)


Check with your fabricator:


0.025" MINIMUM HEIGHT

0.004" MINIMUM WIDTH


With a *.PcbDoc selected press the 'L" shortcut key for the View Configurations form.


Toggle the Convert Special Strings option.

















Find and Change all Comment Strings to .designator

Limit search to = All Objects

(ObjectKind = 'Text') And (StringType = 'Comment') And (StringText <> '.designator')

Using the PCB Inspector change Comment Strings to .designator.

Enter .designator in the string field.

Find Hidden Comments

IsComment And (Hide = 'True') 


Find Hidden Designators

IsDesignator And (Hide = 'True')

Use Filter to Find.  Then use Inspector to Un-Hide


Select Top Side Component Designators that are not on the On the Correct Layer.  Then using Inspector or List move to Top Overlay.


InComponentClass('Top Side Components') And Not((OnLayer('Top Overlay'))) And IsDesignator

Select Top Side Component Comments that are not on the On the Correct Layer. Then using Inspector or List move to Assembly Drawing Top.


InComponentClass('Top Side Components') And Not((OnLayer('Assy Dwg Top Ref'))) And IsComment

Select Bottom Side Component Designators that are not on the On the Correct Layer. Then using Inspector or List move to Bottom Overlay.


InComponentClass('Bottom Side Components') And Not((OnLayer('Bottom Overlay'))) And IsDesignator

Select Bottom Side Component Comments that are not on the On the Correct Layer. Then using Inspector or List move to Assembly Drawing Bottom.


InComponentClass('Bottom Side Components') And Not((OnLayer('Assy Dwg Bottom Ref'))) And IsComment

Exclude Test Points:


Top

InComponentClass('Top Side Components') And Not((OnLayer('Top Overlay'))) And IsDesignator And Not(InComponent('TP*'))

InComponentClass('Top Side Components') And Not((OnLayer('Assy Dwg Top Ref'))) And IsComment And Not(InComponent('TP*'))


Bottom

InComponentClass('Top Side Components') And Not((OnLayer('Top Overlay'))) And IsDesignator And Not(InComponent('TP*'))

InComponentClass('Bottom Side Components') And Not((OnLayer('Assy Dwg Bottom Ref'))) And IsComment And Not(InComponent('TP*'))

Test Points (Dedicated Test Point Layers )


For boards with many test points it may desirable to move the test points to a separate mechanical layer and create a Test Points drawing document.


Test Point Designators should be on the Silk Layers. Comments are used in drawings.

InComponentClass('Top Side Components') And Not((OnLayer('Test Points (Top)'))) And IsComment And (InComponent('TP*'))

InComponentClass('Bottom Side Components') And Not((OnLayer('Test Points (Bottom)'))) And IsComment And (InComponent('TP*'))

(StringType = 'Comment') And (Layer = 'Test Points (Bottom)')


Select Components with Standard Rotations

(ObjectKind = 'Component') And ((Rotation = '0') or (Rotation = '90') or (Rotation = '180') or (Rotation = '270') or (Rotation = '360'))

Select Components with Odd Rotations

(ObjectKind = 'Component') And (Rotation <> '0') And (Rotation <> '90') And (Rotation <> '180') And (Rotation <> '270') And (Rotation <> '360')

Locked Strings


Use the PCB Inspector Panel to set Locked Strings to False.