Generating Outputs for Assemblers

September 25, 2019 Mark Harris

I was asked recently by a relatively new engineer what files I send to an assembler to make sure they do not encounter problems, and what would reduce the number of clarification questions they ask about the design. That engineer had been working professionally for several years with a large company, and had never had the responsibility of generating outputs or even seen the outputs from the products he was working on, so his only experience was through his own hobby and university projects, which he assembled himself. 

Not sending your assembler the correct files and not providing enough outputs to clarify your intentions can cause days of delay as you work back and forth with them to fill in the gaps in their understanding. The advice here may not necessarily be industry best practice, it is instead the process I have refined over the years to reduce or eliminate questions when sending files to a contract assembler or manufacturer. I have found that this process works well for me working with any of Canadian, European, or Chinese assemblers.

If you want to follow along directly with the project I’m going to use as an example in this article, you can find the board I’m using on my GitHub. It’s an older board, but serves its demonstrative purpose really well. If you want to generate your own board from the project to practice working with designators, you will want to download an old V1 version of my Altium Database Library for the footprints.

Reference Designators

Some people really like having designators on the board, and some people don’t find it necessary. I personally do not add any designators to my silkscreen at all. If you feel strongly one way or the other, leave a comment on this post telling us why! I find more often than not that reference designators generate confusion with very tightly spaced components, so instead, I force anyone looking for a part to refer to an assembly drawing. When placing components on the circuit board, I move all designators onto a new Designators mechanical layer, position the designator at the centre of the part, and make sure its font keeps the designator smaller than the component itself.

This actually helps when generating outputs for the assembly, as we can create a very clear drawing from this mechanical layer showing exactly where every component is.

My process for this is to use the PCB Filter tab, accessible from Panels (bottom right of Altium) ⇒ PCB Filters. The filter text is simply ‘IsDesignator’ set to select matching and deselect non-matching.

Altium Designer PCB Filters panel.

Adding PCB filters allows you to easily select all designators.

Then, click Apply to All. All your designators will be selected, allowing you to change the properties of all designators at once in the properties window. 

I set the layer to my Designators layer, set the auto position to Center, and change the font type to True Type. Then, I find a text height that ensures the longest designator text will fit within the smallest component, usually something like R120 on a 0201 or 0402 footprint. 

Properties panel showing component J16 designator set to center using true type font.

Truetype font and text height can be set from the panel shown above.

I rely on the true type font simply because in my opinion, it looks nicer and is more legible at smaller font sizes. If you need a designators layer, you can use the View Configuration window.

If you are working on a two-sided board, you can select just the designators on the top layer by using the filter:

IsDesignator AND OnLayer ('Top Overlay')

Then, use Bottom Overlay for the bottom side components. Ensure you use single quotes, not double quotes in the filter. This will allow you to place them on two separate designator layers: one for the top, one for the bottom.

Draftsman Document

The addition of Draftsman® to Altium several years ago was a very happy day for me, it made generating nice assembly drawings much faster and easier than it had previously been. This is probably the most critical file that you control and that you will submit to your assembler. A good quality assembly drawing will make life for your assembler easier during machine setup and rework. If your volume is low enough for them to be hand-assembling the boards, the assembly staff will be thankful for a clear document. 

First, add a draftsman document to your project then save it as Assembly Drawing.pcbdwf, and then save the project.

Altium designer “Add New to Project” menu showing the option to add draftsman documents.

Projects aren’t composed of just schematics and PCB layouts. Good projects have draftsman documents too!

Right-click on the project, Add New to Project ⇒ Draftsman Document.

It doesn’t really matter which template you start with, we are not creating mechanical drawings, so we’ll be ignoring most of what is generated by the template.

Altium Designer new draftsman document window

Adding a new document gives you templates to choose from. Any of them works fine, as we won’t be submitting a mechanical drawing.

The Document at the bottom should be your single PCB, not your panel. If you have multiple PCBs, create one assembly drawing per board rather than multiple sheets in one drawing.

Now we can place an assembly view for the PCB. 

Altium designer place menu with board assembly view selected.

The place menu in the draftsman document layout of Altium Designer allows you to place board assembly and fabrication views among other things.

Right-click anywhere on the sheet, and select Place ⇒ Board Assembly View.

Before we look at the scale, we need to change the 3D model drawing style. 

Altium designer draftsman document featuring a placed board assembly view.

The default assembly drawing looks very ugly and illegible. Let's change some settings and see how to make it better.

My 3D bodies are quite detailed, so it can be very difficult to make out the designator through the body.

Altium Designer draftsman document component display properties window with component body menu open.

The Component Display Properties window allows you view only the bounding box instead of a full 3D projection.

After selecting the whole board, in the Component Display Properties group of the Properties window, you can change the Component Body property to 3D Body Projection (Simple). Bounding box can also work well if you don’t have many 3D bodies and it becomes difficult to identify which designator belongs to which component.

Altium designer draftsman document featuring a placed board assembly view.

The assembly drawing looks much cleaner after component bodies were changed to bounding boxes.

As you can already see, that is a big improvement in clarity, but it is very hard to make out those small resistors and capacitors. All that black text against black components isn’t helping the legibility of the text. Let’s change some colours.

Altium Designer draftsman document component display properties window.

I’m a fan of either pale green or pale blue for the component outlines, as it makes them visible without making it hard to read anything on top. I often use bright purple for the designators, because I find it easy to read against most background colours. Purple is a mix of blue and red, which are at opposite ends of the visible light spectrum and use different cones in your eyes to view, so purple can reduce eye strain and still be easily visible to an assembler if his or her cones are becoming depleted in one color from staring at your boards for too long.

I have also turned the Reference Marker option on and set it to Inside Contour. This board is not particularly dense, but on very dense boards, it makes sense to have it inside the footprint so reference markers don’t get confused with that of a neighboring component.

Assembly drawing

The assembly drawing looks spectacular with colors added.

The text on the 0402 parts is still hard to read, so we need to change the font. Typically, just making the font bold will help a lot, but some projects will benefit greatly from alternative fonts. A font like Tahoma might work better, meanwhile a font like Chiller or Comic Sans would not.

You can change the font in the Style group. After selecting the board, uncheck Use Document Font. Making the font bold helps a lot, as does increasing Font Size (min) from 5 to 6. 

Changing the font in the style group.

The text is now larger than the bounding box of the component, but a quick check of the densest area of the board shows that we don’t have any overlap.

Assembly drawing with updated font.

Following that, you can use the Custom Scale in the Scale group to get your board to a decent size on the page. If the assembly drawing is printed on an A4 or Letter sized paper, you want to give the person looking at it the best chance of being able to make things out as possible. You can only enter a decimal scale here, so try 1.5 or 1.3 instead of something like 5:1, which you might enter into a mechanical CAD package.

Adjusting the scale

This circuit board has a barcode on the back, as well as the name of the project, so I’m going to add that into the title of the view, setting it to ‘DLFDRV1R0 | DUAL LANE FEEDER CONTROLLER | TOP VIEW’.

Next, to make cross checking and assembly easier, I’ll add the bill of materials to the sheet as well. If there isn’t room, you can add the BOM to a separate sheet, or just rely on the BOM you will generate later. The BOM is quite simple, and not suitable for ordering from. However, can make assembly easier if it is there to quickly reference.

Adding the Bill of Material.

Right click on the sheet, Place ⇒ Bill Of Materials

Luckily for me, the BOM on this project is quite short, so it fits on the page. However, it does obscure the assembly drawing, so we need to split it into multiple segments.

Bill of Material with Assembly Drawing

In the properties window, you can turn on Limit Page Height under the Pages group. Set it to something that will allow you two pages of BOM and hopefully still fit on the sheet.

Setting the limit page height

I then tweaked the column widths in the Columns tab on the properties page, as well as turning on the Layer column. After that, I changed the row colours to white and a colour that isn’t the same as the PCB. If you choose a colour that is different from the PCB, it will reduce eye strain each time an assembler looks at the BOM. This can lead to lower error rates when the board is assembled by hand.

Updated view of Assembly Drawing and Bill of Material

For an assembly drawing like this, I’m not too fussed about having a title block on the drawing like I would if I was sending a mechanical part for manufacturing or assembly. We don’t have any tolerance data, the scale is irrelevant, and unless you’re a large company working with document control, this is more than enough for an assembler. The board version and revision number are built into the barcode on the back of each board (the V1R0 in the title), so I know the document will match the board.

If you have hand assembled a board, you know what makes life easier when assembling a board by hand. Things which make your life easier building a prototype still apply when programming a line assembly machine and testing/reworking a board.

Output Job File

You can generate outputs from Altium quickly and easily from the file menu under the Export menu and Assembly Outputs menus. However, doing this is a good way to start making mistakes. Instead, when I’m getting ready to send files to an assembler, I will first add an Output Job file to the project if there isn’t already one present from generating fabrication outputs. The output job file allows you to repeatedly generate the same outputs for the project, and if you make a mistake when generating the outputs (forgotten layer for example), it's easy to go back and update the output job file.

Generating the outputs

Right-click on the project, Add New to Project ⇒ Output Job File.

Save the empty file right away, and then save your project to ensure the project structure is updated in case you lose power, step away and windows updates runs, or something else goes horribly wrong.

Setup Output Types

Right away, we can remove the Video output option on the right side under Output Containers, as we won’t be adding any video. We will rename the existing PDF document to Assembly Drawings PDF, then click Change to bring up the PDF settings window.

The thing I always change first is the output file name and path. I’m not using vault release management, so I separate out my releases by using a Custom Folder Name.

Exporting files to PDF

After [Release Managed], you can click on ‘none’ and choose Custom Folder Name. I will usually keep this simple and just use V1R0 for version 1 revision 0, or perhaps ‘Dual Lane Feeder V1R0’ as the folder, then \Assembly so all my assembly related files end up in one folder. This makes it possible to just zip that one folder up and send it off to the assembler.

After setting the folder, you can change the name by clicking on the file name.

Updating the PDF file name

You will want to expand out the Advanced options and deselect Open PDF File After Export as well as Prompt If File Already Exists in the Output Options section.

If you do this for each output type, this will prevent having lots of files from opening up on you when you generate outputs, or avoid lots of prompts if you are re-generating your files.

Make the same changes to the Folder Structure output—this will ensure the files go into the same folder and you don't get a deluge of random files opening up when you generate outputs.

Add generated files to project

Save your changes now that the output files are setup. If you forget to save and generate outputs, they won’t end up where you expect.

Documentation Outputs

We can now add the draftsman drawing to the generated outputs. Under documentation outputs select Draftsman ⇒ Assembly Drawing.PCBDwf.

Add the draftsman drawing to the generated output

Once it is added, you will want to rename it; just select the row and press F2 on your keyboard  to rename it to something obvious, like ‘Assembly Drawing’. 

You will want to check that the page setup is correct for the drawing. Right-click on the row and click Page Setup.

Checking the page set-up

Ensure the Color Set is set to Color rather than the default Gray. You will want to check that the paper size and orientation is the same as your drawing as well.

If you have good 3D models in your design for every component, you may want to include a PDF3D in your documentation outputs too. It can serve as a visual sanity check for the assembly team, and if they are struggling to find a component, it can allow them to quickly identify which it is.

Adding a PDF 3D

The only configuration change I make is to set the color scheme to a fixed scheme. You can access the configuration by right-clicking on the row and selecting Configuration Properties in the menu.

If your assembler is testing the boards for you, including your schematics can make life much easier for them. Some people don’t like to include schematics because they fear intellectual property theft. However, your assembler probably has better things to be doing (such as running their existing business) than trying to compete with you by stealing and then selling your project. Plus, they already have your bill of materials and physical circuit boards, and generating a schematic by themselves for your board really wouldn’t take much skill, so don’t worry about intellectual property theft from your assembler. There’s nothing you need to change in the configuration for a schematic output, just make sure you change the page setup to be in color.

If you select your PDF output container, you will see there are circles in the Enabled column for your documentation outputs. You can select these in the order you want the pages to appear in your PDF.

Enabling columns for your documentation output

Assembly Outputs

From the Assembly Outputs options, we only really need the Pick and Place outputs. As I mentioned before setting-up the draftsman document, using draftsman has greatly improved the ability to create legible assembly drawings. Since we have created a really stellar assembly drawing in draftsman, we don’t need to waste our time setting-up the assembly drawing outputs here. 

Navigating Assembly Output options

Under Assembly Outputs click Add New Assembly Output, and add pick and place files for both your board and panel. Depending on the machine setup of the assembler, it may be very easy for them to use the panel file, or it may be more efficient for them to use the board file and create an array in their setup software.

After renaming the outputs, right-click on them and click Configure to change some configuration options.

I change the output settings to Metric, as I rarely deal with assembly companies in the USA, Liberia, or Myanmar. I also turn on both CSV and Text outputs. It doesn’t make a difference having both, it’s just for the convenience of the assembler in case their setup software defaults to .txt or .csv rather than both.

Having just the default options is usually more than sufficient if you have a decent library. I know the centres for all my components are the pickup points for each component as specified by the manufacturer, and that reduces the work and failure rate at the assembler.

Report Output

From the reports, the only item your assembler will be interested in seeing is your bill of materials. Whether they are sourcing components or not, they will need your BOM to ensure the right parts are going where they need to be. If you are looking for a nicer-than-default BOM template, my library has a BOM template you can use as a basis of your own template. Ideally, you will start with an ActiveBOM from your project that will ensure all your parts are sourceable and price-optimised, however, you can generate a BOM just from the PCB document like the old days. Your assembler will not care about the source of the BOM, however, if they are sourcing parts they will care to have parts that can be purchased and are in stock.

The template expects the following fields, which you can select from the Columns tab under Properties on the right.

  • Description
  • Device Package
  • Quantity
  • Designator
  • Layer
  • Manufacturer
  • >Part Number
  • Supplier 1
  • Supplier Part Number 1
  • Price

I group by Device Package rather than by the default footprint, and by Part Number rather than by Comment which is the default. You can drag the columns up from the available list to the group by area, then click the trash can icon next to Comment and Footprint to remove the defaults. To add additional columns to your BOM output (assuming you have added the relevant columns to your BOM template) just click the crossed-out eye next to the column name to make it visible in the BOM.

If you were not able to fit the bill of materials table onto your draftsman sheet(s) then you will likely want to select the Assembly Drawing PDF and enable the BOM output to it, so you will end up with a page containing the BOM.

Folder Structure Output Container

Now that you have all your outputs set-up, you can assign the pick and place files and bill of materials output to the folder structure output container.

Before clicking the Generate Content button, make sure you save everything. If your output job file and project are not both saved, your outputs may not go where you expect to find them. Clicking File ⇒ Save All is a good option at this point. Once everything has saved, close your output job file, then re-open it. This re-initialises your output job file to ensure all the outputs go where they are supposed to.

Once everything is saved, you can click the Generate Content buttons on the Folder Structure and Assembly Drawing PDF output containers. After a brief delay while everything gets generated you should be able to find all your files in your project directory in a folder called Project Outputs for {Project Name}. In this folder, you should find a folder called V1R0 if you followed my naming scheme, which then has a sub folder called Assembly. You can safely zip the Assembly file up and send that along to your assembler.

Inside the Assembly folder you should find:

  • BOM folder
  • Pick and Place folder
  • Assembly Drawing.pdf
  • Status Report.txt

You can safely delete the status report, your assembler will not need that file.

The assembly drawing should open to a nice clear view of your circuit board with legible component designators, a 3D PDF page (you might need to tell Acrobat you trust the document to view it), and a set of schematics. If you included the BOM in your outputs to the PDF file, it should be present with data in every column and each column header should look sensible without having an error about ‘no data’.

Your Microsoft Excel format bill of materials will be in the BOM folder, and should open with all columns filled out. If you have a missing column with a column header that has an error, you probably missed a data field column when configuring the BOM. Head back to the output job and re-check—ensure you have all the columns your template expects made visible.

The Pick and Place folder should contain 4 files, a csv and txt file each for your board and panel. If you have multiple boards in your panel, each board should have it’s own pick and place files present.

Assembly Success

This should get you well on your way to a great relationship with your assembler. If they ask any questions or want to clarify anything related to the assembly, figure out how you can improve the files you send them so next time that question will be answered by the files themselves. It’s an iterative process and each time you send a board for assembly your generated files will hopefully get better. You will get to the point where the only questions from your assembler will be “how many do you require” and “when do you require them”.

Having your output files with the correct data in the correct format can save you days of lead time on an assembly job, and if you are reducing the amount of work your assembler needs to put in you may find your setup fees or assembly fees reduced too.

If you have any tips for working more efficiently with assemblers, feel free to share them by leaving a comment below!

You can read more about generating draftsman documents on the Altium blog. Here’s more on sending a complete documentation package to PCB fabrication, you can also talk to an Altium expert today to learn more.

About the Author

Mark Harris

Mark Harris is an engineer's engineer, with over 12 years of diverse experience within the electronics industry, varying from aerospace and defense contracts to small product startups, hobbies and everything in between. Before moving to the United Kingdom, Mark was employed by one of the largest research organizations in Canada; every day brought a different project or challenge involving electronics, mechanics, and software. He also publishes the most extensive open source database library of components for Altium Designer called the Celestial Database Library. Mark has an affinity for open-source hardware and software and the innovative problem-solving required for the day-to-day challenges such projects offer. Electronics are passion; watching a product go from an idea to reality and start interacting with the world is a never-ending source of enjoyment.

More Content by Mark Harris
Previous Article
Designing For The Mil-aero Market—ground Equipment
Designing For The Mil-aero Market—ground Equipment

Designing ground equipment for the extreme conditions presented by military environments is challenging. So...

Next Article
Dimensioned PCB Drawings for Assemblers
Dimensioned PCB Drawings for Assemblers

Mark Harris shares details on how to provide your assemblers with detailed drawings that save lead time by...