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 RF PCB Toolbox viaSingleEnded
.
The via analysis feature combines a detailed, efficient model of the via return path to enable detailed analysis of the effect of nearby ground return vias (GRVs) on the high frequency performance of the signal 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 = shape.Circle('Radius',D/2); vSignalViaPad = shape.Circle('Radius',2.5e-4); kbi0_ch0 = [0 0]; % Signal Via Locations, m kbi0_ch0_grv = [-1e-3 1e-3;-1e-3 -1e-3;1e-3 -1e-3;1e-3 1e-3]; % 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]; vPorts = {1 1 d "Vertical";... 1 3 d "Vertical"};
Create a viaSIngleEnded:
obj = viaSingleEnded(... "SignalLayer",[1 3],... "GroundLayer",[1 3],... "Substrate",sub,... "SignalViaLocations",vSVLocations,... "SignalViaDiameter",d,... "SignalViaFinishedDiameter",0.9*d,... "SignalViaPad",vSignalViaPad,... "SignalViaAntipad",vSignalViaAntipad,... "GroundReturnViaLocations",vGRVLocations,... "GroundReturnViaDiameter",d,... "GroundReturnViaFinishedDiameter",0.9*d,... "SignalTable",vPorts)
obj = viaSingleEnded with properties: Conducting Layers SignalLayer: [1 3] GroundLayer: [1 3] Conductor: [1x1 metal] Dielectric Layers Substrate: [1x1 dielectric] Signal Vias SignalViaLocations: [0 0 1 3] SignalViaDiameter: 1.9990e-04 SignalViaFinishedDiameter: 1.7991e-04 SignalViaPad: [1x1 shape.Circle] RemoveUnusedPads: 1 SignalViaAntipad: [1x1 shape.Circle] Ground Return Vias GroundReturnViaLocations: [-1.0000e-03 1.0000e-03 1 3] GroundReturnViaDiameter: 1.9990e-04 GroundReturnViaFinishedDiameter: 1.7991e-04 Ports SignalTable: {2x4 cell}
Display PCB structure
The show function of the viaSingleEnded object displays the geometry of the object.
figure show(obj)
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 in dB figure(1) ax1 = subplot(2,2,1); rfplot(ax1,S_1grv,1,1,"db") title(ax1,'Return loss, dB') 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")
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;
Display PCB structure
figure show(obj)
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,1,1,"db") 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));
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;
Display PCB structure
figure show(obj)
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,1,1,"db") 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));
Four GRVs
vGRVLocations = [kbi0_ch0_grv repmat([1 3],4,1)]; obj.GroundReturnViaLocations = vGRVLocations;
Display PCB structure
figure show(obj)
Plot Return Loss and Insertion Loss
S_4grv = sparameters(obj,f,Z0,'Behavioral',true); rfplot(ax1,S_4grv,1,1,"db") 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));
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 = [-2e-3 0;2e-3 0;0 2e-3;0 -2e-3]; 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;
Display PCB structure
figure show(obj)
Plot Return Loss and Insertion Loss
The notch depth at 37 GHz has gotten even deeper. The notch depth has now reached 8 dB.
S_8grv = sparameters(obj,f,Z0,'Behavioral',true); rfplot(ax1,S_8grv,1,1,"db") 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));
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 defined to be the maximum center-to-center distance between a signal via and its closest associated GRVs for a given data rate, based on guard bands. 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, and 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.