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 whom I could ask all my queries. But most of the time, I was on my own, as "learning by doing" was the motto of my mentor. Today, after completing 20 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.
xmhelp
As I moved on in my job, I faced a 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 xmhelp—the native Help for Xcelium simulation Error and Warning messages.
The xmhelp utility gives you detailed information about an error or warning message that you may get during the various phases of your xcelium simulation run.
Here is the xmhelp usage syntax:
xmhelp <tool name> <error/warning code>
Let us take the following warning message as an example:
xmelab:*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,
xmelab is the name of the tool which generated this warning.
The other severity levels are Note (N), Error (E) or Fatal (F), Information (I) and question (Q).
SDFNEP is a mnemonic which indicates the warning message in this case.
To get extended help for this warning, give the following command on your Unix prompt:
% xmhelp xmelab SDFNEP
xmelab/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,
xmelab:*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 xmhelp, 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 xmhelp.
For more information, I can refer to Using the Xcelium Simulator Utilities book available under the latest XCELIUM Release documentation on Cadence Support Portal by visiting https://support.cadence.com, or by looking through the CDNSHelp utility.
Today, the Cadence Support Portal has two articles that capture all error / warning mnemonics with their extended help utilities.
1. Xcelium Simulator and Utilities Error Message Guide
This document lists all the mnemonics that are reported by the Xcelium simulator and serves as a ready reckoner for all tool messages. The severity of mnemonics can be Note, Question, Warning, Error, Fatal. The document also contains the extended help messages of the corresponding mnemonics as available in tools help.
2. Xcelium Most Frequent Errors and Warnings Explained With Extended Help Utility
This document lists the common or most frequent error / warning mnemonics reported by the Xcelium simulator. The document captures the primary message (as generated by the simulator) and the extended help message for the listed mnemonics. It also contains the possible scenarios in which the corresponding mnemonic is reported and possible solutions.
xmbrowse
Soon, I discovered the other great utility in its GUI incarnation called XMBrowse Logfile Message Browser.
xmbrowse 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 xmvlog (the Verilog compiler), xmvhdl (the VHDL compiler), and xmelab (the xcelium elaborator).
xmbrowse 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, refer to Using the Xcelium Simulator Utilities book available under the latest XCELIUM Release documentation on Cadence Support Portal by visiting https://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 Support Portal homepage, (https://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 https://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 Debugging Fatal Internal Errors book, available on https://support.cadence.com/. After reading through this book, I was able to narrow down on my issue and I also provided relevant inputs to the 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 xcelium error or warning.
- Use XMHelp or XMBrowse to find detailed information on an error or warning message.
- Search Cadence Support Portal by visiting https://support.cadence.com/ for any additional information.
- Submit a case by visiting https://support.cadence.com/ -> Cases -> Submit Case option if you do not find an answer. This will report your case to the Technical Support team of Cadence. Moreover, there is an auto-search feature based on what you type to submit a case, and you can get an answer even before you submit a case!
Happy Troubleshooting and Leaning!
Sumeet Aggarwal