Note this solution will only work for pins that are not connected in the schematic and imported by netlist. It will not work for footprints created in PcbNew without a matching schematic symbol…
WARNING: my performance optimizations to rule checking last night had a catastrophic error. Don’t expect anything useful out of last night’s nightly if you use rules…
[Edit: I have pushed a fix if you build your own…]
I am design a board with some options to assembly the power regulation (linear or switching). To save board space and force only one to assembly, I am using one footprint over other in the board region.
Is it possible to use a rule to disable the courtyard check for one specific component?
I am also using hierarchical page design and thinking.
Is it possible to propagate a rule to all different instances of one part in each hierarchical sheet / group? (I imaged that not, but just to hear some discussion/possibility).
In case of re-annotation / change of reference values of some.
May I need to be concern if this part compose some rule declaration? Os is there some update procedure such the ${foo:REFERENCE} variables.
I’m not sure about the courtyard question, @JeffYoung?
Not directly (this is somewhat related to the Rooms feature planned for V7). I think the only way to do this in V6 would be to use special symbol fields unless Jeff can think of another.
Yes you need to be concerned about this, there is no automatic way to update if you have a rule referencing U10 and you reannotate it to U20. Then again, this has also been my experience with commercial tools If you like to reannotate parts after you start layout, I recommend not writing rules that use part references personally (there is usually another way)
I want to put a progressive track-to-* clearance restriction with exception of the next voltage point (e.g. v0+ to v1+, that have a lesser voltage diference). The aggravating situation if that I use few of this circuits inside hierarchical blocks. So, the rules that I designed use * operator and are:
@JeffYoung it great to see new rule-based DRC. Way back we discussed BGA escape routing. I am not clear on this in the new rule-based system. Is it possible to have an area around a BGA with one set of rules, and then another set outside that area? For instance, traces at 3/3 under a BGA, then 3/5 outside the BGA area.
Yes. We renamed “keepouts” to “rule areas” in 5.99 precisely for situations like this: you can now create a rule area, give it a name, and reference it in DRC rules (those rules don’t necessarily have to be keepout rules)
Basically it should work (at least according to my personal logical intuition) but it doesn’t.
EDIT: not allowing overlap for two copper items of different nets makes sense. But it should be possible for copper/edge. Maybe a new keyword for edge_clearance, for example ‘allow_overlap’ or ‘ignore’ or ‘none’?
Basically what you are asking for is to create conditions where some checks are completely disabled. This is useful for a number of scenarios but I think is not yet possible.
For 6.0 your best bet will be to mark these violations as ignored, I think.
Unfortunately it also means I can’t conveniently route castellated pads. This can be very counterproductive. One castellated edge can have tens of pads and each one has to be routed using highlight collisions mode.
I think this is “kind of” a regression, as the router didn’t look at edge clearance before. Can we easily change it so that clearance <= 0 allows collisions?
Well, 0 might have meaning (“no clearance required, but collisions not OK”).
It would be very easy to have < 0 disable the edge-clearance test, but it sets a precedent that it might work elsewhere (and it might be much harder to implement for the copper-clearance rule). I was sort of hoping for some flash of inspiration that didn’t require “magic” numbers…
That’s true. I think the best way would be to add a new keyword and allow you to say (constraint edge_clearance disabled) but I’m not sure how invasive that would be.