状态机的安全实现

在设计中,为了保证状态机的正确运行,一般在综合时选择状态机安全实现,能够使状态机进入错误状态时,自动跳转到复位状态。
在使用synplify 进行综合时,首先需要将综合选项FSM compiler和FSM Explorer去掉,关于这两个选项的作用可以参见Synplify 使用过程中最常用的选项及命令的介绍
状态机的安全实现
另外,在综合时为了保证状态机被正确综合为安全状态机,需要添加约束,例 reg [5:0]FSM_CS /*synthesis syn_encoding =“onehot,safe” */;这样才能正确综合为安全状态机。此外以Libero环境为例,可以在工程文件夹下的synthesis文件夹下的SRR文件里查看是否有以下语句,
状态机的安全实现
FSM error recovery to reset state is enabled for FSM_CS[6:0],说明安全状态机已经生成!