After running Synthesis, implementation or any other flow I run a command similar to the following to count the number of messages with a specific severity:
get_msg_config -count -severity ERROR
The return value from this ERROR count is non-zero.
However, in the vivado.log file there are no ERROR messages reported.
Why does this happen?
In general, if you are Vivado GUI in project mode, the count values of a given message severity will not match between the GUI and Tcl console.
This is because the Tcl console
counts deal with the main process while the GUI will collect messages in
'buckets' for different Tcl steps (some of which are from a child
process and not the main project process).
In non-project mode, the counts will generally match up correctly.
However, there was an issue found in Vivado 2014.1 where a message severity change in conjunction with a message limit value being exceeded, caused the numbers to be inconsistent in non-project mode.
This will happen if the original severity is being counted and the number of messages for that message exceeds the message limit.
The count reported will include the difference between the total number of messages and the message limit.
This problem has been solved in Vivado 2014.3
To work around the issue in prior releases, you can increase the message limit or use the -verbose switch for the process command or parse the .log file for message types.
For GUI users, the message view will give the correct counts for each message severity.