Automated selection and placement of memory during design of an integrated circuit
First Claim
1. A memory generation tool, comprising:
- (a) a memory manager having as input a description of a slice and a request for at least one memory;
(b) a memory resource database comprising a plurality of available memory resources of the description;
(c) a memory resource selector capable of selecting candidate memory resources from the available memory resources to satisfy the request;
(d) a memory composer capable of generating at least one memory design from the candidate memory resources to satisfy the request.
10 Assignments
0 Petitions
Accused Products
Abstract
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.
58 Citations
19 Claims
-
1. A memory generation tool, comprising:
-
(a) a memory manager having as input a description of a slice and a request for at least one memory;
(b) a memory resource database comprising a plurality of available memory resources of the description;
(c) a memory resource selector capable of selecting candidate memory resources from the available memory resources to satisfy the request;
(d) a memory composer capable of generating at least one memory design from the candidate memory resources to satisfy the request. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A memory generation tool, comprising:
-
(a) a memory manager having as input a description of a slice and a request for at least one memory;
(b) a memory resource database comprising a plurality of available memory resources of the description, the available memory resources comprising diffused memory and logic gate arrays, the memory manager to maintain and update the memory resource database to indicate that an available memory resource has been allocated to satisfy the request;
(c) a memory resource selector capable of selecting candidate memory resources from the available memory resources to satisfy the request wherein the memory resource selector gives priority to the available memory resources that have compatible power and/or timing and/or size when selecting candidate memory resources;
(d) a memory composer capable of generating at least one memory design having a plurality of shells, wherein at least one shell is a RTL memory wrapper and others of the plurality of shells comprise synthesis scripts for at least a R-cell memory and a flop-based memory derived from the logic gate array from the candidate memory resources to satisfy the request to indicate that an available memory resource has been allocated to satisfy the request. - View Dependent Claims (12)
-
-
13. An article of manufacture, comprising a data storage medium tangibly embodying a program of machine readable instructions executable by an electronic processing apparatus to perform method steps for operating an electronic processing apparatus, said method steps comprising the steps of:
-
(a) reading a description of a slice having at least one memory of either diffused and/or gate array logic;
(b) reading a specification of at least one requested memory for an integrated circuit;
(c) determining if the specification of the at least one requested memory can be generated from the description of the slice;
(d) allocating a portion of the at least one memory of either diffused and/or gate array logic of the description of the slice to the at least one requested memory;
(e) generating a logic infrastructure for the allocated portion;
(f) creating a memory design of the allocated portion; and
(g) updating a memory resource database to indicate the allocated portion is not available for anymore of the at least one requested memories - View Dependent Claims (14)
-
-
15. A method of generating memory designs for an integrated circuit, comprising the steps of:
-
(a) inputting available memory resources into a memory resource database;
(b) inputting a request for at least one memory;
(c) selecting possible memory resources from the available memory resources to satisfy the request. - View Dependent Claims (16, 17, 18)
-
-
19. A memory generation tool further comprising:
-
(a) means to read a slice description having at least one diffused and/or gate array logic;
(b) means to read a specification of requested memory;
(c) means to determine if the requested memory can be generated from the at least one diffused and/or gate array logic;
(d) if not, means to notify a user;
(e) if so, means to allocate a portion of the at least one diffused and/or gate array logic to the requested memory;
(f) means to determine if there is additional diffused and/or gate array logic available;
(g) means to determine if there is a second requested memory;
(h) means to allocate a second portion of the additional diffused and/or gate array logic to the second requested memory;
(i) means to combine one or more portions of the diffused and/or gate array logic together to allocate to the requested memory;
(j) means to generate a memory wrapper for the allocated portions; and
(k) means to generate memory designs of the allocated portions and the memory wrapper.
-
Specification