基于RTL綜合策略的狀態(tài)機優(yōu)化方案
圖2 基于DC Ultra的有限狀態(tài)機自動優(yōu)化流程
2.2 基于DC2Expert的手動優(yōu)化策略
當輸入設計文件不是以HDL描述的,或者DC不能從HDL文件中自動識別出狀態(tài)機時,就要采用手動優(yōu)化策略。
圖3為手動優(yōu)化策略的基本流程,其中展示了使用的命令、描述狀態(tài)機的狀態(tài)表和網(wǎng)表之間的關系。
圖3 FSM 手機優(yōu)化命令算法
從圖3中可以看出,手動優(yōu)化包括網(wǎng)表生成、狀態(tài)表提取、基于狀態(tài)表的優(yōu)化和網(wǎng)表映射4 個階段。Compile命令基于輸入的HDL 文件生成網(wǎng)表, Extract命令基于網(wǎng)表生成狀態(tài)表, Compile命令再基于狀態(tài)機優(yōu)化的狀態(tài)表生成映射的網(wǎng)表??蛇x命令reduce_fsm和minimize_fsm基于狀態(tài)表操作, reduce _fsm試圖降低狀態(tài)機相關的組合邏輯的復雜度, minimize_fsm則試圖減少狀態(tài)數(shù)目。
手動優(yōu)化包含如下步驟:
(b)將設計讀入DC。
如果設計不是以狀態(tài)表格式給出的,按如下步驟提取狀態(tài)表:
運行comp ile2map_effort low得到一個輸入文件的網(wǎng)表;
根據(jù)需要使用set_fsm_state_vector指定狀態(tài)向量;
使用group2fsm 將狀態(tài)機邏輯劃分到一個單獨的模塊,并將該模塊設為當前設計;
使用set_fsm_encoding分派狀態(tài)機狀態(tài);
使用extract從設計中提取狀態(tài)機邏輯;
根據(jù)需要使用reduce_fsm降低狀態(tài)機相關的組合邏輯的復雜度;
根據(jù)需要使用minimize_fsm,則試圖減少狀態(tài)數(shù)目;使用minimize_fsm,則試圖減少狀態(tài)數(shù)目。
c) 根據(jù)需要選用適當?shù)拿?,修改基于狀態(tài)表的狀態(tài)機的屬性,如狀態(tài)向量、狀態(tài)編碼、編碼風格等。
d) 指定電路級約束條件和屬性。
e) 編譯整個設計。
圖4是提取狀態(tài)機的流程。
圖5是基于狀態(tài)表的優(yōu)化流程。
3 應注意的問題
并非所有的有限狀態(tài)機都可以使用本文所介紹的優(yōu)化策略,原始的設計文件應該滿足下列條件:
a) 所有的端口應該僅為輸入或者輸出端口,不支持輸入輸出端口。
b) 當一個模塊中有多個狀態(tài)機時,每次編譯時只能提取出1個狀態(tài)機,而提取哪個狀態(tài)機是隨機的,所以推薦每個模塊僅包含1個有限狀態(tài)機。
c) 狀態(tài)機只能包含1個時鐘。
4 結束語
采用本文介紹的優(yōu)化策略,在不改變源代碼的前提下,較之標準編譯過程可以有效地提高狀態(tài)機的性能。但因為在優(yōu)化過程中特別是手動優(yōu)化過程中對狀態(tài)重新進行了編碼,如果新的編碼與原來的編碼不一致,會導致邏輯錯誤,所以在使用這一策略時還要輔以其他手段進行邏輯驗證。
評論