Systems and methods for dynamic configuration of a device clock

This disclosure describes a programmable clock configuration block disposed at the SoC system, which manages clock frequency change flow in a single clock domain on a SoC system to provide dynamic clock frequency configuration while the SoC system is in operation. The programmable clock configuration block is configured to interact with the CPU of the SoC system to configure or change parameters relating to the clock signal frequency while the CPU is in an inactive state.

FIELD OF USE

This disclosure relates to the configuration of a clock tree for an electronic device, and specifically, to mechanisms and techniques for dynamically configuring frequency changes in the clock tree of an electronic device while in operation.

BACKGROUND OF THE DISCLOSURES

A system-on-a-chip (SoC) circuit integrates circuit components into a single silicon chip or into several chip modules that are coupled together in a package, which usually includes at least one clock source, such as a crystal oscillator or a phase-locked loop (PLL), to generate clock signals that provide time context to signal processing applications of the SoC. Traditionally, the frequency of the system clock signal is pre-selected at the time when the SoC is powered up using sample-at-reset (SAR) pads on the SoC. The resulting frequencies of the clock signals configured by SAR pads are usually limited to a pre-defined set defined by the available SAR pads. For example, each SAR pad is a device pad, the output value of which is sampled when the device exits a reset mode (long after the device was powered up) by a set of register files. The sampled values are being translated by logic circuitry within the device to a “start of day” device set-up mode, which are also used to set up the clock frequency configuration parameters. The clock frequency configuration parameters are then used by the clock circuit to generate a clock signal of a particular frequency. The SAR pad usually only provides a pre-defined set of clock division factors, which are defined by the hardware structure of the SAR pads. Frequency change out of the pre-defined set of frequencies requires a device update, i.e., the SoC device needs to be powered off, and then re-powered up, for the SAR pads to be sampled when reset is done to provide a new set of clock division parameters. Thus, the traditional process of clock frequency configuration or mode change on a SoC can be labor intensive, or making compromises which affect customer requirements. In addition, using dedicated SAR pads for each clock circuit increases the cost of manufacturing the SoC system.

SUMMARY

Embodiments described herein provide A method for dynamically configuring a frequency of a system clock signal in an integrated circuit device while the integrated circuit device is in operation. A set of clock configuration parameters issued by a processor of the integrated circuit device are received, via an advanced extensible interface (AXI) bus that is uncoupled from sample-at-reset pads of the integrated circuit device, while the integrated circuit device is in operation according to a previously configured clock signal having a first frequency. In response to a signal issued by the processor of the integrated circuit device notifying that the integrated circuit device has entered an inactive state, a clock circuit is configured, via the AXI bus, to generate an updated clock signal for at least one clock domain within the integrated circuit device using the set of received clock configuration parameters. The updated clock signal has a second frequency different from the first frequency. A release command is then set to release the integrated circuit device from the inactive state thereby causing the at least one clock domain within the integrated circuit device to resume operation at the second frequency.

In some implementations, the integrated circuit device includes multiple clock domains. Thus, in response to receiving, via the AXI bus, the set of clock configuration parameters issued by the processor of the integrated circuit device, the at least one clock domain from the multiple clock domains within the integrated circuit device is identified, based on the set of clock configuration parameters. The circuit clock is configured corresponding to the at least one clock domain with the set of clock configuration parameters without affecting circuit clocks corresponding to other clock domains.

In some implementations, in response to receiving, via the AXI bus, the set of clock configuration parameters issued by the processor of the integrated circuit device, a programmable AXI block is initiated within the integrated circuit device with an active stand-by status to wait for the processor of the integrated circuit device to enter a wait-for-event status during which the processor is temporarily idling.

In some implementations, the signal issued from the processor of the integrated circuit device is obtained, notifying that the integrated circuit device has entered an inactive state. The signal indicating that the central processing unit of the integrated circuit device has entered the wait-for-event status during which the processor is temporarily idling is received, from the processor of the integrated circuit device.

In some implementations, the set of clock configuration parameters includes one or more phase-locked loop parameters are indicative of at least a pass frequency band of a filter or an oscillator frequency. The one or more phase-locked loop parameters are written, via the AXI bus, into one or more registers governing an operation of a phase-locked loop circuit in the clock circuit.

In some implementations, the set of clock configuration parameters includes a clock division parameter. A clock division parameter is written to a register in the at least one clock circuit for frequency division.

In some implementations, after configuring, via the AXI bus, a clock circuit to generate an updated clock signal for at least one clock domain within the integrated circuit device using the set of received clock configuration parameters, a pre-defined period of time is waited for a plurality of components within the at least one clock domain to receive the updated clock signal from the clock circuit prior to setting the release command.

In some implementations, a trigger signal is sent to a counter within a programmable AXI block to start counting until a counter value associated with the counter reaches a pre-defined counter value, wherein the pre-defined counter value is pre-configured for the counter. When the counter value has reached the pre-defined counter value, a completion signal which triggers the setting of the release command is obtained, from the counter.

In some implementations, a status value indicative of an active status is written, via the AXI bus, to a status register associated with the processor of the integrated circuit device.

In some implementations, after setting the release command to release the integrated circuit device from the inactive state thereby causing the at least one clock domain within the integrated circuit device to resume operation at the second frequency, a turn-off command is obtained, via the AXI bus and from the processor of the integrated circuit device. The programmable AXI block is configured while the integrated circuit device resumes operation, in which the at least one clock domain is operated according to the updated clock signal.

DETAILED DESCRIPTION

In view of the inefficiency and frequency limitations in the traditional hardware-based clock configuration using SAR pads, this disclosure provides systems and methods for dynamic clock configuration controlled by the central processing unit (CPU) of a SoC system. Specifically, embodiments described herein provide a programmable clock configuration block disposed at the SoC system, which manages clock frequency change flow in a single clock domain on a SoC system to provide dynamic clock frequency configuration while the SoC system is in operation. The programmable clock configuration block is configured to interact with the CPU of the SoC system to configure or change parameters relating to the clock signal frequency while the CPU is in an inactive state. In this way, the frequency of the clock signals can be changed to a wide range of values, e.g., by configuring the clock division parameter, without interrupting operation of the SoC system. With the described dynamic clock configuration mechanism, the SoC system is able to configure or change the frequency of clock signals on-the-fly by taking advantage of the time periods when the CPU is waiting for an event, to allow new clock division parameters to be programmed into the registers of a clock generation circuit on the SoC system. Processing efficiency of the SoC system is thus improved.

FIG. 1provides a block diagram illustrating a programmable configuration block disposed at a SoC system for dynamic clock configuration, according to embodiments described herein. Diagram100shows an integrated circuit device, such as a SoC system. The integrated circuit device100integrates various circuit components onto a single circuit chip, such as one or more clock domains101,102,103, etc., a CPU110, and a programmable configuration block120configured to dynamically change clock frequencies. In an alternative implementation, the one or more clock domains101,102,103, etc. may be integrated on separate chip modules that are coupled together in the same package.

The programmable configuration block120is an enhanced Advanced eXtensible Interface (AXI) write generator (eAWG) that is configured to store AXI transactions information that records a complete write or read operation via an AXI bus. Specifically, the eAWG120is an enhanced module based on an AXI write generator, but with additional logic control unit that controls the timing of a write operation implemented by the AWG, and a counter configured to record the timing of the write operation implemented by the AWG. The eAWG120is configured to receive, from the CPU110, and store AXI write operations to write clock configuration parameters to a clock circuit via an AXI bus when the eAWG120is started. Further details of the architecture and work flow of the eAWG120are provided inFIGS. 2-4.

Each clock domain101,102,103, etc. may have one or more clock circuits such as PLLs101a-n,102a-n,103a-n, respectively, which respectively generate a respective clock signal for the respective clock domain. The clock domains101,102and103are connected to the programmable configuration block120via Advanced eXtensible Interface (AXI) buses115a,115b,115c, respectively. Clock configuration parameters may be written by the programmable block120to the PLLs101a-n,102a-nor103a-nvia AXI buses. Specifically, when the multiple clock domains101-103are operated under different clock signals, the clock signal of a specific clock domain may be configured by the eAWG120without changing the clock frequencies of the other clock domains.

In some embodiments, when the SoC system100has multiple clock domains101-103, the eAWG120is configured to identify, based on the set of clock configuration parameters received from the CPU110, the target clock domain from the multiple clock domains101-103within the integrated circuit device100. The eAWG120is then configured to configure the circuit clock corresponding to the target clock domain with the set of clock configuration parameters without affecting circuit clocks corresponding to other clock domains. In this way, after configuring the target clock circuit and when the CPU110resumes operation, the target clock domain is to resume operation under the newly configured clock signal, and other clock domains may resume operations under the previously configured clock signals that are unchanged.

FIG. 2provides a work flow diagram200illustrating interactions between the programmable configuration block and the CPU of the SoC system shown inFIG. 1, which provide the clock change flow, according to embodiments described herein. Diagram200describes an on-the-fly clock frequency change flow between the CPU110and the eAWG120.

At202, the SoC system (e.g., the integrated circuit device100inFIG. 1) is powered on and wakes up in a default clock setting, e.g., in operation according to a previously configured clock signal with a pre-configured frequency. At204, the CPU110of the SoC system100configures the eAWG120with a set of clock configuration parameters, which are to be written to a target clock circuit via an AXI write operation. The eAWG120then stores, at a buffer (e.g., see403as further described in relation toFIG. 4) located within the eAWG120, the set of clock configuration parameters as AXI transaction information. At206, the CPU110sends a start signal to the eAWG120to initiate the eAWG120. At208, the CPU110then enters a wait-for-event (WFE) state. For example, when the SoC system is in operation but the CPU110has not received any new task from within or outside the SoC system to process for more than a pre-defined time window, the CPU110automatically enters a temporary idling state pending further notice.

Upon being started by the CPU110at206, the eAWG120is configured to execute the AXI write operations to write clock configuration parameters to the target clock circuit, while the CPU110is idling. Specifically, at210, the eAWG120is configured to write, via an AXI bus connected to the target clock circuit, PLL parameters into one or more registers governing the operation of the PLLs (e.g., any of101a-n,102a-nor103a-n) in the target clock circuit. For example, at each clock domain, the clock signal is generated by a respective clock circuit that is configured to divide a signal generated by a voltage-controller or digital oscillator by a clock division factor, rendering a clock signal having a frequency equivalent to the oscillator frequency divided in the clock division factor. Example clock circuits can be similar to, but not limited to the clock circuits described in commonly-assigned U.S. Pat. Nos. 7,801,264 and 7,652,516, both of which are hereby expressly incorporated by reference herein in their entirety.

Different clock signals can be generated by the clock circuit with different configurations of the clock division factor. To change the frequency of the clock signal generated by the target clock circuit, the eAWG120is configured to configure a new clock division parameter for the target clock circuit, e.g., by sending, via the AXI bus connected to the target clock circuit, the corresponding clock division parameter to a register in the target clock circuit for frequency division. For example, the target clock circuit is then configured to obtain the newly obtained clock division parameter from the register and configure a programmable frequency divider in the PLL with the new clock division parameter. The PLL is then configured to divide the oscillator frequency by the new clock division parameter to obtain a new frequency. In this way, with the new clock configuration parameters, the target clock circuit is configured to generate an updated clock signal having a different frequency defined by the clock division parameter.

At212, after configuring the registers with new clock configuration parameters, the SoC system100is configured to stabilize with the new clock setting. For example, the eAWG120is configured to wait for a pre-defined period of time for the target clock circuit to generate an updated clock signal with the different frequency based on the configured clock parameters, and for the circuit components within the respective clock domain to receive the updated clock signal from the target clock circuit. For example, as further described in relation toFIG. 4, the eAWG120includes a counter that is triggered to start counting when a new clock parameter has been sent via the AXI bus to the target clock circuit. The eAWG120waits until the counter reaches a pre-defined value to wake up the CPU110, such that sufficient time has passed for the new clock signal having the new frequency is generated and sent to other components on the SoC while the counter is counting. At214, after the pre-defined period of time, the eAWG120is configured to write, via an AXI bus connected to the CPU110, a status value indicative of an active status to a status register associated with the CPU110to cause the CPU to exit the WFE state.

At216, the CPU110is “awake” upon the WFE state being ended, and is then configured to send a turn-off signal to the eAWG120to turn off the eAWG120. With the CPU110awake, the SoC system100can then resume operations with the updated clock signal of the different frequency. When a clock signal of a certain clock domain (e.g., any one of101,102,103shown inFIG. 1) is to be updated again, steps204-218can be repeated to dynamically configure the target clock circuit while the CPU is set to temporarily idle.

FIG. 3provides a data flow diagram illustrating the data flows between the programmable configuration block, the clock circuit and the CPU of the SoC system that correspond to the clock change flow shown inFIG. 2, according to embodiments described herein. Diagram300provides a detailed view of the data flows between the CPU110, eAWG120, and clock circuit (PLL305). Specifically, the dashed line331illustrates that in some implementations, the CPU110and the PLL305(on the left side of dashed line331), and the eAWG120and other logic units (on the right side of dashed line331), are connected via AXI buses in the SoC system. In some implementations, components located to the left of dashed line331and components located to the right of dashed line331are integrated onto a single chip. Alternatively, components located to the left of dashed line331and components located to the right of dashed line331are located on separate chip modules that are coupled together in a single package.

The CPU110is configured to write a set of clock configuration parameters to eAWG120(e.g.,204inFIG. 2) via data path301a-b. For example, the set of clock configuration parameters are issued by the CPU110from a slave register to be written to a slave interface element311in the clock domain via an AXI bus301aconnecting the CPU110and the clock domain. The clock configuration parameters are then written from the slave interface element311to a register disposed within the eAWG120via an Advanced Peripheral Bus (APB)301bconnecting the slave interface element311and the eAWG120.

When the CPU110is at a WFE state, the eAWG120is configured to configure clock configuration parameters to the clock circuit (e.g.,210inFIG. 2) via data path303a-d. For example, eAWG120is configured to write previously obtained clock configuration parameters to an eAWG interface element313via an AXI bus303a. The eAWG interface element313in turn writes the clock configuration parameters to the slave interface element311via AXI bus303b. The slave interface element311is then configured to write the clock configuration parameters to a design for manufacturing and test (DFX) server via AXI bus303c, which in turn forwards the clock configuration parameters to PLL305via AXI bus303d.

The eAWG120is configured to send a release command, via data path302a-c, to the CPU110to cause the CPU110to exit the WFE state (e.g.,214inFIG. 2). For example, eAWG120is configured to write a status value to the eAWG interface element313via AXI bus302a(which can be the same as303adescribed above). The eAWG interface element313is then configured to write the status value to a master interface element312via AXI bus302b. The master interface element312is then configured to write the status value to a corresponding master register at the CPU110via AXI bus302c, to change the status of the CPU from “WFE” to active.

FIG. 4provides a data flow diagram illustrating data flows inside the programmable configuration block shown inFIGS. 1-3, according to embodiments described herein. The eAWG120, which is configured as a programmable configuration block in one embodiment, includes a reconfigurable functional unit (RFU)401, a first-in-first-out (FIFO) buffer, a control unit402, a counter404and an AXI write generator405.

The RFU401is configured to interface components outside the eAWG120via an APB bus301b, and to synchronize received data parameters for a writing operation to be implemented by the eAWG120. For example, the RFU401receives clock configuration parameters defining a clock division factor to be used in a frequency divider in the PLL of the target clock circuit, via an APB bus301bfrom outside the eAWG120, e.g., from the CPU110as described inFIG. 3. The RFU401is configured to generate a start signal411to start the eAWG control unit402, and to push into the FIFO buffer403each data parameter413that defines a clock division factor and an address of the register in the target clock circuit to send the corresponding data parameter412. Upon receiving the start signal, the eAWG control unit402is configured to send a pop command414to the FIFO buffer403to pop from head of a FIFO queue of buffered data parameters413, and the corresponding addresses412, that is queued in buffer403. The eAWG control unit402is then configured to forward the start signal411, data parameters413and addresses412to the AWG405, which in turn writes the data parameters413via the AXI bus to an external component outside the eAWG120, as described inFIG. 3. When the AWG401completes the AXI write operation, the AWG405is configured to issue a complete signal418indicating that the AXI write operation of the data parameter413is completed, to the eAWG control unit402.

In some embodiments, the eAWG control unit402is configured to utilize the counter404to wait for a pre-defined period of time for clock configuration. During the pre-defined period of time, components of the clock domain, e.g., various electronic components that are operated according to a particular clock signal generated by the corresponding clock circuit in the respective clock domain, are received and stabilized with the updated clock signal generated using the newly configured clock configuration parameters. The eAWG control unit402is configured to send a trigger signal416to the counter404, which triggers the counter404to start counting, according to an existing clock signal that controls the counter404, until the counter404reaches a pre-defined counter value that is pre-programmed with the counter404. When the counter value has reached the pre-defined counter value, the eAWG control unit402obtains, from the counter404, a completion signal417, which triggers the eAWG120to release the CPU110from the WFE state (e.g., at214inFIG. 2).

Various embodiments discussed in conjunction withFIGS. 1-4are implemented by electronic components of one or more electronic circuits, such as but not limited to an integrated circuit, application-specific integrated circuit (ASIC), and/or the like. Various components discussed throughout this disclosure such as, but not limited to the CPU110, eAWG120, PLL305, and/or the like, are configured to include a set of electronic circuit components, and communicatively operate on one or more electronic circuits.

While various embodiments of the present disclosure have been shown and described herein, such embodiments are provided by way of example only. Numerous variations, changes, and substitutions relating to embodiments described herein are applicable without departing from the disclosure. It is noted that various alternatives to the embodiments of the disclosure described herein may be employed in practicing the disclosure. It is intended that the following claims define the scope of the disclosure and that methods and structures within the scope of these claims and their equivalents be covered thereby.

The subject matter of this specification has been described in terms of particular aspects, but other aspects can be implemented and are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous. Other variations are within the scope of the following claims.