A tool for designing integrated circuits that optimizes the placement and
timing of memory blocks within the circuit. Given a manufactured slice
that has a number of blocks already diffused and logically integrated,
the memory generation tool herein automatically considers the available
diffused memory and the gate array of the slices to configure and
optimize them into a customer's requirements for memory. The memory
generation tool has a memory manager, a memory resource database, a
memory resource selector, and a memory composer. Together these all
interact to generate memories from the available memories within the
memory resource database. The memory composer actually generates the RTL
logic shells for the memories, and outputs the memory designs in Verilog,
VHDL, or other tool synthesis language. Once a memory is created, it is
tested. Upon successful testing, the memory manager updates the memory
resource database to indicate the successfully tested memory is no longer
available as a resource for the generation of further memories. A design
integrator may review the memory designs output and further integrate the
memory, its timing, testing, etc. with other blocks and functions of the
integrated circuit.