Tuesday, July 24, 2018

Practical Design Constraints and Myths

Printed circuit board designs are constraint driven by customers and end use requirements.

Design Constraints Include: 


Mechanical Constraints

Fabrication Costs
Assembly Costs
Design Time Costs
Time to Market
Proof of Concept Prototypes
Low / High Volume Production
Design for Manufacturing
Design for Test
Design for FCC or ETSI Compliance
Ease of Maintenance or Rework
Controlled Impedance Requirements
Signal Integrity
Power Distribution Networks
Thermal Considerations
Conducted and Radiated Emissions
Radiated Susceptibility

A plethora of design constraints are often heaped on designers.  An overly constrained design can prove to be an exercise in futility for the PCB designer. Often times I see constraints that are not applicable or practical to apply to a specific design.


Designers often work with customers who have never actually designed anything more than a simple board. However the customers have either read an article or have been convinced by someone that some design practices are good and others are bad.


Designs are often overly constrained using what appears to be a cobbled together collection of best practices. Unfortunately a one size fits all set of rules and constraints does not apply well to PCB designs. 


Let's consider a few designs that have widely varying end use requirements.


High-Speed Designs

RF Designs
Power Supplies
High Voltage Designs
Sensitive Analog Designs
Automotive and Medical Safety 
Low Cost Commercial Designs
Industrial Grade Designs
Harsh Environment Designs


Myths still persist. 


90 Degree Corners


Designers have been lead to believe that routes with square corners are a bad thing and they assume all square corners should be eliminated from a design.


I have some bad news for the no square corners camp. Every surface mount resistor placed on the board will introduce four sharp 90 degree turns in the signal path.  I suggest they figure out how to design their boards without using resistors :)



















Source: http://www.resistorguide.com/thin-and-thick-film/


45 Degree Corners for RF Designs


Regarding using arcs instead of 45 degree corners. After 20+ years of RF board design experience working mostly in the 2.4GHz and 5GHz I have concluded based on test results and experience that RF tracks with 45 degree corners are no worst than using smooth arcs.


At 10GHz or higher I would suggest using arcs vice 45 degree turns.



Related Links:




















Source: Altium Blog


https://resources.altium.com/pcb-design-blog/pcb-routing-angle-myths-45-degree-angle-versus-90-degree-angle


click on image to view

















Source: Eric Bogatin - Separating Myth From Reality in Signal Integrity.


Microsoft PowerPoint - Bogatin-Myths- MUG 2006-05-05.ppt [Compatibility Mode]



Also see: Douglas Brooks - http://www.ultracad.com/articles/90deg.pdf


More later . . . 


Wednesday, July 18, 2018

Use Layer Color for Connection lines

In AD18 as shown below if your connection lines use layer colors, they can be hard to see.





















Solution: 

Disable (turn off)  Use Layer Color for Connection lines 

That's it !

Sunday, July 1, 2018

Split Planes - AD18.1.7 Gotcha

If  you build a Split Plane with a No Net area on the plane that area will be flooded with copper assigned to GND.

















3D View

















2D View - Before Rebuilding Split Planes















2D View - After Rebuilding Split Planes















Tools > Split Planes > Rebuild . . . 












Gerbers viewed in Camtasic (Negative Image)



















(Negative Image) Black = Copper, Gray = No Copper


Tips: 

Don't count on unused No Net areas to remain free of copper, they will default to GND.

Use Fills or Solid Regions assigned to No Net to remove copper.


That's it !

Solder Paste Expansion for Not Fitted Parts

click on image to view
(ObjectKind = 'Pad') And ((Component = 'C1') OR (Component = 'R10') OR (Component = 'R12'))   

Or you can create a Component Class and set the Paste Expansion for the Class.













InComponentClass('DNP')  

That's It !