IP Library Granted Patent US 9,367,286
Granted Patent B2
US 9,367,286 · App. 14/451,279 · Granted Jun 14, 2016

Crossing pipelined data between circuitry in different clock domains

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,367,286
App. No.
14/451,279
Granted
Jun 14, 2016
Kind
B2
Abstract

An integrated circuit implements a multistage processing pipeline, where control is passed in the pipeline with data to be processed according to the control. At least some of the different pipeline stages can be implemented by different circuits, being clocked at different frequencies. These frequencies may change dynamically during operation of the integrated circuit. Control and data to be processed according to such control can be offset from each other in the pipeline; e.g., control can precede data by a pre-set number of clock events. To cross a clock domain, control and data can be temporarily stored in respective FIFOs. Reading of control by the destination domain is delayed by a delay amount determined so that reading of control and data can be offset from each other by a minimum number of clock events of the destination domain clock, and control is read before data is available for reading.

Claims (34)

1. A method of crossing pipelined control and data between clock domains in a multi-clock domain integrated circuit, comprising:

storing, by a first circuit clocked by a first clock, an element of control information in a control queue,

storing, by said first circuit, an element of data in a data queue, after a pipeline delay characterized by a pre-set number of clock events of the first clock;

initializing a counter to an initial value;

updating the counter; and

reading the element of control information from the control queue by a second circuit clocked by a second clock operating at a different frequency than the first clock, responsive to the counter reaching a pre-determined value, and then reading the element of data from the data queue after the pre-set number of clock events have occurred for the second clock.

2. The method of crossing pipelined control and data between clock domains in a multi-clock domain integrated circuit of claim 1 , wherein the counter is updated based on the first clock and the initial value to which the counter is initialized is determined based on a delay between when the element of control information can be read from the control queue and when a final element of data will be available to be read from the data queue, and a ratio between the second clock and the first clock.

3. The method of crossing pipelined control and data between clock domains in a multi-clock domain integrated circuit of claim 1 , wherein the counter is updated based on the second clock and the initial value to which the counter is initialized is determined based on a delay between when the element of control information can be read from the control queue, and when a final element of data will be available to be read from the data queue, and a ratio between the first clock and the second clock.

4. The method of crossing pipelined control and data between clock domains in a multi-clock domain integrated circuit of claim 1 , wherein the first circuit is operable to store multiple data elements in the data queue for each element of control information stored in the control queue, and the initial value to which the counter is initialized is determined based on when the element of control information can be read from the control queue and when a final element of data will be available to be read from the data queue, divided by a ratio between the second clock and the first clock.

5. The method of crossing pipelined control and data between clock domains in a multi-clock domain integrated circuit of claim 1 , wherein each of the control queue and the data queue are First In First Out (FIFO).

6. The method of crossing pipelined control and data between clock domains in a multi-clock domain integrated circuit of claim 1 , wherein the initializing the counter comprises setting the counter to an initial value determined according to a ratio of the first clock and the second clock and the pre-set number of clock events.

7. The method of crossing pipelined control and data between clock domains in a multi-clock domain integrated circuit of claim 1 , wherein the updating of the counter comprises decrementing the counter for each clock event of the first clock.

8. The method of crossing pipelined control and data between clock domains in a multi-clock domain integrated circuit of claim 1 , wherein the initial value to which the counter is selected so that responsive to the counter reaching zero, the data element can be read on a clock cycle that maintains, in the second circuit, exactly the pre-set number of clock events between the element of control information and the element of data in the first circuit.

9. The method of crossing pipelined control and data between clock domains in a multi-clock domain integrated circuit of claim 1 , wherein the counter is initialized to zero if the second clock is not faster than the first clock.

10. The method of crossing pipelined control and data between clock domains in a multi-clock domain integrated circuit of claim 1 , further comprising initializing a respective counter, responsive to each element of control information stored in the control queue.

11. An integrated circuit, comprising:

a first circuit clocked by a first clock;

a second circuit clocked by a second clock, wherein the second clock and the first clock are capable of operating at a plurality of different clock ratios, with the first clock and second clock being configured to, in use, operate at different frequencies;

a control queue coupled to receive, as input, control information outputted from the first circuit, and to be read by the second circuit;

a data queue coupled to receive, as input, data outputted from the first circuit, and to be read by the second circuit, wherein each entry in the control queue is paired with an entry in the data queue, and the paired entries are pipelined and offset from each other in the first circuit by a pre-determined number of clocking events of the first clock; and

a counter for each entry in the control queue, the counter operable to be initialized, in conjunction with creation of its entry, to a value determined by the pre-determined number of clocking events and a current clock ratio between the first clock and the second clock, and to be updated, during subsequent clocking, until the value of the counter indicates that the control information for that entry can be read by the second circuit, and the paired data in the data queue can be read after the pre-determined number of clock events occur for the second clock after the control information is read.

12. The integrated circuit of claim 11 , wherein each of the control queue and the data queue are First In First Out (FIFO).

13. The integrated circuit of claim 11 , wherein a minimum initial value of the counter is zero.

14. The integrated circuit of claim 11 , wherein the initializing the counter comprises setting the counter to an initial value determined according to a ratio of the first clock and the second clock and the pre-set number of clock events.

15. The integrated circuit of claim 11 , wherein the updating of the counter comprises decrementing the counter for each clock event of one of the first clock and the second clock.

16. The integrated circuit of claim 11 , wherein the pairing between entries in the control queue and entries in the data queue comprises multiple entries in the data queue pairing to a single entry in the control queue.

17. The integrated circuit of claim 11 , wherein the value of the counter indicating that the control information for that entry can be read causes generation of a signal supplied to the second circuit.

18. A non-transitory machine readable medium having stored thereon machine readable data that when read enable a machine to produce an integrated circuit comprising:

a first circuit, for clocking by a first clock, the first circuit operable to store an element of control information in a control queue, and store an element of data in a data queue, after a pipeline delay characterized by a pre-set number of clock events of the first clock;

a second circuit, clocked by a second clock configured to, in use, operate at a different frequency than the first clock; and

a counter for each element of control information stored in the control queue, operable to be initialized to an initial value determined based on the pre-set number of clock events and a ratio between the frequencies of the first clock and the second clock, wherein

the second circuit is configurable to read the element of control information, from the control queue in response to the counter reaching a pre-determined value, and to read the element of data from the data queue after the pre-set number of clock events have occurred for the second clock since the control information was read.

19. The non-transitory machine readable medium of claim 18 , wherein the generating of the signal occurs before the element of data is available to be read from the data queue.

20. The non-transitory machine readable medium of claim 18 , wherein the machine readable data is in Verilog HDL format, or in VHSIC Hardware Description Language.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Dec 29, 2022
From: CAPITAL FINANCE ADMINISTRATION, LLC, AS ADMINISTRATIVE AGENT
To: MIPS TECH, LLC; WAVE COMPUTING INC.
Reel/Frame 062251/0251 →
SECURITY INTEREST Recorded Jun 14, 2021
From: MIPS TECH, LLC; WAVE COMPUTING, INC.
To: CAPITAL FINANCE ADMINISTRATION, LLC
Reel/Frame 056558/0903 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2021
From: WAVE COMPUTING LIQUIDATING TRUST
To: MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.; MIPS TECH, LLC; WAVE COMPUTING, INC.
Reel/Frame 056589/0606 →
SECURITY INTEREST Recorded Feb 26, 2021
From: WAVE COMPUTING, INC.; MIPS TECH, LLC; MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.
To: WAVE COMPUTING LIQUIDATING TRUST
Reel/Frame 055429/0532 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2018
From: MIPS TECH LIMITED
To: MIPS TECH, LLC
Reel/Frame 045565/0384 →
CHANGE OF NAME Recorded Jan 26, 2018
From: HELLOSOFT LIMITED
To: MIPS TECH LIMITED
Reel/Frame 045168/0922 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2018
From: IMAGINATION TECHNOLOGIES LIMITED
To: HELLOSOFT LIMITED
Reel/Frame 044712/0386 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2014
From: ROZARIO, RANJIT J.
To: IMAGINATION TECHNOLOGIES, LIMITED
Reel/Frame 033468/0839 →