Panel For Example Panel For Example Panel For Example

Debugging Tools for Xcelium and Questasim

Author : Adrian September 02, 2025

When using Xcelium and Questasim for compilation, elaboration, and simulation, the tools typically output brief messages. This helps users with quick checks and debugging while also accelerating simulation, as printing more detailed information can slow down the process.

However, these messages can sometimes be too concise, making it difficult for users to identify the root cause of an issue. To address this, Xcelium and Questasim provide dedicated utilities to expand these brief messages into more detailed explanations. Xcelium offers the `xmhelp` utility, and Questasim provides the `verror` utility. This article will introduce both.

 

The xmhelp Utility

In a terminal, enter the command `xmhelp -help` to display information similar to the following:

xmhelp: 23.09-s001: (c) Copyright 1995-2023 Cadence Design Systems, Inc. Usage: xmhelp [options] tool error xmhelp [-cdslib | -hdlvar] xmhelp tool -dumpwarn xmhelp tool -dumpwarn -outfile <filename> Options: -ALL <arg> -- Prints out the help for all tools with the given mnemonic -CDS_IMPLICIT_TMPDIR <arg> -- implicit tmpdir for reading -CDS_IMPLICIT_TMPONLY -- only use implicit for reading -CDSLIB <arg> -- Prints the contents of the cds.lib file(s) -DUMPWARN -- Prints out the complete list of the mnemonics for all warning messages -HDLVAR <arg> -- Prints the contents of the hdl.var file(s) -HELP -- Prints this message -LOCKCHECK <arg> -- Tests a file system to determine for file locking capabilities -NEVERWARN -- Disables printing of all warning messages -NOCOPYRIGHT -- Suppresses printing of copyright banner -NOWARN <arg> -- Disables printing of the specified warning message -OUTFILE <arg> -- Dumps the mnemonics of all the warning messages in the file -TOOLS -- Prints out the tools for which help is available -VERSION -- Prints the version number -XMERROR <arg> [Deprecates: NCERROR] -- Increases the severity of a warning to an error -XMFATAL <arg> [Deprecates: NCFATAL] -- Increases the severity of a warn/error to a fatal

The help output describes how to use `xmhelp`.

Let's look at an example message:

xmvlog: *W,LBLMAT (/common/test/seqs/axi_mst_seqs/axi_mst_base_seq.sv,113|31): Label/name mismatch: update_slv - update_mst_slv

From this message, we can identify that the warning was reported by `xmvlog` and its mnemonic is `LBLMAT`. By entering `xmhelp xmvlog LBLMAT` in the terminal, we get the following detailed explanation:

xmhelp: 23.09-s001: (c) Copyright 1995-2023 Cadence Design Systems, Inc. xmvlog/LBLMAT = A label for a named statement block must be the same for both the begin and end keywords. Likewise, a label for the end of a module, primitive, function, task, or class must match the name.

Other uses of the command are similar and can be explored further.

 

The verror Utility

In a terminal, enter the command `verror -h` to display information similar to the following:

Usage: verror [-fmt|-full] [<tool>-<msgNum>|<msgNum>] ... verror [-fmt|-full] [[<tool>-<msgNum>|<msgNum>],[<tool>-<msgNum>|<msgNum>],...] verror [-fmt|-full] [-kind <tool>] [-severity <note|warning|error|fatal>] -all verror [-kind <tool>] -permissive verror [-kind <tool>] -pedanticerrors verror [-kind <tool>] -suppressibleerrors verror -help verror -version

The parameters include:

-fmt | -full (optional) Specifies the type and amount of information to return. -fmt Returns the format string used in the message. -full Returns the format string and complete text associated with the message. [-kind <tool>] -all (required when not specifying <msgNum>) Returns information about all messages associated with a specified tool, where <tool> can be one of the following: aid, hm_entity, mc2com, qverilog, sccom, scgenmod, sdfcomp, sm_entity, vcd2wlf, vcom, vcovkill, vdel, vdir, vencrypt, vgencomp, vish, vlib, vlog, vmake, vmap, vopt, vsim, wlf, wlf2log, wlfman, wlfrecover, xml2ucdb [-kind <tool>] {-pedanticerrors | -permissive | -suppressibleerrors} (optional) Specifies filtering for messages according to the message type. <tool> Any of the values allowed for the -kind argument. -pedanticerrors Display messages that are reported as errors due to adhering to a more strict interpretation of the LRM. -permissive Display messages reported as warnings that would be displayed as errors if you use vsim -pedanticerrors. -suppressibleerrors Display messages that you can suppress from the command line or modelsim.ini file. <msgNum> (required when not specifying -all) Specifies the message number(s) you would like more information about. You can find the message number in messages of the format: ** <Level>: ([<Tool>-[<Group>-]]<MsgNum>) <FormattedMsg> You can use either a comma-separated or a space-separated list to specify <msgNum> any number of times for one verror command. Optionally, you can specify the toolname prior to the message number, in the same way it appears in an error message. For example: verror vsim-5003

Let's look at an example message:

** Error (vsim-3061) foo.v(22): Too many Verilog port connections.

From this message, we can see that the error was reported by `vsim`. By entering either `verror 3061` or `verror vsim-3061` in the terminal, we get the following detailed explanation:

vsim Message # 3061: Too many Verilog ports were specified in a mixed VHDL/Verilog instantiation. Verify that the correct VHDL/Verilog connection is being made and that the number of ports matches. [DOC: QuestaSim User's Manual - Mixed VHDL and Verilog Designs Chapter]

Other uses of the command are similar and can be explored through practice.