Methods and systems for memory initialization of an integrated circuit

This disclosure relates generally to data processing, and more particularly, to methods and systems for memory initialization of an integrated circuit. In one embodiment, a method for memory initialization at a circuitry is provided. The method comprises: identifying a portion of the circuitry configured as a memory device; detecting a start of a power-off state for a power domain within the circuitry including the memory device; performing a write operation to write data of a pre-determined pattern to the memory device upon detecting the start of the power-off state; and providing the data stored at the memory device for a reading operation after the power-off state ends.

TECHNICAL FIELD

This disclosure relates generally to integrated circuit technologies, and more particularly, to methods and systems for memory initialization of an integrated circuit.

BACKGROUND

Nowadays, to achieve low power consumption, an integrated circuit (e.g., Application Specific Integrated Circuit (ASIC), a system-on-chip (SoC) that includes an ASIC, etc.) typically is designed such that portions of the circuit can be selectively powered off based on operational needs. To facilitate selective powering on and off, such an integrated circuit can comprise a plurality of power domains, where circuits associated with a certain power domain can be powered off independently from circuits associated with another power domain.

FIG. 1Aillustrates an example of an integrated circuit100with multiple power domains. As shown inFIG. 1A, integrated circuit100also includes memory block112and logic block114organized under a power domain116, memory122block and logic block124organized under a power domain126, and memory block132and logic block134organized under a power domain136. Memory blocks112,122, and132can include any kind of on-chip memory such as, for example, static random access memory (SRAM). Logic blocks114,124, and134can include any kind of circuitry such as, for example, Complementary metal oxide semiconductor (CMOS) circuits.

Integrated circuit100also includes a power management unit (PMU)102, which can also include CMOS circuits and can individually enable (or disable) each of power domains116,126, and136. A power domain enters a power-on state when enabled, and enters a power-off state when disabled. Each of power domains116,126, and136can be selectively coupled with a voltage rail150, which can be configured as a power supply. PMU102can selectively enable (or disable) the power supply to a particular power domain, by setting a power disable signal (not shown inFIG. 1A) to a certain voltage level. As an illustrative example, when a power disable signal reaches a voltage level that represents a logical “zero,” the power domain coupled with that power disable signal can be enabled.

When the power supply to a power domain is disabled under a power management scheme, the memory and logic blocks of that power domain can also exhibit certain behaviors. For example, the data written in the memory block just prior to the disabling of the power domain will become erased when the power domain is disabled. When the power supply to that power domain is enabled again, before any data is written in the memory block, the initial data in the memory block can be of certain patterns. For example, the initial data in the memory block, after the power domain is enabled, can be all logical “ones” or all “zeros.”

Moreover, the logic blocks can also be controlled to exhibit certain behaviors when the power supply to the associated power domain is disabled under the power management scheme. For example, as shown inFIG. 1A, each power domain can be coupled with a local reset signal and an isolation enable signal. The local reset signal can be configured to set a logic state of some types of logics (e.g., sequential logic, such as flip-flop and latch) to a certain pre-defined state, when the power domain is in the power-off state. The isolation enable signal can be configured to enable one or more isolation cells (“ISO cells”) associated with the power domain. The ISO cells can set a logic state of an input to at least some of the logics (which can include both sequential logic and combination logic) when the power supply to the power domain is disabled. With such an arrangement, the logic state of the logic blocks114,124, and134, when the power supply to the associated power domains are disabled, can become defined, which can minimize the likelihood of unexpected behavior of these logic blocks when their associated power domains transits from a power-off state to a power-on state.

Typically, as shown inFIG. 1B, the isolation enable operation and reset operation at a power domain occur during a power-off sequence, when the power supply to the power domain is still enabled (e.g., where the power disable signal has a low logic state), and the logic blocks of that power domain are still supplied with power. Once the power-off sequence completes, power disable signal can then transit to a high logic state to disable the power supply to the power domain.

Referring back toFIG. 1A, integrated circuit100can also receive a system reset signal152and a system clock154. System reset signal152can be a signal configured to set all the logics of integrated circuit100to one or more logic states. System reset signal152typically resets integrated circuit100when it is powered up, and is typically inactive when individual power domains enter a power-off state. System clock154can be a signal that toggles at a predetermined frequency (e.g., 10 MHz). System clock154can be configured to synchronize the operations of some of the logics (e.g., sequential logics) and the memory block among and within the power domains. System clock154can also be used by PMU102to synchronize the generation of the isolation enable signal, the local reset signal, and the power disable signal. Further, each of power domains116,126, and136can include a local clock that can be selectively coupled with the system clock154. PMU102can couple a local clock of a power domain to the system clock154, when the power domain is enabled, and can decouple the local clock from the system clock154when the power domain is disabled. When the local clock is decoupled from the system clock154, it can stop toggling, and power consumption due to switching power can be further reduced. In some cases, the coupling and decoupling of the local clock signal from the system clock154can be based on the power disable signal ofFIG. 1B.

Some of the behaviors of integrated circuit100can be emulated using a field programmable gate array (FPGA), for prototyping and/or validating an ASIC design. An FPGA typically includes an array of programmable logic blocks, which typically includes a set of look-up tables, flip flops, memory blocks, and routing matrices that can be configured, using a hardware description language (HDL) such as VHDL, Verilog, etc., to implement certain logic and memory functions. When using the FPGA to prototype an ASIC design, the HDL can be configured to describe the behaviors of certain logic blocks and memory blocks on the ASIC. A software compiler can compile a program file that includes HDL associated with the logic blocks and memory blocks, and generate a set of low level programming instructions. The low level programming instructions can then configure the set of look-up tables, flip flops, memory blocks, and routing matrices of a FPGA to implement the logic and memory functions of those logic and memory blocks. The configured FPGA can then be operated under a certain operation condition (e.g., being provided with a certain combination of input signals) to generate an output. The output of the FPGA can then be compared with the expected output of the ASIC design. The comparison result can then be used to validate an ASIC design, and to improve the likelihood that that when an ASIC is fabricated according to the design, the fabricated ASIC will generate the expected output under that operation condition.

The inventors here have recognized several technical problems with the conventional method of using FPGA to emulate the behavior of an integrated circuit. For example, under the current state of technologies, the programmable logic blocks in an FPGA cannot be individually, under user control, powered on or powered off (e.g., by selectively decoupling a logic block from a power supply), to emulate the behaviors of an integrated circuit when the power supply to some of the power domains of the integrated circuit are selectively enabled or disabled. For example, referring toFIG. 1B, when an actual ASIC receives a certain combination of logic values of isolation enable signal, reset, and power disable configured to disable the power supply to a certain power domain (e.g., when isolation enable signal and the power disable are logical “one” and the reset is a logical “zero”), the data previously stored in a memory block of that power domain will be erased (and replaced with a specific pattern, such as all “ones” or “zeros”) as a result of being decoupled from the power supply. However, in the case of a FPGA, the content of an emulated memory block will not be erased by selectively decoupling a power domain from the power supply, since FPGA does not enable such a decoupling. As a result, when emulating a scenario where an ASIC power domain transits from a power-off state to a power-on state, the initial data in an emulated memory block in an FPGA, at a time when the power domain is enabled, can be different from the initial data in an ASIC memory block under the same operation condition, which can lead to inaccurate validation and prototyping.

SUMMARY

Embodiments of the present disclosure present technological improvements as solutions to the above-mentioned technical problems, among others.

For example, in one embodiment, a method for memory initialization at a circuitry is provided. The method comprises: identifying a portion of the circuitry configured as a memory device; detecting a start of a power-off state for a power domain within the circuitry including the memory device; performing a write operation to write data of a pre-determined pattern to the memory device upon detecting the start of the power-off state; and providing the data stored at the memory device for a reading operation after the power-off state ends.

In another embodiment, a non-transitory computer-readable medium that stores a set of programming instructions is provided. The set of programming instructions configure an integrated circuit to perform a method for memory initialization at the integrated circuit, the method comprising: identifying a portion of the integrated circuit configured as a memory device; detecting a start of a power-off state for a power domain within the integrated circuit including the first memory device; performing a write operation to write data of a pre-determined pattern to the memory device upon detecting the start of the power-off state; and providing the data stored at the first memory device for a reading operation after the power-off state ends.

In yet another embodiment, an integrated circuit comprising a plurality of transistors is provided. The integrated circuit is configured to: identify a portion of the integrated circuit configured as a memory device; detect a start of a power-off state for a power domain within the integrated circuit including the memory device; perform a write operation to write data of a pre-determined pattern to the memory device upon detecting the start of the power-off state; and provide the data stored at the memory device for a reading operation after the power-off state ends.

DETAILED DESCRIPTION

Illustrative embodiments of the present disclosure are listed below. In one embodiment, a method for memory initialization at a circuitry is provided. The method comprises: identifying a portion of the first circuitry configured as a first memory device; detecting a start of a power-off state for a power domain within the first circuitry including the first memory device; performing a write operation to write data of a pre-determined pattern to the first memory device upon detecting the start of the power-off state; and providing the data stored at the first memory device for a reading operation after the power-off state ends.

With embodiments of the present disclosure, when emulating a power management operation, a predetermined pattern of data can be written into an emulated memory block of a power domain in an FPGA when the power domain in a power-off state. As a result, when emulating a scenario where an ASIC power domain transits from a power-off state to a power-on state, the initial data in an emulated memory block in an FPGA, at a time when the power domain is enabled, can be identical to the initial data in an ASIC memory block under the same operation condition, which can improve the accuracy of validation and prototyping. Although the specification describes the embodiments using power domain emulation on an FPGA as an example, it is appreciated that the disclosed embodiments are not limited to FPGA, or even to emulation, and can be implemented in any integrated circuit where memory content initialization is desirable.

FIG. 2illustrates an exemplary integrated circuit200for a memory initialization operation, according to some embodiments of the present disclosure. In some embodiments, integrated circuit200can be a FPGA configured to emulate at least some the behaviors of integrated circuit100ofFIG. 1, and the memory initialization operation can be performed by integrated circuit200when emulating the power management scheme of integrated circuit100. However, it is also appreciated that integrated circuit200can also be an ASIC, and the memory initialization operation can be performed for purposes other than emulation of a power management scheme.

As shown inFIG. 2, integrated circuit200includes a PMU202, and power domains216and226. Power domain216includes a memory block212, a memory initialization unit213, and a logic block214, while power domain226includes a memory block222, a memory initialization unit223, and a logic block224. Each power domain also includes one or more isolation cells (not shown inFIG. 2). Memory blocks212and222can include any kind of on-chip memory such as, for example, static random access memory (SRAM). Memory blocks212and222can include a dual-port memory, in which separate ports are provided for read and write operations, and/or a single-port memory, in which the same port is provided for read and write operations. PMU202, memory initialization units213and223, as well as logic blocks214and224, can include any kind of circuitry such as, for example, CMOS circuits. Each of the power domains216and226can be coupled with voltage rail150.

In some embodiments, integrated circuit200can be generated using hardware description language (HDL) such as VHDL, Verilog, etc. A software compiler can compile a program file that includes HDL associated with the PMU, the memory initialization units, the memory blocks, and the logic blocks, and generate a set of low level programming instructions. In some embodiments, the HDL language instructions associated with the memory initialization unit can be added to the program file by an Electronic Design Automation (EDA) tool. The low level programming instructions can be used to configure the look-up table, routing matrices, memory blocks, and flip-flops of a FPGA to implement the logic and memory functions of the PMU, the memory initialization units, the memory blocks, and the logic blocks. The low level programming instructions can also be used by synthesis tools to generate netlist information for ASIC fabrication.

In some embodiments, PMU202can generate an isolation enable signal, a local reset signal, and a power disable signal configured to cause a power domain to enter a power-off state. These signals can be generated based on system clock signal154. As to be discussed below, at least one of the isolation enable signal, the local reset signal, and the power disable signal can also cause the memory initialization units213and223to write a predetermined pattern of data into, respectively, memory blocks212and222, when the power domains216and226is in a power-off state but are still coupled with voltage rail150. This can happen when integrated circuit200is a FPGA configured to emulate the behavior of a power domain transitioning between a power-off state and a power-on state. Integrated circuit200can also receive system reset152which can reset integrated circuit200when it is powered up.

FIG. 3illustrates the block diagram of memory initiation unit223ofFIG. 2, according to embodiments of the present disclosure. As shown inFIG. 3, memory initiation unit223may include multiplexers223a-223f, an address counter223g, a write enable generator223h, and an enable generator223i.

In some embodiments, multiplexers223a-223fcan be configured to selectively couple or decouple memory block222from logic block224. Typically memory block222can receive a number of signals from logic block224to perform a write operation. For example, as shown inFIG. 3, memory block222can receive write data to be written into a certain location with the memory block, and an address which indicates the location within the memory block for writing the data. Memory block222can also receive a write enable signal that configures the memory block for a write operation, as well as a logic enable signal that enables the rest of the memory block circuitries. Memory block222can also receive a clock signal and a reset signal for the operation of some of the sequential logics circuitries in the memory block (e.g., sequential logics such as flip-flops and latches configured to store received signals, such as address, enable signals, etc.).

Multiplexers223a-223fcan be configured to forward the write data, address, write enable signal, logic enable, clock signal and reset signals received from logic block224to memory block222, or to forward the corresponding signals generated from a different source, thereby decoupling logic block224from memory block222. The configuration of multiplexers can be done via, for example, the power disable signal from PMU202, such that the multiplexers can couple logic block224with memory block222during a power-on state, and decouple logic block224from memory block222during a power-off state. For example, as shown inFIG. 3, during a power-on state, multiplexers223a-223dcan forward write data, address, write enable and logic enable signals supplied from logic block224to memory block222, enabling logic block224to write data into memory block222. On the other hand, during a power-off state, multiplexers223a-223dcan forward locally stored data of all logical zeros or ones as write data, an address generated by address counter223g, a write enable signal generated by write enable generator223h, and a logic signal generated by enable generator223ito memory block222. Since only memory initialization unit223is allowed to write data into memory block222during the power-off state, the data stored in the memory block during the transition between the power-off state to the power-on state can become more deterministic.

Further, multiplexer223ecan also be configured to forward a local clock from logic block224to memory block222during the power-on state, and to forward system clock154signal to memory block222during the power-off state. As discussed before, a local clock can be decoupled from system clock154, when the power supply to the associated power domain is disabled. Therefore, during a power-off state, the local clock from logic block224may stop toggling. By configuring multiplexer223eto supply the system clock154to memory block222, the sequential logics of memory block222that operates on the clock signal can remain operational during the power-off state, and may not be affected by the decoupling of local clock from system clock154. Also, as shown inFIG. 3, components of memory initiation unit223that operate on a clock signal, such as address counter223g, write enable generator223h, and enable generator223i, can also receive system clock154.

Furthermore, multiplexer223fcan also be configured to forward a local reset signal from logic block224to memory block222during the power-on state, and to forward system reset signal156to memory block222during the power-off state. As discussed before, the local reset signal resets the logic blocks within a power domain when the power domain enters the power-off state, while system reset signal156typically remains inactive during the power-off state. To prevent the local reset signal from resetting the memory block222circuitry and interfering with the write operation to memory block222during the power-off state, multiplexer223fcan be configured to forward the system reset signal156to memory block222during the power-off state. Also, as shown inFIG. 3, components of memory initiation unit223including address counter223g, write enable generator223h, and enable generator223i, can also receive system reset signal156, to prevent the logical reset signal from interfering with the operation of memory initiation unit223during the power-off state.

As discussed before, address counter223gare configured to generate an address configured to indicate a location within the memory block for writing the predefined data pattern (e.g., all logical zeros or all logical ones). Address counter223gcan receive information about a portion of the memory block to be written with the data pattern (e.g., in the form of an address range of the memory block), and then generate the addresses, sequentially, according to the information. The frequency of generating new addresses can be based on a number of clock cycles spanned by a write operation, while a value of the new address generated can be based on a number of memory locations covered by the write operation. For example, in a case where one write operation to memory block222lasts for one cycle of system clock154and that each write operation writes data to one memory location, address counter223gcan generate a new address by incrementing the current address by one for every cycle of system clock154. The write operations can then be performed sequentially with the generated addresses.

Write enable generator223hand enable generator223iare configured to generate, respectively, write enable signals and logic enable signals associated with a write operation. The generation of write enable and logic enable signals can be based on various signals such as, for example, power disable signal and the addresses generated by address counter223g. In some embodiments, both write enable generator223hand enable generator223ican be implemented as a finite-state machine with sequential logics elements (e.g., flip flops) configured to store a state, and the write enable and logic enable signals can be generated based on the state. For example, when the power disable signal indicates that the power domain enters the power-off state, both write enable generator223hand enable generator223ican enter an enable state to generate the write enable and logic enable signals at certain logic states to enable a write operation to memory block222. On the other hand, when the address generated by address counter223gis the last address within the address range for write operation, both write enable generator223hand enable generator223ican enter a disable state to generate the write enable and logic enable signals at another logic states to disable the write operation, after the write operation for the last address completes. The sequential logics of both write enable generator223hand enable generator223ican operate on system clock154, and can be reset by system reset signal156.

In some embodiments, a memory initialization unit can also interface with multiple memory blocks. In such a case, the memory initialization unit can identify which memory block to write, and then perform write operations to that memory block. The identification can be based on various information. For example, the memory initialization unit can receive an instruction from a logic block to perform a write operation to a specific memory block. The memory initialization unit can also identify all of the memory blocks that it interfaces with, and then perform write operation to each of the memory blocks sequentially.

FIG. 4illustrates an exemplary memory initialization method400, according to embodiments of the present disclosure. In some embodiments, method400can be performed by a memory initialization unit, such as memory initialization units213and223ofFIG. 3.

In step402, the memory initialization unit can identify a memory block to receive initialization data. The identification can be based on, for example, an instruction from a logic block to perform a write operation to a specific memory block. The memory initialization unit can also identify all of the memory blocks that it interfaces with for performing write operation to each of the memory blocks.

In step404, the memory initialization unit can detect a start of a power-off state for a power domain including the memory block. The detection can be performed based on at least one of: an isolation enable signal, a local reset signal, and a power disable signal provided to the power domain.

If the memory initialization unit detects a start of a power-off state, in step406, the memory initialization unit can proceed to step408to decouple the memory block from a logic block that can be selectively coupled with the memory block. The decoupling can include, for example, configuring one or more circuit components to forward write operation related signals (e.g., write data, address, write enable, and logic enable, etc.) that are generated by memory initialization unit instead of the corresponding write operation related signals generated by the logic block. The decoupling can also include configuring one or more circuit components to forward a system reset signal and a system clock, instead of local reset signal and a local gated clock, to the memory block. In some embodiments, the circuit components being configured can include one or more multiplexers included in the memory initialization unit. On the other hand, if the memory initialization unit does not detect a start of a power-off state, it proceeds back to step404.

After decoupling the memory block from the logic block in step408, the memory initialization unit can then proceed to step410to perform one or more write operations to write the initialization data to the memory block. The write operation can include, for example, generating write operation related signals such as write data, address, write enable, and logic enable, etc., and forwarding those signals via the aforementioned circuit components (e.g., multiplexers). In some embodiments, the addresses can be generated based on a pre-determined address range of memory block for receiving the initialization data. The write enable and logic enable signals can be generated based on signals that indicate start of power-off state (e.g., power disable), and change in the generated addresses. The initialization data can include a specific pattern, such as all logic ones or all logic zeros.

After the write operations are completed in step410, the memory initialization unit can detect an end of power-off state. The detection can also be based on at least one of: an isolation enable signal, a local reset signal, and a power disable signal provided to the power domain. After detecting the end of power-off state in step414, the memory initialization unit can then proceed to step416to couple the memory block with the logic block by configuring the aforementioned circuit components (e.g., multiplexers). On the other hand, if the memory initialization unit does not detect an end of the power-off state, it proceeds back to step414. After coupling the memory block with the logic block in step416, the memory initialization unit can proceed to step418to provide the initialization data written to the memory block for access by, for example, the logic block.

Computer System

FIG. 5is a block diagram of an exemplary computer system for implementing embodiments consistent with the present disclosure. Variations of computer system501may be used for implementing the devices and systems disclosed herein. Computer system501may comprise a central processing unit (“CPU” or “processor”)502. Processor502may comprise at least one data processor for executing program components for executing user- or system-generated requests. A user may include a person, a person using a device such as those included in this disclosure, or such a device itself. The processor may include specialized processing units such as integrated system (bus) controllers, memory management control units, floating point units, graphics processing units, digital signal processing units, etc. The processor may include a microprocessor, such as AMD Athlon, Duron or Opteron, ARM's application, embedded or secure processors, IBM PowerPC, Intel's Core, Itanium, Xeon, Celeron or other line of processors, etc. The processor502may be implemented using mainframe, distributed processor, multi-core, parallel, grid, or other architectures. Some embodiments may utilize embedded technologies like application-specific integrated circuits (ASICs), digital signal processors (DSPs), Field Programmable Gate Arrays (FPGAs), etc.

Using the I/O interface503, the computer system501may communicate with one or more I/O devices. For example, the input device504may be an antenna, keyboard, mouse, joystick, (infrared) remote control, camera, card reader, fax machine, dongle, biometric reader, microphone, touch screen, touchpad, trackball, sensor (e.g., accelerometer, light sensor, GPS, gyroscope, proximity sensor, or the like), stylus, scanner, storage device, transceiver, video device/source, visors, etc. Output device505may be a printer, fax machine, video display (e.g., cathode ray tube (CRT), liquid crystal display (LCD), light-emitting diode (LED), plasma, or the like), audio speaker, etc. In some embodiments, a transceiver506may be disposed in connection with the processor502. The transceiver may facilitate various types of wireless transmission or reception. For example, the transceiver may include an antenna operatively connected to a transceiver chip (e.g., Texas Instruments WiLink WL1283, Broadcom BCM4750IUB8, Infineon Technologies X-Gold 618-PMB9800, or the like), providing IEEE 802.11a/b/g/n, Bluetooth, FM, global positioning system (GPS), 2G/3G HSDPA/HSUPA communications, etc.

In some embodiments, the processor502may be disposed in communication with a communication network508via a network interface507. The network interface507may communicate with the communication network508. The network interface may employ connection protocols including, without limitation, direct connect, Ethernet (e.g., twisted pair 10/100/1000 Base T), transmission control protocol/internet protocol (TCP/IP), token ring, IEEE 802.11a/b/g/n/x, etc. The communication network508may include, without limitation, a direct interconnection, local area network (LAN), wide area network (WAN), wireless network (e.g., using Wireless Application Protocol), the Internet, etc. Using the network interface507and the communication network508, the computer system501may communicate with devices510,511, and512. These devices may include, without limitation, personal computer(s), server(s), fax machines, printers, scanners, various mobile devices such as cellular telephones, smartphones (e.g., Apple iPhone, Blackberry, Android-based phones, etc.), tablet computers, eBook readers (Amazon Kindle, Nook, etc.), laptop computers, notebooks, gaming consoles (Microsoft Xbox, Nintendo DS, Sony PlayStation, etc.), or the like. In some embodiments, the computer system501may itself embody one or more of these devices.

The memory devices may store a collection of program or database components, including, without limitation, an operating system516, user interface application517, web browser518, mail server519, mail client520, user/application data521(e.g., program files written based on HDL to describe behaviors of integrated circuit200ofFIG. 2, an application that translate the HDL into data for configuring a FPGA and/or ASIC fabrication, etc.), etc. The operating system516may facilitate resource management and operation of the computer system501. Examples of operating systems include, without limitation, Apple Macintosh OS X, Unix, Unix-like system distributions (e.g., Berkeley Software Distribution (BSD), FreeBSD, NetBSD, OpenBSD, etc.), Linux distributions (e.g., Red Hat, Ubuntu, Kubuntu, etc.), IBM OS/2, Microsoft Windows (XP, Vista/7/8, etc.), Apple iOS, Google Android, Blackberry OS, or the like. User interface517may facilitate display, execution, interaction, manipulation, or operation of program components through textual or graphical facilities. For example, user interfaces may provide computer interaction interface elements on a display system operatively connected to the computer system501, such as cursors, icons, check boxes, menus, scrollers, windows, widgets, etc. Graphical user interfaces (GUIs) may be employed, including, without limitation, Apple Macintosh operating systems' Aqua, IBM OS/2, Microsoft Windows (e.g., Aero, Metro, etc.), Unix X-Windows, web interface libraries (e.g., ActiveX, Java, Javascript, AJAX, HTML, Adobe Flash, etc.), or the like.