A better via model from potential theory

Created at , last modified at in «Electronics»

My project padne needs a better via model. At the moment, it simply punches a hole in the copper layer and stitches the layers with a bunch of discrete resistors in the vertical direction. This severely overestimates the "across" resistance of the via presented to the layer.

With this model, current flowing on the top layer "across" the via, would have to take a detour all the way down to the bottom layer and then back up again. In reality, the current of course flows "around" the via barrel.

Continuous field scattering model#

Let's first investigate a continuous version of the problem: consider a conductive plane in the xy plane of sheet conductivity σp\renewcommand{\vec}[1]{\boldsymbol{#1}} \sigma_p with a circular hole of radius r\renewcommand{\vec}[1]{\boldsymbol{#1}} r centered at the origin. A finite cylindrical barrel of length h\renewcommand{\vec}[1]{\boldsymbol{#1}} h is attached at the edge of the hole, with a sheet conductivity of σb\renewcommand{\vec}[1]{\boldsymbol{#1}} \sigma_b. The conductive plane is subject to a uniform current density J0\renewcommand{\vec}[1]{\boldsymbol{#1}} J_0 oriented along the x\renewcommand{\vec}[1]{\boldsymbol{#1}} x at infinity.

h r σ p σ b J x y z

This is a fairly standard field scattering type problem, so let's work through it*Years after graduation, I still sometimes need to prove to myself that I have not gotten significantly dumber.. First, we split the domain into two regions: the plane and the barrel. In the plane, we use polar coordinates (ρ,φ)\renewcommand{\vec}[1]{\boldsymbol{#1}} (\rho, \varphi) and on the barrel we use cylindrical coordinates (z,φ)\renewcommand{\vec}[1]{\boldsymbol{#1}} (z, \varphi). This is conveniently just a restriction of cylindrical coordinates to our domain, meaning we can just use standard textbook differential operators without any exotic transformations.

ρ φ z plane z = h barrel

Solving the PDE#

In the following, I am going to abuse notation as is tradition in physics: I will suppress the arguments of the functions and implicitly merge the two regions into one domain. It will be clear from context which region is being referred to based on the variable names.

First, let's write down Ohm's law and charge conservation (remember that the current source is "at infinity"):

J=σVandJ=0.\renewcommand{\vec}[1]{\boldsymbol{#1}} \vec{J} = -\sigma \nabla V\qquad\text{and}\qquad \nabla\cdot\vec{J} = 0.

As the conductivity σ\renewcommand{\vec}[1]{\boldsymbol{#1}} \sigma is constant except on the boundary where we don't require full differentiability anyway, we can push Laplace's equation as expected

ΔV=0\renewcommand{\vec}[1]{\boldsymbol{#1}} \Delta V = 0

on the interior of both the barrel and the plane. In coordinates, for the plane:

ρρ(ρρV)+φ2V=0\renewcommand{\vec}[1]{\boldsymbol{#1}} \rho\,\partial_\rho \left(\rho\,\partial_\rho V\right) + \partial_\varphi^2 V = 0

and for the barrel

φ2V+r2z2V=0.\renewcommand{\vec}[1]{\boldsymbol{#1}} \partial_\varphi^2 V + r^2 \partial_z^2 V = 0.

This screams separation of variables, so let's start on the plane by

V=R(ρ)P(φ)\renewcommand{\vec}[1]{\boldsymbol{#1}} V = R(\rho)P(\varphi)

and plopping this into the corresponding PDE gets us

ρPR+ρ2PR+PR=0,\renewcommand{\vec}[1]{\boldsymbol{#1}} \rho P R' + \rho^2 P R'' + P'' R = 0,

meaning we have

ρRR+ρ2RR=PP.\renewcommand{\vec}[1]{\boldsymbol{#1}} \rho\frac{R'}{R} + \rho^2\frac{R''}{R} = -\frac{P''}{P}.

As usual, the left hand side depends only on ρ\renewcommand{\vec}[1]{\boldsymbol{#1}} \rho, the right hand side depends only on φ\renewcommand{\vec}[1]{\boldsymbol{#1}} \varphi, therefore they are constant and equal to some λR\renewcommand{\vec}[1]{\boldsymbol{#1}} \lambda \in \mathbb{R}. Proceeding to solve the easier RHS first:

PP=λthusP=λP.\renewcommand{\vec}[1]{\boldsymbol{#1}} -\frac{P''}{P} = \lambda \qquad\text{thus}\qquad P'' = -\lambda P.

Now, this is an ODE with some solution space depending on sign of λ\renewcommand{\vec}[1]{\boldsymbol{#1}} \lambda. We remember that due to our setup, we have these things going for us:

  • the solution has to be 2π\renewcommand{\vec}[1]{\boldsymbol{#1}} 2\pi-periodic in φ\renewcommand{\vec}[1]{\boldsymbol{#1}} \varphi, otherwise we lose continuity at the "seam" of the polar coordinate,
  • the entire setup is mirror-symmetric around x\renewcommand{\vec}[1]{\boldsymbol{#1}} x axis, forcing P(φ)=P(φ)\renewcommand{\vec}[1]{\boldsymbol{#1}} P(\varphi) = P(-\varphi),
  • the potential V\renewcommand{\vec}[1]{\boldsymbol{#1}} V can be shifted by any additive constant, so we pick 0,
  • if P\renewcommand{\vec}[1]{\boldsymbol{#1}} P was pure constant, then this would produce an outward/inward radial current that is not sourced anywhere.

With these constraints, we get an λ=m2\renewcommand{\vec}[1]{\boldsymbol{#1}} \lambda = m^2 for mN+\renewcommand{\vec}[1]{\boldsymbol{#1}} m \in \mathbb{N}^+ and AmR\renewcommand{\vec}[1]{\boldsymbol{#1}} A_m \in \mathbb{R}

Pm(φ)=Amcos(mφ).\renewcommand{\vec}[1]{\boldsymbol{#1}} P_m(\varphi) = A_m \cos(m\varphi).

So we have learned that our modes are quantized. The other ODE then drops out as

ρ2R+ρRm2R=0,\renewcommand{\vec}[1]{\boldsymbol{#1}} \rho^2 R'' + \rho R' - m^2 R = 0,

which is somewhat more annoying but can be resolved to

Rm(ρ)=Bm+ρm+Bmρm.\renewcommand{\vec}[1]{\boldsymbol{#1}} R_m(\rho) = B_m^+ \rho^m + B_m^- \rho^{-m}.

And together we have, on the interior of the plane,

Vm=RmPm=Amcos(mφ)(Bm+ρm+Bmρm).\renewcommand{\vec}[1]{\boldsymbol{#1}} V_m = R_m P_m = A_m \cos(m\varphi)\left(B_m^+ \rho^m + B_m^- \rho^{-m}\right).

At this point, it is convenient to drop out some solutions by our boundary condition on the current at infinity J\renewcommand{\vec}[1]{\boldsymbol{#1}} \vec{J}. We know that we desire

limρJ=J0x0=J0(ρ0cosφφ0sin(φ)).\renewcommand{\vec}[1]{\boldsymbol{#1}} \lim_{\rho \to \infty} \vec{J} = J_0 \vec{x_0} = J_0 (\vec{\rho_0}\cos\varphi - \vec{\varphi_0}\sin(\varphi)).

Doing some staring, this effectively forces Bm+=0\renewcommand{\vec}[1]{\boldsymbol{#1}} B_m^+ = 0 for m2\renewcommand{\vec}[1]{\boldsymbol{#1}} m \geq 2 as otherwise the limit would not even exist.*It is also going to constrain the coefficients, but we are going to look at that later at a general stitching-the-solutions and boundary conditions phase This means we get the general solution for the plane part (with some yet another coefficient renaming) as

V=Aρcos(φ)+m=1am(ρr)mcos(mφ).\renewcommand{\vec}[1]{\boldsymbol{#1}} V = A \rho \cos(\varphi) + \sum_{m = 1}^\infty a_m \left(\frac{\rho}{r}\right)^{-m}\cos(m\varphi).

It's also worth plotting the integral curves of V\renewcommand{\vec}[1]{\boldsymbol{#1}} \nabla V. This reveals a clean split between the "forced" term coming from the uniform current excitation and "corrective" terms that are going to serve to match the barrel boundary conditions.

A ρ cos φ the forced term a₁ (r/ρ) cos φ the m = 1 mode a₂ (r/ρ)² cos 2φ the m = 2 mode

Solving the barrel#

For the barrel we say

V=W(φ)Z(z)\renewcommand{\vec}[1]{\boldsymbol{#1}} V = W(\varphi)Z(z)

yielding

WZ+r2WZ=0thusWW=r2ZZ.\renewcommand{\vec}[1]{\boldsymbol{#1}} W'' Z + r^2 W Z'' = 0\qquad\text{thus}\qquad -\frac{W''}{W} = r^2 \frac{Z''}{Z}.

This one is much simpler. Solving

W=μW\renewcommand{\vec}[1]{\boldsymbol{#1}} W'' = -\mu W

yields to the same argument as the P\renewcommand{\vec}[1]{\boldsymbol{#1}} P case before, giving us μ=m2\renewcommand{\vec}[1]{\boldsymbol{#1}} \mu = m^2

Wm(φ)=Cmcos(mφ).\renewcommand{\vec}[1]{\boldsymbol{#1}} W_m(\varphi) = C_m \cos(m\varphi).

For Z\renewcommand{\vec}[1]{\boldsymbol{#1}} Z we get

Z=(mr)2Z\renewcommand{\vec}[1]{\boldsymbol{#1}} Z'' = \left(\frac{m}{r}\right)^2 Z

The solution space is spanned*A similar argument as before can be used to remove m = 0 here: no net current entering or exiting the barrel. by

cosh(mrz)andsinh(mrz).\renewcommand{\vec}[1]{\boldsymbol{#1}} \cosh\left(\frac{m}{r} z\right) \qquad\text{and}\qquad \sinh\left(\frac{m}{r} z\right).

Leaving out the details, we now want to force the top end of the barrel boundary condition. That is, no current crosses out or in, meaning we require Z(h)=0\renewcommand{\vec}[1]{\boldsymbol{#1}} Z'(h) = 0. Shuffling this around gives us

Zm=Dmcosh(mr(hz))cosh(mrh).\renewcommand{\vec}[1]{\boldsymbol{#1}} Z_m = D_m \frac{\cosh\left(\frac{m}{r}(h - z)\right)}{\cosh(\frac{m}{r} h)}.

Putting this together with some parameter renaming grants us

V=m=1bmcos(mφ)cosh(mr(hz))cosh(mrh).\renewcommand{\vec}[1]{\boldsymbol{#1}} V = \sum_{m=1}^\infty b_m \cos(m \varphi) \frac{\cosh\left(\frac{m}{r}(h - z)\right)}{\cosh(\frac{m}{r} h)}.

Once again it pays to look at the integral curves of V\renewcommand{\vec}[1]{\boldsymbol{#1}} \nabla V. The barrel is a cylinder, so we can cut it along the xz\renewcommand{\vec}[1]{\boldsymbol{#1}} xz plane and unroll one half of it flat, putting φ\renewcommand{\vec}[1]{\boldsymbol{#1}} \varphi on the horizontal axis and z\renewcommand{\vec}[1]{\boldsymbol{#1}} z on the vertical one.

0 π/2 π φ m = 1 0 π/2 π φ m = 2 0 h z

Figuring out the seam#

Now we need to ensure continuity on the boundary between the plane and the barrel. We evaluate at z=0\renewcommand{\vec}[1]{\boldsymbol{#1}} z = 0 and ρ=r\renewcommand{\vec}[1]{\boldsymbol{#1}} \rho = r and any φ\renewcommand{\vec}[1]{\boldsymbol{#1}} \varphi.

Arcos(φ)+m=1amcos(mφ)=m=1bmcos(mφ).\renewcommand{\vec}[1]{\boldsymbol{#1}} A r \cos(\varphi) + \sum_{m = 1}^\infty a_m\cos(m\varphi) = \sum_{m=1}^\infty b_m \cos(m \varphi).

So we have b1=Ar+a1\renewcommand{\vec}[1]{\boldsymbol{#1}} b_1 = Ar + a_1 and for m>1\renewcommand{\vec}[1]{\boldsymbol{#1}} m > 1 we just get am=bm\renewcommand{\vec}[1]{\boldsymbol{#1}} a_m = b_m.

But, that is not all. We also need to ensure charge conservation, that is, total current entering the seam should equal current leaving the seam. We remind ourselves that J=σV\renewcommand{\vec}[1]{\boldsymbol{#1}} \vec{J} = -\sigma \nabla V, where σ\renewcommand{\vec}[1]{\boldsymbol{#1}} \sigma is σp\renewcommand{\vec}[1]{\boldsymbol{#1}} \sigma_p on the plane and σb\renewcommand{\vec}[1]{\boldsymbol{#1}} \sigma_b on the barrel. The current flow entering the barrel edge from the plane is

σpρVρ=r=σpAcos(φ)σpm=1ammrcos(mφ).\renewcommand{\vec}[1]{\boldsymbol{#1}} \sigma_p \partial_\rho V\big|_{\rho = r} = \sigma_p A\cos(\varphi) - \sigma_p \sum_{m=1}^\infty a_m \frac{m}{r} \cos(m\varphi).

And the flow entering the barrel is

σbzVz=0=σbm=1bmcos(mφ)mrtanh(mrh).\renewcommand{\vec}[1]{\boldsymbol{#1}} -\sigma_b \partial_z V\big|_{z = 0} = \sigma_b\sum_{m=1}^\infty b_m \cos(m\varphi) \frac{m}{r} \tanh\left(\frac{m}{r} h\right).

Meaning we want to match

σpρVρ=r=σbzVz=0.\renewcommand{\vec}[1]{\boldsymbol{#1}} \sigma_p \partial_\rho V\big|_{\rho = r} = -\sigma_b \partial_z V\big|_{z = 0}.

Let's bundle our mess of coefficients into a single dimensionless parameter per angular mode. This is effectively the barrel/plane conductance ratio as seen by that particular mode:

κm=σbσptanh(mrh).\renewcommand{\vec}[1]{\boldsymbol{#1}} \kappa_m = \frac{\sigma_b}{\sigma_p} \tanh\left(\frac{m}{r} h\right).

For m2\renewcommand{\vec}[1]{\boldsymbol{#1}} m \geq 2 we get

am=κmbm.\renewcommand{\vec}[1]{\boldsymbol{#1}} a_m = -\kappa_m b_m.

Now since from the continuity condition we have am=bm\renewcommand{\vec}[1]{\boldsymbol{#1}} a_m = b_m for m2\renewcommand{\vec}[1]{\boldsymbol{#1}} m \geq 2 and κm>0\renewcommand{\vec}[1]{\boldsymbol{#1}} \kappa_m > 0, this immediately kills the higher order modes by requiring am=bm=0\renewcommand{\vec}[1]{\boldsymbol{#1}} a_m = b_m = 0 for m2\renewcommand{\vec}[1]{\boldsymbol{#1}} m \geq 2.

From the m=1\renewcommand{\vec}[1]{\boldsymbol{#1}} m = 1 case we get

Ara1=κ1b1.\renewcommand{\vec}[1]{\boldsymbol{#1}} Ar - a_1 = \kappa_1 b_1.

This gives us

a1=1κ11+κ1Arandb1=2Ar1+κ1.\renewcommand{\vec}[1]{\boldsymbol{#1}} a_1 = \frac{1 - \kappa_1}{1 + \kappa_1} A r\quad\text{and}\quad b_1 = \frac{2Ar}{1 + \kappa_1}.

From the far-field condition on J\renewcommand{\vec}[1]{\boldsymbol{#1}} \vec{J} we also get

A=J0σp.\renewcommand{\vec}[1]{\boldsymbol{#1}} A = -\frac{J_0}{\sigma_p}.

So, writing the final solution. On the plane

V=J0σp(ρ+1κ11+κ1r2ρ)cos(φ)\renewcommand{\vec}[1]{\boldsymbol{#1}} V = -\frac{J_0}{\sigma_p}\left(\rho + \frac{1 - \kappa_1}{1 + \kappa_1}\frac{r^2}{\rho}\right)\cos(\varphi)

and on the barrel

V=J0σp2rκ1+1cos(φ)cosh(1r(hz))cosh(1rh).\renewcommand{\vec}[1]{\boldsymbol{#1}} V = -\frac{J_0}{\sigma_p}\frac{2r}{\kappa_1 + 1} \cos(\varphi) \frac{\cosh(\frac{1}{r}(h - z))}{\cosh(\frac{1}{r}h)}.

On the barrel, this is just the m=1\renewcommand{\vec}[1]{\boldsymbol{#1}} m = 1 mode we have already plotted. Let's set some reasonable parameters and explore how the plane integral curves look like with the combined forced term and the first mode:

κ₁ = 0.3 current flows around κ₁ = 1 the hole is invisible κ₁ = 3 current is pulled in the current that goes down the barrel

This should help interpreting the physical meaning of

κ1=σbσptanh(hr).\renewcommand{\vec}[1]{\boldsymbol{#1}} \kappa_1 = \frac{\sigma_b}{\sigma_p} \tanh\left(\frac{h}{r}\right).

If the barrel happens to be conductive a lot more than the plane*Not very common, since vias are usually plated in addition to the copper foil already present on the premade PCB material sheet., we get κ1>1\renewcommand{\vec}[1]{\boldsymbol{#1}} \kappa_1 > 1 and thus current preferentially being forced into the barrel. The converse happens when the barrel is less conductive.

For σb=σp\renewcommand{\vec}[1]{\boldsymbol{#1}} \sigma_b = \sigma_p, we always get κ1<1\renewcommand{\vec}[1]{\boldsymbol{#1}} \kappa_1 < 1 so the current flow is always disrupted in some fashion. Sending h\renewcommand{\vec}[1]{\boldsymbol{#1}} h \to \infty, that is, increasing the length of the barrel sends κ11\renewcommand{\vec}[1]{\boldsymbol{#1}} \kappa_1 \to 1 asymptotically, meaning the via becomes closer and closer to being unobstructive.

Interpreting this for the via model#

Now all of this was quite fun, but how does it become a via model? Let's step back and think about how the conductive barrel hole presents to the plane electrically and then model something that is easy to model inside of padne.

Grab the potential at the boundary:

V(r,φ,0)=b1cos(φ)\renewcommand{\vec}[1]{\boldsymbol{#1}} V(r, \varphi, 0) = b_1 \cos(\varphi)

and the current inflow is

Jz(r,φ,0)=σpκ1b11rcos(φ).\renewcommand{\vec}[1]{\boldsymbol{#1}} J_z(r, \varphi, 0) = \sigma_p \kappa_1 b_1 \frac{1}{r} \cos(\varphi).

Notice that we can match the points φ\renewcommand{\vec}[1]{\boldsymbol{#1}} \varphi and φ+π\renewcommand{\vec}[1]{\boldsymbol{#1}} \varphi + \pi, computing conductance-per-arc-length as

ψ(φ)=Jz(r,φ,0)V(r,φ,0)V(r,φ+π,0)=σpκ1b11rcos(φ)2b1cos(φ)=σpκ12r\renewcommand{\vec}[1]{\boldsymbol{#1}} \begin{align*} \psi(\varphi) &= \frac{J_z(r, \varphi, 0)}{V(r, \varphi, 0) - V(r, \varphi + \pi, 0)} \\ &= \frac{\sigma_p \kappa_1 b_1 \frac{1}{r} \cos(\varphi)}{2b_1 \cos(\varphi)} \\ &= \frac{\sigma_p \kappa_1}{2r} \end{align*}

Convenient. Now we can integrate the conductances and get a sort of "effective total conductance of the first mode" as

Σ1=0πψ(φ)r dφ=π2σpκ1.\renewcommand{\vec}[1]{\boldsymbol{#1}} \Sigma_1 = \intop_0^{\pi} \psi(\varphi)\, r\ d\varphi = \frac{\pi}{2} \sigma_p \kappa_1.

The idea is in the picture below:

φ φ + π

And we are done: padne can model discrete resistors easily, meaning the via model is just "stitching" the top with appropriate number of resistors, splitting the effective total conductance between them. With N\renewcommand{\vec}[1]{\boldsymbol{#1}} N equally spaced antipodal pairs around the rim, each pair gets conductance

Gi=Σ1N=π2Nσpκ1=π2Nσbtanh(hr)\renewcommand{\vec}[1]{\boldsymbol{#1}} G_i = \frac{\Sigma_1}{N} = \frac{\pi}{2N} \sigma_p \kappa_1 = \frac{\pi}{2N} \sigma_b \tanh\left(\frac{h}{r}\right)

in between them. This adds the missing lateral current flow that was not captured by the previous model, leaving the vertical model untouched.

As a practical implementation note it's worth stating that this models in effect only a "half-via", with a dead end barrel. A practical implementation will use h/2\renewcommand{\vec}[1]{\boldsymbol{#1}} h/2 as the effective height and replicate this structure both on top and on the bottom of the barrel.