US20060117279A1 - Method for storing multiple levels of design data in a common database - Google Patents
Method for storing multiple levels of design data in a common database Download PDFInfo
- Publication number
- US20060117279A1 US20060117279A1 US11/327,550 US32755006A US2006117279A1 US 20060117279 A1 US20060117279 A1 US 20060117279A1 US 32755006 A US32755006 A US 32755006A US 2006117279 A1 US2006117279 A1 US 2006117279A1
- Authority
- US
- United States
- Prior art keywords
- circuit
- cells
- design
- physical
- area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
Definitions
- the present invention is directed to digital logic design systems. More particularly, the invention is directed to automated digital logic synthesis and placement systems.
- Prior art computer aided design (CAD) systems for the design of integrated circuits and the like assist in the design thereof by providing a user with a set of software tools running on a computer.
- CAD computer aided design
- the process of designing an integrated circuit on a typical CAD system was done in several discrete steps using different software tools.
- a schematic diagram of the integrated circuit is entered interactively to produce a digital representation of the integrated circuit elements and their interconnections.
- This representation may initially be in a hardware description language such as Verilog and then translated into a register transfer level (RTL) description in terms of pre-designed functional blocks, such as memories and registers.
- RTL register transfer level
- This may take the form of a data structure called a net list.
- a logic compiler receives the net list and, using a component database, puts all of the information necessary for layout, verification and simulation into object files whose formats are optimized specifically for those functions.
- a logic verifier checks the schematic for design errors, such as multiple outputs connected together, overloaded signal paths, etc., and generates error indications if any such design problems exist.
- design errors such as multiple outputs connected together, overloaded signal paths, etc.
- the IC designer improperly connected or improperly placed a physical item within one or more cells. In this case, these errors are flagged to the IC designer so that the layout cells may be fixed so that the layout cells perform their proper logical operation.
- the verification process checks the hand-laid-out cells to determine if a plurality of design rules have been observed. Design rules are provided to integrated circuit designers to ensure that a part can be manufactured with greater yield.
- design rules include hundreds of parameters and, for example, include pitch between metal lines, spacing between diffusion regions in the substrate, sizes of conductive regions to ensure proper contacting without electrical short circuiting, minimum widths of conductive regions, pad sizes, and the like. If a design rule violation is identified, this violation is flagged to the IC designer so that the IC designer can properly correct the cells so that the cells are in accordance with the design rules.
- the user of the CAD system prepares a list of vectors representing real input values to be applied to the simulation model of the integrated circuit. This representation is translated into a form which is best suited to simulation. This representation of the integrated circuit is then operated upon by the simulator which produces numerical outputs analogous to the response of a real circuit with the same inputs applied. By viewing the simulation results, the user may then determine if the represented circuit will perform correctly when it is constructed. If not, he or she may re-edit the schematic of the integrated circuit, re-compile and re-simulate. This process is performed iteratively until the user is satisfied that the design of the integrated circuit is correct.
- the human IC designer presents as input to a logic synthesis tool a cell library and a behavioral model.
- the behavioral circuit model is typically a file in memory which looks very similar to a computer program.
- the behavioral circuit model contains instructions which define logically the operation of the integrated circuit.
- the logic synthesis tool receives as input the instructions from the RTL circuit model (i.e., Verilog or VHDL) and the library cells from the library.
- the synthesis tool maps the instructions from the behavioral circuit model to one or more logic cells from the library to transform the behavioral circuit model to a gate schematic net list of interconnected cells.
- a gate schematic net list is a data base having interconnected logic cells which perform a logical function in accordance with the behavioral circuit model instructions. Once the gate schematic net list is formed, it is provided to a place and route tool.
- the place and route tool is used to access the gate schematic net list and the library cells to position the cells of the gate schematic net list in a two-dimensional format within a surface area of an integrated circuit die perimeter.
- the output of the place and route step is a two-dimensional physical design file which indicates the layout interconnection and two-dimensional IC physical arrangements of all gates/cells within the gate schematic net list.
- a separate internal data structure is used for each tool. This is because the tools are rarely if ever written by the same group; thus, the internal database representation for each tools is likely to differ from that of the other tools. Also, the most appropriate database implementation for the integrated circuit depends on the phase of the design process in which it is being used. For example, linked lists are commonly used to store cells in a netlist because that is the most obvious solution for logic synthesis purposes. In contrast, a KD tree is a more appropriate database format for the place and route tool.
- circuit specifications must be translated from one database format to another and another during the development process
- disk-intensive multiple databases each specifying the same circuit in different forms must be stored
- fragmented tools cannot use the outputs of other tools, and a change to the circuit made by one tool is not reflected in the databases of the other tools.
- the present invention has been made with the above problems of the prior art in mind, and a first object of the present invention is to provide a system for automated logic circuit design which is capable of storing and utilizing multiple levels of design data in a common database.
- Another object of the present invention is to provide a system for automated logic circuit design which eliminates the need for translation of circuit descriptions between different design tools.
- a further object of the present invention is to provide a system for automated logic circuit design which allows the output of tools in the design suite to be used by other tools.
- Yet another object of the present invention is to provide a system for automated logic circuit design which allows design tools or the user to make area queries, i.e., a selection of a subset of objects based on their physical position, at various stages in the design process.
- a still further object of the present invention is to provide a system for automated logic circuit design which permits the use of global simulation tools such as timing engines across all levels of design abstraction.
- Another object of the present invention is to provide a system for automated logic circuit design which presents a unified model for timing, synthesis, placement and routing.
- a further object of the present invention is to provide a system for automated logic circuit design which has high storage and run-time efficiency.
- a still further object of the present invention is to provide a system for automated logic circuit design which has a consistent and easy to use programming interface.
- a still further object of the present invention is to provide a system for automated logic circuit design which has an interface which is not dependent on other include files.
- a further object of the present invention is to provide a system for automated logic circuit design which uses an object-oriented C++ programming style.
- the above objects are achieved according to an aspect of the invention by providing an automated logic circuit design system which uses a common database to store design data at different states of the design process, including data-flow graphs, netlists and layout descriptions.
- the common database includes entities, models, cells, pins, busses and nets.
- the data-flow graphs are stored as graphs, the nodes in a graph as cells, and the edges as busses.
- Physical design data is available by storing the cells in a model in a KD tree. This allows queries on cells in the netlist located in the layout within arbitrary areas.
- FIGS. 1-3 are dataflow diagrams of a circuit structure according to a preferred embodiment of the present invention.
- FIG. 4 is a block diagram of the structure of a data model according to the present invention.
- FIG. 5 is a diagram of the partitioning of a chip in correspondence with the data model.
- the Verilog must be parsed to generate a data flow graph suitable for implementation in the data model.
- RTL parsers known in the art are preferably used for this purpose.
- the output from the RTL parser is a Verilog parse tree which is used to generate the data flow graph.
- the structure of the parse tree is relatively complicated and, since detailed knowledge of it is not necessary for an understanding of the present invention, further description of the parse tree will be omitted for simplicity and brevity.
- c and clk are input ports of an Entity (described below) and out is an output port of the Entity.
- An adder (an example of a Cell as described bellow) adds the values at Ports in 0 and in 1 and supplies the result to a merge block (another example of a Cell). If the value at Port c represents a logical true, the merge block supplies the value at Port in 2 to a delay block (again, a Cell); if the value at Port c represents a logical false, the merge block supplies the output of the adder to the delay block. On the positive-going edge of the signal at Port clk, the delay block provides the value on its input to the output port out.
- the data flow graph having been generated, it may then be stored in the data model.
- the branch module connected to input Port in 0 is enabled and provides its output to a merge module which is also enabled when c 1 is true. If c 1 is not true, the branch modules connected to Ports in 1 and in 2 are enabled to provide their outputs to other branch modules.
- One of the modules in this second tier is enabled when the value at input Port c 2 is true and provides its output to another merge block.
- the other of the modules in the second tier is enabled when c 2 is false and provides its output to the other merge block.
- one of those outputs is provided to the first merge block, and depending on the value of c 1 , one of the output is provided to the output port out via the delay element.
- an entry node initializes a loop index with the value 0, adds 1 to the index and checks to see if the index is less than 5. If so, an exit node loops back for another pass. In tandem with this loop, an input variable a is received through another entry node and 4 is subtracted from it on each pass through the loop. When looping ceases because the index has reached 5, the current value of the input variable is presented at the exit node.
- the loop can be unrolled. That is, the graph portion representing the body of the loop can be replicated five times and the graph portion representing the loop index can be eliminated.
- virtual loop unrolling can be performed by estimating the number of iterations through the loop and using that number as a multiplier in delay calculations; the actual circuit replications can be done later.
- the Verilog source is converted to a data flow graph, it can be implemented in the data model.
- the data model is implemented using the C++ programming language or a similar object-oriented language. Since the construction, accessing and destruction of objects in such languages is well-known in the art, examples of specific commands for performing these operations will be omitted for brevity.
- the topmost object in the data model 10 (shown in FIG. 4 ) is the Root object 20 .
- the Root object 20 owns all other objects 30 - 70 and serves as a base to which everything else is attached. Also, the root 20 accommodates global attributes which are shared by all objects 20 - 70 .
- Library object 30 is used to organize entities 40 .
- the preferred embodiment of the present invention includes at least two Libraries 30 . The first stores information on the technology library to which the circuit under development will be mapped, and the second stores information on the circuit itself.
- An Entity 40 defines the interface of a design; that is, the set of ports 52 that the Entity 40 has.
- An Entity 40 may own Port objects 52 .
- a Port 52 is used to represent the pin-out of an entity 40 . Ports 52 cannot be individually created and destroyed, and can only be created when an Entity 40 is created. Each Port 52 has a direction (in, out, in/out) which is determined upon creation of the Entity 40 . This rigidity promotes consistency between the Entity 40 , its Models 50 and the Cells 62 bound to those Models 50 .
- Entities 40 own Models 50 .
- a Model 50 defines an implementation of an Entity 40 ; thus, multiple Models 50 within an Entity 40 represent different implementations of that Entity 40 .
- these Models 50 are functionally identical to one another.
- an Entity 40 in a technology Library 30 may have several Models 50 defining various eight bit adder cells having different power levels.
- an Entity 40 in a target Library 30 may have several Models 50 which respectively define an abstract logic representation of a circuit, a gate-level implementation of it, a uniquefied representation, etc.
- the contents of each Model 50 is a net list of Nets 60 , Cells 62 and Model Pins 64 .
- All Models 50 and the Entity 40 have the same number of Pins 64 and Ports 52 , and the Ports 52 have the same direction in the Entity 40 and over all Models 50 ; thus, it is relatively easy to replace one Model 50 with another from the same Entity 40 .
- a Cell 62 represents a section of logic.
- Cells 62 may be primitive cells or non-primitive cells.
- Primitive Cells 62 have a predefined functionality associated with them.
- the primitive Cells 62 include the following types:
- CELL_BREAK break point cell
- CELL_ONE a constant one; an inverted or bubbled version is used for a constant zero.
- a Cell 62 may describe a portion of the circuit under development and belong to a Model 50 in a target Library 30 . However, it will be associated with (preferably by pointing through a cell type attribute or the like) a Model 50 in a technology library 30 which defines its functionality and general characteristics.
- Non-primitive Cells 62 may be created as bound Cells; alternatively, they may be created as unbound Cells and later bound to a Model 50 . This may be done by specifying the Cell's name; by specifying pin-to-pin correspondence vectors; and by binding the Cell 62 to an undefined Model 50 and later matching the Model 50 to an actual one. Additionally, a bound Cell 62 can be rebound to a different Model 50 within the same Entity 40 .
- Each Cell 62 includes a number of parameters called members which specify certain features of the Cell 62 . These include the cell's name, a pointer to the technology Model 50 to which it is bound, a list of Pins 64 which it owns, its parent Entity 40 , and coordinates of the Cell 62 within the chip layout.
- Pins 64 and 70 may be grouped into Busses 80 (in fact, every variable in the Verilog code will be represented as a Bus). Since Pins 64 and 70 are the most common object in almost any circuit representation, it is important to reduce the amount of storage for each Pin 64 and 70 as much as possible while maintaining easy accessibility. For this reason, Pins 64 and 70 are preferably stored in small arrays and associated with indices.
- Nets 60 also have members, such as the Net's name, a list of Pins 64 and 70 which it connects, and a list of rectangles through which it passes in the placement layout.
- Pin members include the Pin's name, the Model 50 or Cell 62 to which it belongs, and the Net 60 to which it is connected.
- Each object 20 - 70 may have a number of attributes.
- Each attribute has a name and a value of a type int, short, float, double, char* and void*.
- One example of an object attribute is an inversion attribute or “bubble” which specifies whether a Cell input or output (or Net 60 ) is asserted high or low.
- Other examples of object attributes are object name, firing information, references to the Verilog code defining the object, etc.
- Iterators are procedures used to access objects within the data model. As is known in the art, an iterator traverses the model and each time it is called, returns a pointer to the next object of a particular type. For example, a Model iterator would, when successively called, return pointers to each Model 50 within the data model.
- the preferred embodiment of the present invention provides “safe” and “unsafe” iterators, where unsafe iterators return all objects of the specified type, even if they have been added during the iteration process, and safe iterators omit objects added during the iteration. In this way, although the safe iterators are slightly slower than their unsafe counterparts, they can avoid program crashes, errors and exceptions, and other undesirable outcomes.
- the data model After the data model has been uniquefied, it may be ungrouped, i.e., macro-level cells can be replaced with their primitive components. Alternatively, processes may handle the data model with virtual ungrouping by “looking through” the macro-level cells to process their primitive cell constituents.
- Verilog-derived data flow graph in the data model will now be described.
- the ports for the Entity 40 correspond to the ports in the Verilog module.
- Ports 52 in the graph have a bit width, and there will be a separate Pin 64 and Net 60 (the group of Nets 60 for the Port 52 forming a Bus) in the graph for each Verilog port.
- a Cell 62 For each node in the Verilog module, a Cell 62 will be made in the graph. Initially the Cells 62 will be unbound. As described above, given the Cell type and the Pins 70 of the Cell 62 , a Model 50 for the Cell 62 to be bound can be generated later.
- Each Model 50 is preferably implemented as a KD tree as follows. First, the circuit under development is divided into a number of sections each corresponding to a rectangular section 100 of the available chip area as shown in FIG. 5 . The partitioning of the circuit can be directed by the user; however, it is preferably automatically done by the system so that the circuit is evenly distributed over the entire chip area. Each node or leaf 210 of the KD tree 200 shown in FIG. 6 corresponds to a cutline 110 of the rectangles 100 and may have appended thereto a linked list 220 of all cells 62 which lie on that cutline 110 .
- Non-leaf nodes 210 in the KD tree 200 each have two child nodes 210 , with the left child 210 corresponding to the region of the chip on one side of the cutline 110 and the right child 210 corresponding to the region of the chip on the other side of the cutline 110 .
- the child nodes 210 may have linked lists 220 of cells on their cutlines 110 and child nodes 210 of their own.
- leaf nodes 210 will contain most of the circuit information, since the non-leaf nodes 210 will only have information on those cells touching their corresponding cutline.
- the initial distribution of Cells 62 over the chip area is preferably done automatically by the system and in that case may be done through the use of various algorithms which will readily suggest themselves to those skilled in the art.
- the result of this process is a model with mostly logical information on its constituent elements but with a coarse framework of physical placement and routing information, e.g., cell areas, initial placements, etc.
- the physical information will be refined and augmented within the original data model. In this way, the addition of rough physical layout information to the initial logical description enables the smooth transition of the circuit through the development process, thereby enabling sharing of tool outputs, use of common diagnostics and the like.
- RTL synthesis is complete and the data model is flattened, it may be copied and used as a baseline for formal verification and the like. Since a common model structure is used, there is no need to translate the pre-logic synthesis version of the circuit into a format suitable for use by the verification tool.
- the KD tree 200 may become unbalanced due to an excessive number of additions or deletions in one area, or due to poor initial distribution. This can be compensated for by manual rebalancing by the user or by a user-initiated procedure, but preferably is done automatically by the system.
- the data model may be used for both logic synthesis, i.e., gate-level implementation, etc., and physical synthesis, i.e., placing and routing. This is because the data model includes all of the information necessary for logical synthesis operations, i.e., cell functionality, net connections, etc., as well as all information necessary for physical synthesis operations, i.e., areas, physical positions, etc.
- each node of the KD tree 200 corresponds to a cutline 110 and has associated with it the cells on the cutline and information on where its child nodes are within the chip area, portions of the circuit in specific physical areas can be queried, tested and manipulated without the need to read the entire data model into active memory from disk storage, as is the case with prior art net lists. For example, assuming a user wanted to work with only the lower right hand corner of the chip, the system could traverse the KD tree to reach the topmost node corresponding to that area. Then, that node, its children, netlists and the like would be read into active memory from disk and manipulated.
- the user may even be able to manually direct placement of cutlines 110 at certain points to frame a particular area of interest.
- the system may then adjust the KD tree accordingly to accommodate the new arrangement. This area query technique is possible whether the circuit is in its final placement and routing stages or fresh from Verilog synthesis.
- the complete set of Nets 60 is typically maintained in memory. This is because the Nets 60 are necessary for purposes such as delay estimation and the like that are performed frequently, and it is easier to retain all Nets 60 in memory rather than repeatedly read them into memory.
- the Nets 60 corresponding to that area must be identified. This is done by identifying the Nets 60 connected to each of the Pins 64 , 70 within the selected area. The remaining Nets 60 can be eliminated from consideration during the area query. Nets 60 which have some, but not all, Pins 64 , 70 within the query area can have the missing pins represented by a stub pin. Finally, Nets 60 which have all of their pins within the query area can be handled as are other objects within the selected area.
- Nets 60 which are entirely contained within the selected area can be optimized out or otherwise modified; however those nets having portions outside the query area, i.e., those with stub pins, cannot, since the effect of modification of elimination of these Nets 60 on the remaining circuit portions is unpredictable.
Abstract
An automated logic circuit design system uses a common database to store design data at different states of the design process, including data-flow graphs, netlists and layout descriptions. In this way, the need to translate circuit descriptions between tools is eliminated, thus leading to increased speed, flexibility and integration. The common database includes entities, models, cells, pins, busses and nets. The data-flow graphs are stored as graphs, the nodes in a graph as cells, and the edges as busses. Physical design data is available by storing the cells in a model in a KD tree. This allows queries on cells in the netlist located in the layout within arbitrary areas.
Description
- This is a continuation of U.S. application Ser. No. 10/159,531 filed May 31, 2002, which is a divisional of U.S. application Ser. No. 09/300,540 filed Apr. 27, 1999, now U.S. Pat. No. 6,505,328 issued Jan. 7, 2003.
- The present invention is directed to digital logic design systems. More particularly, the invention is directed to automated digital logic synthesis and placement systems.
- Prior art computer aided design (CAD) systems for the design of integrated circuits and the like assist in the design thereof by providing a user with a set of software tools running on a computer. In the prior art, the process of designing an integrated circuit on a typical CAD system was done in several discrete steps using different software tools.
- First, a schematic diagram of the integrated circuit is entered interactively to produce a digital representation of the integrated circuit elements and their interconnections. This representation may initially be in a hardware description language such as Verilog and then translated into a register transfer level (RTL) description in terms of pre-designed functional blocks, such as memories and registers. This may take the form of a data structure called a net list.
- Next, a logic compiler receives the net list and, using a component database, puts all of the information necessary for layout, verification and simulation into object files whose formats are optimized specifically for those functions.
- Afterwards, a logic verifier checks the schematic for design errors, such as multiple outputs connected together, overloaded signal paths, etc., and generates error indications if any such design problems exist. In many cases, the IC designer improperly connected or improperly placed a physical item within one or more cells. In this case, these errors are flagged to the IC designer so that the layout cells may be fixed so that the layout cells perform their proper logical operation. Also, the verification process checks the hand-laid-out cells to determine if a plurality of design rules have been observed. Design rules are provided to integrated circuit designers to ensure that a part can be manufactured with greater yield. Most design rules include hundreds of parameters and, for example, include pitch between metal lines, spacing between diffusion regions in the substrate, sizes of conductive regions to ensure proper contacting without electrical short circuiting, minimum widths of conductive regions, pad sizes, and the like. If a design rule violation is identified, this violation is flagged to the IC designer so that the IC designer can properly correct the cells so that the cells are in accordance with the design rules.
- Then, using a simulator the user of the CAD system prepares a list of vectors representing real input values to be applied to the simulation model of the integrated circuit. This representation is translated into a form which is best suited to simulation. This representation of the integrated circuit is then operated upon by the simulator which produces numerical outputs analogous to the response of a real circuit with the same inputs applied. By viewing the simulation results, the user may then determine if the represented circuit will perform correctly when it is constructed. If not, he or she may re-edit the schematic of the integrated circuit, re-compile and re-simulate. This process is performed iteratively until the user is satisfied that the design of the integrated circuit is correct.
- Then, the human IC designer presents as input to a logic synthesis tool a cell library and a behavioral model. The behavioral circuit model is typically a file in memory which looks very similar to a computer program. The behavioral circuit model contains instructions which define logically the operation of the integrated circuit. The logic synthesis tool receives as input the instructions from the RTL circuit model (i.e., Verilog or VHDL) and the library cells from the library. The synthesis tool maps the instructions from the behavioral circuit model to one or more logic cells from the library to transform the behavioral circuit model to a gate schematic net list of interconnected cells. A gate schematic net list is a data base having interconnected logic cells which perform a logical function in accordance with the behavioral circuit model instructions. Once the gate schematic net list is formed, it is provided to a place and route tool.
- The place and route tool is used to access the gate schematic net list and the library cells to position the cells of the gate schematic net list in a two-dimensional format within a surface area of an integrated circuit die perimeter. The output of the place and route step is a two-dimensional physical design file which indicates the layout interconnection and two-dimensional IC physical arrangements of all gates/cells within the gate schematic net list.
- According to the above prior art method, a separate internal data structure is used for each tool. This is because the tools are rarely if ever written by the same group; thus, the internal database representation for each tools is likely to differ from that of the other tools. Also, the most appropriate database implementation for the integrated circuit depends on the phase of the design process in which it is being used. For example, linked lists are commonly used to store cells in a netlist because that is the most obvious solution for logic synthesis purposes. In contrast, a KD tree is a more appropriate database format for the place and route tool.
- This is time-consuming and processor-intensive (circuit specifications must be translated from one database format to another and another during the development process), disk-intensive (multiple databases each specifying the same circuit in different forms must be stored) and fragmented (tools cannot use the outputs of other tools, and a change to the circuit made by one tool is not reflected in the databases of the other tools).
- The present invention has been made with the above problems of the prior art in mind, and a first object of the present invention is to provide a system for automated logic circuit design which is capable of storing and utilizing multiple levels of design data in a common database.
- Another object of the present invention is to provide a system for automated logic circuit design which eliminates the need for translation of circuit descriptions between different design tools.
- A further object of the present invention is to provide a system for automated logic circuit design which allows the output of tools in the design suite to be used by other tools.
- Yet another object of the present invention is to provide a system for automated logic circuit design which allows design tools or the user to make area queries, i.e., a selection of a subset of objects based on their physical position, at various stages in the design process.
- A still further object of the present invention is to provide a system for automated logic circuit design which permits the use of global simulation tools such as timing engines across all levels of design abstraction.
- Another object of the present invention is to provide a system for automated logic circuit design which presents a unified model for timing, synthesis, placement and routing.
- A further object of the present invention is to provide a system for automated logic circuit design which has high storage and run-time efficiency.
- A still further object of the present invention is to provide a system for automated logic circuit design which has a consistent and easy to use programming interface.
- A still further object of the present invention is to provide a system for automated logic circuit design which has an interface which is not dependent on other include files.
- A further object of the present invention is to provide a system for automated logic circuit design which uses an object-oriented C++ programming style.
- The above objects are achieved according to an aspect of the invention by providing an automated logic circuit design system which uses a common database to store design data at different states of the design process, including data-flow graphs, netlists and layout descriptions. In this way, the need to translate circuit descriptions between tools is eliminated, thus leading to increased speed, flexibility and integration. The common database includes entities, models, cells, pins, busses and nets. The data-flow graphs are stored as graphs, the nodes in a graph as cells, and the edges as busses. Physical design data is available by storing the cells in a model in a KD tree. This allows queries on cells in the netlist located in the layout within arbitrary areas.
- These and other objects, features, and advantages of the present invention are better understood by reading the following detailed description of the preferred embodiment, taken in conjunction with the accompanying drawings, in which:
-
FIGS. 1-3 are dataflow diagrams of a circuit structure according to a preferred embodiment of the present invention; -
FIG. 4 is a block diagram of the structure of a data model according to the present invention; and -
FIG. 5 is a diagram of the partitioning of a chip in correspondence with the data model. - First, given a Verilog description of a circuit to be developed, the Verilog must be parsed to generate a data flow graph suitable for implementation in the data model. RTL parsers known in the art are preferably used for this purpose. The output from the RTL parser is a Verilog parse tree which is used to generate the data flow graph. Although well-known in the art, the structure of the parse tree is relatively complicated and, since detailed knowledge of it is not necessary for an understanding of the present invention, further description of the parse tree will be omitted for simplicity and brevity.
-
FIG. 1 shows an example of translation of the Verilog source codealways @(posedge clk) begin out = in1 + in2; if (c) out = in3; end - into data flow elements. Here, in0, in1, in2, c and clk are input ports of an Entity (described below) and out is an output port of the Entity. An adder (an example of a Cell as described bellow) adds the values at Ports in0 and in1 and supplies the result to a merge block (another example of a Cell). If the value at Port c represents a logical true, the merge block supplies the value at Port in2 to a delay block (again, a Cell); if the value at Port c represents a logical false, the merge block supplies the output of the adder to the delay block. On the positive-going edge of the signal at Port clk, the delay block provides the value on its input to the output port out. The data flow graph having been generated, it may then be stored in the data model.
- Before describing the data model in more detail, a few more examples are in order.
FIG. 2 shows an example of the data graph resulting from the Verilog codeif (c1) begin out = in0; end else begin if (c2) begin out = in1 end else begin out = in2 end end - Here, if the value at input Port c1 is a logical true, the branch module connected to input Port in0 is enabled and provides its output to a merge module which is also enabled when c1 is true. If c1 is not true, the branch modules connected to Ports in1 and in2 are enabled to provide their outputs to other branch modules. One of the modules in this second tier is enabled when the value at input Port c2 is true and provides its output to another merge block. The other of the modules in the second tier is enabled when c2 is false and provides its output to the other merge block. Depending on the value of c2, one of those outputs is provided to the first merge block, and depending on the value of c1, one of the output is provided to the output port out via the delay element.
- Finally, repetitive structures such as for, while and forever loops can be implemented in the data flow graph.
FIG. 3 shows an example of the data flow graph implementation of the Verilog codeinteger i; for (i=0; i<5; i++) begin a = a−4 end - Here, an entry node initializes a loop index with the value 0, adds 1 to the index and checks to see if the index is less than 5. If so, an exit node loops back for another pass. In tandem with this loop, an input variable a is received through another entry node and 4 is subtracted from it on each pass through the loop. When looping ceases because the index has reached 5, the current value of the input variable is presented at the exit node.
- Certain optimizations can be performed on the data flow graph. For example, in the above loop structure the loop can be unrolled. That is, the graph portion representing the body of the loop can be replicated five times and the graph portion representing the loop index can be eliminated. For timing estimations and the like, virtual loop unrolling can be performed by estimating the number of iterations through the loop and using that number as a multiplier in delay calculations; the actual circuit replications can be done later.
- Once the Verilog source is converted to a data flow graph, it can be implemented in the data model. Preferably, the data model is implemented using the C++ programming language or a similar object-oriented language. Since the construction, accessing and destruction of objects in such languages is well-known in the art, examples of specific commands for performing these operations will be omitted for brevity.
- The topmost object in the data model 10 (shown in
FIG. 4 ) is theRoot object 20. The Root object 20 owns all other objects 30-70 and serves as a base to which everything else is attached. Also, theroot 20 accommodates global attributes which are shared by all objects 20-70. - At the next level of the
data model 10 is theLibrary object 30. Library objects 30 are used to organizeentities 40. The preferred embodiment of the present invention includes at least twoLibraries 30. The first stores information on the technology library to which the circuit under development will be mapped, and the second stores information on the circuit itself. - Next is the
Entity object 40. AnEntity 40 defines the interface of a design; that is, the set ofports 52 that theEntity 40 has. AnEntity 40 may own Port objects 52. APort 52 is used to represent the pin-out of anentity 40.Ports 52 cannot be individually created and destroyed, and can only be created when anEntity 40 is created. EachPort 52 has a direction (in, out, in/out) which is determined upon creation of theEntity 40. This rigidity promotes consistency between theEntity 40, itsModels 50 and theCells 62 bound to thoseModels 50. - As noted above,
Entities 40own Models 50. AModel 50 defines an implementation of anEntity 40; thus,multiple Models 50 within anEntity 40 represent different implementations of thatEntity 40. Generally, theseModels 50 are functionally identical to one another. For example, anEntity 40 in atechnology Library 30 may haveseveral Models 50 defining various eight bit adder cells having different power levels. Similarly, anEntity 40 in atarget Library 30 may haveseveral Models 50 which respectively define an abstract logic representation of a circuit, a gate-level implementation of it, a uniquefied representation, etc. The contents of eachModel 50 is a net list ofNets 60,Cells 62 and Model Pins 64. AllModels 50 and theEntity 40 have the same number ofPins 64 andPorts 52, and thePorts 52 have the same direction in theEntity 40 and over allModels 50; thus, it is relatively easy to replace oneModel 50 with another from thesame Entity 40. - Below the
Models 50 are Cell objects 62. ACell 62 represents a section of logic.Cells 62 may be primitive cells or non-primitive cells.Primitive Cells 62 have a predefined functionality associated with them. Preferably, theprimitive Cells 62 include the following types: - CELL_AND—unlimited fan-in AND gate;
- CELL_XOR—unlimited fan-in OR gate;
- CELL_TRI—tri-state buffer
- CELL_REG—sequential element
- CELL_DC—don't care set
- CELL_BREAK—break point cell; used to implement a “don't touch”; and
- CELL_ONE—a constant one; an inverted or bubbled version is used for a constant zero.
- In contrast to primitive Cells, the functionality of non-primitive Cells is defined by
technology Models 50 to which they are bound. That is, aCell 62 may describe a portion of the circuit under development and belong to aModel 50 in atarget Library 30. However, it will be associated with (preferably by pointing through a cell type attribute or the like) aModel 50 in atechnology library 30 which defines its functionality and general characteristics. -
Non-primitive Cells 62 may be created as bound Cells; alternatively, they may be created as unbound Cells and later bound to aModel 50. This may be done by specifying the Cell's name; by specifying pin-to-pin correspondence vectors; and by binding theCell 62 to anundefined Model 50 and later matching theModel 50 to an actual one. Additionally, a boundCell 62 can be rebound to adifferent Model 50 within thesame Entity 40. - Each
Cell 62 includes a number of parameters called members which specify certain features of theCell 62. These include the cell's name, a pointer to thetechnology Model 50 to which it is bound, a list ofPins 64 which it owns, itsparent Entity 40, and coordinates of theCell 62 within the chip layout. -
Net objects 60 make connections between pins. The pins may be Model pins 64 or Cell pins 70. A Net 60 does not ownPins pins Pins Pins Pin -
Nets 60 also have members, such as the Net's name, a list ofPins Model 50 orCell 62 to which it belongs, and the Net 60 to which it is connected. - Each object 20-70 may have a number of attributes. Each attribute has a name and a value of a type int, short, float, double, char* and void*. One example of an object attribute is an inversion attribute or “bubble” which specifies whether a Cell input or output (or Net 60) is asserted high or low. Other examples of object attributes are object name, firing information, references to the Verilog code defining the object, etc.
- Iterators are procedures used to access objects within the data model. As is known in the art, an iterator traverses the model and each time it is called, returns a pointer to the next object of a particular type. For example, a Model iterator would, when successively called, return pointers to each
Model 50 within the data model. The preferred embodiment of the present invention provides “safe” and “unsafe” iterators, where unsafe iterators return all objects of the specified type, even if they have been added during the iteration process, and safe iterators omit objects added during the iteration. In this way, although the safe iterators are slightly slower than their unsafe counterparts, they can avoid program crashes, errors and exceptions, and other undesirable outcomes. - Before synthesis and timing can take place it is often necessary to uniquefy the data model. This involves binding each
Cell 62 to its ownindividual technology Model 50. This simplifies the synthesis process in that changes made to onetechnology Model 50 will affect only theCell 62 which is bound to it, and no others. Also, after uniquefication it is possible to traverse the data model both up and down, since each object has a unique parent and child. Typically, uniquefication is done by making a copy of atechnology Model 50 for eachCell 62 which is bound to it and associating one of thecells 62 to each copy. - After the data model has been uniquefied, it may be ungrouped, i.e., macro-level cells can be replaced with their primitive components. Alternatively, processes may handle the data model with virtual ungrouping by “looking through” the macro-level cells to process their primitive cell constituents.
- With this understanding of the structure of the data model in mind, implementation of a Verilog-derived data flow graph in the data model will now be described. For each module in the Verilog description there will be one
Entity 40 and one Model 50 (hereinafter collectively referred to as a graph). The ports for theEntity 40 correspond to the ports in the Verilog module.Ports 52 in the graph have a bit width, and there will be aseparate Pin 64 and Net 60 (the group ofNets 60 for thePort 52 forming a Bus) in the graph for each Verilog port. - For each node in the Verilog module, a
Cell 62 will be made in the graph. Initially theCells 62 will be unbound. As described above, given the Cell type and thePins 70 of theCell 62, aModel 50 for theCell 62 to be bound can be generated later. - Each
Model 50 is preferably implemented as a KD tree as follows. First, the circuit under development is divided into a number of sections each corresponding to arectangular section 100 of the available chip area as shown inFIG. 5 . The partitioning of the circuit can be directed by the user; however, it is preferably automatically done by the system so that the circuit is evenly distributed over the entire chip area. Each node orleaf 210 of theKD tree 200 shown inFIG. 6 corresponds to acutline 110 of therectangles 100 and may have appended thereto a linkedlist 220 of allcells 62 which lie on thatcutline 110.Non-leaf nodes 210 in theKD tree 200 each have twochild nodes 210, with theleft child 210 corresponding to the region of the chip on one side of thecutline 110 and theright child 210 corresponding to the region of the chip on the other side of thecutline 110. Similarly, thechild nodes 210 may have linkedlists 220 of cells on theircutlines 110 andchild nodes 210 of their own. - It should be noted that the
leaf nodes 210 will contain most of the circuit information, since thenon-leaf nodes 210 will only have information on those cells touching their corresponding cutline. - As noted above, the initial distribution of
Cells 62 over the chip area is preferably done automatically by the system and in that case may be done through the use of various algorithms which will readily suggest themselves to those skilled in the art. The result of this process is a model with mostly logical information on its constituent elements but with a coarse framework of physical placement and routing information, e.g., cell areas, initial placements, etc. In later steps of the development process described below, the physical information will be refined and augmented within the original data model. In this way, the addition of rough physical layout information to the initial logical description enables the smooth transition of the circuit through the development process, thereby enabling sharing of tool outputs, use of common diagnostics and the like. - Further, once RTL synthesis is complete and the data model is flattened, it may be copied and used as a baseline for formal verification and the like. Since a common model structure is used, there is no need to translate the pre-logic synthesis version of the circuit into a format suitable for use by the verification tool.
- As the development process progresses, the
KD tree 200 may become unbalanced due to an excessive number of additions or deletions in one area, or due to poor initial distribution. This can be compensated for by manual rebalancing by the user or by a user-initiated procedure, but preferably is done automatically by the system. - Once the data model has been constructed in this way, it may be used for both logic synthesis, i.e., gate-level implementation, etc., and physical synthesis, i.e., placing and routing. This is because the data model includes all of the information necessary for logical synthesis operations, i.e., cell functionality, net connections, etc., as well as all information necessary for physical synthesis operations, i.e., areas, physical positions, etc.
- Another advantage of the data model arises from its correspondence with the actual physical chip layout. Since each node of the
KD tree 200 corresponds to acutline 110 and has associated with it the cells on the cutline and information on where its child nodes are within the chip area, portions of the circuit in specific physical areas can be queried, tested and manipulated without the need to read the entire data model into active memory from disk storage, as is the case with prior art net lists. For example, assuming a user wanted to work with only the lower right hand corner of the chip, the system could traverse the KD tree to reach the topmost node corresponding to that area. Then, that node, its children, netlists and the like would be read into active memory from disk and manipulated. The user may even be able to manually direct placement ofcutlines 110 at certain points to frame a particular area of interest. The system may then adjust the KD tree accordingly to accommodate the new arrangement. This area query technique is possible whether the circuit is in its final placement and routing stages or fresh from Verilog synthesis. - Although only a portion of the entire data model need be read into memory, the complete set of
Nets 60 is typically maintained in memory. This is because theNets 60 are necessary for purposes such as delay estimation and the like that are performed frequently, and it is easier to retain allNets 60 in memory rather than repeatedly read them into memory. Thus, once a specific area has been designated for querying, theNets 60 corresponding to that area must be identified. This is done by identifying theNets 60 connected to each of thePins Nets 60 can be eliminated from consideration during the area query.Nets 60 which have some, but not all, Pins 64, 70 within the query area can have the missing pins represented by a stub pin. Finally,Nets 60 which have all of their pins within the query area can be handled as are other objects within the selected area. - Further, during the area query process, Nets 60 which are entirely contained within the selected area can be optimized out or otherwise modified; however those nets having portions outside the query area, i.e., those with stub pins, cannot, since the effect of modification of elimination of these
Nets 60 on the remaining circuit portions is unpredictable. - Further, since the logical and physical aspects of the circuit are integrated into a single data model from the start, deviations from the classic logical synthesis/physical synthesis partition can be made. For example, the inclusion of buffers for load handling and timing purposes is normally done as part of the logical synthesis process; however, using a common data model for all aspects of the development process allows the placement of buffers to be delayed until later during the placement process, when layout information is more definite and precise.
- The above description of the preferred embodiment of the present invention has been given for purposes of illustration only, and variations thereof will be readily apparent to those skilled in the art. For example, although Verilog has been used as the preferred language for initial input of the circuit under development, other appropriate hardware description languages may of course be used. Also, although implementation of the data model using object-oriented C++ techniques has been disclosed, other programming languages and paradigms may also be workable. Similarly, alternative object hierarchies may be used. Such variations fall within the scope of the present invention. Thus, the scope of the present invention should be limited only by the appended claims.
Claims (14)
1. A method of storing data for use by an automated logic circuit design system comprising the steps of:
providing a common database that allows for storage of data associated with automated circuit design;
performing at least one logical operation and at least one physical operation, with each operation accessing the common database and modifying the data therein, the at least one logical operation including at least one of logic synthesis and timing simulation operations and the at least one physical operation including at least one of physical placement and physical routing operations; and
wherein each of the logic synthesis, timing simulation, physical placement, and physical routing operations are performed and each operation accesses the common database and modifies the data stored therein.
2. The method according to claim 1 further including the steps of making at least one area query.
3. The method according to claim 2 wherein the step of making at least one area query makes a plurality of area queries, with one of the plurality of area queries taking place after the logical operation and another one of the plurality of area queries taking place during the at least one physical operation.
4. The method according to claim 2 , wherein at least one of the area queries is made to verify a property of the circuit.
5. The method according to claim 4 wherein the property is a spacing between adjacent nets.
6. The method according to claim 5 wherein the spacing is used in order to simulate a timing of the circuit.
7. The method according to claim 4 wherein the property is adherence to design rules.
8. The method according to claim 7 wherein the design rule relates to spacing between diffusion regions in the substrate.
9. The method according to claim 7 wherein the design rule relates to pitch between metal lines.
10. The method according to claim 7 wherein the design rule relates to minimum widths of conductive regions.
11. The method according to claim 2 wherein the at least one area query is made when performing diagnostics.
12. The method according to claim 11 wherein the diagnostics include checking for electrical short circuiting.
13. The method according to claim 2 wherein the at least one area query is made to manipulate a portion of the circuit.
14. The method according to claim 13 wherein the manipulating of the portion of the circuit adds a buffer to the portion of the circuit to obtain proper timing for that portion of the circuit.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/327,550 US20060117279A1 (en) | 1999-04-27 | 2006-01-05 | Method for storing multiple levels of design data in a common database |
US12/113,834 US20080209364A1 (en) | 1999-04-27 | 2008-05-01 | Method for storing multiple levels of design data in a common database |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/300,540 US6505328B1 (en) | 1999-04-27 | 1999-04-27 | Method for storing multiple levels of design data in a common database |
US10/159,531 US20020188922A1 (en) | 1999-04-27 | 2002-05-31 | Method for storing multiple levels of design data in a common database |
US11/327,550 US20060117279A1 (en) | 1999-04-27 | 2006-01-05 | Method for storing multiple levels of design data in a common database |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/159,531 Continuation US20020188922A1 (en) | 1999-04-27 | 2002-05-31 | Method for storing multiple levels of design data in a common database |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/113,834 Continuation US20080209364A1 (en) | 1999-04-27 | 2008-05-01 | Method for storing multiple levels of design data in a common database |
Publications (1)
Publication Number | Publication Date |
---|---|
US20060117279A1 true US20060117279A1 (en) | 2006-06-01 |
Family
ID=23159532
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/300,540 Expired - Lifetime US6505328B1 (en) | 1999-04-27 | 1999-04-27 | Method for storing multiple levels of design data in a common database |
US10/159,531 Abandoned US20020188922A1 (en) | 1999-04-27 | 2002-05-31 | Method for storing multiple levels of design data in a common database |
US11/327,550 Abandoned US20060117279A1 (en) | 1999-04-27 | 2006-01-05 | Method for storing multiple levels of design data in a common database |
US12/113,834 Abandoned US20080209364A1 (en) | 1999-04-27 | 2008-05-01 | Method for storing multiple levels of design data in a common database |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/300,540 Expired - Lifetime US6505328B1 (en) | 1999-04-27 | 1999-04-27 | Method for storing multiple levels of design data in a common database |
US10/159,531 Abandoned US20020188922A1 (en) | 1999-04-27 | 2002-05-31 | Method for storing multiple levels of design data in a common database |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/113,834 Abandoned US20080209364A1 (en) | 1999-04-27 | 2008-05-01 | Method for storing multiple levels of design data in a common database |
Country Status (6)
Country | Link |
---|---|
US (4) | US6505328B1 (en) |
EP (1) | EP1092201A1 (en) |
JP (1) | JP2002543498A (en) |
AU (1) | AU4370100A (en) |
TW (1) | TWI236607B (en) |
WO (1) | WO2000065492A1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070005329A1 (en) * | 2005-06-21 | 2007-01-04 | Alfieri Robert A | Building integrated circuits using a common database |
US7392492B2 (en) * | 2005-09-30 | 2008-06-24 | Rambus Inc. | Multi-format consistency checking tool |
US7483823B2 (en) | 2005-06-21 | 2009-01-27 | Nvidia Corporation | Building integrated circuits using logical units |
WO2014108737A1 (en) * | 2013-01-08 | 2014-07-17 | Freescale Semiconductor, Inc. | Method and apparatus for performing logic synthesis |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6519754B1 (en) * | 1999-05-17 | 2003-02-11 | Synplicity, Inc. | Methods and apparatuses for designing integrated circuits |
US6691286B1 (en) * | 2000-10-31 | 2004-02-10 | Synplicity, Inc. | Methods and apparatuses for checking equivalence of circuits |
US6801884B2 (en) * | 2001-02-09 | 2004-10-05 | Hewlett-Packard Development Company, L.P. | Method and apparatus for traversing net connectivity through design hierarchy |
JP2003030269A (en) * | 2001-05-16 | 2003-01-31 | Internatl Business Mach Corp <Ibm> | Method for parallel simulation on single microprocessor using meta model |
US7082104B2 (en) * | 2001-05-18 | 2006-07-25 | Intel Corporation | Network device switch |
US6772399B2 (en) * | 2001-06-15 | 2004-08-03 | Cadence Design Systems, Inc. | Enhancing mergeability of datapaths and reducing datapath widths responsively to required precision |
US7093224B2 (en) | 2001-08-28 | 2006-08-15 | Intel Corporation | Model-based logic design |
US7107201B2 (en) * | 2001-08-29 | 2006-09-12 | Intel Corporation | Simulating a logic design |
US20030046051A1 (en) * | 2001-08-29 | 2003-03-06 | Wheeler William R. | Unified design parameter dependency management method and apparatus |
US7073156B2 (en) * | 2001-08-29 | 2006-07-04 | Intel Corporation | Gate estimation process and method |
US6859913B2 (en) * | 2001-08-29 | 2005-02-22 | Intel Corporation | Representing a simulation model using a hardware configuration database |
US7130784B2 (en) * | 2001-08-29 | 2006-10-31 | Intel Corporation | Logic simulation |
US20030046054A1 (en) * | 2001-08-29 | 2003-03-06 | Wheeler William R. | Providing modeling instrumentation with an application programming interface to a GUI application |
US6983427B2 (en) * | 2001-08-29 | 2006-01-03 | Intel Corporation | Generating a logic design |
US7197724B2 (en) * | 2002-01-17 | 2007-03-27 | Intel Corporation | Modeling a logic design |
US20030145311A1 (en) * | 2002-01-25 | 2003-07-31 | Wheeler William R. | Generating simulation code |
FR2836734B1 (en) * | 2002-03-01 | 2004-07-02 | Prosilog S A | METHOD FOR EXTRACTING THE TOPOLOGY OF A SYSTEM FROM ITS TEXT DESCRIPTION |
US6848084B1 (en) * | 2002-07-02 | 2005-01-25 | Cadence Design Systems, Inc. | Method and apparatus for verification of memories at multiple abstraction levels |
US6983456B2 (en) * | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
US7155708B2 (en) * | 2002-10-31 | 2006-12-26 | Src Computers, Inc. | Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation |
US7627842B1 (en) | 2003-06-03 | 2009-12-01 | Cadence Design Systems, Inc. | Method and system for verification of circuits with encoded signals |
JP4414690B2 (en) * | 2003-07-14 | 2010-02-10 | 株式会社日立ハイテクノロジーズ | Semiconductor manufacturing system |
US7584460B2 (en) * | 2003-07-22 | 2009-09-01 | Lsi Corporation | Process and apparatus for abstracting IC design files |
US7100134B2 (en) * | 2003-08-18 | 2006-08-29 | Aprio Technologies, Inc. | Method and platform for integrated physical verifications and manufacturing enhancements |
JP4183182B2 (en) * | 2003-08-22 | 2008-11-19 | 株式会社リコー | Design support apparatus and design support method |
US7493492B2 (en) * | 2004-04-17 | 2009-02-17 | International Business Machines Corporation | Limiting access to publicly available object-oriented interfaces via password arguments |
JP2006079447A (en) * | 2004-09-10 | 2006-03-23 | Fujitsu Ltd | Integrated circuit design support device, integrated circuit design support method and integrated circuit design support program |
US7155688B2 (en) * | 2004-11-17 | 2006-12-26 | Lsi Logic Corporation | Memory generation and placement |
US7523423B1 (en) * | 2004-12-10 | 2009-04-21 | Synopsys, Inc. | Method and apparatus for production of data-flow-graphs by symbolic simulation |
EP1736905A3 (en) * | 2005-06-21 | 2007-09-05 | Nvidia Corporation | Building integrated circuits using logical units |
US7191412B1 (en) * | 2005-09-28 | 2007-03-13 | Xilinx, Inc. | Method and apparatus for processing a circuit description for logic simulation |
US7424687B2 (en) * | 2005-11-16 | 2008-09-09 | Lsi Corporation | Method and apparatus for mapping design memories to integrated circuit layout |
US8839175B2 (en) | 2006-03-09 | 2014-09-16 | Tela Innovations, Inc. | Scalable meta-data objects |
US7956421B2 (en) | 2008-03-13 | 2011-06-07 | Tela Innovations, Inc. | Cross-coupled transistor layouts in restricted gate level layout architecture |
US9230910B2 (en) | 2006-03-09 | 2016-01-05 | Tela Innovations, Inc. | Oversized contacts and vias in layout defined by linearly constrained topology |
US8225261B2 (en) * | 2006-03-09 | 2012-07-17 | Tela Innovations, Inc. | Methods for defining contact grid in dynamic array architecture |
US7943967B2 (en) * | 2006-03-09 | 2011-05-17 | Tela Innovations, Inc. | Semiconductor device and associated layouts including diffusion contact placement restriction based on relation to linear conductive segments |
US8448102B2 (en) * | 2006-03-09 | 2013-05-21 | Tela Innovations, Inc. | Optimizing layout of irregular structures in regular layout context |
US8658542B2 (en) | 2006-03-09 | 2014-02-25 | Tela Innovations, Inc. | Coarse grid design methods and structures |
US9563733B2 (en) * | 2009-05-06 | 2017-02-07 | Tela Innovations, Inc. | Cell circuit and layout with linear finfet structures |
US8247846B2 (en) * | 2006-03-09 | 2012-08-21 | Tela Innovations, Inc. | Oversized contacts and vias in semiconductor chip defined by linearly constrained topology |
US7446352B2 (en) | 2006-03-09 | 2008-11-04 | Tela Innovations, Inc. | Dynamic array architecture |
US9035359B2 (en) | 2006-03-09 | 2015-05-19 | Tela Innovations, Inc. | Semiconductor chip including region including linear-shaped conductive structures forming gate electrodes and having electrical connection areas arranged relative to inner region between transistors of different types and associated methods |
US8245180B2 (en) * | 2006-03-09 | 2012-08-14 | Tela Innovations, Inc. | Methods for defining and using co-optimized nanopatterns for integrated circuit design and apparatus implementing same |
US8653857B2 (en) | 2006-03-09 | 2014-02-18 | Tela Innovations, Inc. | Circuitry and layouts for XOR and XNOR logic |
US8225239B2 (en) * | 2006-03-09 | 2012-07-17 | Tela Innovations, Inc. | Methods for defining and utilizing sub-resolution features in linear topology |
US7763534B2 (en) | 2007-10-26 | 2010-07-27 | Tela Innovations, Inc. | Methods, structures and designs for self-aligning local interconnects used in integrated circuits |
US9009641B2 (en) | 2006-03-09 | 2015-04-14 | Tela Innovations, Inc. | Circuits with linear finfet structures |
US7932545B2 (en) | 2006-03-09 | 2011-04-26 | Tela Innovations, Inc. | Semiconductor device and associated layouts including gate electrode level region having arrangement of six linear conductive segments with side-to-side spacing less than 360 nanometers |
US8541879B2 (en) | 2007-12-13 | 2013-09-24 | Tela Innovations, Inc. | Super-self-aligned contacts and method for making the same |
US8302042B2 (en) | 2006-07-24 | 2012-10-30 | Oasys Design Systems | Generating a convergent circuit design from a functional description using entities having access to the functional description and to physical design information |
US7979829B2 (en) | 2007-02-20 | 2011-07-12 | Tela Innovations, Inc. | Integrated circuit cell library with cell-level process compensation technique (PCT) application and associated methods |
US8286107B2 (en) * | 2007-02-20 | 2012-10-09 | Tela Innovations, Inc. | Methods and systems for process compensation technique acceleration |
US8667443B2 (en) | 2007-03-05 | 2014-03-04 | Tela Innovations, Inc. | Integrated circuit cell library for multiple patterning |
US7888705B2 (en) | 2007-08-02 | 2011-02-15 | Tela Innovations, Inc. | Methods for defining dynamic array section with manufacturing assurance halo and apparatus implementing the same |
US8453094B2 (en) | 2008-01-31 | 2013-05-28 | Tela Innovations, Inc. | Enforcement of semiconductor structure regularity for localized transistors and interconnect |
US7939443B2 (en) | 2008-03-27 | 2011-05-10 | Tela Innovations, Inc. | Methods for multi-wire routing and apparatus implementing same |
KR101749351B1 (en) | 2008-07-16 | 2017-06-20 | 텔라 이노베이션스, 인코포레이티드 | Methods for cell phasing and placement in dynamic array architecture and implementation of the same |
US9122832B2 (en) * | 2008-08-01 | 2015-09-01 | Tela Innovations, Inc. | Methods for controlling microloading variation in semiconductor wafer layout and fabrication |
US9489477B2 (en) * | 2008-09-24 | 2016-11-08 | Synopsys, Inc. | Method and apparatus for word-level netlist reduction and verification using same |
US8104000B2 (en) * | 2008-10-27 | 2012-01-24 | Synopsys, Inc. | Method and apparatus for memory abstraction and for word level net list reduction and verification using same |
US8136063B2 (en) * | 2008-11-14 | 2012-03-13 | Synopsys, Inc. | Unfolding algorithm in multirate system folding |
US8661392B2 (en) * | 2009-10-13 | 2014-02-25 | Tela Innovations, Inc. | Methods for cell boundary encroachment and layouts implementing the Same |
US9159627B2 (en) | 2010-11-12 | 2015-10-13 | Tela Innovations, Inc. | Methods for linewidth modification and apparatus implementing the same |
CN107967704A (en) * | 2016-10-20 | 2018-04-27 | 上海复旦微电子集团股份有限公司 | A kind of fpga chip domain line display methods |
US10755017B2 (en) | 2018-07-12 | 2020-08-25 | International Business Machines Corporation | Cell placement in a circuit with shared inputs and outputs |
US10742218B2 (en) | 2018-07-23 | 2020-08-11 | International Business Machines Corpoartion | Vertical transport logic circuit cell with shared pitch |
US10733341B1 (en) * | 2019-03-27 | 2020-08-04 | Architecture Technology Corporation | Version control of an integrated circuit design and tracking of pre-fabrication, fabrication, and post-fabrication processes |
US11087059B2 (en) * | 2019-06-22 | 2021-08-10 | Synopsys, Inc. | Clock domain crossing verification of integrated circuit design using parameter inference |
Citations (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5187668A (en) * | 1989-12-04 | 1993-02-16 | Matsushita Electric Industrial Co., Ltd. | Placement optimization system aided by cad |
US5212650A (en) * | 1986-09-12 | 1993-05-18 | Digital Equipment Corporation | Procedure and data structure for synthesis and transformation of logic circuit designs |
US5313615A (en) * | 1987-06-22 | 1994-05-17 | Comdisco Systems, Inc. | Block diagram simulator using a library for generation of a computer program |
US5394337A (en) * | 1991-10-25 | 1995-02-28 | Nec Corporation | Method for wire routing of a semiconductor integrated circuit and apparatus for implementing the same |
US5432707A (en) * | 1993-02-12 | 1995-07-11 | International Business Machines Corporation | Automated circuit design |
US5452226A (en) * | 1986-09-12 | 1995-09-19 | Digital Equipment Corporation | Rule structure for insertion of new elements in a circuit design synthesis procedure |
US5487018A (en) * | 1993-08-13 | 1996-01-23 | Vlsi Technology, Inc. | Electronic design automation apparatus and method utilizing a physical information database |
US5519627A (en) * | 1992-05-01 | 1996-05-21 | Vlsi Technology, Inc. | Datapath synthesis method and apparatus utilizing a structured cell library |
US5528508A (en) * | 1993-02-19 | 1996-06-18 | International Business Machines Corporation | System and method for verifying a hierarchical circuit design |
US5541849A (en) * | 1990-04-06 | 1996-07-30 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including estimation and comparison of timing parameters |
US5623417A (en) * | 1993-08-24 | 1997-04-22 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for functional level data interface |
US5666288A (en) * | 1995-04-21 | 1997-09-09 | Motorola, Inc. | Method and apparatus for designing an integrated circuit |
US5696693A (en) * | 1995-03-31 | 1997-12-09 | Unisys Corporation | Method for placing logic functions and cells in a logic design using floor planning by analogy |
US5699265A (en) * | 1995-09-08 | 1997-12-16 | Lsi Logic Corporation | Physical design automation system and process for designing integrated circuit chips using multiway partitioning with constraints |
US5726902A (en) * | 1995-06-07 | 1998-03-10 | Vlsi Technology, Inc. | Method and apparatus for characterizing timing behavior of datapaths for integrated circuit design and fabrication |
US5727187A (en) * | 1995-08-31 | 1998-03-10 | Unisys Corporation | Method of using logical names in post-synthesis electronic design automation systems |
US5757657A (en) * | 1996-02-07 | 1998-05-26 | International Business Machines Corporation | Adaptive incremental placement of circuits on VLSI chip |
US5761664A (en) * | 1993-06-11 | 1998-06-02 | International Business Machines Corporation | Hierarchical data model for design automation |
US5784534A (en) * | 1995-03-31 | 1998-07-21 | Motorola, Inc. | Circuit and method for representing fuzzy rule weights during a fuzzy logic operation |
US5818729A (en) * | 1996-05-23 | 1998-10-06 | Synopsys, Inc. | Method and system for placing cells using quadratic placement and a spanning tree model |
US5841663A (en) * | 1995-09-14 | 1998-11-24 | Vlsi Technology, Inc. | Apparatus and method for synthesizing integrated circuits using parameterized HDL modules |
US5864487A (en) * | 1996-11-19 | 1999-01-26 | Unisys Corporation | Method and apparatus for identifying gated clocks within a circuit design using a standard optimization tool |
US5946476A (en) * | 1994-06-14 | 1999-08-31 | Fujitsu Limited | Method and apparatus for designing the layout of circuit component patterns |
US5956497A (en) * | 1997-02-26 | 1999-09-21 | Advanced Micro Devices, Inc. | Methodology for designing an integrated circuit using a reduced cell library for preliminary synthesis |
US5960184A (en) * | 1996-11-19 | 1999-09-28 | Unisys Corporation | Method and apparatus for providing optimization parameters to a logic optimizer tool |
US5983277A (en) * | 1996-10-28 | 1999-11-09 | Altera Corporation | Work group computing for electronic design automation |
US6011911A (en) * | 1997-09-30 | 2000-01-04 | Synopsys, Inc. | Layout overlap detection with selective flattening in computer implemented integrated circuit design |
US6026228A (en) * | 1996-12-13 | 2000-02-15 | Semiconductor Technology Academic Research Center | Integrated circuit design method, database apparatus for designing integrated circuit and integrated circuit design support apparatus |
US6080201A (en) * | 1998-02-10 | 2000-06-27 | International Business Machines Corporation | Integrated placement and synthesis for timing closure of microprocessors |
US6094654A (en) * | 1996-12-06 | 2000-07-25 | International Business Machines Corporation | Data management system for file and database management |
US6099582A (en) * | 1997-02-24 | 2000-08-08 | Fujitsu Limited | Automatic revision of semiconductor device layout for solving contradiction |
US6145117A (en) * | 1998-01-30 | 2000-11-07 | Tera Systems Incorporated | Creating optimized physical implementations from high-level descriptions of electronic design using placement based information |
US6145874A (en) * | 1997-10-29 | 2000-11-14 | Trw Inc. | Passenger air bag disable switch |
US6148432A (en) * | 1997-11-17 | 2000-11-14 | Micron Technology, Inc. | Inserting buffers between modules to limit changes to inter-module signals during ASIC design and synthesis |
US6209123B1 (en) * | 1996-11-01 | 2001-03-27 | Motorola, Inc. | Methods of placing transistors in a circuit layout and semiconductor device with automatically placed transistors |
US6216258B1 (en) * | 1998-03-27 | 2001-04-10 | Xilinx, Inc. | FPGA modules parameterized by expressions |
US6263483B1 (en) * | 1998-02-20 | 2001-07-17 | Lsi Logic Corporation | Method of accessing the generic netlist created by synopsys design compilier |
US20010015464A1 (en) * | 1996-09-12 | 2001-08-23 | Tokuhiko Tamaki | Semiconductor integrated circuit design method and computer-readable recording medium |
US6289489B1 (en) * | 1999-02-23 | 2001-09-11 | Stephen L. Bold | Method and apparatus for automatically cross-referencing graphical objects and HDL statements |
US6308309B1 (en) * | 1999-08-13 | 2001-10-23 | Xilinx, Inc. | Place-holding library elements for defining routing paths |
US6321366B1 (en) * | 1997-05-02 | 2001-11-20 | Axis Systems, Inc. | Timing-insensitive glitch-free logic system and method |
US6370679B1 (en) * | 1997-09-17 | 2002-04-09 | Numerical Technologies, Inc. | Data hierarchy layout correction and verification method and apparatus |
US20030208723A1 (en) * | 1999-02-05 | 2003-11-06 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6904571B1 (en) * | 1996-04-15 | 2005-06-07 | Altera Corporation | Algorithm and methodology for the polygonalization of sparse circuit schematics |
US6915249B1 (en) * | 1998-05-14 | 2005-07-05 | Fujitsu Limited | Noise checking method and apparatus |
US20050149898A1 (en) * | 1998-10-14 | 2005-07-07 | Hakewill James R.H. | Method and apparatus for managing the configuration and functionality of a semiconductor design |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5764534A (en) | 1994-10-13 | 1998-06-09 | Xilinx, Inc. | Method for providing placement information during design entry |
JPH08188211A (en) * | 1994-11-09 | 1996-07-23 | Honda Motor Co Ltd | Method and device for correcting inventory condition in automatic warehouse, and method and device for correcting carriage condition |
US6154874A (en) * | 1998-04-17 | 2000-11-28 | Lsi Logic Corporation | Memory-saving method and apparatus for partitioning high fanout nets |
WO2003104921A2 (en) * | 2002-06-07 | 2003-12-18 | Praesagus, Inc. | Characterization adn reduction of variation for integrated circuits |
US7055113B2 (en) * | 2002-12-31 | 2006-05-30 | Lsi Logic Corporation | Simplified process to design integrated circuits |
-
1999
- 1999-04-27 US US09/300,540 patent/US6505328B1/en not_active Expired - Lifetime
-
2000
- 2000-04-24 EP EP00923607A patent/EP1092201A1/en not_active Withdrawn
- 2000-04-24 AU AU43701/00A patent/AU4370100A/en not_active Abandoned
- 2000-04-24 JP JP2000614166A patent/JP2002543498A/en active Pending
- 2000-04-24 WO PCT/US2000/011012 patent/WO2000065492A1/en not_active Application Discontinuation
- 2000-05-04 TW TW089107888A patent/TWI236607B/en not_active IP Right Cessation
-
2002
- 2002-05-31 US US10/159,531 patent/US20020188922A1/en not_active Abandoned
-
2006
- 2006-01-05 US US11/327,550 patent/US20060117279A1/en not_active Abandoned
-
2008
- 2008-05-01 US US12/113,834 patent/US20080209364A1/en not_active Abandoned
Patent Citations (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452226A (en) * | 1986-09-12 | 1995-09-19 | Digital Equipment Corporation | Rule structure for insertion of new elements in a circuit design synthesis procedure |
US5212650A (en) * | 1986-09-12 | 1993-05-18 | Digital Equipment Corporation | Procedure and data structure for synthesis and transformation of logic circuit designs |
US5313615A (en) * | 1987-06-22 | 1994-05-17 | Comdisco Systems, Inc. | Block diagram simulator using a library for generation of a computer program |
US5187668A (en) * | 1989-12-04 | 1993-02-16 | Matsushita Electric Industrial Co., Ltd. | Placement optimization system aided by cad |
US5541849A (en) * | 1990-04-06 | 1996-07-30 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including estimation and comparison of timing parameters |
US5394337A (en) * | 1991-10-25 | 1995-02-28 | Nec Corporation | Method for wire routing of a semiconductor integrated circuit and apparatus for implementing the same |
US5519627A (en) * | 1992-05-01 | 1996-05-21 | Vlsi Technology, Inc. | Datapath synthesis method and apparatus utilizing a structured cell library |
US5432707A (en) * | 1993-02-12 | 1995-07-11 | International Business Machines Corporation | Automated circuit design |
US5528508A (en) * | 1993-02-19 | 1996-06-18 | International Business Machines Corporation | System and method for verifying a hierarchical circuit design |
US5761664A (en) * | 1993-06-11 | 1998-06-02 | International Business Machines Corporation | Hierarchical data model for design automation |
US5487018A (en) * | 1993-08-13 | 1996-01-23 | Vlsi Technology, Inc. | Electronic design automation apparatus and method utilizing a physical information database |
US5623417A (en) * | 1993-08-24 | 1997-04-22 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for functional level data interface |
US5946476A (en) * | 1994-06-14 | 1999-08-31 | Fujitsu Limited | Method and apparatus for designing the layout of circuit component patterns |
US5696693A (en) * | 1995-03-31 | 1997-12-09 | Unisys Corporation | Method for placing logic functions and cells in a logic design using floor planning by analogy |
US5784534A (en) * | 1995-03-31 | 1998-07-21 | Motorola, Inc. | Circuit and method for representing fuzzy rule weights during a fuzzy logic operation |
US5666288A (en) * | 1995-04-21 | 1997-09-09 | Motorola, Inc. | Method and apparatus for designing an integrated circuit |
US5726902A (en) * | 1995-06-07 | 1998-03-10 | Vlsi Technology, Inc. | Method and apparatus for characterizing timing behavior of datapaths for integrated circuit design and fabrication |
US5727187A (en) * | 1995-08-31 | 1998-03-10 | Unisys Corporation | Method of using logical names in post-synthesis electronic design automation systems |
US5699265A (en) * | 1995-09-08 | 1997-12-16 | Lsi Logic Corporation | Physical design automation system and process for designing integrated circuit chips using multiway partitioning with constraints |
US5841663A (en) * | 1995-09-14 | 1998-11-24 | Vlsi Technology, Inc. | Apparatus and method for synthesizing integrated circuits using parameterized HDL modules |
US5757657A (en) * | 1996-02-07 | 1998-05-26 | International Business Machines Corporation | Adaptive incremental placement of circuits on VLSI chip |
US6904571B1 (en) * | 1996-04-15 | 2005-06-07 | Altera Corporation | Algorithm and methodology for the polygonalization of sparse circuit schematics |
US5818729A (en) * | 1996-05-23 | 1998-10-06 | Synopsys, Inc. | Method and system for placing cells using quadratic placement and a spanning tree model |
US20010015464A1 (en) * | 1996-09-12 | 2001-08-23 | Tokuhiko Tamaki | Semiconductor integrated circuit design method and computer-readable recording medium |
US6298319B1 (en) * | 1996-10-28 | 2001-10-02 | Altera Corporation | Incremental compilation of electronic design for work group |
US5983277A (en) * | 1996-10-28 | 1999-11-09 | Altera Corporation | Work group computing for electronic design automation |
US6209123B1 (en) * | 1996-11-01 | 2001-03-27 | Motorola, Inc. | Methods of placing transistors in a circuit layout and semiconductor device with automatically placed transistors |
US5960184A (en) * | 1996-11-19 | 1999-09-28 | Unisys Corporation | Method and apparatus for providing optimization parameters to a logic optimizer tool |
US5864487A (en) * | 1996-11-19 | 1999-01-26 | Unisys Corporation | Method and apparatus for identifying gated clocks within a circuit design using a standard optimization tool |
US6094654A (en) * | 1996-12-06 | 2000-07-25 | International Business Machines Corporation | Data management system for file and database management |
US6026228A (en) * | 1996-12-13 | 2000-02-15 | Semiconductor Technology Academic Research Center | Integrated circuit design method, database apparatus for designing integrated circuit and integrated circuit design support apparatus |
US6099582A (en) * | 1997-02-24 | 2000-08-08 | Fujitsu Limited | Automatic revision of semiconductor device layout for solving contradiction |
US5956497A (en) * | 1997-02-26 | 1999-09-21 | Advanced Micro Devices, Inc. | Methodology for designing an integrated circuit using a reduced cell library for preliminary synthesis |
US6321366B1 (en) * | 1997-05-02 | 2001-11-20 | Axis Systems, Inc. | Timing-insensitive glitch-free logic system and method |
US6370679B1 (en) * | 1997-09-17 | 2002-04-09 | Numerical Technologies, Inc. | Data hierarchy layout correction and verification method and apparatus |
US6011911A (en) * | 1997-09-30 | 2000-01-04 | Synopsys, Inc. | Layout overlap detection with selective flattening in computer implemented integrated circuit design |
US6145874A (en) * | 1997-10-29 | 2000-11-14 | Trw Inc. | Passenger air bag disable switch |
US6148432A (en) * | 1997-11-17 | 2000-11-14 | Micron Technology, Inc. | Inserting buffers between modules to limit changes to inter-module signals during ASIC design and synthesis |
US6327692B1 (en) * | 1997-11-17 | 2001-12-04 | Micron Technology, Inc. | Inter-module buffer determination methodology for ASIC synthesis |
US6145117A (en) * | 1998-01-30 | 2000-11-07 | Tera Systems Incorporated | Creating optimized physical implementations from high-level descriptions of electronic design using placement based information |
US6080201A (en) * | 1998-02-10 | 2000-06-27 | International Business Machines Corporation | Integrated placement and synthesis for timing closure of microprocessors |
US6263483B1 (en) * | 1998-02-20 | 2001-07-17 | Lsi Logic Corporation | Method of accessing the generic netlist created by synopsys design compilier |
US6216258B1 (en) * | 1998-03-27 | 2001-04-10 | Xilinx, Inc. | FPGA modules parameterized by expressions |
US6915249B1 (en) * | 1998-05-14 | 2005-07-05 | Fujitsu Limited | Noise checking method and apparatus |
US20050149898A1 (en) * | 1998-10-14 | 2005-07-07 | Hakewill James R.H. | Method and apparatus for managing the configuration and functionality of a semiconductor design |
US20030208723A1 (en) * | 1999-02-05 | 2003-11-06 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6289489B1 (en) * | 1999-02-23 | 2001-09-11 | Stephen L. Bold | Method and apparatus for automatically cross-referencing graphical objects and HDL statements |
US6308309B1 (en) * | 1999-08-13 | 2001-10-23 | Xilinx, Inc. | Place-holding library elements for defining routing paths |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070005329A1 (en) * | 2005-06-21 | 2007-01-04 | Alfieri Robert A | Building integrated circuits using a common database |
US7363610B2 (en) * | 2005-06-21 | 2008-04-22 | Nvidia Corporation | Building integrated circuits using a common database |
US7483823B2 (en) | 2005-06-21 | 2009-01-27 | Nvidia Corporation | Building integrated circuits using logical units |
US7392492B2 (en) * | 2005-09-30 | 2008-06-24 | Rambus Inc. | Multi-format consistency checking tool |
US20080263487A1 (en) * | 2005-09-30 | 2008-10-23 | Qiang Hong | Multi-Format Consistency Checking Tool |
WO2014108737A1 (en) * | 2013-01-08 | 2014-07-17 | Freescale Semiconductor, Inc. | Method and apparatus for performing logic synthesis |
US9652572B2 (en) | 2013-01-08 | 2017-05-16 | Nxp Usa, Inc. | Method and apparatus for performing logic synthesis |
Also Published As
Publication number | Publication date |
---|---|
TWI236607B (en) | 2005-07-21 |
US20080209364A1 (en) | 2008-08-28 |
JP2002543498A (en) | 2002-12-17 |
EP1092201A1 (en) | 2001-04-18 |
US6505328B1 (en) | 2003-01-07 |
US20020188922A1 (en) | 2002-12-12 |
AU4370100A (en) | 2000-11-10 |
WO2000065492A1 (en) | 2000-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6505328B1 (en) | Method for storing multiple levels of design data in a common database | |
US6530073B2 (en) | RTL annotation tool for layout induced netlist changes | |
US9171114B2 (en) | Managing the configuration and functionality of a semiconductor design | |
US5880971A (en) | Methodology for deriving executable low-level structural descriptions and valid physical implementations of circuits and systems from semantic specifications and descriptions thereof | |
US6263483B1 (en) | Method of accessing the generic netlist created by synopsys design compilier | |
US6378123B1 (en) | Method of handling macro components in circuit design synthesis | |
US5726902A (en) | Method and apparatus for characterizing timing behavior of datapaths for integrated circuit design and fabrication | |
US6292931B1 (en) | RTL analysis tool | |
US6173435B1 (en) | Internal clock handling in synthesis script | |
US5831869A (en) | Method of compacting data representations of hierarchical logic designs used for static timing analysis | |
US6295636B1 (en) | RTL analysis for improved logic synthesis | |
US6289498B1 (en) | VDHL/Verilog expertise and gate synthesis automation system | |
US5933356A (en) | Method and system for creating and verifying structural logic model of electronic design from behavioral description, including generation of logic and timing models | |
US6421818B1 (en) | Efficient top-down characterization method | |
US5870308A (en) | Method and system for creating and validating low-level description of electronic design | |
US6205572B1 (en) | Buffering tree analysis in mapped design | |
US9798840B1 (en) | Methods, systems, and computer program product for implementing a simulation platform with dynamic device model libraries for electronic designs | |
US20030009734A1 (en) | Method for generating design constraints for modules in a hierarchical integrated circuit design system | |
US6289491B1 (en) | Netlist analysis tool by degree of conformity | |
US20030101331A1 (en) | ASIC design technique | |
US7188327B2 (en) | Method and system for logic-level circuit modeling | |
US6550041B1 (en) | Method and apparatus for evaluating the design quality of network nodes | |
US6367055B1 (en) | Method and apparatus for determining certain characteristics of circuit elements | |
US6507807B1 (en) | Method and apparatus for determining which branch of a network of an integrated circuit has the largest total effective RC delay | |
US9177090B1 (en) | In-hierarchy circuit analysis and modification for circuit instances |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |