Kenji Aono
NSF Graduate Fellow

Tutorials

This page provides basic information for ECE students, here at MSU, to use Cadence tools efficiently. Currently, we have Cadence IC 6.1.3 installed along with the NCSU CDK 1.6 beta. A list of useful tutorials:
- A tutorial to setup your Cadence Virtuoso environment is here.
- A tutorial to create a simple inverter simulation with AC/DC/TRAN analysis is here.
- A tutorial to draw better plots and graphs is here.
- A tutorial for creating easy parametric analysis is here.
- #A tutorial for layout design is here.
- #A tutorial for power calculation here.
- #A tutorial for place-and-route here.
- #A tutorial for automated digital design flows here and scripts here.
- A tutorial for On-Chip Inductors using ASITIC is here. [AMI_06.tek, layer.map]
- OnSemi 0.5 microns (SCN3ME_SUBM) GDSII Layer Map for MOSIS submissions here

FAQ

  1. ADE GXL returns message 1921 after failing to run simulation.
    • Run the following command from the terminal:
      ldd /opt/soft/Cadence/IC610/tools/dfII/bin/Xndx
      *Note that /opt/soft/Cadence/IC610 is the directory where Cadence was installed.
    • libgdbm.so.2 should return as not found, this is the source of the problem.
    • To fix this issue, install libgdbm.so.2 to /usr/lib32 (or lib64). Alternatively, create a symbolic link to a newer version of libgdbm. (`libgdbm-dev' in Debian `gdbm-devel' in Red Hat)
  2. Simulation fails because of an error in input.scs.
    • This error can occure due to improperly configured model libraries.
    • Run the following code:
      envSetVal("asimenv.loadstate" "modelSetup" 'boolean nil)
    • Edit your .cdsenv and add the following lines:
      spectre.envOpts includePath string "/opt/soft/NCSU-CDK-1.6.0.beta/models/spectre/nom"
      spectre.envOpts modelFiles string "/opt/soft/NCSU-CDK-1.6.0.beta/MSU/allModels.scs"
    • If this does not fix the error, you will need to check and save your schematic to generate a new input.scs. In addition, you cannot reuse old artist states, these must be set from scratch.
  3. Virtuoso crashed and I can't restart it now.
    • The most common culprit for this is a failed connection in the X11, and is likely due to a crash in Xming, not Virtuoso.
    • Close PuTTY and Xming(it's probably already closed), and restart both applications; you should now be able to reconnect without getting X Window errors.
    • If the problem persists, use the command computeuse from `scully.egr.msu.edu' to find a server with less load, if everyone is using the same server this issue tends to become more pronounced.
    • Remember: SAVE OFTEN!
    • Researchers with department computers may request local installations, which will alleviate this problem.
  4. Direct plot → AC Magnitude Phase doesn't work.
    • Once you select Direct plot → AC Magnitude Phase from ADE GXL, you should be taken to the schematic view.
    • Click on the net that you wish to plot. (This is usually the output pin.)
    • Go back to your adegxl tab, from where you originally selected Direct plot → AC Magnitude Phase, and this time choose Direct plot → Main Form. A new window (that can be cancelled/closed) will pop-up, and the Active plot should be updated.
  5. $SOFT is not a variable, the command prompt has odd colors.
    • Most likely this is due to a misconfigured profile, common in first-time users.
    • Log onto `scully.egr.msu.edu' through PuTTY, or your own ssh client, and type:
      /opt/bin/newdots
    • Type `yes' to allow the changes to be made, logout of scully when done. $SOFT should be available now.
  6. Floating gate layouts result in a DRC warning:
    (DBM Rule 2.0) Poly cannot overlap ohmic diffusion
    • This warning can be safely ignored as it is not an official SCMOS rule.
    • To remove the warning from appearing, download the updated rules and place the file in
      ~/ncsu-1.6/techfile
  7. I need to simulate NCSU_TechLib_tsmc02(180µm), but Spectre can't find the models.
    • This is due to the NCSU CDK not shipping with Spectre models for this technology, fixing it will require that users have write permission to the $CDK_DIR directory.
    • Download the models for the NMOS and PMOS and place them in
      ~/ncsu-1.6/models/spectre/nom
  8. I get the following error when running ADE GXL:
    Error while preparing to run the simulation.
    ls: a nlambda must be defined or declared before its use
    • This is due to a server-side error in a configuration file, please use ADE L for simulations.
    • For those who need to use ADE GXL; wait for the server file to be fixed, or...
        WARNING: Only advanced users should proceed, damage may result if improperly patched
      • Copy the NCSU directory on the server to your home directory:
        cp -r /opt/soft/NCSU-CDK-1.6.0.beta ~/ncsu-1.6
      • Apply the patch to ~/ncsu-1.6/skill/misc/opusUnix.il:
        cd ~/ncsu-1.6/skill/misc
        patch -i NCSU_SKILL.patch
      • Copy the cadence and cadence-auto scripts from the server to your home directory:
        cd ~
        cp $SOFT/cadence ./cadence
        cp $SOFT/cadence-auto ./cadence-auto
      • Apply their respective patches, available as cadence.patch and cadence-auto.patch:
        patch -i cadence.patch
        patch -i cadence-auto.patch
      • From now on, use the following command to launch virtuoso:
        source ./cadence-auto virtuoso&
  9. Cadence Custom IC crashed! How can I restore the previous session?
    • In the CIW type: dbOpenPanicCellView("ECE410" "Inverter" "layout")
    • This will restore the layout window for your inverter in the ECE410 library.
  10. How do I change the default so that ADE states are loaded or saved from cellView rather than directory?
    • In the CIW type: envSetVal("asimenv" "saveAsCellview" 'boolean t)
    • To make this permanent edit your .cdsenv to add:
        asimenv saveAsCellview boolean t
  11. In a Spectre simulation, how do I save currents by default?
    • Add the following to your .cdsenv
        spectre.outputs currents string "all"
    • To save hdl variables as well, add:
        spectre.outputs subcktprobelvl string "2"
        spectre.outputs saveahdlvars string "all"
  12. I want to speed up my Spectre simulations. Does it support multi-threading?
    • Yes, add the following to your .cdsenv:
        spectre.opts multithread string "on"
    • Spectre will detect the number of CPUs available and use all of them if you have more then 256 components.
    • If you want to specify the number of threads then add:
        spectre.opts nthreads string "4"
  13. Why can't I set environment variables in .cdsenv?
    • cdsenv does not support intelligent variables you have to use .cdsinit instead. e.g. if you have $PROJECT_ENV_DIR already set and want your graphic drfPath to load it you cannot do graphic drfPath string "PROJECT_ENV_DIR/display.drf"
    • Please use cdsinit by adding:
        envSetVal(?graphic? ?drfPath? ?string strcat(getShellEnvVar("PROJECT_ENV_DIR")"/display.drf"?))
  14. How can I delete all Cadence Virtuoso Lock Files?
    • Open a Terminal window, go the directory where your library resides and type:
        find . -name "*.cdslck" -type f -exec rm -rf {} \;
    • This should recursively delete all cdslck files in the current directory.
  15. How do I reload .cdsenv file
    • In CIW type:
        envLoadVals(?envFile "./.cdsenv")
    • This will reload .cdsenv in the currect directory. You can change the path if desired.
  16. How do I attach a techlib to a library?
    • In CIW type:
        tcDisplayAttachTechForm()
    • Or go to CIW -> Tools -> Technology File Manager -> Attach
  17. I get an error "bash: setenv: command not found" when I source the environment file.
    • Make sure that you are running tcsh shell not bash, so just type 1tcsh' before sourcing or contact support to change your shell permanently.
  18. When I run Virtuoso it fails with this error:
    WARNING* X Window Display Initialization failure
    WARNING* (DISPLAY not defined)
    • If you are running on Windows make sure you that Xming is running and X11 Forwarding is enabled in Putty. If you are running on a Mac or Unix then verify that you pass -X when running ssh e.g. "ssh -X"