Forum: Platinen Design-Rules in Altium UND behandelt als OR?


von Alzium (Gast)


Lesenswert?

Hallo,

ich habe ein kleines Verständnisproblem mit den Design-Rules von Altium.

Hier mal die Regel:
First Object:
InLayerClass('Top and Bottom') AND InNetClass('Extern')

Second Object:
InLayerClass('Top and Bottom') AND (InNetClass('All Nets') AND NOT 
InNetClass('EXTERN')AND NOT InNetClass('PE'))


Nun habe ich die Regel bewusst verletzt, indem ich einen Track auf 
Toplayer der Netzklasse "Extern" mit einem der Netzklasse "Intern" zu 
dicht herangeführt habe.

Warum löst die Regel aus?
Die Abfrage: InLayerClass('Top and Bottom') müsste doch strenggenommen 
immer false sein, da nur entweder Top oder Bottom gleichzeitig erfüllt 
ist. Altium scheint die Regel selbsttätig als InLayerClass('Top or 
Bottom') zu behandeln, also mit einer Oder-Verknüpfung, die dort aber 
nicht steht.

Auch wenn man die Regel InLayerClass() aufstellt und sich die Vorschläge 
zur Autovervollständigung per Space-Taste anzeigen lässt, dann gibt 
Altium entweder "Mid" oder "Top and Bottom" zur Auswahl, aber kein "Top 
or Bottom"

Wenn man die Regel selbsttätig zu "Top or Bottom" ändert, funktioniert 
sie übrigens gar nicht mehr.

von Wühlhase (Gast)


Lesenswert?

Alzium schrieb:
> Die Abfrage: InLayerClass('Top and Bottom') müsste doch strenggenommen
> immer false sein, da nur entweder Top oder Bottom gleichzeitig erfüllt
> ist.

Nein. Es gibt eine Layer-Klasse, die "Top and Bottom" heißt. Es ist aber 
nur eine Layerklasse, die den Top-Layer UND den Bottom-Layer beinhaltet.
Und in dieser einen Layer-Klasse kann ein Objekt natürlich vorkommen 
oder nicht.

von Taz G. (taz1971)


Lesenswert?

Wühlhase hat es ja schon geschrieben, wenn es in Anführungszeichen steht 
ist es ein String z.B. 'Max und Moritz'. Mich wundert es nur, dass Du 
eine Klasse mit Namen 'Top and Bottom' hast, die habe ich nicht per 
Default.

Aber warum ich antworte ist, weil ich glaube  InLayerClass('Top and 
Bottom')    ist nicht was Du willst. Objekte auf dem Multilayer wie Pads 
und VIAs werden nicht erfasst. Onlayer() wäre daher auch nicht das 
Richtige.
Ich denke, was Du haben möchtest ist (ExistsOnLayer('Top Layer') or 
ExistsOnLayer('Bottom Layer')) and ...

PS: InNetClass('All Nets') lässt sich abkürzen durch InAnyNet. Zudem 
nimmst Du NoNet Objekte damit aus, ich weiss nicht ob bewusst. Einfach 
mal überlegen ob NoNet Element von dieser Rule betroffen sein sollen 
oder nicht.

: Bearbeitet durch User
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.