• 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. Mixed-Signal Design
  3. calcVal outcome depends on enabled test (although no calcVal...

Stats

  • Locked Locked
  • Replies 16
  • Subscribers 67
  • Views 11867
  • 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

calcVal outcome depends on enabled test (although no calcVal is referring to such test)

NewScreenName
NewScreenName over 2 years ago

Dear all,

I

 have a testbench with one referenceTest and two following tests targetTest1 and targetTest2.

Both targetTest1 and targetTest2 have their own local variables respectively defined as calcVal("out1" "referenceTest" ?matchParams "all" ?ignoreParams("some params")) and calcVal("out2" "referenceTest" ?matchParams "all" ?ignoreParams("some params")).

When the referenceTest and either targetTest1 or targetTest2 are run, everything works just fine, however when all the three tests are run simultaneously targetTest1 would get a netlist error about not being able to map properly the points required by calcVal.

(Notice some local variables (e.g. v1) have a different value in targetTest2 with respect to referenceTest, but I have taken care to include such variable (and all the ones depending on it) in the ?ignoreParams statement of calcVal used in targetTest2.)

How can this be explained?

Virtuoso version:

Thank you

Best regards

  • Cancel
Parents
  • ShawnLogan
    ShawnLogan over 2 years ago

    Dear NewScreenName,

    NewScreenName said:
    When the referenceTest and either targetTest1 or targetTest2 are run, everything works just fine, however when all the three tests are run simultaneously targetTest1 would get a netlist error about not being able to map properly the points required by calcVal.
    NewScreenName said:
    How can this be explained?

    I will risk the fact that I may totally misunderstanding your question and hence make a rather obvious comment if you bear with me NewScreenName. Since your variables in targetTest1 and targetTest2 are both dependent on the simulation result of referenceTest, if you simulate the three tests benches at the same time, I do not know how you guarantee that test bench referenceTest completes before netlisting happens in targetTest1 and targetTest2. Put another way, the referenceTest outputs "out" and "out2" must be available prior to simulating test benches targetTest1 or targetTest2 respectively.

    My apologies if I am I overlooking something obvious or just plain misunderstanding your question!

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • NewScreenName
    NewScreenName over 2 years ago in reply to ShawnLogan

    Dear ShawnLogan,

    According to my understanding, in the moment one of the local variables of targetTest1 and one of the local variables of targetTest2 have a value calcVal("out1" "referenceTest" ...) and calcVal("out2" "referenceTest" ...) respectively, isn't this enough to have the simulator run referenceTest first, and only afterwards attempting to netlist for targetTest1 and targetTest2?

    I also observe that in facts referenceTest is the first one which gets run, and only after that completes, that other two tests are loading and their netlisting begins.

    What I rather get is a message : 

    *Error* ERROR (ASSEMBLER-2741): Failed to evaluate the calcVal("out1" "referenceTest") expression from test 'targetTest1' because no points matched the ?matchParams and ?ignoreParams specification.

    \e Only parameters that failed to match the database value will be reported in this message

    \e   Matching parameters specified in ?matchParams (list of parameters) because it has fewer than specified in the data point

    \e   Params in the point but not specified in ?matchParams: (another list of parameters)

    However this does not happen when only one of the two targetTests is enabled. Of course I am not changing any variable, just letting or not both tests run, that is what is quite confusing me.
    Is there anything which should be taken care when running multiple targetTests relying on a previous referenceTest's output, but being completely independent between each other among the targetTests?

    Thank you

    Best regards

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 2 years ago in reply to NewScreenName

    Dear NewScreenName,

    NewScreenName said:
    According to my understanding, in the moment one of the local variables of targetTest1 and one of the local variables of targetTest2 have a value calcVal("out1" "referenceTest" ...) and calcVal("out2" "referenceTest" ...) respectively, isn't this enough to have the simulator run referenceTest first, and only afterwards attempting to netlist for targetTest1 and targetTest2?

    If you defined a run plan, yes. However, you did not indicate that you created a run plan. From the Assembler manual at URL:

    https://support.cadence.com/apex/techpubDocViewerPage?path=assembler/assemblerICADVM20.1/asmRunPlan.html#calcValInRun

    an example of a run plan is provided where one simulation is dependent on a second simulation. I've included the relevant section as Figure 1.

    Did you define a run plan that includes your reference and two simulations dependent on the reference simulation?

    Shawn

    Figure 1

    from URL: https://support.cadence.com/apex/techpubDocViewerPage?path=assembler/assemblerICADVM20.1/asmRunPlan.html#calcValInRun

    Dear NewScreenName,

    NewScreenName said:
    According to my understanding, in the moment one of the local variables of targetTest1 and one of the local variables of targetTest2 have a value calcVal("out1" "referenceTest" ...) and calcVal("out2" "referenceTest" ...) respectively, isn't this enough to have the simulator run referenceTest first, and only afterwards attempting to netlist for targetTest1 and targetTest2?

    If you defined a run plan, yes. However, you did not indicate that you created a run plan. From the Assembler manual at URL:

    https://support.cadence.com/apex/techpubDocViewerPage?path=assembler/assemblerICADVM20.1/asmRunPlan.html#calcValInRun

    an example of a run plan is provided where one simulation is dependent on a second simulation. I've included the relevant section as Figure 1.

    Did you define a run plan that includes your reference and two simulations dependent on the reference simulation?

    Shawn

    Figure 1

    from URL: https://support.cadence.com/apex/techpubDocViewerPage?path=assembler/assemblerICADVM20.1/asmRunPlan.html#calcValInRun

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 2 years ago in reply to NewScreenName

    Dear NewScreenName,

    Unfortunately, my response was flagged as spam and, hopefully, will be released soon. In short, did you define a run plan?

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to ShawnLogan

    Shawn, a quick response as I’m on vacation and won’t have access for a while. It is not necessary to use run plans in order to set up a dependency - the same happens (and has always happened) with calcVal usage between tests. This is true if the variable of one test is being set using a calcVal referencing another, or if the outputs have calcVals. 

    NewScreenName - it seems that the problem is related to it not being able to find a match - and it’s not obvious why this is failing just when particular combinations of tests are enabled. Please contact customer support via a case at http://support.cadence.com and an application engineer can help you. 

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to ShawnLogan

    Shawn, a quick response as I’m on vacation and won’t have access for a while. It is not necessary to use run plans in order to set up a dependency - the same happens (and has always happened) with calcVal usage between tests. This is true if the variable of one test is being set using a calcVal referencing another, or if the outputs have calcVals. 

    NewScreenName - it seems that the problem is related to it not being able to find a match - and it’s not obvious why this is failing just when particular combinations of tests are enabled. Please contact customer support via a case at http://support.cadence.com and an application engineer can help you. 

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • ShawnLogan
    ShawnLogan over 2 years ago in reply to Andrew Beckett

    Dear Andrew,

    Andrew Beckett said:
    It is not necessary to use run plans in order to set up a dependency - the same happens (and has always happened) with calcVal usage between tests. This is true if the variable of one test is being set using a calcVal referencing another, or if the outputs have calcVals. 

    Thank you!

    Without access to the Cadence tools, I was not sure and could not verify it. Thank you for adding your comment!

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • NewScreenName
    NewScreenName over 2 years ago in reply to Andrew Beckett

    Andrew, I am reporting something else related, that is why I continue on the same post:
    I have again two tests, "reference_test" and "noise_tran_test".

    noise_tran_test is runs a transient noise simulation, while reference_test is created as a test copy of noise_tran_test, and the noise is disabled in the transient run. Then in the noise_tran_test I add calcVal in the outputs in order to access waveforms from reference_test to compare the noisy waveforms to their noiseless counterpart. 

    The tran noise run in noise_tran_test do not converge (needless to say it is simulating the same netlist) while it does converge in the reference test. If I disable noise and leave it a standard tran in noise_tran_test as well, all works fine and calcVal works properly.

    Also, if I remove any dependency from the two tests, and run noise_tran_test alone, without reference_test, the tran noise simulations will converge properly. 

    Am I making some mistakes in the use of calcVal? Is it compatible with transient noise? I could not read anywhere that it was not the case

    Best regards

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to NewScreenName

    This makes no sense - the netlist should be identical whether there is a dependency or not (if the calcVal is in the outputs; I'm assuming there's no calcVal in design/global variables in this case). Please contact customer support - an application engineer should look at this - I'm hoping it's some simple mistake (it could be a bug, but it's very hard to see how spectre would "know" that there's a dependency or not - all that spectre sees is the netlist!)

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • NewScreenName
    NewScreenName over 2 years ago in reply to Andrew Beckett

    Correct, no calcVal in design/global variables. I will try to contact the customer support, meanwhile I noticed that enabling a local/global variable to have different values (this time there is no reference_test) will allow only the convergence of the first tran noise iteration, the following ones fail.

    By the way, it is the IC analysis that is failing for the iterations following the first one:

    ERROR (SPECTRE-16385): There were 12 attempts to find the DC solution. In some of those attempts, a signal exceeded the blowup limit of its quantity. The last signal that failed is I(V6:p) = 1.80161 GA, for which the quantity is `I' and the blowup limit is (1 GA). It is possible that the circuit has no DC solution. If you really want signals this large, set the `blowup' parameter of this quantity to a larger value.
    ERROR (SPECTRE-16080): Cannot print DC solution because DC did not converge. Resolve the convergence issue and rerun the simulation.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Frank Wiedmann
    Frank Wiedmann over 2 years ago in reply to NewScreenName

    When I get very different results for similar simulation setups, the first thing I usually do is to run a diff on the input.scs, netlist and spectre.out files.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • delgsy
    delgsy over 2 years ago in reply to Frank Wiedmann

    could you tell more about what you mean by run a diff?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to delgsy

    The UNIX "diff" command (see "man diff"). You might even have something like tkdiff installed too which provides a convenient graphical interface. This is to look for the differences between two input files. So if you take the three files that Frank mentioned from the netlist directory of the two runs and compare them between runs, you should be able to see if there's a difference in the content (comparing the spectre.out is useful in case there was a difference in the command-line options given to the simulator). It's hard to see otherwise how there could be a difference in results unless the inputs are different.

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • delgsy
    delgsy over 2 years ago in reply to NewScreenName
    NewScreenName said:
    Am I making some mistakes in the use of calcVal?

    Have you tried to use calcVal in Global Variable instead of putting it directly in the output expression?
    I have checked again my setup, I put calcVal in Global Variable and as fas as I remember, I always do it this way.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • delgsy
    delgsy over 2 years ago in reply to Andrew Beckett

    Thanks Andrew,
    I will check about it.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • NewScreenName
    NewScreenName over 2 years ago in reply to delgsy

    In this specific case I did not, although in other occasions using calcVal in the output expressions, and also in the spec column worked. I did not read anywhere in the documentation that it should not be done, is it the case?

    • 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