Backdrill
Type¶
The Backdrill
function can be used to define drill parameters for backdrilled vias.
; Note: Keyword argument names are required.
val small-drill = Backdrill(
diameter = 0.3 ; drill diameter, mm
startpad-diameter = 0.6 ; starting pad diameter, mm
solder-mask-opening = 0.8 ; Soldermask Opening diameter, mm
copper-clearance = 1.0 ; Copper Clearance Diameter, mm
)
These can then be applied to a via by specifying a side like this:
public pcb-via backdrilled-via :
start = LayerIndex(0, Top)
stop = LayerIndex(2, Bottom)
backdrill = Backdrill(bottom = small-drill)
; ...other via properties
For convenience, a single sided Backdrill
can be defined by including the side as one of the initial arguments.
This may be convenient, e.g., in the common case where a backdrill definition is only used on one side
or when defining a backdrill inline in the via that uses it:
public pcb-via alt-backdrilled-via :
backdrill = Backdrill(
side = Bottom ; Side - Top / Bottom
diameter = 0.4 ; drill diameter, mm
startpad-diameter = 0.6 ; starting pad diameter, mm
solder-mask-opening = 0.8 ; Soldermask Opening diameter, mm
copper-clearance = 1.0 ; Copper Clearance Diameter, mm
)
; ...other via properties
If side
arguments are given, Backdrill
returns a BackdrillSet
. Otherwise it returns a Backdrill
Drill depth¶
The drill depth for a backdrill is based on the via it is used with. All layers on the backdrill's side that are not part of the via will be drilled. e.g.:
public pcb-via example-via :
start = LayerIndex(0, Top)
stop = LayerIndex(2, Bottom)
backdrill = Backdrill(bottom = small-drill)
; ...other via properties
LayerIndex(2, Bottom)
. The drill depth is computed from the sum of the
copper and dielectric layers from the Bottom layer to 3rd copper layer
(zero-indexed value) from the bottom. The 3rd copper layer from the bottom is the
layer that will conduct signal for this via. The 1st and 2nd copper layers from the
bottom will be drilled out and not able to conduct or form a stub.
LayerIndex(0, Top) <- Via start
... <- Barrel of via
LayerIndex(2, Bottom) <- Via stop
LayerIndex(1, Bottom) <- Drilled
LayerIndex(0, Bottom) <- Drilled
Multiple sides¶
The Backdrill
function has overloads for defining backdrills on multiple sides:
val big-drill = Backdrill(
diameter = 0.5 ; drill diameter, mm
startpad-diameter = 0.6 ; starting pad diameter, mm
solder-mask-opening = 0.8 ; Soldermask Opening diameter, mm
copper-clearance = 1.0 ; Copper Clearance Diameter, mm
)
val big-top = Backdrill(top = big-drill, bottom = small-drill)
val small-top = Backdrill(top = small-drill, bottom = big-drill)
val only-top = Backdrill(top = small-drill)
val only-bottom = Backdrill(bottom = small-drill)
pcb-via drill-both:
start = LayerIndex(2, Top)
stop = LayerIndex(2, Bottom)
backdrill = Backdrill(top = big-drill, bottom = small-drill)
; ...other via properties
You can use top?
or bottom?
to query the drill definitions for specific sides:
val flipped = Backdrill(top = bottom?(small-top), bottom = top?(small-top))
Advanced usage¶
There are other options for defining backdrills for one, both, or neither side.
You can pass key value pairs to Backdrill
:
; Note: It is an error to pass multiple values for the same side
defn maybe-drill (drill-sides:Tuple<Side>) -> BackdrillSet:
Backdrill $ for side in drill-sides seq:
side => small-drill
You can combine sets of backdrills directly:
; Note: It is an error if there are multiple definitions for the same side
val top-and-bottom = Backdrill(only-top, only-bottom)