The following errors are given when Vivado synthesis detects 'L' and 'H' are used with '0' and '1' at the same time in a case statement.
ERROR: [Synth 8-517] overlapping choice 1'b0 in case statement [*/top.vhd:52]
ERROR: [Synth 8-517] overlapping choice 1'b1 in case statement [*/top.vhd:53]
Below is the code snippet:
case s is when '1' => return(1); when '0' => return(0) when 'L' => return(1); when 'H' => return(0); when others => return(0); endcase;
This is expected behavior.
Vivado synthesis treats 'L' and 'H' the same as '0' and '1'.
This error is given when duplicate case items are detected.
To resolve this issue, use either '0'/'1' or 'L'/'H' in the case statement.