• 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 SKILL
  3. runSimulation activated by run()?

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 143
  • Views 16280
  • 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

runSimulation activated by run()?

Sebo
Sebo over 10 years ago

Hello,

I am trying some customized Spectre runs driven by OCEAN scripts without using any schematic entry.  I know there are a number of ways to do this, but at the moment I am trying a method that somewhat emulates what you would get if you were to actually use schematic entry.  This is:

1.) I create a Spectre netlist: ~/simulation/spectre/schematic/netlist/netlist (along with netlistHeader and netlistFooter files, and that is all)

2.) In OCEAN I note this with: design("~/simulation/spectre/schematic/netlist/netlist")

3.) In OCEAN I note the results directory with: resultsDir("~/simulation/spectre/schematic")

4.) In OCEAN I then define a simple analysis: analysis('dc ?saveOppoint t)

5.) In OCEAN I then request that this simulation be executed with: run()

This sequence of steps succeeds in creating a working input.scs file, it succeeds in creating a results directory in ~/simulation/spectre/schematic/psf, it succeeds in creating an execution script runSimulation,

BUT...

... it does not seem to actually carry out the DC simulation (e.g. no dc.dc or dcOP.dc file is created in the psf directory although artistLogFile, runObjFile and simRunData files are created there).  

runSimulation is a working script.  When I execute it directly from the UNIX shell (i.e. ./runSimulation) it creates the necessary files in my /psf and hence results that I can then look at with my OCEAN script (e.g. with the plot() command).

I always thought that the run() command was supposed to execute the runSimulation script.  In the past (when I was applying OCEAN scripts to spectre netlists generated with ADE, not manual as I am trying now) the run() command was successful, am I potentially missing something in these manually generated files preventing runSimulation from being activated by OCEAN?

I am using OCEAN from IC 5.10.41 and the Spectre version is 13.1.1

Thanks,

Sebastian

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    Sebastian,

    This should work. I would check a few things. First check the input.scs file that gets created to make sure it has everything you want. Then if no "spectre.out" file got produced, try running the "runSimulation" script from the command line - maybe spectre is failing to run because of some setup or OS reason. If spectre cannot run because there are shared libraries missing or you're on an unsuitable OS, then that's something that needs to be investigated first.

    Kind Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Sebo
    Sebo over 10 years ago

    Thanks Andrew.  I've looked up and down input.scs so many times, but can't seem to find anything goofy.  Perhaps it is indeed a local set-up problem.  Over the next few days I plan on trying out at least a couple of different ways at this (i.e. purely script-based OCEAN/Spectre runs, and perhaps just using OCEAN to drive SpectreMDL or at least complete Spectre netlists that sidestep entirely the input.scs flow) including giving IC6.1.6 a go.  Maybe this will eventually flush out the issue.  In the meantime I am just using the combination

    run()

    csh("./runSimulation") 

    in OCEAN.  run() generates  runSimulation and csh executes it and the sims look fine (e.g. can get a sequence of sims to work).

    Actually this brings me to a couple of questions that I can't find a good solution for:

    1.) During my Spectre runs, I get a lot of "Reading file:" messages from Spectre reporting on all the files the simulation is dealing with (e.g. the netlist, tons of model files, etc.)  I'd like to remove this clutter.  It seems like the only way to get rid of these (tried inventory, narrate, debug, info, note to no avail) is by using the =log switch.  Unfortunately I can't seem to find a way to automatically set this option in OCEAN or Spectre.  That is I can't seem to find an equivalent to say

    option('=log "PrintOutputHere.log")

    in OCEAN or using the spectre options setting (e.g. in netlistHeader).  Is there a way to automatically set =log in OCEAN and/or spectre?

    2.) Another issue is that runSimulation defaults to running ./input.scs, but if my OCEAN script is started in a different directory the csh(./runSimulation) approach noted above fails because ./input.scs is not where OCEAN was started.  Is there an obvious fix to that? (e.g. somehow generating runSimulation with whatever reference to input.scs that I want?)  I guess this may be taking the runSimulation beyond its original intent, at the moment its just a symptom of me not getting a fully operating run() going.

    Thanks again,

    Sebastian

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    This is extremely odd. I can't see why running "runSimulation" from csh() should succeed, but fail when being called from run() itself. The only case I can think of is that /bin/sh doesn't work on your machine - but that seems highly unlikely. If the whole ipc process was broken, then lots of things would fail.

    To answer your specific questions:

    1. No, there's no option for this. There's an enhancement request (if I remember rightly - I didn't check) to suppress the output. The ADE mechanism needs to see the simulator output to know when various things have happened - but it shouldn't really need to display anything in the CIW. Turning off the stdout from the simulator would break that (at least for the run() command - for csh() it wouldn't matter). You might be able to use envOption("userCmdLineOption" "=log...") to achieve this, but not sure without trying it, as it might fight with the existing +log entry that gets added to the command line.
    2. You probably need to do csh("cd pathToNetlistDir; ./runSimulation")

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Sebo
    Sebo over 10 years ago

    Thanks Andrew, I think you have hit on the problem.  I may be the victim of a little too much customization at the moment.  I am loading the Cadence tools selectively in an environment that supports the csh/tcsh shell.  I actually launch OCEAN with a shell script that at the same time defines all the other places to look for in IC5.1.41 (after defining all the dependency locations the script launches  ../tools/dfII/bin/ocean).

    I'm guessing if run() defaults to an execution in Bourne shell (i.e. sh()) it may be missing some of the defaults I have set in the C-shell environment and hence is not finding all the libraries needed to get Spectre going.  For example when I try sh("./runSimulation") a complaint is returned stating that an error is encountered when trying to load shared libraries (no such error is reported by run() alone though).  No such problem occurs when I run csh("./runSimulation") probably because all the dependency locations are known.

    One last thing as I continue along with these customizations...

    ...is there a command I can run in OCEAN to tell me what my current spectre.envOpts or spectre.outputs settings are?  For example, something that will push out a list to the screen.  As I experiment with different settings I want to make sure that I am being as consistent as possible.

    Thanks again,

    Sebastian

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    Sebo said:
    ...is there a command I can run in OCEAN to tell me what my current spectre.envOpts or spectre.outputs settings are?  For example, something that will push out a list to the screen.  As I experiment with different settings I want to make sure that I am being as consistent as possible.

    envOptions()

    save()

    (I think).

    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