RLC-calculator for a PCB trace
This article contains MATLAB script for the calculation of the parasitic parameters of the PCB trace.
Script limitations:
- Valid under 1GHz
- Skin effect is omitted
- Copper roughness is omitted
- Loss tangent is omitted
- Geometry limitations:
- W/H < 7.475 - 1.25*(T/H) - for a microstrip
- W/B < 2.375 - 1.25*(T/B) - for a stripline
First coefficient in equation - conversion from inches to m.
H - height
W - width
Microstrip Equations:
Stripline Equations:
1
2%% PCB lumped parameters calculator (microstrip/stripline)
3% Author: A.Sidun
4% Source: AnalogHub.ie
5% Limitations:
6% - Valid under 1GHz
7% - Skin effect is omitted
8% - Copper roughness is omitted
9% - Loss tangent is omitted
10% - Geometry limitations:
11% W/H < 7.475 - 1.25*(T/H) - for a microstrip
12% W/B < 2.375 - 1.25*(T/B) - for a stripline
13% Source: https://resources.system-analysis.cadence.com/blog/msa2021-is-there-a-pcb-trace-inductance-rule-of-thumb
14
15%% Input parameters
16type = "microstrip"; % can be microstrip or stripline
17temp = 25; % temperature [C]
18length = 1e-3; % trace length [m]
19width = 0.5e-3; % trace width [m]
20thickness = 35e-6; % trace thickness [m]
21height = 0.4e-3; % height over a plane [m]
22
23%% Constants
24ro = 1.724e-8; % resistivity of copper [Ohm/m]
25alpha = 3.9e-3; % temperature coefficient of copper
26eps_r = 4.46; % relative permittivity of copper
27
28%% Calculations
29B = 2*height+thickness; % plane-to-plane distance [m]
30switch type
31 case "microstrip"
32 if ( width/height < 7.475 - 1.25*(thickness/height) )
33 R_lumped = 1e3*ro*(1 + alpha*(temp-25))/(thickness*width); % mOhms/meter
34 C_lumped = 26.378*(eps_r+1.41)/( log( 5.98*height/(0.8*width+thickness) ) ); % pF/meter
35 L_lumped = 199.65*log( 5.98*height/(0.8*width + thickness) ); % nH/meter
36 Z = 87*log(5.98*height/(0.8*width + thickness)) / sqrt(eps_r + 1.41);
37
38 R = R_lumped*length; % mOhm
39 L = L_lumped*length; % nH
40 C = C_lumped*length; % pF
41
42 disp("PCB " + type + " parameters:")
43 disp("R = " + R + " mOhms")
44 disp("C = " + C + " pF")
45 disp("L = " + L + " nH")
46 disp("Z = " + Z + " Ohm")
47 else
48 disp("Please check geometry of the trace.")
49 end
50 case "stripline"
51 if ( width/B < 2.375 - 1.25*(thickness/B) )
52 R_lumped = 1e3*ro*(1 + alpha*(temp-25))/(thickness*width); % mOhms/meter
53 C_lumped = 39.37*eps_r*sqrt(2) / ( log(1.9*B/(0.8*width + thickness)) ); % pF/meter
54 L_lumped = 199.8425*log( 1.9*B/(0.8*width + thickness) ); % nH/meter
55 Z = 60*log(1.9*B/(0.8*width + thickness)) / sqrt(eps_r);
56
57 R = R_lumped*length; % mOhm
58 L = L_lumped*length; % nH
59 C = C_lumped*length; % pF
60
61 disp("PCB " + type + " parameters:")
62 disp("R = " + R + " mOhms")
63 disp("C = " + C + " pF")
64 disp("L = " + L + " nH")
65 disp("Z = " + Z + " Ohm")
66 else
67 disp("Please check geometry of the trace.")
68 end
69end