US5867396A - Method and apparatus for making incremental changes to an integrated circuit design - Google Patents

Method and apparatus for making incremental changes to an integrated circuit design Download PDF

Info

Publication number
US5867396A
US5867396A US08/523,070 US52307095A US5867396A US 5867396 A US5867396 A US 5867396A US 52307095 A US52307095 A US 52307095A US 5867396 A US5867396 A US 5867396A
Authority
US
United States
Prior art keywords
technology
instances
signatures
nets
netlist
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.)
Expired - Lifetime
Application number
US08/523,070
Inventor
David B. Parlour
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Priority to US08/523,070 priority Critical patent/US5867396A/en
Assigned to XILINX, INC. reassignment XILINX, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PARLOUR, DAVID B.
Application granted granted Critical
Publication of US5867396A publication Critical patent/US5867396A/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

Definitions

  • the present invention relates to the field of circuit design, such as in programmable integrated circuit devices that are configurable to implement designs; more particularly, the present invention relates to comparing netlists generated in different implementation cycles and constraining the implementation of a later design based on similarities between the two netlists determined as a result of the comparison process.
  • net refers to a conductive region connecting components of a user's circuit design. For example, one net may connect the output terminal of an AND gate to the input terminal of another AND gate and to the input terminal of a flip flop.
  • An AND gate is one component type.
  • a flip flop is another component type.
  • An "instance” is a single occurrence of a component type.
  • a “netlist” is a list of all the nets which connect the component instances of a user's design and the component instances connected by each net.
  • Field programmable gate arrays may be programmed to implement one of many different integrated circuit (IC) designs. Typically, these designs are provided by a customer in the form of design and timing constraints. Using the design and timing constraints, code is created that, when run, controls the programming of the FPGA.
  • IC integrated circuit
  • a place and route operation is performed to configure an FPGA to a circuit that implements the customer design. If it is determined that after a place and route operation is performed a change to the design is required, both the design and the place and route processes are repeated from the beginning. Generally, it is desirable to avoid having to repeat the entire place and route process from the beginning because it can be very time consuming, both in man hours and system time.
  • user-entered design information consists of functional descriptions written in typically either Verilog or VHDL, and accompanying implementation scripts which document side information, such as timing constraints and design-tool specific commands (e.g., effort levels, mapping strategies, library selection, etc.). Therefore, when using synthesis, a user is not working with the primitives that eventually undergo placement and routing. Instead, a user is working in a high-level language which is translated to low-level primitives by a synthesizer. The low-level implementation of a design is not under the direct control of the user and contains nets and architectural primitives which cannot be easily related back to the original high-level description.
  • the typical synthesis design flow comprises initially creating a language-based functional design and imposing timing constraints on the design. Then, this high-level design is synthesized into architectural primitives and a netlist is generated (and possibly feed-forward timing information). Next, physical implementation occurs in the FPGA-specific design system based on the netlist. Following the physical implementation, back-annotation of the actual performance of the resulting implementation occurs. Thereafter, if necessary, an iteration of the mapping/implementation cycle may be performed to ensure that all the user-specified timing constraints are satisfied.
  • the low-level netlist may be created with completely different instance names and net names, even when the "old" and "new" netlists are substantially the same from a functional point of view. In other words, even though the new design is functionally quite similar to the old design, the low-level netlists generated from both are radically different in terms of net names and instance names. Thus, the low-level netlists cannot easily be related to the original high-level design.
  • the present invention provides for using a netlist comparison as part of an incremental design process.
  • the results of the netlist comparison is actively used to control the implementation process, as opposed to solely providing a form of verification.
  • a method for performing circuit design includes comparing a first netlist corresponding to a first implementation with a second netlist to determine common circuit structures (e.g., nets, instances, etc.).
  • the present invention also includes creating a second physical implementation constrained to include a portion of the first implementation associated with the common circuit structures.
  • the present invention performs the netlist comparison process using signature analysis and topological information, such as, for instance, component type, pin type and connectivity.
  • signature analysis incorporates robustness in the presence of differences, allows for fast comparison, and results in an algorithm that has a roughly linear relationship between circuit complexity and computing time requirement.
  • signature analysis the present invention is easy to tune or adapt for specific circumstances (e.g., design verification versus incremental design).
  • signature analysis is used in one embodiment, other techniques may be used for comparing netlists.
  • FIG. 1 is a flow chart of one embodiment of the circuit design process of the present invention.
  • FIG. 2 is a flow chart of one embodiment of the netlist comparison process of the present invention.
  • FIGS. 3 and 4 illustrate two versions of circuit designs representing an initial circuit design and a subsequent circuit design.
  • a method and apparatus for configuring a circuit design in a programmable integrated circuit (IC) device is described.
  • IC programmable integrated circuit
  • the present invention also relates to apparatus for performing the operations herein.
  • This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer.
  • the algorithms and displays presented herein are not inherently related to any particular computer or other apparatus.
  • Various general purpose machines may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these machines will appear from the description below.
  • the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
  • the present invention provides a process for designing a circuit by comparing new and old topologies created in a synthesis environment and preserving as much of the layout, placement and the routing of the old topology as possible when implementing the new topology.
  • the process of the present invention includes performing a comparison between two separate topologies. The comparison is performed by comparing the low-level netlist of the older topology with the low-level netlist of the new topology. The results of the comparison include an identification of those portions of the old and new topology that are the same (i.e., that match).
  • the comparison process of the present invention does not rely on similarities of names of nets or instances in the netlists being compared. Even without the use of a common naming convention in the two netlists, the present invention determines the differences between the two netlists so as to be able to extract as much of the topological similarity as possible between the two.
  • the present invention is able to obtain information from the physical implementation of the old design for use in implementing the new design.
  • the "match" information derived from the comparison process is used to generate constraints to control, or guide, the implementation process for the new topology.
  • the extracted similarities may be used to guide the partitioning, placement or routing as desired. This eases integration of the guide system into an existing tool and also permits the user to perform additional floor-planning prior to implementation.
  • the present invention provides a technique which matches similar topologies or functionalities between two designs without regard to net and instance names, and uses the matching information to generate constraints for placement and routing tools. In this manner, the common portion the newer designs does not have to undergo placement and routing stage because the placement and routing performed for the older design may be used.
  • FIG. 1 illustrates one embodiment of the circuit design process of the present invention.
  • the process depicted in FIG. 1 is a logic synthesis process that may be performed in hardware, software, or a combination of both.
  • the present invention may be performed on a computer controlled circuit design system, such as are currently available.
  • software implementing all or a portion of the present invention when running in a system may be stored on disk (e.g., portable floppy disk).
  • a designer creates a first text description of a circuit design (processing block 101).
  • the first text description is in Verilog, VHDL, or another high-level language.
  • processing logic synthesizes the first text description to obtain a first netlist that is associated with a first schematic representation of the circuit (processing logic 102).
  • processing logic simulates a first physical implementation of the circuit on a programmable logic device, such as a field programmable gate array (processing block 103). Note that the reference to "first" corresponds to any older topology. The simulation allows the logic and timing performance of the circuit to be observed.
  • the designer or processing logic alters the first text description, thereby creating a second text description of the circuit design (processing block 104).
  • the alteration may be performed to improve the logic and/or timing performance of the circuit (e.g., bring the performance of the circuit into predefined limits or requirements). This may not be required in all implementations, but is typically included in any incremental design process.
  • processing logic synthesizes it to obtain a second netlist associated with a second schematic representation of the circuit (processing block 105).
  • Processing logic compares the first netlist to the second netlist to determine topological similarities between the first and second schematic representations (processing logic 106).
  • the comparison process of the present invention is described in further detail below.
  • processing logic creates a second physical implementation of the circuit design on a programmable logic device which includes that portion of the first physical implementation having topological similarity to the second schematic representation of the circuit (processing logic 107).
  • the generation of constraints for implementation of the circuit design is also described in more detail below.
  • the present invention performs the netlist comparison process using signature analysis and topological information, such as, for instance, component type, pin type and connectivity.
  • signature analysis incorporates robustness in the presence of differences, allows for fast comparison, and results in an algorithm that has a roughly linear relationship between circuit complexity and computing time requirement.
  • signature analysis the present invention is easy to tune or adapt for specific circumstances (e.g., design verification versus incremental design).
  • signature analysis is used in one embodiment, other techniques may be used for comparing netlists.
  • the present invention does not require any starting information such as correspondence points between the two netlists. If application-specific information about netlist correspondence is available, it may be used if desired. For instance, application-specific information such as the top-level port names of synthesized designs are generally user-assigned and thus, stable during incremental design.
  • FIG. 2 is a flow chart of one embodiment of the comparison process of the present invention.
  • the process begins with computing signatures for each net and instance in the two netlists being compared (processing block 201).
  • signatures are initially assigned, as opposed to computed, to nets and instances in the netlists.
  • the signatures of the present invention are derived based on topological information (e.g., component type, pin type, connectivity, etc.), such that components which are identically connected or nets which have identical topology from each of the two netlists have the same signature and those components which are not the same have different signatures.
  • topological information e.g., component type, pin type, connectivity, etc.
  • the signatures for all components are based, initially, only on their component type, with all components (instances) of the same type having the same signature. Similarly, all nets are assigned the same signature initially.
  • processing logic identifies matching signatures in the netlists (processing block 202).
  • two (or more) signatures are considered "matching" when they are identical.
  • signatures may be considered matching when a predetermined portion of each signature matches a corresponding portion of another signature.
  • a record is maintained in system memory of the pairs of circuit structures that have matching signatures.
  • the present invention identifies unique signatures of components in each of the two lists by inserting the components into a hash table.
  • the hash table represents an array with the signature as the index into the array.
  • the signatures are used to put the nets and instances into a hash table. If two signatures match, their nets or instances fall into the same hash table entry. Based on this fact, matches may be determined.
  • a match in a hash table entry for the purposes of identifying common structures in the netlists occurs when there is only one particular signature from the first netlist that matches only one signature from the second netlist. If ambiguity exists in the determination of whether a particular net or instance matches another net or instance, more than one component or net hashes to a hash table entry. If more than one signature in the first netlist matches one or more signatures in the second netlist, then more hashing is required to determine a unique match in subsequent passes. As matches are made, ambiguous hash table entries are less then more hashing is required to determine a unique match in subsequent passes.
  • ambiguous hash table entries "spread out" (components which were formerly congregated at the same hash table entries are now dispersed to many other hash table entries), and more matches are made. If differences exist, items in one list will fall into the hash table locations without corresponding entries from the other list.
  • all nets are hashed and subsequently a determination is made as to whether any matches exist. It is only then that all the instances are hashed and corresponding matches are again searched. In this manner, all matches that exist between the two netlists may be identified. Note that the use of hash tables is well-known in the art.
  • processing logic tests whether there are remaining unmatched signatures in the two lists (processing logic 203). If not, then processing logic ends processing. If so, processing logic removes the matching nets and instances of the two netlists (processing block 204) and recomputes the signatures of the remaining nets and instances in the two lists (processing block 205).
  • processing logic recomputes the signatures according to the following equations:
  • processing continues at processing block 202.
  • the process of the present invention is iterative and may include numerous passes, during which time, the signatures evolve. The process iterates until no more matches can be found.
  • modifications to the signatures can be made when no unique signatures match between the two lists.
  • the information used to generate the signatures may be changed when recomputing the signatures.
  • the procedure for changing the computation of signatures includes resetting unmatched net and component hash values and attempting one of a number of strategies.
  • pin type input vs. output, clock vs. data, etc.
  • matches may occur around pins that are, for example, transposed.
  • matches of wires may occur where assignment of component type has changed, yet the connections remain the same.
  • the processes of the present invention may use user-assigned port names to disambiguate connections to the outside world. For example, while all the bits of a memory are interchangeable, an attentive user might be disconcerted to find the ordering of bits in a data bus changing on successive design iterations. If the design has an internal structure that cannot be disambiguated, an arbitrary binding may be made.
  • design0 and design1 One implementation of the comparison process of the present invention is illustrated in pseudocode below.
  • the routine compares two designs, referred to as design0 and design1:
  • FIGS. 3 and 4 illustrate schematics of two circuit designs, the first design (tst1) representing an older design and the second design (tst2) representing a newer design.
  • the following discussion sets forth the comparison between the first and second designs using the comparison process of the present invention.
  • the netlist for the first design is stored and saved to a file.
  • the netlist for the second design is then read in to the system and compared to the saved version of the first design.
  • the results of the comparison process are set forth in more detail below.
  • the signatures are shown as 8-digit hex numbers.
  • the signatures include all the information (component type, pin type, connectivity), and the hashing uses a full matching strategy.
  • the signatures created are illustrated below:
  • the ignore -- nets strategy is again used. However, ignoring unmatched nets does not yield any more matches, so signature generation reverts to original strategy after this pass. Note that in an alternative embodiment, the signature generation may have continued with the use of a previously unused strategy instead of returning to the original full -- match strategy.
  • the results of the sixth pass are no more matches due to circuit differences.
  • the ignore -- nets strategy is used. However, ignoring nets does not help this time, so the next pass will use a different strategy.
  • the strategy is changed to ignore -- instances. This does not result in any matches.
  • the ignore -- inputs strategy is used with the following results:
  • constraints are generated to control the implementation of the circuit from the second netlist. That is, in the present invention, if structures in the first and second netlists match, the physical implementation of that structure associated with the first netlist is used as the physical implementation of the matching structure in the physical implementation of the second netlist.
  • the possible constraints that may be generated are dependent on the design tool being used and relate to how a subsequent netlist is physically implemented. These constraints may include partitioning, routing and placement constraints.
  • the placement information for the earlier design is read out of storage (e.g., a database) and attributes of that design associated with the matching structure are copied into the stored implementation detail of the later design.
  • the matching structure has the same attributes.
  • the attributes that are copied may include, but are not limited to, specifications of nets as being low skew, specification of elements that are to be implemented in dose proximity to a pad, etc.
  • the matching information may be used to guide mappings to ensure that logic is mapped into the same configurable logic block (CLB) of the newer design.
  • CLB configurable logic block
  • the present invention is used twice in a guided design run. Initially, where the netlist comes from a synthesizer, matching information is used to control a partition phase. Partitioning is a process used during the implementation of designs for some field programmable gate arrays (EPGAs), whereby the logic elements in the original netlist are grouped together and assigned to specific logic processing blocks of the FPGA. In such a case, the partition of a new design would be based on the partitioning used in the earlier design. Once that has been completed, the partitioned netlist associated with the older design is compared with the partitioned netlist of the new design to control the placement of the partitioned function generators to the same locations.
  • EPGAs field programmable gate arrays
  • the present invention performs a comparison to two nameless netlists and constrains the implementation of the later netlist based on the matching structures identified between the two.

Abstract

An incremental circuit design methodology using logic synthesis where comparisons are made between netlists corresponding to two separate versions of a design to determine similarities between the two. The similarities are then used to ensure the same physical implementation for the unchanged portion of the design. Therefore, information from the physical implementation of the previous design may be used in implementing the later design.

Description

FIELD OF THE INVENTION
The present invention relates to the field of circuit design, such as in programmable integrated circuit devices that are configurable to implement designs; more particularly, the present invention relates to comparing netlists generated in different implementation cycles and constraining the implementation of a later design based on similarities between the two netlists determined as a result of the comparison process.
BACKGROUND OF THE INVENTION
The term "net" as used herein refers to a conductive region connecting components of a user's circuit design. For example, one net may connect the output terminal of an AND gate to the input terminal of another AND gate and to the input terminal of a flip flop. An AND gate is one component type. A flip flop is another component type. An "instance" is a single occurrence of a component type. A "netlist" is a list of all the nets which connect the component instances of a user's design and the component instances connected by each net.
Field programmable gate arrays (FPGAs) may be programmed to implement one of many different integrated circuit (IC) designs. Typically, these designs are provided by a customer in the form of design and timing constraints. Using the design and timing constraints, code is created that, when run, controls the programming of the FPGA.
During this process, a place and route operation is performed to configure an FPGA to a circuit that implements the customer design. If it is determined that after a place and route operation is performed a change to the design is required, both the design and the place and route processes are repeated from the beginning. Generally, it is desirable to avoid having to repeat the entire place and route process from the beginning because it can be very time consuming, both in man hours and system time.
One solution to avoid repeating the entire place and route process is to only re-implement the parts of the design that changed from the previous place and route cycle. Although this may be fairly straight forward when using schematics (because changes to a schematic cause very little change in a netlist), it is more difficult when the design has been generated through the use of logic synthesis and high-level languages.
In synthesis, user-entered design information consists of functional descriptions written in typically either Verilog or VHDL, and accompanying implementation scripts which document side information, such as timing constraints and design-tool specific commands (e.g., effort levels, mapping strategies, library selection, etc.). Therefore, when using synthesis, a user is not working with the primitives that eventually undergo placement and routing. Instead, a user is working in a high-level language which is translated to low-level primitives by a synthesizer. The low-level implementation of a design is not under the direct control of the user and contains nets and architectural primitives which cannot be easily related back to the original high-level description.
The typical synthesis design flow comprises initially creating a language-based functional design and imposing timing constraints on the design. Then, this high-level design is synthesized into architectural primitives and a netlist is generated (and possibly feed-forward timing information). Next, physical implementation occurs in the FPGA-specific design system based on the netlist. Following the physical implementation, back-annotation of the actual performance of the resulting implementation occurs. Thereafter, if necessary, an iteration of the mapping/implementation cycle may be performed to ensure that all the user-specified timing constraints are satisfied.
When portions of a design are to be changed, either as a result of a design change or to improve performance, the user in logic synthesis is only able to make changes to the high-level language description that produces the new design. When the changed high-level language description is resynthesised, the low-level netlist may be created with completely different instance names and net names, even when the "old" and "new" netlists are substantially the same from a functional point of view. In other words, even though the new design is functionally quite similar to the old design, the low-level netlists generated from both are radically different in terms of net names and instance names. Thus, the low-level netlists cannot easily be related to the original high-level design. Such a correspondence between the new and old topologies would be desirable in the synthesis environment in order to try to preserve as much of the layout, placement and routing as possible. This would permit an incremental design change to be made without changes to the implementation of unaffected areas. This would typically result in a faster physical implementation time.
Several authors have described methods for comparing netlists, a variant of a more general problem known as "graph isomorphism". Rick Spickelmier ("WOMBAT: A New Netlist Comparison Program", Rick L. Spickelmier and A. Richard Newton, IEEE International Conference on Computer Aided Designer, 1983, pp. 170-171) and Carl Ebeling ("Validating VLSI Circuit Layout by Wirelist Comparison", Carl Ebeling and Ofer Zajicek, IEEE International Conference on Computer Aided Design, 1983, pp. 172-173) both describe programs for determining whether or not integrated circuit (IC) layouts match their schematics by using a netlist verification process. When performing this determination, netlists were generated corresponding to the actual IC layout and corresponding to its schematic. The net and instance names of both netlists did not correspond to each other. After performing the comparison process, a determination of whether the IC matched the schematic resulted. Today, several commercial products are available for performing layout to schematic comparison.
The present invention provides for using a netlist comparison as part of an incremental design process. The results of the netlist comparison is actively used to control the implementation process, as opposed to solely providing a form of verification.
SUMMARY OF THE INVENTION
A method for performing circuit design is described. The present invention includes comparing a first netlist corresponding to a first implementation with a second netlist to determine common circuit structures (e.g., nets, instances, etc.). The present invention also includes creating a second physical implementation constrained to include a portion of the first implementation associated with the common circuit structures.
The present invention performs the netlist comparison process using signature analysis and topological information, such as, for instance, component type, pin type and connectivity. The use of signature analysis incorporates robustness in the presence of differences, allows for fast comparison, and results in an algorithm that has a roughly linear relationship between circuit complexity and computing time requirement. Furthermore, using signature analysis, the present invention is easy to tune or adapt for specific circumstances (e.g., design verification versus incremental design). Although signature analysis is used in one embodiment, other techniques may be used for comparing netlists.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention will be understood more fully from the detailed description given below and from the accompanying drawings of various embodiments of the invention, which, however, should not be taken to limit the invention to the specific embodiments, but are for explanation and understanding only.
FIG. 1 is a flow chart of one embodiment of the circuit design process of the present invention.
FIG. 2 is a flow chart of one embodiment of the netlist comparison process of the present invention.
FIGS. 3 and 4 illustrate two versions of circuit designs representing an initial circuit design and a subsequent circuit design.
DETAILED DESCRIPTION OF THE PRESENT INVENTION
A method and apparatus for configuring a circuit design in a programmable integrated circuit (IC) device is described. In order to provide a thorough understanding of the present invention, specific details are set forth, such as instance and net names, signature types and definitions, etc. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.
Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing terms such as "processing" or "computing" or "calculating" or "determining" or "displaying" or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present invention also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose machines may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these machines will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
Overview of the Present Invention
The present invention provides a process for designing a circuit by comparing new and old topologies created in a synthesis environment and preserving as much of the layout, placement and the routing of the old topology as possible when implementing the new topology. The process of the present invention includes performing a comparison between two separate topologies. The comparison is performed by comparing the low-level netlist of the older topology with the low-level netlist of the new topology. The results of the comparison include an identification of those portions of the old and new topology that are the same (i.e., that match). However, the comparison process of the present invention does not rely on similarities of names of nets or instances in the netlists being compared. Even without the use of a common naming convention in the two netlists, the present invention determines the differences between the two netlists so as to be able to extract as much of the topological similarity as possible between the two.
By determining topological similarities between the old design and the new design, the present invention is able to obtain information from the physical implementation of the old design for use in implementing the new design. The "match" information derived from the comparison process is used to generate constraints to control, or guide, the implementation process for the new topology. The extracted similarities may be used to guide the partitioning, placement or routing as desired. This eases integration of the guide system into an existing tool and also permits the user to perform additional floor-planning prior to implementation.
Thus, the present invention provides a technique which matches similar topologies or functionalities between two designs without regard to net and instance names, and uses the matching information to generate constraints for placement and routing tools. In this manner, the common portion the newer designs does not have to undergo placement and routing stage because the placement and routing performed for the older design may be used.
FIG. 1 illustrates one embodiment of the circuit design process of the present invention. The process depicted in FIG. 1 is a logic synthesis process that may be performed in hardware, software, or a combination of both. For instance, the present invention may be performed on a computer controlled circuit design system, such as are currently available. Also, software implementing all or a portion of the present invention (when running in a system) may be stored on disk (e.g., portable floppy disk).
Referring to FIG. 1, a designer creates a first text description of a circuit design (processing block 101). The first text description is in Verilog, VHDL, or another high-level language. Next, processing logic synthesizes the first text description to obtain a first netlist that is associated with a first schematic representation of the circuit (processing logic 102). Then processing logic simulates a first physical implementation of the circuit on a programmable logic device, such as a field programmable gate array (processing block 103). Note that the reference to "first" corresponds to any older topology. The simulation allows the logic and timing performance of the circuit to be observed.
Based on the performance observations, the designer or processing logic alters the first text description, thereby creating a second text description of the circuit design (processing block 104). The alteration may be performed to improve the logic and/or timing performance of the circuit (e.g., bring the performance of the circuit into predefined limits or requirements). This may not be required in all implementations, but is typically included in any incremental design process.
Once the second text description is created, processing logic synthesizes it to obtain a second netlist associated with a second schematic representation of the circuit (processing block 105).
Processing logic compares the first netlist to the second netlist to determine topological similarities between the first and second schematic representations (processing logic 106). The comparison process of the present invention is described in further detail below.
Once similarities has been identified, processing logic creates a second physical implementation of the circuit design on a programmable logic device which includes that portion of the first physical implementation having topological similarity to the second schematic representation of the circuit (processing logic 107). The generation of constraints for implementation of the circuit design is also described in more detail below.
Netlist Comparison by Signature Analysis
The present invention performs the netlist comparison process using signature analysis and topological information, such as, for instance, component type, pin type and connectivity. The use of signature analysis incorporates robustness in the presence of differences, allows for fast comparison, and results in an algorithm that has a roughly linear relationship between circuit complexity and computing time requirement. Furthermore, using signature analysis, the present invention is easy to tune or adapt for specific circumstances (e.g., design verification versus incremental design). Although signature analysis is used in one embodiment, other techniques may be used for comparing netlists.
Note that the present invention does not require any starting information such as correspondence points between the two netlists. If application-specific information about netlist correspondence is available, it may be used if desired. For instance, application-specific information such as the top-level port names of synthesized designs are generally user-assigned and thus, stable during incremental design.
FIG. 2 is a flow chart of one embodiment of the comparison process of the present invention. Referring to FIG. 2, the process begins with computing signatures for each net and instance in the two netlists being compared (processing block 201). In one embodiment, signatures are initially assigned, as opposed to computed, to nets and instances in the netlists. The signatures of the present invention are derived based on topological information (e.g., component type, pin type, connectivity, etc.), such that components which are identically connected or nets which have identical topology from each of the two netlists have the same signature and those components which are not the same have different signatures.
In one embodiment, the signatures for all components are based, initially, only on their component type, with all components (instances) of the same type having the same signature. Similarly, all nets are assigned the same signature initially. Each signature may comprise a random number. In this embodiment, each instance of the same type is assigned the same random number (SI0 (inst)=f(type)), and all nets are initially assigned a signature of 1 (SN0 (net)=1). Note that in one embodiment, processing logic assigns each pin type an associated random number, f(pin), as its signature.
Once signatures have been computed for, or assigned to, all nets and instances in the two netlists, processing logic identifies matching signatures in the netlists (processing block 202). In one embodiment, two (or more) signatures are considered "matching" when they are identical. In alternate embodiments, signatures may be considered matching when a predetermined portion of each signature matches a corresponding portion of another signature. A record is maintained in system memory of the pairs of circuit structures that have matching signatures.
In one embodiment, the present invention identifies unique signatures of components in each of the two lists by inserting the components into a hash table. Conceptually, the hash table represents an array with the signature as the index into the array. Thus, the signatures are used to put the nets and instances into a hash table. If two signatures match, their nets or instances fall into the same hash table entry. Based on this fact, matches may be determined.
A match in a hash table entry for the purposes of identifying common structures in the netlists occurs when there is only one particular signature from the first netlist that matches only one signature from the second netlist. If ambiguity exists in the determination of whether a particular net or instance matches another net or instance, more than one component or net hashes to a hash table entry. If more than one signature in the first netlist matches one or more signatures in the second netlist, then more hashing is required to determine a unique match in subsequent passes. As matches are made, ambiguous hash table entries are less then more hashing is required to determine a unique match in subsequent passes. As matches are made, ambiguous hash table entries "spread out" (components which were formerly congregated at the same hash table entries are now dispersed to many other hash table entries), and more matches are made. If differences exist, items in one list will fall into the hash table locations without corresponding entries from the other list.
In one embodiment of the present invention, all nets are hashed and subsequently a determination is made as to whether any matches exist. It is only then that all the instances are hashed and corresponding matches are again searched. In this manner, all matches that exist between the two netlists may be identified. Note that the use of hash tables is well-known in the art.
Once all of the matches have been identified, processing logic tests whether there are remaining unmatched signatures in the two lists (processing logic 203). If not, then processing logic ends processing. If so, processing logic removes the matching nets and instances of the two netlists (processing block 204) and recomputes the signatures of the remaining nets and instances in the two lists (processing block 205).
In one embodiment, on successive passes, processing logic recomputes the signatures according to the following equations:
SI.sub.n+1 (instance)=SI.sub.n (instance)+sum over all instance's pins (f(type)*f(pin)*SN.sub.n (pin's net))
SN.sub.n+1 (net)=SN.sub.n (net)+sum over all net's pins (f(pin)*SI.sub.n+1 (pin's instance)).
Once signatures have been recomputed, processing continues at processing block 202.
The process of the present invention is iterative and may include numerous passes, during which time, the signatures evolve. The process iterates until no more matches can be found.
In one embodiment, modifications to the signatures can be made when no unique signatures match between the two lists. For instance, the information used to generate the signatures may be changed when recomputing the signatures.
The procedure for changing the computation of signatures includes resetting unmatched net and component hash values and attempting one of a number of strategies. For instance, the signature definitions may ignore unmatched instances when hashing nets, ignore unmatched nets when hashing instances, ignore input pins, ignore pin types (e.g., f(pin)=1), and/or ignore component types (e.g., f(type)=1). By ignoring pin type (input vs. output, clock vs. data, etc.) matches may occur around pins that are, for example, transposed. By ignoring component type, matches of wires may occur where assignment of component type has changed, yet the connections remain the same.
The processes of the present invention may use user-assigned port names to disambiguate connections to the outside world. For example, while all the bits of a memory are interchangeable, an attentive user might be disconcerted to find the ordering of bits in a data bus changing on successive design iterations. If the design has an internal structure that cannot be disambiguated, an arbitrary binding may be made.
An Exemplary Comparison Process
One implementation of the comparison process of the present invention is illustrated in pseudocode below. The routine compares two designs, referred to as design0 and design1:
__________________________________________________________________________
  /* Top-level Routine to Compare Two Designs
Implements a state machine controlling matching strategies based on the
outcome of successive passes. Strategies (in order of application) are:
FULL.sub.-- MATCH strictest hashing - use all information
IGNORE.sub.-- UNMATCHED.sub.-- NETS
                  don't hash pins attached to unmatched nets
IGNORE.sub.-- UNMATCHED.sub.-- INSTANCES
                  don't hash pins attached to unmatched insts
IGNORE.sub.-- INPUTS
                  don't hash any input pins
MATCH.sub.-- ARBITRARY
                  perform full hash, but match IO instances by
                  port name, or force matching of instances
                  which are still ambiguous
*/
netlist.sub.-- compare ( design0 , design1 ) {
 last.sub.-- strategy = strategy = FULL.sub.-- MATCH
 init.sub.-- flag = 1 /* set to 1 to reset all instance, net signatures
*/
do {
 /* do a hashing pass with the indicated strategy and return
  non-zero if unable to match any components or nets
 */
 stuck = do.sub.-- pass( strategy ,design1 , init.sub.-- flag )
 init.sub.-- flag = 0
 switch( strategy ) {
  case FULL.sub.-- MATCH /* basic strategy - stick with this until
process gets stuck */
   if( stuck ) {
    strategy = IGNORE.sub.-- UNMATCHED.sub.-- NETS
    init.sub.-- flag = 1
    stuck = 0
   }
  /* on all the following strategies, stick with them until they produce
no
   more matches. If they worked at least once, fall back to `FULL.sub.--
MATCH`,
   otherwise advance to the next (increasingly desperate) strategy.
  */
  case IGNORE.sub.-- UNMATCHED.sub.-- NETS
   if( stuck ) {
    if( last.sub.-- strategy == FULL.sub.-- MATCH ) {
     strategy = IGNORE.sub.-- UNMATCHED.sub.-- INSTANCES
     init.sub.-- flag = 1
    } else strategy = FULL.sub.-- MATCH
    stuck = 0
   }
   case IGNORE.sub.-- UNMATCHED.sub.-- INSTANCES
    if( stuck ) {
     if( last.sub.-- strategy == IGNORE.sub.-- UNMATCHED.sub.-- NETS ) {
      strategy = IGNORE.sub.-- INPUTS
      init.sub.-- flag = 1
     } else strategy = FULL.sub.-- MATCH
     stuck = 0
    }
   case IGNORE.sub.-- INPUTS
    if( stuck ) {
     if( last.sub.-- strategy == IGNORE.sub.-- UNMATCHED.sub.-- INSTANCES
) {
      strategy = MATCH.sub.-- ARBITRARY
      init.sub.-- flag = 1
     } else strategy = FULL.sub.-- MATCH
     stuck = 0
    }
   case state MATCH.sub.-- ARBITRARY
    strategy = FULL.sub.-- MATCH /* end of the line */
  }
  last.sub.-- strategy = strategy
 } while( |stuck )
 /* Done matching - now constraints may be issued on matched
    nets and instances*/
 return
/* Perform a single pass (re-hash -> hash cable entry -> matching)
  and return non-zero if unable to find any matches */
do.sub.-- pass ( strategy , design0 , design1 , init.sub.-- flag ) {
`/* change hash values to prevent possible collisions in hash
  table from blocking progress on successive passes. The
  argument `init.sub.-- flag` controls whether or not to reset the
  hash values for unmatched nets, instances.
 */
 /* Pick a new random number for each type of pin
   e.g. Xilinx 4K family: A, B, C, D, E, CLK, RES etc.
    Xilinx 8K family: I0, I1, I2, ci, co etc.
*/
rekey.sub.-- all.sub.-- cell.sub.-- types(}
/* re-initialize net hash values */
for.sub.-- each.sub.-- net.sub.-- in ( design0 ) {
  if( net has a match ) {
    assign same random hash value to
    this net and its match in design1
  } else if( init.sub.-- flag ) { set net hash value to 1}
}
for.sub.-- each.sub.-- net.sub.-- in ( design1 )
  if( init.sub.-- flag && net has no match ) { set net hash value to 1 }
}
/* re-initialize instance hash values */
for.sub.-- each.sub.-- instance.sub.-- in ( design0 ) {
   if( instance has a match ) {
    assign same random hash value to this
    instance and its match in design1
   } else if( init.sub.-- flag ) {
    set instance hash value to value selected
    previously for its cell type
   }
}
for.sub.-- each.sub.-- instance.sub.-- in ( design1 ) {
  if( init.sub.-- flag && instance has no match ) {
   set instance hash value to value selected
   previously for its cell type
  }
}
/* hash instances */
repeat for design0, design1 {
 for.sub.-- each.sub.-- instance.sub.-- in ( design) {
  if( instance has no match ) {
    for.sub.-- each.sub.-- pin.sub.-- on ( instance ) {
     if( ( strategy |= IGNORE.sub.-- INPUTS || pin->type
 is output )
      && (strategy |= IGNORE.sub.-- UNMATCHED.sub.-- NETS
|| pin->net is matched)) {
      instance->hash.sub.-- value +=
                  hash.sub.-- value (instance)
                  *hash.sub.-- value (pin->type)
                  *hash.sub.-- value (pin->net)
     }
    }
   }
  }
 }
/*hash nets */
repeat for design0, design1 {
 for.sub.-- each.sub.-- net.sub.-- in (design) {
  if(net has no match) {
   for.sub.-- each.sub.-- pin.sub.-- on ( net) {
    if( ( strategy |= IGNORE.sub.-- INPUTS || pin->type
is output )
     &&( strategy |= IGNORE.sub.-- UNMATCHED.sub.-- INSTANCES
|| pin ->instance is
matched)) {
     net->hash.sub.-- value += hash value(pin->instance) * hash.sub.--
value( pin->type )
    }
   }
  }
 }
}
/* load hash table with instances
  The hash table is a list of bins which hold two count
  values and two pointers each:
     bin->count0
     bin->val0
     bin->count1
     bin->val1
  The hash table is conceptually an array of bins indexed
  by a (32-bit) hash value. Standard hash table techniques
  are used to keep the physical number of bins equal to
  the number of non-empty entries.
*/
clear.sub.-- hash.sub.-- table.sub.-- bins()
for.sub.-- each.sub.-- instance.sub.-- in ( design0 ) {
 if( instance has no match ) {
  bin = table   hash.sub.-- value( instance ) !
  ++ bin->count0
  bin->val0 = instance
 }
}
for.sub.-- each.sub.-- instance.sub.-- in ( design1) {
 if( instance has no match ) {
  bin = table  hash.sub.-- value ( instance ) !
  ++ bin->count1
  bin->val1 instance
 }
}
matched = 0
if ( strategy == MATCH.sub.-- ARBITRARY ) {
 /* in trouble - try to match a pad by user-assigned port name */
 for.sub.-- each.sub.-- instance.sub.-- in ( design0 ) {
  if ( instance is a pad
   & & instance is unmatched
   & & instance has a user-assigned port name
   && design1 has an unmatched pad with the same port name
   && these two instances have the same functionality ) {
   cross-reference the two instances as matched
   matched += 2
  }
 }
}
if ( strategy == MATCH.sub.-- ARBITRARY && matched == 0) {
 /* in trouble - force a match between ambiguous interior instances */
 for.sub.-- all.sub.-- bins.sub.-- in.sub.-- hash.sub.-- table (
  if ( bin->count0>1
    && bin->count1>1
    && bin->val0 is an interior instance
    && bin->val0 has the same functionality as bin->val1 ) {
   cross-reference the two instances as matched
   matched += 2
  }
 }
}
/* find uniquely matched instances */
for.sub.-- all.sub.-- bins.sub.-- in.sub.-- hash.sub.-- table {
  if ( bin->count0 == 1 && bin->count1 == 1 ) {
    cross-reference the two instances as matched
    matched+=2
  }
}
/* load hash table with nets */
clear.sub.-- hash.sub.-- table.sub.-- bins()
for.sub.-- each.sub.-- net.sub.-- in (design0) {
 if(net has no match) {
   bin = table! hash.sub.-- value ( net )!
   ++ bin->count0
   bin->val0 = net
  }
}
for.sub.-- each.sub.-- net.sub.-- in ( design1 ) {
 if( net has no match ) {
   bin = table! hash.sub.-- value( net ) !
   ++ bin ->count1
   bin->val1 = net
  }
}
for.sub.-- all.sub.-- bins.sub.-- in.sub.-- hash.sub.-- table {
 if( bin->count0 == 1 && bin->count1 == 1)){
    cross-reference the two nets as matched
   matched += 2
  }
}
return( matched==0)
}
__________________________________________________________________________
An Example Netlist Comparision
FIGS. 3 and 4 illustrate schematics of two circuit designs, the first design (tst1) representing an older design and the second design (tst2) representing a newer design. The following discussion sets forth the comparison between the first and second designs using the comparison process of the present invention.
In one embodiment, the netlist for the first design is stored and saved to a file. The netlist for the second design is then read in to the system and compared to the saved version of the first design. The results of the comparison process are set forth in more detail below. In the example below, the signatures are shown as 8-digit hex numbers.
During the first full pass, the signatures include all the information (component type, pin type, connectivity), and the hashing uses a full matching strategy. The signatures created are illustrated below:
__________________________________________________________________________
tst2:          tst1:   Comments:
__________________________________________________________________________
Instances
      AA = 84f913cc
               U1 = 84f913cc
                       All NOR2 have the same signature
      BB = 84f913cc
               U2 = 84f913cc
      CC = db650220
               U3 = db650220
                       All INV1X have the same signature
      DD = db650220
      EE = db650220
      FF = db650220
               U4 = db650220
      GG = db650220
               U5 = db650220
Nets  CLK = 71559a6d
               I = 71559a6d
                       Unique signature
      D = 8c65d5a5
               A = 8c65d5a5
      E = 8c65d5a5
               B = 8c65d5a5
      F = 3fb3d5cd
               C = 3fb3d5cd
                       Unique signature
      G = 277c2d61
      H = 277c2d61
      NOT = f73cd97d
               Q = f73cd97d
      OUT = f73cd97d
               QB = f73cd97d
Match nets:
      CLK = I
Match nets:
      F = C
__________________________________________________________________________
During the second pass using the full matching (full-match) strategy with recomputed signatures, the following results occur:
__________________________________________________________________________
         tst2:    tst1:    Comments:
__________________________________________________________________________
Instances
         AA = 462a7b0e
                  U1 = 462a7b0e
                           Unique signature
         BB = ac8f17d6
                  U2 = ac8f17d6
                           Unique signature
         CC = ef4ed287
                  U3 = ef4ed287
                           Unique signature
         DD = 68424b99
         EE = 68424b99
         FF = cc55b635
                  U4 = a1da85d
                           Differences prevent match
         GG = cc55b635
                  U5 = a1da85d
                           Differences prevent match
Nets     D = 6cc71369
                  A = dbbc6041
                           Differences prevent match
         E = 526e4df1
                  B = c1639ac9
                           Differences prevent match
         G = dc381e40
         H = dc381e40
         NOT = c4f6e12c
                  Q = deaef614
                           Differences prevent match
         OUT = 841c0954
                  QB = 9dd41e3c
                           Differences prevent match
Match instances:
         AA = U1
Match instances:
         BB = U2
Match instances:
         CC = U3
__________________________________________________________________________
In this case, those instances having unique signatures are stored in system memory and removed from further comparison.
During the third pass using the full matching strategy, no matches are made because of circuit differences. Therefore, a change of signature generation strategy is made on the next pass.
During the fourth pass, the ignore-- nets strategy is used in which hash pins attached to unmatched nets are not hashed. The results of the signature comparson for the fourth pass are as follows:
__________________________________________________________________________
         tst2:    tst1:    Comments:
__________________________________________________________________________
Instances
         DD = 3a574872
         EE = 3a574872
         FF = 3a574872
                  U4 = 3a574672
                           All INV1X look the same
         GG = 3a574872
                  U5 = 3a574872
Nets     D = d507db39
                  A = d507db39
                           Unique signature
         E = a50b25db
                  B = a50b25db
                           Unique signature
         G = ae90d42b
         H = ae90d42b
         NOT = f359df49
                  Q = f355df49
                           Unique signature
         OUT = bbf38783
                  QB = bbf38783
                           Unique signature
Match net
         D = A
Match net
         E = B
Match net
         NOT = Q
Match net
         OUT = QB
__________________________________________________________________________
Note that four nets matched. Therefore, the strategy of ignoring all unmatched nets was helpful.
During the fifth pass, the ignore-- nets strategy is again used. However, ignoring unmatched nets does not yield any more matches, so signature generation reverts to original strategy after this pass. Note that in an alternative embodiment, the signature generation may have continued with the use of a previously unused strategy instead of returning to the original full-- match strategy. The results of the sixth pass are no more matches due to circuit differences.
During the seventh pass, the ignore-- nets strategy is used. However, ignoring nets does not help this time, so the next pass will use a different strategy. During the eighth pass, the strategy is changed to ignore-- instances. This does not result in any matches. During the ninth pass, the ignore-- inputs strategy is used with the following results:
______________________________________
       tst2:     tst1:      Comments:
______________________________________
Instances
         DD = 8c8a92b0
         EE = 8c8a92b0
         FF = aa500670
                     U4 = aa500670
                                Unique signature
         GG = ed6679f0
                     U5 = ed667910
                                Unique signature
Nets     G = f76fc841
         H = f76fc841
Match instance
         FF = U4
Match instance
         GG = U5
______________________________________
As shown, two instances matched.
At this point, the matching process in complete--all nets and instances with possible matches have been matched. The added nets and instances in the second design (tst2) cannot be matched against anything. The net compare process reports the results and then generates placement constraints for the new design. The user can proceed directly to placement, or modify these constraints as desired. The following table summaries the constraints for the second design based on topological similarities to the first design. (CLCs refers to configurable logic cells.)
______________________________________
         Nets   CLCs      Pads    Misc
______________________________________
design     8        7         0     0
guide      6        5         0     0
correlation
           6 (85%)  5 (83%)   0     0
______________________________________
The following illustrate five guide constraints which constrain and provide attributes to the second design (tst2) information from the first design (tst1):
______________________________________
Issue constraint: constrain -quiet -instance 'AA' x14y.sup.3
Issue constraint: constrain -quiet -instance 'BB' x16y.sup.4
Issue constraint: constrain -quiet -instance 'CC' x14y.sup.4
Issue constraint: constrain -quiet -instance 'FF' x16y.sup.3
Issue constraint: constrain -quiet -instance 'GG' x13y.sup.3
______________________________________
The Implementation Process
Once all of the matching instances and nets between the old and new design have been identified, constraints are generated to control the implementation of the circuit from the second netlist. That is, in the present invention, if structures in the first and second netlists match, the physical implementation of that structure associated with the first netlist is used as the physical implementation of the matching structure in the physical implementation of the second netlist. The possible constraints that may be generated are dependent on the design tool being used and relate to how a subsequent netlist is physically implemented. These constraints may include partitioning, routing and placement constraints.
In one embodiment, in response to a match, the placement information for the earlier design is read out of storage (e.g., a database) and attributes of that design associated with the matching structure are copied into the stored implementation detail of the later design. In this manner, the matching structure has the same attributes. The attributes that are copied may include, but are not limited to, specifications of nets as being low skew, specification of elements that are to be implemented in dose proximity to a pad, etc.
The matching information may be used to guide mappings to ensure that logic is mapped into the same configurable logic block (CLB) of the newer design.
In one embodiment, the present invention is used twice in a guided design run. Initially, where the netlist comes from a synthesizer, matching information is used to control a partition phase. Partitioning is a process used during the implementation of designs for some field programmable gate arrays (EPGAs), whereby the logic elements in the original netlist are grouped together and assigned to specific logic processing blocks of the FPGA. In such a case, the partition of a new design would be based on the partitioning used in the earlier design. Once that has been completed, the partitioned netlist associated with the older design is compared with the partitioned netlist of the new design to control the placement of the partitioned function generators to the same locations.
In summary, the present invention performs a comparison to two nameless netlists and constrains the implementation of the later netlist based on the matching structures identified between the two.
Whereas many alterations and modifications of the present invention will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that the various embodiments shown and described by way of illustration are in no way to be considered limiting. Therefore, reference to the details of the various embodiments are not intended to limit the scope of the claims which themselves recite only those features regarded as essential to the invention.

Claims (36)

I claim:
1. A method for performing circuit design comprising the steps of:
comparing a first technology-dependent netlist corresponding to a first implementation to a second technology-dependent netlist to determine routing structures common to both netlists; and
creating a second implementation constrained to include a portion of the first implementation associated with the common routing structures.
2. The method defined in claim 1 further comprising the steps of:
synthesizing a first text description of a circuit design to obtain the first technology-dependent netlist;
simulating the first implementation of the circuit design;
altering the first text description to obtain a second text description; and
synthesizing a second text description of the circuit design to obtain the second technology-dependent netlist.
3. The method defined in claim 2 wherein the step of simulating comprises simulating the first implementation of the circuit design on a programmable logic device.
4. The method defined in claim 1 wherein the step of creating comprises generating constraints to control the second implementation.
5. The method defined in claim 4 wherein the step of generating constraints comprises copying attributes of the first implementation for use in the second implementation.
6. The method defined in claim 1 wherein the step of comparing comprises comparing nets and instances in the first technology-dependent netlist to nets and instances in the second technology-dependent netlist.
7. The method defined in claim 6 wherein nets and instances in the first technology-dependent netlist and nets and instances in the second technology-dependent netlist are compared using signature analysis.
8. The method defined in claim 1 further comprising the step of assigning signatures for nets and instances in the first technology-dependent netlist and for nets and instances in the second technology-dependent netlist, and further wherein the step of comparing includes comparing signatures assigned for the first technology-dependent netlist to signatures assigned for the second technology-dependent netlist.
9. The method defined in claim 8 further comprising the step of placing nets and instances for the first technology-dependent netlist and the second technology-dependent netlist in a hash table and determining matches between the first and second technology-dependent netlist based on nets and instances of the first technology-dependent netlist and nets and instances of the second technology-dependent netlist resulting in a same hash table entry.
10. A method for performing circuit design comprising the steps of:
generating a first technology-dependent netlist corresponding to a first implementation and a second technology-dependent netlist through logic synthesis;
comparing the first technology-dependent netlist to the second technology-dependent netlist to determine common routing structures; and
creating a second implementation constrained to include a portion of the first implementation associated with the common routing structures.
11. The method defined in claim 10 further comprising the steps of:
synthesizing a first text description of a circuit design to obtain the first technology-dependent netlist;
simulating the first implementation of the circuit design;
altering the first text description to obtain a second text description; and
synthesizing a second text description of the circuit design to obtain the second technology-dependent netlist.
12. The method defined in claim 10 wherein the step of creating comprises generating constraints to control the second implementation.
13. The method defined in claim 10 further comprising the step of computing signatures for nets and instances in the first technology-dependent netlist and for nets and instances in the second technology-dependent netlist, and further wherein the step of comparing includes comparing signatures computed for the first technology-dependent netlist to signatures computed for the second technology-dependent netlist.
14. The method defined in claim 13 further comprising the step of placing nets and instances for the first technology-dependent netlist and the second technology-dependent netlist in a hash table and determining matches and differences between the first and second technology-dependent netlist based on nets and instances of the first technology-dependent netlist and nets and instances of the second technology-dependent netlist resulting in a same hash table entry and different hash table entries respectively.
15. The method defined in claim 14 further comprising the step of recomputing signatures on successive passes.
16. The method defined in claim 15 further comprising the step of modifying signatures by ignoring unmatched instances when hashing nets.
17. The method defined in claim 15 further comprising the step of modifying signatures by ignoring unmatched nets when hashing instances.
18. The method defined in claim 15 further comprising the step of modifying signatures by ignoring input pins.
19. The method defined in claim 15 further comprising the step of modifying signatures by ignoring pin types.
20. The method defined in claim 15 further comprising the step of modifying signatures by ignoring component types.
21. The method defined in claim 13 further comprising the step of initially assigning all nets an identical signature and all instances of the same type identical signatures.
22. The method defined in claim 13 further comprising the step of recomputing signatures on successive passes to include all pins of the nets and instances.
23. The method defined in claim 12 wherein the step of generating constraints comprises copying attributes of the first implementation for use in the second implementation.
24. An apparatus that performs circuit design, said apparatus comprising:
means for comparing a first technology-dependent netlist corresponding to a first implementation to a second technology-dependent netlist to determine one or more common routing structures, wherein the first technology-dependent netlist and the second technology-dependent netlist are derived as a result of logic synthesis; and
means for generating a second implementation constrained to include a portion of the first implementation associated with the one or more common routing structures.
25. The apparatus defined in claim 24 further comprising a placement and routing means to implement the second implementation on a programmable logic device.
26. The apparatus defined in claim 24 further comprising means for computing signatures for nets and instances in the first technology-dependent netlist and nets and instances in the second technology-dependent netlist, wherein means for comparing determines said one or more common structures based on the signatures computed.
27. The apparatus defined in claim 26 wherein the means for comparing comprises a hash table, wherein the means for comparing uses the signatures to put nets and instances into the hash table, and further wherein identical signatures fall into the same hash table entry while different signatures from the first technology-dependent netlist are stored into hash table entries without corresponding entries in the second technology-dependent netlist.
28. The apparatus defined in claim 26 further comprising means for recomputing the signatures on successive passes.
29. The apparatus defined in claim 28 wherein the means for recomputing modifies signatures when no further matches are made during comparison.
30. The apparatus defined in claim 29 wherein the means for recomputing modifies signatures by ignoring unmatched instances when hashing nets.
31. The apparatus defined in claim 29 wherein the means for recomputing modifies signatures by ignoring unmatched nets when hashing instances.
32. The apparatus defined in claim 29 wherein the means for recomputing modifies signatures by ignoring input pins.
33. The apparatus defined in claim 29 wherein the means for recomputing modifies signatures by ignoring pin types.
34. The apparatus defined in claim 29 wherein the means for recomputing modifies signatures by ignoring component types.
35. The apparatus defined in claim 29 wherein the means for generating a second implementation comprises means for copying attributes of the first implementation for use in the second implementation.
36. A method for performing circuit design comprising the steps of:
comparing a first technology-dependent netlist corresponding to a first placement of component instances to a second technology-dependent netlist to determine component instances common to both netlists; and
creating a second placement of component instances constrained in placement by a portion of the first placement of component instances associated with the component instances common to both netlists.
US08/523,070 1995-08-31 1995-08-31 Method and apparatus for making incremental changes to an integrated circuit design Expired - Lifetime US5867396A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US08/523,070 US5867396A (en) 1995-08-31 1995-08-31 Method and apparatus for making incremental changes to an integrated circuit design

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/523,070 US5867396A (en) 1995-08-31 1995-08-31 Method and apparatus for making incremental changes to an integrated circuit design

Publications (1)

Publication Number Publication Date
US5867396A true US5867396A (en) 1999-02-02

Family

ID=24083535

Family Applications (1)

Application Number Title Priority Date Filing Date
US08/523,070 Expired - Lifetime US5867396A (en) 1995-08-31 1995-08-31 Method and apparatus for making incremental changes to an integrated circuit design

Country Status (1)

Country Link
US (1) US5867396A (en)

Cited By (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5949691A (en) * 1996-08-15 1999-09-07 Nec Corporation Logic circuit verification device to verify the logic circuit equivalence and a method therefor
US6080204A (en) * 1997-10-27 2000-06-27 Altera Corporation Method and apparatus for contemporaneously compiling an electronic circuit design by contemporaneously bipartitioning the electronic circuit design using parallel processing
US6102964A (en) * 1996-10-28 2000-08-15 Altera Corporation Fitting for incremental compilation of electronic designs
US6218855B1 (en) 1999-08-27 2001-04-17 Sun Microsystems, Inc. Datapath global routing using flexible pins for side exiting buses
US6226777B1 (en) * 1998-11-25 2001-05-01 Agilent Technologies, Inc. Method and system for improving the performance of a circuit design verification tool
US6233724B1 (en) * 1998-10-30 2001-05-15 Micron Technology, Inc. Circuit synthesis time budgeting based upon wireload information
US6243849B1 (en) * 1998-03-13 2001-06-05 Lsi Logic Corporation Method and apparatus for netlist filtering and cell placement
US6253365B1 (en) * 1998-10-06 2001-06-26 David P. Baldwin Automated design system for digital circuits
US6281736B1 (en) 1999-12-02 2001-08-28 Sun Microsystems, Inc. Method and circuitry for soft fuse row redundancy with simple fuse programming
US6327697B1 (en) 1999-06-28 2001-12-04 Sun Microsystems, Inc. Method for routing conductive paths in an integrated circuit
US6367056B1 (en) 1998-04-23 2002-04-02 Altera Corporation Method for incremental timing analysis
US6467072B1 (en) * 1998-11-20 2002-10-15 Via Technologies, Inc. Method of placement and routing for an array device
US6484292B1 (en) 2000-02-07 2002-11-19 Xilinx, Inc. Incremental logic synthesis system for revisions of logic circuit designs
US6490710B1 (en) * 2000-04-06 2002-12-03 Mitsubishi Denki Kabushiki Kaisha Logic verification method and apparatus for logic verification
US6493864B1 (en) * 2001-06-20 2002-12-10 Ammocore Technology, Inc. Integrated circuit block model representation hierarchical handling of timing exceptions
US6510545B1 (en) 2000-01-19 2003-01-21 Sun Microsystems, Inc. Automated shielding algorithm for dynamic circuits
US6539524B1 (en) * 2000-05-10 2003-03-25 Agere Systems Inc. Method and apparatus for matching capacitance of filters having different circuit topologies
US20030079195A1 (en) * 1999-05-17 2003-04-24 Mcelvain Kenneth S. Methods and apparatuses for designing integrated circuits
US20030140255A1 (en) * 2002-01-23 2003-07-24 Intellitech Corporation Management system, method and apparatus for licensed delivery and accounting of electronic circuits
US20030149953A1 (en) * 2001-06-15 2003-08-07 Science & Technology Corporation @ Unm Integrated circuit cell library
US20030188283A1 (en) * 2002-03-15 2003-10-02 Numerical Technologies, Inc. Method and apparatus for identifying an identical cell in an IC layout with an existing solution
US6651239B1 (en) * 2001-11-13 2003-11-18 Lsi Logic Corporation Direct transformation of engineering change orders to synthesized IC chip designs
US6665853B2 (en) 2002-03-27 2003-12-16 International Business Machines Corporation Netlist consistency checking
US6769107B1 (en) * 2001-12-03 2004-07-27 Lsi Logic Corporation Method and system for implementing incremental change to circuit design
EP1470506A2 (en) * 2002-01-31 2004-10-27 Cadence Design Systems, Inc. Method and apparatus for synthesis
US6817005B2 (en) 2000-05-25 2004-11-09 Xilinx, Inc. Modular design method and system for programmable logic devices
US20050009417A1 (en) * 2003-07-09 2005-01-13 Uwe Meding Isomorphism method and apparatus
US20060136521A1 (en) * 2004-12-22 2006-06-22 Lacey David J Model curation
US20060136188A1 (en) * 2004-12-22 2006-06-22 Lacey David J Capturing curation data
US7086029B1 (en) * 2003-01-06 2006-08-01 Xilinx, Inc. Incremental design using a group area designation
US7146583B1 (en) 2004-08-06 2006-12-05 Xilinx, Inc. Method and system for implementing a circuit design in a tree representation
US7171644B1 (en) 2004-08-06 2007-01-30 Xilinx, Inc. Implementation set-based guide engine and method of implementing a circuit design
US7181704B1 (en) 2004-08-06 2007-02-20 Xilinx, Inc. Method and system for designing integrated circuits using implementation directives
US7191426B1 (en) * 2004-09-01 2007-03-13 Altera Corporation Method and apparatus for performing incremental compilation on field programmable gate arrays
US20070157131A1 (en) * 2005-12-30 2007-07-05 Cadence Design Systems, Inc. System and method for incremental synthesis
US7290241B1 (en) 2004-08-06 2007-10-30 Xilinx, Inc. Method and system for managing behavior of algorithms
US20070256037A1 (en) * 2006-04-26 2007-11-01 Zavadsky Vyacheslav L Net-list organization tools
US20080066024A1 (en) * 2006-09-12 2008-03-13 Essam Mina Enabling netlist for modeling of technology dependent beol process variation
US7360177B1 (en) 2004-08-06 2008-04-15 Xilinx, Inc. Method and arrangement providing for implementation granularity using implementation sets
US20090232006A1 (en) * 2007-10-12 2009-09-17 Nortel Networks Limited Continuity Check Management in a Link State Controlled Ethernet Network
US20100257494A1 (en) * 2009-04-01 2010-10-07 International Business Machines Corporation Enhancing Formal Design Verification By Reusing Previous Results
US8015522B2 (en) 2008-01-04 2011-09-06 Springsoft Usa, Inc. System for implementing post-silicon IC design changes
US8015524B1 (en) * 2007-03-23 2011-09-06 Altera Corporation Method and apparatus for performing incremental delay annotation
US8196081B1 (en) 2010-03-31 2012-06-05 Xilinx, Inc. Incremental placement and routing
US8196083B1 (en) 2010-12-09 2012-06-05 Xilinx, Inc. Incremental placement and routing
US8443325B1 (en) 2003-05-29 2013-05-14 Altera Corporation Method and apparatus for utilizing constraints for the routing of a design on a programmable logic device
US10073941B1 (en) * 2010-01-08 2018-09-11 Altera Corporation Method and apparatus for performing efficient incremental compilation
US10586005B1 (en) 2018-03-21 2020-03-10 Xilinx, Inc. Incremental synthesis for changes to a circuit design
CN111241781A (en) * 2019-12-31 2020-06-05 天津芯海创科技有限公司 ECO method and device

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4612618A (en) * 1983-06-10 1986-09-16 Rca Corporation Hierarchical, computerized design of integrated circuits
US4703435A (en) * 1984-07-16 1987-10-27 International Business Machines Corporation Logic Synthesizer
US4882690A (en) * 1985-09-26 1989-11-21 Hitachi, Ltd. Incremental logic synthesis method
US5243538A (en) * 1989-08-09 1993-09-07 Hitachi, Ltd. Comparison and verification system for logic circuits and method thereof
US5249133A (en) * 1991-04-10 1993-09-28 Sun Microsystems, Inc. Method for the hierarchical comparison of schematics and layouts of electronic components
US5278769A (en) * 1991-04-12 1994-01-11 Lsi Logic Corporation Automatic logic model generation from schematic data base
US5331568A (en) * 1991-06-18 1994-07-19 Microelectronics & Computer Technology Corporation Apparatus and method for determining sequential hardware equivalence
US5436849A (en) * 1993-02-09 1995-07-25 International Business Machines Corporation Incremental logic synthesis system for efficient revision of logic circuit designs
US5463561A (en) * 1993-06-30 1995-10-31 Digital Equipment Corporation High capacity netlist comparison
US5544066A (en) * 1990-04-06 1996-08-06 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 low-level design constraints
US5572436A (en) * 1990-04-06 1996-11-05 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4612618A (en) * 1983-06-10 1986-09-16 Rca Corporation Hierarchical, computerized design of integrated circuits
US4703435A (en) * 1984-07-16 1987-10-27 International Business Machines Corporation Logic Synthesizer
US4882690A (en) * 1985-09-26 1989-11-21 Hitachi, Ltd. Incremental logic synthesis method
US5243538A (en) * 1989-08-09 1993-09-07 Hitachi, Ltd. Comparison and verification system for logic circuits and method thereof
US5243538B1 (en) * 1989-08-09 1995-11-07 Hitachi Ltd Comparison and verification system for logic circuits and method thereof
US5544066A (en) * 1990-04-06 1996-08-06 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 low-level design constraints
US5572436A (en) * 1990-04-06 1996-11-05 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design
US5249133A (en) * 1991-04-10 1993-09-28 Sun Microsystems, Inc. Method for the hierarchical comparison of schematics and layouts of electronic components
US5278769A (en) * 1991-04-12 1994-01-11 Lsi Logic Corporation Automatic logic model generation from schematic data base
US5331568A (en) * 1991-06-18 1994-07-19 Microelectronics & Computer Technology Corporation Apparatus and method for determining sequential hardware equivalence
US5436849A (en) * 1993-02-09 1995-07-25 International Business Machines Corporation Incremental logic synthesis system for efficient revision of logic circuit designs
US5463561A (en) * 1993-06-30 1995-10-31 Digital Equipment Corporation High capacity netlist comparison

Non-Patent Citations (16)

* Cited by examiner, † Cited by third party
Title
"Automatic Synthesis and Technology Mapping of Combinational Logic" by R. A. Bergamaschi, IEEE 1988, pp. 466-469.
"DAGON: Technology Binding and Local Optimization by DAG Matching" by K. Keutzer, 24th ACM/EEE Design Automation Conference, 1987, pp. 341-347.
"Fast Incremental Circuit Analysis Using Extracted Hierarchy" by D.L. Beatty et al, 25th ACM/IEEE Design Automation Conf., 1988, pp. 495-500.
"Hcompare: A Hierarchical Netlist Comparison Program" by P. Batra et al, 29th ACM/IEEE Design Automation Conference, 1992, pp. 299-304.
"MIS: A Multiple-Level Logic Optimization System" by R.K. Brayton et al, IEEE Trans. on Computer-Aided Design, V. CAD-6, No. 6, Nov. 1987, pp. 1062-1081.
"Technology Mapping of Digital Circuits" by G. De Micheli, IEEE 1991, pp. 580-586.
Automatic Synthesis and Technology Mapping of Combinational Logic by R. A. Bergamaschi, IEEE 1988, pp. 466 469. *
Carl Eberling and Ofer Zajicek, "Validating VLSI Circuit Layout by Wirelist Comparison", IEEE International Conference on Computer Aided Design, 1983, pp. 172-173.
Carl Eberling and Ofer Zajicek, Validating VLSI Circuit Layout by Wirelist Comparison , IEEE International Conference on Computer Aided Design, 1983, pp. 172 173. *
DAGON: Technology Binding and Local Optimization by DAG Matching by K. Keutzer, 24th ACM/EEE Design Automation Conference, 1987, pp. 341 347. *
Fast Incremental Circuit Analysis Using Extracted Hierarchy by D.L. Beatty et al, 25th ACM/IEEE Design Automation Conf., 1988, pp. 495 500. *
Hcompare: A Hierarchical Netlist Comparison Program by P. Batra et al, 29th ACM/IEEE Design Automation Conference, 1992, pp. 299 304. *
MIS: A Multiple Level Logic Optimization System by R.K. Brayton et al, IEEE Trans. on Computer Aided Design, V. CAD 6, No. 6, Nov. 1987, pp. 1062 1081. *
Rick L. Spickelmier and A. Richard Newton, "WOMBAT: A New Netlist Comparsion Program", IEEE International Conference on Computer Aided Designer, 1983, pp. 170-171.
Rick L. Spickelmier and A. Richard Newton, WOMBAT: A New Netlist Comparsion Program , IEEE International Conference on Computer Aided Designer, 1983, pp. 170 171. *
Technology Mapping of Digital Circuits by G. De Micheli, IEEE 1991, pp. 580 586. *

Cited By (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5949691A (en) * 1996-08-15 1999-09-07 Nec Corporation Logic circuit verification device to verify the logic circuit equivalence and a method therefor
US6298319B1 (en) 1996-10-28 2001-10-02 Altera Corporation Incremental compilation of electronic design for work group
US6102964A (en) * 1996-10-28 2000-08-15 Altera Corporation Fitting for incremental compilation of electronic designs
US6134705A (en) * 1996-10-28 2000-10-17 Altera Corporation Generation of sub-netlists for use in incremental compilation
US6490717B1 (en) 1996-10-28 2002-12-03 Altera Corporation Generation of sub-netlists for use in incremental compilation
US6080204A (en) * 1997-10-27 2000-06-27 Altera Corporation Method and apparatus for contemporaneously compiling an electronic circuit design by contemporaneously bipartitioning the electronic circuit design using parallel processing
US6243849B1 (en) * 1998-03-13 2001-06-05 Lsi Logic Corporation Method and apparatus for netlist filtering and cell placement
US6367056B1 (en) 1998-04-23 2002-04-02 Altera Corporation Method for incremental timing analysis
US6253365B1 (en) * 1998-10-06 2001-06-26 David P. Baldwin Automated design system for digital circuits
US6647541B2 (en) 1998-10-30 2003-11-11 Sun Microsystems, Inc. Circuit synthesis time budgeting based upon wireload information
US6233724B1 (en) * 1998-10-30 2001-05-15 Micron Technology, Inc. Circuit synthesis time budgeting based upon wireload information
US6467072B1 (en) * 1998-11-20 2002-10-15 Via Technologies, Inc. Method of placement and routing for an array device
US6226777B1 (en) * 1998-11-25 2001-05-01 Agilent Technologies, Inc. Method and system for improving the performance of a circuit design verification tool
US20030079195A1 (en) * 1999-05-17 2003-04-24 Mcelvain Kenneth S. Methods and apparatuses for designing integrated circuits
US20070288871A1 (en) * 1999-05-17 2007-12-13 Mcelvain Kenneth S Methods and apparatuses for designing integrated circuits
US7010769B2 (en) * 1999-05-17 2006-03-07 Synplicity, Inc. Methods and apparatuses for designing integrated circuits
US7631282B2 (en) 1999-05-17 2009-12-08 Synopsys, Inc. Methods and apparatuses for designing integrated circuits
US6327697B1 (en) 1999-06-28 2001-12-04 Sun Microsystems, Inc. Method for routing conductive paths in an integrated circuit
US6218855B1 (en) 1999-08-27 2001-04-17 Sun Microsystems, Inc. Datapath global routing using flexible pins for side exiting buses
US6281736B1 (en) 1999-12-02 2001-08-28 Sun Microsystems, Inc. Method and circuitry for soft fuse row redundancy with simple fuse programming
US6384665B2 (en) 1999-12-02 2002-05-07 Sun Microsystems, Inc. Method and circuitry for soft fuse row redundancy with simple fuse programming
US6510545B1 (en) 2000-01-19 2003-01-21 Sun Microsystems, Inc. Automated shielding algorithm for dynamic circuits
US6484292B1 (en) 2000-02-07 2002-11-19 Xilinx, Inc. Incremental logic synthesis system for revisions of logic circuit designs
US6490710B1 (en) * 2000-04-06 2002-12-03 Mitsubishi Denki Kabushiki Kaisha Logic verification method and apparatus for logic verification
US6539524B1 (en) * 2000-05-10 2003-03-25 Agere Systems Inc. Method and apparatus for matching capacitance of filters having different circuit topologies
US6817005B2 (en) 2000-05-25 2004-11-09 Xilinx, Inc. Modular design method and system for programmable logic devices
US6892373B2 (en) 2001-06-15 2005-05-10 Science & Technology Corporation At Unm Integrated circuit cell library
US20030204822A1 (en) * 2001-06-15 2003-10-30 Science & Technology Corporation @ Unm Digital logic optimization using selection operators
US20030200510A1 (en) * 2001-06-15 2003-10-23 Science & Technology Corporation @ Unm Digital circuits using universal logic gates
US20060114135A1 (en) * 2001-06-15 2006-06-01 Science & Technology Corporation @ Unm Optimization of digital designs
US6779156B2 (en) 2001-06-15 2004-08-17 Science & Technology Corporation @ Unm Digital circuits using universal logic gates
US6779158B2 (en) * 2001-06-15 2004-08-17 Science & Technology Corporation @ Unm Digital logic optimization using selection operators
US20030149953A1 (en) * 2001-06-15 2003-08-07 Science & Technology Corporation @ Unm Integrated circuit cell library
US7624368B2 (en) 2001-06-15 2009-11-24 Stc.Unm Optimization of digital designs
US6493864B1 (en) * 2001-06-20 2002-12-10 Ammocore Technology, Inc. Integrated circuit block model representation hierarchical handling of timing exceptions
US6651239B1 (en) * 2001-11-13 2003-11-18 Lsi Logic Corporation Direct transformation of engineering change orders to synthesized IC chip designs
US6769107B1 (en) * 2001-12-03 2004-07-27 Lsi Logic Corporation Method and system for implementing incremental change to circuit design
US9152749B2 (en) * 2002-01-23 2015-10-06 Intellitech Corp. Management system, method and apparatus for licensed delivery and accounting of electronic circuits
US20030140255A1 (en) * 2002-01-23 2003-07-24 Intellitech Corporation Management system, method and apparatus for licensed delivery and accounting of electronic circuits
EP1470506A4 (en) * 2002-01-31 2008-04-02 Cadence Design Systems Inc Method and apparatus for synthesis
EP1470506A2 (en) * 2002-01-31 2004-10-27 Cadence Design Systems, Inc. Method and apparatus for synthesis
US8151227B2 (en) 2002-01-31 2012-04-03 Cadence Design Systems Method and apparatus for pre-tabulating sub-networks
US7543251B2 (en) 2002-01-31 2009-06-02 Cadence Design Systems, Inc. Method and apparatus replacing sub-networks within an IC design
US20030188283A1 (en) * 2002-03-15 2003-10-02 Numerical Technologies, Inc. Method and apparatus for identifying an identical cell in an IC layout with an existing solution
US6665853B2 (en) 2002-03-27 2003-12-16 International Business Machines Corporation Netlist consistency checking
US7086029B1 (en) * 2003-01-06 2006-08-01 Xilinx, Inc. Incremental design using a group area designation
US8443325B1 (en) 2003-05-29 2013-05-14 Altera Corporation Method and apparatus for utilizing constraints for the routing of a design on a programmable logic device
US9443054B1 (en) 2003-05-29 2016-09-13 Altera Corporation Method and apparatus for utilizing constraints for the routing of a design on a programmable logic device
US8745566B1 (en) 2003-05-29 2014-06-03 Altera Corporation Method and apparatus for utilizing constraints for the routing of a design on a programmable logic device
US20050009417A1 (en) * 2003-07-09 2005-01-13 Uwe Meding Isomorphism method and apparatus
US7181704B1 (en) 2004-08-06 2007-02-20 Xilinx, Inc. Method and system for designing integrated circuits using implementation directives
US7290241B1 (en) 2004-08-06 2007-10-30 Xilinx, Inc. Method and system for managing behavior of algorithms
US7360177B1 (en) 2004-08-06 2008-04-15 Xilinx, Inc. Method and arrangement providing for implementation granularity using implementation sets
US8296690B1 (en) 2004-08-06 2012-10-23 Xilinx, Inc. Method and arrangement providing for implementation granularity using implementation sets
US7171644B1 (en) 2004-08-06 2007-01-30 Xilinx, Inc. Implementation set-based guide engine and method of implementing a circuit design
US8141010B1 (en) 2004-08-06 2012-03-20 Xilinx, Inc. Method and arrangement providing for implementation granularity using implementation sets
US7146583B1 (en) 2004-08-06 2006-12-05 Xilinx, Inc. Method and system for implementing a circuit design in a tree representation
US7191426B1 (en) * 2004-09-01 2007-03-13 Altera Corporation Method and apparatus for performing incremental compilation on field programmable gate arrays
US20060136521A1 (en) * 2004-12-22 2006-06-22 Lacey David J Model curation
US20060136188A1 (en) * 2004-12-22 2006-06-22 Lacey David J Capturing curation data
US7739654B2 (en) * 2004-12-22 2010-06-15 Hewlett-Packard Development Company, L.P. Model curation for integrated circuit designs
US20070157131A1 (en) * 2005-12-30 2007-07-05 Cadence Design Systems, Inc. System and method for incremental synthesis
US7587687B2 (en) * 2005-12-30 2009-09-08 Cadence Design Systems, Inc. System and method for incremental synthesis
US20070256037A1 (en) * 2006-04-26 2007-11-01 Zavadsky Vyacheslav L Net-list organization tools
US20080066024A1 (en) * 2006-09-12 2008-03-13 Essam Mina Enabling netlist for modeling of technology dependent beol process variation
US7487473B2 (en) 2006-09-12 2009-02-03 International Business Machines Corporation Enabling netlist for modeling of technology dependent BEOL process variation
US8286109B1 (en) 2007-03-23 2012-10-09 Altera Corporation Method and apparatus for performing incremental delay annotation
US8015524B1 (en) * 2007-03-23 2011-09-06 Altera Corporation Method and apparatus for performing incremental delay annotation
US20090232006A1 (en) * 2007-10-12 2009-09-17 Nortel Networks Limited Continuity Check Management in a Link State Controlled Ethernet Network
US8264970B2 (en) * 2007-10-12 2012-09-11 Rockstar Bidco, LP Continuity check management in a link state controlled Ethernet network
US8918538B2 (en) 2007-10-12 2014-12-23 Rockstar Consortium Us Lp Automatic MEP provisioning in a link state controlled ethernet network
US9059918B2 (en) 2007-10-12 2015-06-16 Rpx Clearinghouse Llc Continuity check management in a link state controlled ethernet network
US8015522B2 (en) 2008-01-04 2011-09-06 Springsoft Usa, Inc. System for implementing post-silicon IC design changes
US8042078B2 (en) 2009-04-01 2011-10-18 International Business Machines Corporation Enhancing formal design verification by reusing previous results
US20100257494A1 (en) * 2009-04-01 2010-10-07 International Business Machines Corporation Enhancing Formal Design Verification By Reusing Previous Results
US10073941B1 (en) * 2010-01-08 2018-09-11 Altera Corporation Method and apparatus for performing efficient incremental compilation
US8196081B1 (en) 2010-03-31 2012-06-05 Xilinx, Inc. Incremental placement and routing
US8196083B1 (en) 2010-12-09 2012-06-05 Xilinx, Inc. Incremental placement and routing
US10586005B1 (en) 2018-03-21 2020-03-10 Xilinx, Inc. Incremental synthesis for changes to a circuit design
CN111241781A (en) * 2019-12-31 2020-06-05 天津芯海创科技有限公司 ECO method and device

Similar Documents

Publication Publication Date Title
US5867396A (en) Method and apparatus for making incremental changes to an integrated circuit design
US6505328B1 (en) Method for storing multiple levels of design data in a common database
Cong et al. Combinational logic synthesis for LUT based field programmable gate arrays
US6086626A (en) Method for verification of combinational circuits using a filtering oriented approach
US5301318A (en) Hierarchical netlist extraction tool
US6298319B1 (en) Incremental compilation of electronic design for work group
US7328195B2 (en) Semi-automatic generation of behavior models continuous value using iterative probing of a device or existing component model
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
US9798840B1 (en) Methods, systems, and computer program product for implementing a simulation platform with dynamic device model libraries for electronic designs
US6026220A (en) Method and apparatus for incremntally optimizing a circuit design
US5831866A (en) Method and apparatus for removing timing hazards in a circuit design
US6301553B1 (en) Method and apparatus for removing timing hazards in a circuit design
US20030208730A1 (en) Method for verifying properties of a circuit model
US5727187A (en) Method of using logical names in post-synthesis electronic design automation systems
US20050091025A1 (en) Methods and systems for improved integrated circuit functional simulation
US20080046851A1 (en) Partitioning electronic circuit designs into simulation-ready blocks
JP2008501185A (en) Loop operations in behavioral synthesis tools
US6519742B1 (en) Local naming for HDL compilation
US6560571B1 (en) Method and apparatus for prioritizing the order in which checks are performed on a node in an integrated circuit
US6550041B1 (en) Method and apparatus for evaluating the design quality of network nodes
Kam et al. Comparing layouts with HDL models: A formal verification technique
Berstis The V compiler: automatic hardware design
US6449578B1 (en) Method and apparatus for determining the RC delays of a network of an integrated circuit
US6367055B1 (en) Method and apparatus for determining certain characteristics of circuit elements
US5854926A (en) Method and apparatus for identifying flip-flops in HDL descriptions of circuits without specific templates

Legal Events

Date Code Title Description
AS Assignment

Owner name: XILINX, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PARLOUR, DAVID B.;REEL/FRAME:007652/0215

Effective date: 19950830

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12