I have seen that when I upgrade a WARNING or a CRITICAL WARNING in Synthesis in Vivado to an ERROR using the following types of commands in a tcl.pre TCL file, the errors are reported but the tool flow does not stop. Implementation and Bitstream generation will run as well.
set_msg_config -new_severity "ERROR" -id "Vivado 12-584"
set_msg_config -id "Vivado 12-1387" -new_severity "ERROR"
Is this expected behavior?
No, this is not the expected behavior. Synthesis should error out at the next safe stage in the process, and it should not be possible for the flow to continue until these errors are resolved.
A CR has been filed for investigation and a future release.