クリティカル パスの解析で、複数のパスが制御ピンで終了していることが検出される場合があります。これらのパスを解析し、ロジック段数の増加などのペナルティを発生させずにロジックをデータパスに移動できるかを調べる必要があります。最後の LUT の出力からフリップフロップの D 入力に直接接続があるので、ロジック レベル数が同じであれば、D ピンへのパスの遅延は CE/R/S ピンへのパスより小さくなります。次に、ロジックを制御ピンからレジスタのデータ ピンに移動する方法を示します。
次の例では、dout_reg[0] のイネーブル ピンのロジック段数は 2 で、データ ピンのロジック段数は 0 です。この場合、RTL ファイルの dout レジスタ定義で EXTRACT_ENABLE 属性を "no" に設定してイネーブル ロジックを D ピンに移動することにより、タイミングを改善できます。
図 1. レジスタの制御ピン (イネーブル) で終了するクリティカル パス
次の例では、組み合わせロジックと順序ロジックを分離し、ロジック全体をデータパスにマップしています。これによりロジックが D ピンに挿入され、ロジック段数は 2 のままになります。
同じ構造は、EXTRACT_ENABLE 属性を "no" に設定しても達成できます。EXTRACT_ENABLE 属性の詳細は、 『Vivado Design Suite ユーザー ガイド: 合成』 (UG901) のこのセクションを参照してください。
図 2. レジスタの制御ピンで終了するクリティカル パス (イネーブルの抽出をディスエーブル)