Wednesday, October 18, 2017

How to Start an Altium User Group

Creating a local user group is a great way to meet local talent, find resources and share your experience.


The Basic Steps: (in logical order)


Identify Altium users in your area. Invite them to collaborate with you to create a local user group. 

You can post an invitation on the Altium Community Forum to let users know you are interested in starting a group.

Identify a hosting facility, this could be a local PCB design service, an assembly house, a PCB fabricator or your company's conference room.

Ask Altium if they have a Field Application Engineer in your area that can participate in the meetings to present new features and be available for Q&A sessions.

Create a group charter, you are welcome to copy the SDAUG Group Charter or use any part of it as a starting point for creating your group's charter.

Create a blog, I chose Blogger.com - It's easy and free.


Announce your first meeting, nominate and elect group officers.

Encourage all group members to participate and share their experience in the meetings.


best regards,

SDAUG Chairperson
Randy Clemmons CID+

Tuesday, July 25, 2017

Smart Track Ends

The gloss tracks issue described below has been fixed, nice work . . . 

DXP Preferences > PCB Editor > General > Smart Track Ends



























With Smart Track Ends enabled you need to drag the skinny track to the end of the wide track before glossing.


Selected Track segments can be glossed to clean up overlapping tracks. Gloss Selected Tracks - Ctrl+Alt+G

Before Glossing

















After Glossing
















Clean Nets Documentation - Altium


Related Track Issues

Track over existing tracks gets deleted when placing track segments - Altium Forum

Bug ? PCB > Design > Netlist > Clean - Altium Discussion Forums


That's it !

Monday, December 26, 2016

Altium Designer Documentation | Online

Altium has done a great job of centralizing documentation for Altium Designer. 

The perfect place to start looking is at: Altium Designer Documentation:

Sunday, July 31, 2016

Update Parameters - Failed to Find

Altium has some nice features for updating designs (schematics)

Click on images to view.
 

For example in this design after selecting Update Parameters From Database a message pops up to alert the user that 3 parts were not found in the database.






Tip: Look for Database Messages.txt in your project folder.















That's it !

Friday, October 23, 2015

Polygon Tricks

1) Use Shift Click and Double Clicks to select Polygons.

click on image to view




















2) Use Shift Space-bar when editing vertices to toggle modes.





















3) Hatched Polygon Trick (Bug #3579)

Hatched polygons are not obeying the polygon cutouts.

click on image to view







Hatched Polygons Workaround (Treat)


Create a separate solid polygon and hatched polygon.


click on images to view

































Problem solved using a work-around:

















More Altium's Tips and Tricks 



That's It !

Wednesday, June 10, 2015

Soldermask


Primitive Soldermask
Fills
Tracks
Regions

Smart Soldermask

Polygons ?

Regions with soldermask expansion.















Soldermask Dots (soldermask polygon with cutouts)
Vias can be tented with soldermask rules.

click on image to view

Example: Vias with Soldermask Mask Expansion value from rules. (David Carmody)























Note that if the expansion value is specified, the specified expansion will be used vice the rule.

When vias are first placed in a design the default is to follow the rules.


Soldermask Relieved Vias (Soldermask Encroachment)

Hole size +5mils.  

Soldermask Expansion = ((Pad - (Drill + Relief)) /2) *-1



Soldermask Defined Pad

Mounting Little Foot - Datasheet



User defined soldermask rule for soldermask defined pads.




















Thursday, February 5, 2015

Mechanical Constraints 101 - Board Shape

It is well known that the PCB world and the mechanical world must collide and sometimes they do so violently.  PCB layout tools are very well suited for layout and can do most anything necessary for drafting purposes, but they are often not streamlined for mechanical design. Therefore, knowing several ways to accomplish the same work is very helpful depending on the situation.  This will be a small series that may be helpful to you when starting your next design.


Defining the Board Shape
The ability to simply draw the outline to whatever shape you would like is long gone.  For this reason alone, it is reccomended that you always have a mechanical layer dedicated for a board outline.  We use mechanical 1 for ease of use (M1 is how all instructions below will be referenced), but whatever you like will work.  Here are various ways to define the board shapes and the most common ways to use them.

Manual Creation
If you just have a simple rectangle, it is often easiest to just draw 4 lines on M1 and then set the board shape to those lines.  Here are the steps...
1. Select M1 and draw the rectangle to the desired size.
2. Use a shortcut command SY.  It is for Select all on laYer.  This will select all 4 lines for you.
3. Go to the menu Design->Board Shape->Define from selected objects or DSD for short.
4. Remember to clear the selection filter with Shift+C so that you can continue to work.
That's all there is to it!  If you want to change the board shape, just drag a line or 2 and repeat steps 2-4 above.

Create from DXF
More complex board outlines often come to the layout specialist in the form of a DXF.  For this process it is very similar to above, but now there is an import procedure for the DXF.
1. While in the PCB, go to File->Import...
2. Select the DXF file from the browse dialog
3. Select the appropriate input such as scale, line width and location.
4. If it is only the outline, you may choose to import everything direct to M1.  Since DXFs often come with dimensions, showing component outlines, etc. you will probably be better off choosing an unused mech layer and then copying the board outline only to M1.
5. Once your board outline and only your board outline is on M1, the same steps 2-4 in Manual Creation can be used.
A couple of hints for this method:
1. Make a union of the board outline primitives to more easily manipulate it
2. When placing parts and mounting holes, set the active layer to where ever the DXF was imported.  This way components can be picked up and snapped to the correct location.

Create from STEP model
If you get a good STEP model, it too can be used to create the board area very quickly.  There is a small drawback to this method at this time though.

Mounting holes and pins of all shapes will show up and Altium saves them as free pads in a union.  This is handy to snap components to, but then pieces will have to be removed as you will end up with 2 holes in one place.  The same is true for mounting holes, unless they are not defined as components in the schematic.  In this case though, only a plated hole comes through with no annular ring so the data will still need to be manipulated.

Still, a complex shape can be created accurately and quickly from a STEP file now.
1. Import the STEP file by going to Place->3D Body.
2. Set the top radio button to Generic STEP Model and down below select the Embed STEP Model button.
3. Browse to the file and press Open.
4. Click the location to set down the STEP model where you want it.  If you miss, just move it to where you would like it.
5. In 3D mode, go to Design->Board Shape->Define from 3D body
6. A small thick cursor shows up.  First click the object that you would like to use, then click the surface you would like to use.  Note that while picking a surface, Altium will highlight the surface shape in blue.
7. Choose how to align the model to the board surface and click Close.
You may now exit 3D mode and clear the filter.

Create Primitives from Board Shape
To be added


Board Cutouts
Unfortunately, board cutouts don't always automatically appear when using the Define from selected objects command.  If the construction lines are already down though, it should be fairly easy to trace them, snapping to corners by using the Define Board Cutout command.
1. Go to Design->Board Shape->Define Board Cutout
2. Draw the shape for the cutout tracing and snapping if possible.
3. Close the shape and check the cutout.  What Altium does is define a region and set it as a board cutout.  It can be manipulated/removed just as any other region.

Auto-Position Sheet
To be added

Hope this helps and happy designing,
David

Sunday, February 1, 2015

Show Via Nets

Recently I reviewed a design where the Net names where not displayed in the Vias.


I prefer to see the net names.

To display the net names press "L"  and select Show Via Nets in View Options.

click on image to view



























Monday, November 24, 2014

PCB Library Expert 2015

PCB Libraries Expert - for Altium Designer

Click on image to view


























PCB Libraries is my favorite tool for designing Altium footprints.

PCB Library Expert Overview - Video


"The new V2015 “PCB Library Expert” by PCB Libraries, Inc. has a new Altium Script Interface that imports both the Footprint and 3D STEP Model simultaneously and imports the Height and Description attributes straight from the FPX file. 


PCB Library Expert to Altium via Script - User Guide

Altium layer assignments are user definable. Also, the 3D Model rotates the same as the Footprint (if you rotate the footprint in Library Expert the 3D model will match the rotation). 


You can import one part or 10,000 parts at a time to create an entire new library using your personal library construction preferences."


Source: PCB Libraries - Tom Hausherr

Monday, November 17, 2014

Toolbars

Restore Custom Toolbars

After upgrading from AD13 to AD14 my custom toolbar which I created in AD13 was missing.



To restore my custom toolbar in AD14,  I copied the following three files from AD13 : 

DXP.RAF
DXP.RCS
UserTools.TLT

AD13 Location:
"C:\Users\Your User Name \AppData\Roaming\Altium\AD {xxx . . .}"

AD14 Location:
"C:\Users\Your User Name \AppData\Roaming\Altium\Altium Designer {xxx . . .}"

Tip: Altium must be closed while you copy the files, because the files are over written when a session of Altium is closed.

Just to be safe create copies of the AD14 files before overwriting them.




















Restore Default Toolbars


It was also pointed out that if you delete all of the files in this folder that Altium will rebuild the files using out of the box defaults. This should restore the Toolbars to the default setup.

I suggest you make a backup copy of the entire folder, just in case . . .

Then close Altium and delete the Altium AppData folder, restart Altium and the AppData folder will be rebuilt using the out of the box settings.

Wednesday, November 12, 2014

How to properly submit a bug report


Altium is changing, and fast.  The company structure and the tools itself are moving at a lightening pace and so it is inevitable that some problems creep in during the changes.  The fact of the matter is any tool with this complexity will have bugs...period.  How the users report the bugs back to the company can make a huge impact on how quickly the bug can be squashed.  Here is a collection of tips acquired across the internet and personal experience that will make your bug reporting more effective.  If you glean nothing from this, then great job!  Keep the bug reports coming.

First off, a bug report is not a place to rant about the problems it has given you.  Yes, it should be noted right away whether the bug is a critical (a crash the whole system bug) or a minor annoyance such as the cursor getting stuck behind the window occasionally while zooming.  However, if you go on for half a page of capital letters describing your frustration and not the real problem, it is likely that the report will not be heard well.

So stick to only one bug at a time and only the facts of that one bug.  And yes, everything should be factual, and as concise as possible.  Do not write a paragraph about the hoops that you jump through when the steps to repeat the bug can be broken into a numbered list.  In fact, if you cannot make a numbered list to accurately reproduce the bug each and every time, you may want to rethink submitting the report in the first place.  Making an AE paw through a long report only to not be able to reproduce the bug takes away valuable time from another bug that could be crushed quickly.

Remember that the bug may have extenuating circumstances.  For example, does the bug happen no matter what state the program is in?  Maybe the bug is database related and not software related.  Maybe the bug only shows up after a certain other action is performed.  It may even be the influence of a third-party software (I utilize a screenshot program that can sometimes cause keys in Altium to lock up, but that is not an Altium bug).  To get to the root of the issue, you should clear the system before you make your numbered list how to reproduce it.  Restart Altium, even restart your whole system to ensure you have a clean slate.  Then make the bug happen.  If you can, now you can file a report.

Lastly, include any other support information that is required to reproduce the bug.  For example, a screenshot (or 8) may be helpful for the AE to see exactly what you are looking at.  Include the database files if the bug only appears with certain files.  Include contact info so that someone can get back to you to further discuss the bug if they get stuck somewhere in the process and cannot reproduce it.

Since lots of us learn from an example far better than reading a collection of tips...*raises hand*...below is a sample report that is a real world Altium issue still in place now.  My goal is to get you to the problem with no other support evidence.  Take a step into the AE shoes and see if this guides you to the problem well.


Poor Example
Dear Altium,
Long ago you added mechanical layers extending from only 16 layers up to 32.  However, we still, STILL do not have the ability to suppress layers 17-32 in the outjob setups!  For example, when creating final artwork prints, everything on all layers from17-32 will show up on all pages of the printout.  These have to be manually removed and are a serious headache to deal with.  Please fix this ASAP!
Signed,
A bad reporter.

The info is there, there is a legit concern, but unless you are intimately familiar with this function, I doubt the above info will get you there.


Good Example
Dear Altium,
     This is not really a bug report, but more of a feature enhancement to keep up to date with the current mechanical layer configuration.  The enhancement is not critical, but would ultimately save hours of time in data manipulation.  Currently, I treat mechanical layers 17-32 as though they are not there because of this problem.
     Database preparation
1. Start a new or existing project, PCB and outjob file
2. Ensure there are a few copper features to have something to print
3. Enable mechanical layers 1,2,17,18 and add a couple items to these 4 mechanical layers.
     Problem Tracking
1. Now that the database is all setup, open the Outjob file
2. Go to Fabrication Outputs and Add New Fabrication Output
   a. In the popup menu choose Final->[PCB Document]
3. Double click on the new Final Artwork Prints output to get into the Configuration (PCB Printout Properties dialog box)
   a. Note that for every printout, the applicable copper layers are present as well as all 4 of the mechanical layers we setup (1,2,17,18)
4. Click Preferences in the lower left corner of the current dialog box.
5. Uncheck Mechanical 1 and Mechanical 2 in the Include on New Printouts section.
   a. Choose OK which will take you back to the PCB Printout Properties dialog box
6. Right click on any Printout (grey line near the top left corner) and click Create Final
7. Confirm the recreation of the print by clicking Yes.
8. Note now that Mechanical layers 1 and 2 are not included in the printouts, but mechanical layers 17 and 18 are still included in all prints.  This is the real problem.  Mechanical layers 17-32 cannot be removed automatically, but must be removed manually from every printout every time these prints are regenerated.  Please add check boxes for mechanical layers 17-32 so that these layers become much more user friendly.  Please contact me if more information is needed to see the issue.
Signed,
A much better reporter.
(123) 456-7890
much@better.com

Hope this helps!

Sunday, August 3, 2014

Check silkscreen over untented VIAs

To avoid silkscreen over untented VIAs use a design rule to check the clearance from the silkscreen to the soldermask openings.

Example: Use a design rule check to catch this silkscreen printed over VIAs. 















Example rule:


Where first object matches:

(IsText OR IsTrack OR IsArc OR IsFill) 

Where second object matches: 

OnTopSolderMask Or OnBottomSolderMask  

Note: I used a 3 mil clearance because be soldermask expansion on this design was 4 mil, this gave me a 7 mil clearance to the exposed copper pads of the vias. 

Thursday, July 3, 2014

Creating Classes in a PCB

In the service bureau business, we usually get good schematics.  However, these schematics are lacking from a PCB point of view in that they do not pass enough Class or Rule information to properly constrain the PCB.  It is also unfortunate, but true that Class creation in an Altium PCB is pretty painful when it is highly detailed.  So rather than trying to fumble through mountains of auto-generated net names or cascading rule sets, use Directives and Blankets in the schematic instead.

Backup of the Schematic
First thing is first when performing this function.  Make sure you have a copy of the schematic so that an accidental save is not an issue.  When pushing 20-30 classes into a board in a half day, how the parameters look is not critical.  I simply want the information in the PCB and then will revert to the customers schematic.  To keep the nice new Classes from being stripped back out by an ECO, refer to this other tip Template PrjPCB Files - ECO Generation Tab.

Directives
A directive is simply a rule or class that will be passed to the PCB through the ECO dialog.  There are quite a few that can be used, but here are the basic three that will be used most often.

Differential Pair
In the schematic, go to Place->Directive and find the Differential Pair directive.  This one is the easiest one to use if the pair has been named properly.  Simply drop a directive on each net of the pair and Altium will automatically send the pair and name it in the PCB.

If there are problems, check the naming convention on the pair.  Altium likes to see identical names with an _P or _N suffix. i.e. CLK_P and CLK_N.  If the pair does not follow this naming convention, then it will probably be easier to manually create the pair in the PCB.

Net Class
Place a Net Class directive anywhere a new class is desired.  These directives will lock onto any net just like the diff pair directive or a net alias will.  Believe it or not, the name on the directive doesn't matter, but it sure makes it easier to keep track of things so it is advisable to change it.  Where the PCB gets the Class name is from the Value as seen here...

























Note: Don't change the Name from "ClassName" or the Class will not go through to the PCB.

PCB Layout
A PCB Layout or PCB Rule directive is just like the Net Class directive, but a design rule gets embedded into it.  Place the directive on a net like before and then edit the Rule parameter.  Once in the Parameter Properties dialog box, click edit rule values and setup a rule as if it were in the PCB like so...















Multiple Rules
It is very possible to add a Rule and a ClassName into the same directive.  Alternatively, it is possible to put multiple directives on the same net assigning multiple classes and/or rules by dropping more directives onto the net.

Blankets
Blankets are the best timesaver possible with directives.  Instead of trying to assign a class and rules to every net in a power supply circuit, wrap a blanket around the circuit and then drop the directives onto the blanket.  An entire schematic page or circuit can be set into a net class in less than a minute!

ECO to the PCB
Once happy with all the directives, import the changes into the PCB from the project using a standard ECO process.  Don't forget to disable the ECO Generation sections so that all the Class/Rule work does not get ripped out later.  And if the directives were just temporary, revert back to the original schematic.  However, a better option may be to show the engineer what directives do an how much they can help the layout designer. :-)

Template PrjPCB Files

So there is no real way to utilize a "template" PrjPCB file in Altium, but  that does not stop one from referencing a master file.  We keep a PrjPCB file as a start-up placeholder that remembers where all of our start-up PCB's and Outjob files are.  But it is more than a placeholder as there are a few other key items in there for reference.

ECO Generation Tab
The ECO Generation tab in the Project Options is a great place to keep particular items from being ripped out of the PCB.  For example, a schematic has been loaded with some directives and classes, but is not totally complete.  Therefore, to work the PCB properly, more information needs to be added, but then the ECO tries to rip that information back out of the PCB.  The ECO Generation tab can fix that for you.  Customize the list according to your particular project, but very common items to turn off are...
  1. Add Rooms
  2. Remove Rooms
  3. Remove Component Classes
  4. Remove Differential Pair
  5. Remove Net Classes

Do NOT use the Comparator tab
Everything that can be done in the ECO Generation tab can be done in the Comparator tab, yet it is inferior and potentially dangerous.

First of all, note that in the ECO Generation list above, there are toggles for both Add and Remove.  In certain instances, there are even Change options.  With Rooms for example, in the Comparator tab, there is only Extra Room Definitions.  This disables room changes from both directions with only one option.

Also, when using the ECO Comparator tab, you are disabling only the output to the ECO.  In other words, Altium will still see that there are differential pairs in the PCB that do not exist in the schematic, but will simply ignore that.  There is also an nice popup that lets you know that there are differences in the design, but it has not made an ECO since the differences have been deliberately turned off.  This is not so with the ECO Generation tab.  When those items are turned off, they are OFF.  There is no check, no warning, no nothing to let the next person working the design know that they may not be getting new information from the schematic to the PCB.

Project Parameters
If you are not currently using project parameters, start using them.  They are so tremendously helpful.  How many times have you had to change the exact same number in 4-10 different places all over the board for a PN change or a revision change?  Project parameters can eliminate that.  Under Project Options, the empty Parameters tab is near the end.  Simply add parameters by Name and by Value.  The Name is how the parameter is called in the design, the Value is what will show.  Follow these basic steps to see an example of setting a single PN for both PCB and all schematic sheets in the design.

  1. Click Add... and set the Name to PrjPN and the Value to 123-456
      a. Note that the extra "Prj" prefix ensures that a System Parameter is not accidentally used.  If a System Parameter name is used in the Project Parameters, this will fail.
  2. Add a string to the schematic. Instead of typing the text, use the small pulldown of special strings and find the new PrjPN parameter like so...




















  3. Copy this string to multiple pages and places within the schematic.
  4. In the PCB add a string and use the pulldown to find the same parameter.
      a. Note that in the PCB the sting will be preceded by a period as opposed to the equals sign that is used in the schematic.
  5. Copy this string to multiple places and layers within the PCB.
  6. Ensure that Convert Special Strings in on for both the schematic and PCB.
      a. The schematic checkbox is global and is under DXP->Preferences->Schematic->Graphical Editing
      b. The PCB checkbox is local to the PCBDoc and is under View Configurations (shortcut key "L"), under the View Options Tab.
  7. At this point, 123-456 should show in all locations.  Change the parameter value once in the Project Options and the new value will be reflected in all locations.
      a. Altium may need a refresh to display the new numbers.  Simply hit the End key on the keyboard to force a refresh.

So the best part about keeping a master PrjPCB file is that it is possible to copy/paste all the commonly used Project Parameters into a new PrjPCB file!

Wednesday, July 2, 2014

Rules: Infrequent and Common

We all "program" rules into Altium all the time, but there are some that are only used occasionally.  Usually the calls for the rules are forgotten...at least I do this...and then reference back to an old design to remember how it is done.  So here is a list of a few rules that may not be used all the time, but are handy to keep nearby.  Also included are a few helper rules or time savers. 

Flood over vias
Most experienced users probably know this one well, but I still see a lot of reference boards in which the vias have thermals.  Since there is no need for a via to have a thermal tie, it is possible to set these to Direct Connect.  To do this, simply make 2 rules for both the Power Plane Connect Style and the Polygon Connect Style Rules.  Leave the default "All" rule to a Relief Connect and set the higher priority rule to IsVia and set it to Direct Connect like so...




















Net ties
Deliberate ground shorts happen all the time now and way more often then we would like.  Do not forget that the short error can be eliminated by adding the offending nets to the Short-Circuit Rules in the Electrical section.  For even better control, only allow the short-circuit to happen within a Room or Component.

(Not InAnyNet) vs InNet('No Net')
In the case of dealing with NoNet tracks and vias, the rules start to get a little picky.  For example, there is a BGA on the board and there is fanout on every pin regardless of whether or not a pin is tied to a net.  It would seem logical to use the Query Builder to assign InNet('No Net') and allow shorts, overlaps, etc.  However, this doesn't work and the errors will still show up.  Instead use the call (Not InAnyNet) and the rule will go right through.

Room for rules-by-area

Rooms can be great as a quick rule-by-area check.  Place a room and blank the room query.  The room query itself will not be referenced.  Then a Clearance and/or Width rule can be set with the room as the target like so WithinRoom('RoomRules').  Any trace that is fully contained by the room will pass different rules than the rest of the board.

Both inclusive and exclusive rules
In the example above, we used the command WithinRoom and that works well for nice easy shapes where it is possible to wrap a rectangular room around all of the PCB object.  However, most of the time, it is not that easy to contain everything.  For those examples, use the TouchesRoom command and that will allow objects to be only partially in the room and still get checked.  See the picture below to get an idea of the difference.














Room as a height keep out
Place a room and change the Query to something similar to this (OnLayer('L1-Top') AND Height >= '1').  This query along with a Room Setting of Keep Object Outside will error on any component 1mm and taller.

A caution goes with this though.  The unit settings need to be correct or all of a sudden this 1mm height becomes 1mil and virtually any component on the board will show as an error.


Soldermask over vias

For me, great detest is felt over those Force complete tenting check boxes that are on vias.  What happens when you miss one?  For this, a nice rule can be used.  Go into the Soldermask Expansion rules and add a new rule.  Set the query to IsVia AND (HoleSize < 0.25) adjusting the hole size as necessary for your board.  Set the Expansion to the via size, but in the NEGATIVE direction (i.e. -0.5mm).  This will automatically cover over all vias of a given size and smaller.  This rule could also be used to cover over the pad, but not the hole if the size is set correctly.

Like the Room height, a caution goes with this.  If the rule is set in metric and the board is output in English, the rule will fail and all vias will be exposed.


I hope these can come in handy and please ask for/add more!