Vivado綜合設置選項分析:-fsm_extraction

  • 2019 年 10 月 31 日
  • 筆記

-fsm_extraction用於設定狀態機的編碼方式,其可選值為one_hot, sequential, johnson, gray, auto和off。默認值為auto,此時Vivado會自行決定最佳的編碼方式。

以Vivado自帶的例子工程Wavegen為例,該工程中正好有一個狀態機,在模組cmd_parse中且採用了sequential編碼方式,如下圖所示。

如果將-fsm_extraction設定為one_hot,則最終結果如下圖所示(在綜合log文件中搜索Synth 8-3354即可找到),可見最終狀態機採用了one_hot的編碼方式。這印證了-fsm_extraction優先順序高於RTL程式碼指定的編碼方式。

對於狀態機,還有一個綜合屬性FSM_ENCODING,其值可以是one_hot, sequential, johnson, gray, auto和none。其優先順序則高於-fsm_extraction設定的編碼方式。如果使用了FSM_ENCODING,在綜合報告中會顯示工具檢查到FSM_ENCODING設定的編碼方式,如下圖所示。

結論

-綜合選項-fsm_extraction優先順序高於RTL程式碼中指定的編碼方式

-綜合屬性FSM_ENCODING優先順序則高於-fsm_extraction指定的編碼方式

-在綜合log文件中,搜索encoding或Synth 8-3354可查看狀態機對應的編碼方式