次のテスト ケースでは、マクロ (ブロック RAM) をデスティネーション レジスタの近くに配置するなど、再構成することによりクリティカル パスを改善しています。
次の図に、16:1 マルチプレクサーを示します。マルチプレクサーの 1 つの入力はブロック RAM から供給され、残りの入力はレジスタから供給されます。
クリティカル パス: ブロック RAM -> 2 ロジック段 -> フリップフロップ
次の図では、ブロック RAM からフリップフロップまでのクリティカル パスを赤色でハイライトしています。ロジック段数は、ブロック RAM からフリップフロップ、フリップフロップからフリップフロップのどちらも 2 です。ブロック RAM のクロックから Q までの遅延の方が大きいため、ブロック RAM からフリップフロップまでがクリティカル パスになります。
次に、次の RTL コードを見て、ロジックを再構成できないかを考えます。
上記のコードで 16:1 マルチプレクサーを 2 つのマルチプレクサーに分割するのが、このロジックを再構成する最適な方法です。次の図に示すように、値 4'd5 を選択する条件をコメントアウトして、2:1 マルチプレクサーのイネーブル条件として使用します。このカスケード マルチプレクサー構造を作成することにより、フリップフロップからフリップフロップのパスのロジック段数は 3 になりますが、ブロック RAM からフリップフロップのパスのロジック段数は 1 に減ります。RAMB の配置は LUT およびフリップフロップの配置よりも困難であるため、このようにブロック RAM からフリップフロップのパスを改善することで、ダウンストリーム ツールでより良い配置を達成しやすくなります。一般的に、RAMB、URAM、DSP などのマクロ プリミティブ周辺に長いパスが少ないほうが、デザインの QoR は向上します。