pcb

Comment 5 for bug 1843834

Revision history for this message
Chad Parker (parker-charles) wrote :

I've been thinking about this some.

Your original assertion that they should be ignored because such errors would violate the netlist, is a little bit problematic, because the netlist check isn't done by the DRC; it's done by the rat-optimizer. Additionally, the errors show up in the message window, not the DRC window. So, if you've finished your layout, you're probably not thinking about optimizing rats anymore, and you many not even have the message window open. Then you run the DRC and such an error would be easily overlooked with catastrophic consequences. The DRC does explicitly tell you do open the log and use the rat-optimizer, but I think most people read that text once, and then never look at it again. They probably just see it as a "cover-our-butts" message from the developers (which, to be fair, it kind of is), and pay it no mind.

Yes, yes, it's fairly clear that this is a test that the DRC *should* do. I'm not sure why it doesn't. That could be called a bug in the DRC. My previous efforts were primarily focused of fixing what it already did, as opposed to adding new tests. So it didn't occur to me to do this.

The other reason that I'm very reluctant to revert this behavior is that it creates a special case in the code. I've been trying to eliminate special cases, to the extent possible, as they generally make things less predictable and the code base harder to work with. If the code base were less convoluted, I'd be less reluctant, but in its current state, special cases are just waiting to cause trouble.

The two actual solutions that I see to this are:

1) as Kaimartin suggested, to make the thermal tool work for pads.

2) extend the DRC so that you can specify different parameters for different kinds of objects. That would let you specify 0 for the minimum clearance on pads.

Neither solution is trivial. Seeing as how I've actually started the first already, I suppose I will try to prioritize that.

If you want, I can create a special branch for you in the git repo that reverts this behavior in the interim, however, I don't want to do this in the master branch as I don't think it's a good long term solution.

--Chad