Saturday, July 30, 2022

AD22.7.1 Variant = DNI - Fitted / Not Fitted Bug

 DNI - L202 ?  Not-Fitted on Assy Dwg






















L202 is shown as Fitted in the Schematic DNI Variant





















Current Variant = DNI













Houston, we have a problem. Red = DNI on Assy Dwg
Specifically note L202 and more bogus looking DNIs on the Assy dwg

Looking at the project *.PrjPcb file in Notepad++

I see multiple entries for L202 and several other duplicated designators with different Unique IDs.





Also I see U? & H? however there are no un-annotated components in the design.

Suggested Workaround

Print a PDF version of the existing schematic for reference and sanity checks.

Use a customized BOM to find the correct Unique ID for the Designators.

Or review the Unique ID for each component:

Preferences > General > Advanced > System.UI.IPP.ShowUniqueID

Related Link:   Unique ID - Show Enabled

Close Altium and use a text editor to delete the incorrectly duplicated designators in the *.PrjPcb file. Then open the project in Altium and review the schematics and drawings.


Comments to my Customer 

We will need to work together to get through this DNI bug I found in the Ceres3 project.

Just curious . . .

How did Ceres3 come into being ?  
Cloned A365 or a Copied project file ?

How did this Happen ?

Note the engineer did not intentionally reset any Unique IDs by using a Unique ID Reset button or script.

Engineers will save one or more Schematic.SchDoc files from a project then add the saved Schematic.SchDoc files to a different project.

When a Schematic.SchDoc is added to another project there may be duplicate designators depending on what designators are already in other sheets.

Next the engineer re-annotates the sheets to resolve the duplicate Designators and now the Variant data in the *.PrjPcb file is a Train Wreck.

Also there is a statically rare but not impossible chance that one or more Unique IDs could be duplicated.

You may have a better understanding how this happens after reading these links

Component Links - Part 1
Component Links - Part 2

Observations:
 
Looking at L202 in the *.PrjPcb file
 
Variation46=Designator=L202|UniqueId=\VWGFHICD|Kind=0|AlternatePart= 
 
A fitted component (Kind=0) with NO Alternate Part does not need to be included in the Project Variant data that is stored in the *.PrjPcb file.
 
As shown in Draftsman L202 was shown as Not-Fitted while in Schematic L202 is shown as Fitted.  This leads me to believe that the code base (Algorithm)  used to determine which parts are not fitted is not consistent between the Schematic and Draftsman,
 
It appears to me the Schematic is updated by reading all of the Variations found in the *.PrjPcb file and using the last found Variation for the designator.
 
It appears to me the Draftsman drawing is updated by reading the Variations found in the *.PrjPcb file and using the first found Variation for the designator. 
 
Unique IDs for every component in the design are not included in the *.PrjPcb file, therefore when Draftsman is reading the *.PrjPcb file and updating the drawing it must be assuming the first found Variation for L202 is correct regardless of the Unique ID which did not match the Unique ID of the part in the schematic.
 
In the case of duplicated Designators my findings indicate that the last entry of the same Designator for the Variation in the *.PrjPcb file is correct while the previous entries may or may not be correct.
 
 
Possible Solutions and Suggestions:
 
Draftsman should be updated by reading all of the Designator Variations found in the *.PrjPcb file and using the last found Variation for the designator.
 
Suggestion, remove unused variations from the *.PrjPcb file, for example . . .
Variation46=Designator=L202|UniqueId=\VWGFHICD|Kind=0|AlternatePart=
 
Because a fitted component (Kind=0) with NO Alternate Part does not need to be included in the Project Variant data that is stored in the *.PrjPcb file.

When the user re-annotates the Designators in a Project that would the appropriate time to cleanup the *.PrjPcb file.

End of Story !

No comments:

Post a Comment