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