Community
Fusion Electronics
Working an electronics project and need help with the schematic, the PCB, or making your components? Join the discussion as our community of electronic design specialists and industry experts provide you their insight and best practices.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

ODB output format error

15 REPLIES 15
SOLVED
Reply
Message 1 of 16
mike.durian
427 Views, 15 Replies

ODB output format error

While previewing the ODB output for my project, I noticed Cuprum threw some errors. Cuprum reported a problem parsing the ';ID=xxxx' part found in many of the ODB files. For example,

 

 

P 14 12.4 10 P 0 0;ID=1451

 

 

I asked Cuprum's author about these errors thinking semicolons might indicate the start of comments. Here is his response (short version, it is a bug in Fusion 360). I took a quick look at the ODB standard and what the author says below also applies to 'L' and 'S' records, which F360 also generates incorrectly.

 

Unfortunately, the part after the semicolon is not a comment. As per the ODB spec, after the first semicolon there should be attributes with values, hence Cuprum is trying to convert the ‘ID=‘ part to an attribute, at which it (logically) fails.
 
It seems the Fusion 360 ODB output is invalid at this point, as the spec states that two semicolons need to be output when there are no attributes for the line. It defines a ‘P’ record as follows:

 

 

P <x> <y> <apt_def> <polarity> <dcode> <orient_def>;<atr>=<value>,...;ID=<id>

 

 

And also provides an example:

 

 

P 1.0 2.0 0 P 4 1;;ID=3948

 

 
It seems Fusion 360 omits the additional semicolon when it has no attributes.
15 REPLIES 15
Message 2 of 16
yqliu
in reply to: mike.durian

Thanks for your feedback @mike.durian .  @constantin.popescuXD3CL, do you have any comments about this issue?

 

 

 

Message 3 of 16

Hi Mike,

This sems to be an issue indeed. The extra semi-colon should be there but it is not getting output. I will add a ticket for this bug and we'll fix it as soon as possible. In the meantime you can turn OFF the following option: "Export ODB++ Entities Unique Ids" in the ODB++ Output header in the CAM Processor UI before you generate the ODB++ output. This should circumvent this issue but I can't recall if it could have other un-intended consquences brecause the Unique IDs are used elswhere in the ODB++ output.

 

Kind Regards,

 



Constantin Popescu
Principal Software Engineer
Message 4 of 16

Hi @constantin.popescuXD3CL ,

I'm bumping this thread. I cannot use ODB++ with my board house (Sierra Circuits) because the output is incorrect. If I leave the IDs enabled, we get the error I described above. If I disable IDs, the output is also incorrect because many record types require IDs. For example, Pad records.

 

With IDs disabled, I get output like:

Screenshot 2023-06-27 at 8.45.31 AM.png

 But the standard requires two semicolons and the ID as shown here:

Screenshot 2023-06-27 at 8.47.58 AM.png

 The standard does not indicate that the ID is optional.

 

So, either way, I end up with invalid ODB++ output and board manufacturer kicks them out. They have to use Gerbers instead.

 

I think fixing the ID bug would be rather straightforward. Is there anyway you can bump this bug's priority?

Message 5 of 16

Hi Mike,

I am not sure why this is still an issue for you because it was fixed in April 4 release. Are you by any chance on an older Fusion 360 build? Can you please check you Fusion 360 build number and let me know? Looking at the image you have posted that does look incorrect and doesn't match the changes I have made. Here is the sik-screen layer export from a generated ODB++ output from a design thta I have used to test my changes in January:

constantinpopescuXD3CL_0-1687906186955.png

As you can see the extra semicolon is present. Can you please check the CAM JOB ODB++ output options and turn the IDs back on if they are not on and see if that makes any difference? Thanks. 

Please let me know how you go with this.

 

Kind Regards,

 

 



Constantin Popescu
Principal Software Engineer
Message 6 of 16
mike.durian
in reply to: mike.durian

Hi @constantin.popescuXD3CL ,

I'm running Fusion v2.0.16265, which I believe is current. It looks like you fixed the P records but you missed the S records (and maybe others?).

 

I just generated fresh ODB files. One set with IDs off and one set with IDs on. The screen shot from my post above hasn't changed. It shows an invalid P record because it is missing two semicolons and the IDs. This is not surprising since I generated it with IDs off. Since ODB without ID records does not follow the standard, this probably shouldn't even be an option.

 

Here is some output I generated when IDs are enabled.

IDs On.png

 Note there is only a single semicolon. There should be two to denote an empty set of attributes.

ODB S Record Def.png

Perhaps the tools used by Sierra Circuits are complaining about something else entirely, but they kicked out my ODB files both with and without ID. They only sent me an error image for the no ID case.

Sierra ODB report.png

This error corresponds to the line I highlighted in the no ID case. I don't know what the variable n denotes, but I'm guessing it is unhappy because the line is not valid according to the standard.

 

As for tracking down the missing semicolon problem, get Cuprum from the Apple Store (https://apps.apple.com/us/app/cuprum/id1088670425?mt=12). You'll need to pay for the app to get the ODB++ support. It flags lines that are missing the semicolon. Run some tests through it and see if you can find more cases that are missing the semicolon.

Message 7 of 16
mike.durian
in reply to: mike.durian

Or use grep if you don't want to purchase Cuprum

find odb -name features -print0 | xargs -0 grep ';' | grep -v ';.*;'

In my outputs, all I find are the S records in a number of different layers.

Message 8 of 16

Hi Mike,

Apologies for this, you are correct I did miss the ; for Surface features. I will fix it now and I will let you know when this fix will be available. I have Valor ODB++ Viewer that is only available on Windows and this was supposed to be the source of truth but it doesn't flag these errors for whatever reason. I would've been able to catch them from the begining.

Please let me know if there is anythign else I can help you with.

 

Kind Regards,

 



Constantin Popescu
Principal Software Engineer
Message 9 of 16

Hi Mike,

Just to let you know that I have fixed this remaining issue and the fix will be available in the September Release of Fusion 360.

Please let me know if there is anythign else I can help you with.

 

Kind Regards,

 



Constantin Popescu
Principal Software Engineer
Message 10 of 16
mike.durian
in reply to: mike.durian

Thank you, Constantin!

 

I don't know if it falls under your purview, but the issue I reported here is another bug relating to CAM Processor output.

 

mike

Message 11 of 16

Hi Mike,

I have seen your IPC-D-356 netlist issue and I understand what the issue is. I will add a ticket and pass it to one of my collegues and hopefully it'll be fixed soon. I will let you know when we have a fix for it.

 

Kind Regards,

 



Constantin Popescu
Principal Software Engineer
Message 12 of 16
mike.durian
in reply to: mike.durian

Thanks!

Message 13 of 16

Hi @constantin.popescuXD3CL ,

I just updated to version 2.0.17453 and I'm still seeing a missing ';' when generating ODB IDs on some feature lines. In particular, They are missing from 'P' lines like this one:

P 4 9.3 0 P 0 0;0=1,2=0;ID=2254

What that supposed to be fixed in this release, or has it been pushed out?

 

mike 

Message 14 of 16

Hi Mike,

I am pretty sure that issue should've been fixed. Can you send me an example and I will have another look. Thanks.

 

Kind Regards,

 



Constantin Popescu
Principal Software Engineer
Message 15 of 16

Hey Mike,

You can send the ODB++ output directly to me. My email address is: constantin.popescu@autodesk.com

 

Thanks,

 



Constantin Popescu
Principal Software Engineer
Message 16 of 16
mike.durian
in reply to: mike.durian

This was my mistake. The ODB++ is correct. For those following along at home, I was seeing false positives on lines with attributes. In those lines the first of the two expected semicolons appears early in the line. They do not have the back-to-back semicolons ';;' that I was looking for.

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums