Hey Steve - just out of curiosity, what is the problem with Protel gerber files?
I'm not an Electronics designer. My only experience with Protel is to use it to output gerber/excellon files for manufacturing. I can't comment on what Protel is like as a designer's package.
However, I can
answer your question from a manufacturer's point of view. I hope I can remember all the bugs
I haven't used DXP much, so maybe they've finally fixed some of these.
First of all, two Excellon file problems. An Excellon file has a header section starting with M48, and a body section which starts after a %. For a long time Protel exported drill files with a unit code, M71 or M72 *before* the M48 (start of header).
It's probably technically incorrect to have anything *before* the M48, but perhaps the real problem is that they used the *wrong* unit code. If you exported your file in INCH mode it would start with M71 (Metric), and if you exported as METRIC it would start with M72 (Inch). They actually fixed the unit problem a few years ago, but I think they still put a unit code before the M48. An excellon file has INCH or METRIC in the header anyway, so the other M code for units is redundant even if it's correct.
The second Excellon problem is in their tool definitions. Like orcad, protel also puts drill feeds and speeds in the tool definition, though at least they put the tool definition in the header where it's supposed to be.
However, their feed and speed rates are set to 0, so there's no point even having them there (and it's stupid to have them there in any case). Also, since they put the feed and speed before the tool diameter, CAM350, at least, can't correctly read the tool definition. Actually, I blame CAM350 for that one...
Example of typical (older Protel version) excellon header,
M71 <- incorrect unit and probably incorrect M code placement
T01F00S00C0.039 <- useless F and S codes before tool diameter
I've written programs to automatically fix these, so they're not really a problem for us. But you can see why I slap my forehead at CAD package programmers
OK, now on to Gerber problems.
Protel incorrectly defines octagons in their RS274X gerbers. In RS274X, an octagon aperture definition includes a rotation code. It's actually an 8 sided regular polygon with the first point on the positive X axis. So for an octagon to have a flat bottom (which is how they look inside
protel) a rotation of 22.5 degrees must be specified. Protel exports them with a rotation of 0. They should look like this:-
%ADD10P,0.1X8X22.5*% ; Aperture definition, Dcode 10, Polygon, size 0.1, 8 sides, 22.5 rotation.
Also (from memory, not 100% sure) Protel gets the size of the octagon wrong. In RS274X files the size is the outside diameter, that is, the distance between opposite points. Protel outputs the size as the distance across the flats.
#2 Aperture size.
Older versions of Protel allowed you to set the maximum aperture size, which is not a bad idea since some photoplotters have a limit on aperture size, typically 1 or 2 inches. If the size of your pad in protel exceeded the maximum configured aperture size, protel would attempt to create the shape by 'drawing' instead of 'flashing'. In the case of octagons, at least, it would get the shape and size wrong.
#3 number of dcodes/'flash' fills.
Gerber imposed a limit on the maximum number of apertures allowed in a gerber file. The dcodes should only range from D10 to D999. Everyone ignores the limit these days, I think, including Protel. BUT, if Protel generates a gerber file with more than 990 apertures, the apertures D1000 and above have incorrect definitions. They all come out as 0 sized circles, or something like that.
The only time I've seen this happen is when 'flashes' are used to create fills. Protel must have an option to make fills out of myriads of rectangles of various sizes. Apparently this overflows an internal dcode table.
#4 The small circle shorting problem. Fills part 2
Fills in protel files are often made up of lots of thin tracks, side by side. The boundaries of these areas often have tracks around them, on the edges. It's difficult to describe, unfortunately. Perhaps you'll know what I mean.
These fill border tracks also have arcs that surround parts of fills around round pads. Sometimes this results in very short arcs of perhaps only .0005". In such a case, if you output your gerber files in 2.3 format (with a resolution of .001") the result is an arc with the start and end points rounded to the same position. In gerber format, an arc that starts and ends in the same position is a complete circle.
Thus we sometimes see films plotted that have tens or hundreds of little circles shorting out tracks and planes. It's not really incorrect gerber data, so it imports perfectly into a CAM program. The place to detect and correct it is during gerber output when the rounding happens.
#5 Fills part 3
This is not a Protel bug, just something for your information. Some protel files we get have fills made of very fine tracks spaced very close together. Perhaps .0005" tracks at .0005" spacing, and some have horizontal as well as vertical tracks, even though either would be enough to fill the space. This creates nice smoothly defined fills, however it eats enormous amounts of memory. The biggest gerber file I've seen is over 20MB. With fast computers and almost free memory these days, it's not a huge issue, but it still slows things down significantly. Protel files with such fills are also huge, of course.
Gerber format actually includes command for filled irregular polygons which would take up much less space. They can't be complex (crossing lines) but they CAN have arcs in the boundary.
For information only, later versions of Protel don't properly import Autotrax files. Advanced PCB 2.8 is the only version I'd use. The problem is in multilayer files. Inner layer pad connections get screwed up.
Another autotrax issue. If you're an autotrax user, avoid using strings of a size that is not a multiple of 12, otherwise they might appear on your board at a different size than what appears on your screen, and such text on copper layers can even cause shorts.
Also not a gerber output problem. I don't know about DXP, but in protel 99se you're inviting disaster if you use cut/paste to combine two designs into one. Even using 'paste special' you might find that 99se merges nets in the two different designs, and I've seen it silently redraw fills on one of the designs such that they randomly cross components and tracks.
#9 Protel deletes 'redundant' holes while exporting excellon files. (That is, to ensure that there is only one hole at any location). It would be nice if they also checked for overlapping or very close holes, since these cause broken drills and if spotted will most likely result in the order being held while referring the problem back to the customer.
That's all I can think of for now. This is basically a list of problems some of which, at least, are most likely quietly fixed by your PCB Manufacturer without you even knowing about them.
Feel free to send this list to Altium