How to convey component fields from schematic to footprints?

On my schematics I add a field to symbols that contains the company’s own inventory number for each part: Example (somewhat fake)

Reference: R101
Value: 10k
XCoPN: 23-B103

I would like the XCoPN field to appear on the PCB footprint, ultimately in an assembly drawing. I can see how to manually add such a field to a footprint, and make it visible on a particular layer, position it and so on…

But how do I create that footprint field and populate it with data automatically from the schematic?

I am using 5.1.9-1, but if this is something that improves in 6.x, that would be interesting too.

You an do it in 5.99 using variable syntax ${symbolfieldname}.

Thanks for your answer – that’s good to know. So I’m assuming there’s no easy way to do this in 5.1.9.

Unfortunately not on the PCB and any asset generated from the PCB. AFAIK, in 5.1.x the only component data transferred to the PCB is Ref’D, Value, Footprint, and TimeStamp. (The timestamp is the default link between the symbol in the schematic and the footprint on the board, replaced by UUID in 5.99.) Thus any custom fields that you put into the schematic simply don’t exist in the PCB file. If you use the schematic for BOM generation then you can get all the custom fields exported into a table format that you could then use in a (custom) script to merge the BOM with the placement file generated from the PCB. I’m personally unaware of any such script so that might be up to you (or your organization) to create.

Yes, schematic --> custom BOM --> other uses is something we do. However, it would be a bit more complicated to get that data into the actual PCB file, both the code to do it, and the workflow.

It sounds like the 5.99 way of doing it solves all that. However, we are using Kikit for panelization, and so far as I know, Kikit for 5.99/6.0 is waiting for the Python API to include certain functions and to stabilize.

@gwideman, here is a video to do exactly (use your field “XCoPN” instead of my “MNF” field and chose another layer instead of silkscreen) what you need in v5.99: https://www.youtube.com/watch?v=G3PZiaexLuI&list=PLI2zpJ7KYrZswdSv8uvwbMbb9uqmhI2Nu. It was not possible in v5.1 as far as I remember (I use v5.99 at work, there are no issues with it).

1 Like

Thanks, that will be useful. Eagerly awaiting 5.99’s Python API and Kikit, so we can make the jump.