I pulled the converted PSpice file for the TI TPS2557 Power Switch directly from the TI website. Copied the contents into LTSpice and created a symbol using the LTSpice auto symbol creator. Verified X prefix is present. So far so good.

enter image description here

Run the transient simulation - no errors. Great! I probe OUT_1 to find that the output does something, but is virtually zero. It should be 5V. (tried higher resistances as well) Probing other nodes I see the expected voltages. Seems related to output only.

enter image description here

Combing through the subckt I see several subckts are being used.. and that's OK, ALL subckts are defined and accounted for. However, there are a few subckts defined in the file that are not used: CESR and SWITCH_PS... hmmm.

Enter TINA-TI. I open the TI version of the model using TINA-TI and see that they have a CESR capacitor outside of the TPS2557 macro. Back to LTSpice, autogenerate the symbol and attach X prefix to use CESR supplied subckt. Same problem. No voltage output.

I am curious if adding this unused subckt SWITCH_PS will help. Unfortunately I am not sure what it is or if it is needed. It has 3 nodes and appears to be a "switch" with a couple custom FETs. I assume it is specific to the TINA-TI simulation but can't find solid documentation. Anyone experienced this problem before? Suggestions? I can use TINA for this switch, but I am REALLY interested in the TPS2561, which only has PSPICE not TINA.

.SUBCKT NSW_PS D G S PARAMS: RONval=10k VTHval=0.7 VCHARval=0.01 CGval=0.01pF CDval=0.01pF CSval=0.01pf
RDDUM D 0 1e11
RSDUM S 0 1e11
RGDUM G 0 1e11
CG G D {CGval}
CD D S {CDval}
CS G S {CSval}
***EEXP F1 0 VALUE={LIMIT(((V(G,S)-VTHval)/VCHARval),-80,80)} 
Etest test 0 VALUE={IF(V(D) > V(S), V(G,S), V(G,D))}
GOUT D S VALUE={V(D,S)/(RONval*(1+EXP(-LIMIT(((V(test)-VTHval)/VCHARval),-80,80))))}

.SUBCKT PSW_PS D G S PARAMS: RONval=10k VTHval=0.7 VCHARval=0.01 CGval=0.01pF CDval=0.01pF 
RDDUM D 0 1e11
RSDUM S 0 1e11
RGDUM G 0 1e11
CG G D {CGval}
CD D S {CDval}
***EEXP F1 0 VALUE={LIMIT(((V(S,G)-VTHval)/VCHARval),-80,80)} 
Etest test 0 VALUE={IF(V(S) > V(D), V(S,G), V(D,G))}
GOUT S D VALUE={V(S,D)/(RONval*(1+EXP(-LIMIT(((V(test)-VTHval)/VCHARval),-80,80))))}

.SUBCKT SWITCH_PS A SWD SWC PARAMS: vth=500e-3 ron=1e3 roff=1e6 tdelay=1e-9 trise=1e-9 tfall=1e-9 initval=0
***** boolean ************
EBUF1 Ypp 0 VALUE={IF(V(A) > ({vth}), {1-initval}, {initval})}
ROUTpp Ypp 0 1e11
***** add delay lines ****
XNSW1 OUTp Ypp 0 NSW_PS PARAMS: RONval={(tdelay+1e-15)/(1e-12*0.693)} VTHval=0.5
XPSW1 OUTp Ypp VSUP PSW_PS PARAMS: RONval={(tdelay+1e-15)/(1e-12*0.693)} VTHval=0.5
CDEL1 OUTp 0 1pF
ETHRESH Yp 0 VALUE={IF(V(OUTp) > 0.5, 1, 0)}
ROUTp Yp 0 1e11
** Add rise and fall *****
XNSW2 OUTr Yp 0 NSW_PS PARAMS: RONval={(trise+1e-15)/(1e-12*2.3)} VTHval=0.5
XPSW2 OUTr Yp VSUP PSW_PS PARAMS: RONval={(tfall+1e-15)/(1e-12*2.3)} VTHval=0.5
CDEL2 OUTr 0 1pF
***Switch ************
  • \$\begingroup\$ I'd double check the voltages on the nodes, also double check the nodes and make sure they are in the correct order on the subckt, graphic and generated netlist file \$\endgroup\$
    – Voltage Spike
    Commented Oct 7, 2022 at 16:59
  • 2
    \$\begingroup\$ Your chosen value for R_ILIM is 110k which corresponds to a 1 A limit. Since the input voltage is 5 V and the load is 50 m\$\Omega\$, that sounds like an overcurrent from the start. In fact, the limitation should kick in as soon as 50 mV input. Why not try a 3 \$\Omega\$ resistor for a PWL 0 0 0.5 5 source, for start? \$\endgroup\$ Commented Oct 7, 2022 at 18:57
  • \$\begingroup\$ Forgot to ask then: what is that other subcircuit, CESR (ref.d es. U_CES) and how does it influence the output? \$\endgroup\$ Commented Oct 7, 2022 at 21:48
  • \$\begingroup\$ Thanks @aconcernedcitizen. I did try several resistances, 50mOhm just happened to be where I gave up trying. I will add the CESR subckt for completeness. \$\endgroup\$ Commented Oct 9, 2022 at 14:32

1 Answer 1


I duplicated your circuit and got the same problem. I first opened up the SPICE Error Log with CTRL-L and it gives some errors worth addressing:

enter image description here

LTspice does not like when there are two curly braces in a row. To fix that, you have to edit the .LIB file and do a find&replace for {{ to { and then also for }} to }.

However, that's not enough to fix the problem you're having. I played around a bit and decided to tie the EN pin low, and that apparently "fixed" it. Well...it turns out the EN pin doesn't really function properly. I put a voltage ramp on the EN pin to see its behavior better.

enter image description here

Looks backwards, so I tried the TPS2556 PSpice model thinking they might've goofed up the two since that one is supposed to be the other way around...but it's apparently screwed up in its own way. Anyway, I was able to fix the TPS2557 by swapping the inputs to the analog comparator instance which compares the EN voltage against a fixed 0.88V with 55mV hysteresis. That would be this line here:

X_U1_U48         EN U1_N7637958 U1_N7643981 U1_N16726884 COMPHYS_BASIC_GEN

And switching the first two nodes would result in this:

X_U1_U48         U1_N7637958 EN U1_N7643981 U1_N16726884 COMPHYS_BASIC_GEN

Which gives me the expected output below:

enter image description here

NOTE: To fix the TPS2556 version, I had to do the same fix above and additionally remove the XNOR gate that's after the comparator. Welcome to the wonderful world of fixing TI SPICE models! We have T-shirts.

  • \$\begingroup\$ You had greater patience than me, +1. Looking through the errors, I see all of them could have been replaced by the infinitely friendlier A-devices but, I don't really expect the extra effort from the supplier(s). Also, have you tried using the same values as OP?I mean 50m as load. Does it output anything if the input is the same PWL? (maybe for the small duration when Vin>50m?) \$\endgroup\$ Commented Oct 9, 2022 at 7:07
  • \$\begingroup\$ @SteKulov This is amazing! I was looking through the menus for a log and didn't see anything. Probably should have googled that one. Thank you for taking some time to look at this. \$\endgroup\$ Commented Oct 9, 2022 at 14:30
  • 1
    \$\begingroup\$ @aconcernedcitizen I did not previously because I knew it would overcurrent, like you mentioned in the comments. I just tried it and the output seems to be a current source clamped to the limit setting. So if there's 50mΩ load and limit is set to 1A, then output is 50mV. \$\endgroup\$
    – Ste Kulov
    Commented Oct 9, 2022 at 17:27
  • \$\begingroup\$ @atomSmasher It's also found in the menu bar under View->SPICE Error Log, but CTRL-L is easy enough to remember. Oh ya, just to make sure you understand our discussion above. 50m (or 50M) in SPICE is always 50milli. It's never meg unless you write out meg. We were wondering if that load resistor you used in your original schematic was a mistake because it would cause an overcurrent and cause the part to not operate (by design of course). \$\endgroup\$
    – Ste Kulov
    Commented Oct 9, 2022 at 17:32
  • \$\begingroup\$ @SteKulov I am using a Mac and the LTSpice UI is unrecognizable compared to Windows :( Seems CTRL-L is the only way to get a log on Mac version. Thank you for the unit clarification. The schematic I screen captured was in fact milli, but I tried several other Ohm values as well. 50mOhm just happened to be where I through my hands up and said "I dunno". \$\endgroup\$ Commented Oct 10, 2022 at 16:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.