Transferring no-fit/variant info from design tools

Apologies if this feature already exists and I failed to find itā€¦
I have an Altium design where I donā€™t want all the parts fitted, so I used Altiumā€™s variant management system to set up a variant with the correct parts fitted. I used the push-to-Aisler (ODB) system, and selected the variant for the output job before clicking ā€˜Generate and publishā€™.
But when I looked at the design in the Aisler website, all the parts were listed for fitting, even those I had set to be omitted in the variant.
I ended up manually configuring each part that needed to be omitted from the build, a tedious and error-prone process.
Can we have a better way (not manual entry of each part) to specify which parts are to be fitted, instead of just assuming every part in the PCB design is to be fitted? If there was a way to separately upload a BoM, as others have requested, that would be an acceptable solution which would work for all design tools.
In addition, I suspect that if I had used the variant system to change the fitted parts for some locations, that information would not have been transferred over either. Again, a BoM upload facility would be a solution for that.

Hi @matten! Just to be sure we are talking about the same: fitted mean whether they should be included in assembly and are not marked as excluded in BOM, right? We import this information from ODB++, so those parts should automatically be marked as excluded. Can you provide me some details how the fitting decision flag is stored in Altium? You can also DM me the project token, so I can take a look at the generated ODB++ file.

Yes, I think weā€™re talking about the same thing - whether each component should be fitted/placed, or no-fit/excluded. This is part of what you can set up as a ā€˜build variantā€™ in Altium, together with making changes to the type of part that is fitted.
I think that Altium stores the variant information in the ā€˜ProjectVariantNā€™ sections of the .PrjPcb file. I donā€™t know enough about ODB to know whether this type of information is usually sent to the ODB output data.
I will DM you the project ID.

I took a look at the ODB++ file. It does not contain any information whether the part should be excluded/not fitted. I am sorry, as long as it is not included I am afraid we will have no chance to automatically import it.

My only suggestion is to take a closer look at how the ODB++ export within Altium is configured. I noticed that the latest documentation mentions a checkbox to include variant configuration in the export, see Preparing Fabrication Data | Altium Designer 24 Technical Documentation. You can give it a try and if it does not work send the file in via a support email referencing this topic.

OK, after enabling ā€˜ODB.Improvementā€™ in the Advanced settings window to enable this ā€˜open betaā€™ feature in Altium, there is now an option to ā€˜Include Variants Dataā€™ in the ODB++ configuration options.
With this enabled, I can see that there is now variant information in the odb\steps\pcb\layers\comp_+_top\components file. Each component now has a ā€˜PRP VARIANT_INSTANCEā€™ line that lists all the variants for which the component is placed/fitted. Note that data for all variants are included, choosing a variant for the output doesnā€™t seem to have any effect on the ODB data.
I tried pushing this to Aisler (I will DM you the project ID), and no parts were marked as excluded. This doesnā€™t surprise me, there would have to be a way for me to select which variant was wanted before this could work.
Worse that that, I tried changing the value of a resistor as part of the variant definition, and while this did generate ODB information in the form of a ā€˜PRP ASSY_PN_OVERRIDEā€™ line for the component, as far as I could tell the only information about the component variation was an internal part number for the new resistor value, so there is no MPN for you to look up.
Itā€™s your decision, but it seems to me that your best option would be to add support for a CSV BoM upload, rather than trying to support a beta feature of Altium that doesnā€™t include all the necessary information for varied parts.

Thank you for investigation! Under these circumstances, I agree that it will be hard to automatically exclude those components or import actual MPNs for variations.

In the case you need to get multiple variations of the same board assembled, please contact our staff for a dedicated offer.

Looking at the ODB++ spec, I see that BoM information is meant to be stored in a steps/<step_name>/boms/<bom_name>/bom file, but Altium is not generating this, whether or not the beta variant output feature is enabled.
If I were to add this file myself, would it be understood and used by your import tools?

The standard defines this file indeed. Unfortunately, only some PCB design tools fill those files, so Altium is not special here. And those that do it, do it with incomplete information and add the interesting fields as properties in the components file. We therefore extract all necessary fields from there. I guess that is the difference between the specification and how a standard is actually lived.

Do you plan to put the effort in it because of the automatic exclusion or the automatic assignment?

Iā€™m considering writing a Python script to modify the ODB++ data to apply both part exclusions and part replacements according to the Altium variant data.
From what you have told me, if I do write this then I should make it change the components file rather that try to create a bom file. This is useful to know, thanks.

1 Like