Here are a few ways to tackle this issue:
- Just look at the Minimum Clearances in CES. Minimum is not really used, it is just an "OR" of all the rules in CES and shows you what the minimum rule is out of all your rules. If those are larger or equal to what you are looking for and the design passes DRC then you are good to go.
- Use Valor for organic substrates or Calibre for silicon substrates and those tools have rules to determine minimum copper separation.
- I have also used HyperLynx DRC to do this. It has a graphics engine that can OR copper together and determine if one shape is too close to another. I have written rules for HypDRC to do this and in the newest build, it has a Creepage rule built in. You can find more info on the Creepage Rule here: Dealing with Creepage in Power Design and Routing | LinkedIn
Many thanks for your replay. I am also using Valor to get the minimum clearance.
The minimum copper clearance/width for External/Internal layers are used for the notes in MFG drawings. Every designer has its own way how to get these, Valor, Hyperlynx ... My idea is to have a script which will generate a text file with the clearances and widths and then just copy-paste to notes, this script could be then used by all designers within the company. There is no problem to get minimum widths but the clearances I need the real minimum once not the minimum set in CES.
image001.jpg 332 bytes
The trick to doing this is that you have to get references to the objects you want to find clearances for as objects of data type object. Like this:
Dim vias As MGCPCB.Vias
Dim via As MGCPCB.Via
Dim via1, via2 As MGCPCB.Via
Dim obj1, obj2 As Object
Dim s As Double 's is the via to via spacing
Dim n as Integer
vias = doc.Vias(1)
If not vias.Count = 2 Then
MsgBox("Select 2 vias, then try again.")
n = 0
For each via in vias
if n = 0 then
via1 = via
via2 = via
n = n + 1
obj1 = via1
obj2 = via2
Dim cl As MGCPCB.Clearance
cl = doc.Clearance
s = cl.GetClearanceRule(obj1, obj2, app.Gui.ActiveRouteLayer, app.Gui.ActiveRouteLayer, 0)
And you have to use the GetClearanceRule function. It works with anything.
2 of 2 people found this helpful
Here an example how to get the min clearance between 2 selected items as trace2pad for an example
--> puts all idents of the selected objects in an array
Set mobj1 = pcbDoc.FindObjectById(ident(0))
Set mobj2 = pcbDoc.FindObjectById(ident(1))
myactualclearance = pcbDoc.Clearance.GetActualMinClearance(mobj1, mobj2)
That's good. Thanks for sharing.
Thank You guys.