設計不符合時間的一個可能原因,是它與其他組合邏輯結合了一個或多個管狀移位器。每當換班操作員使用可變的操作操作,即「a = b << c;」Nios® II C2H 會產生槍管式邏輯。C2H 所產生的槍管式邏輯會執行大量的組合多工處理器,這可能會對設計的時間產生顯著影響。 以下兩個範例顯示,原始碼可能會因為槍管移位器而導致計時降級。
組合移位輸入:
以下是組合移位輸入到槍管移位器的範例,可能會導致計時降級。
int a, b, c, d, result, shift_distance;
result = (a b c d) >> shift_distance;
新增結果會作為作業方式用於輪班操作員,因此在其中一個新增輸入和「結果」之間會建立一條漫長的計時路徑。若要增加管道數量,請將新增結果指派為暫存變數,如下所示:
int a, b, c, d, addition_result, shift_distance;
addition_result = a b c d;
result = addition_result >> shift_distance;
組合移位輸出:
以下是從槍管移位器的組合移位輸出可能導致計時降級的範例。
int a, b, c, d, result, shift_distance;
result = (a >> shift_distance) b c d;
換班結果會被用作新增操作員的作法,因此在「a」和「結果」之間會建立一條漫長的計時路徑。若要增加管道數量,請將移位結果指派為下列變數:
int a, b, c, d, result, shift_result, shift_distance;
shift_result = a >> shift_distance;
result = shift_result b c d;