The fsm_encoding attribute directs Vivado Synthesis on what encoding style is to be used with a finite state machine.
The value of "auto" is the default and allows Vivado Synthesis to choose the best FSM encoding based on the coding style.
An FSM must first be inferred for the fsm_encoding to be used.
Acceptable values for this are: one_hot, sequential, johnson, gray, none and auto.
Applying the "fsm_safe_state" attribute will direct Vivado Synthesis to insert logic into a state machine that specifies what should happen in the case of an illegal state.
An FSM that is in an illegal state can cause unpredictable output, which can be avoided by the safe state.
Acceptable values are: auto_safe_state, reset_state, power_on_state, default_state
Setting the fsm_safe_state to a value of "reset_state" will have the encoded state machine use a reset condition in the case where an invalid state is found.
A reset condition would be any state assignment to a state assignment on reset. Below is an example:
"power_on_state" Forces the state machine into the power-on state using Hamming-2 encoding detection for one bit/flip.
The "power_on_state" value for the fsm_safe_state attribute will have the same functionality as the "reset_state".
This can be used in cases where there is no reset condition defined in the RTL and the intention is to use the initial INIT values of the state registers as a safe state.
For Verilog, the "default" keyword can be used along with the fsm_safe_state attribute to specify that the default value should be used for the safe state.
For VHDL, the "when others" keywords has the same effect.
With the default_state set for the fsm_safe_state attribute, the value applied to the state register in the default or "when others" section of a case statement will be used as the safe state.
The srl_style attribute directs Vivado Synthesis on whether an SRL primitive should be inferred, and if a register is to be placed before the SRL, after the SRL, or both.
For example, setting the srl_style attribute to a value of "reg_srl", will infer an SRL with a register driving the input of the SRL.
Acceptable Values are: register, srl, srl_reg, reg_srl, reg_srl_reg
Please refer to the following and (UG901) for any additional details on the acceptable values for fsm_safe_state & srl_style attributes:
|Attribute Name||HDL Files|