Keyboard Shortcuts
Likes
Search
Simulating Using PyLTSpice Takes Too Long
Hello Everyone,
?
I am trying to simulate very simple circuit using PyLTSpice. However, simulation takes too much time. It takes 1 second for the simulation to complete. Even when I increased the complexity of the circuit, time taken for simulation still stays approximately the same. I increased-decreased number of freuqncy points in my ac analysis, this had little to no effect on simulation runtime.
?
I feel like most of the simulation time is spent reading-writing files. Does anybody has any suggestions that can be beneficial to speeding up the process?
?
Currently, I am using LTSpice simulator, as seen on the third line.
?
?
import time
from PyLTSpice import SimRunner
from spicelib.simulators.ltspice_simulator import LTspice
# Create the netlist file (simple_lc.cir)
netlist_content = """* Simple LC Resonant Circuit
V1 N001 0 AC 1
L1 N001 N002 10uH
C1 N002 0 1pF
R1 N002 0 50
.ac lin 1500 40Meg 60g
.save V(N002)
.end
"""
# Save netlist
netlist_filename = "simple_lc.cir"
with open(netlist_filename, "w") as f:
? ? f.write(netlist_content)
LTC = SimRunner(output_folder='/temp', simulator=LTspice) # init simulation runner
for i in range(1,10): # iterate ove reverything
? ? ? ? t1 = time.time()
? ? ? ? LTC.run(netlist=netlist_filename)
? ? ? ? LTC.wait_completion()
? ? ? ? print(f"{t1 - time.time()} - Simrun")
|
¿ªÔÆÌåÓýI don't know anything about PyLTspice, but why
don't you use LTspice directly? Are you using an OS other than
Windows, MAC or Linux? On 2025-03-29 18:53,
davitkharshiladze26 via groups.io wrote:
--
OOO - Own Opinions only If something is true: * as far as we know - it's science *for certain - it's mathematics *unquestionably - it's religion |
On Sat, Mar 29, 2025 at 12:01 PM, <davitkharshiladze26@...> wrote:
The first line of a spice netlist file is a comment line and is not read. This is standard for a spice netlist.
?
V1 N001 0 AC 1 ? <---this "stimulus" line is not being read. Insert a blank line before this line.
?
Also, the stimulus line should really look like this:
?
V1 N001 0 DC 1 AC 1
?
The AC parameter will override the DC parameter for an AC analysis.
?
eT
? |
¿ªÔÆÌåÓýI see. but there are problems with this simple
circuit. Using a linear sweep with such a wide range doesn't
result in a useful frequency response plot. A decade sweep is
much better. Also, the 50 ohm load damps the resonance at 48 MHz
so much that it cannot be seen on the plot. On 2025-03-29 19:25,
davitkharshiladze26 via groups.io wrote:
--
OOO - Own Opinions only If something is true: * as far as we know - it's science *for certain - it's mathematics *unquestionably - it's religion |
The circuit may have some unreasonable problems, however, I am not plotting anything, nor am I trying to obtain any meaningful data from this circuit. This is a dummy circuit that represents the problem that my original meaningful circuit had. I can not share my original circuit.
?
Changing frequency sweep keeps the simulation runtime the same. Changing the format of stimulus does not make any change either. |
try the developer.?
toggle quoted message
Show quoted text
|
On Sat, Mar 29, 2025 at 12:42 PM, <davitkharshiladze26@...> wrote:
You can confirm the netlist format by simulating it directly in LTspice without using python. It won't run correctly formatted the way you've shown.
See my previous post.
? |
I have no familiarity with PyLTspice.? But you say most of the time is spent doing something other than the LTspice simulation itself.? Which means the cause is something other than LTspice.
?
Maybe there's another way to automate your sims which doesn't use this particular slow Python code, which seems to be the bottleneck.
?
.AC simulations can be quite fast and there's very little dependency on the sweep parameters.? That's because .AC analysis is 100% linear, once the operating point is found.? The sweep requires no iterations and no convergence issues.? It's fast.
?
Contrary to what eT wrote, I think your netlist is fine and without problems.
?
Andy
? |
¿ªÔÆÌåÓýI made the schematic in LTspice and it runs very fast. The netlist is: * C:\Program Files\ADI\LTspice\Draft1.asc The .ASC is just temporarily stored with that
path, because I have not Saved it. On 2025-03-29 20:45,
davitkharshiladze26 via groups.io wrote:
--
OOO - Own Opinions only If something is true: * as far as we know - it's science *for certain - it's mathematics *unquestionably - it's religion |
Unfortunately, I can not use .STEP command.?
My main problem is finding multi-port s-parameters of a given circuit. LTSpice only supports 2-port s-parameters. To measure 4-port s-parameters I need to run simulation several times (6 times to be exact), where I change the port locations on each iteration. This requires me to slightly modify the netlist, meaning that I am running practically new simulation each time.
?
Even when I run simulaiton using LTSpice it still takes approximately 1 second, thought, it is harder for me to measure, therefore, I feel the problem is within the simulator itself. I feel like the simulator needs time for initializing, file writting and so on. I have not found a way to disable any additional protocols.
?
Thank you for your responses? |
LTSpice generates .raw output files, noramlly.
?
I am using PyLTSpice tp prepeare netlist before simulation. I am manually writing the netlist.
After simulation, I am gathering .raw files and reading info from them.
I also use PyLTSpice to directly run the simulation after the netlists are prepeared:
? ? ? ? t1?=?time.time()
? ? ? ??LTC.run(netlist=netlist_filename)
? ? ? ??LTC.wait_completion()
? ? ? ??print(f"{t1?-?time.time()}?- Simrun")
LTC.run runs the simulator and LTC.wait_completion() waits for .raw generation to finish. Afterwards i can read these files for my desired outputs.
The runtime of these 2 functions are approximately 1 second, which is way too much for my purposes.
I feel like normal LTSpice simulation takes about the same time, though, as I mentioned, it is harder to measure |
Help? me understand the problem.
?
<davitkharshiladze26@...> wrote:
Is 1 second too much time and that is what you want to reduce?
?
Or is 1 second small, and adding PyLTspice causes the total time to be much greater than 1 second?
?
Andy
?
|