Panelising Multiple Designs onto Single Panel - Generating Pick and Place Data. - Page 1
Forum section: electronics / general

author: mrpackethead
author_rank: Super Contributor
timestamp: December 22, 2015, 01:21:05 am
content: In order to minimise production costs at prototyping, i want to be able to panelise multiple designs onto a single panel.All was going well, until i ran into a snag with the Pick and Place data, as it produces a pick and place file that contains several instances of the same designator. Ie, i have several "R1" "C1" etc etc, the compoents ave the right position data, but I have no way of telling it which part is which.Is there some way of getting a unique designator out? Or is there a way of running a "Bill of materials" report ( through an outfile ) where i can customise my output..I have some potential "hacks" to approach this problem, but someone might have solved this problem.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: December 22, 2015, 04:40:45 am
content: Well, if they have different designators, it's not really the same design anymore...Why not tell the assembler you want X of this BOM and Y of this BOM, panelize and assemble as they see fit? What's wrong with that?And if you're making more than one-offs, I don't see the difference between making half and half on a single panel, and making a run of each set of panels. You're getting say ten pizzas with half pepperoni and half sausage, who cares if they're 50/50 or 5 of each.

author: mrpackethead
author_rank: Super Contributor
timestamp: December 22, 2015, 05:27:29 am
content: Quote from: T3sl4co1l on December 22, 2015, 04:40:45 amOnly need to be unique for the pick and place process,QuoteBecause that will drive the cost up significnatly. [there is madness to this method]. If you do X and Y of PCB's A and B, you end up with two jobs.. That means quite a lot of extra NRE charges. Also, becuase the jobs share a lot of the same components, theres quite big savings as well.QuoteAlpha Prototypes, 2 peices of each.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: December 22, 2015, 10:44:12 am
content: Quote from: mrpackethead on December 22, 2015, 05:27:29 amWell hell then, you've already spent more man-hours / project time bothering about it to make up the NRE! Unless engineering labor rates are *way* out of whack over there (which might well be the case, I don't know).As for actually doing it, would you want a single PCB (not necessarily tied to a project and schematics) with two instances of the board in question, where the designators differ visibly? Best way I can think would be:- Copy and paste all fab-relevant objects (traces, polys, vias, footprints, texts, cutouts, outline...) to a new PCB.- Go to PCB List Panel, view non-masked Components, sort by some useful column (say, X1). Select all designators and copy.- Paste the list of designators into a spreadsheet. Write a formula to increment them (e.g., add a '1' in front?).- Copy the new values and paste them back into the List (switch to edit mode).- Paste the original PCB again, then repeat the above operations, except:- Mask the new components (select the area, filter on selection, IsComponent)- When spreadsheet editing the designators, use a different increment (obviously)It might be reasonable to do the spreadsheet edit within Altium, using a substitution string. Select the parts and use a string like "Copy(Name,1,1) + '1' + Copy(Name,2,99)" in the "..." dialog, formula tab. This stinks if your alpha designators are more than one character (e.g. "IC-"), and doesn't seem to be very powerful (it fails very easily without comment, giving up and naming everything the literal formula... Thanks, Altium). This way you don't need to sort or anything (the only reason you should sort the PCB List is to hopefully keep it in the same order while the paste works).Tim

author: DerekG
author_rank: Frequent Contributor
timestamp: December 22, 2015, 02:06:57 pm
content: Quote from: mrpackethead on December 22, 2015, 01:21:05 amSo now you know the value in running the "renumber" script before outputting the job. This gives each component a unique identifier, ensuring there are no double ups & no missing designators.I would say (as you use the word "several") that it would be best to fix the first circuit, then simply apply the X & Y offsets required to match the panelisation of the other circuits.

author: mrpackethead
author_rank: Super Contributor
timestamp: December 22, 2015, 06:23:31 pm
content: QuoteMaybe this time around, but certainly will win in the long term, Four fully populated 4 layer PCB's ( all parts, placement ) goes from about $2000 to around $600. Since we do this about 30 times a year, thats ~$40k pa saving. That menas i can spend around 400 hours doing it. But i'll spend about 10 hours sorting this out i guess.I've come up with a bit of a workflow;Create single pcbs as per normal, create PNP files as per normal through a outfile reportCreate a new "panel" pcb, and then use the embedded panel feature, to put panels on the board as required, plus any tooling, routing etc. Note the rotation and offsets ( have to make sure you use consistent origins for the boards ).. Assign each pcb an artbitory "letter" so its got somethign unique.Import the pnp files that were created, Parse them through a ugly but workable script, that applies teh rotations and and Modifies the desginators..Cat all the PNP files togetehr.. Done.

author: mrpackethead
author_rank: Super Contributor
timestamp: December 22, 2015, 06:56:05 pm
content: Thought i should probably add a few other contstraint notes;-The pcb material, pretty much is always the same, its a 4 layer controlled impedance board, with microvias/blind vias etc. The cost to make a 12" wide panel versus a few single pcbs is only a very small incremetnal cost.. For example, a 2x4" board would cost me $170 for pces, 5 panels at 12" x 6" only about $250.-I need to stick to 12" wide panels. This means it goes through the PCBa process without changing the machinery setup. Thats not really an issue.

author: free_electron
author_rank: Super Contributor
timestamp: December 22, 2015, 07:00:36 pm
content: make a new blank pcb.place -> embedded board array / panelise ... and off yo go.you can repeat this for multiple different source files.

author: mrpackethead
author_rank: Super Contributor
timestamp: December 22, 2015, 11:28:29 pm
content: Quote from: free_electron on December 22, 2015, 07:00:36 pmYes, you can, but Altium looses the ability to create unique designators for the parts.

author: Gribo
author_rank: Frequent Contributor
timestamp: December 23, 2015, 06:39:29 am
content: I solved it in a slightly different manner.I created two copies of each schematic, each one had different room assigned to it. Then, I made a single PCB with all the schematics as a single design. The downside is that the copies are just that, copies, not instances (Changes in one do not affect the other).I think it might be possible with a hierarchic design to do instances.

author: frogblender
author_rank: Regular Contributor
timestamp: August 24, 2017, 05:16:14 am
content: Hey MrPacketHead.... what did you end up doing?I have the same issue: putting two designs (Design#1 and Design#2) onto one panel.... but the "R1's", for example, on each design happen to be different values.I was considering sorting the PNP by X,Y..... and since Design#2 is on the right-side of my panel, I'll manually prepend "2_" to any component with X > 150mm (or whatever). Then I'll prepend "2_" to everything in Bom#2. And I should be golden, for a small amount of manual labor.But I'd like to know if you found a better way...

author: mrpackethead
author_rank: Super Contributor
timestamp: August 24, 2017, 08:56:54 am
content: Now when i look back at this thing were a bit different..PCBs were much more expensive, and there were silly business ( not technical ) rules that drove pricing...Now, as a general rule i never panelise differnet pcbs onto the same panel, Its just not worth the hassle..However i have got one job that has two 'realted' pcbs on teh same panel, because it made sense, and i do run them through the pnp line at the same time.Our machine cant' actually place two jobs at the same time, and swapping between them and passing the board thrugh twice was annoying. I just appended the second boards data into the pnp file ( just a csv ) and added the required offsets. Our machine actually doe'snt care what you call the part.. You can have as many R1's as you like becuase each line of the file just becomes an entry. Many PNP setusp work like this.Ultiamtely this will come down to the machinery / fab you are dealing with. Sorry for not giveing you a better answer

author: free_electron
author_rank: Super Contributor
timestamp: August 24, 2017, 01:35:00 pm
content: copy the design files into one design file.select the components from one design and in the pcb inspector panel, in the 'designator' field, type 'A_'+!for the next board you use 'B_+!etc ...you will now get a bom that listsA_r1 ...A_u1...B_R1...B_u1 ...the ! operator means 'whatever is already there'equations are processed 'designator' style.meaning :- if it ends in a number or is a number we add to the number- if it is not a number or does end in a letter we concatenate- quotes mean 'character', not number.so !+'1'R1 -> R11 (quotes used for '1' so concatenate)QP -> QP1 (quotes used for '1' so concatenate)!+1R1-> R2 (no quotes used so number and r1 is a numerical end so increment )QP -> QP1 (no quotes used so number and QP is non-numerical so concatenate )you can do that stuff when editing pins10 pin connecotr 2 rows of 5.draw one rowcopy row over. while it is still selected :designator = !+5 kablam pins 6 to 10 ...that stuff works in pcb and schematic.

author: frogblender
author_rank: Regular Contributor
timestamp: August 24, 2017, 03:01:06 pm
content: All of the above involve manual diddling, or permanently befouling your designators, or other drawbacks. mrpackethead is right in that the pnp machine doesn't care abour designators; it just needs to know: 1) a component's position, and, 2) which feeder# to grab it from.The guy programming the pnp machine sees R1 in pnp.csv, then looks up R1 in the bom for a partnumber PN#XYZ, and checks which feeder# he put the reel with PN#XYZ.So pnp.csv doesn't have to contain designators.... it could contain partnumbers instead.... but my custom parameter "Supplier Part Number" on all my schematic components is not getting passed to PCB, and thus can't be included in pnp.csvBUT.... altium appears to have fixed this, and Parameters are now being passed to the PCB:http://www.altium.com/documentation/17.0/display/ADES/NFS_17_0((Support+for+Parameters+in+PCB+Footprints))_ADSo in schematic: Design -> Update PCB Document, and "kablam!" all the Parameters are now passed to the PCB components.... and "kablam!" again, I can generate a pnp.csv which includes the partnumber.So to summarize:My pnp.csv will contain partnumbers and positions. It will not contain designators.My bom is just the boms from Design#1 and Design#2 concat'td.And all should be good.... although I'll have to try....

author: mikeselectricstuff
author_rank: Super Contributor
timestamp: August 24, 2017, 03:23:22 pm
content: Quote from: frogblender on August 24, 2017, 03:01:06 pmSurely the pnp file already contains the "value" field for the part type, so has no need for references at all ( other than progress indication, tagging for omitting etc.)

author: frogblender
author_rank: Regular Contributor
timestamp: August 24, 2017, 03:27:18 pm
content: Quote from: mikeselectricstuff on August 24, 2017, 03:23:22 pmIt does, but "value" is not reliable for telling the PNP machine which feeder to grab from (lots of my components have a value of "10"... which can mean 10pF or 10ohm)

author: mikeselectricstuff
author_rank: Super Contributor
timestamp: August 24, 2017, 07:24:45 pm
content: Quote from: frogblender on August 24, 2017, 03:27:18 pmThat's just bad organisation. Setting that stuff up properly can save a lot of setup time.

author: mrpackethead
author_rank: Super Contributor
timestamp: August 24, 2017, 07:59:40 pm
content: I'm now using my own dblib, which is a database driven library in Altium. My parts have quite a few more parameters in them that are really handy for me. An example is "placement type".. [ SMT, TH, PCB Only, Hand Assembly, DNP ] etc etc. My database also contains infomation about where my parts are stored etc.All of these extra fields are not avaialble in the default Assembly output. it just creates a vanilla PNP file. This really annoyed me. However there is a reletively simple workaround. In stead of using the Assembly output, i use a BOM output report. You just remove all the group by paramters, and arrange your feilds how you want them. It will putput to a CSV file.In my case, i have some custom python scripts that parse the PNP file and create a Yamaha VIOS file, ( which is a hidious thing! ) which the PNP machines can directly read. My PNP machines have a 'library' of parts.. When i load the PNP files, i do a 'parts match', and the machine matches the part values with the library, and boom, its all programmed ready to go.. ( almost ).. This was a lot of work, and its custom to my setup, but its now very efficent, and i can get a new board from altium --> PNP in a matter of minutes, plus what ever time it takes to put any new required parts on the machine line. ( mostly i'm now only adding a single reel etc )..

author: frogblender
author_rank: Regular Contributor
timestamp: August 25, 2017, 01:54:00 am
content: Quote from: mrpackethead on August 24, 2017, 07:59:40 pmThis really annoyed me too.... but as of Altium 17 (check the weblink I gave above), it is fixed ! I am very excited! Any and all Parameters(in schematic: double-click a component to bring up the Properties panel; the right-side pane contains the Parameters)are now passed to the pcb layout when you Design -> Update PCB Document.They will then ALL be available when generating pnp.csv: File -> Assembly Outputs -> Generates pick and place files, and bask in the glory.If your dblib params show up in the schematic properties Parameter pane, it should work. Try it and let us know..Quote from: mikeselectricstuff on August 24, 2017, 07:24:45 pmmike, I think you might've missed the issue here; namely: altium wouldn't pass schematic component parameters to the layout. But now it does. One's organizational state is neither here nor there.

author: mrpackethead
author_rank: Super Contributor
timestamp: August 25, 2017, 10:04:49 am
content: Quote from: frogblender on August 25, 2017, 01:54:00 am

author: free_electron
author_rank: Super Contributor
timestamp: August 31, 2017, 04:48:00 pm
content: Quote from: frogblender on August 25, 2017, 01:54:00 amyou have always been able to produce much more complicated reports. ( at least since protel 99 .... )simply create a bill of material. in the bottom of the window click 'include parameters from pcb' . now you can add the pick and place coordinates, board side and much more to your BOM ... in short : you now have access to all data from schematic AND pcb in one table. so you can massage at will...