• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. VerilogA code error:signal exceeds blowup limit

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 125
  • Views 9053
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

VerilogA code error:signal exceeds blowup limit

Sandeep4386
Sandeep4386 over 7 years ago

I want to write a VerilogA model which monitors input current and prints a message if it is above certain level. I also want output to be same as input current.

I wrote a model and it works but throws out below error when I add a line for output current to be equal to input. Any suggestions what I'm doing wrong here?

[code]`include "constants.vams"
`include "disciplines.vams"

module CurrentMonitor_VlogA(Iin,Iout);

input Iin;
output Iout;
electrical Iin,Iout;

real Ivalue;
parameter real IT2Limit=1m;

analog begin

Ivalue=I(Iin);
I(Iout)<+I(Iin);

if (Ivalue>=IT2Limit)
$strobe("WARNING:Value of current at node Iin has exceeded %g at %m, Iin=%g at simulation time t=%e",IT2Limit,Ivalue,$abstime);
else
$strobe("Current at node Iin=%g, simulation time=%e",Ivalue,$abstime);
end

endmodule[/code]

Here is the error message:

   ERROR (SPECTRE-16384): Signal V(Iout) = -732.434 GV exceeds the blowup limit for the quantity `V' which is (1 GV). It is likely that the circuit is unstable. If you really want signals this large, set the `blowup' parameter of this quantity to a larger value.

  • Cancel
  • Saloni Chhabra
    Saloni Chhabra over 7 years ago

    You might want to modify the current contribution statement to (note the '-' sign):

    I(Iout) <+ -I(Iin);

    If the current flowing into the model/block is assumed positive, then the current flowing out should be negative i.e.have inverse polarity. So, this could be one of the reasons why your circuit is struggling to converge.

    Regards,

    Saloni

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Sandeep4386
    Sandeep4386 over 7 years ago in reply to Saloni Chhabra

    Thanks Saloni for your suggestion. 

    I tried that but now I have the same error with opposite polarity on output voltage blow up limit as shown below:

        ERROR (SPECTRE-16384): Signal V(Iout) = 732.434 GV exceeds the blowup limit for the quantity `V' which is (1 GV). It is likely that the circuit is unstable. If you really want signals this large, set the `blowup' parameter of this quantity to a larger value.

    I tried to model output voltage but it won't let me. Any further suggestions?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Saloni Chhabra
    Saloni Chhabra over 7 years ago in reply to Sandeep4386

    What have you connected to the output of this current mirror? And what is the value of the current on Iin? As the convergence error is due to the voltage being generated at the output of your model, can you share your complete input.scs for further analysis.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Sandeep4386
    Sandeep4386 over 7 years ago in reply to Saloni Chhabra

    Hi Saloni,

    Good catch, output node was left open, once I connected it to a load, I could run the sim with no issues. Thank you very much for your help.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to Sandeep4386

    I wondered whether you really wanted to have a current controlled source as part of your monitor - this seems unnecessary. Perhaps you wanted just a probe - the code below creates a zero-volt source between the input and output and measures the current flowing through that source.

    Note I changed the text of the output messages because there's no such thing as the current at a node (the current at a node should be 0, because of Kirchoff's current law):

    module CurrentMonitor_VlogA(Iin,Iout);

    inout Iin;
    inout Iout;
    electrical Iin,Iout;

    real Ivalue;
    parameter real IT2Limit=1m;

    analog begin

      Ivalue=I(Iin,Iout);
      V(Iin,Iout)<+0;

      if (Ivalue>=IT2Limit)
        $strobe("WARNING:Value of current through %M has exceeded %g at %m, value=%g at simulation time t=%e",IT2Limit,Ivalue,$abstime);
      else
        $strobe("Current through %M=%g, simulation time=%e",Ivalue,$abstime);
    end

    endmodule

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Sandeep4386
    Sandeep4386 over 7 years ago in reply to Andrew Beckett

    Hi Andrew,

    This is much better approach and exactly what I needed. Thank you!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information