Thursday, November 9, 2023

Polygons - Hide Shortcut

Shortcut hide polygon - Altium Discussion Forums

I have added a command with an icon in my toolbar.

This is the screenshot of Hide Polygon. 

The parameter to Hide Polygons is:   PolygonQuality=Hidden

The parameter to Draft polygon is:   PolygonQuality=Draft

The parameter to show polygon is:   PolygonQuality=Full

Thank you Walter !

Monday, October 23, 2023

Slice Tracks - Options

To bring up the Slicer Properties Dialog 

Select Edit > Slice Tracks > Left Click Mouse to Start Slicing then Press the Tab Key

That's it !

Saturday, October 14, 2023

Release Checks

Review Schematic, BOM and Variant Parts.
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 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 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.

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 Paddles 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

Dots - Select Text Strings with Zero Height (Height should be > 0)
(ObjectKind = 'Text') And (AsMM(TextHeight) = 0)

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

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

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

PTH - Select ThuHole Pads with Solder Paste (Paste in Pin)
IsThruPin And (PasteMaskEnabled = 'True')

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

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

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


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

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

Paste Mask and Solder Mask - Examples for Pads:

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

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

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


Then - Select Components > Lock Primitives !

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 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.001mm






















That's it !

Modal / Non-Modal Properties Panel

The Modal /  Non-Modal Properties Panel Option can be set in the preferences as follows.

Checking Double Click Runs Interactive Properties will disable the Modal Properties Panel.

Unchecking Double Click Runs Interactive Properties will enable the Modal Properties Panel.

Known Issues: 

While the Interactive Panel is faster and more convenient to use it can be an accident waiting to happen because double clicks followed by key presses will modify the Default Property in the Panel.

Examples:

Double Click on a Component and you may accidently end up changing the Designator.

Double Click on a Via and you may accidently end up changing the Diameter.

Double Click on a Track and you may accidently end up changing the Width.

Interactive Panel Pros:

For quickly changing the Width of Selected Tracks the Interactive Panel is convenient.

For quickly changing the Diameter of Selected Vias the Interactive Panel is convenient.

Interactive Panel Cons:

Accidental changes are easy to make.

That's It !

Wednesday, September 6, 2023

Fast Interactive Routing - AD23.9.0

Altium Preferences

Gloss and Retrace



Board Properties



Snapping Options to keep the Track attached to the Cursor





For Smooth Slides with NO Offset Mouse Cursor Snaps Keep Track Lines Disabled !










Sunday, June 11, 2023

FPGA - Pin Mapper

Working with the FPGA Pin Mapper in Altium Designer - Altium Docs

For Xilinx Vivado® 2017.4:

Open the implemented design in Vivado.
Select File » Export » Export I/O Ports.
In the Export I/O Ports dialog, specify csv as type of I/O port to generate, and click OK.

To Export from Altium > Right Click on FPGA > Select Pin Mapping > Export

That's It !

Sunday, March 5, 2023

Electra Design Rule - class_class

Example class to class rule for Electra

define (class_class (classes LV HV (rule (limit_way 2000))))

define (class_class (classes LV HV (rule (clearance 300 (type pin_pin)))))
define (class_class (classes LV HV (rule (clearance 300 (type pin_via)))))
define (class_class (classes LV HV (rule (clearance 300 (type pin_wire)))))
define (class_class (classes LV HV (rule (clearance 300 (type pin_smd)))))
define (class_class (classes LV HV (rule (clearance 300 (type pin_area)))))
define (class_class (classes LV HV (rule (clearance 300 (type via_via)))))
define (class_class (classes LV HV (rule (clearance 300 (type via_wire)))))
define (class_class (classes LV HV (rule (clearance 300 (type via_smd)))))
define (class_class (classes LV HV (rule (clearance 300 (type via_area)))))
define (class_class (classes LV HV (rule (clearance 300 (type wire_wire)))))
define (class_class (classes LV HV (rule (clearance 300 (type wire_smd)))))
define (class_class (classes LV HV (rule (clearance 300 (type wire_area)))))
define (class_class (classes LV HV (rule (clearance 300 (type smd_smd)))))
define (class_class (classes LV HV (rule (clearance 300 (type smd_area)))))
define (class_class (classes LV HV (rule (clearance 10 (type area_area)))))
define (class_class (classes LV HV (rule (clearance 5 (type smd_via_same_net)))))

Example class_class_layer

define (class_class (classes LV HV (layer_rule BottomLayer (clearance 150))))


Example for using high cost to minimize routing on a specific layer

cost layer LayerName high (type length)

That's it !

Tuesday, January 31, 2023

This object is part of a locked union. Continue?

 click on image to view

This message occurs while trying to move a union if primitives are locked in footprints in the union.

To avoid this popup all primitives in the footprints in the union need to be unlocked in each footprint library.

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 !

Tuesday, January 10, 2023

Wednesday, January 4, 2023

Place Multiple Footprints - Tricks

Open a PcbLib library and a blank PCB. 

Place a track in the PCB, then select and copy the track.

The library paste should work after that.

Select all or multiple parts in the PCB Library panel, then copy, then paste into the PCB. 

Open the PCB list and copy the footprint and height columns and paste into a spreadsheet.

Reference: PCB Library parameter list? - Altium Discussion Forums

That's it !

Place Multiple Components in a Schematic

See these links on the Altium Forum.

Bug, regression, cannot paste from schlib - Altium Discussion Forums

Mass component import into schematic - Altium Discussion Forums

Michael shared a useful workaround for placing multiple components.

That's it !

Monday, January 2, 2023

Bit Bucket - TortoiseGit Clone Repo with LFS

Using Bitbucket with LFS and TortoiseGIt.  

Projects, Symbol Libraries and Footprint Libraries are hosted on Bitbucket in Git Repositories.

The parametric data for the DBLIB Library is hosted on Amazon AWS using MySQL.

This is working very nicely for remote collaboration.

How to Clone Bitbucket repositories and install LFS.

Bitbucket > Select (Open) a Repository > Select Clone > Copy repo URL

TortoiseGIT > Right Click > Clone

Install LFS in each local (Cloned) repository.

Open the Local Cloned Repo folder.

TortoiseGIT > Right Click > Open in Terminal

If you do not see the Open in Terminal option then use a Command Prompt window.

Example: git LFS install

Related Links:

https://www.atlassian.com/git/tutorials/git-lfs#installing-git-lfs

That's it !