关于FSM的综合
时间:10-02
整理:3721RD
点击:
我看到一篇讲FSM编码风格的文章说可以用DC的FSM工具来改变状态机的编码,即set_fsm_encoding_style。
我把里面的例子放在DC里面综合发现,无论set_fsm_encoding_style one_hot或者是set_fsm_encoding_style gray,综合结果都不变,RTL里面的二进制状态机综合出来仍然是二进制。
set_fsm_encoding_style到底有什么用处?
我把里面的例子放在DC里面综合发现,无论set_fsm_encoding_style one_hot或者是set_fsm_encoding_style gray,综合结果都不变,RTL里面的二进制状态机综合出来仍然是二进制。
set_fsm_encoding_style到底有什么用处?
没实际用过这个命令,但它仅对没编码的状态有效,如果你的设计中,已经对状态进行了编码,那DC是不会给它们重新赋值的。小编可以再试一试,并把结果贴上来。
你要参考你用的综合工具推荐的Coding style,以便优化FSM。
例如Quartus建议Verilog状态机的每个状态都要这样定义:
parameter STATE_3 = 3'b011;
在设计中就用定义的值表示状态,不要用常数值:
next_state <= STATE_3;
并且不能用运算式为次状态赋值:
next_state <= state + 2; //never do this
依赖工具 不如靠自己
工具是面向所有用户的情况,
一个人的实际状况,可以自己考虑
你要参考你用的综合工具推荐的Coding style,以便优化FSM
谢谢,请问如何不对状态机进行编码呢?
我理解,我只是怀着更深一层学习工具的目的而进行了尝试。
VHDL可以不编码,verilog不可以。
