Replies: 2 comments 6 replies
-
|
I'm started to think that using a "virtual" dielectric layer may work as a workaround to simulate the effect of solder mask. That is, it doesn't have to physically model the actual solder mask, we can just tweak its parameter (i.e. dielectric constant) until the trace impedance matches the experimental value (or 2D solver value). Thus, we can bypass the problem of modeling the extremely thin layer of coating, which is problematic for FDTD. |
Beta Was this translation helpful? Give feedback.
-
|
Accurately impedance determination of transmission lines is the most basic problem in RF engineering, so free and open source solvers are of crucial importance for free hardware development. From this perspective, a comparison of different methods and solvers is a question of fundamental importance. Some free solvers include ATLC, TNT-MMTL, MEEP, and openEMS. ATLC and TNT-MMTL are quasi-static frequency-domain (MoM & BEM) solvers, openEMS is a time-domain solver, and it would be a useful cross-check if different solvers give similar results for multi-layer PCBs - if only as an academic exercise. Now I'm start to wonder if brute-force calculation in FDTD is more practical than I thought, at least for these demo/research/benchmark problems. Suppose that we're simulating a 1.6 mm PCB with a 1.6 mil copper layer (1 oz) and a 1.2 mil solder mask. For other parts of the board, a 0.1 mm grid is likely adequate, so a 16x16x16 grid should cover the board, we use 32x32x64 to avoid PML and create air on top of the board. Near the surface of the board, we need a Z-axis resolution of at least 0.1 mil, or 0.0025 mm. Simple math says we need 640 Yee cells to cover the PCB. But if we use a non-uniform mesh with a 10% increment, we just need 39 cells to transition from the fine 0.0025 mm mesh back into the regular grid size 0.1 mm mesh since 0.0025 x 1.1 ^ 39 = 0.103. So the grid size would be 32x32x103. If the simulation is running at 500 MC/s, one CPU second is 4740 timesteps (should be achievable on a single desktop, and may even be faster if my optimized code works as planned). A 0.0025 mm cubic cell translates to a 4.8 ps timestep in the CFL stability criteria (for EC-FDTD, it's actually better as follows Rennigs' criteria with slightly relaxed requirements). If we use a 100 nanosecond excitation, it takes 20833 timesteps and 4.39 s CPU time. Then we wait 100x more timesteps, it's just 439 seconds. Thus, brute-force impedance calculation seems to be completely within reach for these demo problems (but perhaps there can be some numerical stability problems that would require one to tweak the meshing). |
Beta Was this translation helpful? Give feedback.





Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
One important potential application of openEMS is the simulation of impedance discontinuities of microstrip transmission lines on circuit boards, which are often manufactured with a thin layer of solder mask. This has the effect of creating an extra layer of dielectric above the traces. Experimentally, it can be shown that it causes a reduction of characteristic impedance around 2-3 ohms in a 50-ohm transmission line. Modeling this effect is highly desirable, since it affects the results of many kinds of optimizations.
Many 2D and 2.5D field solvers (especially those specifically designed for transmission lines) are able to model this effect. However, it creates difficulties in a 3D FDTD simulation. I had a discussion with Matt Huszagh at pyEMS's repository, and our conclusions are:
This solder mask layer has a thickness of around 0.5 mils to 1 mils, this is an extremely fine structure compared to the enormous millimeter-size of the circuit board. It means an extremely fine mesh must be created around the microstrip traces, which seems impractical for FDTD.
Microstrips are modeled mainly via
AddConductingSheetorAddMetal.AddConductingSheetcan only add a 2D metal layer, and Matt told me it that its math behind it simply "doesn't really work with physical structure of the solder mask over trace." Is it true? MeanwhileAddConductingSheetis 3D, but it doesn't model any loss. The proper solution that models both would be the Drude-Lorentz model, but it will likely make the simulation even slower.What would be a good modeling strategy for this problem?
Just give up. One can argue that FDTD is simply not suitable for modeling this problem. Even on a bare board with a single dielectric layer, there will be an error of a few ohms if the meshing is deviated from the 1/3-2/3 rule, so modeling the effect of the solder mask is simply hopeless. Not to mention that the material property of solder mask itself is already poorly controlled. On precise RF boards, it's common to remove solder mask around sensitive areas, so modeling it is pointless. If one wants to model it anyway, a 2D/2.5D solver would be a proper tool.
But this answer is not entirely satisfactory.
Adjusting the circuit board substrate to compensate. This is the easiest method, however, it creates an opposite problem - it will underestimate the characteristic impedance of uncoated traces. This can be important when modeling the transition from coated traces to uncoated traces. For example, on a circuit board, planar transmission line structures like couplers and filters are often uncoated, mounting pads for connectors and SMD components are also uncoated, meanwhile other traces are coated. Finding the optimal geometry to minimize the impedance discontinuity is a common optimization problem, and I'd really like to demonstrate that in openEMS, so both kinds of traces must be modeled.
What is your advise on this modeling problem?
Beta Was this translation helpful? Give feedback.
All reactions