Electronics > Altium Designer

Is it possible use a formula for electrical clearance in Altium?

(1/2) > >>

matrixofdynamism:
In Altium Designer we can specify the electrical clearance between all sort of objects, esepcially between nets and between net and other objects.

Often we have to specify rules that specify minimum distance between one net and another as a function of the net width. This has confused me a bit. If two nets have different widths, and we have specified clearance based on net width (e.g clearance value is twice the net width), which of the two will take precedance?

There is a bigger issue. The track width of impedance controlled tracks is determined automatically by the Altium designer through input from the impedance profile. When such a track moves from one layer to another, the width of the track will change, due to law of physics, in order to ensure the same characteristic impedance. Now the question arises here, how does one automatically specify to Altium designer, to use the dynamic width of the track that depends on which layer it is on as it travels from sourch to destination, for the clearance rule? In other words, since the width changes as the signal travels from one layer to another, if the clearance is specified as twice the track width, Altium will need to re-evaluate the value of clearance since the clearance is a function of the PCB track width.

I hope my question is clear. I am not sure how Altium deals with this. I think that for things like DDR tracks, there must be some sort of special mechanism to assign rules that make the whole task easier. The design rules concept in Altium Designer is neat but I fear that for complex designs, it might become a big mess (containing query langauge instructions) that is difficult to navigate for normal humans.

T3sl4co1l:
If you're setting width by net and layer, then simply use the same selection rules in the other rule class, and enter the respective clearances.

Diff pairs specifically are their own rule, including clearance, spacing and width.  They require a plane to calculate impedance, or you enter the dimensions verbatim.  Planes suck, so, that's the usual way.

Unless this was overhauled in more recent versions, but I don't think so?

Tim

KaneTW:
No planes needed anymore:

matrixofdynamism:
I think my question was not clear. Often the clearance between net and other objects is supposed to be specified as twice width of the net. Thus, the clearance is a function of the net width. Now if a net has multiple tracks across multiple PCB layers and these tracks differ in their width so the target impedance can be achieved on all layers, how does one specify the clearance value?

As far as I know, the clearance value is a static number. We cannot specify it as a formula as far as I am aware. Please see the attached image, it shows what exactly I am talking about.

T3sl4co1l:
Right, rules are fairly simple, they don't permit relational or referential expressions like "IsTrack AND (Width * 2)".  Likewise there's no expression like, set comment to the value of some component property; or set X/Y to something nearby or touching, etc.

The next best thing you can do is something like, OnLayer('each layer') AND (IsTrack OR IsArc) AND (Width > 10) AND (Width < 15) and set 20 to 30 clearance, and so on for each class you want.

Just how often are you routing a huge spectrum of trace widths, anyway?  And what does it matter that any of them have very particular clearance?  Edgewise coupling is very small so it makes little difference to impedance (clearance to ground fill) or crosstalk (to neighboring traces).

Probably, some / a lot of this can be automated with scripts if you like, but I don't know of any offhand for a task like that.

Tim