Other useful things to have :
- body check : verify no silkscreen exists underneath any bodypart of a step file touching the pcb surface. This is especially important for things like SOP , DFN and other leadless packages. The thickness of the physical ink is enough to create pillowing problems during soldering.
- automatic sliver removal. A rule is set that no solder mask structures smaller than x should exist. X is a parameter set in the pcb file. Any violating object is automatically stripped. Some fabs can make 3 mil soldermask features, some can only do 5 or 6. I can simpy set the rule and if there are slivers. (Espcially on 0.5mm pitched parts and below ) they are removed automatically.
Sliver detection works on soldermask and silkscreens ( should be an independent rule for both )
- automatic via tenting with pullback rule. It is a bad idea to completely cover a via with soldermask s it traps moisture in the hole. The soldermask needs to be 'opened' over the hole. Even then setting the soldermask opening to the hole size is not good. It needs to be (via holesize + constant). That constant is settable through a rule. Of course, if the via is assigned as fab or assembly testpoint ( top or bottom) then that side is opened fully, the other on closed
- thermal bleed prevention. In a library part i want to be able to specify that a pad is a not only electrical but also thermal . This creates automatically a "via farm" and a lattice pastemask that avoids the via holes. Lattice spoke width , via hole is driven from a rule , or can be set per instance through a dialog.
Backside has option to enable flood th same size as oldersize, and option to create bleedstop-rings in soldermask. That will require me showing you a drawing of such structure. These things are a pain to make by hand , but can be done in code very easily. If the software can do this it solves hours of spit and polish on a design...
- thermal spoke width assignable per net / class / device / pad.
I can throw a collection of nets , or parts in a class. To this class i can apply a rule that, if the via needs thermal spokes into the plane : this is the width, and the plane cartwheel opening. No most cad tools use a uniform width setting for the spokes. That does not make sense for high power traces connecting to the planes. Even achip like the broadcomm used on the rpi has pulsed currents of several amps on several balls.. you cant do that with 4 mil spokes...
- circular thermal / power via stitching. Click on a pad and have the tool place vias around the pad , at a set distance set from the hole , with a given via to via space (driven from rules either global or class based)
Essentially the tool needs to look at the via diameter , add the offset and create an imaginary circle of that number. On the circumference of that circle it places as many vias as possible of a given size ( hole and via size ) using the hole-to-hole clearance rules. Now these cloverleafs have to be made by hand. With this thing you simply specify the objects that need this and the tool injects them ( kind of like teardropping )
You can set rules like:
If (holesize >= 1.2) and (innet [busbar,vcc,gnd,v12]) and (incomponent [c12,c4,c19,relay9]) then createcircularstitch (holesize=0.2mm , padsize = 0.5mm , offset = 2mm hole2hole = 2.1mm)
This would create a stitch only on pins of 1.2mm that belong to components c2 c4 c9 or relay9 , and are wired to any of the given nets. Other nets / pinsizes/ parts are untouched.
It would create acircle of 1.2mm + 2mm = 3.2 mm diameter , with on its circumference vias of 0.2mm holesize and 0.5mm padsize. How many ? ((3.2mm * pi) / 2.1) degrees apart.
I have a truckload of other idea's but you can start with this...