Vivado synthesis supports case statements.
•A case statement performs a comparison to an expression to evaluate one of several parallel branches.
°The case statement evaluates the branches in the order they are written.
°The first branch that evaluates to true is executed.
°If none of the branches matches, the default branch is executed.
•Do not use unsized integers in case statements. Always size integers to a specific number of bits. Otherwise, results can be unpredictable.
•casez treats all z values in any bit position of the branch alternative as a don't care.
•casex treats all x and z values in any bit position of the branch alternative as a don't care.
•The question mark (?) can be used as a don't care in either the casez or casex case statements.