Simulation of a very special amplifier circuit

Hello,

I’m trying to simulate a circuit I have found in ICCAS2005 proceedings.

This circuit runs as expected with 741 and a symetrical power supply (+/- 6V). In my case, I have to use the same circuit with a single power supply (0/5V). Thus, I’m trying to simulate with TL971 as I have a model I have tested. This model returns expected values.

Here is my schematic:

sim_thyristors.kicad_sch (138.7 KB)

and netlist:

sim_thyristors.cir (1.9 KB)

1N4007.lib (178 Bytes)

TL971.LIB (12.3 KB)

S8020L.lib (688 Bytes)

MOC3022M.lib (698 Bytes)

ad623.cir (4.4 KB)

OP or TRAN simulations abort with Timestep too small error. How can I fix this issue ?

Version: 9.0.5-68-gbaf4843a45, release build
Libraries:
    wxWidgets 3.2.8
    FreeType 2.13.3
    HarfBuzz 10.2.0
    FontConfig 2.15.0
    libcurl/8.14.1 GnuTLS/3.8.9 zlib/1.3.1 brotli/1.1.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.21.2 libssh2/1.11.1 nghttp2/1.64.0 ngtcp2/1.11.0 nghttp3/1.8.0 librtmp/2.3 OpenLDAP/2.6.10
Platform: Devuan GNU/Linux 6 (excalibur), 64 bit, Little endian, wxGTK, X11, , x11
OpenGL: AMD, AMD Radeon RX 570 Series (radeonsi, polaris10, ACO, DRM 3.61, 6.12.43+deb13-amd64), 4.6 (Compatibility Profile) Mesa 25.0.7-2
Build Info:
    Date: Oct 10 2025 08:08:33
    wxWidgets: 3.2.8 (wchar_t,wx containers) GTK+ 3.24
    Boost: 1.83.0
    OCC: 7.8.1
    Curl: 8.14.1
    ngspice: 44.2
    Compiler: GCC 14.2.0 with C++ ABI 1019
    KICAD_IPC_API=ON
Locale: 
    Lang: fr_FR
    Enc: UTF-8
    Num: 1 234,5
    Encoded кΩ丈: D0BACEA9E4B888 (sys), D0BACEA9E4B888 (utf8)

Best regards,

JB

This is not a KiCad nor a ngspice issue, thus a little off-topic for this blog. However I will give an answer, if only to show that it is not a simulator problem.

By good old engineering practise: divide and conquer.

What did I do?

Use as many copies of sim_thyristors.kicad_sch as needed (command ‘save as’).

Operating point simulation fails.

Throw out the thyristor stuff: simulation still fails.

Remove all TL971 opamps (exclude from simulation): op succeeds.

Put back U5: op succeeds. The amp draws 2mA from the supply.

Put back U4 in addition: op fails (same with U6).

Throw out everything except U4 and its surroundings: op fails.

So U5 is o.k., U4 (and U6) are not.

What is the difference: the resistors in the power supply lines.

Had a look at the TL971 data sheet. It says:

ICC Supply current (per amplifier)

Unity gain, No load, (at ±2.5V): typically 2mA.

Considering the resistors R14, R15, you are running the device (and its model) completely out of spec, as it will not get its current supplied. So the simulation fails.

Thanks for your answer. Before posting here, I have bisected problem. Even with smaller values (220R for R14/R15), simulation failed (but during simulation). I know that current supply is around 2 mA for one amplifier. I’ve just tried with bigger values with 15V power supply and I have forgotten to replace these values.

Regards,

JB

I normally approach it from the other side. I start with a very simple circuit, for example a pulse source with an RC circuit and then verify that works. This is useful for me, because I can’t even remember the syntax of pulse sources. It also verifies that the transient simulation is working as expected.

Then I add an opamp Either as a simple buffer, or as an simple amplifier. that verifies that the opamp model works and is correctly mapped. Also, not all opamps are unity gain stable, so even a “simple” buffer may fail because of that.

Only after all those things are verified to work I attempt to build more complex simulations and in small incremental steps. When I see something strange, then I know it happened because of the last change I made.

Some people consider it silly to do all these “extra” steps, but in reality it really is not much more work then any other simulation. To set up a more elaborate simulation, you still have to build the whole circuit and set all simulation parameters etc. So the only difference is that I pay some attention in which order I put the parts in the schematic, and I depress the “simulate” button more often.

1 Like