A circuit for implementing a scan chain in an integrated circuit having a clock domain crossing is described. The circuit comprises a first dual-edge storage circuit configured to receive an input signal at a scan input and to receive a first clock signal in a first clock domain at a clock input; a storage element having a data input configured to receive an output of the first dual-edge storage circuit; a second dual-edge storage circuit configured to receive an output of the storage element at a scan input and to receive a second clock signal in a second clock domain at a clock input; and a pulse generator configured to provide, to a clock input of the storage element, a pulse signal having a pulse width selected to enable the second dual-edge storage element to store the output of the first dual-edge storage element.
|
1. A circuit for implementing a scan chain in an integrated circuit having a clock domain crossing, the circuit comprising:
a first dual-edge storage circuit configured to receive an input signal at a scan input and to receive a first clock signal in a first clock domain at a clock input;
a storage element having a data input configured to receive an output of the first dual-edge storage circuit;
a second dual-edge storage circuit configured to receive an output of the storage element at a scan input and to receive a second clock signal in a second clock domain at a clock input; and
a pulse generator configured to provide, to a clock input of the storage element, a pulse signal having a pulse width selected to enable the second dual-edge storage circuit to store the output of the storage element.
15. A method of implementing a scan chain in an integrated circuit having a clock domain crossing, the method comprising:
configuring a first dual-edge storage circuit to receive an input signal at a scan input;
providing a first clock signal in a first clock domain to a clock input of the first dual-edge storage circuit;
configuring a first input of a storage element to receive an output of the first dual-edge storage circuit;
configuring a scan input of a second dual-edge storage circuit to receive an output of the storage element;
providing a second clock signal in a second clock domain to a clock input of the second dual-edge storage element; and
providing, to a clock input of the storage element, a pulse signal having a pulse width selected to enable the second dual-edge storage circuit to store the output of the storage element.
2. The circuit of
3. The circuit of
4. The circuit of
5. The circuit of
6. The circuit of
7. The circuit of
8. The circuit of
a clock state capture circuit configured to generate a predetermined clock state value in response to a clock stop signal; and
a first selection circuit enabling a selection of a clock signal or the predetermined clock state value to be applied to the first dual-edge storage circuit to enable a desired clock state value to be applied to storage elements of the first dual-edge storage circuit.
9. The circuit of
10. The circuit of
11. The circuit of
12. The circuit of
13. The circuit of
14. The circuit of
16. The method of
17. The method of
18. The method of
19. The method of
20. The method of
|
The present invention relates generally to integrated circuit (IC) devices, and particularly to circuits for and methods of implementing a scan chain in an integrated circuit, implementing clock-stoppage, and enabling design for test and design for debug using registers having dual-edge clocking. The circuits and methods enable test and debug of circuits by ensuring timing-safety in clock domain crossing in scan chains using registers having dual-edge clocking and enable scan-based fault coverage of AC and DC faults. The circuits and methods also enable stopping a test clock at a desired logic level, and the transitioning from a clock stop mode to a scan-shift mode for silicon debug.
Dual-edge clocking is used in a variety of applications to take advantage of both the rising and falling edges of a clock signal. Dual-edge clocking can provide improved performance at lower power by enabling reduced clock speeds for an integrated circuit. However, many integrated circuits implement multiple clock signals, where data may pass from one clock domain to another. That is, data sent from one register that is configured to receive a first clock signal associated with a first clock domain may be received by a register that is configured to receive a second clock signal associated with a second clock domain, and therefore must cross the clock domain.
Registers implemented in an integrated circuit may be a part of a scan chain to enable testing of the integrated circuit. Because scan chains that cross clock-domains may have an excessive amount of clock skew at clock-domain cross-over points, testing of the integrated circuit may lead to particular problems when performing testing using a scan chain in an integrated circuit having dual-edge clocking associated with registers in different clock domains. The testing of a scan chain using dual-edge clocking may not only be incomplete, but may also lead to errors in the testing based upon indeterminate test values at certain points of the scan chain. More particularly, when implementing design for test and design for debug with dual-edge clocking, errors during testing may occur when a register of a dual-edge clocking circuit is not tested or an incorrect signal is applied during testing.
Accordingly, circuits and methods that implement a scan chain in an integrated circuit having a clock domain crossing and overcome the deficiencies of conventional circuits are beneficial.
A circuit for implementing a scan chain in an integrated circuit having a clock domain crossing is described. The circuit comprises a first dual-edge storage circuit configured to receive an input signal at a scan input and to receive a first clock signal in a first clock domain at a clock input; a storage element having a data input configured to receive an output of the first dual-edge storage circuit; a second dual-edge storage circuit configured to receive an output of the storage element at a scan input and to receive a second clock signal at a clock input; and a pulse generator configured to provide, to a clock input of the storage element, a pulse signal having a pulse width selected to enable the second dual-edge storage circuit to store the output of the storage element.
Another circuit for enabling stoppage of a clock in an integrated circuit comprises a plurality of dual-edge storage circuits configured to enable a debugging of an integrated circuit; a clock state capture circuit configured to generate a predetermined clock state value in response to a clock stop signal; and a first selection circuit enabling a selection of a clock signal or the predetermined clock state value to be applied to the plurality of dual edge storage circuits to enable a desired clock state value to be applied to storage elements of the plurality of dual-edge storage circuits.
A method of implementing a scan chain in an integrated circuit having a clock domain crossing is also disclosed. The method comprises configuring a first dual-edge storage circuit to receive an input signal at a scan input; providing a first clock signal in a first clock domain to a clock input of the first dual-edge storage circuit; configuring a first input of a storage element to receive an output of the first dual-edge storage circuit; configuring a scan input of a second dual-edge storage circuit to receive an output of the storage element; providing a second clock signal in a second clock domain to a clock input of the second dual-edge storage element; and providing, to a clock input of the storage element, a pulse signal having a pulse width selected to enable the second dual-edge storage element to store the output of the first dual-edge storage element.
A separate scan clock may also be implemented to ensure that a clock for implementing the scan chain is started in the correct phase when shifting data out during debug testing. According to one implementation, an additional register may also be implemented between a dual-edge storage element and a lockup latch to prevent any loss of data during a debug testing.
Other features will be recognized from consideration of the Detailed Description and the Claims, which follow.
While the specification includes claims defining the features of one or more implementations of the invention that are regarded as novel, it is believed that the circuits and methods will be better understood from a consideration of the description in conjunction with the drawings. While various circuits and methods are disclosed, it is to be understood that the circuits and methods are merely exemplary of the inventive arrangements, which can be embodied in various forms. Therefore, specific structural and functional details disclosed within this specification are not to be interpreted as limiting, but merely as a basis for the claims and as a representative basis for teaching one skilled in the art to variously employ the inventive arrangements in virtually any appropriately detailed structure. Further, the terms and phrases used herein are not intended to be limiting, but rather to provide an understandable description of the circuits and methods.
The use of dual-edge clock logic enables implementing the same logic functions as with conventional single-edge clock logic, but with one or more clocks running at half the frequency needed for single-edge clock logic. Dual-edge clock logic saves dynamic power required in routing clock signals, which can be as high as 25-30% of total power consumed in integrated circuits. Dual-edge clock logic therefore offers a way to cut clock power by half. However, dual-edge clocking can create challenges when performing scan testing, including DC and AC testing, as well as when performing clock-stop and scan-shift for silicon debug. For example, when implementing a lockup latch with a dual-edge storage circuit in a first clock domain, the time period for storing data generated by the lockup latch in a second dual-edge storage circuit that is in a second clock domain may be too short to successfully latch the data. The circuits and methods set forth below ensure that a second dual-edge storage circuit coupled to an output of a lockup latch has sufficient time to store the data. The circuits and methods also enable independently stopping a clock in a given clock domain at either a high level or a low level to latch data by separate registers of the dual-edge storage circuits. The circuits and methods also enable starting scan-shift with a clock signal at a certain level, and accommodating a transition from a clock-stop to a scan-shift mode.
The circuits and methods set forth below enable implementing a lockup latch with dual-edge registers by controlling the lockup latch with a pulse generator, where the pulse generator may be configured to generate a minimum pulse width to provide improved timing. Further, clock control circuits may be implemented to ensure that the clock provided to the dual-edge register is stopped so that data stored in each register of the dual-edge register is checked during a debug process. A separate scan clock may also be implemented to ensure that a clock is started in the correct phase when resuming a scan operation during scan shift-mode for debug testing. An additional register may also be implemented between the dual-edge storage circuit and the lockup latch to prevent any loss of data during a debug process.
Turning first to
A pair of storage elements coupled to receive the clock signal and an inverted clock signal at clock inputs, respectively, is also provided to enable the dual-edge operation of the dual-edge storage circuit 102. The inverted clock signal may be provided to a storage element by providing the clock signal to an inverted clock input of the storage element. A first storage element 120 comprises an input 122 coupled to the output 118 to receive the selected output signal generated by the selection circuit 110, and an output 124. The clock signal is received at a clock input 126 of the storage element 120. A second storage element 130 comprises an input 132 coupled to the output 118 to receive the selected output signal generated by the selection circuit 110, and an output 134. The clock signal is received at an inverted clock input 136 of the storage element 130 to enable the second storage element to be triggered on the inverted clock signal. Accordingly, the data selected by the selection circuit 110 will be latched on both the falling edge of the clock signal and the rising edge of the clock signal in the first storage element 120 and the second storage element 130, respectively.
A second selection circuit 138 comprises a first input 140 coupled to the output 124 of the first storage element 120 and a second input 142 coupled to the output 134 of the second storage element 130. The output data (Data_Out) signal is generated at the output 144 in response to the clock signal coupled to a selection input 146. Therefore, the dual-edge storage circuit 102 of
Turning now to
The dual-edge storage circuit 204 comprises an input 207 that is coupled to receive a scan enable (Scan_En) signal, an input 208 coupled to receive a scan input (Scan_In) signal, an input 210 that is coupled to receive an input data (Data_In) signal, and an input 211 to receive a source clock, designated as CLK-1. In normal operation of the integrated circuit, the data signal is selected to be stored by the dual-edge storage circuit 204. However, during scan-based testing and debugging, the scan input signal is selected. Additional details related to the operation of a scan chain using the circuit 200 of
A pulse generator 222 is coupled to receive the source clock (CLK-1) signal associated with a first clock domain at an input 223. An output 225 of the pulse generator is coupled to an inverted input 226 of the storage element 202. The pulse generator ensures that there is sufficient time to latch data generated by the first dual-edge storage circuit, as will be described in more detail in reference to the timing diagram of
Turning now to
However, timing issues may arise if the skew between Clk-1 and Clk-2 is large enough for the transition on Clk-2 to occur after time t4, that is if (t3−t2)>(t4−t2). If this occurs, data from dual-edge storage circuit 204 is lost. Due to this reason, the pulse-width has to be larger than the skew between clocks Clk-1 and Clk-2 and can be determined based on estimates of this skew. In a single clock edge arrangement where the storage element 202 implemented as a lockup latch is controlled by the CLK-1 signal, the storage element 202 is shut between times t2 and t5. Therefore, the time window between time t5 and t6 when the storage element 202 is open for enabling the latching of data from the storage element 130 of source dual-edge storage circuit 204 at the storage element 120 of the sink dual-edge storage circuit 206 may be too short to correctly latch the data. The pulse generator 222 is also implemented to ensure that the storage element 202 is open between the times t4 and t5 to provide a wider time window to receive the data in the storage element 120 of the sink dual-edge storage circuit 206, which is open after time t3. Therefore, by implementing the pulse generator with a pre-determined pulse-width, where the pulse-width is programmable, it is possible to ensure that the data is transferred from one clock domain to another by ensuring that the storage element 202 is open long enough to enable the sink dual-edge storage element to store the data from the storage element 130 of the dual-edge storage element 204. As will be also further described below, that pulse width will be selected to ensure that the pulse width is wide enough to capture the falling edge of the second clock signal.
It should be noted that the pulse width generator can be implemented if the CLK-1 signal is late or early. If CLK-1 signal is early as shown in
However, if the storage element 202 and pulse-generator 222 have to be designed as a cell in a cell-library, the pulse-width has to be a programmable part of the pulse-generator cell 222, based on, for example, programmable delays. The actual programming of the pulse-width can be done either during design, based on estimates of clock-skew between source and sink clocks, CLK-1 and CLK-2, or based on characterization of silicon parts during actual usage of silicon. An example of a local pulse-generator standard cell is shown in
A pulse generator 402 comprises a selection circuit 404, shown here as a multiplexer, coupled to receive a logical “0” at a first input 406 to enable the storage element to remain open, as described below. The selection circuit 404 also comprises an input 408 coupled to receive a signal based upon the clock signal CLK-1. A selection circuit 410 is coupled to a plurality a delay elements representing unit delays coupled to the clock signal. More particularly, a first delay element 412 is coupled to receive the clock signal and provides a first delayed clock signal to an input 414, and a second delay element 416 is coupled to receive the delayed clock signal and generate a second delayed clock signal at an input 418. Any number of delay elements could be coupled in series as shown, where an nth delay element 420 provides an nth delayed clock signal to an input 422 of the selection circuit 410. A delay enable (Delay_Enable) signal is coupled to a selection terminal 424 to enable a selected delayed clock signal generated at an output 425 of the selection circuit 410. The clock signal CLK-1 is provide to a first input 426 of an exclusive OR (XOR) gate 428 and the selected delayed clock signal generated at the output 425 of the selection circuit 410 is coupled to an input 430. The pulse is generated at an output 432 of the XOR gate 428.
It should be noted that the number of programmable unit delays used in a standard cell implementation is determined by the worst case skew between source and sink clocks. The larger this worst case skew, the more the number of unit-delays needed. Conversely, if the sink clock Clk-2 arrives earlier than the source clock Clk-1, then no pulse may be desired and the Pulse_Enable signal of
It should be clear that one advantage of the pulse-generator shown in
By implementing a pulse width generator having a pulse width that is large enough to account for the maximum difference in a delay between the source and sink clocks, the implementation of
According to another implementation, the width of the pulse can be selected to avoid implementing a fixed pulse width to accommodate a range of possible differences in the clock domains. If the clock signals of the clock domains are relatively close, in which case the pulse width generated by the minimum pulse width circuit would be small, a minimum pulse width that may be greater than the pulse width generated by clock signals of the clock domains themselves can be generated. That is, because the pulse width may be based upon the clock signals of the first and second clock domains, the pulse width may be too small if the clock signals of the first and second clock domains are too close, and a pulse having a minimum pulse width may be necessary. According to the implementation of
An example of a minimum pulse width circuit that could be implemented as the minimum pulse width circuit 502 is shown in
In operation, unlike a conventional lockup latch arrangement where the storage element 202 is closed during the period between t1 and t5 of
As shown in
As shown in the embodiment of
An example of a circuit for implementing a clock state capture circuit 902 is shown in
The State Clock Capture Done signal that is used to select the Final Clock State signal selected by the selection circuit 1008 and the CLK signal selected by the selection circuit 912 are based upon the STOP signal coupled to a synchronization circuit 1020 at an input 1022 and the Root_CLK signal coupled to a clock input 1024. The synchronization circuit 1020 enables the stop signal that is used to select the Final Clock State coupled to the selection circuit 912 to be in the clock domain of the circuit of
The clock state capture circuit 902 requires two asynchronous delay elements, including the delay element 1014 and the delay element 1028. The delay element 1014 is provided to ensure that the correct clock value of the Root_CLK is captured by the hold register 1002. The delay element 1028 is provided to avoid a glitch on the clock and to make sure that the data that is fed to the hold register 1002 is stable before selecting an input to the selection circuit 1008. The delay elements 1014 and 1028 are preferably selected to have delays that are less than the clock period of the Root_CLK, but greater than the clock-to-output period of the hold register 1002.
The timing diagrams of
Turning now to
As shown in the timing diagram of
However, it is possible that data may be lost with a first scan of data of the storage element 130 of the dual-edge storage circuit 204 because the storage element 202 was closed. Accordingly, a circuit 1500 for implementing a scan chain having dual-edge storage circuits includes dual-edge lockup latch circuit 1502 having an additional register 1504, also known as a dummy register, as shown in
Turning now to
In implementing the pulse generator according to the implementation of
A first clock control circuit may be configured to generate the first clock signal, where the first clock control circuit selects a clock edge of the first clock signal during a clock stop mode. A second clock control circuit may be configured to generate the second clock signal, where the second clock control circuit selects a clock edge of the second clock signal during the clock stop mode. The first and second clock control circuits could be implemented according to the circuits of
Turning now to
The test equipment arrangement of
Turning now to
It can therefore be appreciated that new circuits for and methods of implementing a scan chain in an integrated circuit having a clock domain crossing and more particularly performing scanning and debugging of integrated circuits have been described. It will be appreciated by those skilled in the art that numerous alternatives and equivalents will be seen to exist that incorporate the disclosed invention. As a result, the invention is not to be limited by the foregoing embodiments, but only by the following claims.
Majumdar, Amitava, Jayadev, Balakrishna
Patent | Priority | Assignee | Title |
10069497, | Jun 23 2016 | XILINX, Inc.; Xilinx, Inc | Circuit for and method of implementing a scan chain in programmable resources of an integrated circuit |
10234505, | Feb 27 2017 | XILINX, Inc. | Clock generation for integrated circuit testing |
10520547, | Sep 29 2017 | Silicon Laboratories Inc.; Silicon Laboratories Inc | Transition scan coverage for cross clock domain logic |
11645193, | Jul 07 2020 | International Business Machines Corporation | Heterogeneous services for enabling collaborative logic design and debug in aspect oriented hardware designing |
11894086, | Jan 27 2022 | Taiwan Semiconductor Manufacturing Company, Ltd. | Method, device, and circuit for high-speed memories |
11894845, | Aug 30 2022 | GLOBALFOUNDRIES U.S. Inc.; GLOBALFOUNDRIES U S INC | Structure and method for delaying of data signal from pulse latch with lockup latch |
Patent | Priority | Assignee | Title |
6072348, | Jul 09 1997 | XILINX, Inc. | Programmable power reduction in a clock-distribution circuit |
6137331, | Nov 14 1997 | U.S. Philips Corporation | Electronic circuit with dual edge triggered flip-flop |
7907461, | Mar 03 2008 | XILINX, Inc.; Xilinx, Inc | Structures and methods of preventing an unintentional state change in a data storage node of a latch |
20040041610, | |||
20110066904, | |||
20160169966, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Nov 12 2015 | XILINX, Inc. | (assignment on the face of the patent) | / | |||
Nov 12 2015 | MAJUMDAR, AMITAVA | Xilinx, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 037027 | /0343 | |
Nov 12 2015 | JAYADEV, BALAKRISHNA | Xilinx, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 037027 | /0343 |
Date | Maintenance Fee Events |
Mar 24 2021 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Oct 24 2020 | 4 years fee payment window open |
Apr 24 2021 | 6 months grace period start (w surcharge) |
Oct 24 2021 | patent expiry (for year 4) |
Oct 24 2023 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 24 2024 | 8 years fee payment window open |
Apr 24 2025 | 6 months grace period start (w surcharge) |
Oct 24 2025 | patent expiry (for year 8) |
Oct 24 2027 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 24 2028 | 12 years fee payment window open |
Apr 24 2029 | 6 months grace period start (w surcharge) |
Oct 24 2029 | patent expiry (for year 12) |
Oct 24 2031 | 2 years to revive unintentionally abandoned end. (for year 12) |