`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`FLEX LOGIX EXHIBIT 1043
`Flex Logix Technologies v. Venkat Konda
`IPR2020-00261
`
`Page 1 of 11
`
`
`
`
`US. Patent
`
`
`
`
`Dec. 8, 1998
`
`
`
`
`
`Sheet 1 0f5
`
`5,847,577
`
`
`
`
`
`° ' '
`
` ADDR
`
`|
`|
`I
`
`108
`
`| |
`
`|
`I
`
`o
`
`
`FIG. 1
`
`PRIOR ART
`
`
`
`
`
`
`
`
`
`DATA f 200
`
`
`o o o
`
`ADDR
`
`Page 2 ofll
`
`Page 2 of 11
`
`
`
`US. Patent
`
`Dec. 8, 1998
`
`Sheet 2 0f 5
`
`5,847,577
`
`
`Rm;onEEomn_§<Q
`
`com)95345%_mozmmZmo
`rHHHflHHLea;
`SmmmoZmDomm235
`m.UE MmQOUMQ
`$933$035
`
`
`<E<Q
`
`Illlllll.
`
`QZ<><mm<
`
`
`
`ommgzoammmnfizooma_rlnlllIII:
`
`IHHUHHHH
`
`com
`
`HHm
`
`MommmK.Smmom
`ZOHHUmMMOUDZ<mmHmHOmM
`
`ZOHHUmHmQ<H<Q
`
`
`
`Page 3 ofll
`
`Page 3 of 11
`
`
`
`
`
`
`US. Patent
`
`
`
`
`Dec. 8, 1998
`
`
`
`
`Sheet 3 015
`
`5,847,577
`
`
`
`11
`
`
`
`12
`
`
`
`408
`
`
`
`. -
`
`
`
`.
`
`414
`
`
`
`406
`
`
`
`OUT
`
`
`
`'
`
`
`
`415
`
`401
`
`
`
`
`FIG. 4
`
`400
`
`
`
`403
`
`
`
`404
`
`
`a
`
`
`405
`
`
`
`
`
`509
`
`
`
`
`FIG. 5
`
`Page 4 ofll
`
`Page 4 of 11
`
`
`
`
`US. Patent
`
`
`
`
`Dec. 8, 1998
`
`
`
`
`Sheet 4 0f5
`
`5,847,577
`
`
`
`
`TO MUX 520
`
`621
`
`
`
`FIG6b
`
`620
`
`
`
`><o
`
`8535;:
`
`
`
`
`
`FIG.6a 600
`
`
`Page 5 ofll
`
`Page 5 of 11
`
`
`
`
`US. Patent
`
`
`
`
`Dec. 8, 1998
`
`
`
`
`Sheet 5 0f5
`
`5,847,577
`
`
`
`72
`
`
`
`11
`
`
`
`I2
`
`
`
`
`
`40°C
`
`
`
`
`FIG. 7
`
`
`
`II
`
`12
`
`
`
`400B
`
`
`
`
`FIG. 8
`
`Page 6 ofll
`
`Page 6 of 11
`
`
`
`5,847,577
`
`
`1
`DRAM MEMORY CELL FOR
`
`
`
`
`PROGRAMMABLE LOGIC DEVICES
`
`
`RELATED PATENT APPLICATIONS
`
`
`
`
`
`
`
`The present patent application is a continuation-in-part of
`
`
`
`
`
`
`
`
`
`patent application Ser. No. 08/394,092 filed Feb. 24, 1995,
`now US. Pat. No. 5,581,198, entitled “Shadow DRAM for
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Programmable Logic Devices,” by Stephen Trimberger, and
`
`
`
`
`
`
`assigned to the assignee of the present invention.
`BACKGROUND OF THE INVENTION
`
`
`
`
`
`
`
`
`
`5
`
`10
`
`1. Technical Field
`
`
`
`
`
`
`
`
`
`
`The invention relates to a field programmable gate array,
`
`
`
`
`
`
`
`
`and more particularly, to a shadow memory circuit that is
`
`
`
`
`
`
`
`adapted to effect and maintain selected interconnection of
`
`
`
`
`
`
`
`various logic and other elements in a field programmable
`gate array.
`
`
`
`15
`
`
`
`20
`
`25
`
`30
`
`35
`
`45
`
`
`
`
`
`Description of the Related Art
`
`
`
`
`
`
`2. Afield programmable gate array (FPGA) is a program-
`
`
`
`
`
`
`
`
`mable integrated circuit logic device that consists of a matrix
`
`
`
`
`
`
`
`of configurable logic blocks (CLBs) embedded in a pro-
`
`
`
`
`
`
`grammable routing mesh. The combined programming of
`
`
`
`
`
`
`
`
`
`
`the CLBs and routing network define the function of the
`device. The device is referred to as an FPGA because the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`array of CLBs contained on the device can be configured and
`
`
`
`
`
`
`interconnected by the user in the user’s facility by means of
`
`
`
`
`special hardware and software.
`
`
`
`
`
`
`
`
`
`FPGAs are well known in the art. For example US. Pat.
`No. RE 34,363, reissued on 31 Aug. 1993, describes a
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`configurable logic array that includes a plurality of CLBs
`
`
`
`
`
`interconnected in response to control signals to perform a
`
`
`
`
`
`
`
`selected logic function, and in which a memory is used to
`
`
`
`
`
`
`
`
`
`store the particular data used to configure the CLBs. US.
`Pat. No. 4,642,487, issued on 10 Feb. 1987, teaches a special
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`interconnect circuit for interconnecting CLBs in an FPGA
`
`
`
`
`
`
`
`
`without using the general
`interconnect structure of the
`40
`FPGA. US. Pat. No. 4,706,216, issued on 10 Nov. 1987,
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`describes a configurable logic circuit that includes a config-
`
`
`
`
`
`
`urable combinational logic element, a configurable storage
`
`
`
`
`
`
`
`
`circuit, and a configurable output select logic circuit. US.
`Pat. No. 4,750,155, issued on 7 June 1988, describes a five
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`transistor memory cell for an FPGA that can be reliably read
`and written.
`
`
`Each CLB can provide one or more of the functions
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`provided by an AND gate, flip-flop, latch, inverter, NOR
`gate, exclusive OR gate, as well as combinations of these
`
`
`
`
`
`
`
`
`50
`
`
`
`
`
`
`
`functions to form more complex functions. The particular
`
`
`
`
`
`
`function performed by the CLB is determined by control
`
`
`
`
`
`
`
`
`
`signals that are applied to the CLB from a control logic
`
`
`
`
`
`
`
`
`circuit. The control logic circuit is formed integrally with,
`
`
`
`
`
`
`
`
`
`
`and as part of, the integrated circuit on which the CLB is
`formed. If desired, control information can be stored and/or
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`generated outside of this integrated circuit and transmitted to
`the CLB. The actual set of control bits provided to each CLB
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`on the integrated circuit depends upon the functions that the
`
`
`
`
`
`
`
`
`
`
`CLB and, more globally, the integrated circuit are to per-
`form.
`
`
`
`
`
`
`
`
`
`
`Each CLB typically has a plurality of input and output
`
`
`
`
`
`
`
`pins, and a set of programmable interconnect points (PIPs)
`
`
`
`
`
`
`
`
`
`for each input and output pin. The general interconnect
`structure of the FPGA includes a plurality of interconnect
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`segments and a plurality of PIPs, wherein each interconnect
`segment is connected to one or more other interconnect
`
`
`
`
`
`
`
`
`
`
`
`segments by programming an associated PIP. An FPGA also
`
`55
`
`60
`
`65
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Page 7 ofll
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`2
`includes an access PIP that either connects an interconnect
`
`
`
`
`
`
`
`
`
`
`
`
`
`segment to an input pin or an output pin of the CLB.
`
`
`
`
`
`
`
`Because the PIPs in the FPGA are programmable, any
`
`
`
`
`
`
`
`
`given output pin of a CLB is connectable to any given input
`
`
`
`
`
`
`
`
`
`pin of any other desired CLB. Thus, a specific FPGA
`
`
`
`
`
`
`
`configuration having a desired function is created by
`
`
`
`
`
`
`
`selected generation of control signals to configure the spe-
`
`
`
`
`
`
`
`
`
`cific function of each CLB in an FPGA,
`together with
`
`
`
`
`
`
`
`selected generation of control signals to configure the vari-
`ous PIPs that interconnect the CLBs within the FPGA.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Each PIP typically includes a single pass transistor (i.e.
`
`
`
`
`
`
`
`
`effectively a switch). The state of conduction, i.e. whether
`
`
`
`
`
`
`the switch is opened or closed, is controlled by application
`
`
`
`
`
`
`
`of the control signals discussed above to a transistor control
`
`
`
`
`
`
`
`
`
`terminal, e.g. a gate. The programmed state of each pass
`
`
`
`
`
`
`transistor is typically latched by a storage device, such as a
`
`
`
`
`
`
`
`
`static random access memory (SRAM) cell 100, illustrated
`
`
`
`
`
`
`
`
`in FIG. 1. As shown in FIG. 1, a high signal ADDR on
`
`
`
`
`
`
`
`address line 102 identifies the SRAM cell to be programmed
`
`
`
`
`
`
`
`
`by turning on an n-type pass transistor 104, thereby allowing
`
`
`
`
`
`
`
`
`the desired memory cell state DATA to be transferred from
`the data line 101 to a latch 106. The state of the control
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`signal stored in the latch 106 determines whether a pass
`
`
`
`
`
`
`
`transistor (PIP) 109 is turned on or off, thereby opening or
`
`
`
`
`
`closing a path in the FPGA interconnect.
`
`
`
`
`
`
`
`
`An SRAM cell
`is typically used as a storage device
`
`
`
`
`
`
`
`because the SRAM cell reliably maintains its value as long
`
`
`
`
`
`
`
`as power is supplied. However, as shown in FIG. 1, because
`SRAM cell 100 includes two inverters 107/108 and a pass
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`transistor 104, SRAM cell 100 requires significant area on
`
`
`
`
`
`
`
`
`
`an integrated circuit. Typically, the larger the area needed to
`
`
`
`
`
`
`
`
`implement a PIP, the fewer number of PIPs that can be fit
`
`
`
`onto an integrated circuit.
`In view of the continuing trend to increase the number of
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`complex functions implemented by an FPGA, a need arises
`for a method to reduce the size of the memory cells used to
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`hold the program for the FPGA interconnect, thereby reduc-
`
`
`
`
`
`
`
`
`
`
`ing the size of the FPGA and lowering its cost. Further,
`
`
`
`
`
`
`
`
`smaller memory cells would permit larger capacity FPGAs
`
`
`
`
`
`
`
`to be built than were previously possible.
`
`
`
`
`
`
`
`A dynamic random access memory (DRAM) cell, which
`is much smaller than an SRAM cell, has previously not been
`
`
`
`
`
`
`
`
`used in FPGAs for a number of reasons, including:
`
`
`
`
`
`
`
`
`
`
`
`1. A DRAM cell is volatile and subject to alpha particle
`
`
`
`
`
`
`
`
`
`upsets that can change the state stored in the cell;
`
`
`
`
`
`
`2. A DRAM must be periodically refreshed. Sensing the
`
`
`
`
`
`
`DRAM cell, for example to refresh the cell, destroys
`the current value in the cell; and
`
`
`
`
`
`
`
`
`
`
`
`
`
`3. Nearby signals, or signals running over a DRAM cell,
`can affect the contents of the cell.
`
`
`
`
`
`
`SUMMARY OF THE INVENTION
`
`
`
`
`
`
`
`
`
`
`
`In accordance with the present invention, a plurality of
`
`
`
`
`
`
`
`
`DRAM cells are used to store the state of the programmable
`
`
`
`
`
`
`
`points in a programmable logical device (e.g., a field pro-
`
`
`
`
`
`
`grammable gate array or FPGA). An individual DRAM cell
`
`
`
`
`
`
`
`is used in conjunction with each programmable interconnect
`
`
`
`
`
`
`
`
`
`point (PIP) within the FPGA to hold a logical state indicating
`
`
`
`
`
`
`
`
`
`
`the connectivity state of the PIP. In one embodiment, the
`
`
`
`
`
`
`
`
`information store is typically organized with the same num-
`ber of bits and words as there are FPGA DRAM cells within
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`the FPGA, e.g.
`there is a one-to-one correspondence
`between FPGA DRAM cells and the memory cells of the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`information store. During a refresh cycle, each DRAM
`
`
`
`
`
`
`
`
`memory cell is loaded with its current logical state in order
`
`Page 7 of 11
`
`
`
`
`3
`to maintain this state within the PIP. An information store
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`contains duplicate data for each DRAM cell and this dupli-
`
`
`
`
`
`
`
`
`
`cate data is supplied and read during the refresh cycle in
`
`
`
`
`
`
`
`
`order to provide each DRAM cell with its proper logical
`
`
`
`
`
`
`
`
`
`
`
`state. In this manner, the refresh cycle does not alter the logic
`
`
`
`
`
`
`
`
`configuration of its associated FPGA DRAM cell. The
`
`
`
`
`
`
`
`information store can be a plurality of DRAM cells or the
`
`
`
`
`
`
`
`
`information store can be of non-volatile memory,
`for
`
`
`
`
`
`
`
`instance, read only memory (ROM), programmable ROM
`10
`
`
`
`
`
`
`(PROM), erasable PROM (EPROM), electrically erasable
`
`
`
`
`
`PROM (EEPROM), or of non-volatile magnetic storage.
`
`
`
`
`
`
`
`
`The present invention significantly reduces area on the
`
`
`
`
`
`
`
`
`FPGA compared to the area required by prior art memory
`
`
`
`
`
`
`
`
`cells. Furthermore, the present invention also eliminates the
`
`
`
`
`
`
`
`
`
`
`need for separate power and ground lines that support prior
`
`
`
`
`
`
`
`
`art memory cells,
`thereby reducing the number of lines
`within the FPGA.
`
`
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`
`
`
`
`
`
`
`
`
`FIG. 1 is a schematic diagram of a prior art SRAM
`interconnect cell for an FPGA;
`
`
`
`
`
`
`
`
`FIG. 2 is a schematic diagram of a DRAM interconnect
`cell for an FPGA;
`
`
`
`
`
`
`
`
`FIG. 3 is a block schematic diagram of a DRAM inter-
`connect control and refresh circuit for an FPGA in accor-
`
`
`
`
`
`
`
`
`
`
`
`
`dance with the present invention;
`
`
`
`
`
`FIG. 4 is a schematic diagram of a prior art
`
`
`
`
`configuration circuit for an FPGA;
`
`
`
`
`FIG. 5 is a schematic diagram of a logic configuration
`
`
`
`
`
`
`
`circuit for an FPGA in accordance with the present inven-
`tion;
`
`
`
`
`
`
`
`
`FIGS. 6a and 6b are block schematic diagrams of alter-
`
`
`
`
`
`
`native embodiments of a portion of a storage element circuit
`in accordance with the present invention;
`
`
`
`
`
`
`
`
`
`
`
`
`FIG. 7 is a block schematic diagram of a logic configu-
`
`
`
`
`
`
`
`
`ration circuit for an FPGA having a DRAM configuration
`element in accordance with the present invention; and
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`FIG. 8 is a block schematic diagram of another logic
`
`
`
`
`
`
`
`configuration circuit for an FPGA having a DRAM configu-
`ration element in accordance with the present invention.
`
`
`
`
`
`
`
`DETAILED DESCRIPTION OF THE DRAWINGS
`
`
`
`
`FIG. 2 illustrates a DRAM cell 200 for an FPGA in
`
`
`
`
`
`
`
`accordance with the present invention. As with SRAM cell
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`100 (FIG. 1), a high signal ADDR on an address line 202
`
`
`
`
`
`
`
`
`turns on a first pass transistor 204,
`thereby allowing a
`
`
`
`
`
`
`
`
`DRAM cell 200 to be programmed. The state stored by
`
`
`
`
`
`
`
`
`DRAM cell 200 is set by a signal DATA supplied over a data
`
`
`
`
`
`
`
`line 201. Specifically, if both signals DATA and ADDR are
`
`
`
`
`
`
`
`
`high, then a capacitor 206 begins to charge. The charge
`stored in capacitor 206 sets the state of the control terminal
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`of the second pass transistor 209, thereby opening or closing
`
`
`
`
`
`
`
`
`
`a path in the FPGA interconnect. Note that capacitor 206 is
`
`
`
`
`
`
`implemented either as a separate circuit structure or as the
`
`
`
`
`
`gate of second pass transistor 209.
`
`
`
`
`
`
`
`The present invention significantly reduces area of the
`
`
`
`
`
`
`FPGA compared to the area required by SRAM cell 100
`because DRAM cell 200 stores state information in capaci-
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`tor 206 (one device), whereas SRAM cell 100 stores state
`
`
`
`
`
`
`
`information in latch 106 (four devices). DRAM cell 200 also
`
`
`
`
`
`
`
`
`eliminates the need for separate power and ground lines (not
`
`
`
`
`
`
`
`
`shown in FIG. 1) that support SRAM cell 100 in the prior art,
`
`
`
`
`
`
`
`
`thereby reducing the number of lines within the FPGA.
`
`
`
`
`
`
`
`
`In accordance with the present invention, a plurality of
`DRAM cells are used to control the FPGA interconnect
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`60
`
`65
`
`Page 8 ofll
`
`logic
`
`
`
`15
`
`20
`
`
`
`
`
`
`
`
`
`
`
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`5,847,577
`
`
`
`
`4
`
`
`
`
`
`
`
`circuitry. Another information store (shadow memory) per-
`
`
`
`
`
`
`
`
`forms a shadow memory function. The shadow memory can
`
`
`
`
`
`
`
`
`be composed of volatile memory cells (e.g., DRAM cells) or
`
`
`
`
`
`
`
`it can be composed of non-volatile memory cells. Example
`
`
`
`
`
`
`
`non-volatile memory constitution of the shadow memory
`
`
`
`
`
`
`
`includes read only memory (ROM), programmable ROM
`
`
`
`
`
`
`(PROM), erasable PROM (EPROM), electrically erasable
`
`
`
`
`
`PROM (EEPROM), or of non-volatile magnetic storage.
`
`
`
`
`
`
`
`
`In one embodiment using DRAM as the shadow memory,
`
`
`
`
`
`
`
`
`the shadow memory is typically organized with the same
`number of bits and words as there are DRAM interconnect
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`cells within the FPGA, i.e. there is a one-to-one correspon-
`dence between FPGA DRAM interconnect cells and shadow
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`DRAM memory cells.
`In this embodiment wherein the
`
`
`
`
`
`
`
`shadow memory is DRAM memory, the shadow memory
`
`
`
`
`
`
`
`
`
`cells are the same as DRAM cell 200 (FIG.2), with the
`
`
`
`
`
`
`
`
`
`exception that pass transistor 209 is not required because the
`
`
`
`
`
`shadow memory has no control function.
`As is well known to those in the art, while an SRAM cell
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`maintains the state of its contents as long as power is
`
`
`
`
`
`supplied, a DRAM cell needs periodic refreshing.
`FIG. 3 illustrates a DRAM interconnect control and
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`refresh circuit 300 for an FPGA according to the present
`invention. A refresh cycle on a data word of the FPGA
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`interconnect DRAM includes the following steps:
`
`
`
`
`
`
`
`1. Initially, a conventional address sequencer and decoder
`
`
`
`
`
`
`303 (hereinafter “sequencer”) address a particular por-
`
`
`
`
`
`
`
`
`tion of the shadow memory 301. In one embodiment
`
`
`
`
`
`
`where the shadow memory is DRAM, the sequencer
`
`
`
`
`
`
`
`
`
`and decoder 303 pulls one shadow memory address line
`
`
`
`
`
`
`
`
`302 high to select one word of a shadow memory array
`
`
`
`
`
`
`
`
`301. The contents of shadow memory array 301 for the
`current data word are sensed by a conventional sense
`
`
`
`
`
`
`circuit 308, and read into a data register 309.
`In
`
`
`
`
`
`
`
`
`
`embodiments of the present
`invention where the
`
`
`
`
`
`
`
`shadow memory 301 is non-volatile, the conventional
`
`
`
`
`
`
`sense amplifier 308 can be eliminated and data can be
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`written directly from memory 301 to the data register
`
`
`
`
`
`
`309. If shadow memory can be read non-destructively,
`
`
`
`
`
`
`
`
`the write back circuitry including buffer 306 can be
`eliminated.
`
`2. The contents of data register 309 are written back into
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`the shadow memory array 301 via tri-state buffer 306
`
`
`
`
`
`
`
`(after passing through error detection and correction
`
`
`
`
`
`
`
`
`
`
`circuit 307) and these contents are also written into the
`
`
`
`
`
`
`FPGA interconnect and logic DRAM (hereinafter
`
`
`
`
`
`
`
`FPGA DRAM) 310 via data line 311 to refresh FPGA
`
`
`
`
`
`
`
`DRAM 310. Shadow memory array 301 and FPGA
`
`
`
`
`
`
`DRAM 310 are written to simultaneously,
`
`
`
`
`
`
`independently, or at different intervals, as desired. A
`
`
`
`
`
`
`preferred embodiment of the present invention pro-
`vides a simultaneous shadow memory and interconnect
`
`
`
`
`
`
`DRAM refresh sequence.
`In that embodiment,
`
`
`
`
`
`
`
`
`
`
`
`
`
`sequencer 303 provides address information via lines
`
`
`
`
`
`
`
`
`
`302 to shadow memory array 301 and via lines 312 to
`FPGA DRAM 310.
`
`
`
`
`
`
`
`
`
`3. A low DATA VALID signal generated by a data valid
`
`
`
`
`
`
`
`circuit 305 (data valid generator circuit), is provided to
`
`
`
`
`
`
`
`
`
`
`AND gates 304 to force the signals on bus 312 low. The
`
`
`
`
`
`
`
`DATA VALID signal is generated to remain low until
`
`
`
`
`
`
`
`
`
`the data read out of shadow memory array 301 is
`
`
`
`
`
`
`
`
`latched into data register 309, provided to error detec-
`tion and correction circuit 307, and propagated to the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`memory cells in FPGA DRAM 310. A high DATA
`
`
`
`
`
`
`
`VALID signal, provided to tri-state buffer 306, allows
`the transfer of the data held in data register 309 back
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Page 8 of 11
`
`
`
`5,847,577
`
`
`
`
`
`5
`
`
`
`10
`
`5
`
`
`
`
`
`
`
`into shadow memory array 301. In one embodiment,
`
`
`
`
`the DATA VALID signal is asserted in a predetermined
`
`
`
`
`
`
`
`delay period after the current address is presented over
`
`
`
`
`
`
`
`
`bus 312 by the address sequencer and decoder 303.
`
`
`
`
`
`
`
`
`
`Thus, the generation of the DATA VALID signal takes
`
`
`
`
`
`
`
`
`into consideration all internal timing and propagation con-
`siderations of the FPGA before FPGA DRAM 310 is
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`refreshed, thereby ensuring that correct data is available to
`FPGA DRAM 310. The DATA VALID signal ensures that
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`valid data is present over bus 321a during the write cycle
`
`
`
`
`
`
`
`when the FPGA DRAM 310 is updated so that transient
`
`
`
`
`
`
`
`
`garbage or invalid data is not written into the FPGA DRAM
`310. In this manner, the contents of FPGA DRAM 310 are
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`not destroyed during the interval when the cell is written. A
`15
`
`
`
`
`
`
`
`
`high DATA VALID signal,
`indicating valid data, and a
`
`
`
`
`
`
`
`
`corresponding high signal on one of address lines 302 forces
`
`
`
`
`
`
`
`
`
`
`
`the output signal from AND gates 304 (i.e. on line 312) high,
`
`
`
`
`
`
`
`thereby triggering a refresh cycle and allowing data to be
`written into the cells of FPGA DRAM 310. Note that a high
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`DATA VALID signal, provided to tri-state buffer 306, per-
`
`
`
`
`
`
`
`
`
`mits transfer of the data held in data register 309 to shadow
`
`
`
`
`
`
`
`
`
`memory array 301. It is appreciated that data valid to 306
`and 304 need not be simultaneous.
`
`
`
`
`
`
`
`
`
`
`
`
`
`4. Sequencer 303 which controls the refresh sequence
`
`
`
`
`
`
`continuously cycles through all addresses to ensure that
`
`
`
`
`
`
`
`all DRAM interconnect cells are regularly refreshed.
`
`
`
`
`
`
`
`
`
`
`It is appreciated that the shadow memory array 301, the
`
`
`
`
`
`
`
`
`
`
`address sequencer 303, the data valid circuit 305 and gate
`
`
`
`
`
`
`
`304 can be located off-chip in a separate die or device from
`30
`
`
`
`
`
`
`
`
`
`the FPGA integrated circuit device that contains the FPGA
`
`
`
`
`
`
`
`
`
`
`DRAM 310. In this case,
`the shadow memory array is
`
`
`
`
`
`
`interfaced to communicate the duplicate data to a receiving
`
`
`
`
`
`
`
`
`circuit (e.g., 308) during a refresh cycle. A number of well
`
`
`
`
`
`
`
`known communication interface protocols and circuitry can
`be used for this alternative embodiment of the present
`
`
`
`
`
`
`
`
`invention. In this alternative embodiment,
`the data valid
`
`
`
`
`
`
`
`
`circuit 305 operates as discussed above and the address
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`sequencer and decoder 303 address the shared memory array
`301 as discussed above. Gate 304 presents the address to
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`receiving circuit 310 to refresh the FPGA DRAM 310 during
`
`
`
`
`
`
`a valid period of the refresh cycle.
`invention, DRAM
`In one embodiment of the present
`
`
`
`
`
`
`
`interconnect control and refresh circuit 300 includes an error
`
`
`
`
`
`
`
`
`detection and correction circuit 307 that minimizes data
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`integrity problems associated with alpha particle hits and
`
`
`
`
`
`
`
`
`other data disturbances of shadow memory array 301. Fur-
`ther description of the codes associated with this conven-
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`tional circuit is provided in “Digital Design Principles and
`
`
`
`
`
`
`
`
`Practices” by J.F. Wakerly, pages 34—44, 1990, which is
`
`
`
`
`
`
`herein incorporated by reference. Although shown in con-
`nection with the preferred embodiment of the invention,
`
`
`
`
`
`
`
`error detection and correction circuit 37 is considered
`
`
`
`
`
`
`
`
`optional.
`
`
`
`
`
`
`
`In contrast to FPGA DRAM 310 which provides a single
`
`
`
`
`
`
`
`
`storage cell at each PIP and therefore is distributed through-
`
`
`
`
`
`
`
`
`out the FPGA, shadow memory array 301 is preferably a
`standard DRAM array and can therefore be very dense.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Shadow memory array 301 is typically built far enough
`
`
`
`
`
`
`
`
`
`away from lines that carry currents sufficiently high to cause
`60
`
`
`
`
`
`
`
`DRAM storage problems. In this manner, the contents of
`
`
`
`
`
`
`
`
`
`shadow memory array 301 are not disturbed by any FPGA
`
`
`
`
`
`
`
`
`signal, thereby avoiding upset problems and other related
`
`
`
`
`
`
`
`
`
`interference that might affect the cells of shadow memory
`
`
`
`
`
`
`
`
`
`
`In this way, any errors introduced into the
`array 301.
`
`
`
`
`
`
`
`
`
`memory cells of FPGA DRAM 310, for example by the
`
`
`
`
`
`
`
`routing of various signals through the general interconnect
`
`
`
`
`
`
`
`of the FPGA, are readily corrected by shadow memory array
`
`20
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`65
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Page 9 ofll
`
`
`
`
`6
`
`
`
`
`
`
`
`
`301 during the next refresh cycle. In another embodiment,
`
`
`
`
`
`
`
`
`each cell of the shadow memory array is built at the same
`location as its associated FPGA DRAM interconnect cell.
`
`
`
`
`
`
`
`
`
`
`
`
`
`One embodiment of the shadow memory array includes
`
`
`
`
`
`
`
`DRAM cells because of the compact size of such arrays. In
`one embodiment of an FPGA in accordance with the
`
`
`
`
`
`
`
`
`
`
`
`
`
`invention, a shadow memory array having approximately
`100,000 cells is used. In other embodiments of the invention,
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`the shadow memory array uses other technologies. For
`
`
`
`
`
`
`
`
`example, the shadow memory array could be an SRAM,
`EPROM, EEPROM, flash EPROM, or ferroelectric array.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Although the shadow memory array is integrated onto the
`
`
`
`
`
`
`
`
`same die as the FPGA in typical embodiments of the
`
`
`
`
`
`
`
`invention, other shadow memory arrays are fabricated on a
`
`
`
`
`
`
`
`
`separate die. Finally,
`in yet another embodiment of the
`
`
`
`
`
`
`
`present invention, a shadow memory is provided for use
`with standard SRAM interconnect cells, such that these
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`interconnect cells are periodically refreshed to repair any
`
`
`
`
`
`
`
`
`errors that resulted from factors such as power surges.
`
`
`
`
`
`
`
`
`
`It is appreciated that more than one read and write cycle
`
`
`
`
`
`
`
`can be applied to shadow memory 301 to collect enough bits
`for one full FPGA DRAM address.
`In this alternative
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`embodiment, a second register 350 is used to store the full
`FPGA DRAM word.
`
`
`
`
`
`
`
`
`
`
`
`The present invention is also intended for other applica-
`
`
`
`
`
`tions in programmable or configurable devices in which a
`
`
`
`
`
`
`
`
`
`logic state is set and stored. For example, FIG. 4 illustrates
`
`
`
`
`
`
`
`
`
`a prior art logic configuration circuit that includes a plurality
`
`
`
`
`
`
`
`
`of storage elements 400 which store logic states A, B, C and
`
`
`
`
`
`
`
`
`
`D. These logic states, which determine the logic function
`
`
`
`
`
`
`performed by the circuit, are provided to a multiplexer 401
`
`
`
`
`
`
`
`
`
`
`via lines 402, 403, 404 and 405. Multiplexer 401 consists of
`a first set of transistors 410, 411, 412, 413 that are controlled
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`by signal 11 provided on a first input line 407, and a second
`set of transistors 414, 415 that are controlled by a signal I2
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`provided on a second input line 408. The signals on first
`
`
`
`
`
`
`
`
`
`
`
`
`input line 407 and second input line 408 select the logic state
`
`
`
`
`
`
`
`
`
`
`bit that is the function value on output line 406. For example,
`
`
`
`
`
`
`
`
`
`
`assume logic states B, C, and D are a logic “0” and logic
`
`
`
`
`
`
`
`
`state A is a logic “1”. Multiplexer 401 selects logic state A
`when both signals 11 and I2 are a logic “1”, the function of
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`the circuit is an AND gate because the function produces a
`
`
`
`
`
`
`
`
`
`
`
`logic “1” only when both inputs are a logic “1”, and the
`
`
`
`
`
`
`
`
`circuit produces a logic “0” if either of the signals provided
`on input lines 407, 408 is otherwise.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Prior art storage elements 400 are typically SRAM cells
`and, as such, are relatively stable. However, as discussed
`
`
`
`
`
`
`above, SRAM cells require considerable area on an inte-
`
`
`
`
`
`
`
`
`
`grated circuit.
`As is known in the art, a DRAM cell cannot source a
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`current for a logic operation because drawing current from
`
`
`
`
`
`
`
`
`
`
`the DRAM cell depletes the charge stored in the cell and thus
`
`
`
`
`
`
`
`
`
`
`may change the state of the cell. Thus,.a DRAM cell may
`only store a logic state. Therefore, if a DRAM cell is used
`
`
`
`
`
`
`
`for storage cell 400, the contents of the DRAM cell are lost
`
`
`
`
`
`
`
`
`
`
`when the cell is sensed. For example, a DRAM cell cannot
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`drive an input line of a steering logic multiplexer and still
`
`
`
`
`
`
`
`retain its contents. Accordingly, in one embodiment of the
`invention, a DRAM cell controls a first multiplexer which in
`
`
`
`
`
`
`
`
`
`
`
`
`
`turn provides an input signal to a logic configuration mul-
`
`tiplexer.
`
`
`
`
`
`
`FIG. 5 illustrates a plurality of DRAM storage elements
`
`
`
`
`
`
`
`500 and a logic configuration circuit 501.
`In this
`
`
`
`
`
`
`embodiment, DRAM storage elements 500 provide signals
`
`
`
`
`
`
`
`
`terminals of a first multiplexer stage 509.
`to the input
`
`
`
`
`
`
`Because storage elements 500 are DRAM cells, multiplexer
`
`
`
`
`
`
`
`
`stage 509 includes logic gates 510—515 rather than steering
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Page 9 of 11
`
`
`
`
`
`5,847,577
`
`10
`
`
`7
`
`
`
`
`
`
`
`
`logic. Specifically, DRAM storage elements 500 control the
`
`
`
`
`
`
`
`gates of the transistors in logic gates 510—513. Multiplexer
`
`
`
`
`
`
`
`stage 509 is controlled by an input signal 11 provided on line
`
`
`
`
`
`
`
`
`507 which in turn is also provided to logic gates 510—513.
`
`
`
`
`
`
`
`The output terminals of logic gates 510—513 are connected
`
`
`
`
`
`
`
`through OR gates 514, 515 to a second multiplexer stage 520
`that includes transistors 520, 521. Based on the value of
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`control signal 12, multiplexer 520 provides the selected
`
`
`
`
`signal on output line 506.
`
`
`
`
`
`
`FIGS. 6a and 6b show alternative embodiments of storage
`
`
`
`
`
`
`
`
`elements 400 (FIG. 4). In FIG. 6a, a DRAM storage element
`
`
`
`
`
`
`
`
`601 is shown having an output state 602 that is provided as
`
`
`
`
`
`
`
`
`
`
`a control signal to a multiplexer 603. Both input lines of
`
`
`
`
`
`
`
`
`
`multiplexer 603 are hardwired such that the state of DRAM
`15
`
`
`
`
`
`
`
`
`storage element 601 controls the output signal of multiplexer
`
`
`
`
`
`
`
`
`
`603, and therefore the output of storage circuit 600. FIG. 6b
`
`
`
`
`
`
`
`
`shows a DRAM storage element 621 having an output state
`
`
`
`
`
`
`
`622 that is provided as a control signal to a multiplexer 623.
`
`
`
`
`
`
`
`
`
`
`As in FIG. 6a, both input
`lines of multiplexer 623 are
`
`
`
`
`
`
`
`
`
`hardwired such that the state of DRAM storage element 621
`
`
`
`
`
`
`
`
`controls the output signal of multiplexer 623, and therefore
`
`
`
`
`
`
`the output signal of storage circuit 620.
`In accordance with the embodiments of the invention
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`shown in FIGS. 7 and 8, storage elements 400C and 400B
`
`
`
`
`
`
`include DRAM cells having an associated shadow memory
`
`
`
`
`
`
`
`
`
`cell (not shown), such as the shadow memory array 301
`discussed above in reference to FIG. 3.
`In these
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`embodiments, storage elements 400C and 400B are coupled
`
`
`
`
`
`
`to one of a plurality of address terminals on a programmable
`
`
`
`
`
`logic element, such as multiplexer 401.
`
`
`
`
`
`
`
`Storage element 400C includes a DRAM cell 70 and a
`
`
`
`
`
`
`
`
`multiplexer 72. As shown in FIG. 7, multiplexer 72 is
`
`
`
`
`
`
`
`multiplexer 623 implemented as CMOS transistors and
`simplified to an inverter circuit that consists of a P-channel
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`transi