US20120089956A1 - Automated Bottom-Up and Top-Down Partitioned Design Synthesis - Google Patents

Automated Bottom-Up and Top-Down Partitioned Design Synthesis Download PDF

Info

Publication number
US20120089956A1
US20120089956A1 US13/330,628 US201113330628A US2012089956A1 US 20120089956 A1 US20120089956 A1 US 20120089956A1 US 201113330628 A US201113330628 A US 201113330628A US 2012089956 A1 US2012089956 A1 US 2012089956A1
Authority
US
United States
Prior art keywords
level
partition
partitions
block
constraints
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/330,628
Inventor
Smita Bakshi
Kenneth S. McElvain
Gael Paul
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to US13/330,628 priority Critical patent/US20120089956A1/en
Publication of US20120089956A1 publication Critical patent/US20120089956A1/en
Priority to US14/322,905 priority patent/US10296689B2/en
Abandoned 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/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/323Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Definitions

  • Embodiments of the invention relate to the field of computer-aided design, and more specifically, to design synthesis.
  • synthesis tools have problems synthesizing designs larger than a few million gates.
  • users manually partition the design into smaller segments, and then constrain and synthesize each partition separately. All the partitions are linked together to construct the final design. This is commonly referred to as bottom-up synthesis. It is a manual, time-consuming and inefficient process requiring the creation and maintenance of several design projects via scripts.
  • FIG. 1 is a diagram illustrating a system in which one embodiment of the invention can be practiced.
  • FIG. 2 is a diagram illustrating a multi-point synthesis module according to one embodiment of the invention.
  • FIG. 3 is a diagram illustrating a partitioning according to one embodiment of the invention.
  • FIG. 4 is a flowchart illustrating a process to synthesize according to one embodiment of the invention.
  • FIG. 5 is a flowchart illustrating a process to partition according to one embodiment of the invention.
  • FIG. 6 is a flowchart illustrating a process to synthesize lower partitions according to one embodiment of the invention.
  • FIG. 7 is a flowchart illustrating a process to budget top-level constraints according to one embodiment of the invention.
  • FIG. 8 is a flowchart illustrating a process to detect a compile change according to one embodiment of the invention.
  • FIG. 9 is a flowchart illustrating a process to detect a mapping change according to one embodiment of the invention.
  • FIG. 10 is a flowchart illustrating a process to optimize a CP or partition according to one embodiment of the invention.
  • FIG. 11 is a flowchart illustrating a process to construct a gate-level interface logic module according to one embodiment of the invention.
  • An embodiment of the present invention includes a partitioner, a synthesizer, and an optimizer.
  • the partitioner partitions a design into a hierarchy of partitions having a top-level partition and lower partitions.
  • the lower partitions include a bottom-level partition.
  • the top-level partition has top-level constraints.
  • the synthesizer synthesizes the lower partitions hierarchically from the bottom-level partition to create lower partition netlists based on the top-level constraints.
  • the optimizer optimizes a top-level netlist corresponding to the top-level partition from the lower partition netlists to satisfy the top-level constraints.
  • FIG. 1 is a diagram illustrating a system 100 in which one embodiment of the invention can be practiced.
  • the system 100 includes a host processor 110 , a host bus 120 , a memory control hub (MCH) 130 , a system memory 140 , an input/output control hub (ICH) 150 , a mass storage device 170 , and input/output devices 180 1 to 180 K .
  • MCH memory control hub
  • ICH input/output control hub
  • the system 100 may include more or less elements than these elements.
  • the host processor 110 represents a central processing unit of any type of architecture, such as embedded processors, mobile processors, micro-controllers, digital signal processors, superscalar computers, vector processors, single instruction multiple data (SIMD) computers, complex instruction set computers (CISC), reduced instruction set computers (RISC), very long instruction word (VLIW), or hybrid architecture.
  • SIMD single instruction multiple data
  • CISC complex instruction set computers
  • RISC reduced instruction set computers
  • VLIW very long instruction word
  • the host bus 120 provides interface signals to allow the processor 110 to communicate with other processors or devices, e.g., the MCH 130 .
  • the host bus 120 may support a uni-processor or multiprocessor configuration.
  • the host bus 120 may be parallel, sequential, pipelined, asynchronous, synchronous, or any combination thereof.
  • the MCH 130 provides control and configuration of memory and input/output devices such as the system memory 140 and the ICH 150 .
  • the MCH 130 may be integrated into a chipset that integrates multiple functionalities such as the isolated execution mode, host-to-peripheral bus interface, memory control.
  • the MCH 130 interfaces to a peripheral bus. For clarity, not all the peripheral buses are shown. It is contemplated that the system 100 may also include peripheral buses such as Peripheral Component Interconnect (PCI), accelerated graphics port (AGP), Industry Standard Architecture (ISA) bus, and Universal Serial Bus (USB), etc.
  • PCI Peripheral Component Interconnect
  • AGP accelerated graphics port
  • ISA Industry Standard Architecture
  • USB Universal Serial Bus
  • the system memory 140 stores system code and data.
  • the system memory 140 is typically implemented with dynamic random access memory (DRAM) or static random access memory (SRAM).
  • the system memory may include program code or code segments implementing one embodiment of the invention.
  • the system memory includes a multi-point synthesis module 145 .
  • the multi-point synthesis module 145 may be used as part of a design process for Applications Specific Integrated Circuit (ASIC) devices, programmable device such as programmable logic devices (PLD), complex PLD (CPLD), field programmable logic array (FPGA), etc. Any one of the elements of the multi-point synthesis module 145 may be implemented by hardware, software, firmware, microcode, or any combination thereof.
  • the system memory 140 may also include other programs or data which are not shown, such as an operating system.
  • the ICH 150 has a number of functionalities that are designed to support I/O functions.
  • the ICH 150 may also be integrated into a chipset together or separate from the MCH 130 to perform I/O functions.
  • the ICH 150 may include a number of interface and I/O functions such as PCI bus interface to interface to the peripheral bus, processor interface, interrupt controller, direct memory access (DMA) controller, power management logic, timer, system management bus (SMBus), universal serial bus (USB) interface, mass storage interface, low pin count (LPC) interface, etc.
  • the mass storage device 170 stores archive information such as code, programs, files, data, applications, and operating systems.
  • the mass storage device 170 may include compact disk (CD) ROM 172 , a digital video/versatile disc (DVD) 173 , floppy drive 174 , and hard drive 176 , and any other magnetic or optic storage devices.
  • the mass storage device 170 provides a mechanism to read machine-accessible media.
  • the machine-accessible media may contain computer readable program code to perform tasks as described in the following.
  • the I/O devices 180 1 to 180 K may include any I/O devices to perform I/O functions.
  • I/O devices 180 1 to 180 K include controller for input devices (e.g., keyboard, mouse, trackball, pointing device), media card (e.g., audio, video, graphics), network card, and any other peripheral controllers.
  • Elements of one embodiment of the invention may be implemented by hardware, firmware, software or any combination thereof.
  • hardware generally refers to an element having a physical structure such as electronic, electromagnetic, optical, electro-optical, mechanical, electro-mechanical parts, etc.
  • software generally refers to a logical structure, a method, a procedure, a program, a routine, a process, an algorithm, a formula, a function, an expression, etc.
  • firmware generally refers to a logical structure, a method, a procedure, a program, a routine, a process, an algorithm, a formula, a function, an expression, etc that is implemented or embodied in a hardware structure (e.g, flash memory).
  • firmware may include microcode, writable control store, microprogrammed structure.
  • the elements of an embodiment of the present invention are essentially the code segments to perform the necessary tasks.
  • the software/firmware may include the actual code to carry out the operations described in one embodiment of the invention, or code that emulates or simulates the operations.
  • the program or code segments can be stored in a processor or machine accessible medium or transmitted by a computer data signal embodied in a carrier wave, or a signal modulated by a carrier, over a transmission medium.
  • the “processor readable or accessible medium” or “machine readable or accessible medium” may include any medium that can store, transmit, or transfer information.
  • Examples of the processor readable or machine accessible medium include an electronic circuit, a semiconductor memory device, a read only memory (ROM), a flash memory, an erasable ROM (EROM), a floppy diskette, a compact disk (CD) ROM, an optical disk, a hard disk, a fiber optic medium, a radio frequency (RF) link, etc.
  • the computer data signal may include any signal that can propagate over a transmission medium such as electronic network channels, optical fibers, air, electromagnetic, RF links, etc.
  • the code segments may be downloaded via computer networks such as the Internet, Intranet, etc.
  • the machine accessible medium may be embodied in an article of manufacture.
  • the machine accessible medium may include data that, when accessed by a machine, cause the machine to perform the operations described in the following.
  • the machine accessible medium may also include program code embedded therein.
  • the program code may include machine readable code to perform the operations described in the following.
  • the term “data” here refers to any type of information that is encoded for machine-readable purposes. Therefore, it may include program, code, data, file, etc.
  • All or part of an embodiment of the invention may be implemented by hardware, software, or firmware, or any combination thereof.
  • the hardware, software, or firmware element may have several modules coupled to one another.
  • a hardware module is coupled to another module by mechanical, electrical, optical, electromagnetic or any physical connections.
  • a software module is coupled to another module by a function, procedure, method, subprogram, or subroutine call, a jump, a link, a parameter, variable, and argument passing, a function return, etc.
  • a software module is coupled to another module to receive variables, parameters, arguments, pointers, etc. and/or to generate or pass results, updated variables, pointers, etc.
  • a firmware module is coupled to another module by any combination of hardware and software coupling methods above.
  • a hardware, software, or firmware module may be coupled to any one of another hardware, software, or firmware module.
  • a module may also be a software driver or interface to interact with the operating system running on the platform.
  • a module may also be a hardware driver to configure, set up, initialize, send and receive data to and from a hardware device.
  • An apparatus may include any combination of hardware, software, and firmware modules.
  • One embodiment of the invention may be described as a process which is usually depicted as a flowchart, a flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed. A process may correspond to a method, a program, a procedure, a method of manufacturing or fabrication, etc.
  • FIG. 2 is a diagram illustrating the multi-point synthesis module 145 shown in FIG. 1 according to one embodiment of the invention.
  • the multi-point synthesis module 145 includes a partitioner 210 , and a synthesizer 220 .
  • the partitioner 210 partitions a design project, a design, or a circuit into a hierarchy of partitions using either user-provided partitions or some heuristic if the user-provided partitions are not available.
  • the synthesizer 220 receives the top-level constraints and synthesizes the partitions in a hierarchical manner, from the bottom-level partitions to the top-level partition.
  • the synthesizer 220 divide or budget the top-level constraints into lower partition constraints.
  • the synthesizer 220 includes a compiler 222 , a mapper 225 , and an optimizer 227 .
  • the compiler 222 generates a register transfer level (RTL) netlist from a hardware description language (HDL) text file input.
  • HDL hardware description language
  • the compiler 222 compiles a source program containing a HDL circuit description.
  • the HDL may be any appropriate HDL such as Very High Speed Integrated Circuit Hardware Description Language (VHDL) or Verilog.
  • the mapper 225 receives the RTL netlist and constraints to generate a gate-level netlist.
  • the mapper 225 generates technology-specific gate level circuit description from the post-partition RTL circuit description and other useful information from the library (not shown).
  • the synthesizer 220 performs a bottom-up synthesis, replacing a parent partition with its lower level synthesized netlists.
  • the optimizer 227 optimizes the partition based on the partition constraints.
  • the optimizer 227 also optimizes the top-level partition to satisfy the top-level constraints.
  • a design process may go through several design cycles, passes, or iterations. At each pass, the user may modify the circuit description, the constraints, or the interface model of a partition. When the design is modified or changed, the synthesizer 220 only re-synthesizes those partitions that contain a change. This allows incremental synthesis.
  • the multi-point synthesis module 145 provides many useful features including (1) time budgeting by optimizing top level connecting RTL netlists, (2) using netlist comparison to detect change instead of using file time stamps, (3) providing optimizable gate-level interface logic modules (ILM's).
  • the advantages of the multi-point module 145 include: (1) designer productivity is increased thanks to the automating bottom-up synthesis; users do not need to write scripts to manage the bottom up flow; (2) design performance and designer productivity are increased by automating time budgeting; (3) design performance is increased by allowing boundary optimizations across partitions or compile points; (4) stability across design cycles or passes is increased by automatically detecting changes in partitions or compile points and only re-compiling those compile points that have changed; and (5) significantly large designs can be synthesized in a completely automated manner thanks to the top-down partitioned flow.
  • FIG. 3 is a diagram illustrating a partitioning 300 according to one embodiment of the invention.
  • the partitioning 300 includes a hierarchy of partitions organized as a tree.
  • the partitioning 300 includes a top-level partition 301 and lower partitions 310 i , 320 j , and 330 k .
  • the top-level partition 301 represents the overall design project or the entire circuit.
  • the top-level partition 301 has top-level constraints such as timing parameters (e.g., propagation delays), gate complexity, types of logic elements, etc.
  • the lower partitions 310 1 to 310 P represent the partition level 1 .
  • the lower partitions 320 1 to 320 Q represent the partitions at level 2 , etc.
  • the lower partitions 330 1 to 330 R represent the bottom-level partitions or the partitions level N. As is known by one skilled in the art, the number of levels may be any number greater than 1.
  • Each of a lower partition has a parent partition.
  • the lower partition 320 2 has the lower partition 310 2 as its parent.
  • a lower partition typically has one parent, while a parent may have more than one child.
  • the parent partition 310 2 has two child partitions 320 2 and 320 3 .
  • the lower partitions may be synthesized separately and independently. This aspect makes effective use of multiprocessing to speed up the synthesis process.
  • the lower partitions may be allocated and assigned to a group of processors. If there are more partitions than the number of processors, the partitions may be grouped in groups such that the synthesis run time of the longest group is minimized.
  • FIG. 4 is a flowchart illustrating a process 400 to synthesize according to one embodiment of the invention.
  • the process 400 in essence implements the multi-point synthesis module 145 shown in FIG. 2 .
  • the process 400 partitions the design into a hierarchy of partitions (Block 410 ).
  • the hierarchy of partitions includes a top-level partition and lower partitions.
  • the lower partitions include at least a bottom-level partition.
  • the top-level partition has top-level constraints as described above. The details of Block 410 will be described in FIG. 5 .
  • the process 400 synthesizes the lower partitions hierarchically from the bottom-level partition up to the top-level partition to create lower partition netlists based on the top-level constraints (Block 420 ).
  • the details of Block 420 will be described in FIG. 6 .
  • the process 400 optimizes the top-level netlist corresponding to the top-level partition to satisfy the top-level constraints and every compile point (CP) at lower level partitions to satisfy the corresponding partition constraints (Block 430 ) and is then terminated.
  • CP compile point
  • FIG. 5 is a flowchart illustrating the process 410 to partition according to one embodiment of the invention.
  • the process 410 determines if the user provide the partitions (Block 510 ).
  • the user may provide partitions in a number of ways such as HDL circuit descriptions, schematic diagrams, etc. If so, the process 420 partitions the design using the user-provided partitions (Block 520 ) and is then terminated. Otherwise, the process 420 partitions the design using a heuristic or some criteria (Block 530 ). Examples of the heuristic or criteria include size of blocks, frequency of occurrences of blocks, etc. Then, the process 420 is terminated.
  • FIG. 6 is a flowchart illustrating the process 420 to synthesize lower partitions according to one embodiment of the invention.
  • the process 420 budgets the top-level constraints into the lower partition constraints associated with the lower partitions (Block 610 ). The details of Block 610 will be described in FIG. 7 . Then, the process 420 starts from a bottom-level of the hierarchy (Block 612 ). Next, the process 420 selects a compile point (CP) corresponding to a lower level partition in the unmapped lower partitions (Block 615 ).
  • the CP may be a soft CP, a hard CP, or a locked CP.
  • the CP may also be designated to inherit the property of another CP to be one of soft, hard, and locked CP. The designation of the type of the CP may be provided by the user or in case of absence of user inputs, a default type may be selected.
  • the process 420 detects a compile change in the CP (Block 620 ).
  • a compile change is a change in compilation. The details of Block 620 will be described in FIG. 8 .
  • the process 420 determines if there is a compile change in the CP. If there is no compile change, the process 420 retrieves a previously saved CP RTL netlist (Block 630 ) and proceeds to Block 645 . If there is a compile change, the process 420 compiles the CP to generate a current CP RTL netlist (Block 635 ). Next, the process 420 saves the CP RTL netlist in memory or mass storage (Block 640 ) which can be retrieved in a subsequent design cycle or pass if there is no compile change.
  • the process 420 detects a mapping change in the CP (Block 645 ).
  • a mapping change is a change in netlist during mapping. The details of Block 645 will be described in FIG. 9 .
  • the process determines if there is a mapping change in the CP. If there is no mapping change, the process 420 retrieves the saved CP gate-level netlist corresponding to the CP (Block 665 ) and proceeds to Block 670 . If there is a mapping change, the process 420 maps the CP to generate a CP gate-level netlist (Block 655 ). Next, the process 420 saves the CP gate-level netlist in memory or mass storage (Block 660 ) which can be retrieved in a subsequent design cycle or pass if there is no mapping change.
  • the process 420 determines if the top-level partition has been reached (Block 675 ). If so, the process 420 is terminated. Otherwise, the process 420 selects a next CP hierarchically (Block 680 ) and proceeds to Block 615 .
  • FIG. 7 is a flowchart illustrating the process 610 to budget top-level constraints according to one embodiment of the invention.
  • the process 610 constructs a RTL Interface logic module (ILM) for each of the lower partitions (Block 710 ).
  • the construction of the RTL ILM is in essence similar to the gate-level ILM described in FIG. 11 . All gate-level components have a timing model.
  • a RTL ILM is constructed by first constructing a timing model for each of the RTL primitives. Then, the method described in FIG. 11 can be used to create the RTL ILMs.
  • the process 610 replaces the lower partitions with the corresponding RTL ILMs in the top-level partition (Block 720 ). Then, the process 610 synthesizes the top-level partition using the top-level constraints (Block 730 ).
  • the process 610 creates the lower partition constraints based on the synthesized top-level partition (Block 740 ) and is then terminated.
  • FIG. 8 is a flowchart illustrating the process 620 to detect a compile change according to one embodiment of the invention.
  • the process 620 creates a current intermediate netlist of the CP (Block 810 ).
  • the intermediate netlist is an internal representation of the CP.
  • This intermediate netlist is not yet an RTL netlist. For example, flip-flops may not have been inferred yet.
  • the process 620 determines if there is a previously saved intermediate netlist (Block 820 ). If not, the process 620 proceeds to Block 870 . Otherwise, the process 620 compares the current intermediate netlist with a previously saved intermediate netlist (Block 830 ).
  • the process 620 determines if the attributes or properties of the CP are the same (Block 840 ). If not, the process 620 proceeds to Block 870 . Otherwise, the process 620 determines if the ports of the CP are the same (Block 850 ). If not, the process 620 proceeds to Block 870 . Otherwise, the process 620 determines if the nets and the net connections of the CP are the same (Block 860 ). If not, the process 620 determines or declares that there is a compile change (Block 870 ) and is then terminated. Otherwise, the process 620 determines or declares that there is no compile change (Block 880 ) and is then terminated.
  • FIG. 9 is a flowchart illustrating the process 645 to detect a mapping change according to one embodiment of the invention.
  • the process 645 determines if there is a previously saved CP RTL netlist (Block 910 ). If not, the process 645 proceeds to Block 960 . Otherwise, the process 645 compares the current CP RTL netlist with the previously saved CP RTL netlist (Block 920 ).
  • the process 645 determines if the attributes or properties (e.g., constraints and optimization directives) of the CP are the same (Block 930 ). If not, the process 645 proceeds to Block 960 . Otherwise, the process 645 determines if the ports of the CP are the same (Block 940 ). If not, the process 645 proceeds to Block 960 . Otherwise, the process 645 determines if the nets and the net connections of the CP are the same (Block 950 ). If not, the process 620 determines or declares that there is a mapping change (Block 960 ) and is then terminated. Otherwise, the process 645 determines or declares that there is no mapping change (Block 970 ) and is then terminated.
  • the process 645 determines or declares that there is no mapping change (Block 970 ) and is then terminated.
  • FIG. 10 is a flowchart illustrating the process 430 to optimize a CP or partition according to one embodiment of the invention.
  • the process 430 determines the type of the CP (Block 1010 ).
  • the CO may be a soft CP, a hard CP, or a locked CP.
  • the process 430 includes the lower level partition in the parent partition (Block 1015 ). Then, the process 430 modifies a boundary instance of the lower-level partition (Block 1020 ) if necessary. Next, the process 430 combines the modified boundary instance with a function of the parent partition (Block 1025 ). Then, the process 430 propagates instance changes between the parent partition and the lower-level partition (Block 1030 ) and is then terminated. In other words, changes can propagate in both directions; from the parent partition to the lower-level partition and from the lower-level partition to the parent partition. The instance changes are to optimize the partition including sizing, buffering, local gate collapse, and pin swapping.
  • the process 430 includes the lower level partition in the parent partition (Block 1035 ). Then, the process 430 modifies an instance of a side of the boundary of the lower-level partition (Block 1040 ). The side can be either side (outside or inside) of the boundary. Then, the process 430 propagates instance changes between the parent partition and the lower level partition (Block 1050 ) and is then terminated. The direction of the instance changes and the optimization are similar to the soft CP.
  • the process 430 first constructs a gate-level interface logic module (ILM) (Block 1055 ). Then, the process 430 includes the gate-level ILMs of the lower partitions in the parent partition (Block 1060 ). Next, the process 430 modifies the instance outside the boundary of the lower level partitions (Block 1065 ). Then, the process 430 inhibits instance changes between parent partition and the lower level partition (Block 1070 ) and is then terminated.
  • the term “locked” indicates that all instances of the lower partition are to remain identical and unaffected by the top-level constraints or critical paths. Changes neither propagate into nor out of a locked CP. This type of CP is useful for obtaining stable results for a completed part of the design. It is also expected that the locked CP and the hard CP are used for the partitions that are intended to go to place and route separately.
  • FIG. 11 is a flowchart illustrating the process 1055 to construct a gate-level interface logic module according to one embodiment of the invention.
  • the process 1055 collects all the net instances from an input port to input of sequential elements first encountered (Block 1110 ). Next, the process 1055 collects all the feedback instances involving those sequential elements (Block 1110 ). Then, the process 1055 collects all net instances from an output port to sequential elements first encountered (Block 1130 ).
  • the process 1055 collects all the loading net instances involving sequential elements first encountered as traversed from an input or output ports (Block 1040 ).
  • the loading net instances may provide loading factor that may effect the timing.
  • the process 1055 removes all the net instances that do not connect the sequential element first encountered on paths to an input or output port (Block 1150 ) and is then terminated.
  • the process for the top-level optimizer is in essence similar to the process for the lower partition optimizer except that the top-level partition is now the parent partition.
  • the lower level partitions include the partitions that are next below the top level partition and that have been traversed upward from the bottom-level partition(s).
  • the constraints used in the optimization process are the constraints corresponding to the partitions.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Architecture (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

An embodiment of the present invention includes a partitioner, a synthesizer, and an optimizer. The partitioner partitions a design into a hierarchy of partitions having a top-level partition and lower partitions. The lower partitions include a bottom-level partition. The top-level partition has top-level constraints. The synthesizer synthesizes the lower partitions hierarchically from the bottom-level partition to create lower partition netlists based on the top-level constraints. The optimizer optimizes a top-level netlist corresponding to the top-level partition from the lower partition netlists to satisfy the top-level constraints.

Description

  • The present application is a continuation of U.S. application Ser. No. 10/387,802, filed on Mar. 13, 2003, which is now U.S. Pat. No. 8,082,138, to issue on Dec. 20, 2011, which claims priority to U.S. Provisional Application Ser. No. 60/372,211, filed on Apr. 11, 2002, and incorporates those applications in their entirety.
  • BACKGROUND
  • 1. Field
  • Embodiments of the invention relate to the field of computer-aided design, and more specifically, to design synthesis.
  • 2. Background
  • Currently, synthesis tools have problems synthesizing designs larger than a few million gates. In order to synthesize designs larger than a few million gates, users manually partition the design into smaller segments, and then constrain and synthesize each partition separately. All the partitions are linked together to construct the final design. This is commonly referred to as bottom-up synthesis. It is a manual, time-consuming and inefficient process requiring the creation and maintenance of several design projects via scripts. This “traditional” bottom-up flow suffers from the following problems: (1) scripting is complex and error prone, (2) constraints for design partitions must be complete and accurate, (3) boundary optimization is inhibited across partition boundaries, (4) name collisions between shared design partitions cause flow problems, (5) modeling the timing of the design partition for the top-level synthesis is complex, and (6) keeping track of incremental design changes is manual and error prone
  • Most critical yet error-prone among the various manual tasks is the process of determining constraints for each of the partitions. Incorrect constraint budgeting leads to poor quality of results since synthesis tools do not optimize across the boundary of the partitions and are forced to work with the sub-optimal constraints.
  • When there is a change in one of these design partitions, using currently available synthesis tools, it is the user's responsibility to keep track of the changes and re-synthesize only the partitions that changed. Alternatively, the synthesis tool will re-synthesize the complete design. Both these solutions are undesirable because of the manual effort involved and the long runtimes incurred by complete, rather than incremental, synthesis.
  • Therefore, there is a need to have an efficient technique to improve design synthesis of digital circuits.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The invention may best be understood by referring to the following description and accompanying drawings that are used to illustrate embodiments of the invention. In the drawings:
  • FIG. 1 is a diagram illustrating a system in which one embodiment of the invention can be practiced.
  • FIG. 2 is a diagram illustrating a multi-point synthesis module according to one embodiment of the invention.
  • FIG. 3 is a diagram illustrating a partitioning according to one embodiment of the invention.
  • FIG. 4 is a flowchart illustrating a process to synthesize according to one embodiment of the invention.
  • FIG. 5 is a flowchart illustrating a process to partition according to one embodiment of the invention.
  • FIG. 6 is a flowchart illustrating a process to synthesize lower partitions according to one embodiment of the invention.
  • FIG. 7 is a flowchart illustrating a process to budget top-level constraints according to one embodiment of the invention.
  • FIG. 8 is a flowchart illustrating a process to detect a compile change according to one embodiment of the invention.
  • FIG. 9 is a flowchart illustrating a process to detect a mapping change according to one embodiment of the invention.
  • FIG. 10 is a flowchart illustrating a process to optimize a CP or partition according to one embodiment of the invention.
  • FIG. 11 is a flowchart illustrating a process to construct a gate-level interface logic module according to one embodiment of the invention.
  • DESCRIPTION
  • An embodiment of the present invention includes a partitioner, a synthesizer, and an optimizer. The partitioner partitions a design into a hierarchy of partitions having a top-level partition and lower partitions. The lower partitions include a bottom-level partition. The top-level partition has top-level constraints. The synthesizer synthesizes the lower partitions hierarchically from the bottom-level partition to create lower partition netlists based on the top-level constraints. The optimizer optimizes a top-level netlist corresponding to the top-level partition from the lower partition netlists to satisfy the top-level constraints.
  • In the following description, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, well-known circuits, structures, and techniques have not been shown in order not to obscure the understanding of this description.
  • FIG. 1 is a diagram illustrating a system 100 in which one embodiment of the invention can be practiced. The system 100 includes a host processor 110, a host bus 120, a memory control hub (MCH) 130, a system memory 140, an input/output control hub (ICH) 150, a mass storage device 170, and input/output devices 180 1 to 180 K. Note that the system 100 may include more or less elements than these elements.
  • The host processor 110 represents a central processing unit of any type of architecture, such as embedded processors, mobile processors, micro-controllers, digital signal processors, superscalar computers, vector processors, single instruction multiple data (SIMD) computers, complex instruction set computers (CISC), reduced instruction set computers (RISC), very long instruction word (VLIW), or hybrid architecture.
  • The host bus 120 provides interface signals to allow the processor 110 to communicate with other processors or devices, e.g., the MCH 130. The host bus 120 may support a uni-processor or multiprocessor configuration. The host bus 120 may be parallel, sequential, pipelined, asynchronous, synchronous, or any combination thereof.
  • The MCH 130 provides control and configuration of memory and input/output devices such as the system memory 140 and the ICH 150. The MCH 130 may be integrated into a chipset that integrates multiple functionalities such as the isolated execution mode, host-to-peripheral bus interface, memory control. The MCH 130 interfaces to a peripheral bus. For clarity, not all the peripheral buses are shown. It is contemplated that the system 100 may also include peripheral buses such as Peripheral Component Interconnect (PCI), accelerated graphics port (AGP), Industry Standard Architecture (ISA) bus, and Universal Serial Bus (USB), etc.
  • The system memory 140 stores system code and data. The system memory 140 is typically implemented with dynamic random access memory (DRAM) or static random access memory (SRAM). The system memory may include program code or code segments implementing one embodiment of the invention. The system memory includes a multi-point synthesis module 145. The multi-point synthesis module 145 may be used as part of a design process for Applications Specific Integrated Circuit (ASIC) devices, programmable device such as programmable logic devices (PLD), complex PLD (CPLD), field programmable logic array (FPGA), etc. Any one of the elements of the multi-point synthesis module 145 may be implemented by hardware, software, firmware, microcode, or any combination thereof. The system memory 140 may also include other programs or data which are not shown, such as an operating system.
  • The ICH 150 has a number of functionalities that are designed to support I/O functions. The ICH 150 may also be integrated into a chipset together or separate from the MCH 130 to perform I/O functions. The ICH 150 may include a number of interface and I/O functions such as PCI bus interface to interface to the peripheral bus, processor interface, interrupt controller, direct memory access (DMA) controller, power management logic, timer, system management bus (SMBus), universal serial bus (USB) interface, mass storage interface, low pin count (LPC) interface, etc.
  • The mass storage device 170 stores archive information such as code, programs, files, data, applications, and operating systems. The mass storage device 170 may include compact disk (CD) ROM 172, a digital video/versatile disc (DVD) 173, floppy drive 174, and hard drive 176, and any other magnetic or optic storage devices. The mass storage device 170 provides a mechanism to read machine-accessible media. The machine-accessible media may contain computer readable program code to perform tasks as described in the following.
  • The I/O devices 180 1 to 180 K may include any I/O devices to perform I/O functions. Examples of I/O devices 180 1 to 180 K include controller for input devices (e.g., keyboard, mouse, trackball, pointing device), media card (e.g., audio, video, graphics), network card, and any other peripheral controllers.
  • Elements of one embodiment of the invention may be implemented by hardware, firmware, software or any combination thereof. The term hardware generally refers to an element having a physical structure such as electronic, electromagnetic, optical, electro-optical, mechanical, electro-mechanical parts, etc. The term software generally refers to a logical structure, a method, a procedure, a program, a routine, a process, an algorithm, a formula, a function, an expression, etc. The term firmware generally refers to a logical structure, a method, a procedure, a program, a routine, a process, an algorithm, a formula, a function, an expression, etc that is implemented or embodied in a hardware structure (e.g, flash memory). Examples of firmware may include microcode, writable control store, microprogrammed structure. When implemented in software or firmware, the elements of an embodiment of the present invention are essentially the code segments to perform the necessary tasks. The software/firmware may include the actual code to carry out the operations described in one embodiment of the invention, or code that emulates or simulates the operations. The program or code segments can be stored in a processor or machine accessible medium or transmitted by a computer data signal embodied in a carrier wave, or a signal modulated by a carrier, over a transmission medium. The “processor readable or accessible medium” or “machine readable or accessible medium” may include any medium that can store, transmit, or transfer information. Examples of the processor readable or machine accessible medium include an electronic circuit, a semiconductor memory device, a read only memory (ROM), a flash memory, an erasable ROM (EROM), a floppy diskette, a compact disk (CD) ROM, an optical disk, a hard disk, a fiber optic medium, a radio frequency (RF) link, etc. The computer data signal may include any signal that can propagate over a transmission medium such as electronic network channels, optical fibers, air, electromagnetic, RF links, etc. The code segments may be downloaded via computer networks such as the Internet, Intranet, etc. The machine accessible medium may be embodied in an article of manufacture. The machine accessible medium may include data that, when accessed by a machine, cause the machine to perform the operations described in the following. The machine accessible medium may also include program code embedded therein. The program code may include machine readable code to perform the operations described in the following. The term “data” here refers to any type of information that is encoded for machine-readable purposes. Therefore, it may include program, code, data, file, etc.
  • All or part of an embodiment of the invention may be implemented by hardware, software, or firmware, or any combination thereof. The hardware, software, or firmware element may have several modules coupled to one another. A hardware module is coupled to another module by mechanical, electrical, optical, electromagnetic or any physical connections. A software module is coupled to another module by a function, procedure, method, subprogram, or subroutine call, a jump, a link, a parameter, variable, and argument passing, a function return, etc. A software module is coupled to another module to receive variables, parameters, arguments, pointers, etc. and/or to generate or pass results, updated variables, pointers, etc. A firmware module is coupled to another module by any combination of hardware and software coupling methods above. A hardware, software, or firmware module may be coupled to any one of another hardware, software, or firmware module. A module may also be a software driver or interface to interact with the operating system running on the platform. A module may also be a hardware driver to configure, set up, initialize, send and receive data to and from a hardware device. An apparatus may include any combination of hardware, software, and firmware modules.
  • One embodiment of the invention may be described as a process which is usually depicted as a flowchart, a flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed. A process may correspond to a method, a program, a procedure, a method of manufacturing or fabrication, etc.
  • FIG. 2 is a diagram illustrating the multi-point synthesis module 145 shown in FIG. 1 according to one embodiment of the invention. The multi-point synthesis module 145 includes a partitioner 210, and a synthesizer 220.
  • The partitioner 210 partitions a design project, a design, or a circuit into a hierarchy of partitions using either user-provided partitions or some heuristic if the user-provided partitions are not available.
  • The synthesizer 220 receives the top-level constraints and synthesizes the partitions in a hierarchical manner, from the bottom-level partitions to the top-level partition. The synthesizer 220 divide or budget the top-level constraints into lower partition constraints. The synthesizer 220 includes a compiler 222, a mapper 225, and an optimizer 227. The compiler 222 generates a register transfer level (RTL) netlist from a hardware description language (HDL) text file input. The compiler 222 compiles a source program containing a HDL circuit description. The HDL may be any appropriate HDL such as Very High Speed Integrated Circuit Hardware Description Language (VHDL) or Verilog. The mapper 225 receives the RTL netlist and constraints to generate a gate-level netlist. The mapper 225 generates technology-specific gate level circuit description from the post-partition RTL circuit description and other useful information from the library (not shown). The synthesizer 220 performs a bottom-up synthesis, replacing a parent partition with its lower level synthesized netlists. As the synthesizer 220 progresses from the bottom up, the optimizer 227 optimizes the partition based on the partition constraints. The optimizer 227 also optimizes the top-level partition to satisfy the top-level constraints.
  • Typically, a design process may go through several design cycles, passes, or iterations. At each pass, the user may modify the circuit description, the constraints, or the interface model of a partition. When the design is modified or changed, the synthesizer 220 only re-synthesizes those partitions that contain a change. This allows incremental synthesis.
  • The multi-point synthesis module 145 provides many useful features including (1) time budgeting by optimizing top level connecting RTL netlists, (2) using netlist comparison to detect change instead of using file time stamps, (3) providing optimizable gate-level interface logic modules (ILM's).
  • The advantages of the multi-point module 145 include: (1) designer productivity is increased thanks to the automating bottom-up synthesis; users do not need to write scripts to manage the bottom up flow; (2) design performance and designer productivity are increased by automating time budgeting; (3) design performance is increased by allowing boundary optimizations across partitions or compile points; (4) stability across design cycles or passes is increased by automatically detecting changes in partitions or compile points and only re-compiling those compile points that have changed; and (5) significantly large designs can be synthesized in a completely automated manner thanks to the top-down partitioned flow.
  • FIG. 3 is a diagram illustrating a partitioning 300 according to one embodiment of the invention. The partitioning 300 includes a hierarchy of partitions organized as a tree. The partitioning 300 includes a top-level partition 301 and lower partitions 310 i, 320 j, and 330 k.
  • The top-level partition 301 represents the overall design project or the entire circuit. The top-level partition 301 has top-level constraints such as timing parameters (e.g., propagation delays), gate complexity, types of logic elements, etc. The lower partitions 310 1 to 310 P represent the partition level 1. The lower partitions 320 1 to 320 Q represent the partitions at level 2, etc. The lower partitions 330 1 to 330 R represent the bottom-level partitions or the partitions level N. As is known by one skilled in the art, the number of levels may be any number greater than 1.
  • Each of a lower partition has a parent partition. For example, the lower partition 320 2 has the lower partition 310 2 as its parent. A lower partition typically has one parent, while a parent may have more than one child. For example, the parent partition 310 2 has two child partitions 320 2 and 320 3.
  • The lower partitions may be synthesized separately and independently. This aspect makes effective use of multiprocessing to speed up the synthesis process. The lower partitions may be allocated and assigned to a group of processors. If there are more partitions than the number of processors, the partitions may be grouped in groups such that the synthesis run time of the longest group is minimized.
  • FIG. 4 is a flowchart illustrating a process 400 to synthesize according to one embodiment of the invention. The process 400 in essence implements the multi-point synthesis module 145 shown in FIG. 2.
  • Upon START, the process 400 partitions the design into a hierarchy of partitions (Block 410). The hierarchy of partitions includes a top-level partition and lower partitions. The lower partitions include at least a bottom-level partition. The top-level partition has top-level constraints as described above. The details of Block 410 will be described in FIG. 5.
  • Next, the process 400 synthesizes the lower partitions hierarchically from the bottom-level partition up to the top-level partition to create lower partition netlists based on the top-level constraints (Block 420). The details of Block 420 will be described in FIG. 6. Then, the process 400 optimizes the top-level netlist corresponding to the top-level partition to satisfy the top-level constraints and every compile point (CP) at lower level partitions to satisfy the corresponding partition constraints (Block 430) and is then terminated.
  • FIG. 5 is a flowchart illustrating the process 410 to partition according to one embodiment of the invention.
  • Upon START, the process 410 determines if the user provide the partitions (Block 510). The user may provide partitions in a number of ways such as HDL circuit descriptions, schematic diagrams, etc. If so, the process 420 partitions the design using the user-provided partitions (Block 520) and is then terminated. Otherwise, the process 420 partitions the design using a heuristic or some criteria (Block 530). Examples of the heuristic or criteria include size of blocks, frequency of occurrences of blocks, etc. Then, the process 420 is terminated.
  • FIG. 6 is a flowchart illustrating the process 420 to synthesize lower partitions according to one embodiment of the invention.
  • Upon START, the process 420 budgets the top-level constraints into the lower partition constraints associated with the lower partitions (Block 610). The details of Block 610 will be described in FIG. 7. Then, the process 420 starts from a bottom-level of the hierarchy (Block 612). Next, the process 420 selects a compile point (CP) corresponding to a lower level partition in the unmapped lower partitions (Block 615). The CP may be a soft CP, a hard CP, or a locked CP. The CP may also be designated to inherit the property of another CP to be one of soft, hard, and locked CP. The designation of the type of the CP may be provided by the user or in case of absence of user inputs, a default type may be selected.
  • Next, the process 420 detects a compile change in the CP (Block 620). A compile change is a change in compilation. The details of Block 620 will be described in FIG. 8. The process 420 then determines if there is a compile change in the CP. If there is no compile change, the process 420 retrieves a previously saved CP RTL netlist (Block 630) and proceeds to Block 645. If there is a compile change, the process 420 compiles the CP to generate a current CP RTL netlist (Block 635). Next, the process 420 saves the CP RTL netlist in memory or mass storage (Block 640) which can be retrieved in a subsequent design cycle or pass if there is no compile change.
  • Then, the process 420 detects a mapping change in the CP (Block 645). A mapping change is a change in netlist during mapping. The details of Block 645 will be described in FIG. 9. Next, the process determines if there is a mapping change in the CP. If there is no mapping change, the process 420 retrieves the saved CP gate-level netlist corresponding to the CP (Block 665) and proceeds to Block 670. If there is a mapping change, the process 420 maps the CP to generate a CP gate-level netlist (Block 655). Next, the process 420 saves the CP gate-level netlist in memory or mass storage (Block 660) which can be retrieved in a subsequent design cycle or pass if there is no mapping change.
  • Next, the process 420 determines if the top-level partition has been reached (Block 675). If so, the process 420 is terminated. Otherwise, the process 420 selects a next CP hierarchically (Block 680) and proceeds to Block 615.
  • FIG. 7 is a flowchart illustrating the process 610 to budget top-level constraints according to one embodiment of the invention.
  • Upon START, the process 610 constructs a RTL Interface logic module (ILM) for each of the lower partitions (Block 710). The construction of the RTL ILM is in essence similar to the gate-level ILM described in FIG. 11. All gate-level components have a timing model. A RTL ILM is constructed by first constructing a timing model for each of the RTL primitives. Then, the method described in FIG. 11 can be used to create the RTL ILMs. Next, the process 610 replaces the lower partitions with the corresponding RTL ILMs in the top-level partition (Block 720). Then, the process 610 synthesizes the top-level partition using the top-level constraints (Block 730). Next, the process 610 creates the lower partition constraints based on the synthesized top-level partition (Block 740) and is then terminated.
  • FIG. 8 is a flowchart illustrating the process 620 to detect a compile change according to one embodiment of the invention.
  • Upon START, the process 620 creates a current intermediate netlist of the CP (Block 810). The intermediate netlist is an internal representation of the CP. This intermediate netlist is not yet an RTL netlist. For example, flip-flops may not have been inferred yet. Next, the process 620 determines if there is a previously saved intermediate netlist (Block 820). If not, the process 620 proceeds to Block 870. Otherwise, the process 620 compares the current intermediate netlist with a previously saved intermediate netlist (Block 830).
  • Next, the process 620 determines if the attributes or properties of the CP are the same (Block 840). If not, the process 620 proceeds to Block 870. Otherwise, the process 620 determines if the ports of the CP are the same (Block 850). If not, the process 620 proceeds to Block 870. Otherwise, the process 620 determines if the nets and the net connections of the CP are the same (Block 860). If not, the process 620 determines or declares that there is a compile change (Block 870) and is then terminated. Otherwise, the process 620 determines or declares that there is no compile change (Block 880) and is then terminated.
  • FIG. 9 is a flowchart illustrating the process 645 to detect a mapping change according to one embodiment of the invention.
  • Upon START, the process 645 determines if there is a previously saved CP RTL netlist (Block 910). If not, the process 645 proceeds to Block 960. Otherwise, the process 645 compares the current CP RTL netlist with the previously saved CP RTL netlist (Block 920).
  • Next, the process 645 determines if the attributes or properties (e.g., constraints and optimization directives) of the CP are the same (Block 930). If not, the process 645 proceeds to Block 960. Otherwise, the process 645 determines if the ports of the CP are the same (Block 940). If not, the process 645 proceeds to Block 960. Otherwise, the process 645 determines if the nets and the net connections of the CP are the same (Block 950). If not, the process 620 determines or declares that there is a mapping change (Block 960) and is then terminated. Otherwise, the process 645 determines or declares that there is no mapping change (Block 970) and is then terminated.
  • FIG. 10 is a flowchart illustrating the process 430 to optimize a CP or partition according to one embodiment of the invention.
  • Upon START, the process 430 determines the type of the CP (Block 1010). The CO may be a soft CP, a hard CP, or a locked CP.
  • If it is a soft CP, the process 430 includes the lower level partition in the parent partition (Block 1015). Then, the process 430 modifies a boundary instance of the lower-level partition (Block 1020) if necessary. Next, the process 430 combines the modified boundary instance with a function of the parent partition (Block 1025). Then, the process 430 propagates instance changes between the parent partition and the lower-level partition (Block 1030) and is then terminated. In other words, changes can propagate in both directions; from the parent partition to the lower-level partition and from the lower-level partition to the parent partition. The instance changes are to optimize the partition including sizing, buffering, local gate collapse, and pin swapping.
  • If it is a hard CP, the process 430 includes the lower level partition in the parent partition (Block 1035). Then, the process 430 modifies an instance of a side of the boundary of the lower-level partition (Block 1040). The side can be either side (outside or inside) of the boundary. Then, the process 430 propagates instance changes between the parent partition and the lower level partition (Block 1050) and is then terminated. The direction of the instance changes and the optimization are similar to the soft CP.
  • If it is a locked CP, the process 430 first constructs a gate-level interface logic module (ILM) (Block 1055). Then, the process 430 includes the gate-level ILMs of the lower partitions in the parent partition (Block 1060). Next, the process 430 modifies the instance outside the boundary of the lower level partitions (Block 1065). Then, the process 430 inhibits instance changes between parent partition and the lower level partition (Block 1070) and is then terminated. The term “locked” indicates that all instances of the lower partition are to remain identical and unaffected by the top-level constraints or critical paths. Changes neither propagate into nor out of a locked CP. This type of CP is useful for obtaining stable results for a completed part of the design. It is also expected that the locked CP and the hard CP are used for the partitions that are intended to go to place and route separately.
  • FIG. 11 is a flowchart illustrating the process 1055 to construct a gate-level interface logic module according to one embodiment of the invention.
  • Upon START, the process 1055 collects all the net instances from an input port to input of sequential elements first encountered (Block 1110). Next, the process 1055 collects all the feedback instances involving those sequential elements (Block 1110). Then, the process 1055 collects all net instances from an output port to sequential elements first encountered (Block 1130).
  • Next, the process 1055 collects all the loading net instances involving sequential elements first encountered as traversed from an input or output ports (Block 1040). The loading net instances may provide loading factor that may effect the timing. Then, the process 1055 removes all the net instances that do not connect the sequential element first encountered on paths to an input or output port (Block 1150) and is then terminated.
  • The process for the top-level optimizer is in essence similar to the process for the lower partition optimizer except that the top-level partition is now the parent partition. The lower level partitions include the partitions that are next below the top level partition and that have been traversed upward from the bottom-level partition(s). The constraints used in the optimization process are the constraints corresponding to the partitions.
  • While the invention has been described in terms of several embodiments, those of ordinary skill in the art will recognize that the invention is not limited to the embodiments described, but can be practiced with modification and alteration within the spirit and scope of the appended claims. The description is thus to be regarded as illustrative instead of limiting.

Claims (1)

1. A method for speeding up synthesis of a circuit design in a multiprocessing system, the method comprising:
partitioning the circuit design into a plurality of compile points;
placing the compile points into a number of compile point groups, wherein the number of compile point groups is equal to a number of processors in the multiprocessing system;
assigning each one of the compile point groups to one of the processors; and
synthesizing, in parallel, each one of the compile point groups by the corresponding processor.
US13/330,628 2002-04-11 2011-12-19 Automated Bottom-Up and Top-Down Partitioned Design Synthesis Abandoned US20120089956A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/330,628 US20120089956A1 (en) 2002-04-11 2011-12-19 Automated Bottom-Up and Top-Down Partitioned Design Synthesis
US14/322,905 US10296689B2 (en) 2002-04-11 2014-07-02 Automated bottom-up and top-down partitioned design synthesis

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US37221102P 2002-04-11 2002-04-11
US10/387,802 US8082138B1 (en) 2002-04-11 2003-03-13 Automated bottom-up and top-down partitioned design synthesis
US13/330,628 US20120089956A1 (en) 2002-04-11 2011-12-19 Automated Bottom-Up and Top-Down Partitioned Design Synthesis

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/387,802 Continuation US8082138B1 (en) 2002-04-11 2003-03-13 Automated bottom-up and top-down partitioned design synthesis

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/322,905 Continuation US10296689B2 (en) 2002-04-11 2014-07-02 Automated bottom-up and top-down partitioned design synthesis

Publications (1)

Publication Number Publication Date
US20120089956A1 true US20120089956A1 (en) 2012-04-12

Family

ID=45219261

Family Applications (3)

Application Number Title Priority Date Filing Date
US10/387,802 Active 2025-12-05 US8082138B1 (en) 2002-04-11 2003-03-13 Automated bottom-up and top-down partitioned design synthesis
US13/330,628 Abandoned US20120089956A1 (en) 2002-04-11 2011-12-19 Automated Bottom-Up and Top-Down Partitioned Design Synthesis
US14/322,905 Active 2026-04-24 US10296689B2 (en) 2002-04-11 2014-07-02 Automated bottom-up and top-down partitioned design synthesis

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/387,802 Active 2025-12-05 US8082138B1 (en) 2002-04-11 2003-03-13 Automated bottom-up and top-down partitioned design synthesis

Family Applications After (1)

Application Number Title Priority Date Filing Date
US14/322,905 Active 2026-04-24 US10296689B2 (en) 2002-04-11 2014-07-02 Automated bottom-up and top-down partitioned design synthesis

Country Status (1)

Country Link
US (3) US8082138B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140053119A1 (en) * 2012-08-16 2014-02-20 C2 Design Automation Dba Forte Design Systems Extraction and sharing in high level synthesis
WO2014153029A1 (en) * 2013-03-14 2014-09-25 New York University System, method and computer-accessible medium for providing secure split manufacturing

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8082138B1 (en) * 2002-04-11 2011-12-20 Synopsys, Inc. Automated bottom-up and top-down partitioned design synthesis
US20120066265A1 (en) * 2010-09-10 2012-03-15 Siemens Corporation Method and Apparatus for Supporting Multiple Users Working on a Project
US20180140032A1 (en) * 2016-11-23 2018-05-24 Annie International, Inc. Wig clip and wig base having attached wig clip
US9703920B2 (en) 2015-06-30 2017-07-11 International Business Machines Corporation Intra-run design decision process for circuit synthesis
CN107368643B (en) * 2017-07-13 2020-12-01 湖南中易利华信息技术有限公司 RTL-based module partitioning method and device and terminal equipment
US11366948B2 (en) 2019-10-18 2022-06-21 Synopsys, Inc. Machine-learning enhanced compiler
EP3869380A1 (en) * 2020-02-18 2021-08-25 dspace digital signal processing and control engineering GmbH Method, system and computer program product for floorplanning a reconfigurable device using non-rectangular region boundaries
CN112580286B (en) * 2020-12-18 2022-01-18 广东高云半导体科技股份有限公司 Multithreading synthesis method and device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6295636B1 (en) * 1998-02-20 2001-09-25 Lsi Logic Corporation RTL analysis for improved logic synthesis
US6421818B1 (en) * 1998-02-20 2002-07-16 Lsi Logic Corporation Efficient top-down characterization method
US7047162B1 (en) * 1996-11-18 2006-05-16 Siemens Aktiengesellschaft Computer assisted method for partitioning an electric circuit

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5841663A (en) 1995-09-14 1998-11-24 Vlsi Technology, Inc. Apparatus and method for synthesizing integrated circuits using parameterized HDL modules
JP3276848B2 (en) * 1996-05-31 2002-04-22 三洋電機株式会社 Television receiver
US5812417A (en) 1996-06-24 1998-09-22 National Semiconductor Corporation Method and apparatus utilizing datapath line minimization to generate datapath floor plan for integrated circuit
US6131182A (en) * 1997-05-02 2000-10-10 International Business Machines Corporation Method and apparatus for synthesizing and optimizing control logic based on SRCMOS logic array macros
US6170080B1 (en) 1997-08-29 2001-01-02 Vlsi Technology, Inc. Method and system for floorplanning a circuit design at a high level of abstraction
US6189131B1 (en) 1998-01-14 2001-02-13 Lsi Logic Corporation Method of selecting and synthesizing metal interconnect wires in integrated circuits
US6145117A (en) * 1998-01-30 2000-11-07 Tera Systems Incorporated Creating optimized physical implementations from high-level descriptions of electronic design using placement based information
US6108494A (en) * 1998-08-24 2000-08-22 Mentor Graphics Corporation Optimizing runtime communication processing between simulators
US6438735B1 (en) 1999-05-17 2002-08-20 Synplicity, Inc. Methods and apparatuses for designing integrated circuits
US6671866B2 (en) * 2000-02-29 2003-12-30 Cadence Design Systems, Inc. Device level layout optimization in electronic design automation
US6711729B1 (en) * 2000-12-05 2004-03-23 Synplicity, Inc. Methods and apparatuses for designing integrated circuits using automatic reallocation techniques
US6865726B1 (en) * 2001-10-22 2005-03-08 Cadence Design Systems, Inc. IC layout system employing a hierarchical database by updating cell library
US6578183B2 (en) * 2001-10-22 2003-06-10 Silicon Perspective Corporation Method for generating a partitioned IC layout
US6651235B2 (en) * 2001-10-30 2003-11-18 Cadence Design Systems, Inc. Scalable, partitioning integrated circuit layout system
US8082138B1 (en) * 2002-04-11 2011-12-20 Synopsys, Inc. Automated bottom-up and top-down partitioned design synthesis
US8640066B1 (en) * 2007-01-10 2014-01-28 Cadence Design Systems, Inc. Multi-phase models for timing closure of integrated circuit designs
US8365113B1 (en) * 2007-01-10 2013-01-29 Cadence Design Systems, Inc. Flow methodology for single pass parallel hierarchical timing closure of integrated circuit designs
US7823107B2 (en) * 2007-10-19 2010-10-26 International Business Machines Corporation Transition balancing for noise reduction/Di/Dt reduction during design, synthesis, and physical design
US9576092B2 (en) * 2009-02-24 2017-02-21 Mentor Graphics Corporation Synthesis using multiple synthesis engine configurations
US8181145B2 (en) * 2009-03-11 2012-05-15 Synopsys, Inc. Method and apparatus for generating a floorplan using a reduced netlist
US8463587B2 (en) * 2009-07-28 2013-06-11 Synopsys, Inc. Hierarchical order ranked simulation of electronic circuits
US9026978B1 (en) * 2013-10-24 2015-05-05 Cadence Design Systems, Inc. Reverse interface logic model for optimizing physical hierarchy under full chip constraint

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7047162B1 (en) * 1996-11-18 2006-05-16 Siemens Aktiengesellschaft Computer assisted method for partitioning an electric circuit
US6295636B1 (en) * 1998-02-20 2001-09-25 Lsi Logic Corporation RTL analysis for improved logic synthesis
US6421818B1 (en) * 1998-02-20 2002-07-16 Lsi Logic Corporation Efficient top-down characterization method

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Batra et al. "Hcompare: A Hierarchical NEtlist Comparison Program", 1992, 29th ACM/IEEE Design Automation Conference, pages 299-304. *
Patil et al. "Efficient Circuit Partitioning Alogrithms for Parallel Logic Simulation", 1989, Proceedings fo the Supercomputing Conference, 10 pages. *
Wever et al. "Parallel Transient Analysis for Circuit Simulation", IEEE, 1996, Proceedings of the 29th Annual Hawaii International Conference on System Sciences, pages 442-447. *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140053119A1 (en) * 2012-08-16 2014-02-20 C2 Design Automation Dba Forte Design Systems Extraction and sharing in high level synthesis
US8887111B2 (en) * 2012-08-16 2014-11-11 C2 Design Automation Extraction and sharing in high level synthesis
WO2014153029A1 (en) * 2013-03-14 2014-09-25 New York University System, method and computer-accessible medium for providing secure split manufacturing
US10423749B2 (en) 2013-03-14 2019-09-24 New York University System, method and computer-accessible medium for providing secure split manufacturing

Also Published As

Publication number Publication date
US20150012898A1 (en) 2015-01-08
US10296689B2 (en) 2019-05-21
US8082138B1 (en) 2011-12-20

Similar Documents

Publication Publication Date Title
US10296689B2 (en) Automated bottom-up and top-down partitioned design synthesis
Eles et al. System synthesis with VHDL
Niemann Hardware/software co-design for data flow dominated embedded systems
US6421818B1 (en) Efficient top-down characterization method
US6496972B1 (en) Method and system for circuit design top level and block optimization
Balarin et al. Synthesis of software programs for embedded control applications
US20100218146A1 (en) Synthesis using multiple synthesis engine configurations
US8584062B2 (en) Tool suite for RTL-level reconfiguration and repartitioning
JPH04288680A (en) Method for producing description of structure of circuit or device from a higher level of behavior-oriented description
EP1668444A2 (en) Improved computerized extension apparatus and methods
US20130091482A1 (en) Method and apparatus for design space exploration acceleration
Bergamaschi et al. High-level synthesis in an industrial environment
Koul et al. Aha: An agile approach to the design of coarse-grained reconfigurable accelerators and compilers
Jones et al. Pact hdl: A c compiler targeting asics and fpgas with power and performance optimizations
Lis et al. VHDL synthesis using structured modeling
Gajski et al. IP-Centric Methodology and Design with the SpecC Language: System Level Design of Embedded Systems
Trevillyan An overview of logic synthesis systems
Nedjah et al. Co-design for system acceleration: a quantitative approach
US7360177B1 (en) Method and arrangement providing for implementation granularity using implementation sets
Hainque et al. Cronos: a separate compilation tool set for modular esterel applications
Basu et al. High level synthesis from Sim-nML processor models
KR20010104622A (en) Method and Apparatus for managing the configuration and functionality of a semiconductor design
CN116457789A (en) Model-based design and partitioning for heterogeneous integrated circuits
Keutzer The need for formal methods for integrated circuit design
US20120226890A1 (en) Accelerator and data processing method

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION