Author 
Topic 

Nico
Germany
1 Posts 
Posted  Sep 06 2023 : 09:41:43

Hello,
I'm working on an open source program to implement HF simulation, parasitic extraction and impedance analysis into KiCAD/KLayout with the option to analyze bent FPCs, and after simulating around with OpenEMS and Elmer I think that FastImp, FastHenry and FasterCap are the programs to go when it comes to impedance and parasitics. The problem right now is that I can't seem to get correct values out of FastImp (or am misinterpreting the ones I got). The structure I'm simulating is a Microstrip that is later turned into a grounded coplanar waveguide (GCPW) as soon as the results are correct. Currently, I'm using the old input format, but as the new one supports meshes by using triangular and quad panels instead of just straight segments divided into filaments, I will change to that one later. The file looks like this:
# Structure type of each conductor is specified by a number
# 1: straight wire
# 2: ring
# 3: spiral
# 4: ground
#
# The unit of size is 1e6 m, or um
{File
1e6 unit
2 number of conductors
{ cond 1
1 structure type
{ leftEnd point 0
100
0
0
} leftEnd point 0
{ leftEnd point 1
100
0
0
} leftEnd point 1
{ leftEnd point 2
100
0
35
} leftEnd point 2
{ rightEnd point
100
1000
0
} rightEnd point
90 number of panels along width
12 number of panels along thickness
300 number of panels along length
5.8e7 conductivity of copper
} cond 1
{ cond 3
4 structure type
{ leftEnd point 0
1200
0
100
} leftEnd point 0
{ leftEnd point 1
1200
0
100
} leftEnd point 1
{ leftEnd point 2
1200
0
135
} leftEnd point 2
{ rightEnd point
1200
1000
100
} rightEnd point
100 number of panels along width
3 number of panels along thickness
60 number of panels along length
2.9e5 conductivity of ground
} cond 3
}File
# End of file
I'm calling FastImp via:
fastImp i t2_GND_50ohm.inp s2
The impedance I get is as follows:
1e+09 Zm[0, 0] = (0.0942394,2.81459)
I also tried the t1 and s1 options to use the EQMS solver instead of fullwave, but I still can't seem to get the right impedance. With a trace width of 200 um, a substrate thickness of 100 um and copper thickness of 35 um I should land around 50 ohms. That's the value I get by TXLine and also evaluated in OpenEMS.
I would be very happy if you could help me here! Would be great if I could integrate a pipeline for your tools in my project (:
best wishes, Nico 

Enrico
543 Posts 
Posted  Sep 23 2023 : 12:23:48

Hi Nico,
I'm afraid you are misunderstanding the usage and the results from FastImp.
From your description, I understand you want to extract the impedance of a transmission line. For doing so, you specified a segment of a uniform microstrip with a length of 1mm. Now, FastImp will take that structure for what it is, i.e. a 1mm long structure, and provide you the impedance of such structure when the port, defined by the two ends of the conductor, is stimulated. Here lies the second issue, i.e. the port is actually defined over the near end and the far end of the first conductor in your input file. The second conductor, i.e. the ground plane, is not taken into account from the ports definition point of view, while in a txline, for your goal, you are interested in defining a port between the near end of the conductor and the near end of the ground plane (in fact, the distinction is practical, as both structures together constitute your txline). Here is the third issue: defining the "ground" plane of the txline (that is part of the txline, actually) as '4: ground' means that this won't be stimulated by any port, but currents/charges will only be induced on it.
Correcting the input file defining two straight wire conductors, one of which is acting as the 'return' plane for the microstrip, we get the following impedance values @ 1e8 Hz (taking only the imaginary part).
4.67E10 1.67E10
1.62E10 1.81E10
The reason why we can use only the imaginary part is that, for the txline you are interested, we consider the transversal modes only, to be able to use the telegrapher's equations. At the frequency of interest at which you ran the simulation, the cross section is definitely small with respect to the wavelength.
So, let's derive the L value per unit length of the microstrip. We must divide by 2*PI*f and multiply by 1000, as the section of the microstrip is 1mm long, and we want H/m.
Besides that, we also want a single L value; at the moment, the L11 and L22 values of the matrix correspond to the selfinductance across the 'conductor' and across the 'ground plane' respectively, while L12 and L21 are the mutual coupling. We are interested in the total inductance (or 'loop inductance') of the structure, to be able to divide it by the length, to have (approximately, as the structure we simulate has not infinite length) the inductance per unit length, as said.
So calculation goes:
(4.67E10 + 1.81E10  1.67E10  1.62E10)/(2*3.1415*1e8)*1000 = 3.19e7 H/m
Now, using the formulae from telegraph's equations, we have that Z = c * L, where c is the speed of light in vacuum. Therefore
Z = 3e8 * 3.19e7 = 96 ohm
Now, from the parameters you used, I believe that a 200 um wide microstrip with a gap of 100 um between the bottom of the 'conductor' and the top of the 'ground plane' should lead to an impedance of approx 82 ohm and not 50; maybe there is a small mismatch in the definition of the conductor  ground plane distance (e.g. considering or not the copper thickness; if the 100 um distance is from the center of the conductor to the center of the ground plane, i.e. the gap is 65 um, the value approaches 50 ohm).
Still, 96 is a bit off as a value. The reasons here are probably linked to the definition of the ports of the conductors. In the 'ground plane', the whole end side, which is very wide, is used as a port, while we know from the physics that the current will have a maximum below the conductor; in fact, you should short the line at the far side. If you would model an actual connection at the far side, I expect the results to be closer to the expected ones, but this requires a custom definition of the conductors. Also, you are considering a 1000 um long line, while the width of the conductor is 200 um. This is not very long to be a good approximation of an infinite length transmission line. The discretization plays a role as well, as the frequency at which you run the simulation.
However, said that, if you want to simulate transmission lines as you do in TXLine, you probably would be much better off using the FasterCap 2D capabilities. The input file is much simpler also for arbitrary geometries, you get directly the capacitance per unit length, and you can also consider dielectrics. Running just two simulations (one with dielectrics, the other in free space) you can derive the C and the L values (L is derived from Cfree in free space from the relation c = SQRT(L*Cfree) and inverting it) and calculate Z = SQRT(L/C)  and these relations also work when L and C are matrices.
I condensed a bit the explanation and used some simplifications' but I hope this could help you and guide you in the right direction for your task.
Best, Enrico




Topic 


