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
- 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)
- 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.
- 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.
- 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.
- $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.
- 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
- 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
- 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&
- 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.
- 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
- 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"
- 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"
- 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"?))
- 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.
- 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.
- How do I attach a techlib to a library?
- In CIW type:
tcDisplayAttachTechForm()
- Or go to CIW -> Tools -> Technology File Manager -> Attach
- 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 1
tcsh
' before sourcing or contact
support to change your shell permanently.
- 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"
Prepared by
Faisal T. Abu-Nimeh
Last update: 12/28/2011
Updated by
Kenji Aono
Last update: 09/28/2012