Abstract:
A data input latch and clocking method and apparatus for high performance SRAM in which an L1 data input latch is controlled by a logical combination of the normal local clock buffer clock signal and the local array clock buffer clock signal. This logical combination of clock signals minimizes the hold time of the L1 latch provides a fast cycle time in which the SRAM macro can process successive write instructions while avoiding early mode issues.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application contains subject matter that is related to the subject matter of the following co-pending applications, each of which is assigned to the same assignee as this application, International Business Machines Corporation of Armonk, N.Y. Each of the below listed applications is hereby incorporated herein by reference in its entirety: Low Power Programmable Clock Delay Generator with Integrated Decode Function, Ser. No. 12/109728 
     FIELD OF THE INVENTION 
     This invention relates to static random access memory (SRAM) arrays and more particularly to an improved method and logic for high-speed access to the array in writing data into the array. 
     BACKGROUND OF THE INVENTION 
     As will be appreciated by those skilled in the art, in reading and writing data from and into an SRAM array at high speed, the relative arrival and set up time of various signals that provide access to the array is can be limiting factor in the overall speed of operation of the array. At the state of the art speed of SRAM operation, there is an inherent range of arrival and set up times of the data and address signals for which allowance must be made. 
       FIG. 1  is a functional block diagram of a state of the art prior art SRAM macro. The Memory Array has boundary L 1 /L 2  latches at its address input (ADDR) and at its data output (Data Out_q). For application flexibility, the array also provides an unlatched output labeled Data Out. These inputs and output are fully static. The boundary latches are controlled by a normal Local Clock Buffer (nLCB) clock signal generated from the system clock nclk. The nLCB generates d 1 clk and lclk clocks to control respectively the L 1  and L 2  race-free boundary latches. An array Local Clock Buffer (array LCB) generates from the system clock nclk a local clock signal aclk for internal array circuit timing control. Both the nLCB and array LCB are programmable to provide timing adjustments on leading edge, trailing edge, and pulse width (PW) of the local clocks. This programmable control is provided by the GPTR (General Purpose Test Register) scannable latches. Each LCB has its own set of GPTR latches so that it could be programmed independently. As shown in  FIG. 1 , the address latches, data-in latches, and data_out latches all have their own nLCB. The array bit decode path, the word decode path (WD lsb, or least significant bit, and WD msb, or most significant bit), and the read/write decode path (RW Dec) each also has separated array LCB. This scheme of macro internal clocking topology provides maximum circuit timing control flexibility for performance optimization and hardware debug capability. The nominal timing sequence of the array inputs and the control clocks are illustrated in  FIG. 5 . 
     Referring to  FIGS. 1 and 5 , a brief description of the SRAM functional blocks and operational sequence are now given. The array macro inputs (address, data-in, read/write control) have boundary L 1 /L 2  latches. At the beginning of a cycle when nclk falls, d 1 clk from the nLCB is driven low to close (hold state) the boundary L 1  latches, and the lclk is driven high to open (flush state) the boundary L 2  latches. With d 1 clk falling and lclk rising, the inputs are captured and held in the L 1  and L 2  latches. Output from the L 1  or L 2  latches are then sent to subsequent array peripheral circuits for decoding and read/write control function. When nclk falls, aclk from the array LCB is driven high to activate the dynamic bit, word, and read/write decode circuits. Dynamic circuits are typically used in state of the art high performance SRAMs because of their faster switching time. Static signals from the L 1  latches shown in  FIG. 1  must arrive at these dynamic circuits before the aclk is activated. In the word selection path, two levels of word decode is illustrated in the  FIG. 1  SRAM functional block diagram. Level  1  consists of the lsb (least significant bits) and msb (most significant bits) Word Decoders (WD). Level  2  is performed by the WL Dec Drv (Word Line Decode and Drive) block. A selected wordline&#39;s (WL) leading edge (rising transition) is triggered by the leading edge of aclk, and its trailing edge (falling transition) is controlled by the aclk falling. The selected WL&#39;s active window is therefore determined by the aclk&#39;s active pulse width (PW). Similarly as shown in the timing diagram, the dynamic WE (Write Enable) signal also resembles that of the WL. The WE signal is driven off from the RW Dec/Drv (Read Write Decode/Drive) block and is used to generate dynamic true/complement write data (wt/wc) from the static data L 1 /L 2  latch to write the Memory Array. 
     For a read or write-through operation, after a wordline and a bit column is selected (a bit column is selected by the Bit Dec and Column decode/select blocks), read or write-through data from the Memory Array is then passed to the array output driver. 
     For an array write operation, data-in for writing is captured and sent off by the data-in L 1 /L 2  latches. The static data from the L 1 /L 2  latches (dt and dc signals as shown in  FIG. 5  timing diagram) must arrive at the Read/Write Control block before the dynamic WE or WL signals arrive to start the Memory Array&#39;s read/write operation. This data setup time requirement is denoted by the “ts” time in the timing diagram. The static data dt/dc must also be held stable for the full duration of the WL/WE active window in order to guarantee a successful write operation. This hold time requirement is denoted by the “ts” time in the timing diagram. 
       FIG. 2  is one prior art implementation of a data input latch used in the macro shown in  FIG. 1 . In this implementation, the data input to the L 1  stage is clocked into that stage in response to the leading edge of the d 1 clk signal generated by the local clock buffer nLCB in response to the system clock signal nclk. The output of the L 1  stage is latched into the L 2  stage in response to the lclk clock leading (rising) edge, which is also generated by the nLCB. One drawback is that the parameters that determine the timing of the launch of the data from the L 2  necessarily have a range of values. This can result in a late launch of the L 2  data so that the data at the input to the memory array does not have the set up time required by the memory array. This will cause a slower write performance, degrading the SRAM macro&#39;s overall cycle time capability. An additional drawback is the chip area and power required for both an L 1  and an L 2  latches. 
       FIG. 3  is a data input latch similar to  FIG. 2 , but using only an L 1  latch to latch and launch the input data. This allows a fast launch of the input data from the L 1  latch with a static input that supports fast cycle times. However, the early launch of the L 1  data in the middle of a high frequency memory cycle, gives rise to the possibility that the data will arrive before the current write operation time window expires; referred to in the art as an early mode issue. It will be appreciated that early mode problems arise also if the ackl clock signal is delayed with respect to its designed timing, or the pulse width PW of the aclk is wider than the design pulse width. The aclk delay or PW is programmable by the array LCB and will be altered as needed during hardware debug and characterization. It is essential to avoid this potential early mode problem cause by internal aclk timing adjustments. 
     SUMMARY OF THE INVENTION 
     An object of this invention is the provision of a data input latch and clocking method and apparatus for high performance SRAM that provides fast launching of data to the memory array, provides static data inputs to the array, and eliminates early mode issues at the data input to the array. 
     Another object of the invention is the provision of a data input latch and clocking method and apparatus for high performance SRAM that is economical in its use of silicon real estate and its consumption of power. 
     Briefly, this invention contemplates the provision of a data input latch and clocking method and apparatus for high performance SRAM in which an L 1  data input latch is controlled by a logical combination of the normal local clock buffer clock signal and the local array clock buffer clock signal. This logical combination of clock signals minimizes the hold time of the L 1  latch provides a fast cycle time in which the SRAM macro can process successive write instructions while avoiding early mode issues. 
     Programmable clock buffers, such as those described in the above referenced co-pending application, provide flexibility to meet application specific requirements. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The subject matter that is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which: 
         FIG. 1  is a functional block diagram of a prior art an SRAM macro. 
         FIG. 2  is a functional diagram of a prior art data input latch with L 1 /L 2  latch pair. 
         FIG. 3  is a functional block diagram similar to  FIG. 2  showing details of an L 1  data input latch. 
         FIG. 4  is a functional block diagram of one embodiment of an SRAM data latch and clocking scheme in accordance with the teachings of this invention. 
         FIG. 5  is a timing diagram showing the timing of various signals in  FIGS. 1 to 4 . 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Referring now to  FIGS. 4 and 5  of the drawings, the input data “data_in” to be written into the SRAM is coupled as an input to a clock controlled latch L 1 . The L 2  latch attached is only used for scan purpose and will not have an active function in normal mode operation of this invention. The output of the latch L 1  is a static output “dt/dc” (data-true/data-complement) is coupled as the input to the SRAM via the dynamic Read/Write Control circuit. The system clock “nclk” is coupled as an input to the local clock buffer nLCB whose output d 1 clk is coupled as one input to an AND gate. The system clock nclk is also coupled as an input to an SRAM array lock clock buffer “Array LCB” whose output alck is coupled via an inverter as the other input “aclk_b to the AND gate and also to the write enable WE via the Read Write Decode/Driver block “RW Dec Drv” and to the WordLine (WL) via the first level word decode (WD lsb/msb) and second level word decode/driver (WL Dec Drv). The inverted clock signal output “d 1 _aclk” of the AND gate serves as the clock input to the latch L 1 , in order to latch the data_in signal when the d 1 _aclk signal goes high. 
     Referring now to  FIG. 5  in addition to  FIG. 4 . In the illustrated embodiment, nclk is a negative active clock (a positive active clock will also function in a similar fashion). Absent the combinational logic of this invention, at the beginning of a cycle, nclk leading edge (falling transition) triggers the d 1 clk trailing edge (falling transition) to close the L 1  latch and put it in a “data-hold” state. At the middle of the cycle when nclk rises, d 1 clk is driven high to open up the L 1  latch to “flush” mode to accept input data again for the next cycle. When nclk falls at the beginning of a cycle, the array LCB triggers a leading edge (rising) of the aclk. The aclk serves as the principal array internal clocks for dynamic circuit timing control. Here, the logical “AND” of the d 1 clk from the nLCB and the aclk_b (aclk complement) from the array LCB generates a combined L 1  clock signal d 1 _aclk. The d 1 _aclk is driven low (hence putting the L 1  latch in “hold” state”) at the beginning of the cycle by either the falling of the d 1 clk or the rising of the aclk. Whichever one of these two clocks arrives first will trigger the combined d 1 _aclk to fall. At this time, the L 1  latch is closed, the input data can now change and be set up for the next new cycle. This clocking scheme enables the data input hold time to be kept as low as possible to support fast cycle time. Since the L 1  latch is closed when d 1 _aclk goes low, its output (dt/dc) remains stable throughout the duration of the active array window for a write operation. 
     At the beginning of a read/write operation, the array internal clock aclk rises. It triggers the WL and WE to go high to start an active read or write operation. The rising of WE signal also triggers the dynamic write data bus wt/wc (write true/write complement) to go active for a write operation. Since the array internal clock aclk controls the starting and ending of the WL/WE signals, the duration (length) of an active read/write window is therefore determined by the pulse width (PW) of the aclk. 
     At the end of an array read/write operation, the array internal clock aclk falls, this triggers the trailing edge of WL, WE, and wt/wc dynamic signals to fall to its standby state. At this state, the static data signal dt/dc can change again for the next cycle. When aclk falls, signifying the end of an active cycle, it also drives the combined d 1 _aclk to go high. This turns the data-in L 1  latch back on again, allowing the next cycle data dt/dc to come through. The falling of aclk, or the rising of the d 1 clk, which ever comes later, triggers the rising of the combined d 1 _aclk. This clocking scheme enables the write data to be held stable until the end of an active write window to avoid early mode problem as described earlier. Furthermore, at fast cycle time, aclk falling is typically later than the d 1 clk rising, the d 1 _aclk turning on is therefore mainly governed by the trailing edge of aclk. When the array LCB is programmed to have different delay or pulse width settings than the normal design default, the d 1 _aclk leading edge will track closely with these aclk trailing edge timing changes. The early mode exposure seen in prior art design as described in  FIG. 3  is totally eliminated. 
     The capabilities of the present invention can be implemented in software, firmware, hardware or some combination thereof. 
     As one example, one or more aspects of the present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention. The article of manufacture can be included as a part of a computer system or sold separately. 
     Additionally, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided. 
     The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention. 
     While the preferred embodiment to the invention has been described, it will be understood that those skilled in the art, both now and in the future, may make various improvements and enhancements which fall within the scope of the claims which follow. These claims should be construed to maintain the proper protection for the invention first described.