US20140282350A1 - Automatic clock tree synthesis exceptions generation - Google Patents

Automatic clock tree synthesis exceptions generation Download PDF

Info

Publication number
US20140282350A1
US20140282350A1 US14/066,324 US201314066324A US2014282350A1 US 20140282350 A1 US20140282350 A1 US 20140282350A1 US 201314066324 A US201314066324 A US 201314066324A US 2014282350 A1 US2014282350 A1 US 2014282350A1
Authority
US
United States
Prior art keywords
sequential circuit
sequential
circuit elements
cts
clock
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.)
Granted
Application number
US14/066,324
Other versions
US8843872B1 (en
Inventor
Ssu-Min Chang
Aiqun Cao
Cheng-Liang Ding
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.)
Synopsys Inc
Original Assignee
Synopsys 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 Synopsys Inc filed Critical Synopsys Inc
Priority to US14/066,324 priority Critical patent/US8843872B1/en
Assigned to SYNOPSYS, INC. reassignment SYNOPSYS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DING, CHENG-LIANG, CHANG, SSU-MIN, CAO, AIQUN
Priority to PCT/US2014/023812 priority patent/WO2014150620A1/en
Priority to CN201480007956.2A priority patent/CN104981806B/en
Priority to KR1020157024453A priority patent/KR102129649B1/en
Publication of US20140282350A1 publication Critical patent/US20140282350A1/en
Application granted granted Critical
Publication of US8843872B1 publication Critical patent/US8843872B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • G06F17/5031
    • 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/396Clock trees
    • 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
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Definitions

  • This disclosure relates to clock tree synthesis during electronic circuit design. More specifically, this disclosure relates to automatic clock tree synthesis exceptions generation.
  • Clock tree synthesis is an important step in electronic design automation (EDA) that refers to the process of creating a clock distribution network for distributing a clock signal to a set of sequential circuit elements in a circuit design.
  • EDA electronic design automation
  • the quality of the clock trees that is generated by CTS can have a significant impact on downstream steps in the EDA design flow.
  • CTS exceptions instructs the CTS engine to ignore one or more sequential circuit elements during clock skew minimization. Once the CTS exceptions for a circuit design have been generated, CTS can be performed on the circuit design by using the CTS exceptions.
  • Some embodiments described herein use on one or more criteria to identify sequential circuit elements that can be ignored during clock skew minimization. Specifically, some embodiments can identify sequential circuit elements whose clock skew cannot be balanced with other sequential circuit elements due to structural reasons, identify sequential timing elements that do not have a timing relationship with other sequential timing elements in the clock tree, and/or identify sequential circuit elements whose data pins have a sufficiently large slack so that clock skew is not expected to cause timing violations at any of the data pins. Next, the embodiments can generate clock tree exceptions based on the identified sequential circuit elements.
  • FIG. 1 illustrates synchronous circuitry in accordance with some embodiments described herein.
  • FIG. 2 illustrates a situation where it is structurally impossible to balance the clock tree in accordance with some embodiments described herein.
  • FIG. 3 illustrates a process for generating CTS exceptions in accordance with some embodiments described herein.
  • FIG. 4 illustrates a computer system in accordance with some embodiments described herein.
  • X, Y, and/or Z covers the following cases: (1) only X; (2) only Y; (3) only Z; (4) X and Y; (5) X and Z; (6) Y and Z; and (7) X, Y, and Z.
  • based on means “based solely or partially on.”
  • An EDA flow can be used to create a circuit design. Once the circuit design is finalized, it can undergo fabrication, packaging, and assembly to produce integrated circuit chips.
  • An EDA flow can include multiple steps, and each step can involve using one or more EDA software tools. Some EDA steps and software tools are described below. These examples of EDA steps and software tools are illustrative purposes only and are not intended to limit the embodiments to the forms disclosed.
  • Some EDA software tools enable circuit designers to describe the functionality that they want to implement. These tools also enable circuit designers to perform what-if planning to refine functionality, check costs, etc.
  • the HDL hardware description language
  • the design can be checked for functional accuracy, e.g., the design can be checked to ensure that it produces the correct outputs.
  • the HDL code can be translated to a netlist using one or more EDA software tools. Further, the netlist can be optimized for the target technology, and tests can be designed and implemented to check the finished chips. During netlist verification, the netlist can be checked for compliance with timing constraints and for correspondence with the HDL code.
  • an overall floorplan for the chip can be constructed and analyzed for timing and top-level routing.
  • circuit elements can be positioned in the layout (placement) and can be electrically coupled (routing).
  • the circuit's functionality can be verified at a transistor level and parasitics can be extracted.
  • the design can be checked to ensure correctness for manufacturing, electrical issues, lithographic issues, and circuitry.
  • the design can be “taped-out” to produce masks which are used during fabrication.
  • FIG. 1 illustrates synchronous circuitry in accordance with some embodiments described herein.
  • Circuitry 100 includes buffers 104 , 106 , 107 , and 108 , sequential circuit elements 110 , 112 , 114 , 116 , and 118 , and combinational logic clouds 120 , 122 , and 124 .
  • a clock signal is distributed from clock pin 102 to sequential circuit elements 110 , 112 , 114 , 116 , and 118 via a clock tree that includes buffers 104 , 106 , 107 , and 108 .
  • a sequential circuit element is generally any element that performs an operation based on a clock signal.
  • a flip-flop is a sequential circuit element.
  • a combinational logic cloud includes one or more combinational logic gates (e.g., AND gates, OR gates, NOT gates, XOR gates, multiplexers, demultiplexers, buffers, repeaters, etc.), but does not include any sequential circuit elements.
  • sequential circuit element 110 can launch a signal that passes through combinational logic cloud 120 (which may logically combine the signal with other signals), and which can then be captured by sequential circuit element 118 .
  • the launch and capture are synchronized based on the clock signal that is provided to sequential circuit elements 110 and 118 .
  • a clock tree comprises circuitry that distributes a clock signal to one or more sequential circuit elements in the circuit design.
  • the clock tree shown in FIG. 1 includes buffers 104 , 106 , 107 , and 108 , and electrically connects clock pin 102 to the clock input pins of sequential circuit elements 110 , 112 , 114 , 116 , and 118 .
  • a clock domain can refer to a portion of a circuit design that is clocked using a given clock signal.
  • circuitry 100 shown in FIG. 1 is part of the clock domain that corresponds to the clock signal that is distributed from clock pin 102 .
  • a circuit design may include multiple clock domains, and each clock domain can include multiple clock trees.
  • an optimal clock tree is a clock tree that minimizes clock skew while satisfying timing, area, and leakage power constraints.
  • a clock tree optimization problem becomes harder as the size of the clock tree increases.
  • CTS generates a clock tree that includes clock pins for which balancing clock skew was not necessary, then the generated clock tree is unlikely to be as optimal as a clock tree that would have been generated by the CTS engine if the CTS engine had ignored clock pins for which balancing clock skew was not necessary. Therefore, it is beneficial to identify pins that can be ignored for clock skew minimization during CTS.
  • Each pin that can be ignored for clock skew minimization during CTS is called a “CTS exception.”
  • FIG. 2 illustrates a situation where it is structurally impossible to balance the clock tree in accordance with some embodiments described herein.
  • Circuitry 200 includes two groups of sequential circuit elements: groups 202 and 204 .
  • Multiplexer 208 receives two clock signals: FCLK (this clock is used during normal functioning of circuitry 200 ) and SCANCLK (this clock is used for testing circuitry 200 ).
  • Select input “MODE” determines which clock signal is outputted by multiplexer 208 . Specifically, depending on the mode of operation of circuitry 200 (e.g., “normal” or “test”), multiplexer 208 outputs the appropriate clock on its output pin.
  • Group 202 is clocked using the output of multiplexer 208 .
  • Group 204 is clocked using clock signal GenFCLK that is generated by sequential circuit element 206 based on clock signal FCLK.
  • the frequency of clock signal GenFCLK is half of the frequency of clock signal FCLK.
  • the functional clock signal FCLK and the scan clock signal SCANCLK have conflicting clock skew balancing requirements.
  • SCANCLK the clock skew needs to be balanced between sequential circuit elements in group 202 and sequential circuit element 206 .
  • clock signal FCLK the clock skew needs to be balanced between sequential circuit elements in groups 202 and 204 .
  • FCLK it is desirable to minimize the clock skew between any two of the following set of sequential circuit elements: sequential circuit elements in groups 202 and 204 .
  • some embodiments described herein create a CTS exception for sequential circuit element 206 when the clock tree is being balanced for clock signal SCANCLK.
  • the CTS exception instructs the CTS engine to ignore the clock input of sequential circuit element 206 when clock skew is being minimized for SCANCLK.
  • a direct timing relationship exists between two sequential circuit elements if one sequential circuit element launches a signal and the other captures the signal (the signal may optionally pass through a combinational logic cloud before being captured). For example, in FIG. 1 , sequential circuit element 112 launches a signal that passes through combinational logic cloud 122 (which may logically combine the signal with other signals) and is captured by sequential circuit element 114 . Therefore, sequential circuit elements 112 and 114 have a direct timing relationship.
  • a transitive timing relationship exists between sequential circuit elements F 1 and F N if and only if a series of sequential circuit elements F 1 , F 2 , . . . , F N-1 , F N exists such that a direct timing relationship exists between every pair of neighboring sequential circuit elements in the series (i.e., a direct timing relationship exists between sequential circuit elements F i and F i+1 , where 1 ⁇ i ⁇ N ⁇ 1).
  • a direct timing relationship exists between sequential circuit elements 114 and 112 (because sequential circuit element 114 launches a signal that passes through combination logic block 124 and is captured by sequential circuit element 112 ), and a direct timing relationship exists between sequential circuit elements 112 and 116 (because sequential circuit element 112 launches a signal that passes through combination logic block 122 and is captured by sequential circuit element 116 ). Therefore, a transitive timing relationship exists between sequential circuit elements 114 and 116 . Note that both a direct and a transitive timing relationship may exist between two sequential circuit elements.
  • timing relationship i.e., neither a direct nor a transitive timing relationship
  • no timing relationship exists between sequential circuit element 110 and the other sequential circuit elements.
  • no timing relationship exists between sequential circuit element 118 and the other sequential circuit elements. Therefore, some embodiments described herein can generate CTS exceptions for sequential circuit elements 110 and 118 so that these sequential circuit elements can be ignored as far as clock skew minimization is concerned.
  • the system can identify sequential circuit elements that do not have any timing relationship with other sequential circuit elements as follows.
  • Each sequential circuit element in the circuit design can be represented by a vertex in a graph, and an edge can be created between two vertices if the corresponding sequential circuit elements have a direct or a transitive timing relationship.
  • a connected component in the graph corresponds to a group of sequential circuit elements that have timing relationship among themselves. Therefore, if a connected component in the graph has only one sequential circuit element, then some embodiments can generate a CTS exception for this sequential circuit element (so that the sequential circuit element is ignored during clock skew minimization).
  • Yet another situation in which a pin can be ignored during CTS is when the slacks on the data pins of a sequential circuit element are sufficiently large. Specifically, if the slack on the data pins of a sequential circuit element is so large that the clock skew is never expected to cause a timing violation, then the clock pin on the sequential circuit element can be ignored during CTS.
  • the arrival times are propagated forward from the timing start-points to the timing end-points, and the required times are propagated backward from the timing end-points to the timing start-points.
  • the slack at a given pin in the circuit design is the difference between the propagated arrival time at the pin and the propagated required time at the pin.
  • Sequential circuit element 112 launches a data signal at a given clock edge. This data signal then passes through logic cloud 122 and arrives at the data input pin of sequential circuit element 114 (this is the arrival time). For correct circuit operation, the data signal must arrive at the data input pin of sequential circuit element 114 at a certain time (this is the required time) before the next clock edge arrives at the clock input of sequential circuit element 114 .
  • the setup time of the sequential circuit element dictates the time difference between when the data signal arrives at the data pin and the next clock edge arrives at the clock input pin. A similar timing constraint can be derived based on the hold time for a sequential circuit element.
  • the difference between the arrival time and the required time at a pin is called the slack at the pin.
  • a negative slack corresponds to a timing violation and needs to be fixed to ensure correct operation of the circuit.
  • a positive slack corresponds to the amount of time by which the arrival time or the required time can worsen (i.e., the arrival time can be delayed or the required time can be moved earlier) without causing a timing violation. Note that both the delay through logic cloud 122 and the clock skew between sequential circuit elements 112 and 114 affect the slack at the data input pin of sequential circuit element 114 .
  • Some embodiments described herein can determine the minimum slack over all of the data input pins of a sequential circuit element. Next, the embodiments can compare the minimum slack with the maximum clock skew that is expected to exist in the clock tree. If the minimum slack is greater than the maximum clock skew by a threshold amount (the threshold can be zero or can be a positive value), then some embodiments can generate a CTS exception for the sequential circuit element.
  • FIG. 3 illustrates a process for generating CTS exceptions in accordance with some embodiments described herein.
  • the process can use on one or more criteria to identify sequential circuit elements that can be ignored during clock skew minimization. For example, the process can identify sequential circuit elements whose clock skew cannot be balanced with other sequential circuit elements due to structural reasons (operation 302 ), identify sequential timing elements that do not have a timing relationship with other sequential timing elements in the clock tree (operation 304 ), and/or identify sequential circuit elements whose data pins have a sufficiently large slack so that clock skew is not expected to cause timing violations at any of the data pins (operation 306 ).
  • the process can generate clock tree exceptions based on the identified sequential circuit elements (operation 308 ).
  • FIG. 4 illustrates a computer system in accordance with an embodiment of the present invention.
  • a computer or a computer system can generally be any system that can perform computations.
  • a computer system can be a microprocessor, an application specific integrated circuit, a distributed computing system, a cloud computing system, or any other computing system now known or later developed.
  • Computer system 402 comprises processor 404 , memory 406 , and storage 408 .
  • Computer system 402 can be coupled with display 414 , keyboard 410 , and pointing device 412 .
  • Storage 408 can generally be any device that can store data.
  • a storage device can be a magnetic, an optical, or a magneto-optical storage device, or it can be based on flash memory and/or battery-backed up memory.
  • Storage 408 can store application 416 , operating system 418 , and data 420 .
  • Application 416 can include instructions that when executed by computer 402 cause computer 402 to perform one or more processes that are implicitly or explicitly described in this disclosure.
  • Data 420 can include any data that is inputted into or outputted by application 416 .
  • a non-transitory computer-readable storage medium includes all computer-readable storage mediums with the sole exception of a propagating electromagnetic wave or signal.
  • a non-transitory computer-readable storage medium includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media, now known or later developed, that are capable of storing code and/or data.
  • Hardware modules or apparatuses described in this disclosure include, but are not limited to, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), dedicated or shared processors, and/or other hardware modules or apparatuses now known or later developed.
  • the methods and processes described in this disclosure can be partially or fully embodied as code and/or data stored in a non-transitory computer-readable storage medium or device, so that when a computer system reads and executes the code and/or data, the computer system performs the associated methods and processes.
  • the methods and processes can also be partially or fully embodied in hardware modules or apparatuses. Note that the methods and processes can be embodied using a combination of code, data, and hardware modules or apparatuses.

Abstract

Systems and techniques are described for automatically generating clock tree synthesis (CTS) exceptions. The process can use on one or more criteria to identify sequential circuit elements that can be ignored during clock skew minimization. For example, the process can identify sequential circuit elements whose clock skew cannot be balanced with other sequential circuit elements due to structural reasons, identify sequential timing elements that do not have a timing relationship with other sequential timing elements in the clock tree, and/or identify sequential circuit elements whose data pins have a sufficiently large slack so that clock skew is not expected to cause timing violations at any of the data pins. Next, the process can generate clock tree exceptions based on the identified sequential circuit elements.

Description

    RELATED APPLICATION
  • This application claims priority to U.S. Provisional Patent Application No. 61/792,688, entitled “Automatic CTS exceptions,” by the same inventors, having Attorney Docket No. SNPS-2173US01P, filed on 15 Mar. 2013, the contents of which are herein incorporated by reference in their entirety for all purposes.
  • BACKGROUND
  • 1. Technical Field
  • This disclosure relates to clock tree synthesis during electronic circuit design. More specifically, this disclosure relates to automatic clock tree synthesis exceptions generation.
  • 2. Related Art
  • Advances in semiconductor technology presently make it possible to integrate hundreds of millions of transistors onto a single semiconductor chip. This dramatic increase in semiconductor integration densities has made it considerably more challenging to design circuits.
  • Clock tree synthesis (CTS) is an important step in electronic design automation (EDA) that refers to the process of creating a clock distribution network for distributing a clock signal to a set of sequential circuit elements in a circuit design. The quality of the clock trees that is generated by CTS can have a significant impact on downstream steps in the EDA design flow.
  • SUMMARY
  • Some embodiments described herein automatically generate CTS exceptions. A CTS exception instructs the CTS engine to ignore one or more sequential circuit elements during clock skew minimization. Once the CTS exceptions for a circuit design have been generated, CTS can be performed on the circuit design by using the CTS exceptions.
  • Some embodiments described herein use on one or more criteria to identify sequential circuit elements that can be ignored during clock skew minimization. Specifically, some embodiments can identify sequential circuit elements whose clock skew cannot be balanced with other sequential circuit elements due to structural reasons, identify sequential timing elements that do not have a timing relationship with other sequential timing elements in the clock tree, and/or identify sequential circuit elements whose data pins have a sufficiently large slack so that clock skew is not expected to cause timing violations at any of the data pins. Next, the embodiments can generate clock tree exceptions based on the identified sequential circuit elements.
  • BRIEF DESCRIPTION OF THE FIGURES
  • FIG. 1 illustrates synchronous circuitry in accordance with some embodiments described herein.
  • FIG. 2 illustrates a situation where it is structurally impossible to balance the clock tree in accordance with some embodiments described herein.
  • FIG. 3 illustrates a process for generating CTS exceptions in accordance with some embodiments described herein.
  • FIG. 4 illustrates a computer system in accordance with some embodiments described herein.
  • DETAILED DESCRIPTION
  • The following description is presented to enable any person skilled in the art to make and use the invention, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present invention. Thus, the present invention is not limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein. In this disclosure, when the term “and/or” is used with a list of entities, it refers to all possible combinations of the list of entities. For example, the phrase “X, Y, and/or Z” covers the following cases: (1) only X; (2) only Y; (3) only Z; (4) X and Y; (5) X and Z; (6) Y and Z; and (7) X, Y, and Z. Additionally, in this disclosure, the term “based on” means “based solely or partially on.”
  • Overview of an Electronic Design Automation (EDA) Flow
  • An EDA flow can be used to create a circuit design. Once the circuit design is finalized, it can undergo fabrication, packaging, and assembly to produce integrated circuit chips. An EDA flow can include multiple steps, and each step can involve using one or more EDA software tools. Some EDA steps and software tools are described below. These examples of EDA steps and software tools are illustrative purposes only and are not intended to limit the embodiments to the forms disclosed.
  • Some EDA software tools enable circuit designers to describe the functionality that they want to implement. These tools also enable circuit designers to perform what-if planning to refine functionality, check costs, etc. During logic design and functional verification, the HDL (hardware description language), e.g., SystemVerilog, code for modules in the system can be written and the design can be checked for functional accuracy, e.g., the design can be checked to ensure that it produces the correct outputs.
  • During synthesis and design for test, the HDL code can be translated to a netlist using one or more EDA software tools. Further, the netlist can be optimized for the target technology, and tests can be designed and implemented to check the finished chips. During netlist verification, the netlist can be checked for compliance with timing constraints and for correspondence with the HDL code.
  • During design planning, an overall floorplan for the chip can be constructed and analyzed for timing and top-level routing. During physical implementation, circuit elements can be positioned in the layout (placement) and can be electrically coupled (routing).
  • During analysis and extraction, the circuit's functionality can be verified at a transistor level and parasitics can be extracted. During physical verification, the design can be checked to ensure correctness for manufacturing, electrical issues, lithographic issues, and circuitry.
  • During resolution enhancement, geometric manipulations can be performed on the layout to improve manufacturability of the design. During mask data preparation, the design can be “taped-out” to produce masks which are used during fabrication.
  • Clock Trees
  • Synchronous circuit designs can be viewed as a collection of sequential circuit elements that are electrically connected via combinational logic clouds. For example, FIG. 1 illustrates synchronous circuitry in accordance with some embodiments described herein. Circuitry 100 includes buffers 104, 106, 107, and 108, sequential circuit elements 110, 112, 114, 116, and 118, and combinational logic clouds 120, 122, and 124. A clock signal is distributed from clock pin 102 to sequential circuit elements 110, 112, 114, 116, and 118 via a clock tree that includes buffers 104, 106, 107, and 108. A sequential circuit element is generally any element that performs an operation based on a clock signal. For example, a flip-flop is a sequential circuit element. A combinational logic cloud includes one or more combinational logic gates (e.g., AND gates, OR gates, NOT gates, XOR gates, multiplexers, demultiplexers, buffers, repeaters, etc.), but does not include any sequential circuit elements.
  • Data transfer between sequential circuit elements is synchronized using one or more clock signals. For example, sequential circuit element 110 can launch a signal that passes through combinational logic cloud 120 (which may logically combine the signal with other signals), and which can then be captured by sequential circuit element 118. The launch and capture are synchronized based on the clock signal that is provided to sequential circuit elements 110 and 118.
  • A clock tree comprises circuitry that distributes a clock signal to one or more sequential circuit elements in the circuit design. For example, the clock tree shown in FIG. 1 includes buffers 104, 106, 107, and 108, and electrically connects clock pin 102 to the clock input pins of sequential circuit elements 110, 112, 114, 116, and 118. A clock domain can refer to a portion of a circuit design that is clocked using a given clock signal. For example, circuitry 100 shown in FIG. 1 is part of the clock domain that corresponds to the clock signal that is distributed from clock pin 102. A circuit design may include multiple clock domains, and each clock domain can include multiple clock trees.
  • Process for Automatically Generating CTS Exceptions
  • The goal of CTS is to create an optimal clock tree. According to one definition, an optimal clock tree is a clock tree that minimizes clock skew while satisfying timing, area, and leakage power constraints. In general, a clock tree optimization problem becomes harder as the size of the clock tree increases. Furthermore, if CTS generates a clock tree that includes clock pins for which balancing clock skew was not necessary, then the generated clock tree is unlikely to be as optimal as a clock tree that would have been generated by the CTS engine if the CTS engine had ignored clock pins for which balancing clock skew was not necessary. Therefore, it is beneficial to identify pins that can be ignored for clock skew minimization during CTS. Each pin that can be ignored for clock skew minimization during CTS is called a “CTS exception.” Some embodiments described in this disclosure automatically generate CTS exceptions. A few situations in which a pin can be ignored for clock skew minimization are now described.
  • In some situations it is structurally impossible to balance the clock tree (i.e., structurally impossible to minimize the skew across the clock tree). This situation can occur when a sequential circuit element is being used to generate a clock (e.g., when the sequential circuit element is being used as a clock divider). FIG. 2 illustrates a situation where it is structurally impossible to balance the clock tree in accordance with some embodiments described herein. Circuitry 200 includes two groups of sequential circuit elements: groups 202 and 204. Multiplexer 208 receives two clock signals: FCLK (this clock is used during normal functioning of circuitry 200) and SCANCLK (this clock is used for testing circuitry 200). Select input “MODE” determines which clock signal is outputted by multiplexer 208. Specifically, depending on the mode of operation of circuitry 200 (e.g., “normal” or “test”), multiplexer 208 outputs the appropriate clock on its output pin.
  • Group 202 is clocked using the output of multiplexer 208. Group 204 is clocked using clock signal GenFCLK that is generated by sequential circuit element 206 based on clock signal FCLK. In the example shown in FIG. 2, the frequency of clock signal GenFCLK is half of the frequency of clock signal FCLK.
  • Note that the functional clock signal FCLK and the scan clock signal SCANCLK have conflicting clock skew balancing requirements. Specifically, for SCANCLK, the clock skew needs to be balanced between sequential circuit elements in group 202 and sequential circuit element 206. In other words, for SCANCLK, it is desirable to minimize the clock skew between any two of the following set of sequential circuit elements: sequential circuit element 206 and the sequential circuit elements in group 202. On the other hand, for clock signal FCLK, the clock skew needs to be balanced between sequential circuit elements in groups 202 and 204. In other words, for FCLK, it is desirable to minimize the clock skew between any two of the following set of sequential circuit elements: sequential circuit elements in groups 202 and 204. Note that, these two clock skew balancing requirements imply minimizing the clock skew between any two of the following set of sequential circuit elements: sequential circuit element 206 and the sequential circuit elements in group 204. However, that is structurally impossible because the sequential circuit elements in group 204 are clocked using the output from sequential circuit element 206.
  • Therefore, in such situations, some embodiments described herein create a CTS exception for sequential circuit element 206 when the clock tree is being balanced for clock signal SCANCLK. The CTS exception instructs the CTS engine to ignore the clock input of sequential circuit element 206 when clock skew is being minimized for SCANCLK.
  • Another situation in which a pin can be ignored during clock skew minimization is when no timing relationship exists between a sequential circuit element and other sequential circuit elements. A direct timing relationship exists between two sequential circuit elements if one sequential circuit element launches a signal and the other captures the signal (the signal may optionally pass through a combinational logic cloud before being captured). For example, in FIG. 1, sequential circuit element 112 launches a signal that passes through combinational logic cloud 122 (which may logically combine the signal with other signals) and is captured by sequential circuit element 114. Therefore, sequential circuit elements 112 and 114 have a direct timing relationship.
  • A transitive timing relationship exists between sequential circuit elements F1 and FN if and only if a series of sequential circuit elements F1, F2, . . . , FN-1, FN exists such that a direct timing relationship exists between every pair of neighboring sequential circuit elements in the series (i.e., a direct timing relationship exists between sequential circuit elements Fi and Fi+1, where 1≦i≦N−1). For example, a direct timing relationship exists between sequential circuit elements 114 and 112 (because sequential circuit element 114 launches a signal that passes through combination logic block 124 and is captured by sequential circuit element 112), and a direct timing relationship exists between sequential circuit elements 112 and 116 (because sequential circuit element 112 launches a signal that passes through combination logic block 122 and is captured by sequential circuit element 116). Therefore, a transitive timing relationship exists between sequential circuit elements 114 and 116. Note that both a direct and a transitive timing relationship may exist between two sequential circuit elements.
  • However, there are situations where no timing relationship (i.e., neither a direct nor a transitive timing relationship) exists between a sequential circuit element and other sequential circuit elements. For example, no timing relationship exists between sequential circuit element 110 and the other sequential circuit elements. Likewise, no timing relationship exists between sequential circuit element 118 and the other sequential circuit elements. Therefore, some embodiments described herein can generate CTS exceptions for sequential circuit elements 110 and 118 so that these sequential circuit elements can be ignored as far as clock skew minimization is concerned.
  • In some embodiments, the system can identify sequential circuit elements that do not have any timing relationship with other sequential circuit elements as follows. Each sequential circuit element in the circuit design can be represented by a vertex in a graph, and an edge can be created between two vertices if the corresponding sequential circuit elements have a direct or a transitive timing relationship. Note that a connected component in the graph corresponds to a group of sequential circuit elements that have timing relationship among themselves. Therefore, if a connected component in the graph has only one sequential circuit element, then some embodiments can generate a CTS exception for this sequential circuit element (so that the sequential circuit element is ignored during clock skew minimization).
  • Yet another situation in which a pin can be ignored during CTS is when the slacks on the data pins of a sequential circuit element are sufficiently large. Specifically, if the slack on the data pins of a sequential circuit element is so large that the clock skew is never expected to cause a timing violation, then the clock pin on the sequential circuit element can be ignored during CTS. During static timing analysis, the arrival times are propagated forward from the timing start-points to the timing end-points, and the required times are propagated backward from the timing end-points to the timing start-points. The slack at a given pin in the circuit design is the difference between the propagated arrival time at the pin and the propagated required time at the pin.
  • To illustrate arrival times and required times, consider circuitry 100 shown in FIG. 1. Sequential circuit element 112 launches a data signal at a given clock edge. This data signal then passes through logic cloud 122 and arrives at the data input pin of sequential circuit element 114 (this is the arrival time). For correct circuit operation, the data signal must arrive at the data input pin of sequential circuit element 114 at a certain time (this is the required time) before the next clock edge arrives at the clock input of sequential circuit element 114. The setup time of the sequential circuit element dictates the time difference between when the data signal arrives at the data pin and the next clock edge arrives at the clock input pin. A similar timing constraint can be derived based on the hold time for a sequential circuit element.
  • The difference between the arrival time and the required time at a pin is called the slack at the pin. A negative slack corresponds to a timing violation and needs to be fixed to ensure correct operation of the circuit. A positive slack corresponds to the amount of time by which the arrival time or the required time can worsen (i.e., the arrival time can be delayed or the required time can be moved earlier) without causing a timing violation. Note that both the delay through logic cloud 122 and the clock skew between sequential circuit elements 112 and 114 affect the slack at the data input pin of sequential circuit element 114. If the slack at the data input pin of sequential circuit element 114 is sufficiently large, then it is very unlikely that the clock skew between sequential circuit elements 112 and 114 would cause a timing violation. In such situations, sequential circuit element 114 can be ignored as far as clock skew minimization is concerned.
  • Some embodiments described herein can determine the minimum slack over all of the data input pins of a sequential circuit element. Next, the embodiments can compare the minimum slack with the maximum clock skew that is expected to exist in the clock tree. If the minimum slack is greater than the maximum clock skew by a threshold amount (the threshold can be zero or can be a positive value), then some embodiments can generate a CTS exception for the sequential circuit element.
  • FIG. 3 illustrates a process for generating CTS exceptions in accordance with some embodiments described herein. The process can use on one or more criteria to identify sequential circuit elements that can be ignored during clock skew minimization. For example, the process can identify sequential circuit elements whose clock skew cannot be balanced with other sequential circuit elements due to structural reasons (operation 302), identify sequential timing elements that do not have a timing relationship with other sequential timing elements in the clock tree (operation 304), and/or identify sequential circuit elements whose data pins have a sufficiently large slack so that clock skew is not expected to cause timing violations at any of the data pins (operation 306). Next, the process can generate clock tree exceptions based on the identified sequential circuit elements (operation 308).
  • Computer System
  • FIG. 4 illustrates a computer system in accordance with an embodiment of the present invention. A computer or a computer system can generally be any system that can perform computations. Specifically, a computer system can be a microprocessor, an application specific integrated circuit, a distributed computing system, a cloud computing system, or any other computing system now known or later developed. Computer system 402 comprises processor 404, memory 406, and storage 408. Computer system 402 can be coupled with display 414, keyboard 410, and pointing device 412. Storage 408 can generally be any device that can store data. Specifically, a storage device can be a magnetic, an optical, or a magneto-optical storage device, or it can be based on flash memory and/or battery-backed up memory. Storage 408 can store application 416, operating system 418, and data 420.
  • Application 416 can include instructions that when executed by computer 402 cause computer 402 to perform one or more processes that are implicitly or explicitly described in this disclosure. Data 420 can include any data that is inputted into or outputted by application 416.
  • The above description is presented to enable any person skilled in the art to make and use the embodiments. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein are applicable to other embodiments and applications without departing from the spirit and scope of the present disclosure. Thus, the present invention is not limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.
  • The data structures and code described in this disclosure can be partially or fully stored on a non-transitory computer-readable storage medium and/or a hardware module and/or hardware apparatus. A non-transitory computer-readable storage medium includes all computer-readable storage mediums with the sole exception of a propagating electromagnetic wave or signal. Specifically, a non-transitory computer-readable storage medium includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media, now known or later developed, that are capable of storing code and/or data. Hardware modules or apparatuses described in this disclosure include, but are not limited to, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), dedicated or shared processors, and/or other hardware modules or apparatuses now known or later developed.
  • The methods and processes described in this disclosure can be partially or fully embodied as code and/or data stored in a non-transitory computer-readable storage medium or device, so that when a computer system reads and executes the code and/or data, the computer system performs the associated methods and processes. The methods and processes can also be partially or fully embodied in hardware modules or apparatuses. Note that the methods and processes can be embodied using a combination of code, data, and hardware modules or apparatuses.
  • The foregoing descriptions of embodiments of the present invention have been presented only for purposes of illustration and description. They are not intended to be exhaustive or to limit the present invention to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the present invention. The scope of the present invention is defined by the appended claims.

Claims (15)

What is claimed is:
1. A method for generating clock tree synthesis (CTS) exceptions for a circuit design, the method comprising:
a computer identifying a set of sequential circuit elements in the circuit design that can be ignored during clock skew minimization; and
the computer generating CTS exceptions based on the identified set of sequential circuit elements.
2. The method of claim 1, further comprising performing CTS on the circuit design by using the CTS exceptions.
3. The method of claim 1, wherein said identifying includes identifying sequential circuit elements in the circuit design whose clock skew cannot be balanced with other sequential circuit elements due to structural reasons.
4. The method of claim 1, wherein said identifying includes identifying sequential timing elements in the circuit design that do not have a timing relationship with other sequential timing elements in the clock tree.
5. The method of claim 1, wherein said identifying includes identifying sequential circuit elements in the circuit design whose data pins have a sufficiently large slack so that clock skew is not expected to cause timing violations at any of the data pins.
6. A non-transitory computer-readable storage medium storing instructions that, when executed by a computer, cause the computer to execute a method for generating clock tree synthesis (CTS) exceptions for a circuit design, the method comprising:
identifying a set of sequential circuit elements in the circuit design that can be ignored during clock skew minimization; and
generating CTS exceptions based on the identified set of sequential circuit elements.
7. The non-transitory computer-readable storage medium of claim 6, wherein the method further comprises performing CTS on the circuit design using the CTS exceptions.
8. The non-transitory computer-readable storage medium of claim 6, wherein said identifying includes identifying sequential circuit elements in the circuit design whose clock skew cannot be balanced with other sequential circuit elements due to structural reasons.
9. The non-transitory computer-readable storage medium of claim 6, wherein said identifying includes identifying sequential timing elements in the circuit design that do not have a timing relationship with other sequential timing elements in the clock tree.
10. The non-transitory computer-readable storage medium of claim 6, wherein said identifying includes identifying sequential circuit elements in the circuit design whose data pins have a sufficiently large slack so that clock skew is not expected to cause timing violations at any of the data pins.
11. An apparatus, comprising:
a processor; and
non-transitory computer-readable storage medium storing instructions that, when executed by the processor, cause the apparatus to execute a method for generating clock tree synthesis (CTS) exceptions for a circuit design, the method comprising:
identifying a set of sequential circuit elements in the circuit design that can be ignored during clock skew minimization; and
generating CTS exceptions based on the identified set of sequential circuit elements.
12. The apparatus of claim 11, wherein the method further comprises performing CTS on the circuit design using the CTS exceptions.
13. The apparatus of claim 11, wherein said identifying includes identifying sequential circuit elements in the circuit design whose clock skew cannot be balanced with other sequential circuit elements due to structural reasons.
14. The apparatus of claim 11, wherein said identifying includes identifying sequential timing elements in the circuit design that do not have a timing relationship with other sequential timing elements in the clock tree.
15. The apparatus of claim 11, wherein said identifying includes identifying sequential circuit elements in the circuit design whose data pins have a sufficiently large slack so that clock skew is not expected to cause timing violations at any of the data pins.
US14/066,324 2013-03-15 2013-10-29 Automatic clock tree synthesis exceptions generation Active US8843872B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US14/066,324 US8843872B1 (en) 2013-03-15 2013-10-29 Automatic clock tree synthesis exceptions generation
PCT/US2014/023812 WO2014150620A1 (en) 2013-03-15 2014-03-11 Automatic clock tree synthesis exceptions generation
CN201480007956.2A CN104981806B (en) 2013-03-15 2014-03-11 Automatic clock tree synthesis exception generates
KR1020157024453A KR102129649B1 (en) 2013-03-15 2014-03-11 Automatic clock tree synthesis exceptions generation

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361792688P 2013-03-15 2013-03-15
US14/066,324 US8843872B1 (en) 2013-03-15 2013-10-29 Automatic clock tree synthesis exceptions generation

Publications (2)

Publication Number Publication Date
US20140282350A1 true US20140282350A1 (en) 2014-09-18
US8843872B1 US8843872B1 (en) 2014-09-23

Family

ID=51534613

Family Applications (1)

Application Number Title Priority Date Filing Date
US14/066,324 Active US8843872B1 (en) 2013-03-15 2013-10-29 Automatic clock tree synthesis exceptions generation

Country Status (4)

Country Link
US (1) US8843872B1 (en)
KR (1) KR102129649B1 (en)
CN (1) CN104981806B (en)
WO (1) WO2014150620A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11176293B1 (en) * 2018-03-07 2021-11-16 Synopsys, Inc. Method and system for emulation clock tree reduction

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180092692A (en) * 2017-02-10 2018-08-20 삼성전자주식회사 Computer-implemented method and computing system for designing integrated circuit by considering Back-End-Of-Line
CN113076710B (en) * 2021-06-07 2021-08-20 上海国微思尔芯技术股份有限公司 Clock signal global synchronization and division verification method and device, electronic equipment and storage medium

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452239A (en) * 1993-01-29 1995-09-19 Quickturn Design Systems, Inc. Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system
US5963730A (en) * 1995-09-26 1999-10-05 Matsushita Electric Industrial Co., Ltd. Method for automating top-down design processing for the design of LSI functions and LSI mask layouts
US6071003A (en) * 1996-03-14 2000-06-06 Intel Corporation Method and apparatus for locating critical speed paths in integrated circuits using a clock driver circuit with variable delay
US5911063A (en) * 1996-07-10 1999-06-08 International Business Machines Corporation Method and apparatus for single phase clock distribution with minimal clock skew
US6052811A (en) * 1997-04-15 2000-04-18 Intel Corporation Method and apparatus for locating critical speed paths in integrated circuits using JTAG protocol
JP3217022B2 (en) * 1998-02-10 2001-10-09 エヌイーシーマイクロシステム株式会社 Clock tree synthesis method
JP3251250B2 (en) 1999-01-27 2002-01-28 エヌイーシーマイクロシステム株式会社 Clock skew reduction method and computer-readable recording medium recording clock skew reduction method
US6367060B1 (en) 1999-06-18 2002-04-02 C. K. Cheng Method and apparatus for clock tree solution synthesis based on design constraints
US6434731B1 (en) * 1999-10-26 2002-08-13 International Business Machines Corporation Automated placement of signal distribution to diminish skew among same capacitance targets in integrated circuits
JP2002009155A (en) * 2000-06-20 2002-01-11 Mitsubishi Electric Corp Design method of semiconductor circuit and semiconductor circuit designed by means of the same
US6728917B2 (en) * 2001-02-09 2004-04-27 Agere Systems Inc. Sequential test pattern generation using combinational techniques
JP5193406B2 (en) * 2001-06-13 2013-05-08 富士通セミコンダクター株式会社 CLOCK DISTRIBUTION CIRCUIT DESIGN METHOD, DESIGN DEVICE, DESIGN PROGRAM, AND COMPUTER-READABLE RECORDING MEDIUM CONTAINING THE PROGRAM
US6550045B1 (en) * 2001-11-20 2003-04-15 Lsi Logic Corporation Changing clock delays in an integrated circuit for skew optimization
US7017096B2 (en) * 2002-03-26 2006-03-21 Agere Systems Inc. Sequential test pattern generation using clock-control design for testability structures
US6763505B2 (en) * 2002-04-04 2004-07-13 International Business Machines Corporation Apparatus and method for automated use of phase abstraction for enhanced verification of circuit designs
US6807660B1 (en) * 2002-10-01 2004-10-19 Sequence Design, Inc. Vectorless instantaneous current estimation
US6822481B1 (en) * 2003-06-12 2004-11-23 Agilent Technologies, Inc. Method and apparatus for clock gating clock trees to reduce power dissipation
US7447961B2 (en) * 2004-07-29 2008-11-04 Marvell International Ltd. Inversion of scan clock for scan cells
US7810061B2 (en) * 2004-09-17 2010-10-05 Cadence Design Systems, Inc. Method and system for creating a useful skew for an electronic circuit
US7555689B2 (en) * 2005-06-28 2009-06-30 Dhiraj Goswami Generating responses to patterns stimulating an electronic circuit with timing exception paths
JP4314233B2 (en) * 2005-11-07 2009-08-12 富士通株式会社 Design support apparatus, design support method, design support program, and recording medium
US7546567B2 (en) * 2007-01-10 2009-06-09 Synopsys, Inc. Method and apparatus for generating a variation-tolerant clock-tree for an integrated circuit chip
US7624364B2 (en) * 2007-05-02 2009-11-24 Cadence Design Systems, Inc. Data path and placement optimization in an integrated circuit through use of sequential timing information
US8205182B1 (en) * 2007-08-22 2012-06-19 Cadence Design Systems, Inc. Automatic synthesis of clock distribution networks
US9310831B2 (en) 2008-02-06 2016-04-12 Mentor Graphics Corporation Multi-mode multi-corner clocktree synthesis
JP4706738B2 (en) * 2008-08-20 2011-06-22 日本電気株式会社 Delay analysis apparatus, delay analysis method, and program
JP5326471B2 (en) * 2008-09-30 2013-10-30 富士通株式会社 Clock signal supply circuit design method, information processing apparatus, and program
US8336012B2 (en) * 2009-04-09 2012-12-18 Lsi Corporation Automated timing optimization
US8302047B2 (en) * 2009-05-06 2012-10-30 Texas Instruments Incorporated Statistical static timing analysis in non-linear regions
JP5444985B2 (en) * 2009-09-16 2014-03-19 日本電気株式会社 Information processing device
JP2011141805A (en) 2010-01-08 2011-07-21 Renesas Electronics Corp Apparatus and method for clock tree synthesis, and program
US8413099B2 (en) 2010-06-07 2013-04-02 Synopsys, Inc. Performing scenario reduction
US8578310B2 (en) * 2010-08-17 2013-11-05 International Business Machines Corporation Method of measuring the impact of clock skew on slack during a statistical static timing analysis
US8384436B2 (en) 2011-01-10 2013-02-26 Taiwan Semiconductor Manufacturing Company, Ltd. Clock-tree transformation in high-speed ASIC implementation
CN102799698B (en) * 2011-05-26 2014-07-23 国际商业机器公司 Method and system for planning clock tree of application-specific integrated circuit
US8635579B1 (en) * 2012-12-31 2014-01-21 Synopsys, Inc. Local clock skew optimization

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11176293B1 (en) * 2018-03-07 2021-11-16 Synopsys, Inc. Method and system for emulation clock tree reduction

Also Published As

Publication number Publication date
CN104981806A (en) 2015-10-14
WO2014150620A1 (en) 2014-09-25
KR20150130285A (en) 2015-11-23
US8843872B1 (en) 2014-09-23
KR102129649B1 (en) 2020-07-02
CN104981806B (en) 2019-05-17

Similar Documents

Publication Publication Date Title
US7546567B2 (en) Method and apparatus for generating a variation-tolerant clock-tree for an integrated circuit chip
US8321824B2 (en) Multiple-power-domain static timing analysis
US8869091B2 (en) Incremental clock tree synthesis
US10318684B2 (en) Network flow based framework for clock tree optimization
US9009645B2 (en) Automatic clock tree routing rule generation
US20140289694A1 (en) Dual-structure clock tree synthesis (cts)
US9183335B2 (en) Dynamic power driven clock tree synthesis (CTS)
US8713501B1 (en) Dual-box location aware and dual-bitmap voltage domain aware on-chip variation techniques
US9292641B2 (en) Timing bottleneck analysis across pipelines to guide optimization with useful skew
US20140289690A1 (en) On-chip-variation (ocv) and timing-criticality aware clock tree synthesis (cts)
US8407655B2 (en) Fixing design requirement violations in multiple multi-corner multi-mode scenarios
US8843872B1 (en) Automatic clock tree synthesis exceptions generation
US9135386B2 (en) Multi-mode scheduler for clock tree synthesis
US8578321B2 (en) Delta-slack propagation for circuit optimization
US9390222B2 (en) Determining a set of timing paths for creating a circuit abstraction
US9449127B1 (en) System for verifying timing constraints of IC design
US8336013B2 (en) Determining an order for visiting circuit blocks in a circuit design for fixing design requirement violations
WO2014105980A1 (en) Multi-mode scheduler for clock tree synthesis
US10885248B1 (en) Method for modeling glitches during circuit simulation
US9990453B2 (en) Clock-domain-crossing specific design mutations to model silicon behavior and measure verification robustness

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: SYNOPSYS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHANG, SSU-MIN;CAO, AIQUN;DING, CHENG-LIANG;SIGNING DATES FROM 20131024 TO 20131030;REEL/FRAME:031749/0056

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551)

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8