I joined Cadence in July 2000 and was immediately put on a three-month training to learn and understand the simulator tools. There were formal training sessions, and I had a mentor who I could ask all my queries. But most of the times, I was on my own, as "learning by doing" was the motto of my mentor. Today, after completing 14 years at Cadence, I can tell you that it works great, especially in cases where the tool is also designed with great utilities that help you learn faster.
nchelp
As I moved on in my job, I faced time crunch in going through product manuals, LRMs, etc., and learning the basic stuff. Since time was less, I decided to write designs and start debugging myself to learn faster. In the process, I soon figured out a great self-help utility called nchelp—the native Help for Incisive simulation Error and Warning messages.
The nchelp utility gives you detailed information about an error or warning message that you may get during the various phases of your Incisive simulation run.
Here is the nchelp usage syntax:
nchelp <tool name> <error/warning code>
Let us take the following warning message as an example:
ncelab:*W,SDFNEP: Failed Attempt to annotate to non-existent path (COND (B===0) (IOPATH A Y)) of instance test.i1 of module xo2 <./a.sdf, line 20>.
Where,
ncelab is the name of the tool which generated this warning.
W indicates the severity of the message, (other levels of severity are Note (N), Error (E) or Fatal (F)), and
SDFNEP indicates the error or warning code. In this case "ncelab", the tool name is followed by the severity of the message
To get extended help for this warning, give the following command on your unix prompt:
% nchelp ncelab SDFNEP
ncelab/SDFNEP =
This path, including the condition, if any, does not exist in the instance being annotated. The requested annotation will not occur. In order to perform the annotation, the information in the SDF file must be updated to correctly match what is in the HDL description.
Now, if you combine the warning message,
ncelab:*W,SDFNEP: Failed Attempt to annotate to non-existent path (COND (B===0) (IOPATH A Y)) of instance test.i1 of module xo2 <./a.sdf, line 20>)
that gives me information on code, line number, etc, and the elaborated description through nchelp, I now know that I need to check the syntax mismatch for (COND (B===0) (IOPATH A Y)) in my HDL and SDF descriptions.
Similarly, there are thousands of such error and warning messages that can be debugged using nchelp.
For more information, I can refer Using theIncisive Simulator Utilities book available under the latest INCISIV Release documentation on Cadence Online Support by visiting http://support.cadence.com, or by looking through the CDNSHelp utility.
ncbrowse
Soon, I discovered the other great utility in its GUI incarnation called NCBrowse Logfile Message Browser.
ncbrowse is a two-window GUI that allows you to interactively view and analyze:
- Log file messages produced by Cadence tools, such as the HDL analysis and lint tool (HAL)
- Logs produced by other Cadence simulator tools, such as ncvlog (the Verilog compiler), ncvhdl (the VHDL compiler), and ncelab (the Incisive elaborator).
ncbrowse displays log file messages in a message window, and the corresponding Verilog source code that produced the messages in a source file window.
For more information,see the Using the Incisive Simulator Utilities book available under the latest INCISIV Release documentation on Cadence Online Support by visiting http://support.cadence.com, or by looking through the CDNSHelp utility.
Troubleshooting
And what a bonus when I started finding useful information, debugging tips, and learning collateral on the Cadence Online Support homepage, (http://support.cadence.com), which is the 24/7 partner for Cadence customers and employees. The information available on the support site not only helped me in resolving issues related to Cadence software, but also helped me in understanding Cadence tools and technologies better. You can find interesting articles, quick videos, training material, application notes, etc. on the support site that can be used as a quick reference.
To quote an example, after searching completely through NCHelp for information on the SDFNET warning, I wanted additional tips or scenarios. It is then, that I searched on http://support.cadence.com, and found a good article with details that I needed, and which also provided information on SDFNEP, a warning similar to SDFNET (SDFNET or SDFNEP messages, causes and cures).
I also remember a time when my simulation failed/crashed due to an internal error, and it required some deep diving or interactive learning to understand the cause of the failure. I found good debugging tips in the book Debugging Fatal Internal Errors, available on http://support.cadence.com. After reading through this book, I was able to narrow down on my issue and I also provided relevant inputs to development team to fix it.
So, to summarize, I always use these great self-help utilities, in the following order, whenever I need to troubleshoot any Incisive error or warning.
- Use NCHelp or NCBrowse to find detailed information on an error or warning message.
- Search Cadence Online Support by visiting http://support.cadence.com for any additional information.
- Contact expert or submit a case by visiting http://support.cadence.com -> Cases -> Create Case option. This will report your case to the Technical Support team of Cadence.
Happy Troubleshooting!
Sumeet Aggarwal