Author Topic: Panelising Multiple Designs onto Single Panel - Generating Pick and Place Data.  (Read 10798 times)

0 Members and 1 Guest are viewing this topic.

Offline mrpacketheadTopic starter

  • Super Contributor
  • ***
  • Posts: 2845
  • Country: nz
  • D Size Cell
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.

On a quest to find increasingly complicated ways to blink things
 

Online T3sl4co1l

  • Super Contributor
  • ***
  • Posts: 22387
  • Country: us
  • Expert, Analog Electronics, PCB Layout, EMC
    • Seven Transistor Labs
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.
Seven Transistor Labs, LLC
Electronic design, from concept to prototype.
Bringing a project to life?  Send me a message!
 

Offline mrpacketheadTopic starter

  • Super Contributor
  • ***
  • Posts: 2845
  • Country: nz
  • D Size Cell
Well, if they have different designators, it's not really the same design anymore...
Only need to be unique for the pick and place process,     

Quote
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?

Because 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.


Quote
And if you're making more than one-offs,


Alpha Prototypes, 2 peices of each.
On a quest to find increasingly complicated ways to blink things
 

Online T3sl4co1l

  • Super Contributor
  • ***
  • Posts: 22387
  • Country: us
  • Expert, Analog Electronics, PCB Layout, EMC
    • Seven Transistor Labs
Alpha Prototypes, 2 peices of each.

Well 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
Seven Transistor Labs, LLC
Electronic design, from concept to prototype.
Bringing a project to life?  Send me a message!
 

Offline DerekG

  • Frequent Contributor
  • **
  • Posts: 883
  • Country: nf
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 components have the right position data, but I have no way of telling it which part is which.

So 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.
I also sat between Elvis & Bigfoot on the UFO.
 

Offline mrpacketheadTopic starter

  • Super Contributor
  • ***
  • Posts: 2845
  • Country: nz
  • D Size Cell
Quote
Well 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).

Maybe 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 report
Create 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.





On a quest to find increasingly complicated ways to blink things
 

Offline mrpacketheadTopic starter

  • Super Contributor
  • ***
  • Posts: 2845
  • Country: nz
  • D Size Cell
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.



On a quest to find increasingly complicated ways to blink things
 

Offline free_electron

  • Super Contributor
  • ***
  • Posts: 8550
  • Country: us
    • SiliconValleyGarage
make a new blank pcb.

place -> embedded board array / panelise ... and off yo go.
you can repeat this for multiple different source files.
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline mrpacketheadTopic starter

  • Super Contributor
  • ***
  • Posts: 2845
  • Country: nz
  • D Size Cell
make a new blank pcb.

place -> embedded board array / panelise ... and off yo go.
you can repeat this for multiple different source files.

Yes, you can, but Altium looses the ability to create unique designators for the parts.
On a quest to find increasingly complicated ways to blink things
 

Offline Gribo

  • Frequent Contributor
  • **
  • Posts: 640
  • Country: ca
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.
I am available for freelance work.
 

Offline frogblender

  • Regular Contributor
  • *
  • Posts: 137
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...



 

Offline mrpacketheadTopic starter

  • Super Contributor
  • ***
  • Posts: 2845
  • Country: nz
  • D Size Cell
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


On a quest to find increasingly complicated ways to blink things
 

Offline free_electron

  • Super Contributor
  • ***
  • Posts: 8550
  • Country: us
    • SiliconValleyGarage
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 lists

A_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)

!+1
R1-> 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 pins
10 pin connecotr 2 rows of 5.
 draw one row
copy row over. while it is still selected  :designator = !+5 kablam pins 6 to 10 ...

that stuff works in pcb and schematic.

Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline frogblender

  • Regular Contributor
  • *
  • Posts: 137
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.csv  :(

BUT.... 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))_AD


So 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....   



 

Offline mikeselectricstuff

  • Super Contributor
  • ***
  • Posts: 13971
  • Country: gb
    • Mike's Electric Stuff

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.

Surely 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.)
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 

Offline frogblender

  • Regular Contributor
  • *
  • Posts: 137
Surely 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.)

It 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)
 

Offline mikeselectricstuff

  • Super Contributor
  • ***
  • Posts: 13971
  • Country: gb
    • Mike's Electric Stuff
Surely 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.)

It 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)
That's just bad organisation. Setting that stuff up properly can save a lot of setup time.
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 

Offline mrpacketheadTopic starter

  • Super Contributor
  • ***
  • Posts: 2845
  • Country: nz
  • D Size Cell
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 )..
On a quest to find increasingly complicated ways to blink things
 

Offline frogblender

  • Regular Contributor
  • *
  • Posts: 137
All of these extra fields are not avaialble in the default Assembly output.  it just creates a vanilla PNP file. This really annoyed me.   

This 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..



That's just bad organisation. Setting that stuff up properly can save a lot of setup time.
mike, 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.
 

Offline mrpacketheadTopic starter

  • Super Contributor
  • ***
  • Posts: 2845
  • Country: nz
  • D Size Cell
If your dblib params show up in the schematic properties Parameter pane, it should work.  Try it and let us know..
Quote
Yes, it does work....

On a quest to find increasingly complicated ways to blink things
 

Offline free_electron

  • Super Contributor
  • ***
  • Posts: 8550
  • Country: us
    • SiliconValleyGarage
All of these extra fields are not avaialble in the default Assembly output.  it just creates a vanilla PNP file. This really annoyed me.   

This really annoyed me too.... but as of Altium 17

you 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...
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 
The following users thanked this post: DerekG


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf