GB2519414A - Crossing pipelined data between circuitry in different clock domains - Google Patents

Crossing pipelined data between circuitry in different clock domains Download PDF

Info

Publication number
GB2519414A
GB2519414A GB1414610.4A GB201414610A GB2519414A GB 2519414 A GB2519414 A GB 2519414A GB 201414610 A GB201414610 A GB 201414610A GB 2519414 A GB2519414 A GB 2519414A
Authority
GB
United Kingdom
Prior art keywords
clock
data
control
counter
fifo
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
GB1414610.4A
Other versions
GB201414610D0 (en
GB2519414B (en
Inventor
Ranjit J Rozario
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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
Priority claimed from US14/451,279 external-priority patent/US9367286B2/en
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of GB201414610D0 publication Critical patent/GB201414610D0/en
Publication of GB2519414A publication Critical patent/GB2519414A/en
Application granted granted Critical
Publication of GB2519414B publication Critical patent/GB2519414B/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

A method of clock domain crossing for a pipelined process in an integrated circuit comprises; in a first clock domain, storing an element of control information in a control queue, and after a pre-set number of clock events of the first clock have passed, storing an associated element of data in a data queue. The method further comprises, in a second clock domain, reading the element of control information after a pre-determined delay, and then reading the element of data after the pre-set number of clock events have occurred for the second clock. This method preserves or maintains an offset (of a number of clock cycles) between control or configuration information and the data it is paired with. The pre-determined delay ensures that the control information is not read too early, when the associated data is not available to be read after the required offset. This problem might occur when the second clock has a higher frequency than the first clock. The length of the pre-determined delay might depend on the ratio of the two clocks and the offset between the paired data. The queues might be a FIFO buffers.

Description

Crossing Pipelined Data between Circuitry in Different Clock Domains
BACKGROUND
Field:
100011 The following relates to integrated circuits, and more particularly to integrated circuits that have multiple clock domains.
Related Art: 100021 Synchronous digital circuits use clock signals to synchronize pieces of circuitry that propagate data. For example, a stage in a pipelined processor may include some combinatorial logic that uses inputs from a set of latches, which are clocked by a clock for the clock domain in which the combinatorial logic exists, and outputs data which is latched by another set of latches that feeds a subsequent pipeline stage. A complex integrated circuit may contain multiple clock domains, each with circuitry synchronized to a clock in that clock domain. Multiple clock domains present an opportunity to more granularly adjust operating frequency of different portions of a complex integrated circuit, by independently varying clock frequencies in different clock domains, A principal reason for adjusting clock operating frequency is to opportunistically reduce power consumption. However, considerations relating to maintaining correctness of operation and other optimizations arise when implementing such dynamic clock frequency adjustments.
SUvIMARY 100031 One aspect relates to a method of crossing pipelined control and data between clock domains in a multi-clock domain integrated circuit. A first circuit, clocked by a first clock, stores an element of control information in a control queue. Subsequently, the first circuit stores an element of data in a data queue, after a delay characterized by a pre-set number of clock events of the first clock. A counter is initialized to an initial value and updated based on the first clock. A signal is generated responsive to the counter reaching a final value. The counter is set to a value that indicates that the element of control information can be read from the control queue by a second circuit, which is clocked by a second clock, operating at a different frequency a than the first clock, and also that the second circuit can 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.
100041 The initializing of the counter may involve 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 (a "pipeline delay"). The counter may be initialized so that responsive to the counter reaching zero, or transitioning from I to 0, the generating of the signal can be performed.
The updating of the counter may comprise decrementing the counter for each clock event of the first clock.
100051 Another aspect comprises an integrated circuit for performing an implementation of the described method. Another aspect comprises a machine readable medium, which can be non-transitory, for storing machine readable data for constructing an integrated circuit that can perform an implementation of the method. The above gives a short summary of some aspects related in detail below. As such, this summary is not limiting, but rather provides a general overview of subject matter described in detail below.
BRIEF DES CRIPTION OF THE DRAWINGS
100061 The accompanying drawings, which are incoiporated herein and form part of the specification, illustrate the present invention and, together with the description, further serve to explain the aspects of the disclosure of the invention and to enable a person skilled in the pertinent art to make and use the invention, FIG. I depicts an example integrated circuit having multiple clock domains, in which
aspects of the disclosure can be implemented;
100081 FIG. 2 depicts a first example timing diagram in which control and data cross a clock domain boundary with a 2: I clock ratio, are offset in a pipeline by four clock events, and each transaction includes a single data element; 100091 FIG. 3 depicts a second example timing diagram in accordance with FIG. 2, except that each transaction includes two data elements; 100101 FIG. 4 depicts a second example timing diagram in accordance with FTG. 3, except that multiple sources are multiplexed from slow-clock sources onto a fast clock domain; 100111 FIGs, SA and SB depict an example process by which implementations can operate; 100121 FIG. 6 depicts an example approach to determining an initial value for the counter according to different supported transaction types; and 100131 FIG. 7 depicts a process by which changes in transaction format (e.g., to clock ratio) causes a change to the initial value of the counters that are instantiated for transactions.
DETAILED DESCRIPTION
100141 Some aspects relate to integrated circuits that have multiple clock domains, driven by clocks that can have dynamically variable operating frequency ratios. For example, some implementations of the disclosed technology include functional units that process information in a pipelined fashion arid have multiple clock domains internal to a functional unit, at boundaries between functional units, or both, For the purposes of this disclosure, a relevant consideration ariscs whcrc a sourcc portion of circuitry is driven by one clock and a sinking portion of circuitry by a different clock. The source portion is configured to output two or more items of data (e.g., control or configuration data as one item and operand data as another item), that have a temporal offset from each other, which is controlled by a number of clock events of the clock for the source portion, to the other portion of circuitry, where the items of data are to maintain the same clock count offset. In one example, control information and data are passed through pipeline stages, where the control information leads the data by a pre-set number of clock events and is used to configure hardware elements to perform a specified operation or operations on (or with) the data associated with that control information.
100151 As a more specific example, FIG. 1 depicts an integrated circuit 2 having functional units 6 and 8. Functional units 6 and 8 represent an example where a portion of circuitry may be delineated to implement a particular operation or operations. Examples of functional units include a floating point unit, an adder, a complex function unit, an Arithmetic Logic Unit (ALU), a memory management unit, and so on. Functional unit 17 is optionally present, and relates to the example of FIG. 4, described below. A clock ratio control element 30 is coupled with a lookup table 31 that maintains an appropriate initial value for counters, described below, for each operating mode of an interface between functional unit 6 and functional unit 8 depicted in FTG. 1 (described in more detail below.) 100161 Functional unit 6 is clocked by a clock 15 and functional unit 8 is clocked by a clock 16; optional functional unit 17 also is clocked by clock 15 in this example. Functional unit 6 outputs control information on control path 9, to a control FIFO 11. Functional unit 6 outputs data on datapath 10 to a data FIFO 12. Functional unit 17, if present, outputs control to control FIIFO 18 and data to data FIFO 19. These FIFOs can be read by a bus interface unit 20, if present. If a bus interface unit is not present, then functional unit 8 can directly read from these FIIFOs, For example, the FIFOs can be part of a point to point connection between functional unit 6 and functional unit 8. In other implementations, FIFOs may be used as inputs to control and data busses. The examples here show that control and data can be signaled separately.
However, those of ordinary skill may adapt these disclosures to make implementations that use a single physical bus for both control and data. The bus 20 and functional unit 6 may be clocked by clock 16.
100171 As introduced above, functional unit 8 (where bus 20 is not present) is operable to read from control FIFO II and data FWO 12. A series of control elements (portions of control data that each have associated data) may be processed in pipeline fashion through functional unit 6, which establishes a correct relative order in which processing is to be performed by the portions of integrated circuit 2 involved in that pipeline. The control and paired data in the pipeline are offset from each other by a pre-set number of clock events of clock 15. This offset can be pre-determined for a specific implementation. The offset can also vary for different transaction types. The offset may be dependent on considerations such as an amount of latency between functional units 6 and 8 and a baseline clock rate. Thus, when pipelined processing is performed by circuitry located in two different clock domains (as in the example of FIG. 1), this offset, measured in a number of clock events, between control and paired data should be maintained, so that the correct control is applied to the appropriate data, 100181 Tn one aspect of the disclosure, in order to maintain correctness of order and the appropriate pipeline offset, integrated circuit 2 includes a count maintenance circuit 22 that also is clocked by clock 15. Count maintenance circuit 22 receives signal(s) 18 from functional unit 6, indicating that control/data is being outputted by functional unit 6 on control path 9 and datapath 10 (an example of such signal(s) is detailed below). Count maintenance 22 initializes and maintains a counter in a counts module 20. A read enable module 24 tracks a current status of counts module 20, and generates a read enable signal provided to functional units that read from control FIFO 11 and data FIFO 12 (e.g., functional units 8 and 32). FIG. 1 depicts that count maintenance 22 can be clocked by one or more of clock IS and clock 16. Implementations may determine to use either the source module clock (e.g., clock 15) or the destination module clock (clock 16). In some situations, an entirely different clock could be used. For example, if clock 15 and clock 16 are derived from a common clock with a known frequency relative to clocks 15 and 16, then clock maintenance 22 can use that common clock to maintain the counters. In such a circumstance, an initial value to which a given counter is initialized is determined according to how that counter will be maintained.
10019] In one implementation, there is a counter for each element of control currently in control FIFO I 1. A maximum number of items that may be in control FIFO 1 1 at a given time is related to an amount of offset between the control and data in the pipeline being implemented in this portion of integrated circuit, and to a difference in speed between clock 15 and clock 16. In one example, count maintenance 22 initializes a respective counter for each item of control stored in control FIFO 11, in response to each write enable signal from functional unit 6, and maintains all active counters in counts 20 for each clock event occurring for clock 15.
10020] As an example, each count may be initialized to a particular value calculated based on a current ratio between clock 15 and clock 16, and the offset between control and data. In one example, the initial value is determined so that a read of the control information by functional unit 8 is delayed until the control information is available, but ahead of availability of the paired data in data FIFO 12. In one example, control FTFO II is read at a time so that the data paired with that item of control will be available for reading by functional unit 8 after a number of clock events of clock 16 equal to the pipeline offset has occurred. Read enable 24 may comprise a set of comparators that compares a trigger value (e.g., 0) to each of the active counters in counts 20, and generates a read enable signal for a particular item of control, in response to the counter initialized for that item of control reaching that trigger value. A more detailed example of operation of the various components depicted in FIG. I is found below.
1002!] FIG. 2 depicts a timing diagram for an example set of signals implementing the aspects of integrated circuit 2 disclosed above. In the example of FIG. 2, clock 16 operates at double the frequency of clock IS, and is configured for a pipeline offset where data trails control by four clock events. At clock event 0 of clock I 5, a CtrlWrTnfo signal SI (CtrlWrTnfo 5 1) is generated to output control information on control path 9. A Ctrl WrEn signal 52 can be used to indicate that such control information is available to be latched into control FIFO 11. At clock event 4 of clock IS, data corresponding to the control written at clock event 0 is put on datapath ID (DataWrlnfo 55, DataWrEn 56 and DataFifoEmpty 57 being used to implement), and ultimately stored in data FfFO 12, 100221 CtrlWrEn 52 also can be used as the signal to initialize a counter for the item of control to be written to control FIFO 11. A CtrlFifoEmpty signal 53 can indicate that the control FIIFO 11 is not empty. A RdyPendCnt signal 60 can be used to represent a current status of the counter initialized for the item of control, FIG, 2 shows that RdyPendCnt 60 is initialized at 2 and decreniented for each clock event of clock IS. A transition from a count of I to 0 initiates a CtrlRdlnfo signal 62 and a CtrlRdEn signal 63, which are used to indicate that the control item is ready to be read by functional unit 8 being clocked by clock 16, Functional unit 8 should maintain the four clock-event delay between CtrlWrlnfo 51 and DataWrlnfo 55 in clock 15 when reading control FTFO 11 and data FIFO 12. Since functional unit 8 is clocked by clock 16, which operates at twice the frequency of clock 15, control FIFO 11 can be read by functional unit 8 at clock event 6 and data FIFO 12 can be read at clock event 10 for clock 16, A DataRdTnfo 66 signal and a DataRdEn signal 67 can be triggered at clock event 10 for clock 16 by a state machine or other state tracking mechanism in functional unit 8, which maintains the four clock event delay for the pipeline.
100231 The example depicted in FIG, 2 was for a situation where control leads data by four clock events of the clock used in a source part of the pipeline (exemplified by functional unit 6), and that clock is half the frequency of a sink part of the pipeline (exemplified by functional unit 8). However, a pipeline delay of 4 clock events for clock 15 translates into S clock events for clock 16. Such a ratio can change as the frequencies of one or more of clock 15 and clock 16 change. Functional unit 8 cannot rely on CtrlFifoEmpty 53 as a signal to read from control FIFO 11, which would in turn trigger the four-clock event offset of the pipeline, because a four-clock event delay of clock 16 may be insufficient to allow the data to be available to be read from data FIFO 12, 100241 One way to safely ensure that functional unit 8 can read data FIFO 12 exactly four clocks after reading control FIFO 1 1 is to trigger reading of control FIFO II based on the availability of data in data FTFO 12. This approach is shown by a CtrlRdlnfo signal 70 and a CtrlRdEn signal 71 being triggerd by DataFifoEmpw 57. As would be expected, in such scenario, a DataRdlnfo signal 75 and a DataRdEn signal 76 are activated four clock events after CtrlRdEn 71 However, in this situation, this pairing of control and data is not fully available to functional unit 8 until clock event IS of clock 16, which is 4 clock events later than the embodiment described above. As would be appreciated, the extra number of clock events spent in functional unit 8 waiting for data availability would increase proportionally as pipeline offset increases. Therefore, such an approach induces delay at the transition between functional units 6 and 8.
100251 Implementations of the disclosure may provide an optimal transition between functional units 6 and 8, in that control is read by functional unit 8 at a time that allows the appropriate n umber of clock events to occur (to maintain the pre-set pipeline offset), and to have that number of clock events coincide with availability of data to be read from data FIFO 12. By specific contrast, in FIG. 2, data FIFO 12 is read on clock event 10 according to such an approach, rather than at clock event 14, resulting in reduced delay.
100261 FIG. 3 presents an additional example to further elucidate aspects that may be found in implementations of the disclosure, FIG. 3 shows a second transaction, having a CtrlWrlnfo transaction at clock event 2 (identified as 81). FIG. 3 also shows that each transaction comprises two "beats" of data, identified for each transaction 82 and 83 as DO and Dl (as shown by DataWrlnfo 55 at clock events 3-6). In FIG. 3, CtrlRdlnfo 62 is in accordance with the example of FTG. 2. A counter 84, for which a current value is represented by RdyPendCnt 6Db, is set responsive to the second control element 81, The initial value for such counter, and expiration of that counter triggers the second instance of CtrlRdlnfo (85 in FIG. 3). The DataRdinfo 66 signals are identified as 86 and 87, and include two beats of data.
100271 The example of FIG, 3 shows that each beat of data can be stored in a respective location in the FTFO (i.e., that the reading of the data does not need to occur during a valid period when the data is being written to a FIFO). For example, FIFO I 2 can operate to store consecutive beats of data in consecutive FIFO locations, An amount of data stored in a given FIFO location may be selected according to a width (number of bits) of the data being stored, For example, a datapath can be 8, 16, 32, 64, 128, 256 bits, or more wide, A FIFO can allocate an appropriate number of slots to receive the data to be made available in a transaction. For example, in FTG. 2, only one FIFO slot is needed, while in FIG. 3, two FTFO slots may be reserved. In FIG. 3, because the pipeline delay is 4 clocks, the second control element occurs at clock 2, skipping a clock from the first CtrlWrlnfo 51 at clock 0 (where there is a single write port to FIFO 11 from functional unit 6).
100281 FIG. 4 depicts an example that builds on the example of FIG. 3, where multiple sources of control and data are multiplexed on the faster clock ratio side (e.g., on bus 20 of FIG. 1). In the example of FIG. 4, CtrlWrlnfo 51, RdyPendCnt 60a, and RdyPendCnt 60b are as in FIG. 3, and a second CtrlWrlnfo 88 and RdPendCnt 90 is provided. These can be implemented for Control FIFO 18 and Data FIFO 19 that interface functional unit 17 with bus 20, for example.
Counts 21 provide a per-transaction counter for each transaction represented in control FIFO 1 8 and data FIFO 19. In FIG. 4, CtrlWrlnfo 88 becoming active, causing initialization of a counter (represented by RdPendCnt 90). RdyPendCnts 60a, 60b and 90 decrement according to Clock 15, in an example. FIG. 4 shows that functional units 6 and 17 would coordinate to alternate with each other (or one unit can be offset in operation from the other by a clock event), in generating transactions (see CtrlWrlnfo 51 transactions at clocks 0 and 2, with CtrlWrlnfo 88 at clock 1). The availability of data would be as shown in FIG. 4, maintaining a four clock pipeline delay for each of functional unit 6 and functional unit 17. CtrlRdlnfo 62 can become active as shown. A second CtrlRdlnfo 64 can be used to signal when to read from Control FIFO 18 (CtrlRdEn 65 shown also), as indicated by reference 92. DataRdlnfo 66 can be active as depicted, and a second DataRdinfo 68 can be used to indicate when Data FIFO 19 should be read, DataRdEn 69 also is depicted, at reference 95. FIG. 4 thus shows how multiple sources can be multiplexed onto a faster bus or multiplexed into one functional unit, where each reading of control is triggered by an expiration of a counter for that transaction. Thus, in an example of FIG, 4, two sources of data each operating at a slower clock rate can be combined into a higher bandwidth channel, while maintaining appropriate pipeline delays between reading of control and data.
100291 FIGs. 5A and SB depict aspects of an exemplary method, which can be implemented within an integrated circuit according to the disclosure. At 106, an element of control is output (e.g., from a source circuit) and at 108, a counter is initialized. At 110, a decision whether the counter indicates that the item of control is ready to be read is made, and if not, then at 114, the counter is updated in response to a clock event of a first clock (e.g., a clock for the source circuit). At I 16, if a pre-set number of clock events of the first clock have occurred, then at 118, a data element is output (e.g., output to a data FED by the source circuit). After 118 and 116, the method of FiG. 4A can continue at 110, where it is again determined whether the counter indicates readiness to generate the signal. Here, decision I 10 can be implemented, for example, as a comparison between a current value of the counter and a pre-determined value, such as 0.
Such comparison may be implemented in a fixed-function circuit, Such comparison also may be implemented using programmable or configurable logic elements. For example, the updating of the counter and the comparison may be implemented within the same circuit. As such, the disclosure does not imply, by separately depicting certain actions, that these actions necessarily are conducted separately from each other or by different logic elements, 100301 Returning to 110, if the counter indicates readiness (is interpreted as indicating readiness), then at 1 1 2, a signal is output. Turning to FIG. 411, at I 20, that signal is received, and in response, at 122, an element of control is read at a time determined by a clock event of a second clock (e.g., read by a sinking circuit, that is clocked by a second clock). At 124, the second clock continues (concurrently with clocking of the first clock). At 126, the data element outputted to the data FIFO at 118 is read after the pre-set number of clock events of the second clock. Following the reading at I I 8, the method of FTG. 4B can return to 120, and await receipt of another signal. This approach may be implemented where a comparatively long signal latency (long signal latency compared to a clock period) exists between thnctional units 6 and 8. Here, the expiration of a counter signals to begin reading from the control FIFO(s) and does not require a round trip communication.
100311 Tn the example of FRi. 2 above, a single data transaction was shown Tn the examples of FIGs. 3 and 4, two data elements accompanied a single element of control.
However, implementations also may allow more data elements, and a variable number of data transactions for each item of control. For example, a series of data elements can each by processed in a stream using the same control. For example, such a pipeline could process a variable number of data elements, determined by how long DataFifoEmpty 57 was held low, meaning that the data FIFO 12 is not yet empty. During that period, data can be continuously clocked from data FIFO 12. A state machine or other state tracking mechanism in the pipeline would be adapted to implement this approach. This approach is in contrast to the examples of FIGs. 2-4, in which all the data elements for a given &ement of control were available within a known maximum pipeline delay, and for a given transaction format, a pre-determined number of data items would be present in each transaction. These two parameters allow a state machine in functional unit 8 to begin reading from data FIFO 12 at an appropriate time after reading from control FIFO 11, so that the transaction completes within the pre-defined pipeline delay.
100321 FIG. 6 depicts an approach to determining the initialized clock values. As shown at 150, the depicted approach may be repeated for each transaction format to be supported, Transaction formats may vary a clock ratio, or a number of data elements for each control element, for example. Transaction formats also may vary a delay between control and data.
Different implementations may support different pre-determined sets of transaction formats. An available set of transaction formats may be pre-deterniined for a particular implementation.
100331 Where pipeline latency is specified relative to an end of a transaction, a count can be initialized to a value determined as count = ceil(pipelinedelay/(Clock 2/Clock I)), where Clock 2 is the clock of the domain reading from ("sinking") the FIIFOs, Clock 1 is the clock for the domain writing to ("sourcing") the FTFOs, 10034] Tf Clock 2 is less than Clock i,no extra delay is required, so a minimum value for count can be zero, Otherwise, count can be rounded up to the nearest integer (ceiling). Because the pipe delay is equivalent to the availability of the last data element in this example, a different statement of the count initialization value is that the count is initialized by determining when the last data element is available, compared with availability of the corresponding control, and then dividing that difference by an appropriate clock ratio, In summary, a delay is introduced if a circuit reading from a FIFO is clocked at a faster rate than a circuit writing to that FTFO, An amount of delay is determined so that the control is read at a time selected to respect the offset between control and data in the pipeline of which the circuits are apart, but also avoiding unnecessary delay, 100351 FIG, 7 depicts an example process in which a current transaction format may be set and subsequently changed. FIG, 7 depicts an example in which an apparatus has modules clocked with clocks that have a given clock ratio, and thus a decision or command is made to adjust one or more of these clocks, which changes a clock ratio of these modules, 100361 At 175, a transaction formation is set; this action may take place at an initialization phase or in response to a clock ratio change command. Since the transaction format is changing, a clock ratio selection or change may need to be made. Tn response, at 177, a lookup or calculation of an appropriate initial value for counters is conducted. For example, all supportable clock ratios and data formats can have pre-calculated counter values, which are stored. For example, clock ratio control module 30 may perform a lookup in table 3 I (see FTG. I). In some implementations, these counter values can be determined by circuitry, or by control software.
For example, a power management process can determine clocking frequencies for multiple modules, and a bus transaction format, and then calculate the initial counter value accordingly.
Such counter value also can be set based on how the counter value will be updated, and those of ordinary skill would understand from this disclosure that the counter value is initialized based on an expectation of how it would be updated.
At 179, a counter is initialized for each data transfer to be performed, Such initialization occurs in response to a module outputting a data element or otherwise initiating a data transfer, Such initialization thus would occur at each interface implementing the disclosure.
As such, a variety of counters may be set across a system with a number of interconnected functional modules, as these different functional modules exchange data. At 181, a switch in transaction fornrnt is detected. This detection does not indicate that the interface has been switched to a different format, but rather there is an indication that a switch is to be effected, Then, at 183, data existing in the FIFOs at interthces of the modules affected by the switch are flushed at the old transaction format. Such flushing would allow the counter updating to proceed as normal and continue to read data from the FIFOs as normal. In some cases, queues across an entire system can be flushed when there is a transaction format change, while in other cases, only queues for affected interfaces may be flushed. Which queues need to be flushed and which do not will be affected by how different modules in the system are clocked, After flushing, then the new transaction format can be set, at 175, and the system can continue operation at the new transaction format.
100381 Also, the example of FIG, 1 showed that the count was initialized and decremented within the circuitry clocked by clock 15. However, in other implementations, a current ratio between clock 15 and 16 may be available to the circuitry clocked by clock 16. That ratio may be used, in conjunction with the pre-set pipeline offset, and CtrlWrEn 52 or CtrlFifoEmpty 53 to initiate a counter by circuitry clocked by clock 1 6. It was explained above that the counter initial value can be determined by software. Such initial value can be loaded into a register for example by software and then copied when data element-specific counters need to be initialized, Tn implementations according to this disclosure, the counter can be initialized to a different value, but because of a difference in clocking frequency, would ultimately trigger CtrlRdEn 63 at the same time.
100391 It was disclosed herein that a counter is provided for each transaction at a given interface, Each counter can be maintained within a respective register. Each counter is initialized and updated, such that when a given counter reaches a pre-determined value, a transaction associated with that counter is ready to proceed. Each counter can be associated with a fixed position in memory that is managed as a ring buffer, such that a pointer or index may be maintained to a location in such ring buffer at which control and data will be stored for a next transaction.
100401 From the above disclosure, a person of ordinary skill would appreciate that a variety of implementations of the disclosed aspects can be realized. For example, FIG. 1 depicts count maintenance 22 and read enable 24 as separate blocks. However, these functional elements can be realized by the same portion of circuitry, and count maintenance 22 can update each counter and perform a comparison. Also, the counter for each item in a given queue may be updated by a clock for a storing unit, a clock for a reading unit, by a third clock, or other update mechanism that is designed to account for a data transaction format being used to exchange data between the storing unit and the reading unit. As such, it would be understood that embodiments of the disclosure may implement a self-consistent mechanism for initializing each counter, updating each counter and determining when the counter indicates that the item of control may be read, This reading in turn triggers a self-consistent mechanism for determining when the item of data is to be read. These examples also described a situation where control lead data for a given transaction by some number of clocking events. Although this is expected to be the typical case, embodiments of the disclosure apply also to a situation where data may lead control. It would be understood from these various examples that other implementations of such functionality can be realized by those of ordinary skill based on this disclosure, 1004!] The term "clock event" was used to encompass any of a variety of approaches to clocking circuitry, and the example does not imply or require the usage of any particular clocking approach. For example, if circuitry is configured to be double-edge sensitive, then occur clock events on both transitions, while for a single-edge clocking approach, a clock event occurs for each clock period. Also, where the term clock frequency was used, it is used in the sense of a rate of clock events, which do not necessarily correspond exactly to a number of state transitions of a clock per second.
100421 Control FIFO 11 and Data FIFO 12 can be implemented using a variety of techniques. For example, each FIFO can be implemented using in a memory shared for other purposes and by other functional units, For example, each FIFO can be implemented as a ring buffer that tracks a head address and a tail of address of entries currently in that FIFO. These FIFOS can be implemented using a dedicated set of registers. Also, FTG. I depicts a separate control FIFO 11 and data FIFO 12; however, this separate depiction does not imply physical separation, and indeed, the same physical memory can be used to implement both such FWOs, A FIFO is an example of a queue. Although not a principal focus of the disclosure, implementations may select pairings of control and data out of first in/first out order, so long as the relative pipeline offset for each pairing of control and data is maintained, Similarly, a variety of physical implementations of functionality to initialize, update and determine when each counter indicates control readiness can be realized, such physical implementations would be influenced by the particulars of the system in which this functionality would be realized, [0043] Aspects of functions, and methods described and/or claimed may be implemented in a special purpose or general-purpose computer including computer hardware, as discussed in greater detail below. Various functionality can be provided in customized FPGAs or ASICs or other configurable processors. Such processing functionality may be used in personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, game consoles, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, tablets, embedded applications, such as televisions, automobiles, sensors, robots, and the like, [0044] In addition to hardware embodiments (e.g., within or coupled to a Central Processing Unit ("CPU"), microprocessor, microcontroller, digital signal processor, processor core, System on Chip ("SOC"), or any other programmable or electronic device), implementations may also be embodied in software (e.g., computer readable code, program code, instructions and/or data disposed in any form, such as source, object or machine language) disposed, for example, in a computer usable (e.g., readable) medium configured to store the software. Such software can enable, for example, the function, fabrication, modeling, simulation, description, and/or testing of the apparatus and methods described herein. For example, this can be accomplished through the use of general programming languages (e.g., C, C++), GDSTT databases, hardware description languages (MDL) including Verilog 1-IDL, VHDL, SystemC Register Transfer Level (RTL) and so on, or other available programs, databases, and/or circuit (i.e., schematic) capture tools. Embodiments can be disposed in a machine usable medium including non-transitory memories such as memories using semiconductor, magnetic disk, optical disk, ferrous, resistive memory, flash memory, and so on, Such machine readable information can be accessed over networks from network attached storage, from storage area networks, from remote file servers, and so on.
[0045] As specific examples, it is understood that implementations of disclosed apparatuses and methods may be implemented in a semiconductor intellectual property core, such as a microprocessor core, or a portion thereof, embodied in a Hardware Description Language (HDL)), that can be used to produce a specific integrated circuit implementation. Examples of HDLs include Verilog HDL and \THSIC Hardware Description Language, where V}ISIC stands for is Very High Speed Tntegrated Circuit, A computer readable medium may embody or store such description language data, and thus constitute an article of manufacture. A non-transitory machine readable medium is an example of computer readable media, Examples of other embodiments include computer readable media storing Register Transfer Language (RTL) description that may be adapted for use in a specific architecture or microarchitecture implementation. Additionally, the apparatus and methods described herein may be embodied as a combination of hardware and software that configures or programs hardware.
10046] Machine-executable instructions comprise, for example, instructions and data which cause or otherwise configure a general puipose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or source code. Although some subject matter may have been described in language specific to examples of structural features and/or method steps, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to these described features or acts. Rather, the described features and steps are disclosed as examples of components of systems and methods within the scope of the appended claims.
10047] The embodiments herein have been described above with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof.
The boundaries of these functional building blocks have been defined in the disclosure for disclosure of exemplary implementations, and for the convenience ofthe description. Alternate boundaries may be defined so long as the specified thnctions and relationships thereof are appropriately performed.
10048] For sake of clarity, not every example can include an implementation of every aspect disclosed herein, and the examples do not illustrate exclusive or entirely complete functional units or integrated circuits according to the disclosure, but rather are to be interpreted and understood in light of the knowledge of those of ordinary skill, Lstead, aspects illustrated and described with respect to one figure or example can be used or combined with aspects illustrated and described with respect to other figures, and can be combined with, used with, or implemented with other functionality, As such, a person of ordinary skill would understand from these disclosures that the above disclosure is not limiting as to constituency of embodiments according to the claims, and rather the scope of the claims define the breadth and scope of inventive embodiments herein. The summary and absfract sections may set forth one or more but not all exemplary embodiments and aspects of the invention within the scope of the claims.
GB1414610.4A 2013-08-28 2014-08-18 Crossing pipelined data between circuitry in different clock domains Expired - Fee Related GB2519414B (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361870919P 2013-08-28 2013-08-28
US201361919695P 2013-12-20 2013-12-20
US14/451,279 US9367286B2 (en) 2013-08-28 2014-08-04 Crossing pipelined data between circuitry in different clock domains

Publications (3)

Publication Number Publication Date
GB201414610D0 GB201414610D0 (en) 2014-10-01
GB2519414A true GB2519414A (en) 2015-04-22
GB2519414B GB2519414B (en) 2016-01-06

Family

ID=51662563

Family Applications (1)

Application Number Title Priority Date Filing Date
GB1414610.4A Expired - Fee Related GB2519414B (en) 2013-08-28 2014-08-18 Crossing pipelined data between circuitry in different clock domains

Country Status (1)

Country Link
GB (1) GB2519414B (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040151209A1 (en) * 2002-04-30 2004-08-05 Fulcrum Microsystems Inc. A California Corporation Asynchronous system-on-a-chip interconnect
US20080244299A1 (en) * 2007-03-30 2008-10-02 Andrew David Tune Data processing apparatus and method for translating a signal between a first clock domain and a second clock domain

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040151209A1 (en) * 2002-04-30 2004-08-05 Fulcrum Microsystems Inc. A California Corporation Asynchronous system-on-a-chip interconnect
US20080244299A1 (en) * 2007-03-30 2008-10-02 Andrew David Tune Data processing apparatus and method for translating a signal between a first clock domain and a second clock domain

Also Published As

Publication number Publication date
GB201414610D0 (en) 2014-10-01
GB2519414B (en) 2016-01-06

Similar Documents

Publication Publication Date Title
US9740454B2 (en) Crossing pipelined data between circuitry in different clock domains
US9588916B1 (en) Interrupt latency reduction
US8412974B2 (en) Global synchronization of parallel processors using clock pulse width modulation
US8078772B2 (en) Digital phase relationship lock loop
TW200408923A (en) Method and apparatus for reducing clock frequency during low workload periods
US20100169675A1 (en) Synchronizing circuit
US8051320B2 (en) Clock ratio controller for dynamic voltage and frequency scaled digital systems, and applications thereof
US10025732B2 (en) Preserving deterministic early valid across a clock domain crossing
US9471091B2 (en) Periodic synchronizer using a reduced timing margin to generate a speculative synchronized output signal that is either validated or recalled
WO2014027328A1 (en) Method and apparatus for transferring data from a first domain to a second domain
US11683149B2 (en) Precise time management using local time base
JP7299890B2 (en) Asynchronous buffer with pointer offset
US9584305B2 (en) Deskew FIFO buffer with simplified initialization
KR102440129B1 (en) Computer system supporting low power mode and method of thereof
KR100826496B1 (en) Semiconductor integrated circuit device and operating method thereof
US9143315B2 (en) Predictive periodic synchronization using phase-locked loop digital ratio updates
US11687115B2 (en) Precise time management for peripheral device using local time base
GB2519414A (en) Crossing pipelined data between circuitry in different clock domains
US20150149809A1 (en) Synchronous bridge circuitry and a method of transferring data using asynchronous bridge circuitry
JP2004326222A (en) Data processing system
US12073111B2 (en) Domain-selective control component
KR102032330B1 (en) Semiconductor device and its global synchronous type dynamic voltage frequency scaling method
KR102226284B1 (en) System-on-chip and driving method thereof
CN112737571A (en) Clock circuit and clock circuit generating method, device, equipment and medium
WO2012049355A1 (en) Apparatus for synchronizing and providing a glitch-free clock

Legal Events

Date Code Title Description
732E Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977)

Free format text: REGISTERED BETWEEN 20180327 AND 20180328

PCNP Patent ceased through non-payment of renewal fee

Effective date: 20200818