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.