• 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. readforce does not work in DC simulation

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 125
  • Views 19128
  • 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

readforce does not work in DC simulation

Qilong
Qilong over 8 years ago

Hi all, 

    Recently I am trying to play with the readforce in DC simulation. My test circuit is a series RC network (R=1 Ohm, C=1pf both from analogLib), with the two terminals connected to gnd. No sources are used. Then I specified the voltage value on the floating plate of the capacitor in a file (with only one line in it: net_flaoting 1). Then I use readforce to read this file in DC simulation, with any other parameters like force, readns empty.  

    From the descriptions in the spectre simulator user guide and the reference, I am expecting a voltage of 0.5V on the floating plate of the cap after the DC run (I used rforce=1 Ohm). However only 0V is shown. On the other hand, if I specified initial state in the cap and use force=dev, the desired 0.5V will be calculated. Comparing this two cases, could I ask why the simulator does not use the statement I wrote in the file? 

    PS: As a crosscheck, I used the same file in a transient simulation with the same network by setting readic=filename.  Then I can see the initial state is calculated quite well. The floating node starts to settle down from the initial voltage of 0.5V (again rforece=1 Ohm), which seems the file is recognisable by spectre.   

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    I assume you didn't set force=node (or force=all) on the dc analysis. If you had, this would have worked. The reason is that the default behaviour is that forces (or initial conditions) are ignored for a DC analysis, because they can lead to false results in a subsequent small-signal analysis. With transient, there's often a special reason for wanting a force/ic (e.g. to move away from some metastable state), and the transient has the opportunity to move way from any unrealistic force/ic that you've applied. So the default for the transient ic parameter is all, whereas the default for the dc force is none.

    I tried your circuit with force=node and readforce="file.in" and it ended up with 0.5V on net_floating.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Qilong
    Qilong over 8 years ago
    Hi Andrew,

    Thanks for the reply. Indeed I left force=none by not touching it in the transient option. Now I learned that by default ic=all in transient while force=none in dc, both of which are not covered in the user guide and the reference. Thanks again for your clear explanations!


    Regards,
    Qilong
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    Qilong,

    This is in the Spectre Reference (and "spectre -h dc" and "spectre -h tran").

    For dc:

    State-file parameters
    14 force=none   Determine whether to force values for DC. Uses the
                    values from the device and node ICs. Possible values
                    are none, node, dev, and all.

    For tran:

    Initial-condition parameters
    10 ic=all   The value to be used to set the initial condition.
                Possible values are dc, node, dev, and all.

    The red words I've highlighted show you the default values (this is done for all parameters, not just these).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Qilong
    Qilong over 8 years ago
    Hi Andrew,

    I have noticed that. But I thought the red words were just example values other than the defaults. You corrected me again. Thank you very much!

    Regards.
    Qilong
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Qilong
    Qilong over 8 years ago
    Hi Andrew,

    Here I have another question related to the priority of ic, skipdc, readic,readns in the transient options. My questions starts from the check of Parameter "icpriority" explained in the user guide and the reference.

    I used the same circuit as before. And I assigned the initial state of the capacitor in two ways at the same time, one by specifying ic in the device CDF, the other by assigning node voltage with readic="file.in". Meanwhile I leave other transient parameters empty (ic=all by default, skipdc and readns empty). Then I found the value in "file.in" was used and the CDF parameter was ignored. However, in the reference it says the icpriority is set to "netlist" by default in Spectre 15.1, which means the value in the ic statement in the netlist (CDF ic) should override that in the readic file. So there seems a contradiction, doesn't it?

    Another experiment I did is to check what "icpriority" means. I built two identical RC circuit, and assigned the two capacitors' initial values in two ways as above, but separately. Again leaving other transient parameters empty, I found both initial conditions are used correctly. But it seems to be contradictory with the statement of "icpriority" in the user guide(under Subsection "setting ic priority oreder"):

    "By default, if you specify an initial condition file with the readic parameter, initial conditions from the file are used, and the ic statements specified in the netlist are ignored. "

    Combining with the two effects shown above, does it mean that the overriding mechanism only function when there are contradictory ic statements at the same node, between netlist and readic? Or does ic=all by default change the priority internally?

    Furthermore, is there any priority table that can used to check the order of use between ic, skipdc, readic and readns?

    Sorry for my tedious questions. After using spectre for some time, I really want to make clear about every option instead of leaving them empty blindly. Many thanks ahead.


    Best regards,
    Qilong
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    Qilong,

    The icpriority parameter is controlling the order of the readns/readic parameter and the "nodeset"/"ic" statements in the netlist (see "spectre -h nodeset" and "spectre -h ic". It is not about the ic parameter on capacitors or inductors. As far as I know, the initial conditions read from a file with readic will always override the initial conditions specified on the instance directly - no contradiction here at all. I don't understand what you mean by "Furthermore, is there any priority table that can used to check the order of use between ic, skipdc, readic and readns?" - maybe I've explained it though? Essentially a nodeset is a help at the beginning of DC convergence - the forces are applied, DC convergence is reached, and then the forces removed and it then attempts to continue with DC convergence. Initial conditions are held for the entire duration of the DC convergence (so they are a stronger force). The skipdc parameter controls whether a DC solution is found, or whether various advanced methods are used instead (such as waveless, rampup, sigrampup and so on).

    Regards,

    Andrew.

    • 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