The present disclosure relates to memory device command-address-control, and more specifically, to calibration of memory device command-address-control.
Engineers encounter memory test and simulation idiosyncrasies while designing, testing and validating the memory communication bus of memory devices because of variations in hardware that may cause testing models to inaccurately reflect the hardware. Memory controller bus timing values are commonly refined periodically for proper operation and margin across a large sample of hardware, which is both labor intensive and time consuming. Each time the memory controller bus timing values are refined or modified, or the hardware is modified, the validation process must be repeated and re-tested for the new settings and/or hardware.
More particularly, current memory calibration and validation systems may not dynamically calibrate the command-address-control nets at the device level relative to their reference voltage supplied by the controller. This may lead to memory performance for the devices being sub-optimal and not completely reliable. Moreover, current systems do not perform dynamic calibration of command-address-control nets at device initialization and do not provide the option of being periodically adjusted during device runtime. Accordingly, they do not allow the best possible values for each device on the command-address-control flyby to calibrate itself for the most optimal setup, hold, and reference voltage settings for optimal device operation. Calibration does not run automatically at power on and requires an initial passing setting. These development limitations may lead to overall signal-integrity problems for some memory designs
According to an embodiment of the present invention, a computer-implemented method for command-address-control calibration of a memory device is described. The method may include starting, via a processor, a controller clock for the memory device, releasing, via the processor, a reset on the memory device, running, via the processor, a calibration pattern for calibrating the memory device by placing the memory device in calibration mode, where the calibration pattern is initiated prior to an initialization of the memory device, calibrating, via the processor, the memory device with a calibration setting based on the calibration pattern, and initializing the memory device based on the calibration setting.
According to other embodiments, a system for command-address-control calibration of a memory device is described. The system may include a memory controller. The memory controller may include a processor operatively connected to the memory device, the memory controller configured to start a controller clock for the memory device, release a reset on the memory device, run a calibration pattern for calibrating the memory device by placing the memory device in calibration mode, where the calibration pattern is initiated prior to an initialization of the memory device, calibrate the memory device with a calibration setting based on the calibration pattern, and initialize the memory device based on the calibration setting.
The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The forgoing and other features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
In an exemplary embodiment, in terms of hardware architecture, as shown in
Processor 101 is a hardware device for executing hardware instructions or software, particularly that stored in a non-transitory computer-readable memory (e.g., memory 102). Processor 101 can be any custom made or commercially available processor, a central processing unit (CPU), a plurality of CPUs, for example, CPU 101a-101c, an auxiliary processor among several other processors associated with the computer 100, a semiconductor based microprocessor (in the form of a microchip or chip set), or generally any device for executing instructions. Processor 101 can include a memory cache 106, which may include, but is not limited to, an instruction cache to speed up executable instruction fetch, a data cache to speed up data fetch and store, and a translation lookaside buffer (TLB) used to speed up virtual-to-physical address translation for both executable instructions and data. Memory cache 106 may be organized as a hierarchy of more cache levels (L1, L2, etc.).
Memory 102 can include random access memory (RAM) 107 and read only memory (ROM) 108. RAM 107 can be any one or combination of volatile memory elements (e.g., DRAM, SRAM, SDRAM, etc.). ROM 108 can include any one or more nonvolatile memory elements (e.g., erasable programmable read only memory (EPROM), flash memory, electronically erasable programmable read only memory (EEPROM), programmable read only memory (PROM), tape, compact disc read only memory (CD-ROM), disk, cartridge, cassette or the like, etc.). Moreover, memory 102 may incorporate electronic, magnetic, optical, and/or other types of non-transitory computer-readable storage media. Note that the memory 102 can have a distributed architecture, where various components are situated remote from one another, but can be accessed by the processor 101.
The instructions in memory 102 may include one or more separate programs, each of which comprises an ordered listing of computer-executable instructions for implementing logical functions. In the example of
Input/output adaptor 103 can be, for example but not limited to, one or more buses or other wired or wireless connections, as is known in the art. Input/output adaptor 103 may have additional elements, which are omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communications. Further, the local interface may include address, control, and/or data connections to enable appropriate communications among the aforementioned components.
Interface adaptor 112 may be configured to operatively connect one or more input/output (I/O) devices to computer 100. For example, interface adaptor 112 may connect a keyboard 109 and mouse 110. Other output devices, e.g., speaker 113 may be operatively connected to interface adaptor 112. Other output devices may also be included, although not shown. For example, devices may include but are not limited to a printer, a scanner, microphone, and/or the like. Finally, the I/O devices connectable to interface adaptor 112 may further include devices that communicate both inputs and outputs, for instance but not limited to, a network interface card (NIC) or modulator/demodulator (for accessing other files, devices, systems, or a network), a radio frequency (RF) or other transceiver, a telephonic interface, a bridge, a router, and the like.
Computer 100 can further include display adaptor 116 coupled to one or more displays 117. In an exemplary embodiment, computer 100 can further include communications adaptor 104 for coupling to a network 115.
Network 115 can be an IP-based network for communication between computer 100 and any external device. Network 115 transmits and receives data between computer 100 and devices and/or systems external to computer 100. In an exemplary embodiment, network 115 can be a managed IP network administered by a service provider. Network 115 may be a network internal to an aircraft, such as, for example, an avionics network, etc. Network 115 may be implemented in a wireless fashion, e.g., using wireless protocols and technologies, such as WiFi, WiMax, etc. Network 115 may also be a wired network, e.g., an Ethernet network, an ARINC 429 network, a CAN, etc., having any wired connectivity including, e.g., an RS232 connection, R5422 connection, etc. Network 115 can also be a packet-switched network such as a local area network, wide area network, metropolitan area network, Internet network, or other similar type of network environment. The network 115 may be a fixed wireless network, a wireless local area network (LAN), a wireless wide area network (WAN) a personal area network (PAN), a virtual private network (VPN), intranet or other suitable network system.
If computer 100 is a PC, workstation, laptop, tablet computer and/or the like, the instructions in the memory 102 may further include a basic input output system (BIOS) (omitted for simplicity). The BIOS is a set of routines that initialize and test hardware at startup, start operating system 111, and support the transfer of data among the operatively connected hardware devices. The BIOS is stored in ROM 108 so that the BIOS can be executed when computer 100 is activated. When computer 100 is in operation, processor 101 may be configured to execute instructions stored within the memory 102, to communicate data to and from the memory 102, and to generally control operations of the computer 100 pursuant to the instructions.
Conventional memory calibration and validation systems may not dynamically calibrate the command-address-control nets at the device level relative to their reference voltage supplied by the controller. The command settings are generally determined by engineers during simulation and testing, where the most optimal voltage values and setup/hold settings are determined, then not adjusted thereafter. This may lead to memory performance for the devices being sub-optimal and not completely reliable. Moreover, current systems do not perform dynamic calibration of command-address-control nets prior to device initialization, and do not provide the option of being periodically adjusted during device runtime. Conventional memory calibration systems do not include an initial passing setting that takes into account the line variation in the board. In other aspects, in conventional testing systems, if engineers are running the calibration test at too fast of a speed, even if the calibration system can simulate it, the signal to noise ratio is likely going to be very low, and thus, an accurate simulation would be difficult. Variance in parts may be too great to simulate all of the different possible values. Command address must simulate every possible case (which may be time consuming and labor intensive). Every step must be repeated with each iterative hardware change.
It may be advantageous to determine, automatically using a processor-driven utility, the best possible values for each device on the command-address-control flyby such that the system may calibrate itself for an optimized setup/hold, and reference voltage settings. It may also be advantageous to create a system that runs automatically at power on, and dynamically calibrates the command-address-control nets at the device level relative to their reference voltage supplied by the controller. It may be advantageous to initially and periodically run, where the calibration does not require an initial passing setting prior to memory initialization.
Memory controller 202 can be a digital circuit that manages the flow of data going to and from the computer's main memory (e.g. RAM 107). Memory controller 202 can be a separate chip, or as depicted in
Memory controller 202 may read and write to memory device 208 by selecting the row and column data addresses of the DRAM as the inputs to a multiplexer circuit (not shown), where a demultiplexer (not shown) on memory device 208 uses the converted inputs to select the correct memory location and return the data, which is then passed back through the multiplexer to consolidate the data in order to reduce the operational bus width for system BUS 105.
Memory controller 202 may include one or more controller clocks 204. Controller clock 204 may make memory device 208 synchronous. Controller clock 204 may generate anywhere from one to four clock signals, and in some embodiments, more than four clock signals. Controller clock 204 can be responsible for generating all of the clocks for self-test of memory device 208. Controller clock 204 may also be configured to receive external clock signals and pass them directly to memory device 208, or generate its own clocks from an external oscillator (not shown).
Pattern generator 206 may be configured to enable memory controller 202 to alter the instruction memory to create new or modified test patterns, or to change the sequence or number of patterns applied at each manufacturing test gate of memory device 208. According to some embodiments, pattern generator 206 may be configured to provide a predefined pattern (e.g., 0101, holding low for two counts, high for two counts, etc.). A predefined pattern may also include holding memory device 208 in a tri-state for a predetermined amount of time (e.g., for five cycles, ten cycles, etc.). A tri-state, (or 3-state) logic may allow an output port to assume a high impedance state in addition to the 0 and 1 logic levels, effectively removing the output from the circuit. This could allow multiple circuits to share the same output line or lines (such as a bus which cannot listen to more than one device at a time).
Memory device 208 may be a DRAM memory module having a fly-by topology. A fly-by topology, in some aspects, may be a wiring interconnect structure in which the source (driver) connects to two or more devices that may be connected along the length of a wire (not shown) that is generally terminated at the far end, where the devices along the wire may receive the signal from the source at a time that is based on the flight time through the wire and the distance from the source. Memory device 208 may include two flip-flops 210 configured to determine clock to address/control relationships. The state of the flip-flops may determine clock to address/control relationships when memory controller 202 reaches a boundary for setup or hold. Boundaries are shown in greater detail with respect to
Memory device 208 may be configured to generate its own reference voltage and sweep the reference voltage until an optimal setup/hold setting is determined by memory controller 202. According to some embodiments, memory device 208 may be configured to composite address data via an “and” function, and thus, may provide an optimal composite solution. An optimal composite solution may be a solution having command-address-control nets supplied by memory controller 202 that have a valid low to high transition state, as shown in an eye diagram.
Referring now to
As shown in block 406, processor 101 may release reset on memory device 208.
Next, processor 101 may run a calibration pattern prior to memory initialization, as shown in block 408. Memory controller 202 may begin a pattern transfer after a predetermined period of time (e.g., 1000 clock cycles) after reset, but before the device is fully initialized. Memory controller 202 may start pattern transfers by looking for a valid low to high transition state, and noting the occurrence. Notably, conventional systems do not dynamically calibrate the command-address-control nets at the device level relative to their reference voltage supplied by the controller, initially and prior to memory device initialization. As shown in the present invention, processor 101 may dynamically calibrate and train an interface to provide the best margins possible, prior to initialization of memory device 208.
In some aspects, processor 101 may run the calibration pattern for calibrating memory device 208 by placing memory device 208 in calibration mode, where the calibration pattern is initiated prior to an initialization of memory device 208. Processor 101 may latch a command signal, an address signal, and control signal relative controller clock 204. Calibration may further include generating, via processor 101, a reference voltage supplied by memory controller 202, and sweeping the reference voltage by a predetermined increment up and down until a setup and hold setting is found by processor 101. Processor 101 can then latch command, address, and control signals relative to the fly-by clock (e.g., controller clock 204). Accordingly, memory controller 202 may be configured to drive a random pattern across the address to ensure an optimal run-time solution is achieved. According to some embodiments, system 200 will attempt to calibrate, then test the opposite state in the event of a failure. This process happens in all aspects prior to initialization of memory device 208.
In other aspects, processor 101 may calibrate memory device 208 with a calibration setting based on the calibration pattern by adjusting the setup and hold settings to meet a predetermined margin relative to controller clock 204. A predetermined margin could be exemplified as a boundary on an eye diagram (e.g., as shown in
The setup and hold setting found by processor 101 may, according to some embodiments, meet a predetermined margin relative to controller clock 204. For example, a predetermined margin may provide the widest possible delay at the highest voltage for run time. According to some embodiments, a predetermined margin may occur where processor 101 determines the largest setup and hold values (e.g., left and right of the clock (vertical line) in the eye shown in
Referring again to
As shown in block 412, processor 101 may recover memory controller 202 in the event of a pattern failure. Accordingly, processor 101 may maintain contain a register to read out the solution at the controller for setup/hold margin and voltage set point. In some aspects, processor 101 may de-configure that channel of memory, to retry the entire sequence (with all patterns). In other aspects, processor 101 may load in one or more predefined values as candidate values, to automatically determine an optimized configuration for a simulation.
If a pattern failure condition did not occur, as shown in decision block 414, processor 101 may determine whether the address command control calibration resulted in completion. For a pass, memory controller 202 may finish the remaining interface and then begin initialization. According to some embodiments, processor 101 may determine completion of the sequence with all the setup and hold measurements on all valid reference voltage settings (to the diagram are run by processor 101. In some aspects, processor 101 may take the setup and hold measurements at the horizontal dashed line (as shown in
As shown in block 416, after calibration, processor 101 may initialize memory device 208 based on the calibration setting.
Presently disclosed embodiments may dynamically calibrate the command-address-control nets at the device level relative to their reference voltage supplied by the controller for optimal performance and device reliability. Accordingly, dynamic calibration may be done at device initialization and may also have the option of being periodically done during runtime of memory device 208. Memory controller 202, and devices being controlled (e.g., memory device 208) may be configured to achieve the optimal solution for a layout presented for optimization.
According to other aspects, processor 101 may calibrate memory device 208 with a secondary calibration after the initialization of the memory device. The secondary calibration may be configured to run periodically, at a predefined period of time. For example, processor 101 may be configured to perform memory calibration every 100,000 clock cycles, etc.
In other aspects, the secondary calibration may be selectably performed by processor 101 according to a user input. For example, processor 101 may prompt for and receive a user input indicative of the predefined period of time.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems and methods according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed concurrently, conterminously, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
Number | Name | Date | Kind |
---|---|---|---|
6735709 | Lee | May 2004 | B1 |
7279955 | Jin | Oct 2007 | B2 |
7366931 | Vogt | Apr 2008 | B2 |
8407633 | Courchesne et al. | Mar 2013 | B2 |
8570816 | Mutnury et al. | Oct 2013 | B2 |
8582374 | Mozak | Nov 2013 | B2 |
8760945 | Jeon | Jun 2014 | B2 |
8850155 | Brandi et al. | Sep 2014 | B2 |
9432298 | Smith | Aug 2016 | B1 |
20030195714 | Jeddeloh | Oct 2003 | A1 |
20080219068 | Kim | Sep 2008 | A1 |
20110307717 | Fox | Dec 2011 | A1 |
20110320867 | Chaudhuri | Dec 2011 | A1 |
20120191964 | Lee | Jul 2012 | A1 |
20130038380 | Cordero | Feb 2013 | A1 |
20130067189 | Heinrich | Mar 2013 | A1 |
20130159687 | Cox, Jr. | Jun 2013 | A1 |
20130346721 | Giovannini | Dec 2013 | A1 |
20140032826 | Lee | Jan 2014 | A1 |
20140032890 | Lee | Jan 2014 | A1 |
20140153344 | Kim | Jun 2014 | A1 |
20140153680 | Garg | Jun 2014 | A1 |
20140189224 | Kostinsky | Jul 2014 | A1 |
20160172013 | Dearth | Jun 2016 | A1 |
20160291985 | Jenkins | Oct 2016 | A1 |
20160314822 | Yeung | Oct 2016 | A1 |
20170017252 | Wu | Jan 2017 | A1 |
20170110169 | Kim | Apr 2017 | A1 |
20170177019 | Wu | Jun 2017 | A1 |
20170337143 | Venkatesan | Nov 2017 | A1 |
20180011528 | Srivastava | Jan 2018 | A1 |
Number | Date | Country |
---|---|---|
2007299527 | Nov 2007 | JP |
Entry |
---|
Disclosed Anonymously, “Setting Memory Device VREF in a Memory Controller and Memory Device Interface in a Communication Bus” IBM TDB, IPCOM196496D., pp. 1-6. |
Number | Date | Country | |
---|---|---|---|
20170300338 A1 | Oct 2017 | US |