1. Field of the Invention
This invention relates to integrated circuits in general, and more particularly to static timing analysis of integrated circuit designs.
2. Description of the Related Art
In a typical design process flow (
A typical static timing analysis tool analyzes a synchronous design description (e.g., gate level design description or a layout design description) for timing violations by breaking down the design into individual timing paths having a startpoint (i.e., a place in a design where data is launched by a reference signal edge, e.g., at an output port of a sequential element) and an endpoint (i.e., a place in the design where data is captured by a reference signal edge, e.g., at an input port of a sequential element). The static timing analysis tool calculates a signal propagation delay corresponding to an individual path, which may include cell delays and interconnect delays (e.g., delays estimated from a wire load model or delays back-annotated from layout design files). Violations of timing constraints (e.g., setup and hold timing constraints) are determined based on the timing paths and signal propagation delays.
In general, synchronous design techniques assume that signals propagate from startpoint to endpoint along each path within one cycle of a reference signal, that the reference signal is not gated (i.e., the reference signal provided as an input to a combinatorial cell or on a data terminal of sequential cells) and that only one edge (i.e., rising edge or falling edge) of the reference signal is used to trigger events. In addition, the reference signal edge associated with a launch event of data from the startpoint is assumed to be different from the reference signal edge associated with a capture event of the data at the endpoint. If a synchronous design violates these assumptions, a typical static timing analysis tool may not properly calculate startpoints, endpoints, and/or propagation delays. Thus, such paths violating timing constraints may be undetected by typical static timing analysis tools.
A technique for performing static timing analysis of an integrated circuit design provides a relationship between reference events of a setup test and a hold test for a particular signal path of an integrated circuit design. The relationship between the reference events of the setup test and the hold test is used to compute a timing metric (e.g., slack) for at least one of the setup test and hold test to reduce the occurrence of timing escapes from the static timing analysis of the integrated circuit design.
In at least one embodiment of the invention, a static timing analyzer determines, with respect to edges of a master clock signal, a signal capture event time for one of a setup timing metric and a hold timing metric associated with a signal path. The signal capture event time for the one of the setup and hold timing metrics is based on at least a signal capture event time for the other of the setup timing metric and the hold timing metric, a signal launch event time, and a type of test device associated with the signal path.
In at least one embodiment of the invention, a method includes determining a first timing relationship corresponding to a first timing metric of a pair of timing metrics associated with a signal path of an integrated circuit design. The first timing relationship is based on at least a second timing relationship corresponding to a second timing metric of the pair of timing metrics, a third timing relationship associated with the signal path, and a type of test device associated with the signal path. The timing relationships are with respect to particular transitions of at least one reference signal of the integrated circuit design.
In at least one embodiment of the invention, a computer program product encoded in at least one computer readable medium includes instructions for determining a first timing relationship corresponding to a first timing metric of a pair of timing metrics associated with a signal path of an integrated circuit design. The first timing relationship is based on at least a second timing relationship corresponding to a second timing metric of the pair of timing metrics, a third timing relationship associated with the signal path, and a type of test device associated with the signal path. The timing relationships are with respect to particular transitions of at least one reference signal of the integrated circuit design.
The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
The use of the same reference symbols in different drawings indicates similar or identical items.
An exemplary static timing analysis tool uses the signal propagation delay for an individual path to check for violations of timing constraints, e.g., setup and hold timing constraints. A setup timing constraint specifies an amount of time that data should be available at an input of a sequential device prior to the availability at the sequential device of a reference signal edge that effectuates data capture in the sequential device. Setup timing constraints enforce a maximum delay on the data path relative to the reference signal path. A hold timing constraint specifies an amount of time that data should be stable at the input of the sequential device after a reference signal edge that effectuates data capture in the sequential device. Hold timing constraints enforce a minimum delay on the data path relative to the reference signal path. The slack associated with a timing constraint indicates a comparison of the delay of a data path to a delay of a timing constraint (e.g., the delay of a setup timing constraint or the delay of a hold timing constraint). A positive slack indicates an amount of time by which a violation of a timing constraint is avoided by a path delay. A negative slack indicates the amount of time by which a path delay violates a timing constraint. An exemplary static timing analysis tool generates a timing report that includes e.g., the amount of slack in the path based on specified timing constraints, and/or additional timing information e.g., gate levels in the path, incremental delay values corresponding to individual gate levels, and/or a sum of total path delays.
In general, synchronous design techniques assume that signals propagate from startpoint to endpoint along each path within one cycle of a reference signal and that the reference signal is not gated, i.e., the reference signal is not provided as an input to a combinatorial cell or on a data terminal of sequential cells. However, as clock speeds increase, circuit designers may implement circuits that violate these principles of synchronous design to achieve high-speed circuit functionality. As a result, exemplary static timing analysis tools may generate“timing escapes” (i.e., situations that a static timing analysis tool should identify as timing constraint violations, but remain undetected) when analyzing such circuits, e.g., those circuits including a gated clock.
An exemplary static timing analysis tool allows circuit designers to include gated clocks and multi-cycle paths, but such design choices may require the circuit designer to guarantee timing of the path or make manual adjustments to slack calculations. For example, when including a multi-cycle path, the circuit designer may specify to the static timing analysis tool that a particular path is allowed a longer time than one cycle to propagate data. In some situations, a circuit designer may specify a zero-cycle setup timing constraint, i.e., a single reference signal edge drives both the launch and capture events for the timing constraint. In such situations, the static timing analysis tool may rely on the circuit designer timing and assumes that the circuit designer has guaranteed or specified both setup and hold tests properly. However, if only one of the setup and hold tests are specified by the designer and the static timing analysis tool determines edges of the reference signal associated with a hold test independently from the edges of the reference signal associated with the setup test, a timing escape may occur.
For example, referring to
An exemplary static timing analysis tool determines reference signal edges for a setup timing constraint independent from a determination of a hold timing constraint associated with a particular signal path of an exemplary circuit. In general, setup tests are not zero cycles or less, i.e., setup tests are one tick or more between source clock edges that cause new data launch and prior cycle data capture. Typically, hold tests are zero cycles or less, i.e., a source clock launching new cycle data does not happen before the source clock that captures prior cycle data. In general, for gated clocks, data must be setup before the asserting edge of the clock and held after the de-asserting edge of the clock. The asserting edge of the clock is the clock edge that will cause the output of the clock gate to initiate a pulse from its quiescent state, if the clock gate is enabled. For example, the asserting edge of a clock for a clocked nand gate or a clocked and gate is the rising edge of the input clock, e.g., data is set up before the rising edge of the clock at the nand gate and data is held until after the falling edge of the clock at the nand gate. The asserting edge for a clocked nor or a clocked or gate is falling edge of the input clock.
Since in static timing analysis all timing is referenced to a single cycle, cycle adjustments may be used to calculate slack for setup and hold timing constraints. For example, when a particular clock edge launches data and that same clock edge captures the data, the exemplary static timing analysis tool applies an adjustment to the associated slack calculation to move the capture clock edge to the next clock cycle. For example, a static timing analysis tool considers launching data as current cycle data and capture data at the end of the current cycle for setup timing constraints. Note that setup timing constraints follow a convention that an allowance between absolute source launch and capture events is greater than zero cycles. The reference signal edges provide the resolution for the allowance and are the“source” of all derived events. Typically, the minimum allowance of time for setup timing constraints between launch and capture events is one“tick” (i.e., the time between one transition edge to a next occurring transition edge) of the reference signal. That is, the reference signal edge that causes a capture event for a setup timing constraint occurs at least one tick after the reference signal edge causing the launching event in terms of absolute time. In absolute time, as compared to time modulo a cycle of the reference signal, no adjustments are applicable. . For hold timing constraints, a static timing analysis tool considers the launching data to be next cycle data and the reference capture edge to be the end of the current cycle. The timing constraints may also follow the convention that for all hold tests, the capture source event is less than one cycle before or after the launch source event. The greatest difference between launch and capture source events for a hold timing constraint is one tick of the reference signal.
The exemplary static timing analysis tool generates a timing report for exemplary circuit 200 having a negligible value of δ for delay 206 (
For the setup timing constraint on q1 (i.e., path 8), next cycle data is initiated from the master clock edge rising at time 0 ps and the clock capture edge for prior cycle data is the same master clock edge. Since the setup test must be greater than zero cycles, the exemplary static timing analysis tool adjusts the setup slack calculation to move the capture clock to the next cycle (e.g., Tcycle =360 ps). Accordingly, the setup timing constraint requires q1 to arrive at AND gate 204 no later than the edge of CLK at 360 ps. Since q1 arrives at AND gate 204 at 30 ps, the setup timing constraint slack for path8 is computed as follows, accounting for clock skew: (0 ps+Tcycle)−(30 ps)−60 ps=270 ps. Thus, path8 is computed to have 270 ps of slack for a falling test edge of q1 at the input of AND gate 204.
However, dynamic simulation of the circuit of
By using the −180 ps edge of CLK, the exemplary static timing analysis tool gives the design an excessive amount of time to meet the setup and hold tests. Since, the capture edge of the setup test for the signal path of
Such timing escapes may be identified by a static timing analysis tool consistent with the present invention by considering setup and hold timing constraints in relation to one another. For example, the exemplary static timing analysis tool used the −180 ps edge of CLK for the hold timing constraint (i.e., path6 test) capture clock edge and the setup timing constraint (i.e., path8 test) capture clock edge of 360 ps. However, given the signal path of
Referring to
A static timing analysis tool consistent with the present invention determines a reference signal edge for a setup capture event time or a hold capture event time for a particular signal path of an integrated circuit based on a setup launch event time, a hold launch event time, the other of the setup capture event time or the hold capture event time, and a type of circuit associated with the particular signal path. An edge of a reference signal at which a capture event occurs and an edge of the reference signal corresponding to an associated data launch is referred to herein as the cycle context. The cycle context also depends on the type of device at which the test occurs to determine whether or not the timing constraints use both rising and falling edges of the reference signal for proper sequencing.
The test context for a particular signal path includes the setup capture event edge and the hold capture event edge with respect to edges of the reference signal (e.g., mclk) when a signal is launched from a sequential device (e.g., sequential device 401) on a particular edge of the reference signal (e.g., edge 2 of mclk). For example, the signal path tested at sequential device 402 that was launched by mclk edge 2 needs to arrive before the reference signal transition at sequential device 402 launched by mclk edge 4 arrives, and it must arrive after the reference signal transition at sequential device 402 launched by mclk edge 2. Note that the clock signals arriving at sequential devices 402, 404, . . . , 416 may be delayed from the reference signal and from each other. Although each sequential device is illustrated as receiving mclk events simultaneously, mclk events may not necessarily be received simultaneously. Individual ones of sequential devices 402, 404, . . . , 416 receive a reference signal edge as a result of a source occurrence, but not necessarily simultaneously with that source occurrence. The test contexts provide relationships between launch and capture events associated with driving sequential device 401 and receiving sequential devices 402, 404, . . . , 416.
The discussion that follows applies reference signal modulo timing, i.e., events are considered relative to the single reference signal and two transitions associated therewith, the leading and trailing edges. Both launching and capturing events are derived from these reference signal transitions. The actual arrival time of an event at a test device derived from the launching edge of the reference signal is referred to herein as AT. The actual arrival time of the reference event at a test device, derived from the master clock, establishes a timing constraint for the tested signal and is referred to herein as the required time, RT. Accordingly, the setup and hold timing metrics are:
Slack(Setup)=(RT+adjust)−AT (EQ. A)
Slack(Hold)=AT−(RT+adjust). (EQ. B)
An adjustment (e.g., adjust) may be applied to the required times to ensure that the reference signal edge that causes a capture event for a setup timing constraint occurs at least one tick after the reference signal edge causing the launching event in terms of absolute time or that the capture source event is less than one cycle before or after the launch source event for a hold timing constraint. Referring to
Determination of an edge of the reference signal corresponding to a setup or hold reference event depends on the type of sequential test device receiving the signal. The reference signal times that derive a reference event (e.g., capture event) and a tested event (e.g., launch event) for a setup timing constraint are RTSETUP and ATSETUP, respectively. The reference signal transitions that derive a reference event (e.g., capture event) and a tested event (e.g., launch event) for a hold timing constraint are RTHOLD and ATHOLD, respectively. T is the period of the reference signal. EQ. C describes the cycle contexts that apply to sequential devices that require both edges (i.e., rising and falling transitions) of the reference signal and EQ. D describes the cycle contexts that apply to sequential devices that use the same polarity of reference signal transitions for both setup and hold timing constraints (e.g., flip-flops and latches):
1/T{(RTSETUP−ATSETUP)−(RTHOLD−ATHOLD)}=½ cycle; (EQ. C)
1/T{(RTSETUP−ATSETUP)−(RTHOLD−ATHOLD)}=1 cycle; (EQ. D)
Given the convention that launch and test reference signal edges are within one tick of each other for a hold timing constraint, and the relationships of EQ. C and EQ. D between setup and hold launch and capture events, the relationships provided by EQ. C and EQ. D are applied to the exemplary signal paths of
In at least one embodiment of the invention, a static timing analysis tool computes event timing modulo the reference signal. Referring to
In at least one embodiment of the invention, the static timing analysis tool uses EQ. C and EQ. D, as applicable, to test whether the static timing analysis tool provided a correct combination of setup and hold checks for the data to transact within the allotted number of cycles. If the test fails, i.e., the static timing analysis tool failed to provide a correct combination of setup and hold checks for the data to transact within the allotted number of cycles, and the static timing analysis tool changes one of the setup and hold times, e.g., one of RTSETUP and RTHOLD becomes an unknown variable. Although, in general, either of RTSETUP and RTHOLD may be variable, a particular design may have constraints resulting in RTHOLD being unknown. Regardless of which of RTSETUP and RTHOLD is variable, the static timing analysis tool solves for the unknown variable using EQ. C or EQ. D, as applicable and adjusts an appropriate one of RTSETUP and RTHOLD, accordingly (e.g., by modifying an adjustment factor for the corresponding slack computation).
Referring to the example of
In at least one embodiment of the present invention, a static timing analysis tool adjusts a slack computation for a timing constraint for a multi-frequency signal path or multi-cycle signal path. For example, a setup timing constraint may be based on a launch event derived from a first reference signal and a capture event derived from a second reference signal (
For example, clocks (e.g., clkA and clkb) are different frequencies (e.g., TclkA=180 ps and TclkB=120 ps) and are synchronous. Clocks clkA and clkB have no phase shift to consider since the launching and capturing clock edge occur together with a common point periodically. The least common multiple (e.g., LCM) of TclkA and TclkB is 360 ps. The greatest common divisor (e.g., GCD) of TclkA and TclkB is TclkA*TclkB/LCM=120 ps*180 ps/360 ps=60 ps. If the RTHOLD is 0 ps, then ATHOLD is 0 ps. If ATSETUP=0 ps, then RTSETUP=60 ps. In other words, to to guarantee the worst-case setup slack for this multi-frequency example, the static timing analysis tool adjusts clkB from 0 ps to 60 ps rather than making a full cycle adjust. By setting RTHOLD, ATHOLD, and ATSETUP to 0 ps, the strictest transaction interval is satisfied with the RTSETUP solution.
Referring to
Referring to
In addition, the integrated circuit design (810), which may be represented by at least one of an RTL design description, a gate level design description, and/or a layout design description and/or other suitable representations may be encoded on one or more computer-readable medium (e.g., disk 808). Technology libraries, timing models, and/or other suitable information, may be encoded as data (e.g., data 806) on one or more computer-readable medium (e.g., disk 808). The static timing analysis tool may be used to analyze timing paths (e.g., the timing path including devices 1002 and 1004 of
Techniques described herein may apply to other timing constraints including recovery/removal constraints, data-to-data constraints, minimum pulse width for clock signals, or other suitable timing constraints. Other variations and modifications of the embodiments disclosed herein, may be made based on the description set forth herein, without departing from the scope and spirit of the invention as set forth in the following claims.