Nice video! I just discovered this possibility to simulate EM fields. It seems bit cumbersome to me to use it. But nevertheless its awesome to have those open source softwares, that would otherwise cost 10 thousands of money. I'm excited to see further progress in development.
Great tutorial, but in this particular example you get those giant reflections on a straight trace only because of the copper plating on the top side of the PCB (all around the trace). This creates parasitic parallel-plate line which allows the reflections to propagate and reflect off the boundaries. If you delete this top plating layer you will see a much cleaner picture and the influence of the PCB edges will be negligible.
Yes, removing the top copper would turn the trace into a microstrip line, which would reduce reflections but increase overall emissions, as microstrip lines radiate more than coplanar waveguides. Adding via stitching is a good enhancement, though using a stripline by embedding the trace within the PCB would offer an even better solution.
Uploaded just 29 Min Ago, i am glad i found This channel for simulating my Kicad Boards since i struggled at the beginning to use OpenEms. will there be any Thermal Simulation in the near Future ( it is so usefull in low Voltage high Power Applications) thank you Panire.
sadly thermal simulations are the only thing that i have placed behind a paywall on the plattform udemy for about 13USD if you have a coupon. If you are on a budget, you will even be able to find a hidden free coupon within the comments every few months. www.udemy.com/course/kicad-fem-with-free-software-tools/?couponCode=9C62BBB39D64993A56CD
Thanks for great videos! I've been using kicad, FreeCAD and OpenEMS for a long time, but I didn't know that a plugin connecting them existed. Your videos make starting with PCB simulation very easy. Do you know if there is something similar for thermal simulation? I know that it is possible with OpenFOAM, but I never used this package, and it looks very intimidating.
Glad it helped! Hope you can use some of the infos for an actual project soon. :) Regarding thermal simulations, @rick_er2481 is correct, check out the other comments for the thermal stuff. Unfortunately, the thermal videos aren't free, at least for the time being.
I dont want to be pushy about the paid content, so i just reply if people ask. With the youtube coupon 9C62BBB39D64993A56CD the course is 13USD: www.udemy.com/course/kicad-fem-with-free-software-tools/?couponCode=9C62BBB39D64993A56CD. If you are on a budget, i share a free link every few months hidden in the comments, so everyone has the opportunity to also go the completely free route. :)
@@panire3 I definitely want to support by paying. I havent seen such a video from months of searching. I was trying to use Elmer with KiCad but I failed again and again... Thank you for everything. I do believe you should add link to the course under every video, as I was really scratching my head trying to find out what "more/ paid content" was mentioned and where I could find it. I believe you either are the only one, or one of the very few people who both knows how to do such simulations AND does make an analytic video to show how can someone else follow up!! I am wathcing your videos one by one the last days and replicating your projects while learning at the same.
your modification would then be a microstrip line and has indeed less reflections, so I can confirm this. But be aware that a microstrip has more overall emissions and might cause other problems. via stitching is a good start to contain the fields.
@@panire3 Bogatin showed that ground pour not stitched appropriately increases xtalk between traces. He doesn't talk about radiation a lot since emc is not his focus. So you confirm that CPWG have better Field containment than microstrip?
On the top side (side on which the trace is placed) of a PCB i confirm that CPWG contains the fields better than microstrip in any case that i can possibly think of. For sideways emissions, use via stitching next to the trace and also along the PCB outline. BUT: With CPWG i mean one with with via stitches, which I would call "GCPWG" to make sure that stitching vias are used. A ground pour next to the trace without via stitching (CPWG) could actually be a bad idea, as it increases capacitive coupling between traces which often increases crosstalk. So, I agree with what Mr. Bogatin is saying.
Yup, I’ll try to keep posting as long as possible! :) Propagation delay can definitely be visualized and measured. Just a heads up, though: simulating it with OpenEMS can take hours. For simple trace length matching, there might be faster options available, but visually, such a simulation would for sure look great.
Hi, interesting video. Why are you using this workflow and not generating S-parameters from structure and then perform TDR in circuit simulator or one of python SI libs? I think that most commercial tools use such methodology. Im not familiar with tools which you are using here but is it possible to deploy lossy dielectric models with frequency dependent Dk and Df?
I used the direct time-domain approach because it allows me to visualize how the signal evolves as first step, giving me some confidence that the results roughly make sene. When I calculate the S-parameters first, I often get odd results that I don't fully trust, so I'm still not completely confident in using the tool. In theory, it should be possible with OpenEMS to define frequency-dependent dielectric constant (dk) and loss factor (df) based on the simulation from this repository (github.com/toammann/Multilayer_SMA2Microstrip). However, I haven't worked on this hands-on, so I'm unsure how straightforward the implementation is. For those interested, here are some relevant GitHub discussions regarding this topic: github.com/toammann/OpenEMS_MultiTermDebyeExperiments github.com/thliebig/openEMS-Project/discussions/157 I'll make a follow-up video once I've fully digested the discussions there.
@@panire3 Thanks for explanation. I went thru your tutorials and its helpful for getting started with tool. Btw i found a bit strange that current and voltage logs over time dont have same time stamps, im not sure if this is intended but it seems strange to me, i would prefer to calculate impedance in exact moments in time. Beside that I tried to get S-parameters for planar structures like in your video and results are strange, not sure why, would be interesting to get some reliable results to get inputs for SI/PI applications.
@@jirisladek1313 The timestamps should definetly be the same, if they are not i have made a mistake, I will recheck the data. I have the same problem like you that the s-parameter data depending on the structure seems wrong, I am trying to figure out right now how to get reliable results as this will be the main topic for some of the next videos. Will feedback you once i figured it out.
@@panire3 Thanks. From my quick research on google it looks that different timing for I and for V is inherit way how FDTD works - do to staggered grid. so they should be shifted by half of timing or something like that. Than calculating Z from them shall use interpolated values or somehow ensure that time shift is irrelevant for bandwidth. Beside that I played a bit with that step excitation and no matter what i set for Fmax, it behaves same and Z (calculated as you proposed) has identical shape. But TDRs risetime shall define bandwidth/spatial resolution, which I was not able to change. Im not sure if this is intended behaviour or or lack of my understanding of openems. Anyway loking forward for your next videos, this is really great content for starting with openems.
i have the same issue with the step fuction (always just 1 time step of risetime). using the custom excitation i get the same issue with just 1 timestep risetime. so still much to figure out for both of us, I will feedback you once i figured it out. If you figured it out first, that would be even more amazing. I am quite certain that almost every openEMS user came across the very same issues.
This video got me inspired to finally try openEMS for real, thank you! However I can't get sensible results and I am not sure what I am doing wrong. I'm starting with a board I have measured on NanoVNA using TDR. And I have finally adjusted simulation params to be in the ballpark, but I am sure I'm doing something wrong. My simulation is very sensitive to input port geometry and placement. Also I don't get high impedance when signal reaches end. My grid is a bit more coarse though - 0.5mm in X direction, but I was carefult to properly mesh copper in Z an Y directions. I have already spent a week on this and intend to spend more, but I'm afraid, I need some guidance after all ;)
Also I can see you have placed substantial ground plane behind the feed point, I am guessing this is to avoid radiation from the back of the port, I am feeding at the edge of board and can see fields spewing out, I wander how much this affects the simulation accuracy?
@@miceuz The closer a trace is to the edge of the PCB, the more it tends to radiate. For this reason, EMC experts typically advise to keep some distance between traces and the PCB edges to reduce radiation. In theory the simulation should still be correct and I would expect that more field spews out (increased radiation as mentioned above). Practically only a comparison measurement with a real PCB will give you peace of mind about the absolute accuracy.
Thanks for the great content...!...I just tried your file exactly as you mentioned, but for some reason I am not getting the result that you got. Impedance is always above 100 and also getting negative values. Couldn't find what I am doing wrong. Voltage and current values look closer to what you have shown in the video (for the initial part) but the chart has many negative spikes. One thing I have noticed during the process is a warning about unused primitive ( it has mentioned PEC somewhere in the line).
Hi there, I added the executable python script, freecad project file, the macro settings file and also the excel table with the results. Hope they help you to make it work. Alternatively, you can send me a screenshot of the results or also a screen record of your steps so i can help you troubleshoot
PS: you have to only use the first 1800 values of the table, or in other words only use the values until the end of the trace is reached. The big negative and positive spikes after the 1800th sample are because the signal reaches the end of the trace there. The values after the trace end is reached are not needed anymore for this video example. you can check out this video regarding TDR method from Eric Bogatin, it will further help you to understand the underlying process used for the simulation. th-cam.com/video/yYfkuh4hQ-Y/w-d-xo.html
in the kicad forums this is being discussed already for more than 5 years. seems not that easy to implement and/or there are more important things in development right now. so lets keep hoping :-)
The simulation results are cool, but as such without validation against measured test cupons with same geometry cannot be used to make conclusive claims. This is in fact the key point why commercial simulation toolchains are so expensive - the validation and fitting of the models. Test case with large floating copper pour around the net and thick substrate dielectric is not representative for most designs in practise - you would either fully remove the pour island, or relatively densely via stitch it to ground. Generally copper pours on high speed signals routing layers are rarely ever used, the control over routing layer impedance is attained by using thinner dielectric core, single ended signals get wider keepouts to limit coupling. More realistic test scenario for high density PCB layout is stripline design with much thinner dielectric from both sides (in order of 80 to 200 um), for outer layer there won't be any copper pour in surrounding area with few exeptions.
This is an excellent comment and definitely worth reading after watching the video. I completely agree with everything mentioned. Once the channel grows, I’d love to conduct actual reference measurements and compare the results between the commercial and free tools to highlight the strengths and weaknesses of each.
This is awesome, you make the barrier much lower to make simulations with Kicad!
Happy to hear that! :)
Not sure how accurate these simulations are, but just for sharing how you do this you are already a hero without a cape! Thanks a lot!
Thanks and hopefully, one day we can do a comparison with real-world PCB samples and, if needed, fine-tune the models accordingly. :)
@@panire3 Looking forward to the video in frequency domain. Thanks once more!
Nice video! I just discovered this possibility to simulate EM fields. It seems bit cumbersome to me to use it. But nevertheless its awesome to have those open source softwares, that would otherwise cost 10 thousands of money. I'm excited to see further progress in development.
Great tutorial, but in this particular example you get those giant reflections on a straight trace only because of the copper plating on the top side of the PCB (all around the trace). This creates parasitic parallel-plate line which allows the reflections to propagate and reflect off the boundaries. If you delete this top plating layer you will see a much cleaner picture and the influence of the PCB edges will be negligible.
Yes, removing the top copper would turn the trace into a microstrip line, which would reduce reflections but increase overall emissions, as microstrip lines radiate more than coplanar waveguides. Adding via stitching is a good enhancement, though using a stripline by embedding the trace within the PCB would offer an even better solution.
@@panire3 I see. Thanks for the clarification!
Uploaded just 29 Min Ago, i am glad i found This channel for simulating my Kicad Boards since i struggled at the beginning to use OpenEms.
will there be any Thermal Simulation in the near Future ( it is so usefull in low Voltage high Power Applications)
thank you Panire.
sadly thermal simulations are the only thing that i have placed behind a paywall on the plattform udemy for about 13USD if you have a coupon. If you are on a budget, you will even be able to find a hidden free coupon within the comments every few months. www.udemy.com/course/kicad-fem-with-free-software-tools/?couponCode=9C62BBB39D64993A56CD
Thanks for great videos! I've been using kicad, FreeCAD and OpenEMS for a long time, but I didn't know that a plugin connecting them existed. Your videos make starting with PCB simulation very easy.
Do you know if there is something similar for thermal simulation? I know that it is possible with OpenFOAM, but I never used this package, and it looks very intimidating.
I think he has some videos on thermal simulation!
Glad it helped! Hope you can use some of the infos for an actual project soon. :)
Regarding thermal simulations, @rick_er2481 is correct, check out the other comments for the thermal stuff. Unfortunately, the thermal videos aren't free, at least for the time being.
@@panire3 wait you have paid content? where? you dont show any links to any other of your work
I dont want to be pushy about the paid content, so i just reply if people ask. With the youtube coupon 9C62BBB39D64993A56CD the course is 13USD: www.udemy.com/course/kicad-fem-with-free-software-tools/?couponCode=9C62BBB39D64993A56CD. If you are on a budget, i share a free link every few months hidden in the comments, so everyone has the opportunity to also go the completely free route. :)
@@panire3 I definitely want to support by paying. I havent seen such a video from months of searching. I was trying to use Elmer with KiCad but I failed again and again... Thank you for everything. I do believe you should add link to the course under every video, as I was really scratching my head trying to find out what "more/ paid content" was mentioned and where I could find it. I believe you either are the only one, or one of the very few people who both knows how to do such simulations AND does make an analytic video to show how can someone else follow up!!
I am wathcing your videos one by one the last days and replicating your projects while learning at the same.
thanks for the video man !
you are doing a good work
Thanks, hope the quality of the videos will be better and better after some more uploads. :)
Can you simulate this after removing the copper pour, using only a ground plane below? It should get rid of the plane reflection?
your modification would then be a microstrip line and has indeed less reflections, so I can confirm this. But be aware that a microstrip has more overall emissions and might cause other problems. via stitching is a good start to contain the fields.
@@panire3 Bogatin showed that ground pour not stitched appropriately increases xtalk between traces. He doesn't talk about radiation a lot since emc is not his focus. So you confirm that CPWG have better Field containment than microstrip?
On the top side (side on which the trace is placed) of a PCB i confirm that CPWG contains the fields better than microstrip in any case that i can possibly think of.
For sideways emissions, use via stitching next to the trace and also along the PCB outline.
BUT: With CPWG i mean one with with via stitches, which I would call "GCPWG" to make sure that stitching vias are used.
A ground pour next to the trace without via stitching (CPWG) could actually be a bad idea, as it increases capacitive coupling between traces which often increases crosstalk. So, I agree with what Mr. Bogatin is saying.
Instantly clicked subscribe. Great content!
It's great to have you here :)
wow, it is a lot of knowledge for doing this.
often I just share the videos once i figured stuff out myself, so few days ago i was kind of clueless on many things. :)
dude never stop this kind of videos they're gold. by the way can you propagation delay simulation or a parallèle traces
Yup, I’ll try to keep posting as long as possible! :) Propagation delay can definitely be visualized and measured. Just a heads up, though: simulating it with OpenEMS can take hours. For simple trace length matching, there might be faster options available, but visually, such a simulation would for sure look great.
@@panire3 do you have a LinkedIn i'de like to send you an invitation
@@yacineyaker7485 sure, here is the link to my profile www.linkedin.com/in/
renato-panic-b851801ba
Hi, interesting video. Why are you using this workflow and not generating S-parameters from structure and then perform TDR in circuit simulator or one of python SI libs? I think that most commercial tools use such methodology. Im not familiar with tools which you are using here but is it possible to deploy lossy dielectric models with frequency dependent Dk and Df?
I used the direct time-domain approach because it allows me to visualize how the signal evolves as first step, giving me some confidence that the results roughly make sene. When I calculate the S-parameters first, I often get odd results that I don't fully trust, so I'm still not completely confident in using the tool.
In theory, it should be possible with OpenEMS to define frequency-dependent dielectric constant (dk) and loss factor (df) based on the simulation from this repository (github.com/toammann/Multilayer_SMA2Microstrip). However, I haven't worked on this hands-on, so I'm unsure how straightforward the implementation is. For those interested, here are some relevant GitHub discussions regarding this topic:
github.com/toammann/OpenEMS_MultiTermDebyeExperiments
github.com/thliebig/openEMS-Project/discussions/157
I'll make a follow-up video once I've fully digested the discussions there.
@@panire3 Thanks for explanation. I went thru your tutorials and its helpful for getting started with tool. Btw i found a bit strange that current and voltage logs over time dont have same time stamps, im not sure if this is intended but it seems strange to me, i would prefer to calculate impedance in exact moments in time. Beside that I tried to get S-parameters for planar structures like in your video and results are strange, not sure why, would be interesting to get some reliable results to get inputs for SI/PI applications.
@@jirisladek1313 The timestamps should definetly be the same, if they are not i have made a mistake, I will recheck the data.
I have the same problem like you that the s-parameter data depending on the structure seems wrong, I am trying to figure out right now how to get reliable results as this will be the main topic for some of the next videos. Will feedback you once i figured it out.
@@panire3 Thanks. From my quick research on google it looks that different timing for I and for V is inherit way how FDTD works - do to staggered grid. so they should be shifted by half of timing or something like that. Than calculating Z from them shall use interpolated values or somehow ensure that time shift is irrelevant for bandwidth. Beside that I played a bit with that step excitation and no matter what i set for Fmax, it behaves same and Z (calculated as you proposed) has identical shape. But TDRs risetime shall define bandwidth/spatial resolution, which I was not able to change. Im not sure if this is intended behaviour or or lack of my understanding of openems. Anyway loking forward for your next videos, this is really great content for starting with openems.
i have the same issue with the step fuction (always just 1 time step of risetime). using the custom excitation i get the same issue with just 1 timestep risetime. so still much to figure out for both of us, I will feedback you once i figured it out. If you figured it out first, that would be even more amazing. I am quite certain that almost every openEMS user came across the very same issues.
that's fantastic. Thanks!
Glad you liked it! :)
This video got me inspired to finally try openEMS for real, thank you!
However I can't get sensible results and I am not sure what I am doing wrong. I'm starting with a board I have measured on NanoVNA using TDR. And I have finally adjusted simulation params to be in the ballpark, but I am sure I'm doing something wrong. My simulation is very sensitive to input port geometry and placement. Also I don't get high impedance when signal reaches end. My grid is a bit more coarse though - 0.5mm in X direction, but I was carefult to properly mesh copper in Z an Y directions. I have already spent a week on this and intend to spend more, but I'm afraid, I need some guidance after all ;)
Also I can see you have placed substantial ground plane behind the feed point, I am guessing this is to avoid radiation from the back of the port, I am feeding at the edge of board and can see fields spewing out, I wander how much this affects the simulation accuracy?
@@miceuz The closer a trace is to the edge of the PCB, the more it tends to radiate. For this reason, EMC experts typically advise to keep some distance between traces and the PCB edges to reduce radiation.
In theory the simulation should still be correct and I would expect that more field spews out (increased radiation as mentioned above).
Practically only a comparison measurement with a real PCB will give you peace of mind about the absolute accuracy.
well a small update: even with a measurement its not fully possible to have peace of mind, because you could still have measured wrongly 😅
Thanks for the great content...!...I just tried your file exactly as you mentioned, but for some reason I am not getting the result that you got. Impedance is always above 100 and also getting negative values. Couldn't find what I am doing wrong. Voltage and current values look closer to what you have shown in the video (for the initial part) but the chart has many negative spikes. One thing I have noticed during the process is a warning about unused primitive ( it has mentioned PEC somewhere in the line).
Hi there, I added the executable python script, freecad project file, the macro settings file and also the excel table with the results.
Hope they help you to make it work. Alternatively, you can send me a screenshot of the results or also a screen record of your steps so i can help you troubleshoot
PS: you have to only use the first 1800 values of the table, or in other words only use the values until the end of the trace is reached. The big negative and positive spikes after the 1800th sample are because the signal reaches the end of the trace there. The values after the trace end is reached are not needed anymore for this video example.
you can check out this video regarding TDR method from Eric Bogatin, it will further help you to understand the underlying process used for the simulation.
th-cam.com/video/yYfkuh4hQ-Y/w-d-xo.html
Thanks
Nice,thanks :)
Do you have one for S parameter?
Not yet, but it will be ready soon i hope. you will be notified once the video is out if you are subscribed :)
very nice work, thank you
hope it helps for your project/projects. :)
What js your job in real life? EMC engineer?
hardware design engineer that spent a lot of time in emc chambers.
@@panire3 So cool!
your job or field of study surely is cool too - else you wouldnt be here ⚡😁
AMAZING!!!
thx for the amazing comment :)
Wish this functionality was built-in to KiCAD!
in the kicad forums this is being discussed already for more than 5 years. seems not that easy to implement and/or there are more important things in development right now. so lets keep hoping :-)
The simulation results are cool, but as such without validation against measured test cupons with same geometry cannot be used to make conclusive claims. This is in fact the key point why commercial simulation toolchains are so expensive - the validation and fitting of the models.
Test case with large floating copper pour around the net and thick substrate dielectric is not representative for most designs in practise - you would either fully remove the pour island, or relatively densely via stitch it to ground.
Generally copper pours on high speed signals routing layers are rarely ever used, the control over routing layer impedance is attained by using thinner dielectric core, single ended signals get wider keepouts to limit coupling. More realistic test scenario for high density PCB layout is stripline design with much thinner dielectric from both sides (in order of 80 to 200 um), for outer layer there won't be any copper pour in surrounding area with few exeptions.
This is an excellent comment and definitely worth reading after watching the video. I completely agree with everything mentioned. Once the channel grows, I’d love to conduct actual reference measurements and compare the results between the commercial and free tools to highlight the strengths and weaknesses of each.