# Analysis of a Single Ended Via for Proper Placement of Ground Return Vias for 40+ Gbps Signaling

This example shows how to model the return path of single ended printed circuit board vias using the via analysis feature in RFPCB Toolbox `viaSingleEnded`

.

The first release of the via analysis feature combines a detailed, efficient model of the via return path with a simplified model of the via barrel to enable detailed analysis of the effect of nearby ground return vias (GRVs) on the high frequency performance of the via. As demonstrated through measurement and modeling [1, 2], GRVs can produce resonances at high frequencies, with surprising results. This example demonstrates how you can use the via analysis feature to reproduce the model results present in [1]. The via analysis feature has also been used to model crosstalk in differential vias [3].

For more information, see Eigenmode-Based Solver for PCB Vias.

### Board set-up

The structure under study is a single PCB layer for one of the single ended via sites designated as “square” in the figure below. The via sites are shown as black circles, and you can see how the single ended traces are routed to those vias. The GRVs are shown as grey circles [1].

A single ended via is surrounded by a 2mm square of GRVs. There are additional GRVs outside of the square, and this example shows you how to model a total of eight GRVs in this pattern.

This example gradually builds the structure under study by adding one or more GRVs in each section, starting with one GRV. Each section shows the analysis and results for the geometry in that section so that you can observe how the via response changes with each additional GRV or GRVs.

The following code shows how you can describe the board geometry and materials programmatically.

#### Board Parameters

Define board dimensions

d = 1.9990e-04; % Via barrel diameter, m D = 7.8892e-04; % Antipad diameter, m vSignalViaAntipad = antenna.Circle('Radius',D/2); kbi0_ch0 = [0.2653 0.1175]; % Signal Via Locations, m kbi0_ch0_grv = [0.2643 0.1185 0.2643 0.1165 0.2663 0.1165 0.2663 0.1185]; % Ground Return Via Locations, m

#### Material properties of Megtron 7

The following code defines a dielectric object that describes the propagation constant as a function of frequency for the dielectric used in the layer containing the via [4].

Er = 3.15; % Dielectric permittivity tand = 2e-3; % Dielectric loss tangent T = 2.2027e-04; % Dielectric layer thickness, m fspec = 1e9; % Dielectric frequency specification, Hz sub = dielectric(Name="MEG7",EpsilonR=Er,LossTangent=tand,Thickness=T,... Frequency=fspec) % Substrate

sub = dielectric with properties: Name: 'MEG7' EpsilonR: 3.1500 LossTangent: 0.0020 Thickness: 2.2027e-04 For more materials see catalog

### Computation of S-parameters

#### One single ended via with one GRV

This section builds the via with a single GRV, computes the S parameters for that site and displays the S parameters and the site geometry.

The `viaSingleEnded`

object is constructed using a series of name/value pairs to set the object Properties. The Substrate Property was defined as a dielectric object in the previous section.

vSVLocations = [kbi0_ch0 1 3]; vGRVLocations = [kbi0_ch0_grv(1,:) 1 3];

Create a viaSIngleEnded:

obj = viaSingleEnded(... "SignalViaDiameter",d,... "SignalViaLocations",vSVLocations,... "GroundReturnViaDiameter",d,... "GroundReturnViaLocations",vGRVLocations,... "GroundLayer",[1 3],... "Substrate",sub,... "SignalViaAntipad",vSignalViaAntipad)

obj = viaSingleEnded with properties: SignalViaLocations: [0.2653 0.1175 1 3] SignalViaDiameter: 1.9990e-04 GroundReturnViaLocations: [0.2643 0.1185 1 3] GroundReturnViaDiameter: 1.9990e-04 GroundLayer: [1 3] SignalViaAntipad: [1x1 antenna.Circle] Substrate: [1x1 dielectric]

#### Plot Return Loss and Insertion Loss

The S parameters are calculated using a function of the viaSingleEnded object.

df = 10e6; fmax = 60e9; nfreq = ceil(fmax/df); f = linspace(df,fmax,nfreq); Z0 = 50; S_1grv = sparameters(obj,f,Z0,'Behavioral',true); % Return loss figure(1) ax1 = subplot(2,2,1); rfplot(ax1, S_1grv,"reflection","abs") title(ax1,'Return loss') legend(ax1,"hide") hold(ax1,"on") % Insertion loss ax2 = subplot(2,2,2); rfplot(ax2,S_1grv,1,2,"abs") title(ax2,'Insertion loss') legend(ax2,"hide") hold(ax2,"on") % Insertion loss in dB ax3 = subplot(2,2,[3 4]); ln = rfplot(ax3, S_1grv,1,2,"db"); ln.DisplayName = sprintf('%d GRV',size(obj.GroundReturnViaLocations,1)); title(ax3,'Insertion loss, dB') hold(ax3,"on")

#### Display PCB structure

The show function of the viaSingleEnded object displays the geometry of the object.

figure show(obj)

#### Two GRVs

This section adds a second GRV diagonal from the first GRV.

vGRVLocations = [kbi0_ch0_grv([1 3],:) repmat([1 3],2,1)]; obj.GroundReturnViaLocations = vGRVLocations;

#### Plot Return Loss and Insertion Loss

Note that the insertion loss is reduced at lower frequencies but increased at higher frequencies.

S_2grv = sparameters(obj,f,Z0,'Behavioral',true); rfplot(ax1, S_2grv,"reflection","abs") legend(ax1,"hide") rfplot(ax2,S_2grv,1,2,"abs") legend(ax2,"hide") ln = rfplot(ax3, S_2grv,1,2,"db"); ln.DisplayName = sprintf('%d GRV',size(obj.GroundReturnViaLocations,1));

#### Display PCB structure

figure show(obj)

#### Three GRVs

This section adds another GRV, making a total of three GRVs.

vGRVLocations = [kbi0_ch0_grv([1 2 3],:) repmat([1 3],3,1)]; obj.GroundReturnViaLocations = vGRVLocations;

#### Plot Return Loss and Insertion Loss

Note that while the insertion loss is further reduced at low frequencies, a distinct notch has formed around 37GHz.

S_3grv = sparameters(obj,f,Z0,'Behavioral',true); rfplot(ax1, S_3grv,"reflection","abs") legend(ax1,"hide") rfplot(ax2,S_3grv,1,2,"abs") legend(ax2,"hide") ln = rfplot(ax3, S_3grv,1,2,"db"); ln.DisplayName = sprintf('%d GRV',size(obj.GroundReturnViaLocations,1));

#### Display PCB structure

figure show(obj)

#### Four GRVs

vGRVLocations = [kbi0_ch0_grv repmat([1 3],4,1)]; obj.GroundReturnViaLocations = vGRVLocations;

#### Plot Return Loss and Insertion Loss

S_4grv = sparameters(obj,f,Z0,'Behavioral',true); rfplot(ax1, S_4grv,"reflection","abs") legend(ax1,"hide") rfplot(ax2,S_4grv,1,2,"abs") legend(ax2,"hide") ln = rfplot(ax3, S_4grv,1,2,"db"); ln.DisplayName = sprintf('%d GRV',size(obj.GroundReturnViaLocations,1));

#### Display PCB structure

figure show(obj)

#### Eight GRVs

The code in this section defines an additional four GRV locations and adds them to the four GRV locations of the previous section.

reftable = zeros(8,2); kbi0_0_grvmm_p1 = [0.2633 0.1175;0.2673 0.1175;0.2653 0.1195;0.2653 0.1155]; reftable(1:4,1:2) = kbi0_ch0_grv; reftable(5:8,1:2) = kbi0_0_grvmm_p1; vGRVLocations = [reftable repmat([1 3],8,1)]; obj.GroundReturnViaLocations = vGRVLocations;

#### Plot Return Loss and Insertion Loss

The insertion loss up to about 25GHz is now nearly zero and the notch depth at 37GHz has gotten even deeper. The notch depth has now reached 8dB.

S_8grv = sparameters(obj,f,Z0,'Behavioral',true); rfplot(ax1, S_8grv,"reflection","abs") legend(ax1,"hide") rfplot(ax2,S_8grv,1,2,"abs") legend(ax2,"hide") ln = rfplot(ax3, S_8grv,1,2,"db"); ln.DisplayName = sprintf('%d GRV',size(obj.GroundReturnViaLocations,1)); ylim(ax3,[-5 0.8])

#### Display PCB structure

figure show(obj)

### Results and discussions

The progression from one GRV to eight GRVs demonstrates the formation of a resonant cavity around the via. While at low frequencies the GRVs combine in parallel to reduce the total impedance of the via return path, at higher frequencies they form a cavity that resonates as an open.

Designers of printed circuit boards for high frequency signals should be aware of this phenomenon and determine whether it will occur for the frequencies and distances they are considering. One conservative metric is the Gap Rate Distance (GRD) metric [1], which is a calculation of the minimum via to GRD distance at which this phenomenon might be possible up to a given maximum frequency. As long as at least some GRVs are closer than the GRD, the design should be safe.

The following code computes and plots the GRD for different dielectric constants. According to the plot of this metric, for a dielectric constant of 3.0 and a maximum frequency of 35GHz, the design will be safe (by a conservative margin) if there is at least one GRV closer than 0.030” (0.75mm).

Er = [2 3 4]; % Sweep across relative Permittivity freq = linspace(1.0e10,2.5e10,101); % Sweep across frequencies cw = 0.16; % Critical wavelength set at 0.16 accounting in guard band clr = ["c" "k" "r"]; % Color of line handles for i = 1:numel(Er) obj.Substrate.EpsilonR = Er(i); grd = obj.gapratedistance(2*freq,cw); plot(2*freq/1e9,grd,clr(i),'DisplayName',join(["Er =",num2str(Er(i))])) hold on end grid('minor') xlabel('NRZ Data Rate (Gbps)') ylabel('Max GRV c2c Distance (mils)') legend('show')

### References

Steinberger, Telian, Tsuk, Iyer and Yanamadala, “Proper Ground Return Via Placement for 40+ Gbps Signaling”, DesignCon 2022, April 2022. Full text from Signal Integrity Journal

Tucker, Sankararaman, and Ellis, “PCB Stackup and Launch Optimization in High-Speed Designs”, DesignCon 2022, April 2022.

Steinberger, Telian, Bloom and Rowett, “Managing Differential Via Crosstalk and Ground Via Placement for 40+ Gbps Signaling”, DesignCon 2023, February 2023.

Djordjevic, Biljic, Likar-Smiljanicand Sarkar, “Wideband Frequency-Domain Characterization of FR-4 and Time-Domain Causality”, IEEE Transactions on Electromagnetic Compatibility, Vol. 43, No. 4, pg. 662-7, November 2001.