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.
ALLPCB