• 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. Include file in spectre

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 143
  • Views 17875
  • 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

Include file in spectre

sdv30
sdv30 over 9 years ago

I have a very simple question.
I am trying to include a file in spectre. I have the simplest setup possible.
I am using an empty netlist (only entry is simulator lang=spectre) and using a stimulus file, where I have only one include statement:
include "RefClk.txt"
The RefClk.txt file has a pwl voltage source in spectre syntax (simulator lang=spectre at the top of the file). 
The issue is this: When I have a very low number of time/voltage pairs (e.g. 50) then the file is included and the simulation completes correctly.
When I try to include a more realistic pwl waveform with ~1000 time/voltage pairs, the simulations hangs.
Has anyone seen anything like that?
Thanks.

  • Cancel
  • sdv30
    sdv30 over 9 years ago

    Here are the ocean file used for the simulation and the log file:
    -------------------
    simulator('spectre)

    ; PARAMETERS OF THE SIMULATION:
    tEnd= 1e-05 
    desVar("tEnd" tEnd)

    ;********************************************
    ; DESIGN SETUP:
    design("./netlist")
    stimulusFile("./stimulus" ?xlate nil)
    temp(25)
    analysis('tran ?stop "tEnd" ?errpreset "moderate")
    ;analysis('tran ?stop "tEnd" ?errpreset "conservative")
    option( 'gmin 1e-14 'vabstol 1e-16 'reltol 1e-10 'iabstol 1e-16 )
    resultsDir("./")
    run()
    results()
    selectResults('tran)
    outputs()

    ; REFERENCE CLOCK ZERO CROSSINGS:
    ZCref=cross(v("Vref") 0.5 0 'rising)

    out= outfile("ZCref.mat");
    fprintf(out "%% Zero Crossings \n")
    ocnPrint(?output out ?precision 20 ?numberNotation 'engineering ZCref )
    close(out)

    ----------------------------------

    COPYRIGHT © 1992-2015  CADENCE DESIGN SYSTEMS INC.  ALL RIGHTS RESERVED.
             © 1992-2015  UNIX SYSTEMS Laboratories INC.,
                            Reproduced with permission.

    This Cadence Design Systems program and online documentation are
    proprietary/confidential information and may be disclosed/used only
    as authorized in a license agreement controlling such use and disclosure.

             RESTRICTED RIGHTS NOTICE (SHORT FORM)
    Use/reproduction/disclosure is subject to restriction
    set forth at FAR 1252.227-19 or its equivalent.
    Loading socket.cxt 
    Loading dal.cxt 
    Loading awv.cxt 
    Loading par.cxt 
    Loading alvs.cxt 
    Loading caa.cxt 
    Loading adexl.cxt 
    Loading te.cxt 
    Loading schHDL.cxt 
             Type ocnHelp() for help on OCEAN commands.
             Look in .../tools/dfII/samples/artist/OCEAN for example
             OCEAN scripts.
    nil
    ocean> *WARNING* (icLic-3) Could not get license Analog_Design_Environment_L
    ocean> ocean> ocean> *INFO* (icLic-25) License Analog_Design_Environment_XL ("95210") was used to run ADE L.
    Loading devCheck.cxt 
    Loading relXpert.cxt 
    spectre
    1e-05
    ocean> "1e-05"
    ocean> ocean> ocean> ocean> INFO (OCN-6058): amap directory is missing in the netlist directory. Schematic names will not
           get mapped to simulator names. Ensure that amap directory is present in the netlist
           directory.
    "./netlist"
    ocean> ("./stimulus")
    ocean> "25"
    ocean> "moderate"
    ocean> ocean> "1e-16"
    ocean> "./"
    ocean>
    Back to top
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    I'm not aware of any general issues with lots of points. I just created an example with 20,000 points and it ran with no problem. So it's almost something specific to the data or your simulation settings. You provided a bunch of information, but without the circuit and the PWL stimulus file (and the version used) it's not really going to be possible to understand. Can you contact customer support?

    I would point out that your OCEAN script is setting crazy settings for the simulator:

    option( 'gmin 1e-14 'vabstol 1e-16 'reltol 1e-10 'iabstol 1e-16 )

    A reltol of 1e-10 is ridiculously tight. You then only have a few remaining digits of numerical resolution in your double precision floating point numbers. Similarly your vabstol would be trying to use the reltol for tiny signals. What this means is that if you have a signal that is even 1fV (1e-15V) it would be trying to ensure that the difference between two iterations is less than 1e-16. Or if you have a microvolt, the difference between one iteration and the next is less than 1e-16 volts. Similarly your current accuracy is very high. Why are you doing this? It suggests to me that you don't know what you're doing, I'm afraid, and have just plucked some very small numbers in the hope that it will give you a more accurate solution. More likely you're just going to kill the simulation performance and actually mean that it might start taking very short time steps to follow the signals.

    You also didn't show what your voltage source looks like - I'm hoping you don't have the allbrkpts parameter on the source set to yes.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sdv30
    sdv30 over 9 years ago

    Hi Andrew, you were right, I relaxed the simulation settings and it worked. 

    I had used the same simulation in a different environment/company, so the simulation settings were legacy.

    Thanks for your help.

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

    Good that it's working now.

    I'd recommend removing that options line altogether. I'd suggest starting from default accuracy settings, and setting the errpreset on the tran to be conservative if you really need to. Then if you need more accuracy than that, tighten the reltol to 1e-4 (which means 1e-5 with an errpreset of tran) - only tighten tolerances if you need to. Most people tend to over-tighten and then complain about the simulation performance because they've set them inappropriately. 

    Spectre is pretty accurate out of the box, so start from that assumption and tighten when you need it, rather than tighten just in case...

    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