Forum: Platinen Altium: Design Rule mit PadClass tut's nicht


von Markus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe hier eine Platine, wo ein Befestigungsloch direkt an den Rand 
gesetzt werden muss.
Beim DRC gibts immer eine Violation der Clearence Rule (all-all), so 
dass ich mir überlegt habe, das Befestigungsloch von dieser Regel 
auszunehmen.

Hierzu habe ich eine PAD Class angelegt und die Clearence Regel 
entsprechend abgeändert (not in padclass).
Leider gibt's immer noch eine Violation.

Wo liegt der  (Denk-)Fehler ?

Vielen Dank,

Markus


PS: klar, ich könnte die Geometrie des Befestigungsloches anpassen. 
Trotzdem interessiert mich, warum die Regel nicht funktioniert...

von Markus (Gast)


Angehängte Dateien:

Lesenswert?

Der Vollständigkeit halber hier nochmal die Auflistung aller 
Clearence-Regel'n. Die ALL-ALL Regel ist noch da, aber deaktiviert.

Markus

von Ralf (Gast)


Lesenswert?

Hallo,

ich nehme an das ist die Linie vom Keeout-layer!

Clearence funktioniert zwischen elektrischen Netzen und nicht zwischen 
Pad und Keepout-Linie.

Alternativ kannst du ja den Linie um die Bohrung herumführen oder bei 
Placement suchen, ob das eine Regel besser zutrifft...

von Ralf (Gast)


Lesenswert?

...bei placement findet man doch nichts.

von Markus (Gast)


Lesenswert?

Ralf schrieb:
> Clearence funktioniert zwischen elektrischen Netzen und nicht zwischen
> Pad und Keepout-Linie.

Sorry, Versteh ich nicht. Das Problem ist ja gerade, dass die Clearence 
Regel zuschlägt (und dabei die Bedingung "not in PadClass" ignoriert).

Wenn ich GND vom Pad wegnehme, gibt's keine Violation. Insofern stimmt 
es, dass Clearence nur bei (zumindest einem) elektrischen Netzen 
funktioniert.

Die Frage ist halt, warum wirkt die Bedingung "not in PadClass" nicht ?

von Taz (Gast)


Lesenswert?

Du müsstet die Padclass explizit ausschliessen.Also nicht not in 
Padclass (das wäre das Gleiche wie all to all) sondern

inPadclass('Loch') to all
und die Clearances auf 0 setzten dann darf es den KeepOut berühren.
Aber es geht leider nicht mit negativen Werten.

Wenn es nur ein Befestigungsloch ist, dann nimm das GND-Netz weg. So 
sollte der Clearance Check nicht anschlagen.



PS: Die Bohrung ist sehr nah am Rand, könnte ein Anruf vom 
Platinenhersteller geben.

PPS: Im zweiten Screenshot hab ich gesehen, das Du die all to all 
disabled hast das kann ganz schön Ärger für das System bedeuten und 
unvorhergesehene Dinge auslösen (einige Elemente bleiben unbearbeitet). 
Grundsätzlich ist die all to all IMMER die letzte Regel (niedrigste 
Prio).

von Taz (Gast)


Lesenswert?

Nur mal so aus Spass, mach das Pad mal:
X=3mm, Y=1.5mm; Offset from Hole Center 1mm - 0mm
und Rechteckig

sieht doch besser aus oder ?

von Markus (Gast)


Lesenswert?

Taz schrieb:
> Du müsstet die Padclass explizit ausschliessen.Also nicht not in
> Padclass (das wäre das Gleiche wie all to all) sondern

> PPS: Im zweiten Screenshot hab ich gesehen, das Du die all to all
> disabled hast das kann ganz schön Ärger für das System bedeuten und

Ich habe ja die all-all regel so angepasst (und umbenannt), dass alles 
ausser des Befestigungsloches geprüft werden soll. Die Regel bleibt 
also (mit aussnahme des Loches) erhalten. Zumeíndest war so meine 
Überlegung.

> inPadclass('Loch') to all
> und die Clearances auf 0 setzten dann darf es den KeepOut berühren.

Nee, geht leider nicht. Gibt ne Violation "(collision <0mm)"

>
> Wenn es nur ein Befestigungsloch ist, dann nimm das GND-Netz weg. So
> sollte der Clearance Check nicht anschlagen.
Stimmt, schlägt nicht an. Das ist aber keine Option. Über dieses Loch 
wird GND mit dem Gehäuse verbunden. (Ist also nicht nur ein 
Befestigungsloch).

>
> PS: Die Bohrung ist sehr nah am Rand, könnte ein Anruf vom
> Platinenhersteller geben.

Wurde so schon (in einer älteren Version) produziert. Ist also wohl kein 
Problem. Trotzdem danke für den Hinweis.

>Nur mal so aus Spass, mach das Pad mal:
>X=3mm, Y=1.5mm; Offset from Hole Center 1mm - 0mm
>und Rechteckig

Ok. Das ist auch ne gute Lösung.

Ich habe mich jetzt für dem Workaround von Ralf entschieden, die KeepOut 
Linie um das Loch herumzuführen (bzw. zu unterbrechen).


Vielen Dank für Eure Hilfe,

Markus

von frankman (Gast)


Lesenswert?

Du must die Priorität Deiner Rule ganz nach oben setzen....

von Taz (Gast)


Lesenswert?

Markus schrieb:
> Ich habe ja die all-all regel so angepasst (und umbenannt), dass alles
> ausser des Befestigungsloches geprüft werden soll. Die Regel bleibt
> also (mit aussnahme des Loches) erhalten. Zumeíndest war so meine
> Überlegung.

ist ja auch richtig, nur sollte generell eine all to all Regel an 
letzter Stelle stehen (wird im AltiumLive Forum dringlichst drauf 
hingewiesen) auch wenn eigentlicht schon alles vorher abgedeckt sein 
sollte - schaden kann es ja nicht .
Für dein Pad z.B. trifft keine Regel zu, hast Du ja ausgeschlossen also 
ist dein Pad quasi 'undefined', was uns zu deinem ursprünglichen 
Denkfehler führt.

Mit 'not in Padclass' machst Du eine Regel für alles AUSSER deinem Pad, 
Du wolltest aber eine Regel, die für dein Pad gilt und die Berührung 
erlaubt.


Markus schrieb:
>> inPadclass('Loch') to all
>> und die Clearances auf 0 setzten dann darf es den KeepOut berühren.
>
> Nee, geht leider nicht. Gibt ne Violation "(collision <0mm)"
Bei mir funktioniert es, ich komme bis fast ganz dran

von Markus (Gast)


Lesenswert?

Taz schrieb:
> Für dein Pad z.B. trifft keine Regel zu, hast Du ja ausgeschlossen also
> ist dein Pad quasi 'undefined', was uns zu deinem ursprünglichen
> Denkfehler führt.
Genau deshalb verstehe ich nicht, was zu der violation führt. Es gibt ja 
keine Regel, welche auf das Pad zutrifft und diese Violation auslösen 
könnte.

> Mit 'not in Padclass' machst Du eine Regel für alles AUSSER deinem Pad,
> Du wolltest aber eine Regel, die für dein Pad gilt und die Berührung
> erlaubt.
Ich wollte dass die all-all regel das Pad nicht trifft, also eine Regel, 
die für alles ausser dem Pad gilt. Es gibt also keine Regel für das Pad 
also auch keine Violation (dachte ich).

>
> Markus schrieb:
>>> inPadclass('Loch') to all
>>> und die Clearances auf 0 setzten dann darf es den KeepOut berühren.
>>
>> Nee, geht leider nicht. Gibt ne Violation "(collision <0mm)"
> Bei mir funktioniert es, ich komme bis fast ganz dran

Ok. Das war ein Verständigungsproblem: fast ganz dran geht, aber eben 
nicht drüber.

Markus

von Markus (Gast)


Lesenswert?

So,

ich glaube, ich habe jetzt den Grund gefunden, warum die Regel immer 
noch anschlägt: es müssen beide Object's mit "not in Padclass" 
ausgewählt werden.

Ist aber wohl, wie ich jetzt gelernt habe keine saubere Lösung: die 
all-all Regel, die ja dringend empfohlen wird, würde trotzdem noch 
zuschlagen...

Markus

von Taz (Gast)


Lesenswert?

Markus schrieb:
> Es gibt also keine Regel für das Pad
> also auch keine Violation (dachte ich).

Ich weiss auch nicht wie Altium das intern verarbeitet, aber ich stell 
mir das so vor als ob man mit einer nicht initialisierten Variable 
arbeitet meist hat man Glück und sie ist Null aber halt nicht immer und 
erst Recht nicht verlässlich. Wenn das Pad durch die Routine vom 
Clearance Check geschickt wird und kein IF trifft zu, was soll dann raus 
kommen?

von Markus (Gast)


Lesenswert?

Taz schrieb:
> erst Recht nicht verlässlich. Wenn das Pad durch die Routine vom
> Clearance Check geschickt wird und kein IF trifft zu, was soll dann raus
> kommen?

Naja, "keine Violation" halt. Eben das gleiche, als wenn garkeine Regel 
vorhanden wäre...

Aber egal. Ich hab ja einen Workaround der funktioniert.

Markus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.