FSM_ENCODING controls encoding on the
state machine. Typically, the Vivado tools choose an encoding
protocol for state machines based on heuristics that do the best for the most designs.
Certain design types work better with a specific encoding protocol.
Place FSM_ENCODING on the state
machine registers. The legal values for this are one_hot, sequential, johnson, gray, user_encoding, and none. The auto value is the default, and allows the tool to determine
best encoding. The user_encoding value tells the tool
to infer a state machine, and use the encoding that you provide in the RTL.
You can set the FSM_ENCODING
attribute in the RTL or the XDC.