A very active Youtuber With KiCad and FEM at https://www.youtube.com/@panire3/videos
unfortunately this is only a manual process…
what it would make a real change is a plugin or an external tool like the one that Nico is implementing…
hello! I’m the author of nikfemm and of the original kicad plugin. I made it because the main problem of embedding a 3d simulator into kicad is the dependency hell this results into. nikfemm is dependency-less (opencv is used for visualization only) and it uses a fast 2.5d approach (basically multiple coupled 2d simulations for each layer) to avoid building a big and slow 3d mesh so it would be easy to include directly into kicad without worrying about any additional dependencies to keep track of and it would be very lightweight.
the only problem is that nikfemm only solves 2d and multilayer 2d problems so I’m stuck at thinking if its worth the hassle of including a simulator in kicad that cannot for example find parasitics (inductance capacitance etc.)
what do you think?
Inductance and related eddy current effects are pretty essential for power electronics, so a 2D resistance-only simulation has pretty limited value. Note that it is often power electronics applications that care about dc resistance as well.
But, it is better than nothing, and right now 3D FEM is difficult in many ways.
That’s just one engineer’s opinion. Perhaps more will weigh in.
John
I would second what was said by @JohnSG . Most of the guys I know that use FEM or similar methods inside / together with an Electronics CAD tool use it to extract parasitics (R,L,C) or doing power/ signal integrity simulations for which (I think) 3D models are unavoidable.
Hi @nikisalli
having a plugin for current density and voltage drop would be useful indeed.
Have you had a look at the @thefloe Tobias plugin?
It seems derived from your solver… I have tested it on some of my boards and it seems to make a good job. It is developed using the new kicad API so it should be easier to maintaining it.
Adding the simulator inside kicad could be a more complex task, compared to develop an external plugin.
Hi,
I actually have some code for a 3D finite element solver as well. I remeber experimenting with different meshing geometries. Would need to find some time to adjust the code to KiCad.
I also have some code thatbwas trying to export Altium PCBs to openEMS format, this cose uses the same backend as the 3D FEM code. So once the backend is adjusted, one could also experiemnt with that.
That sad, my time is currently very limited as I just started a new position. Inwill look through the code…
That would be great!
I would be on first line to experiment
Hoping you could find some spare time to publish something…
I have already played with your drop voltage develop/testing branch… the code involving only the used net is blazing fast
I just pushed an early 3D version to the fem3d branch: Files · fem3d · Tobias / kicad_pdn · GitLab
Not much working so war, but a single layer was exported and the FEM3D module was running without mistakes. Still some work to be done.
Hey everyone! I’m Nico from this thread here: https://gitlab.com/kicad/code/kicad/-/merge_requests/1210
Right now, the code I wrote is not too easily usable by other people without further introduction. I’m pretty stuffed with work right now, but I hope that I can effectively put more effort into the project after the end of march, when the current project is done. I’m planning to do documentation then, and refactor the code in a way that other people can also use it.
A thing that would be highly interesting is implementation into KiCad. The current one is pretty rudimentary. So if you, @maui and @thefloe, or anybody else are open for collab, I would be happy if we could come up with a nice way to fit our pieces together and make everything more consistent! (:
I also have contact to some people that make 2.5D FEM/FDTD simulations for ASICS, maybe we could also integrate that somehow.
best wishes,
Nico
Hi @nico-arnold
welcome to this forum!
I think having a plugin to start with would be very helpful. Somehow it could also be faster in developing functionality.
I would be happy to collaborate on this plugin… I have some familiarity with FreeCAD plugins and the old api KiCAD plugins.
Maurice
The fem3D branch seems to be working now (at least on some simple tests I made).
Would be great to work together on that, just need to find some time
Hi @thefloe Tobias
recently I had a discussion on FreeCAD FEM and I wanted to compare results with your tool w/ fem3D solver at this thread:
https://forum.freecad.org/viewtopic.php?p=816483#p816483
[FC link updated]
I’m attaching the demo board:
voltage drop-demo.kicad_pcb (26.6 KB)
and a video with the fem3d results
here the python command I did:
C:\KiCad-v9-vc\bin\python C:\Users\userC\Documents\KiCad\9.0\3rdparty\plugins\kicad_pdn_fem3d\kicad_pdn.py L13:1:3.3V,R8:2:-1A 0.09
for the kicad users, one needs to enable kicad API as in the attached image and keep the file open in pcbnew when the plugin is running
Since you asked for opinions:
Personally, I’d find a plain, accessible DC simulation useful, because “conservative” design of power rails is expensive.
Being accurate for time-varying signals is a rabbit’s hole (after inductance / capacitance comes transmission line effects, we’re one step into Maxwell’s equations. Nature knows no steady state and we’re into full-blown 3D time-domain … point is, there is a pool of “AC+” simulation methods, each has their place for a group of problems, and you’ll need a team of engineers for a meaningful implementation of any single one).
But, one can make a clear cut DC-AC. And, as said, a plain DC solution might already lead to a smaller board or some d’oh! Hotspot! insights, obvious in retrospect.
What do you mean with plain DC? the resistance based on track width multiplied by current to have voltage drop? because I think for any circuit where voltage drop across a board is important (PI) you actually want to know the impedance of the plane and there you are in AC again
Well, “plain DC” as in the asymptotic value when I pretend frequency doesn’t exist. Just Ohm’s law.
Of course we can’t disregard AC (I’m a RF engineer, BTW), but with issues at 0 Hz already evident I don’t even need to look any further.
Tracks are straightforward but expensive as they block out vias by definition. Zones (rails) broken by the occasional unavoidable via are more efficient but less intuitive. And here comes the need for a tool that effectively integrates the inverse of width along a DC current’s path. Ideally in the background to alert me when I’ve messed up things (real-world “stupid” mistake: Drop a via into a power-rail zone - that alone is legit - but then route out the via across the same layer. It doesn’t cause a loss of connectivity which would show in DRC but causes “hot spots” with e.g. 3x the intended current density).